• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      靜態(tài)下Java程序函數(shù)調(diào)用關(guān)系圖的框架實踐

      2014-12-31 00:00:00朱云潔
      計算機光盤軟件與應(yīng)用 2014年10期

      摘 要:隨著計算機水平在不斷的提高,其應(yīng)用的領(lǐng)域也在逐漸的擴展,本文主要研究了JAVA程序,在函數(shù)之間的調(diào)用關(guān)系中,更好的研究程序理解,其中在函數(shù)之間中,它往往代表的是一種具體功能或者是問題求解的實現(xiàn),最終構(gòu)建了函數(shù)調(diào)解圖,來促進程序的理解。本文研究了集中函數(shù)調(diào)用圖,針對其優(yōu)缺點,最終提出了一種函數(shù)調(diào)用圖的構(gòu)建方法。

      關(guān)鍵詞:程序理解;函數(shù)調(diào)用圖;構(gòu)建

      中圖分類號:TP311.10

      在研究計算機程序中,基本上大型的程序都是通過對函數(shù)的組織和調(diào)用來實現(xiàn)整個程序的功能要求,這樣就需要函數(shù)之間的關(guān)系來分析,在采用函數(shù)調(diào)用圖中,它是一種靜態(tài)的對程序中的函數(shù)調(diào)用關(guān)系進行描述的方法,所以在函數(shù)調(diào)用關(guān)系圖中,函數(shù)用節(jié)點表示,函數(shù)之間的調(diào)用關(guān)系用邊表示,在研究調(diào)用圖中,能夠了解到程序之間的函數(shù)關(guān)系,來輔助理解程序的基本結(jié)構(gòu)以及功能的實現(xiàn)。

      1 JAVA語言程序

      程序語言設(shè)計中,受JAVA語言法則規(guī)定以及面向?qū)ο蟪绦蛟O(shè)計的多樣性,在編譯期間基本都不能確定出函數(shù)調(diào)用點中接受對象的類型,所以在該語言程序中函數(shù)調(diào)用圖中僅僅是通過大概的圖示來對運行的實際函數(shù)調(diào)用關(guān)系進行促進,以此對函數(shù)調(diào)用的效率進行提高,從而可以構(gòu)建出函數(shù)的調(diào)用圖,為實際的程序應(yīng)用提供了比較方便的調(diào)用關(guān)系,進一步提高了程序理解的應(yīng)用。

      2 JAVA程序函數(shù)調(diào)用圖典型的實現(xiàn)方法

      JAVA程序的函數(shù)調(diào)用圖的構(gòu)建中,其主要是運用三種典型的算法進行的,主要包括:類層次分析、快速類型分析以及獨立的方法和域可用類型集合分析。其中前兩種算法屬于流不敏感分析,這種分析的方法容易實現(xiàn),并且算法的具體流程比較簡單,在調(diào)用圖中最終提出了XTA,進一步加強了程序的精度。其中具體的算法表現(xiàn)在:

      2.1 類層次分析

      首先類層次分析是由美國教授J.Deam提出的,在具體的算法程序中,是通過類層次圖得到的,一般情況下,程序中的個各類使用類層次圖中的節(jié)點來表示的,各元素間繼承關(guān)系則由具體的邊來表示。根據(jù)得到的類層次圖,在函數(shù)調(diào)用中如果對象的聲明類型屬于父類,那么其運行中就可能包括函數(shù)的父類及子類,那么對于某一個特定的函數(shù)調(diào)用而言,其算法中也就包含了父類及子類針對所有函數(shù)類型,這樣就總結(jié)了類層次類函數(shù)調(diào)用。

      2.2 快速類型分析

      快速類型分析,其采用的是RTA分析法,該方法是在類層次分析方法的基礎(chǔ)上進行完善而來的,主要思想是按照程序中的信息對接受對象進行進一步約減構(gòu)成的可能性集合,從而提高函數(shù)的可調(diào)用圖的效率。

      2.3 XTA算法

      相應(yīng)的XTA算法是通過快速類型分析改進得到,其選擇增量式方法進行分析,程序運用過程中,針對每一個聲明變量,及函數(shù)給定的類型,構(gòu)成集合,那么在每一個可用類型的集合中,涵蓋了函數(shù)中的對象類型、可達函數(shù)中的可用類型等,最終將被調(diào)用函數(shù)的形式的聲明類型、可用類型集合以及子類型集合的交集在函數(shù)的最后一部分進行應(yīng)用。但是在XTA算法中,當(dāng)被調(diào)用的函數(shù)出現(xiàn)返回類型時,那么返回值主要是添加在調(diào)用函數(shù)的可用類型集合中,從而構(gòu)建出可調(diào)用函數(shù)的集合。

      3 一種XTA方法的改進算法

      函數(shù)算法的類型非常多樣,在多種類型中,類型傳播作為一種只對對象類型進行關(guān)注的簡單數(shù)據(jù)流分析方式,包含了過程內(nèi)及過程中的類型傳播。在過程內(nèi)類型傳播分析中,指的是類型的傳播依靠函數(shù)內(nèi)從類型事件與調(diào)用函數(shù)點間的數(shù)據(jù)流分析,從而對函數(shù)調(diào)用中,接受對象類型集合的方式進行了有效的改善。在研究XTA方法中,去傳播過程內(nèi)的類型主要是對算法的設(shè)計進行具體的研究,具體的算法設(shè)計:

      在對算法進行設(shè)計的過程中,可達函數(shù)集合用R表示,變量e的聲明類型采用的是StatemenType(e)表示,類t中所有子類集合采用sonTypes(t)表示,用StatiLookup(c,m)來表示類C中靜態(tài)查找是否聲明為m的函數(shù),那么程序中函數(shù)M給定的集合用SM來表示,用SX表示對每一個域中X給定的一個特殊集合,這樣,M)表示的是返回類型,其參數(shù)的聲明類型是一個集合,但是對于可達函數(shù)M中的每一個實例化類型C給定的是一個特殊集合,最終得到了變量的集合。其主要的:

      步驟1:從函數(shù)mainO開始,mainR.

      步驟2:對于每一個函數(shù)M以及M中的每一個函數(shù)調(diào)用點e.mO,當(dāng)M中存在一系列賦值語句,這樣在類C的實例化語句中存在于M當(dāng)中,并且能夠通過程內(nèi)的類型傳播,其類C的實例化信息最終達到了e,并且屬于Rc。

      步驟3:對于函數(shù)中M,其主要包括newC(這樣的實例化信息,將初始化SM為在可達函數(shù)M中實例化的對象類型分析。

      步驟4:對于每一個函數(shù)M,在可用類型集合中,如果存在類CSonTypes,當(dāng)可用類型集合中包含目標函數(shù)的類,這樣對于該函數(shù)調(diào)用點中的接受對象來說。它主要是通過過程內(nèi)的類型傳播,最終將實例化的信息可達化,這樣就符合了目標函數(shù)的條件,直接的將其加入到可達函數(shù)的集合R中,這樣就能夠通過參數(shù)傳遞將調(diào)用函數(shù)的可用類型集合被可調(diào)用函數(shù)的形參聲明類型以及去子類型集合的交集最終傳遞給被調(diào)用函數(shù),這樣將其作為子函數(shù)的子集。但是對于在調(diào)用函數(shù)中的實例化對象類型,它能夠同時的滿足被調(diào)用函數(shù)的可用類型集合。

      步驟5:在函數(shù)M中,如果存在對域X的讀取,這樣就能夠表示X可能指向的對象類型集合是該可達函數(shù)類型集合的子集。

      步驟6:函數(shù)M中,若存在對域X的寫入,則可達函數(shù)中寫入X,最終指向的對象類型集合包含X的聲明類型以及子類型集合,最終將該可達函數(shù)的可用類型集合的交集完全的表現(xiàn)出來。

      算法的改進應(yīng)用中,首先是用類層次分析法,從main函數(shù)開始,根據(jù)類層次圖,最終得到可調(diào)用函數(shù)圖,在快速類型法的原理中,將其約減。另外在采用XTA分析法中,在main實例化中將其初始可用類型進行集合,這樣對于函數(shù)可調(diào)用點來說,在不受到可用類型集合構(gòu)成的影響下,將實例化函數(shù)有效的構(gòu)建,最后,在改進XTA方法中,由于需要將接受對象e的類型可達性,這就促使在XTA方法中,取得更好的效果。

      4 結(jié)束語

      通過研究類層分析、快速類型分析以及XTA改進分析法中,最終構(gòu)建了函數(shù)可調(diào)用圖的算法,這樣在類層次分析中將其作為基礎(chǔ),最終通過分析對比,了解到:XTA方法是對快速類型分析法的有效改進,這樣在函數(shù)的算法要求中,能夠滿足實用性和程序擴展性的要求,并且加強了算法的精度。在靜態(tài)算法下采用JAVA程序函數(shù)可調(diào)用關(guān)系進一步提高了繪制函數(shù)調(diào)用圖的效率,構(gòu)建了有效的函數(shù)調(diào)用關(guān)系。

      參考文獻:

      [1]趙云山,吉小麗,周麗.JAVA程序優(yōu)化與數(shù)據(jù)競爭檢測的研究[J].計算機工程與設(shè)計,2012(35).

      [2]李榮榮,劉震,楊克了.JAVA語言程序理解中算法可視化表示和實現(xiàn)的研究[J].計算機工程與設(shè)計應(yīng)用,2013(22).

      [3]王亞綱,辛巳遠,方海軍.多語言源程序函數(shù)可調(diào)用關(guān)系圖中的生成方法[J].國防電子科技研究工程,2011(20).

      [4]李永祥,王亞文,李光旭.一種對象粒度和上下文敏感的JAVA程序并發(fā)錯誤檢測框架[J].小型微型計算機系統(tǒng),2013(34).

      [5]宋東海,陳勇,劉紅丹.一種基于調(diào)用鏈的JAVA程序數(shù)據(jù)競爭靜態(tài)檢測算法[J].艦船電子工程,2012(11).

      作者單位:陜西省電子工業(yè)學(xué)校,陜西寶雞 721001

      金坛市| 保康县| 贺兰县| 本溪市| 杨浦区| 阜阳市| 龙川县| 炉霍县| 淮阳县| 象州县| 崇信县| 通州区| 竹北市| 利辛县| 余姚市| 孙吴县| 习水县| 高台县| 平邑县| 天长市| 岢岚县| 苏尼特左旗| 响水县| 玛沁县| 永州市| 乌拉特后旗| 巴东县| 监利县| 东海县| 疏附县| 治多县| 子洲县| 潜山县| 邯郸县| 什邡市| 临猗县| 中江县| 弥渡县| 乌审旗| 郯城县| 颍上县|