基于面向?qū)ο蟪绦蚯衅能浖攘?/h1>
1 引言
程序切片是軟件工程領(lǐng)域的一項(xiàng)程序分析技術(shù),在軟件測(cè)試、度量、程序調(diào)試、維護(hù)以及逆向工程等方面有著廣泛應(yīng)用。通過(guò)切片技術(shù),人們?cè)诔绦蚍治鲞^(guò)程中可以重點(diǎn)關(guān)注那些感興趣的代碼或者變量。
本文引用地址:http://www.ex-cimer.com/article/201809/388955.htm2 程序切片技術(shù)
這里利用面向對(duì)象程序切片技術(shù)進(jìn)行軟件度量。程序切片主要包括:
(1)語(yǔ)句切片該傳統(tǒng)的程序切片技術(shù)是一種條件切片,根據(jù)程序的順序、循環(huán)和選擇結(jié)構(gòu)進(jìn)行程序切片。
(2)無(wú)定型程序切片 其不僅在保存一個(gè)程序語(yǔ)義投影的同時(shí)簡(jiǎn)化了程序,還可以使用任何簡(jiǎn)化的轉(zhuǎn)換。而這些轉(zhuǎn)換保留了該語(yǔ)義映射。
(3)面向對(duì)象切片 把切片技術(shù)應(yīng)用于面向對(duì)象的系統(tǒng)相關(guān)圖和過(guò)程相關(guān)圖中,使對(duì)面向?qū)ο蟪绦虻拇a理解、測(cè)試、調(diào)試、逆向工程和度量分析變得相對(duì)容易嘲。
3 面向?qū)ο蟪绦蚯衅夹g(shù)
程序切片技術(shù)分面向過(guò)程和面向?qū)ο蟪绦蚯衅?。目前程序切片大都以系統(tǒng)依賴圖為基礎(chǔ),利用圖的可達(dá)性算法獲得。
3.1 SDG和OOSDG
系統(tǒng)依賴圖SDG(System Dependence Graph)用一組邊和頂點(diǎn)的集合表示一個(gè)程序。頂點(diǎn)表示程序的語(yǔ)句和控制謂詞,邊則表示語(yǔ)句之間的依賴關(guān)系。在SDG中有兩類邊:控制依賴邊和數(shù)據(jù)依賴邊。SDG是在控制流圖、數(shù)據(jù)流圖、控制依賴子圖、數(shù)據(jù)依賴子圖、過(guò)程依賴子圖和程序依賴圖的基礎(chǔ)上建立的一種語(yǔ)法分析樹,如圖1所示。
面向?qū)ο笠蕾噲DOOSDG(Obiect-Orientecl System Depen-dence Graph)是過(guò)程依賴子圖、類依賴子圖、類層次子圖、控制依賴子圖、數(shù)據(jù)依賴子圖和虛函數(shù)調(diào)用子圖幾種表示方法的并集.如圖2所示。
1 引言
程序切片是軟件工程領(lǐng)域的一項(xiàng)程序分析技術(shù),在軟件測(cè)試、度量、程序調(diào)試、維護(hù)以及逆向工程等方面有著廣泛應(yīng)用。通過(guò)切片技術(shù),人們?cè)诔绦蚍治鲞^(guò)程中可以重點(diǎn)關(guān)注那些感興趣的代碼或者變量。
2 程序切片技術(shù)
這里利用面向對(duì)象程序切片技術(shù)進(jìn)行軟件度量。程序切片主要包括:
(1)語(yǔ)句切片該傳統(tǒng)的程序切片技術(shù)是一種條件切片,根據(jù)程序的順序、循環(huán)和選擇結(jié)構(gòu)進(jìn)行程序切片。
(2)無(wú)定型程序切片 其不僅在保存一個(gè)程序語(yǔ)義投影的同時(shí)簡(jiǎn)化了程序,還可以使用任何簡(jiǎn)化的轉(zhuǎn)換。而這些轉(zhuǎn)換保留了該語(yǔ)義映射。
(3)面向對(duì)象切片 把切片技術(shù)應(yīng)用于面向對(duì)象的系統(tǒng)相關(guān)圖和過(guò)程相關(guān)圖中,使對(duì)面向?qū)ο蟪绦虻拇a理解、測(cè)試、調(diào)試、逆向工程和度量分析變得相對(duì)容易嘲。
3 面向?qū)ο蟪绦蚯衅夹g(shù)
程序切片技術(shù)分面向過(guò)程和面向?qū)ο蟪绦蚯衅?。目前程序切片大都以系統(tǒng)依賴圖為基礎(chǔ),利用圖的可達(dá)性算法獲得。
3.1 SDG和OOSDG
系統(tǒng)依賴圖SDG(System Dependence Graph)用一組邊和頂點(diǎn)的集合表示一個(gè)程序。頂點(diǎn)表示程序的語(yǔ)句和控制謂詞,邊則表示語(yǔ)句之間的依賴關(guān)系。在SDG中有兩類邊:控制依賴邊和數(shù)據(jù)依賴邊。SDG是在控制流圖、數(shù)據(jù)流圖、控制依賴子圖、數(shù)據(jù)依賴子圖、過(guò)程依賴子圖和程序依賴圖的基礎(chǔ)上建立的一種語(yǔ)法分析樹,如圖1所示。
面向?qū)ο笠蕾噲DOOSDG(Obiect-Orientecl System Depen-dence Graph)是過(guò)程依賴子圖、類依賴子圖、類層次子圖、控制依賴子圖、數(shù)據(jù)依賴子圖和虛函數(shù)調(diào)用子圖幾種表示方法的并集.如圖2所示。
評(píng)論