軟件開(kāi)發(fā)流程整理
從客戶(hù)或用戶(hù)處獲取需求,弄清用戶(hù)需要計算機解決的問(wèn)題根本所在,以及項目所需的經(jīng)費和資源的文檔,最終使開(kāi)發(fā)人員與客戶(hù)就所構建的系統的范圍達成一致意見(jiàn)。
1、用戶(hù)調查
對用戶(hù)進(jìn)行訪(fǎng)談,調查,初步了解項目范圍,需要解決的問(wèn)題以及項目經(jīng)費的重要信息。編寫(xiě)《系統目標與范圍說(shuō)明》,將本階段的結果寫(xiě)成相應的文檔,即《系統目標與范圍說(shuō)明》。
?
2、可行性研究
軟件可行性分析最根本的任務(wù)是用最少的代價(jià),對以后的行動(dòng)方針提出建議。如果問(wèn)題沒(méi)有可行的解釋?zhuān)治鰡T應該建議停止這項開(kāi)發(fā)工程,以避免時(shí)間、資源、人力和金錢(qián)的浪費;如果問(wèn)題值得解,分析員應該推薦一個(gè)較好的解決方案,并且為工程制定一個(gè)初步的計劃。
3、確定項目的規模和目標
分析員對有關(guān)人員進(jìn)行調查訪(fǎng)問(wèn),仔細閱讀和分析有關(guān)的材料,對項目的規模和目標進(jìn)行定和確認,清晰地描述項目的一切限制和約束,確保分析員正在解決的問(wèn)題確實(shí)是要解決的問(wèn)題。
4、研究正在運行的系統
收集,研究,分析現有系統的文檔資料和使用手冊,實(shí)地考察現有系統,在考察的基礎上,訪(fǎng)問(wèn)有關(guān)人員,確定目標系統必須完成的基本功能。
5、建立新系統的高層邏輯模型
根據對現有系統的分析研究,逐步明確了新系統的功能,處理流程以及所受約束,然后使用數據流圖和數據字典,概括的描述高層的數據處理和流動(dòng)。
6、重新定義問(wèn)題
將新系統的高層邏輯模型與項目的問(wèn)題及目標進(jìn)行比較,重新復查問(wèn)題定義,工程規模和目標。
7、導出和評價(jià)各種方案
分析員建立了新系統的高層邏輯模型,并進(jìn)行復查后,要從技術(shù)的角度出發(fā),提出高層邏輯模型的不同方案,即導出若干較高層次的物理解法。根據技術(shù)可行性,經(jīng)濟可行性,社會(huì )可行性對各種方案進(jìn)行評估,去掉行不通的解法,得到可行的解法。
8、推薦可行方案
根據之前可行性研究的結構,應該決定該項目是否值得去開(kāi)發(fā)。若值得開(kāi)發(fā),那么可行的解決方案是什么,并且說(shuō)明該方案可行的原因和理由。
9、草擬開(kāi)發(fā)計劃
初步確定工程進(jìn)度表,開(kāi)發(fā)人員,所需要的資源以及對項目所需要的時(shí)間進(jìn)行估計。編寫(xiě)《可行性研究報告》將該階段的可行性研究過(guò)程的結果寫(xiě)成相應的文檔,即《可行性研究報告》。
10、客戶(hù)驗收審驗
用戶(hù)和使用部門(mén)對《可行性研究報告》進(jìn)行仔細審查,從而決定該項目是否進(jìn)行開(kāi)發(fā),是否接受可行的實(shí)現方案。
二、需求分析
需求分析要求開(kāi)發(fā)人員準確理解用戶(hù)的需求,進(jìn)行細致的調查分析,將用戶(hù)非形式的需求陳述轉化為完整的需求定義,再由需求定義轉化到相應的形式功能規 約(需求規格說(shuō)明)的過(guò)程。需求分析是軟件定義階段中的最后一步,是確定系統必須完成哪些工作,也就是對目標系統提出完整、準確、清晰、具體的要求。
1、制定需求分析計劃
需求分析是一項重要的工作,也是最困難的工作,這個(gè)階段可能會(huì )耗費相當的時(shí)間,人力以及物力。若有明確的計劃進(jìn)行指導,將使得需求分析工作更加有條不紊的進(jìn)行。
2、需求獲取
需求獲取是一個(gè)對準備建立的系統和正在使用的系統進(jìn)行信息收集并從這些信息中提取用戶(hù)需求和系統需求的過(guò)程??梢酝ㄟ^(guò)用戶(hù)面談,實(shí)地考察,用例,需求專(zhuān)題討論會(huì )等方式發(fā)現,獲取需求。
3、分析和綜合
分析人員根據導出的需求,進(jìn)行移植的分析檢查,在分析,綜合中逐步細化軟件功能,劃分成各個(gè)子功能,找出各元素之間的聯(lián)系,接口特性和設計上的限制。
4、導出軟件的邏輯模型
根據分析與綜合的結果,細化可行性研究階段形成的高層邏輯模型,包括數據流圖和數據字典,E-R圖,狀態(tài)轉換圖等,以圖文的形式建立起性系統的邏輯模型。
5、協(xié)商與溝通
在有多個(gè)項目相關(guān)人員(信息持有者)參與的地方,需求將不可避免的發(fā)生沖突,在這個(gè)階段需要對需求的優(yōu)先權進(jìn)行排序并通過(guò)協(xié)商發(fā)現并解決這些沖突。
6、編寫(xiě)《需求規格說(shuō)明書(shū)》
把雙發(fā)共同的理解與分析的結果用規范的方式描述出來(lái),形成《需求規格說(shuō)明書(shū)》,并向下一階段提交,作為今后各項工作的基礎。
7、需求驗證
為保障軟件質(zhì)量,確保軟件開(kāi)發(fā)成,一旦對系統提出一組要求之后,必須嚴格驗證這些需求的正確性,一般從一致性,完整性,現實(shí)性,有效性四個(gè)方面進(jìn)行 驗證。在這個(gè)階段,系統客戶(hù)和系統開(kāi)發(fā)人員必須詳細地閱讀需求文檔并檢查其中的錯誤,一旦檢查出任何問(wèn)題必須記錄下來(lái),接著(zhù)客戶(hù)就需要和開(kāi)發(fā)人員協(xié)商如何解決問(wèn)題。
8、修改完善開(kāi)發(fā)計劃
在需求分析階段對待開(kāi)發(fā)的系統有了更進(jìn)一步的了解,所以能更準確的估計開(kāi)發(fā)成本,進(jìn)度以及資源要求,因此,對原計劃要進(jìn)行適當修正。
9、技術(shù)審查和管理復審
用戶(hù)和使用部門(mén)對《需求規格說(shuō)明書(shū)》進(jìn)行仔細的審查,通過(guò)后該文檔將作文今后工作的基礎。
?
?
三、軟件開(kāi)發(fā)概要設計
概要設計也成為總體設計,在這個(gè)極端需要確定軟件的總體結構,也就是軟件應該由哪些模塊組成,以及模塊與模塊之間的接口關(guān)系,軟件系統主要的數據結構,同時(shí)還要制定測試計劃,形成概要設計說(shuō)明書(shū)。
1、制定規范
盡管每個(gè)開(kāi)發(fā)組織都有概要設計規范,但是不同的應有有些特殊性,所以應該針對具體的軟件特點(diǎn),制定出合適的規范。包括設計文檔的編制標準,編碼的信息形式,與硬件、操作系統的接口規約,命名規則等。
2、設想供選擇的方案
在概要設計時(shí),設計人員應該考慮各種可能的實(shí)現方案,并且力求從中選出最佳方案。此時(shí)設計人員有充分的自由比較不同的實(shí)現方案,一旦選出了最佳方案,將能大大提高系統的性?xún)r(jià)比。
3、推薦最佳方案
綜合分析對比各種合理方案的利弊,推薦一個(gè)最佳方案,并為最佳方案制定詳細的實(shí)現計劃。用戶(hù)和有關(guān)技術(shù)專(zhuān)家應該認真審查,若符合需求并且完全能夠實(shí)現,則提請負責人審批。方案被接受后者進(jìn)入下一階段。
4、功能分解
為確定軟件結構,首先需要從現實(shí)角度把復雜的功能進(jìn)一步分解。分析員結合算法描述仔細分析數據流圖中的每個(gè)處理,將復雜的功能分解成一系列比較簡(jiǎn)單的功能。經(jīng)過(guò)分解細化之后,通常一個(gè)模塊只完成一個(gè)適當的功能,每個(gè)模塊對于大多數程序員都是易于理解的。
5、軟件結構設計
設計軟件模塊的結構就是要把軟件模塊組成良好的層次系統,描述各模塊之間的關(guān)系。頂層模塊調用它下層模塊,每個(gè)下層模塊再調用更下層的模塊,最下層的模塊完成最具體的功能,這樣自頂向下實(shí)現一個(gè)完整的功能。
6、數據設計
數據設計包括數據結構設計,文件設計和數據庫設計。根據需求分析階段獲得的數據要求,確定實(shí)現系統所必須的數據,數據之前的關(guān)系,存儲數據的實(shí)體。
7、制定測試計劃
為了保證軟件的可測試性,軟件在一開(kāi)始就要考慮軟件的測試問(wèn)題,但是這個(gè)階段的測試計劃應該是針對軟件結構的測試和系統測試。
8、編寫(xiě)《概要設計規格說(shuō)明書(shū)》
將本階段的成果編制為相應的文檔,即《概要設計規格說(shuō)明書(shū)》。
9、其他文檔編寫(xiě)
需要提交審查的文檔還包括用戶(hù)手冊,測試計劃,實(shí)現計劃等,還需要對這些文檔進(jìn)行編寫(xiě)。
10、技術(shù)審查和管理復審
最后應該對總體設計的結果進(jìn)行嚴格的技術(shù)審查,在技術(shù)審查通過(guò)之后再由客戶(hù)從管理角度進(jìn)行復審。
?
?
四、詳細設計
詳細設計階段的根本目的是確定應該怎樣具體地實(shí)現所要求的系統,經(jīng)過(guò)這個(gè)階段的設計工作,應該得出對目標系統的精確描述,從而在編碼階段可以吧這個(gè)描述直接翻譯成用某種程序設計語(yǔ)言書(shū)寫(xiě)的程序。
1、數據結構設計
數據結構設計指的是對需求分析,概要設計階段確定的概念性的數據進(jìn)行確切的定義。
2、物理設計
對數據庫進(jìn)行物理設計,即確定數據庫的物理結構。物理結構主要是指數據庫的存儲記錄格式,存儲記錄安排和存儲方法,這些都依賴(lài)于具體使用的數據庫系統。
3、算法設計
在總體設計的結構完成之后,結構各個(gè)環(huán)節的實(shí)現是多解的。這就需要用系統設計與分析的技術(shù)來(lái)描述??梢允褂媚承﹫D形、表格、語(yǔ)言等工具將每個(gè)模塊處理過(guò)程的詳細算法表示出來(lái)。
4、界面設計
用戶(hù)界面的設計現在顯得比較重要,可以采用字符用戶(hù)界面設計,圖形用戶(hù)界面和多媒體人機界面設計。這就要結合具體的系統來(lái)處理。
5、其他設計
根據軟件系統的類(lèi)型,可能還要進(jìn)行其他設計,例如:代碼設計,輸入/輸出格式設計,人機對話(huà)設計,網(wǎng)絡(luò )設計等。
編寫(xiě)《詳細設計規格說(shuō)明書(shū)》將本階段的成果編制為相應的文檔,即《詳細設計規格說(shuō)明書(shū)》。
6、技術(shù)審查和管理復審
最后應該對詳細設計的結果進(jìn)行嚴格的技術(shù)審查,所有處理過(guò)程的算法和數據庫的物理結構等都要進(jìn)行評審。
?
?
五、編碼
編碼即把軟件設計的結果翻譯成用某種程序設計語(yǔ)言書(shū)寫(xiě)的程序。作為軟件工程中的一個(gè)階段,編碼是對設計的進(jìn)一步具體化,因此,程序的質(zhì)量主要取決于軟件設計的質(zhì)量。但程序設計語(yǔ)言的選擇以及編碼風(fēng)格也對程序的可靠性,可讀性,可測試性和可維護性產(chǎn)生深遠的影響。
1、選擇合適的程序設計語(yǔ)言
編程語(yǔ)言在軟件活動(dòng)中處于中心地位,選擇一門(mén)適合的編程語(yǔ)言十分重要。通常從應用領(lǐng)域,算法與計算復雜性,數據結構的復雜性,效率等幾個(gè)方面考慮某一語(yǔ)言是否可選作編碼語(yǔ)言。
2、制定編碼規范
良好的代碼風(fēng)格和編碼規范可以降低程序出錯的幾率,提高程序的易讀性和質(zhì)量,利于構造大軟件所必須的團隊開(kāi)發(fā),同時(shí)也可以有效降低程序的維護成本。
3、建立數據庫系統
根據之前數據與數據流程分析以及數據庫設計的結果建立數據庫結構。
4、程序編碼
使用選定的程序設計語(yǔ)言,將詳細設計中的過(guò)程性描述翻譯成用該語(yǔ)言編寫(xiě)的源程序(源代碼)。
5、技術(shù)審查和管理復審
最后應該對編碼的生成的源程序進(jìn)行嚴格的技術(shù)審查,確保程序運行結果正確有效,滿(mǎn)足要求。
?
?
六、軟件測試
軟件測試是為了發(fā)現錯誤而執行程序的過(guò)程,即根據軟件開(kāi)發(fā)各階段的規格說(shuō)明和程序的內部結構而精心設計一批測試用例,并利用這些測試用例去運行程序,以發(fā)現程序錯誤的過(guò)程。
1、測試用例設計
是以發(fā)現錯誤為目的而精心設計的一組測試數據,測試用例={輸入數據+期望結構}。測試用例將用于之后的測試。
2、單元測試
單元測試針對程序模塊,進(jìn)行正確性檢驗的測試。其目的在于發(fā)現各模塊內部可能存在的各種差錯,驗證它們是否符合模塊功能說(shuō)明的需求。單元測試需要從程序內部結構出發(fā)設計測試用例。多個(gè)模塊可以平行地獨立進(jìn)行單元測試。
3、集成測試
集成測試是組裝軟件的系統技術(shù),即在單元測試的基礎上,需要將所有模塊按照設計要求組裝成為系統,并在此過(guò)程中進(jìn)行測試,其主要目標是發(fā)現與接口有關(guān)的問(wèn)題。
4、確認測試
確定所開(kāi)發(fā)的軟件是否符合軟件需求規格說(shuō)明書(shū)的要求。
5、系統測試
把新開(kāi)發(fā)的軟件安裝到系統中,檢查它能否與系統的其余部分協(xié)調運行。
6、編寫(xiě)《測試分析報告》
將本階段的成果編制為相應的文檔,即《測試分析報告》。