軟體工程(咬文嚼字系列)
軟體工程
軟體工程基本原理
1:用分階段的生命週期計劃嚴格管理
2:堅持進行階段評審
3:實現嚴格的產品控制
4:採用現代程式設計技術
5:結果應能清楚的審查
6:開發小組的人員應該小而精
7:承認不斷改進軟體工程實踐的必要性
軟體生存週期
一個軟體產品或軟體系統也要經歷許多階段,這些階段被稱為軟體生命週期。軟體生命週期包括:可行性分析和專案開發計劃,需求分析,設計,編碼,測試,維護
1:可行性分析與專案開發計劃這個階段必須回答的問題是要解決的問題是什麼?這個問題有可行的解決辦法麼?如果有可行的解決辦法,需要多少資源,需要多少時間。要回答這些問題就要進行問題定義,可行性分析,制定專案開發計劃。主要文件有可行性分析報告和專案開發計劃
2:需求分析的任務不是具體的解決問題,而是準確的確定軟體系統必須要做什麼,確定軟體系統的功能,效能,資料和介面,從而確定系統的邏輯模型。主要文件有軟體需求說明書
3:概要設計的主要任務是將功能需求轉換成需要的體系結構,在該體系結構中,每個都是意義明確的模組。有文件概要設計說明書
4:詳細設計的任務是對每個模組完成的功能進行具體描述,然後把功能描述轉換成為精確的結果化的過程描述
5:編碼階段將每個模組的控制結構轉換成計算機可接受的程式程式碼。
6:測試階段主要文件有軟體測試計劃,測試用例和軟體測試報告
7:維護階段時軟體週期最長的階段
軟體過程
1:初始級:雜亂無章,沒有明確定義的步驟,專案的成功全依賴個人的努力和英雄式核心人物的作用
2:可重複級:建立了基本的專案管理和實踐來跟蹤專案費用,進度和功能特性,有必要的過程準則來重複以前同類項目的成功
3:已定義級:管理和工程的軟體過程已經文件化標準化,並綜合成整個軟體開發組織的標準過程,所有專案都採用實際情況修改後的標準軟體過程開發和維護軟體
4:已管理級:制定了軟體過程和產品質量的詳細度量標準,軟體過程的產品質量都被開發組織的成員理解和控制
5:優化級:加強了定量分析,通過來自過程質量反饋和來自新觀念和新技術的反饋過程讓過程來不斷持續的改進
(2):能力成熟度模型整合:階段式和連續式
階段式模型:
1:初始的,過程不可測且缺乏控制
2:已管理的,過程為專案服務
3:已定義的,過程為組織服務
4:定義管理級,過程已度量和控制
5:優化的:集中過程改進
連續式模型:
1:未完成的:過程域未執行或未達到已執行級所有目標
2:已執行的:其共性目標是將其可識別的輸入工作產品轉換成可標識輸出的工作產品
3:已管理的:其共性目標是已管理的過程制度化,專案遵循已文件化的技術和過程描述,所有人獲得足夠可用的資源,所有工作任務和工作產品被監控
4:已定義的:其共性目標是已定義的過程制度化,必須收集過程資產和過程的度量並用於將來對專案的改進
5:已定義管理的:建立和使用關於質量和過程執行的定量目標作為管理的準則
6:優化的:使用量化手段改變和優化過程域,以滿足客戶的要求改變和持續改進計劃中的過程域的功效
軟體過程模型
瀑布模型
瀑布模型將軟體的各個活動規定依照順序連線的若干階段的模型,包括需求分析,設計,編碼,測試,執行與維護。它適合用於文件作為驅動,軟體開發需求明確的軟體目的模型
瀑布模型的變體V模型,在編碼完成之後按照V模型右側向上推進工作。
需求分析 驗收測試
概要設計 系統測試
詳細設計 整合測試
編碼 單元測試
優點:容易理解,管理成本低。
缺點:使用者必須準確清晰的描述他們的需要,在開始的兩到三個階段很難評測專案真正的進度,同時在軟體接近結束時出現大量的整合和測試工作
增量模型
增量模型融合了瀑布模型的基本成分和原型實現的迭代特徵,它假設可以將需求分段為一系列工作產品,每一增量可以分別開發。
增量1:需求分析->設計->編碼->測試 交付客戶
增量2:需求分析->設計->編碼->測試 交付客戶
優點:第一個可交付的版本時間和成本較少,很快釋出第一個版本減少使用者需求的變更,執行增量投資,只能對一兩個增量進行投資
缺點:沒有對使用者變更需求進行規劃,產生初始需求增量很有可能對後臺增量的不穩定
演化模型
適合場景:對於軟體需求缺乏準確認識的情況。
原型模型:原型是一個系統的可執行版本,反映了系統性質的一個選定的子集。一個原型不必滿足目標軟體所有約束,其目的能快速低成本的構建原型.其主要開發步驟是開發初始原型,徵求使用者使用者對初始模型的改進意見,並根據意見修改模型。
原型分為:演化型原型,探索型原型,實驗型原型
螺旋模型:螺旋模型將瀑布模型和演化模型結合起來,新增兩者沒有的風險分析。螺旋模型將開發週期分成四個步驟:
制定計劃:確定軟體的目標,選定實施方案,明確專案開發的限制
風險分析:分析所選的方案,識別風險,消除風險。
實施工程:實施軟體開發,驗證階段性產品
使用者評估:評估開發工作,提出修正建議,建立下一個週期的開發計劃。
適合:開發規模龐大,複雜具有高風險的系統
噴泉模型
噴泉模型採取以使用者需求為動力,以物件作為驅動的模型,適合面向物件的開發方法。解決了不支援軟體重用和多項活動整合的侷限性,具有迭代性和無間隙性。迭代性指開發活動重複多次,無間隙指開發不必等待需求獲取完成和設計完成才開始開發。
形式化方法模型
本質是演化模型,不同之處採用預先打包的軟體構件開發軟體系統
統一過程模型
用例和風險驅動,以架構為中心,迭代且增量的開發過程。
起始階段:構想文件,初始用例模型,初始專案術語表,初始業務用例,初始風險評估,專案計劃,業務模型 生命週期目標
精化階段:生命週期架構
構建階段:初始運作功能
移交階段:產品釋出
敏捷方法
極限程式設計:價值觀,原則,實踐,行為4個部分組成
水晶法:每個專案都需要不同的策略,約定,方法論
並列爭求法:30天作為一個衝刺,並且按照需求的優先級別來實現產品
自適應軟體開發:特徵被視為客戶價值的關鍵點,
敏捷統一過程:大型上面連續,小型上面迭代。採取了起始,精化,構建,移交