怎么用功能點來估算工作量:NESMA功能點估算法(上)
導(dǎo)語:對于產(chǎn)品人尤其是沒有開發(fā)經(jīng)驗的產(chǎn)品人來說,在評估產(chǎn)品工作量時往往會過度聽從開發(fā)人員的預(yù)估,導(dǎo)致產(chǎn)品時間安排不夠合理。而且開發(fā)人員評審后大致預(yù)估的時間會存在較大出入,因而對于最熟悉這個產(chǎn)品細(xì)節(jié)的產(chǎn)品經(jīng)理來說,自己來直接估算開發(fā)工作量就顯得十分有“優(yōu)勢”了,至少再去和開發(fā)對線也不至于完全處于被動地位。
一、什么是功能點,功能點估算有什么用?
對于一個軟件來說,功能點是一個可以作為標(biāo)準(zhǔn)的一個計量單位,功能點的多少代表著軟件的規(guī)模大小,那么有了一個同一的量級的表現(xiàn)后,不同產(chǎn)品或者功能通過功能點來表示,就可以很好地反饋出產(chǎn)品或者功能的復(fù)雜程度,同時我們利用功能點來輔助計算效率、成本等也有很大作用。
使用禪道作為項目管理工具的小伙伴,也會在提需求的板塊,看到有功能點的錄入要求,這也是作為項目管理中,工作量的估算的重要性。
二、功能點估算方法與基本過程
功能點的估算方法有IFPUG和NESMA等,下面主要是介紹NESMA功能點估算法,NESMA估算法更多的在項目前期,可以快速的利用邏輯文件,給出預(yù)估的功能點數(shù)量,起到較好的指導(dǎo)作用。
NESMA估算法有三種類型的功能點估算,包括:指示功能點計數(shù)、估算功能點計數(shù)、詳細(xì)功能點計數(shù);分別對應(yīng)項目的前期,中后期的功能點估算需求,同時估算出來的功能點也是越來越細(xì)化和精準(zhǔn)。當(dāng)然操作難度和復(fù)雜度也是越來越高。
對于一般性的產(chǎn)品而言,我們主要是使用前兩種(指示功能點計數(shù)、估算功能點計數(shù))估算方法即可,兩種方法的主要區(qū)別就在于計算公式的不同,一個粗放,一個則較精細(xì),兩種都可以使用,可以根據(jù)自身項目的具體要求和所處階段來進(jìn)行選擇。
指示功能點計數(shù):ILF*35+EIF *15
估算功能點計數(shù):UFP=(7* ILF+5* EIL+4* EI+5* EO+4* EQ)
下面就來介紹上面的公式中用到的因子以及查找方法。
三、兩個邏輯文件與三個基本過程
上面的估算方法中提到的ILF、EIF、EI、EO、EQ代表著什么呢?只要弄明白了這幾個計算因子,那么帶入公式就可以很快知道我們的這個產(chǎn)品或者功能的軟件規(guī)模有多大了,所需多少開發(fā)量,也就有了較為準(zhǔn)確的參考標(biāo)準(zhǔn)。
1. 兩個邏輯文件:ILF和EIF
首先我們理解一下邏輯文件是個什么東西。功能點估算法,我們是從產(chǎn)品的角度,用戶的視角來進(jìn)行估算的。那么邏輯文件的概念,也就是從用戶的視角出發(fā),來進(jìn)行定義的一類對用戶有意義的信息。
舉個栗子:釘釘?shù)娜粘坦δ苤?,我們可以組織日程,發(fā)布日程約會,預(yù)定會議室等。而這里面涉及到的邏輯文件,就會有 會議通知信息、會議室預(yù)定信息 等“邏輯文件”,“邏輯文件”對于用戶視角來說,代表著一種業(yè)務(wù)需求的信息或數(shù)據(jù),業(yè)務(wù)流程要進(jìn)行,則必然離不開這部分的各種“文件”。另一個角度來說,系統(tǒng)就是由文件與交互邏輯組成的。
1)ILF
代表的是內(nèi)部邏輯文件(內(nèi)部接口文件:在本系統(tǒng)維護(hù)的業(yè)務(wù)和數(shù)據(jù)),如上面例子的釘釘?shù)娜粘坦δ苤校瑫h通知信息就是一個ILF(內(nèi)部邏輯文件),也可以理解為會議通知這個動作,所產(chǎn)生的信息內(nèi)容。發(fā)送會議通知是這一功能流程的交互過程,而會議通知信息,則是這個流程中的內(nèi)部邏輯文件(ILF)。
2)EIF
代表的是外部邏輯文件(外部接口文件:本系統(tǒng)引用,由其它系統(tǒng)維護(hù)的業(yè)務(wù)數(shù)據(jù)),如上面舉例的釘釘日程功能,假設(shè)如果有另外的系統(tǒng)(假設(shè)是一個會議室預(yù)訂系統(tǒng))來專門運營會議室預(yù)定的,在查詢會議室預(yù)定情況時,就需要請求外部系統(tǒng)的接口,來獲取會議室的預(yù)定情況,那么這種情況下,會議室預(yù)定信息就是一個EIF(外部邏輯文件)。
總的來說,查找邏輯文件的過程,需要站在用戶的角度,查找業(yè)務(wù)流程中涉及到的邏輯文件,然后區(qū)分是ILF還是EIF。
這里需要注意的點是:邏輯文件一定是從用戶的角度出發(fā)定義的,任何因為技術(shù)問題需要增加的文件內(nèi)容都不能算作ILF或者EIF。這里有點甲方的意思,我需要發(fā)送一則通知,我不會管你因為發(fā)送這則通知需要增加多少個工作表才能完成,你做工作表的工作量是不算入一個軟件的功能點的。
那么到這里,如果是對于使用指示功能點計數(shù)方法估算功能點數(shù)量的情況來說,已經(jīng)可以完成工作量的初步估算工作了(ILF*35+EIF *15),對于項目前期來說,這個功能點計算結(jié)果,已經(jīng)可以提供較為可靠的工作量參考。
2. 三個基本過程:EI、EO、EQ
對于需要較為精細(xì)的功能點估算的,或者是一個較小的功能模塊的開發(fā)需求,則需要繼續(xù)進(jìn)行拆分,尋找每個邏輯文件里面的基本過程,也就是我們上文說到的交互邏輯,不同的交互邏輯的工作量不同,比如查找就常常比修改的工作量小一些。
下面我們就來繼續(xù)了解三個基本過程:
- 外部輸入EI:對數(shù)據(jù)進(jìn)行維護(hù)或者該改變系統(tǒng)狀態(tài)/行為的事物(增刪改)
- 外部輸出EO:對數(shù)據(jù)加功工后呈現(xiàn)或輸出的事物(操作數(shù)據(jù))
- 外部查詢EQ:對已有數(shù)據(jù)直接呈現(xiàn)或輸出的事物(對數(shù)據(jù)不處理,即查詢)
簡單來說:
- EI就是增刪改操作,比如發(fā)送會議通知,提交會議預(yù)定申請等,對現(xiàn)有的邏輯文件進(jìn)行了操作;
- EO是對數(shù)據(jù)加工后展示的過程,比如一些數(shù)據(jù)的展示;
- EQ是一些查詢操作,他和EO的區(qū)別在于EO的數(shù)據(jù)規(guī)模是不確定的,更偏向于是實時更新的數(shù)據(jù)規(guī)模,按照輸入的條件整合后輸出展示,EQ則是預(yù)設(shè)的穩(wěn)定的數(shù)據(jù)規(guī)模,不需要進(jìn)一步處理而直接輸出的基本過程。
如上面的預(yù)定會議的例子中,會議通知查看就是一個EQ(對現(xiàn)有數(shù)據(jù)的查詢并直接輸出)。找出了產(chǎn)品/功能中的所有邏輯文件以及其中的基本過程之后,就可以直接放入公式中進(jìn)行計算,從而得出該產(chǎn)品/功能的功能點數(shù)量,那么軟件規(guī)模就大概有了一個單位比較了。
四、適用范圍和階段
使用NESMA估算功能點的方法,可以比較準(zhǔn)確的估算出產(chǎn)品的功能點數(shù)量,并反饋開發(fā)工作量,但是這個估算法也是存在一定的前提的,比如只有指定類型的產(chǎn)品使用此方法得出的功能點才能真實反映工作量,而其他產(chǎn)品則不適用。
比如以數(shù)據(jù)和交互處理為中心的;以功能多少為主要造價制約因素的(如電子政務(wù),業(yè)務(wù)管理系統(tǒng),辦公自動化,ERP等系統(tǒng))適用NESMA估算法;而包含大量復(fù)雜算法;創(chuàng)意型軟件;以非功能性需求為主(如視頻和圖像處理軟件,殺毒軟件,網(wǎng)絡(luò)游戲,性能優(yōu)化任務(wù)等)等則不適用NESMA估算法。
因此在進(jìn)行產(chǎn)品功能點估算的時候,需要先區(qū)別自己做的產(chǎn)品類型,根據(jù)實際情況進(jìn)行工作量的估算。
本文由 @大飛Eric 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自Unsplash,基于CC0協(xié)議
大神你好。請教一下,這個公式算出來的工作量是工時還是工天呢?
是工時哈,根據(jù)算出來的總工時除以人數(shù),再換算成工天就可以了
準(zhǔn)確來說應(yīng)該說計算出來的是工作量,也就是軟件規(guī)模,實際工時需要根據(jù)公司制定或者行業(yè)中的相關(guān)開發(fā)效率,來估算出來。比如假設(shè)估算出來規(guī)模是100,團(tuán)隊的研發(fā)效率為5 小時/功能點,那么需要完成的工時則是500小時
您好 估算功能點計數(shù):UFP=(7* ILF+5* EIL+4* EI+5* EO+4* EQ),公式中的數(shù)值代表的是什么含義呢,是怎么計算得來的,還有可以舉例說明一下計算的方式嗎?
公式中的數(shù)值其實都是根據(jù)估算方法論里面給定的一些指定數(shù)值來的,這篇中我還沒介紹到復(fù)雜程度的影響,這些數(shù)值默認(rèn)都是中等復(fù)雜度的值,簡單來說其實就是固定的計算規(guī)則。計算方式的話就是通過文中的一些技巧找到對應(yīng)的邏輯文件以及交互過程,代入公式中就可以計算出來~