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