資源描述:
《《論文_軟件分析技術(shù)進(jìn)展(定稿)》》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、軟件分析技術(shù)進(jìn)展*梅宏「王千岸張即王酣1?北京大學(xué)信息科學(xué)技術(shù)學(xué)院,高可信軟件教冇部重點實驗室,北京1008712.國防科技人學(xué)計算機(jī)學(xué)院,并行與分布處理國防科技重點實驗室,長沙410073摘要軟件分析技術(shù)的研究已有較長歷史,相關(guān)成果也在軟件生命周期的不同階段中得到了廣泛應(yīng)用。軟件生命周期中不同活動所需耍的軟件分析技術(shù)既不完全相同,乂有許多交疊,且不同的分析技術(shù)之間互相影響。文章在討論了軟件分析的基本概念Z后,主要從靜態(tài)分析與動態(tài)分析兩個方面介紹了一些主要的軟件分析技術(shù),以及部分相關(guān)分析工具。結(jié)合軟件的質(zhì)量問題,文章還探討了一些分析技術(shù)與軟件質(zhì)量屈性的和
2、關(guān)性,以便于人們在分析特定的軟件質(zhì)量屬性時,選取合適的技術(shù)與工具。垠后,文章展望了軟件分析技術(shù)的發(fā)展趨勢。關(guān)鍵詞軟件分析,靜態(tài)分析,動態(tài)分析,軟件質(zhì)量中圖法分類號TP3011.引言軟件是一種十分特殊的人工制品:它是人類“智力活動”的產(chǎn)物,是對客觀事物的虛擬反映,是知識的固化與凝練。盡管軟件迄今己有50多年的發(fā)展歷史,但目前人們對于軟件的許多認(rèn)識還十分有限。例如:對于任何一個給定的軟件,我們能否完全了解它的特性?軟件分析就是一個以軟件特性為關(guān)注點的研究領(lǐng)域?!胺治觥?,通俗來說,是以某種方式將復(fù)雜對彖分解為更小的部分,以更好地理解該對彖的過程。分析技術(shù)很早就
3、被應(yīng)用于數(shù)學(xué)、邏輯等方面的研究,近代以來逐步被更多的學(xué)科(例如:化學(xué)、物理等)所大量釆用。軟件作為一個新發(fā)展起來的學(xué)科,在研究過程中引入分析技術(shù)是十分自然的。目前軟件生命周期中的許多活動(分析、設(shè)計、實現(xiàn)、測試、部署、維護(hù)等)都離不開分析技術(shù)。然而,軟件分析的能力是有限的:對于任何一個有一定規(guī)模的軟件,希望獲得關(guān)于它的完備描述通常是不現(xiàn)實的[18
4、。特別是,對于口動分析而言,許多問題是不可判定的。其中最典型的例了是停機(jī)不可判定問題:不存在一個這樣的算法,對于任意的圖靈機(jī)以及任意的輸入,可以判斷該圖靈機(jī)是否停機(jī)[64]。但從軟件分析這么多年所取得的進(jìn)展可以
5、看出,盡管軟件分析的能力有限,它仍然是軟件領(lǐng)域十分有用的技術(shù):將程序從高級語言向機(jī)器語言的翻譯過程需要分析,判斷一個程序是否符合需求規(guī)約需要分析技術(shù),想了解程序是否存在安全漏洞需要分析技術(shù),維護(hù)過程更是需要人量的分析技術(shù),等等。水資助項lh國家重點基礎(chǔ)硏究發(fā)丿衣規(guī)劃973項II(No.2009CB320703):國家門然科學(xué)基金委創(chuàng)新研究群體研究科學(xué)基金項11(No:60821003);國家863高技術(shù)項目(No.2006AA01Z175)本文將軟件分析定義為“對軟件進(jìn)行人工或者自動分析,以驗證、確認(rèn)、或發(fā)現(xiàn)軟件性質(zhì)(或者規(guī)約、約束)的過程或活動"。下面
6、對上述定義屮兒個術(shù)語進(jìn)行解釋。首先是“軟件”:軟件最初主要是指程序,后來逐步擴(kuò)大到文檔等其它形態(tài)軟件制品。軟件分析也從程序分析發(fā)展到了更大的范圍,例如:對文檔(含需求規(guī)約、設(shè)計文檔、代碼注釋等)的分析、對運行程序的分析,等等?!白詣印币彩呛苤匾母拍睿很浖治龅臍v史兒乎與軟件的歷史一樣長:自從有了軟件就有了軟件分析。最初的分析主要是人工進(jìn)行的,但人工分析往往需要花費大量的時間與粘:力,因此,后來人們越來越多地關(guān)注自動分析。其屮,編譯技術(shù)的發(fā)展大大帶動了軟件的口動分析技術(shù),目前的許多分析技術(shù)都可以在編譯技術(shù)中找到基本雛形。所謂“驗證”(Verificati
7、on),是要回答“軟件制品是否與軟件需求規(guī)約一致”的問題,而“確認(rèn)”(Validation)則要回答“軟件的特性是否符合用戶需求”的問題。在英文中,人們經(jīng)常用“Dothethingright"來解釋“驗證”,而用"Dotherightthing"來解釋“確認(rèn)”。“發(fā)現(xiàn)”(Discover)是指在沒有事先設(shè)定軟件某個性質(zhì)的前提下,通過分析發(fā)現(xiàn)軟件的某種性質(zhì)。之所以強(qiáng)調(diào)“性質(zhì)”,是因為分析的結(jié)果通常表示為軟件是否符合或者具有某種性質(zhì)(或者規(guī)約、約束),而這種性質(zhì)不是軟件本身H明的。在本文討論的軟件分析屮,分析對象僅限于軟件制品,不涉及對軟件過程、軟件人員與軟
8、件組織等的分析。II前與軟件分析相關(guān)的綜述性文獻(xiàn)中,多數(shù)只對軟件分析的一個子集進(jìn)行比較深入的介紹。例如[1]集中在對源代碼分析的介紹,[2]主要介紹形式化的分析方法,[53]著重從語義的角度介紹程序分析,[54]集中在模型為屮心的程序分析上。本文在這些工作的基礎(chǔ)Z上,嘗試對軟件分析涉及的主要方法進(jìn)行盡可能全面的總結(jié)、分類。另外,考慮到近年來軟件質(zhì)呈為人們所熱切關(guān)注,本文在介紹分析技術(shù)Z外,特別關(guān)注那些與質(zhì)量相關(guān)的分析技術(shù),并結(jié)合不同的軟件質(zhì)量屬性,探討不同的質(zhì)量屬性適合運川什么類型的分析技術(shù)。最后,文章結(jié)合軟件形態(tài)、軟件運行環(huán)境等兒個驅(qū)動力對軟件分析技術(shù)
9、的發(fā)展趨勢進(jìn)行展望。2.軟件分析技術(shù)軟件分析通常是另外一個更大的軟件生命周期活動