【公眾號@ “專案管理研究所” 將會第一時間更新文章并分享《行業分析報告》】
歸檔于軟體專案管理初級學習路線
第六章 軟體專案成本計劃
《初級學習路線合集 》
前言
大家好,這節我們學習軟體專案管理---引數估演算法,重點介紹COCOMO模型,
一、引數估演算法——定義
引數估算也稱為模型估算,是根據專案資料集合出來的模型,代碼行,人數,時間,工時等都是專案資料,

所以引數估算模型是通過統計技術得出的數學模型,然后根據這個模型估算軟體專案的規模或者成本,引數模型是基于歷史專案資料,專案型別不同,專案環境不同,專案資料也就不同,資料不同得出的模型也就不同,
有很多組織根據自己的研究物件得出不同的估算模型,
例如:這些模型的輸入是代碼行(LOC)

這些模型的輸入是功能點(FP)

盡管模型各不相同,但是有基本相似的公式模式,如圖所示:

接下來我們通過研究2個模型來了解引數模型的思路,既 Walston-Felix模型和COCOMO模型,
二、Walston-Felix模型
Walston-Felix模型是1977年,IBM的Walston和Felix根據63套專案資料,回歸分析得出的,

其中E = 5.2 * 代碼行的0.91次冪,表示代碼行與作業量的關系,
其中D = 4.1 * 代碼行的0.36次冪, 代表代碼行與專案進度的關系,
其中最后一個模型公式,既檔案頁數 = 49 * 代碼行的1.01次冪 ,
便知道我們不能隨便照抄別人的模型,因為不同的企業團隊要求不同,檔案頁數肯定也不同,所以應該采用適合自己專案的模型,
下面我們舉個例子:某專案采用JAVA語言來完成,估計有366個功能點,根據自己定義的該專案 代碼行與功能點的關系,

既 L(代碼行)等于366 * 46 約等于16.386K代碼行,則根據模型估算公式 E(作業量)等于66人月,DOC(檔案頁數)約等于826頁,
三、COCOMO模型
COCOMO模型既結構化成本模型,是目前應用最廣泛的引數型軟體成本估計模型,最初是由Boehm在1981年提出的,稱為COCOMO 81模型,他是通過60多套專案資料分析得出的模型,20世紀90年代中期,隨著軟體工程技術的發展,又提出了COCOMO II模型,
COCOMO模型基本原理如下圖所示:

COCOMO模型分為三個級別:基本COCOMO模型,中等COCOMO模型,高級COCOMO模型,
級別不同,估算的精度也不同,

針對每個級別的模型又分為三個專案型別:既有機型,嵌入式型,半嵌入式型或者叫半有機型,
先介紹COCOMO 81的三個級別模型,
- 基本COCOMO模型是靜態單變數模型,不考慮任何成本驅動,適合在開發的初始階段,專案的相關資訊很少,只適合粗略的技術估算,
- 中等COCOMO模型是在專案的需求確定以后,對專案有所了解之后使用,在基本模型的基礎上通過產品,平臺,人員,專案等方面的屬性影響因素來調整作業量的估算,估算精度提高了,
- 高級COCOMO模型是在設計完成后使用,考慮開發不同階段,影響因素的不同影響,對專案進行精確化的估算,一但軟體的各個模塊都已經確定,估算者就可以使用高級COOMO模型,所以他的估算精度是最高的,
針對上面的每個模型,將專案分為三種型別,有機型,嵌入式,半嵌入式或者叫半有機型,

-
有機型專案是最常規簡單的專案型別,例如各種網站專案,資訊化系統等等,相對較小,較簡單的軟體專案,開發人員對開發專案等目標理解比較充分,與軟體系統相關的作業經驗比較豐富,對軟體的使用環境比較熟悉,受硬體的約束比較小,程式的規模不是很大,
-
嵌入式專案型別,他主要是各類系統程式,例如實時處理,控制系統等等,通常與某種硬體設備緊密結合在一起,對介面,資料結構,演算法的要求比較高,軟體規模任意,例如航天用的控制系統,大型指揮系統等等,
-
半嵌入式專案型別,他是介于上述兩種軟體之間,規模和復雜度都屬于中等或者更高,例如編譯器,連接器,分析器等等,
這是基本COCOMO-81模型公式:E=a * (KLOC)的b次冪,

a和b的取值與專案型別有關,如下圖是不同專案型別的系數表:

下面舉一個33.3k代碼行的軟體開發專案例子:最后得出的結果也就是專案規模是152人月,

我們再看中等COCOMO-81模型,他是對基本模型的調整,在基本模型的基礎上再乘以 乘法因子,乘法因子是根據成本驅動屬性得來的,其中a,b才是根據不同專案型別有不同取值,

中等COOCMO-81模型關鍵是乘法因子,它來自于成本驅動屬性,分4個大類,分別是產品屬性,平臺屬性,人員屬性,程序屬性,

這四個大類又細分為15個驅動因子,例如產品屬性有3個因子,可靠性,資訊量,復雜性,每個驅動因子的取值范圍有很低,低,正常,高,非常高,極高級別,

例如產品復雜性驅動因子很低的取值為0.7,非常高的取值為1.30,既復雜性越高取值越大,
我們再看分析員能力這個驅動因子,非常低是為1.46,非常高是為0.71,既能力越高取值越低 ,
乘法因子等于這15個驅動因子取值后相乘,如果大于1說明作業量往高調整,小于1說明作業量往低調整,
我們繼續看一個33.3k代碼行的軟體開發專案例子:采用中等CoCoMo模型計算專案規模,乘法因子根據15個驅動因子取值相乘后得出1.09,代入公式得出專案規模成本為166人月,

對比前面的基本模型,估算值有了一定的調整,因為我們對專案的產品,人員,平臺,程序有了更細的了解,
我們再看高級COCOMO模型,他比前面兩個模型的精度又提高了,主要體現在兩個方面,第一個方面是針對不同的子系統采用的不同的模型估算,另外一方面是針對模型屬性進行更加細化的調整,

15個因子,每個因子在不同的階段影響不同,取值不同,例如應用經驗AEXP這個驅動因子,在開發的不同階段,其作用是不同的,影響最大的階段是需求階段,設計階段榷訓了,
那么針對每個等級,這個驅動因子在不同階段取值是不同的,例如對于非常低的級別,需求和產品設計階段的取值為1.40,在詳細設計階段的取值為1.30,編碼和測驗階段的取值為1.25,因此提高了估算的精度,但是實踐中實施起來會比較麻煩,

四、COCOMO II
COCOMO II是95年左右,Boehm在81模型的基礎上,結合了軟體工程技術的發展提出來的,
COCOMO II模型也分為3個等級,應用組裝模型,早期設計模型,后體系結構模型,他們分別適合規劃階段,設計階段,開發階段使用,

應用組裝模型適合原型構造或者復用構件組合專案時采用,他基于應用點或者稱為物件點 除以一個標準的應用點的生產率,應用點數量的估算可以是顯示的螢屏數、網頁數、報表數量、程式模塊數量等等,
如下圖所示 公式為:作業量 = NAP * (1-復用代碼量的百分比)/ PROD

早期設計模型適用于專案的初期,需求已經確定,在系統設計的初始階段只設計了基本的軟體結構,還沒有對體系結構進行詳細的設計,這一階段的主要任務是簡單、快速的完成一個大概的成本估算,
那么公式如下圖所示:其中PM是作業量,A是常數,S是代碼行的規模,E是指數比例因子,B可以校準(目前暫定為B=0.91),SF是指數驅動因子,
指數比例因子的效果是對規模較大的專案,預計的作業量將增加,那么EM是作業量系數,

因此軟體開發作業量需要代碼量行數的非線性函式,既基于可用代碼行以及5個規模指數因子,7個作業量乘數因子,
計算指數比例因子最重要的依據是驅動因子和作業量系數,5個指數驅動因子屬性和取值如表所示:

事實上對于一個專案而言,這些屬性的缺乏將不成比例的增加更多的作業量,它分為很低、低、正常、高、很高、極高等級別,
早期設計的作業量系數有7個,這些系數可以評定為非常低、很低、低、正常、高、很高、極高等級別,
我們再來看COCOMO II的后體系結構模型,我們看一下公式,那么該模型與早期設計模型基本是一致的,不同之處在于作業量系數不同,
Boehm講后體系結構模型中的作業量系數化成產品因素,人員因素,專案因素,平臺因素四個大類,共17個屬性的驅動因子,
與COCOMO-81模型的15個驅動因子相比,COCOMO II模型的后體系結構模型增加了一些軟體工程發展中的一些因素,同時也洗掉了一些因素,

復用模型
另外,如果需要估計復用代碼或者已生成代碼所需作業量,可以采用復用模型,公式如下:

計算出等價代碼行(ESLOC)后,ESLOC可以作為代碼行的輸入,采用早期設計模型或者后體系設計模型來估算作業量,
總結
總之 引數模型是根據專案資料進行分析,基本上是進行回歸分析,從而得出回歸模型作為引數模型,
這個引數模型可以是線性的,也可以是非線性的,相當于是監督學習的回歸分析方法,例如線性回歸,多項式回歸,邏輯回歸,神經網路,集成方法等...
例如這是某專案的一些資料:

通過線性回歸分析,計算出引數模型,根據這個模型可以進行此類專案的估算,




那么這是另外一類的專案資料,我們采用神經網路演算法進行模型估算,

這是對專案資料進行數字化和歸一化的結果,

我們采用三層的BP神經網路建模,

通過隱層節點的數目,網路學習率,隱層和輸出層激活函式的分析研究,可以確定網路權值和閾值的變化量,從而確認了引數模型,

這是模型應用的誤差圖示,誤差率在可以接受的范圍之內,

總之引數模型方法需要具有良好的專案資料為基礎,存在成熟的專案估算模型,特點是比較簡單,而且也比較準確,如果模型選擇不當或者資料不準,也會導致偏差,
到這里,第六章 第七節引數估演算法就講解完畢了!下一節介紹專家估演算法~
如果您覺得這篇文章有幫助到您的的話不妨點贊支持一下喲~~??
后續將持續更新【軟體專案管理初級學習路線】的全知識點,大家感興趣的多多關注博主喲~
————————————————
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/498937.html
標籤:其他
