軟件生存周期
軟件生存周期是軟件工程的一個概念,也稱為軟件生命周期,是指軟件產(chǎn)品從概念形成到開發(fā)、使用、維護和退役的整個過程。軟件生命周期包括六個活動:問題定義和可行性研究、需求分析、軟件設(shè)計、程序編碼、軟件測試、運行和維護,這些活動以適當(dāng)?shù)姆绞椒峙涞讲煌碾A段。軟件生命周期包括軟件開發(fā)生命周期中的所有階段以及額外的維護和支持階段。軟件生命周期的每個階段都有明確的目標(biāo)和任務(wù),每個階段工作完成的標(biāo)志是“里程碑”,它由一系列指定的“軟件工作產(chǎn)品”組成。
軟件生命周期的概念最早提出于20世紀(jì)70年代。1995年,國際標(biāo)準(zhǔn)化組織ISO發(fā)布了軟件生命周期過程開發(fā)標(biāo)準(zhǔn),該標(biāo)準(zhǔn)將整個生命周期劃分為更小的階段,使軟件開發(fā)過程易于管理和控制。2022年10月,由浙江省電子信息產(chǎn)品檢驗院牽頭制定的中國國家標(biāo)準(zhǔn)《系統(tǒng)和軟件工程軟件生命周期過程》正式發(fā)布。
在軟件產(chǎn)品從開始到結(jié)束經(jīng)歷了整個開發(fā)周期之后,新一代產(chǎn)品通過開發(fā)周期的重復(fù)而開發(fā)。將整個軟件生命周期分為幾個階段,使每個階段都有明確的任務(wù),這使得規(guī)模大、結(jié)構(gòu)復(fù)雜、管理復(fù)雜的軟件開發(fā)易于控制和管理,提高了軟件的可維護性,從而提高了軟件開發(fā)的成功率和生產(chǎn)率。開發(fā)中使用的規(guī)模、類型、開發(fā)模式、開發(fā)環(huán)境和方法論是影響軟件生命周期的因素。
發(fā)展歷史
在計算機發(fā)展的早期,程序并沒有從硬件中分離出來,軟件開發(fā)成本在整個系統(tǒng)中占比很小,是硬件的附屬品。在早期的編程時代,編程是為某個計算機系統(tǒng)服務(wù)的。程序員既是程序的設(shè)計者也是用戶。程序主要用于科學(xué)計算,這很簡單,不需要編程文檔。程序維護相對簡單。
隨著軟件規(guī)模和復(fù)雜性的增加。1968年,北大西洋公約組織軟件人員提出了“軟件工程”的概念。20世紀(jì)70年代,為了應(yīng)對應(yīng)用軟件日益復(fù)雜、開發(fā)周期長以及用戶對軟件產(chǎn)品經(jīng)常不滿意的情況,首次提出了軟件生命周期的概念。1976年以后,人們開始更多地關(guān)注編程前的幾個發(fā)展階段,并形成了“軟件生命周期”的概念,從而給出了軟件生命周期的定義。
1988年,Barry Boehm正式發(fā)表了軟件系統(tǒng)開發(fā)的“螺旋模型”。20世紀(jì)90年代初,提出了軟件工程過程的概念,規(guī)定了獲取、供應(yīng)、開發(fā)、運行和維護軟件時要實施的過程、活動和任務(wù)。在此基礎(chǔ)上,電氣和電子工程師協(xié)會標(biāo)準(zhǔn)化委員會于1991年9月制定了軟件生命周期過程標(biāo)準(zhǔn)。1995年,國際標(biāo)準(zhǔn)化組織ISO發(fā)布了軟件生命周期過程開發(fā)標(biāo)準(zhǔn)。根據(jù)瀑布開發(fā)模型,中國制定并發(fā)布了《計算機軟件文檔規(guī)范》(CB/T 8567-2006),極大地促進了中國的軟件開發(fā)。
2022年10月,中國國家標(biāo)準(zhǔn)化管理委員會發(fā)布中華人民共和國國家標(biāo)準(zhǔn)公告,由浙江省電子信息產(chǎn)品檢驗研究院牽頭制定的國家標(biāo)準(zhǔn)《系統(tǒng)和軟件工程軟件生命周期過程》正式發(fā)布。
周期過程
軟件生命周期分為規(guī)劃、開發(fā)和運行三個階段,每個階段又細分為若干階段。規(guī)劃期包括問題定義和可行性研究;開發(fā)周期包括四個階段:需求分析、軟件設(shè)計、編碼和測試。運營期主要是系統(tǒng)維護階段。整個周期過程包括六個活動:定義和可行性研究、需求分析、軟件設(shè)計(總體設(shè)計和詳細設(shè)計)、程序編碼、軟件測試、運行和維護,并以適當(dāng)?shù)姆绞椒峙涞讲煌碾A段。
規(guī)劃期
規(guī)劃期間的主要任務(wù)是調(diào)查和分析,主要是調(diào)查用戶的需求,分析新系統(tǒng)的主要目標(biāo),分析開發(fā)系統(tǒng)的可行性,并制定項目開發(fā)計劃。
問題定義:問題定義是規(guī)劃階段的第一步。用戶提出軟件開發(fā)需求后,系統(tǒng)分析師首先要搞清楚軟件項目的本質(zhì)是什么,是數(shù)據(jù)處理問題還是實時控制問題,是科學(xué)計算問題還是人工智能問題。還需要明確項目的目標(biāo)是什么,項目的規(guī)模是什么。
可行性研究:現(xiàn)階段必須回答的問題是是否可行。在這一階段,軟件開發(fā)人員與客戶進行溝通,確定開發(fā)軟件系統(tǒng)的總體目標(biāo),并明確功能、性能、可靠性等方面的要求;研究此軟件任務(wù)的可行性,并探索問題的可能解決方案;制定開發(fā)任務(wù)的實施方案,與可行性研究報告一起提交管理部審查。
開發(fā)期
在開發(fā)期間,主要完成兩大任務(wù):設(shè)計和實現(xiàn)。設(shè)計任務(wù)分需求分析和軟件設(shè)計兩個階段完成,實現(xiàn)任務(wù)分編碼和測試兩個階段完成。將設(shè)計和實現(xiàn)分為兩步的目的是讓程序員在開發(fā)的早期階段專注于軟件的邏輯結(jié)構(gòu),避免過早地將自己的注意力從實現(xiàn)的細節(jié)上轉(zhuǎn)移。
需求分析:在這個階段,軟件開發(fā)人員在軟件開發(fā)可行的情況下,對軟件需要實現(xiàn)的各種功能進行詳細分析。這個階段的任務(wù)不是具體解決問題,而是確定用戶對“軟件系統(tǒng)必須做什么”的要求以及軟件系統(tǒng)必須具備的功能和性能,包括軟件的功能需求、性能需求、環(huán)境約束和外部圖;分析用戶提出的需求并給出詳細定義;編寫軟件需求規(guī)范和初步用戶手冊,并提交給管理機構(gòu)審查。
軟件設(shè)計:在此階段,將識別的需求轉(zhuǎn)換為相應(yīng)的軟件架構(gòu),然后詳細描述每個模塊要完成的工作。它可以分為兩個部分:總體設(shè)計和詳細設(shè)計。總體設(shè)計應(yīng)設(shè)計軟件架構(gòu),以及總體數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫結(jié)構(gòu)。詳細設(shè)計詳細描述每個模塊完成的功能,需要將功能描述變成準(zhǔn)確、結(jié)構(gòu)化的流程描述。軟件設(shè)計完成后,編寫設(shè)計規(guī)范并提交審查。
程序編碼:在這個階段,軟件設(shè)計被轉(zhuǎn)換成計算機可接受的程序代碼。為了保證程序的可讀性和可維護性,提高程序的運行效率,在程序編碼中制定了統(tǒng)一、標(biāo)準(zhǔn)的編寫規(guī)范。單元測試通常與編碼同時進行,因此這一階段也稱為“編碼(測試)”。
軟件測試:程序編寫完成后,代碼要經(jīng)過嚴(yán)格的測試,找出軟件整個設(shè)計開發(fā)過程中存在的問題并加以改正。根據(jù)不同的目的,測試可以細分為多個層次。整個測試過程分為四個階段:單元測試、集成測試、確認(rèn)測試和系統(tǒng)測試。在設(shè)計測試用例的基礎(chǔ)上,對軟件的所有組件進行測試。測試由獨立的測試工程師進行,需要撰寫一份“測試報告”文檔,包括測試計劃、測試用例、測試結(jié)果等。通過驗證測試(針對功能需求)和系統(tǒng)測試(針對性能等非功能需求)后,軟件就可以交付了,因此驗證測試有時也稱為“交付測試”。
運行周期
運行期是軟件生命周期的最后一個階段,這個階段的主要工作是軟件維護。
操作和維護軟件:維護是軟件生命周期中最長的階段。軟件投入使用后,當(dāng)它不再能滿足用戶的要求時,需要進行改進或修改。并定期維護軟件。運維階段的任務(wù)是做好軟件維護,使軟件在全生命周期內(nèi)滿足用戶的需求,延長其使用壽命。每次維修都應(yīng)遵循規(guī)定的程序并填寫或更改相關(guān)文件。
周期模型
為了研究軟件開發(fā)項目中各種活動的一般規(guī)律,定量度量和優(yōu)化軟件開發(fā)過程,擴展了軟件開發(fā)過程模型,包括瀑布模型、快速原型模型、迭代模型、增量模型、螺旋模型和噴泉模型。
質(zhì)量保證
為了提高軟件生命周期和保證軟件質(zhì)量,軟件開發(fā)活動和過程被分解成幾個可實現(xiàn)和可管理的部分。在生命周期的每個階段,應(yīng)用相應(yīng)和有效的技術(shù)和方法來開展軟件開發(fā)活動并驗證其階段性產(chǎn)品的質(zhì)量以確保其高質(zhì)量,主要分為七個階段:需求分析、概要設(shè)計、詳細設(shè)計、代碼開發(fā)、集成測試、確認(rèn)測試和系統(tǒng)聯(lián)合測試。
主要階段
需求分析階段:在需求分析階段,需要分析系統(tǒng)、子系統(tǒng)和設(shè)備對軟件的需求,確定軟件實施的運行環(huán)境,并形成軟件任務(wù)書。分析系統(tǒng)的規(guī)格要求和組成部分,分析硬件和軟件之間的關(guān)系,定義每個軟件的開發(fā)項目,提出初步驗收方法,編寫軟件任務(wù)書等步驟,并制作軟件任務(wù)書和軟件的初步接口描述等階段性產(chǎn)品。
概要設(shè)計階段:在概要設(shè)計階段,需要根據(jù)軟件需求的規(guī)格說明建立軟件的總體結(jié)構(gòu)和功能模塊(組件)之間的關(guān)系,定義各功能模塊的接口,設(shè)計全局?jǐn)?shù)據(jù)庫和數(shù)據(jù)結(jié)構(gòu),并初步編制軟件集成測試計劃。進行總體結(jié)構(gòu)設(shè)計,設(shè)計高層模塊的數(shù)據(jù)流和控制關(guān)系,初步編制軟件集成測試計劃等。,并產(chǎn)生階段性產(chǎn)品,如概要設(shè)計說明、數(shù)據(jù)庫設(shè)計說明、概要界面設(shè)計說明和軟件集成測試計劃。
細部設(shè)計階段:在詳細設(shè)計階段,需要描述和設(shè)計概要設(shè)計中產(chǎn)生的功能模塊(組件)的過程,設(shè)計功能模塊的內(nèi)部細節(jié),并提供編寫源代碼的必要說明。軟件的詳細設(shè)計主要基于軟件需求規(guī)格說明、概要設(shè)計描述和界面設(shè)計描述,包括審查概要設(shè)計、建立模塊開發(fā)文件、編寫詳細設(shè)計描述文檔等。,并產(chǎn)生階段性產(chǎn)品,如詳細設(shè)計說明、詳細模塊流程圖、修改后的概要設(shè)計說明和修改報告表。
代碼開發(fā)階段:在代碼開發(fā)階段,應(yīng)根據(jù)詳細的軟件設(shè)計規(guī)范對每個程序單元進行編碼、調(diào)試、靜態(tài)分析和單元測試,以驗證程序單元與設(shè)計規(guī)范之間的一致性并完成軟件系統(tǒng)集成。用指定的編程語言對每個程序單元進行編碼和測試,對編碼的源程序進行靜態(tài)分析,改進單元測試用例并生成測試輸入數(shù)據(jù),開發(fā)單元測試程序等。以及分階段產(chǎn)品的生成,如程序單元編碼、模塊開發(fā)文件和軟件指令初稿。
集成測試階段:在軟件集成測試階段,需要根據(jù)概要設(shè)計的結(jié)構(gòu)和集成測試計劃對軟件進行測試,在這個過程中,將底層程序單元逐步集成到子項目中,直至整個開發(fā)項目。每個程序單元都應(yīng)該完成代碼的靜態(tài)分析和逐步審查、錯誤的編譯或匯編以及單元測試。補充和改進軟件集成測試計劃,修改集成順序,建立軟件集成測試環(huán)境等。,產(chǎn)生修改后的軟件集成測試計劃、修改后的軟件設(shè)計文檔和相應(yīng)的修改報告、軟件集成測試分析報告、通過集成測試的程序代碼、集成測試用例集和集成測試輔助程序等階段性產(chǎn)品。
確認(rèn)測試階段:在確認(rèn)測試階段,主要針對軟件的所有功能和性能需求進行黑盒測試。組織確定軟件驗證測試團隊成員,修訂驗證測試計劃,建立并驗證軟件測試環(huán)境測試、功能捷克性能測試等步驟,產(chǎn)生驗證測試計劃、驗證測試分析報告、驗證測試用例集及相關(guān)測試輔助程序。
系統(tǒng)聯(lián)合測試階段:當(dāng)開發(fā)的軟件是大系統(tǒng)的一部分時,當(dāng)開發(fā)的軟件與大系統(tǒng)結(jié)合時,必須進行系統(tǒng)聯(lián)合測試,以驗證軟件是否滿足系統(tǒng)規(guī)定的要求以及軟件是否適用于大系統(tǒng)。預(yù)期結(jié)果、測試結(jié)果和產(chǎn)生的測試數(shù)據(jù)應(yīng)存檔。系統(tǒng)聯(lián)合測試階段的配置管理包括系統(tǒng)聯(lián)合測試的軟件必須從受控庫中取出,并且必須嚴(yán)格控制對軟件的更改。
工具技術(shù)
項目管理軟件:軟件項目管理常用的軟件工具包括Microsoft Project、項目管理套件、OpenProj和禪宗。
需求分析和設(shè)計工具:軟件需求分析工具分為兩大類:結(jié)構(gòu)化圖形工具箱、面向?qū)ο蠼9ぞ吆头治龉ぞ摺=Y(jié)構(gòu)化圖形工具需要通過數(shù)據(jù)流圖(DFD)進行分析。面向?qū)ο蟮慕9ぞ吆头治龉ぞ咝枰ㄟ^對象建立來構(gòu)建系統(tǒng)的抽象模型,包括圖形工具、對象瀏覽器和類庫管理系統(tǒng)。設(shè)計工具是用于輔助軟件設(shè)計活動的軟件,稱為設(shè)計工具,分為通用設(shè)計工具和詳細設(shè)計工具。
開發(fā)環(huán)境:現(xiàn)代軟件開發(fā)使用集成開發(fā)環(huán)境(IDE),其中包括代碼編輯器、編譯器、調(diào)試器和圖形用戶界面工具。它集成了代碼編寫、分析、編譯和調(diào)試功能,是一種集成的軟件開發(fā)工具。
測試工具:軟件測試工具分為商業(yè)測試工具和開源測試工具,其中開源測試工具涵蓋單元測試、性能測試、自動化測試、移動測試、測試管理等。,主要關(guān)注單元測試工具、功能測試工具、性能測試工具和缺陷管理工具。