軟體工程-軟體專案管理
知識要點:
估算軟體規模; 開發工作量估算; 開發時間、進度估算;
關鍵路徑、機動時間; 軟體配置及管理過程; 能力成熟度模型。
一、軟體專案管理的定義:通過計劃、組織和控制等一系列活動,合理的配置和使用各種資源,以求達到
軟體專案開發的過程。
二、估算軟體規模:程式碼行技術、功能點(FP)技術;
程式碼行技術:將實現每個功能的所需要的源程式行數累加即可;
功能點技術:FP=UFP*TCF;(未調整的功能點數乘以複雜因子)
TCF=0.65+0.01*DI;(DI為全部技術因素的和)
功能點的確定與所用程式語言無關;
三、工作量的估算(單位人月pm):一般為關於程式碼行數KLOC和功能點FP的函式;
靜態單變數模型:E=A+B*(引數值)^C;(該式子的A、B、C都為已知常數,引數值為KLOC或FP)
動態多變數模型(軟體方程式):看做軟體規模與時間的二元函式,用此函式值來估算工作量E;
E=(LOC*B^0.333/P)*(1/t)^4;(t是指專案持續時間單位為月或年,B是特殊技術因子,P為生產率引數,B與P視為常數)
在LOC工作規模固定時,專案持續時間t越長工作量E越低
COCOMO2模型(構造性成本模型):
四、開發時間的估算:T=A*E^B(A、B為常數、E為工作量單位為人月pm)
五、開發進度的估算:關鍵路徑問題事件的最早與最晚開始時間;
(最早開始時間為從前往後取最大值,最遲開始時間從後往前取最小值)
六、關鍵路徑:幾個時間的最早和最晚開始時間相同,這些時間構成的路徑稱為關鍵路徑;(關鍵路徑上的活動必然準時發生)
想要縮短工期必須加快關鍵活動的進行(反之不成立);
(具體內容詳見資料結構圖部分,計算事件的最早開始時間,活動的最早開始時間,時間的最晚開始時間,
活動的最晚開始時間。總結最早就是順序求解,最晚就是逆序求解)
七、機動時間(鬆弛時間):不在關鍵路徑上的事件有一定機動的餘地,實際的開始時間可以比預定時間一些,或者
持續時間比預定時間長一些,而不影響整個工程的結束時間。機動時間等於事件的最晚開始時間減去事件的最早開始時間;
八、軟體配置及管理過程:
軟體配置管理定義:在軟體專案啟動時開始,在軟體整個生命週期內管理變化的一組活動,這些活動用於標識變化、控制變化
確保適當的實現了變化、向需要知道這類資訊的人報告變化;其目的是使變化更正確且更容易被適應,在必須變化時
減少所需花費的工作量;
軟體配置:計算機程式、描述計算機程式的文件、資料;
基線的定義(重點):通過正式複審的規格說明或中間產品,作為進一步開發的基礎並且只有通過正式的變化控制才能改變它;
基線是通過正式複審的軟體配置項,在軟體配置項變成基線之前可以迅速而非正式的修改它。基線一旦建立
雖然仍可以實現變化,但必須應用特定的、正式的過程來評估、實現、驗證每一個變化;
軟體管理的過程(重點):
任務:控制變化(主要任務)、標識、版本控制、變化控制、配置審計、狀態報告;
九、能力成熟度模型(CMM):
初始級:專案成功與否取決於開發人員的個人能力,軟體過程的特徵是無序混亂的,幾乎沒有什麼過程是經過定義的
具有不可預測性,而且在該過程中人員變動比較頻繁;
可重複級:建立基本的專案管理過程,可跟蹤成本、進度、功能、質量。其目標是使得專案管理過程穩定,能夠重複
之前成功專案中所進行過的軟體專案工程實踐;
已定義級:已定義完整的軟體過程,軟體過程已經文件化、標準化。所進行的管理和工程活動都是穩定的,產品開發成本
和進度以及產品功能和質量都受到控制,軟體產品質量具有可追溯性。
已管理級:軟體過程和軟體產品都建立了定量的質量目標,所有過程活動都是可度量的。允許軟體機構在定量範圍內
預測過程和產品的質量趨勢,發生偏離時可以及時糾正,產生的軟體產品是高質量的。
優化級:具有持續不斷改進軟體過程的能力,既對現行的過程例項不斷改進和優化,又採用新技術和新方法來實現
未來過程的改進;
(高一級包含低一級的全部特徵,是低一級的進一步優化)