高欣
摘 要
互聯網信息高速發展的大背景下,無論硬件軟件的復雜程度,還是技術含量都在日益提高,人們對軟件的需求也越來越高。與此同時,軟件中存在的漏洞和缺陷也迅速成為黑客攻擊的對象,因此,建立一套高保障性的技術體系以保護軟件的研制和可靠性成為當下社會研究的當務之急。
【關鍵詞】軟件應用 軟件開發 軟件測試
1 工程實例
1.1 測試過程
軟件開發是一個常規的過程,在當今時代環境下,一般分為4個階段,每個階段中都需要對軟件進行內部測試,一般分為:靜態分析、代碼審查、單元測試、部件測試、配置項測試。
1.1.1 靜態分析
使用專業靜態分析工具,對軟件應用的程序,數據等參數進行剖析,并進行深入的數據分析,將軟件應用內部的靜態信息和代碼信息提取出來,為未來的動態測試提供參考數據,并根據現在的軟件模型,對軟件的質量做出正確評價。
1.1.2 代碼審查
主要是對代碼進行一系列專業的檢查過程,對代碼的容錯綠,代碼運轉結果的一致性,代碼的可讀性等進行檢查分析。重點對代碼的邏輯性,完整性進行檢查,保證正確率。
1.1.3 單元測試
按照軟件設計的說明圖,模擬軟件運行環境和運行部件,針對軟件的環境進行接口模擬,并創造出軟件的真實運行環境,進行測試,監測軟件的運行結果。
1.1.4 部件測試
按照被測軟件的說明圖,在單元測試的基礎上,將各個測試成功的單元模塊按需求和設計組裝成一個符合設計需求的整體功能模塊,并進行測試,其目的是監測軟件各個單元和接口之間的兼容性和容錯率,保證軟件的設計成功。
1.1.5 配置項測試
所謂配置項是軟件中為滿足不同用戶的不通需求而設計的,能體現用戶個性化功能的配置功能項,測試的目的是監測配置項在軟件中的一致性。
1.2 問題現象
某產品軟件到了后期階段仍在進行頻繁更改,通過對其分析,得出軟件復雜度高是其存在的主要問題:
(1)模塊在結構上應使用單出入口的結構,降低復雜性。
(2)在模塊的邏輯設計上進行改進,采用分層次的結構,并在不同層次上設計不同的扇入扇出數,保證模塊的扇出數較低,一般不超過7,并且盡可能的增加模塊的扇入數,以保證代碼的簡潔性。另外,高層模塊的設計應該采取不同策略,比如高層模塊扇出較高,低層模塊扇入較高等。
(3)軟件單元的圈復雜度(即McCabe 指數)應小于10。
(4)簡化軟件單元的源代碼數量,高級語言實現的單元,不應超過60行。
1.3 問題分析
測試的目的是為了更正軟件的錯誤,降低風險率,一般來說經過幾個階段的測試后,軟件中的缺陷基本都能被修復,但是沒有重視靜態分析中的軟件圈復雜度,基本復雜度超標的現象,軟件在后期的高復雜性往往會帶來潛在的風險。
2 測試指導設計
2.1 軟件質量的pareto原理
pareto原理[2] 指出,20%的軟件模塊包含了軟件中80%的缺陷,20%的軟件改進,需花費80%的適應性維護費用。從這里可以得出結論,高復雜的模塊會導致軟件中可能出現的絕大部分錯誤,而且不容易修復。因此,在軟件設計早起杜絕復雜度過高的風險十分必要。
2.2 降低軟件圈復雜度
2.2.1 圈復雜度定義
圈復雜度作為一個衡量軟件結構復雜性的標準,數量上表現為獨立線性路徑條數,即合理的預防錯誤所需測試的最少路徑條數。1976年ThomasMcCabe提出了圈復雜度(Cyclomatic Complexity)的概念,依據圈復雜度定義了軟件的復雜性。1977年Halstead提出了軟件科學復雜度度量。文獻[3],在這個理念中重點分析了嵌入式軟件的位置的重要性,并通過模型的方式展示了軟件復雜度的度量對識別代碼錯位的重要性。可以看出,軟件的錯誤和缺陷并非隨機分布的,而是有跡可循,和軟件的個性化,復雜度息息相關。
2.2.2 復雜度計算方法
C語言常用的軟件模塊邏輯結構(結構流圖)有如下幾種,如圖3所示。
2.2.3 降低圈復雜度
如果圈復雜度高于標準值的時候,可以提前做出判斷,降低代碼的復雜度和重復性。在判斷語句中采取單一的判斷條件,或者將重復代碼用一個函數來替代。都是降低代碼復雜度和重復性的有力措施。
2.3 降低軟件基本復雜度
運轉正常的語句或代碼應帶保證單入口和單出口結構,保證程序的簡潔性,不應過多使用異常跳轉語句增加程序的運轉復雜度,如果非結構化語句過多,出入口增大,只會導致結構的復雜度增高,增加軟件后期運行的風險。
因此,只要控制程序語句的結構單一化,簡單化,避免各種非正常跳轉語句的使用,復雜度就會在可控制的范圍內,有利于程序的運行穩定。
2.4 降低軟件扇出數
扇出的意思是函數調用其他函數的個數,如果扇出過小,則會導致程序代碼過長,如果扇出過大,則會增加程序內函數的調用次數,影響速度,一般來說扇出最好為3或4個,最高不超過7個。
扇入的意思是一個函數被其他程序調用的次數,扇入較多會增加模塊的使用頻率,但是過高的扇入會影響程序的聚合性,如果扇出扇入次數過高,可以考慮重新調整該函數或過程。
3 結語
本文通過以測試結果來倒向改進軟件設計的思路,提高了軟件的設計質量和可靠性,可以看出,在軟件代碼內部進行早期分析,在軟件設計早期對軟件代碼,復雜度等指標進行優化限制,對軟件后期的穩定運行,錯誤率降低有非常大的影響和幫助,成為軟件改進的新思路。
參考文獻
[1]尹平,許聚常,張慧穎.軟件測試與軟件質量評價[M].北京:國防工業出版社,2008.
[2]SCHULMEYER G G.軟件質量保證[M].北京:機械工業出版社,2003.
[3]JOHN C,MUNSON.Software faults,software failures and software reliability modeling[J].Information and Software Technology,1996(02).
作者單位
天津濱海職業學院 天津市 300451