摘要:AspectJ是一種基于Java、面向方面的程序設(shè)計(jì)語言,它使用pointcuts,advice和aspects來抽象實(shí)現(xiàn)面向方面的主要功能。切入點(diǎn)(PoIntCut)是一種表示連接點(diǎn)集合的表達(dá)式,專門用來在方面執(zhí)行期間確定連接點(diǎn)集合的模型化結(jié)構(gòu)。開發(fā)者在確定切入點(diǎn)時(shí)經(jīng)常會(huì)寫出一些不正確的表達(dá)式而造成方面應(yīng)用錯(cuò)誤。故障模型詳細(xì)說明了使用AspectJ編寫程序時(shí)經(jīng)常會(huì)遇到的一些錯(cuò)誤。文章對(duì)切入點(diǎn)故障進(jìn)行了詳細(xì)分析和歸納,以便進(jìn)一步研究面向方面程序的測試。
關(guān)鍵詞:面向方面;AspectJ;故障模型;測試
0 引言
面向方面程序設(shè)計(jì)是最新流行的一種軟件開發(fā)技術(shù),在軟件組件開發(fā)中有重要作用。它提高了程序的可讀性,可維護(hù)性。使用方面程序設(shè)計(jì)技術(shù)可以在不修改基礎(chǔ)代碼的情況下對(duì)基礎(chǔ)代碼的行為進(jìn)行操作,如事務(wù),日志等。然而面向方面作為一種新的編程技術(shù)也為現(xiàn)代的軟件開發(fā)引入了一些新的不可預(yù)知的問題,有些傳統(tǒng)的面向?qū)ο蟮臏y試架構(gòu)和技術(shù)已經(jīng)不再適用于測試面向方面的內(nèi)容。因?yàn)榉矫娌皇仟?dú)立的測試單元,它會(huì)橫切其他的一些模塊,還會(huì)引入一些變量,給測試帶來很大的困難。為了對(duì)這種使用新方法編寫的程序進(jìn)行測試,必須先分析這種技術(shù)的精髓,找出面向方面編程容易發(fā)生的故障、故障容易出現(xiàn)的位置以及故障發(fā)生的原因,然后才能對(duì)其進(jìn)行有效測試。
Roger T Alexander等針對(duì)AspectJ的語法特點(diǎn)以及技術(shù)實(shí)現(xiàn)上容易出現(xiàn)的一些故障提出了9種故障模型,并對(duì)它們進(jìn)行了分析。本文主要是對(duì)第一種故障模型:切入點(diǎn)的強(qiáng)弱不正確,進(jìn)行了詳細(xì)的分析。
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文。