一共透過6個步驟:
- 計算未調整的角色權值UAW
- 計算未調整的用例權值UUCW
- 計算未調整的用例點UUCP
- 計算技術(TCF)和環境因子(ECF) -> TEF
- 計算調整的用例點UCP
- 計算工作量(man - hours)多少人多少工時 (人天)
6步驟之一UAV計算
Actor 角色權值定義:
序號 | 複雜度級別 | 複雜度標準 | 權值 |
---|---|---|---|
1 | simple | 角色透過API 與系統互動 | 1 |
2 | average | 角色透過協議與系統互動 | 2 |
3 | complex | 使用者透過GUI與系統互動 | 3 |
首先分為了三個等級,simple、average、complex,其中透過API互動是最簡單的,
就是簡單的介面互動,而透過協議的就複雜一些,這裡的協議可能包含了如websocket、rpc(protobuf)或者
什麼其它的約定協議.
而最複雜的當屬透過介面化的形式進行互動,GUI,比如遊戲裡點選某個按鈕或者桌面版本的封裝程式介面化的操作.
6步驟之二UUCW計算
Use Case 用例權值定義
序號 | 複雜度級別 | 事務/場景個數 | 權值 |
---|---|---|---|
1 | simple | 1-3 | 5 |
2 | average | 4-7 | 10 |
3 | complex | >7 | 15 |
首先還是三個等級,用例中事務/場景個數的多寡來分別對應這三個等級,
比如有個角色ROLE1中的操作要進行A、B、C項基本操作,那麼就是simple好了,
但比如還有個角色ROLE2中的操作的場景和要管理的事情多一些,除了ABC基本操作,
還有進行AB的某些彙總計算,C中的某些資料稽核,或者AC之間資料的核對確認,那麼
就可以歸類為average中等級別了.
最複雜的complex等級一般可能見於ROLE_ADMIN,即一些系統終端最終維護角色、
或者對系統要進行全盤操作的角色,那麼>7個事務或場景是很有可能的.
6步驟之三UUCP計算
前面兩個步驟已經根據角色&用例來計算了UAW和UUCW,
那麼這一步就是將未調整的角色權值+未調整用例權值簡單加法計算得出UUPC即未調整用例點
比如如圖中計算
UAW+UUCW = 25+85 = 110
6步驟之四TCF、ECF計算
TCF: Technical Complexity Factor
這裡面一共有13項TCF,每個TCF對應一個權值,其中權值最小為0.5,最大為2.0,即這項技術因子的難度是減半了還是成倍了.而最終進行彙總並與0.01相乘再加上係數0.6.
其中公式中的Value(i)是該技術因子影響的等級,0表示無影響,3表示影響一般,5表示影響是很強的(不能取其它值)
序號 | 技術因子 | 說明 | 權值 |
---|---|---|---|
1 | TCF1 | 分散式系統 | 2.0 |
2 | TCF2 | 效能要求 | 1.0 |
3 | TCF3 | 終端使用者使用效率 | 1.0 |
4 | TCF4 | 內部處理複雜度 | 1.0 |
5 | TCF5 | 複用程度 | 1.0 |
6 | TCF6 | 易於安裝 | 0.5 |
7 | TCF7 | 系統易於使用 | 0.5 |
8 | TCF8 | 可移植性 | 2.0 |
9 | TCF9 | 系統易於修改 | 1.0 |
10 | TCF10 | 併發性 | 1.0 |
11 | TCF11 | 安全功能特性 | 1.0 |
12 | TCF12 | 為第三方系統提供直接系統訪問 | 1.0 |
13 | TCF13 | 特殊的使用者培訓設施 | 1.0 |
我們從第一個
- TCF1開始敘述,TCF1分散式系統,這裡其實也是根據經驗來講,比如是簡單的微服務、一個閘道器搞定,那麼x3,如果是多業務閘道器包含多子系統模組那麼x5.
- TCF2效能要求簡單就是說有幾項效能要求,比如客戶要很高的系統響應速度,要能快速處理完成非常大數量資料的計算並持久儲存結果等等……效能要求沒有,就是x0,要求是比較普遍的x3,要求是非常嚴苛的則x5.
- TCF3這個要考慮使用者使用的效率,其對應的也可能有如系統操作日誌多寡、使用者運算元據多寡的內容、細想一下使用者使用效率,如果開發出來這個系統,終端使用者不使用(哈哈),那麼x0,使用頻率是一般的x3,使用頻率很高,並且很多人員都會使用,那麼x5.
- TCF4說明了系統處理複雜度,可以認為有沒有複雜的業務,有但一般x3,有但非常複雜x5,簡單如一沒有複雜業務只是CURD則x0.
- TCF5則說明是否有相關的以往專案、程式碼、資料可以拿來及時複用,如果粘過來系統稍微一改馬上可以交付,那麼x5,沒有一點可複用的跡象,x0,有一部分可複用的則x3.
- TCF6權值較小為0.5,其實就是說是否易於安裝,現在這個基本都是必須要求的,那麼x3,如果有嚴格的易於安裝的情形x5.
- TCF7也是0.5的權值,系統易於使用這樣的技術因子放在現在也是必須的,基本x5即可.
- TCF8說明可移植性,因為現在很多程式語言都可以跑在不同的系統,可以說移植難度低了,但是不妨會有轉換語言、切換伺服器、更換資料庫型別、多端訪問的問題,比如系統要有PC端、要有IOS、Android端、那麼其實從開發效率上來講是會降低的,所以如果可能有切換伺服器、更換資料庫型別、多端訪問的要求、x5,但是隻是多端訪問x3,否則沒有以上問題x0.
- TCF9說明系統是否易於修改,也就是程式碼的可擴充套件性高不高,程式碼質量如何,歸結下來就是說系統給到其它團隊好不好做新功能或維護,一般這項也是必須的x5即可.
- TCF10併發性,系統少數人用基本x0,有人用,有併發問題但不多x3,併發量巨大x5.
- TCF11安全性基本也是中大型軟體必須的x5,如果沒有太嚴苛的安全要求x3.
- TCF12是說明該系統還要對外提供介面,多的話x5,不多x3,不提供對外介面x0.
- TCF13為特殊的使用者培訓設施,比如系統是對接了一些硬體的,如掃臉、機器人等,並要求進行培訓則x5,沒有x0.
ECF: Environment Complexity Factor
技術需要技術攻關,團隊需要士氣和經驗,這個ECF是專案成敗的另一面.
同樣也是x0無關(無難度、無兼職人員、無UML經驗等)、x3表示一般,x5表示非常高、多、好(團隊成員都具備這種能力).
序號 | 環境因子 | 說明 | 權值 |
---|---|---|---|
1 | ECF1 | UML精通程度 | 1.5 |
2 | ECF2 | 系統應用經驗 | 0.5 |
3 | ECF3 | 物件導向經驗 | 1.0 |
4 | ECF4 | 系統分析員能力 | 0.5 |
5 | ECF5 | 團隊士氣 | 1.0 |
6 | ECF6 | 需求穩定性 | 2.0 |
7 | ECF7 | 兼職人員比例高低 | 1.0 |
8 | ECF8 | 程式語言難易程度 | 1.0 |
最終計算ECF彙總和後乘以-0.03最後加1.4.
6步驟之五UCP計算
UCP是調整的用例點,之前是未調整的用例點UUCP,
那麼調整公式為:
UCP = UUCP ✖️ TCF ✖️ ECF
即(未調整的功能點)x(技術影響因子)x(環境影響因子)
上圖給出的示例是 110x1.02x0.785=88
可以看出技術因素太難攻克,則技術影響越大,工時耗時更久,環境影響因子越大(比如團隊士氣低下、無相關物件導向經驗等),最終調整的用例點則會變得更大,則說明耗時會更久.反正,技術難度影響小,人員經驗高對應環境影響變低,調整的用例點更小更少.
PF為每個用例點的消耗工時,這裡PF也需要再另行計算估計.
最終用例點估算專案人天的計算公式:
UCP ✖️ PF
例子給出的調整後的用例點是88,PF為20,那麼得出1760小時,換算人天為220人天.
最後,220人天除以當時團隊的人員數量,即可得出該專案在該團隊(環境因子也是評估得該團隊)
需要用多少天來完成.
如團隊成員8人,則需要27.5天完成.