
一、管理需求
- 為什么要管理需求?避免失敗,提高項目的成功率和需求管理所帶來的其他好處
- 軟件生命周期中,一個錯誤發現得越晚,修復錯誤的費用越高
- 許多錯誤是潛伏的,并且在錯誤產生后很長一段時間才被檢查出來
- 在需求階段,代表性的錯誤為舒服、不一致和二義性
- 需求錯誤是可以被檢查出來的,很多錯誤沒有在前期被發現
- 需求管理的困難性,需求不是總是顯而易見的,并不總是能容易用文字明白無誤地表達
- 存在不同種類的需求,詳細程度各不相同,如不加以控制,需求的數量將難以管理
- 有些需求之間相互關聯,有些需求有位移的特征或特征值
- 軟件需求是為用戶解決問題或達到目標所需的條件或權能
- 優秀需求的特性:完整性、正確性、可行性、必要性、劃分優先級、無二義性、可驗證性

二、項目方法的選擇
- 識別項目中的高風險,產品的不確定性和過程的不確定性
- 選擇方法:考慮用戶關于實現的需求、選擇通用的生命周期方法
- 開發一個軟件需要選擇開發策略(包括過程、方法和工具)以及通用階段,這些策略和階段被稱為過程模型
- 軟件過程由關于項目的階段、狀態、方法、技術和開發、維護軟件的人員以及相關對象(計劃、文檔、模型、編碼、測試和手冊)組成
- 軟件工程的核心是過程,產品、人員、技術通過過程關聯起來。軟件開發過程能夠將技術集成在一起從而使軟件的開發能夠以一種合理而及時的方式完成。
- 問題求解的一般過程:現狀->問題定義->技術開發->方案集成
- 瀑布模型:所有過程模型的組中,項目從開始到結束按照一定的順序執行,文檔驅動,各個階段不連續也不交叉,強調最小的重疊
- V型模型:對瀑布模型的修正,強調了驗證活動
- 生魚片模型:把階段重疊起來的瀑布模型,強調大幅度的重疊
- 螺旋模型:以風險為道姓的生命周期模型。從小范圍的關鍵中心地帶開始尋找風險因素,制定風險控制計劃,并交付給下一步驟,如此迭代,每次迭代將項目擴展到一個更大的規模。
- 并行開發模型:軟件開發中的所有活動可能同時并存,但是都處于不同的狀態中,定義了活動從一個狀態轉化為一個狀態的事件
- 原型法:項目系統中的一個方面或多個方面的工作模型
- 階段交付:持續地在確定的階段向用戶展示軟件,分段將有用的功能交付給用戶

三、軟件評估
- 準確(accuracy)是結果與目標之間有多近
- 精確(precision)是結果有多少有意義的位數
- 軟件工作量評估困難:軟件的本質造成的,軟件的復雜性和不可見性
- 策略計劃:選擇合適的項目
- 可行性分析
- 系統描述:實現各個需求的工作量需要被衡量
- 項目計劃,項目進行中,估算越來越準確
- 軟件估算:歷史數據的需要、工作度量、復雜性
- 自下而上:各個部分的工作量先估算出來,然后進行合成
- 自頂而下:首先定義整個項目的工作量,然后分解到各個部分
- 大致的進度估算
- 可能的最短進度(非常樂觀)、有效的進度、普通進度
- 估算修正:先給出大的區間,逐步縮小區間
- 避免無準備的估算
- 留出估算的時間,并做好計劃
- 開發人員參與估算