唐海濤 黃絲米
1. 中國電建集團(tuán)華東勘測設(shè)計研究院有限公司 浙江 杭州 311122;
2. 浙江華東工程數(shù)字技術(shù)有限公司 浙江 杭州 311122;
3. 浙江省工程數(shù)字化技術(shù)研究中心 浙江 杭州 311122
對于企業(yè)信息系統(tǒng)管理而言,前期的任務(wù)劃分和任務(wù)收發(fā)是尤為重要的,在項目初期將整個系統(tǒng)的任務(wù)規(guī)劃好,可以使得后面的工作開展更為順利?;诖耍疚奶岢隽艘环N基于NESMA方法拆解功能點(diǎn)的任務(wù)自動組包與收發(fā)包方法及實現(xiàn)。它按照NESMA方法對軟件項目進(jìn)行功能拆解[1],最大程度將功能拆解為最有意義的最小活動單元,計算出工作量后以任務(wù)的形式進(jìn)行發(fā)包,承包方完成工作后,發(fā)包方按照拆分功能進(jìn)行驗收確認(rèn)。該方法可以幫助企業(yè)更好地對任務(wù)進(jìn)行自動組包和收發(fā)包,基于NESMA方法對功能進(jìn)行拆分可以最大程度的將功能點(diǎn)的顆粒度變細(xì),這對于后期任務(wù)的分工和結(jié)算幫助很大。
NESMA方法是荷蘭軟件度量協(xié)會(Netherlands Software Metrics Association)于1989年提出的,該方法是從用戶角度來估計規(guī)模,通過量化與外部數(shù)據(jù)輸入、輸出或文件類型等有關(guān)的功能性處理信息,來度量軟件規(guī)模的方法,不去考慮軟件的具體實現(xiàn)[2],NESMA方法作為一種功能規(guī)模測量方法已經(jīng)形成電子行業(yè)標(biāo)準(zhǔn):SJ/T 11619-2016。NESMA方法的操作步驟為:
第一步:識別待估算應(yīng)用程序的邊界和范圍。
第二步:識別和度量各類型的數(shù)據(jù)功能,主要包括兩個邏輯文件:內(nèi)部邏輯文件和外部接口文件。內(nèi)部邏輯文件為本系統(tǒng)中維護(hù)的數(shù)據(jù),外部接口文件是由其他外部系統(tǒng)維護(hù),在本系統(tǒng)中引用的數(shù)據(jù)。
第三步:識別和度量各類型的業(yè)務(wù)功能,主要包括三個基本過程:外部輸入、外部輸出和外部查詢。外部輸入是對數(shù)據(jù)進(jìn)行維護(hù)或者改變系統(tǒng)狀態(tài)/行為的事務(wù);外部輸出為對數(shù)據(jù)加工后呈現(xiàn)或輸出的事務(wù);外部查詢?yōu)閷σ延袛?shù)據(jù)直接呈現(xiàn)或輸出的事務(wù)。
第四步:設(shè)置規(guī)模變更因子和規(guī)模調(diào)整因子。
第五步:估算軟件規(guī)模、工作量(人天)和成本。
在NESMA方法理論中,軟件系統(tǒng)功能點(diǎn)是可以作為標(biāo)準(zhǔn)來衡量軟件規(guī)模的[3],功能拆解的顆粒度越細(xì),對于后期任務(wù)的分工和結(jié)算幫助越大,此時功能點(diǎn)就可以作為標(biāo)準(zhǔn)的計量單位,對輔助計算效率、成本有很大作用[4-5]。
對于信息系統(tǒng)的項目管理來說,項目前期的任務(wù)管理和工作計劃的制定是關(guān)鍵,任務(wù)的流程和工作量的計劃的定義決定了項目后期的工作開展的順利程度。但是,在現(xiàn)實工作中,軟件系統(tǒng)每個功能的復(fù)雜程度不一樣,任務(wù)組包很難做到均勻分配,這樣會導(dǎo)致工作量評估不準(zhǔn)確,發(fā)包工作確認(rèn)出現(xiàn)多次反復(fù)的情況。
目前項目的組包和任務(wù)收發(fā)包主要采用文檔記錄和人工操作的方法,這種方法存在以下不足:①拆解任務(wù)僅憑經(jīng)驗缺少系統(tǒng)方法,導(dǎo)致對任務(wù)包拆解顆粒度粗,收包驗收任務(wù)時出現(xiàn)功能遺漏的情況;②在對工作量進(jìn)行預(yù)估時一般采用人工計算的方式,導(dǎo)致計算結(jié)果不夠精確,在最終收包時容易出現(xiàn)結(jié)算紛爭;③當(dāng)承包方對任務(wù)功能點(diǎn)和工作量提出爭議時,采用傳統(tǒng)方法來調(diào)整數(shù)據(jù)任務(wù)量大,時間成本高。
鑒于上述情況,本文提出了一種基于NESMA方法拆解功能點(diǎn)的任務(wù)自動組包與收發(fā)包方法及系統(tǒng)。采用NESMA方法對軟件系統(tǒng)進(jìn)行功能拆解,主要原則是把用戶需求組合或分解為對用戶最有意義的最小活動單元,再根據(jù)設(shè)置的參數(shù)估算軟件規(guī)模、工作量(人天)、成本,將拆解的功能點(diǎn)按照系統(tǒng)模塊以任務(wù)包的形式自動進(jìn)行發(fā)包。承包方確認(rèn)無誤后投入人員開展工作,工作完成后發(fā)包方依照拆解功能點(diǎn)進(jìn)行功能驗收,最終根據(jù)結(jié)果雙方進(jìn)行結(jié)算?;贜ESMA方法拆解功能點(diǎn)的任務(wù)自動組包與收發(fā)包設(shè)計方案包括如下步驟:
基于NESMA方法對項目的功能點(diǎn)進(jìn)行任務(wù)組包,包括功能拆解和評估工作量,其中:
3.1.1 按照NESMA方法對軟件系統(tǒng)的功能進(jìn)行拆分并完成工作量的評估,主要原則是把用戶需求組合或分解為對用戶最有意義的最小活動單元。
拆解功能主要分為兩步:
第一步:識別的用戶需求和已確定的范圍及邊界,按照功能統(tǒng)計范圍內(nèi)所有需求集合,一旦確定范圍就可以定義邊界;
第二步:識別和度量各類型的數(shù)據(jù)功能和業(yè)務(wù)功能,主要分為兩個邏輯文件和三個基本過程:內(nèi)部邏輯文件ILF、外部接口文件EIF、外部輸入EI、外部輸出EO、外部查詢EQ。
3.1.2 設(shè)置參數(shù)用于工作量的計算,參數(shù)包括工作量調(diào)整參數(shù)、工作量比例、成本單價。工作量調(diào)整參數(shù)指各個角色的預(yù)估生產(chǎn)率,工作量比例指各個角色的工作占比,成本單價為各個角色的單日工作成本。
(1)工作量調(diào)整參數(shù):研發(fā)工程崗位包括需求分析、設(shè)計開發(fā)、系統(tǒng)測試、運(yùn)維實施的每個崗位都有各自的生產(chǎn)率C(FP/人日),根據(jù)項目實際情況設(shè)置各個崗位的生產(chǎn)率。比如:設(shè)置需求分析崗位的預(yù)估生產(chǎn)率為10FP/人日,設(shè)計開發(fā)崗位的預(yù)估生產(chǎn)率為2FP/人日,系統(tǒng)測試崗位的預(yù)估生產(chǎn)率為10FP/人日,運(yùn)維實施崗位的預(yù)估生產(chǎn)率為15FP/人日。
(2)工作量比例:設(shè)置研發(fā)過程占總工作量的比例。比如:項目管理工作站總工作量的10%,研發(fā)工作占總工作量的85%,質(zhì)量保證工作占總工作量的2.5%,其他工作占總工作量的2.5%。
(2)成本單價:設(shè)置各個崗位的成本單價(元/人日)。比如:項目管理崗位成本單價為1300元/人日,所有研發(fā)工程崗位成本單價為1250元/人日,質(zhì)量保證崗位成本單價為1100元/人日。
3.1.3 評估工作量,根據(jù)設(shè)置的參數(shù),按照NESMA方法估算任務(wù)包的工作量(人天)、成本。
3.1.4 對評估完成的功能點(diǎn)和工作量進(jìn)行任務(wù)組包,形成任務(wù)包。
基于步驟一中任務(wù)包進(jìn)行發(fā)包,包括任務(wù)包確認(rèn)以及投入人員分配。圖1為基于NESMA方法拆解功能點(diǎn)的任務(wù)發(fā)包的流程圖。承包方收到任務(wù)后,對工作量和成本進(jìn)行確認(rèn),確認(rèn)無誤后開始分配投入人員,投入人員按照功能為基礎(chǔ)開展工作。若承包方對工作量存在異議,則返回發(fā)包方對參數(shù)進(jìn)行修改調(diào)整。
圖1 基于NESMA方法拆解功能點(diǎn)的任務(wù)發(fā)包的流程圖
承包方按照任務(wù)包中的功能開展工作,依次完成功能,并內(nèi)部進(jìn)行驗證。
基于功能點(diǎn)進(jìn)行任務(wù)收包,發(fā)包方收到承包方任務(wù)完成的信息后,對已交付的軟件系統(tǒng)的所有功能點(diǎn)進(jìn)行驗收,圖2是基于NESMA方法拆解功能點(diǎn)的任務(wù)收包的流程圖。在開始進(jìn)行驗收后,發(fā)包方會根據(jù)功能點(diǎn)列表,依次驗收功能。當(dāng)單條功能點(diǎn)驗收結(jié)果為不通過時,對該點(diǎn)進(jìn)行記錄;驗收結(jié)果為通過時,直接跳轉(zhuǎn)到下一條功能點(diǎn)進(jìn)行驗證。當(dāng)前整個系統(tǒng)驗證完成后,會通知承包方對不通過的功能列表進(jìn)行整改,直至承包方整改完成并進(jìn)行自驗。所有的功能點(diǎn)整改完成,確認(rèn)無誤后,根據(jù)之前預(yù)估的軟件規(guī)模、工作量(人天)、成本雙方進(jìn)行結(jié)算。
圖2 基于NESMA方法拆解功能點(diǎn)的任務(wù)收包的流程圖
根據(jù)上一章節(jié)的設(shè)計方案實現(xiàn)了基于NESMA方法拆解功能點(diǎn)的任務(wù)自動組包與收發(fā)包系統(tǒng),該系統(tǒng)主要包括:功能拆解模塊、工作量評估模塊、發(fā)包確認(rèn)模塊和收包驗收模塊幾大模塊。各模塊具體功能詳細(xì)介紹如下:
功能拆解模塊:用于對軟件系統(tǒng)的需求進(jìn)行功能拆解,根據(jù)需求內(nèi)容按照模塊、功能和類別進(jìn)行劃分。按照NESMA方法將功能分為:內(nèi)部邏輯文件ILF、外部接口文件EIF、外部輸入EI、外部輸出EO、外部查詢EQ五種類別。
工作量評估模塊:用于對發(fā)包工作量評估計算,其中包括:①參數(shù)設(shè)置模塊:主要是對NESMA方法中涉及的參數(shù)進(jìn)行賦值,便于后續(xù)工作量的計算。參數(shù)包括:工作量調(diào)整參數(shù)、工作量比例、成本單價。②工作量估算模塊:系統(tǒng)根據(jù)功能點(diǎn)列表數(shù)據(jù)及參數(shù)設(shè)置的基礎(chǔ)數(shù)據(jù)采用NESMA方法計算整個任務(wù)包的工作量。
發(fā)包確認(rèn)模塊:用于發(fā)包方和承包方對任務(wù)包功能和工作量的確認(rèn)。
收包驗收模塊:用于發(fā)包方對任務(wù)包中的功能進(jìn)行驗收。
該系統(tǒng)已投入使用并幫助公司一百多個項目完成質(zhì)量提升,圖3為基于NESMA方法拆解功能點(diǎn)的任務(wù)自動組包與收發(fā)包系統(tǒng)附圖。
圖3 基于NESMA方法拆解功能點(diǎn)的任務(wù)自動組包與收發(fā)包系統(tǒng)附圖
文中主要介紹了基于NESMA方法拆解功能點(diǎn)的任務(wù)自動組包與收發(fā)包方法及實現(xiàn)。對于信息化系統(tǒng)而言,采用NESMA方法可以將復(fù)雜的需求最大程度的拆解為最有意義的最小活動單元,此時功能點(diǎn)是一個可以作為標(biāo)準(zhǔn)的計量單位,功能點(diǎn)的多少代表著軟件的規(guī)模大小,也很好地反映出軟件的復(fù)雜程度。通過拆解的功能點(diǎn)可以更合理的計算出人力成本和工作量,計算出工作量后以任務(wù)的形式進(jìn)行發(fā)包,承包方完成工作后,發(fā)包方按照拆分功能進(jìn)行驗收確認(rèn)。該方法可以幫助企業(yè)更好地對任務(wù)進(jìn)行自動組包和收發(fā)包,對于后期任務(wù)的分工和結(jié)算幫助很大,功能點(diǎn)作為標(biāo)準(zhǔn)的計量單位,對輔助計算效率、成本有很大作用。