摘 要:在軟件的開發過程中,軟件缺陷的產生是不可避免的。那么究竟什么是軟件缺陷,造成軟件缺陷的主要原因又有哪些呢?本文將從軟件缺陷的類型、級別和軟件缺陷產生的原因等方面進行闡述。
關鍵詞:軟件缺陷;級別;狀態;原因
1 軟件缺陷
所謂軟件缺陷,即為計算機軟件或程序中存在的某種破壞正常運行能力的問題、錯誤,或者隱藏的功能缺陷。軟件缺陷的產生主要是由軟件產品的特點和開發過程決定的。
軟件缺陷的主要類型有:⑴軟件沒有實現產品規格說明中提到的功能;⑵軟件中出現了產品規格說明指明不應該出現的錯誤;⑶軟件沒有實現雖然產品規格說明未明確提及但應該實現的目標;⑷軟件難以理解,不容易使用,運行緩慢。
2 軟件缺陷的級別和狀態
⑴軟件缺陷大體可分為四種級別,分別為:
1)致命的缺陷。出現致命的錯誤,往往導致系統或應用程序崩潰、死機,或者造成數據丟失、主要功能完全喪失。
2)嚴重的缺陷。出現嚴重的錯誤,表現為功能特性沒有實現,主要功能部分喪失,次要功能完全喪失,或者出現致命的錯誤聲明。
3)一般的缺陷。出現一般的錯誤,表現為不太嚴重,雖然有一些缺陷存在,但是不會影響系統和程序的基本使用,功能沒有被很好的實現,如次要功能喪失,提示信息不太準確,或用戶界面差,操作時間長等,沒有達到預期要求。
4)微小的缺陷。出現微小的錯誤,都是無關緊要的小問題,軟件還可以使用,而且不影響功能的實現。
⑵從表現狀態方面,軟件缺陷可分為以下五種。
1)激活狀態(Open):問題沒有解決,測試人員新報告的缺陷或者驗證后缺陷仍舊存在。
2)已修正狀態(Fixed):開發人員針對缺陷來修改程序,認為已解決問題或者通過單元測試。
3)關閉狀態或非激活狀態(Close):測試人員驗證已經修正的缺陷后,確認缺陷不存在后的狀態。
4)保留狀態:當所報告的缺陷目前無法解決或是第三方產品引起的,可以看成保留狀態。
5)不一致狀態:當所報告的缺陷暫時不需要解決或者在下一版本解決的會更好些,可以看成是不一致狀態。
3 軟件缺陷的原因分析
⑴軟件缺陷所產生的原因,主要有以下四個方面。
1)技術問題。技術問題包括:算法錯誤,在給定條件下沒能給出正確或準確的結果。 語法錯誤,對于編譯性語言程序,編譯器可以發現這類問題,但對于解釋性語言程序,只能在測試運行時發現;計算和精度問題,計算的結果沒有滿足所需要的精度;接口參數傳遞不匹配,導致模塊集成出現問題。
2)團隊工作。團隊工作產生的原因主要包括:系統需求分析時對客戶的需求理解不清楚,或者和用戶的溝通存在一些困難;不同階段的開發人員相互理解不一致。例如,軟件設計人員對需求分析的理解有偏差,編程人員對系統設計規格說明書某些內容重視不夠或存在誤解;對于設計或編程上的一些假定或依賴性,相關人員沒有充分溝通;項目組成員技術水平參差不齊,新員工較多,或培訓不夠等原因也容易引起問題。
3)軟件本身。軟件本身存在的問題包括:文檔錯誤、內容不正確或者拼寫錯誤;沒有考慮大量用戶的使用場合,從而可能引起強度或負載問題;對程序邏輯路徑或數據范圍的邊界考慮不夠周全,漏掉某些邊界條件,造成容量或邊界錯誤;對一些實時應用,要精心設計和技術處理,保證精確的時間同步,否則容易引起時間上的不協調、不一致帶來的問題;沒有考慮系統崩潰后的自我恢復或數據的異地備份,災難性恢復等問題,從而存在系統的安全性和可靠性隱患;硬件或系統軟件上存在的錯誤以及軟件開發標準上的錯誤。
4)項目管理的問題。項目管理方面的問題主要包括:缺乏質量文化,不重視質量計劃,對質量、資源、任務、成本等的平衡性把握不好,容易擠掉需求分析、評審、測試、等時間,遺留的缺陷會比較多;開發周期短,需求分析、設計、編程、測試等各項工作不能完全按照定義好的流程來進行,工作不夠充分,結果也就不完整、不準確,錯誤較多;由于周期短,還給各類開發人員造成太大的壓力,引起一些人為的錯誤等。
⑵從測試觀點可以將對軟件缺陷分為以下五類。
1)功能缺陷:功能缺陷包括,規格說明書缺陷、功能缺陷、測試缺陷和測試標準引起的缺陷。
2)系統缺陷:系統缺陷包括,外部接口缺陷、內部接口缺陷、硬件結構缺陷、操作系統缺陷、軟件結構缺陷、控制與順序缺陷、資源管理缺陷;
3)加工缺陷:加工缺陷包括,算術與操作缺陷、初始化缺陷、控制和次序缺陷、靜態邏輯缺陷。
4)數據缺陷:數據缺陷包括,動態數據缺陷、靜態數據缺陷、數據內容缺陷、結構缺陷和屬性缺陷。
5)代碼缺陷:包括數據說明錯誤、數據使用錯誤、計算錯誤、比較錯誤、控制錯誤、界面錯誤、輸入和輸出錯誤。
總之,在軟件開發的過程中,軟件缺陷的產生是不可避免的。為了更好的認識軟件缺陷,找出并修正軟件中出現的各種問題,我們還應當處理好軟件質量保證與測試的關系。軟件質量保證是采取一些措施或方法來改進軟件開發過程,盡量防止軟件缺陷的產生,而軟件測試是盡可能地發現軟件缺陷并確保缺陷得以改正,使得軟件產品更加穩健。
[參考文獻]
[1]宋廣軍.軟件工程[M].北京:北京航空航天大學出版社,2011年.
[2]張海藩.軟件工程導論[M].北京:清華大學出版社,2012年.
[3]賀平.軟件測試技術[M].北京:機械工業出版社,2004年.