
【摘要】軟件生命周期是軟件的產生直到報廢的生命周期,包括軟件的定義及規劃、需求分析、軟件設計、編碼、軟件測試和運行維護六個階段。軟件生命周期的各個階段都會涉及質量問題,通常來說軟件設計缺陷發現得越晚,所需付出的代價就越高,因此有必要通過采用合理的管理手段來提高軟件產品的質量。
【關鍵詞】軟件生命周期;質量管理;軟件測試
1.引言
軟件質量是指與軟件產品滿足明確或隱含需求的能力有關的特性,由于軟件產品是邏輯體,不具有實體的可見性,因而其質量也就更加難以把握。軟件產品的質量是通過軟件開發活動和軟件開發過程構造入軟件的,所以軟件開發管理者和軟件開發者必須了解每一個開發活動對軟件產品質量可能產生的影響,及時掌握每一個開發活動對軟件質量所產生的影響,并且對在開發過程中可能產生的或已經產生的質量問題,能夠及時發現并加以控制。要做到這些必須實現軟件開發的工程化。軟件全生命周期質量管理實際上就是工程化管理。它的主要任務就是使軟件開發活動規范化、程序化、標準化。軟件質量管理的基本方法就是根據軟件開發活動的各階段,將質量管理目標分解為若干可實現并可管理的部分,并采用相應的技術和方法進行管理,并對其階段性產品的質量進行驗證,確保最終軟件產品質量滿足用戶的要求。下圖是一個軟件開發過程的主要階段分解圖。
2.需求分析階段
2.1 任務及目標
軟件需求分析階段的任務是確定所開發軟件的運行環境、功能和性能要求,編寫開發計劃。軟件需求分析是由軟件開發方根據委托方提出的軟件任務書以及其它文件,詳細確定軟件需求并編制出一個需求完整、詳細的軟件需求規格說明。
2.2 實施步驟
1)分析和確定軟件開發和運行的環境;2)明確操作者的要求,經分析后將任務書中的技術指標條文擬定成相應的軟件需求規格說明的條文;3)確定人機界面;4)編制項目開發計劃,確定項目質量要求,并將它分解為對軟件開發各階段的質量要求,給出檢查準則;5)確定本項目的質量保證、配置管理工作,并寫入項目開發計劃;6)編寫軟件需求規格說明;7)初步編寫軟件測試工作計劃,明確計劃安排。軟件測試工作計劃一般由軟件項目組編寫。如要求獨立測試,則測試計劃應由獨立測試單位在本階段評審通過后根據需求規格說明另行編寫;8)開始編寫軟件使用說明;9)評審;10)安排測試工作。若需要開發專門的測試軟件或研制專門的軟件測試設備,則應在本階段評審通過后與軟件開發并行地進行此項工作,以保證軟件測試工作按時順利進行。軟件測試的測試軟件開發和測試設備的研制工作按計劃由軟件項目組或獨立測試單位承擔。
2.3 階段產品
1)項目開發計劃;2)軟件需求規格說明;3)軟件測試工作計劃;4)軟件項目計劃數據表。
2.4 技術要求
1)軟件需求規格說明應對軟件的主要功能、性能、技術指標進行定義,其內容應全面、可檢查;2)項目開發計劃中應給出階段評審及配置管理計劃,并明確人員。
2.5 配置管理要求
軟件任務書、開發計劃、軟件需求規格說明、軟件項目計劃數據表、軟件需求分析階段評審表、軟件測試工作計劃進入受控庫。
2.6 評審要求
在軟件需求分析階段,必須進行軟件需求評審,以保證軟件需求的完整性、一致性和準確性。提交軟件任務書、項目開發計劃、軟件需求規格說明、軟件項目計劃數據等,針對項目開發計劃及軟件需求規格說明,對任務和需求分析、可行性分析、質量保證、標準化、配置管理等進行評審,以決定是否開展下階段工作。
3.軟件設計階段
3.1 任務
軟件設計階段的任務是根據軟件需求規格說明進行軟件的總體結構和功能模塊間的設計,初步編制軟件集成測試計劃。定義各功能模塊的接口并設計數據結構,對功能模塊進行過程描述設計,設計功能模塊的內部細節,包括算法和數據結構,為編寫源代碼提供必要的說明。
3.2 實施步驟
1)總體結構設計;2)設計該軟件系統的數據結構,給出所需的模型及所采用的算法原理;3)設計高層模塊的數據流和控制關系;4)給出各個功能模塊的功能描述、數據接口描述及全局數據定義;5)根據軟件可靠性要求,對各功能模塊進行可靠性指標的分配和相應的可靠性設計;6)進行安全性分析,使安全性關鍵的軟件設計符合安全性要求;7)初步編制軟件集成測試計劃;8)確定所有模塊的功能及詳細的接口信息;9)對構成軟件系統的各功能模塊逐步細化,形成若干個可編碼的程序模塊或程序單元。
3.3 階段產品
1)軟件設計說明;2)軟件集成測試計劃(初步)。
3.4 技術要求
1)各功能模塊間應具有低耦合度及高內聚度,功能模塊的作用范圍應在其控制范圍之內;2)各模塊功能單一,模塊接口的復雜度低;3)軟件設計說明和軟件需求規格說明要保持一致,并具有良好的可追蹤性;4)各子項目、模塊的功能和接口要求必須完整、正確。
3.5 配置管理要求
集成測試計劃(初步)、軟件設計說明進入受控庫。
3.6 評審要求
評審軟件設計是否實現了軟件需求規格說明的要求;評審設計方案與主要算法的可行性和先進性;并針對集成的單元之間的信息流和控制流的可追溯性、數據加工處理與數據結構的一致性、并發性信息處理的正確性、可靠性和安全性技術應用的程度及正確性等進行評審,并最終做出本階段工作是否完成、是否轉入下階段工作的評審結論。
4.代碼開發階段
4.1 任務
根據軟件設計說明對各程序單元進行編碼、調試、靜態分析和單元測試,驗證程序單元與設計說明的一致性,并將經過單元測試的模塊逐步集成和調試,完成軟件系統集成,
4.2 實施步驟
1)對每個程序單元用指定的程序設計語言進行編碼和測試;2)對完成編碼的源程序進行靜態分析;3)補充和完善單元測試用例并依此產生測試輸入數據,開發單元測試程序;4)進行程序單元測試;5)將經過單元測試和調試的程序逐步集成和調試,直至集成為相對獨立的軟件功能模塊;6)及時清除程序中用于調試等項工作的多余語句和程序“垃圾”;7)在集成調試后,對經過修改的模塊應進行單元回歸測試;8)編寫軟件使用說明初稿;9)評審。
4.3 階段產品
1)修改了的軟件設計文檔及相應的修改報告單;2)程序單元的編碼;3)程序單元的測試結果、測試用數據及測試輔助程序;4)軟件使用說明初稿。
4.4 技術要求
1)用指定的編程語言進行編碼;2)編碼符合規定語言的編碼格式約定;3)每個程序單元實現的功能、性能和接口應該滿足設計說明的要求;4)必須進行程序靜態分析;5)按要求應分別采用自檢、互檢、專檢等方式檢測軟件,以提高軟件質量和可靠性;6)被測試單元中的每項軟件特性和功能都必須被至少一個測試用例所覆蓋;7)采用必要的安全性設計措施,保證安全性設計需求的實現;8)對在單元測試中發現錯誤的程序應進行修改,修改后的程序單元必須進行回歸測試;9)不僅要考慮對合法的輸入產生測試用例,而且要對非法的、非預期的輸入產生測試用例,既要對正常的處理路徑進行測試,也要考慮對出錯的處理路徑進行測試; 10)程序單元的測試用例需加明確的注釋,并和測試輔助程序一起納入測試集,存檔保留。
4.5 配置管理要求
修改的文檔和相應的修改報告單、軟件使用說明、程序單元的代碼、單元測試數據和測試程序、軟件實現階段評審表進入受控庫。
4.6 評審要求
評審編碼、單元測試的正確性和完整性,在完成文檔、程序編碼、程序單元調試及單元測試的前提下,提供程序單元的編碼、程序單元測試的結果和測試用例、程序開發卷宗等,對程序代碼與詳細設計的一致性、代碼格式與規定要求的一致性、程序代碼調試結果的正確性、靜態分析過程的正確性和合理性、單元測試用例的充分性和合理性、單元測試數據的產生和測試過程的正確性、合理性和完整性、軟件實現過程中若修改了軟件詳細設計或概要設計,則應多途徑審查從被修改階段開始到軟件實現階段為止所有改動部分的正確性等進行審查,做出軟件實現階段是否完成、是否將程序和文檔提交,以便進行軟件集成測試的結論。
5.集成測試階段
5.1 任務
根據集成測試計劃,在將底層程序單元逐步集成到子項目、直至整個開發項目的過程中對軟件進行測試。在進入集成測試前,各程序單元必須完成代碼靜態分析和逐步審查、無錯誤地通過編譯或匯編、完成單元測試、滿足軟件質量要求、程序單元已置于軟件配置管理之下等。
5.2 實施步驟
1)補充、修改和完善軟件集成測試計劃;2)校訂集成順序,編制軟件集成測試程序并核對其正確性;3)建立軟件集成測試環境;4)對集成軟件功能模塊進行測試;5)對集成軟件子項目進行測試;6)對集成軟件產品總體進行測試;7)分析測試結果,找出產生錯誤的原因;8)提交軟件集成測試分析報告,以便盡快修改錯誤;9)完成軟件使用說明的編寫工作;10)評審。
5.3 階段產品
1)修改后的軟件集成測試計劃;2)修改后的軟件設計文檔及相應的修改報告單;3)軟件集成測試分析報告;4)通過集成測試的代碼;5)集成測試用例集和集成測試輔助程序;6)軟件使用說明。
5.4 技術要求
1)軟件集成測試應保證模塊間無錯誤地連接;2)應測試軟件系統或子系統對數據的正確處理能力和經受錯誤的能力;3)在軟件集成測試中,在找出錯誤后,程序應送回編碼者進行修改、調試和單元測試,然后再重新進行軟件集成測試;4)通過軟件集成測試的軟件應滿足各模塊無錯誤地連接、滿足各項設計要求、對錯誤輸入有正確的處理能力、人機界面正確無誤、滿足全部操作要求等。
5.5 配置管理要求
軟件集成測試計劃、修改的軟件設計文檔及相應的修改報告單、軟件集成測試分析報告、最后集成完成的程序代碼、集成測試用例集和集成測試輔助程序、軟件使用說明、軟件集成測試的評審報告進入受控庫。
5.6 評審要求
評審集成測試結果的有效性、軟件的結構和接口間的協調性;評審在軟件集成測試中對所發現的問題進行軟件設計修改、程序代碼修改的正確性。在完成測試、測試分析和文檔提供軟件集成測試計劃、軟件集成測試分析報告、軟件問題報告單的前提下,對軟件集成測試的恰當性、測試用例集的完整性和恰當性、測試結果和測試用例集的一致性、測試環境和正式運行環境的相容性、測試分析過程和結論的正確性等進行評審。
6.確認測試階段
確認測試主要是針對軟件的全部功能和性能要求的黑盒測試。軟件項目開發單位的質量管理部門的測試人員負責測試過程的實施和測試結果的確認,技術管理部門的有關人員與業務部門及項目組成員共同組成確認測試小組,完成確認測試任務。
6.1 任務
1)根據軟件需求規格說明中定義的全部功能和性能要求及確認測試計劃,測試整個軟件,確認其是否符合軟件需求規格說明的要求;2)軟件確認的依據是軟件需求規格說明、概要設計說明及詳細設計說明等,測試對象為通過了軟件集成測試的源程序代碼;3)軟件確認測試工作包括測試環境的建立和測試計劃的編制兩項,此兩項工作在軟件需求分析階段就應開始。
6.2 實施步驟
1)組織和確定軟件確認測試組成員;2)修訂確認測試計劃,對確認測試計劃進行評審,經批準后實施;3)建立和確認軟件測試環境;4)接口測試;5)根據軟件需求規格說明中規定的功能對軟件逐項進行測試;6)根據軟件需求規格說明中規定的性能要求,如精度、速度、適應性等,對軟件逐項進行測試;7)逐條運用軟件使用說明進行測試,以進一步證實該說明的適應性和有效性,并改正其中的錯誤;8)分析測試結果,找出產生錯誤的原因;9)編寫確認測試報告;10)評審。
6.3 階段產品
1)確認測試計劃;2)確認測試分析報告;3)確認測試用例集及有關測試輔助程序;4)通過確認測試的程序代碼。
6.4 技術要求
1)關鍵軟件部件或測試項目的確認測試應由與該軟件項目組無關的技術人員進行,以保證測試的客觀性;2)應在正常輸入數據和合理的異常輸入數據的條件下,考查被測軟件功能和性能的完備性;3)確認測試的測試環境必須與軟件真實運行環境一致或相容;4)全部測試結果、預期結果及測試數據應當存檔保留;5)個別功能和接口要求只能在系統聯試后才能確認的,必須在確認測試分析報告中寫明;6)軟件項目組應積極配合確認測試組的測試工作。
6.5 配置管理要求
確認測試計劃、確認測試分析報告、確認測試用例集及有關測試輔助程序、通過確認測試的程序代碼、確認測試計劃評審表和確認測試階段評審表進入受控庫。
6.6 評審要求
在本階段應進行兩次評審,軟件確認測試計劃評審和軟件確認測試階段評審。
1)確認測試計劃評審
評審確認測試計劃的合理性、完備性以及與軟件需求規格說明的一致性。提供軟件確認測試計劃,確認測試計劃安排的合理性;確認測試環境選擇的合適性;確認測試計劃中功能測試的合理性、齊全性;確認測試計劃中性能測試的合理性、齊全性;確認測試用例、測試數據、測試方案的合理性、正確性和全面性;確認測試結果分析的合適性;確認測試組人員組成和安排的恰當性。該評審應得出的結論是該確認測試計劃是否可行,是否批準實施。
2)確認測試階段評審
評審確認測試結果的有效性;評審軟件功能、性能與軟件需求規格說明的相容性;評審確認測試分析結果的正確性。完成確認測試后提供軟件確認測試分析報告、確認測試用例集,對確認測試用例集的完備性和恰當性、確認測試用例集和確認測試結果的一致性、確認測試環境和運行環境的相容性、確認測試分析過程和結論的正確性進行評審,最終確認該軟件是否實現了軟件需求規格說明所要求的技術指標,對確認測試過程不正確或不完整,需改進測試過程后重做或另外組織確認測試組重做。
7.系統聯試階段
7.1 任務
系統聯試是大系統開發的一個重要階段。系統聯試應由大系統的開發部門主持,軟件項目組參加,以保證軟件與大系統的對接。
7.2 技術要求
1)軟件與所屬大系統的接口應重點測試,不允許有不協調之處;2)對軟件向所屬大系統輸出的信息以及從所屬大系統向軟件輸入的信息,都應仔細歸類進行測試,并注意邊緣測試;3)測試應在軟件和大系統的正式工作環境下進行;4)對存在的問題應分析其產生的原因并給出修改意見;5)全部預期結果、測試結果及測試數據應存檔保留。
8.總結
軟件生命周期質量管理就是使軟件開發過程規范化、程序化和標準化。它通過將復雜的問題分解為若干可實現并可管理的部分,對軟件生命周期的各階段采取相應有效的方法,對其階段性產品的質量進行驗證,以保證軟件的質量。
參考文獻
[1]周艷會,王靜.軟件質量管理的幾點做法[J].電腦與電信,2012(4):70-71.
[2]趙俊霞.面向開發過程的軟件項目質量管理研究[D].武漢理工大學,2009.
[3]陳玲萍.軟件開發生命周期各階段的應用軟件安全測試[J].企業科技與發展,2010(8):14-16.