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