招商銀行軟件功能點度量(liàng)實踐
過去幾年,招商銀行(háng)信息技術部在新的(de)金融科技環境下進行自(zì)我顛覆和變革,其中一項重要的變革(gé)就是“精益研發轉型”,轉(zhuǎn)型以聚焦業務價值,關注(zhù)交付質量、速度和整體的IT效能、提(tí)升用戶滿意度、打造生機型的文化氛圍為目標,引入軟(ruǎn)件功能點度量、敏捷、看板、DEVOPS等實踐,形成可預知的穩健開發模式和探索式(shì)的持(chí)續迭代雙模研發和工程管理框(kuàng)架,打造輕型研發流(liú)程。
轉型之初,信息(xī)技術部(bù)就明確提出建立科學的數字(zì)化軟件度量體係是轉型的關鍵之一, 這其中,軟件規模(mó)度量是軟件(jiàn)度量的基礎。圍繞軟件規模構建的進度、成本、質量、效率的指標,可以從多維度反映IT研發的效能情況,用於改進軟件過程(chéng)、提升交付效率、提高交付質量等。我(wǒ)行一直都非常關注軟件規模度(dù)量,從早年研究(jiū)代碼行度量、軟件(jiàn)功能(néng)點(diǎn)度量到轉(zhuǎn)型(xíng)過程(chéng)中敏(mǐn)捷項目的(de)故事點(diǎn)度量。從2013年8月,我行(háng)正式引入谘詢改進與推廣功能點方法以來,軟件功(gōng)能點目前已成為我行主要(yào)的軟件規模(mó)度量單位。
隨著功(gōng)能(néng)點方法的深入應用,我們對於(yú)方(fāng)法的關注點從最開(kāi)始的(de)掌握方法(fǎ)、優化方法,逐步(bù)擴展到如何(hé)擴大應用範圍(wéi),提升使用效率(lǜ),進而提升管理效能。功能點方法應用在招商銀行可以分為以下三個階(jiē)段:
一、 引入(rù)與推廣軟件功能點階段(2013年(nián)-2015年)
我們使用IFPUG的標準功能(néng)點方法和NESMA的快速功能點方法進行度量。由(yóu)於兩種標(biāo)準製定(dìng)的時間比較早,在實際落地應用的過程中,麵臨係統(tǒng)特性因子(GSC)陳舊、默認的複雜度計算不符合研發現狀、係統應用邊界不清晰、部分場景的計數(shù)存在爭議等問(wèn)題。因此在(zài)2013年-2015年期間,主要以優化功能點計數規則、建立功能點計算與審核流程(chéng)、培養專家隊(duì)伍、推廣(guǎng)功能(néng)點度量為主。
■改進標(biāo)準功能點方法,提升複雜度(dù)計算精度:標準功能點的複雜度(dù)計算模型(xíng)是個分段模型,雖然(rán)應用較(jiào)為(wéi)簡單,但(dàn)也會導(dǎo)致一定的誤差。在銀行業(yè)係統中,存在大量的複雜文件和交易。例如,一個複雜的業務對象,可能(néng)涉及幾十個關聯實體,數百字段;一張寬表查詢或者一個複雜的校驗邏輯,也可能涉及數十個邏輯文件,數百甚至上千字(zì)段。但在標準規則下,一個邏輯文件最大為15FP,一(yī)個基本過程最大為7FP,其(qí)度量出的規模與實際情況存在較(jiào)大誤差。因此,在推廣初期,我們和谘詢方(fāng)一起將分段(duàn)模型改為了連續性模型,以降低計算誤差,提升規模估(gū)算(suàn)精度(dù)。
■補充(chōng)項(xiàng)目特性因子(zǐ),增(zēng)強數據的適應度:在功能點方法中(zhōng),有14個針對係統特征的調整因子,可以部分解決係統非功能性需求度量問題,但銀行業(yè)大型項目往往涉及多個係統,多個團隊,除了不同係統的架構及(jí)質量要求(qiú)會對生產率產生較大影響之外,不同(tóng)的項(xiàng)目運行模式也(yě)會導致管理成(chéng)本的變化,進而對生產效率產生影響。為了解決這一問(wèn)題,我們設立了項目級的特性因子,從技術難度、跨團隊開發、跨地域開發等維度調整項(xiàng)目級的軟件功能點規模。
■培養專家隊伍,確保計(jì)算的穩定性:功能點方法雖然有著相對客觀、完備的規則(zé),但由於計數(shù)人(rén)員需要基於對(duì)需求的理解,正確運行相關規則進行功能點計數項的(de)拆(chāi)解(jiě)和分類,一支熟練掌握功能點方法並有豐富實踐的專(zhuān)家隊伍,對於確保功能點計算(suàn)結果的準確和穩定是必不可少的。在這段時間,我行多次組織外部專家對相(xiàng)關人員進行專業培訓和指導,期間(jiān)超過(guò)300人參加了工(gōng)信(xìn)部的(de)“軟件工程造價師”培訓並通過(guò)認證(zhèng)考試。
二、 改進與應用軟件功能點階段(2015年-2018年)
截止2015年底,功能點(diǎn)計算已應用在70%以上的開發類項(xiàng)目,但是由於功能點本身的局限性和銀行係統的複雜性,我們(men)也需要不斷地對規模度量方法進行優(yōu)化完善,補充(chōng)訂製(zhì)規則,提升功能點的覆蓋麵。同時,我們圍繞功能(néng)點構建一(yī)係列的指標,逐(zhú)步應用在軟件過程(chéng)改進和部分團隊的(de)績效考核中,以牽引研發效能提升。本(běn)階段主要措施如下(xià):
■定(dìng)製功能點規則,提(tí)升功能(néng)點的覆蓋麵:
✔數據倉庫係統開發的功能(néng)點計算:由於數倉係統較為複雜,如果按一個係(xì)統計(jì)算功能點(diǎn)與實際研(yán)發(fā)投入相差較遠,誤(wù)差較大,也難以客觀放映數據(jù)倉(cāng)庫係統(tǒng)建設不同時期、不同團(tuán)隊的實際(jì)產出情況。因此,我們將數據倉庫係統按(àn)照ODS層、UDM層、數據集市層、前台展示層分層,每層定製相關的功(gōng)能(néng)點計算規則。
✔用戶體驗開發的功能點計算:近幾年,受(shòu)互聯網企(qǐ)業的衝擊和影響,銀行的係統越來越關注用戶體驗,包括麵向用戶使用係(xì)統的視覺(jiào)效果和(hé)交互效果等,需要IT投入更多開發資源。但是在標注功能點方法中,用戶體驗開發屬於非功能性需(xū)求,不(bú)進行功能規模計數。為了對此類工作進行量化評估,我行在參考IFPUG的SNAP方法基礎上,定製了基於界麵控件及(jí)控件元素的(de)用戶體驗開發規模(mó)度量方法,並通過數據分析,建立了“用戶體驗點”和“功能點”的映射關係,從而將(jiāng)“用戶體驗點”折算為標準功能點,以實現此類工作的量化分析。
■逐步應(yīng)用在管理改進:在功能點度(dù)量覆蓋了大部分的開發類項目上的基礎上,我行初步建立了基於功能點規(guī)模的生產率、人均產能,缺陷密度等指(zhǐ)標(度(dù)量指標示意圖見圖(tú)1),並形成管理基線,通過基線控製,識別異常數據並分析(xī)原因、改進研發過程、預測產能並合理調配(pèi)資源。
圖1:軟件度量指標示意圖
三、 智能化、自動化軟件功能點度量階段(2018年-至今)
自2018年起,隨著“精益研發轉型”的進一步加快,我行IT項目的交付(fù)速度加快,每年交付的項目也大幅增長,2018年的交付項目就超過了6000個,而完全通過人工的方式(shì)度量功能點,既要消耗(hào)大量的人力進行功能點(diǎn)計數,還要(yào)及時審核以保證數據的準確性。因此我們啟動了軟件功能點的智能化度量和自動化(huà)度量(liàng)項目,利用NLP(自然語言處理)、特征工(gōng)程(chéng)、機器學習等方法,嚐試從需求文檔、設計文檔(dàng)、測試文檔等自動抽取功能點計數項,以減少人工投入(rù),提高功能點計(jì)數(shù)的準確性(智能輔助(zhù)計算示意圖見圖(tú)2)。
圖2:智能輔助計算示意圖
■智能化度量軟件功能點:采用兩種方式構建模型:分別是語義分析及文本挖掘抽取功能點計數(shù)項和通過序列標注方式抽(chōu)取功能點計(jì)數項。目前兩個模型的實驗結果良好(hǎo),交易功能識別的準確率和召回率均超過70%,數據功(gōng)能識別的準確率和召回率超過40%,並已開始在敏捷項(xiàng)目中試用。
■自動化度量軟(ruǎn)件功能點:此外我們還研究了從代碼中自動(dòng)提取功能點計數項的可能性。此項工(gōng)作的基本(běn)原理是從代碼中提取UML用(yòng)例圖、類圖,構建UML圖與功能(néng)點映射關係,並自動(dòng)計算功能點。
軟件功能點數據目前已成(chéng)為我行實(shí)現研發過程可視化並持續改進(jìn)的基礎(chǔ)數據,是精益研發轉型的關鍵工作。隨著技術和業務的高速發展,軟件功能點度(dù)量(liàng)麵臨的場景也越來越多,例如大數據技術下的軟件功能點(diǎn)度量、雲平台上的軟件功能點度量等。後(hòu)續還需要持續地沿著“提升軟件功(gōng)能點度量(liàng)適用性”和“提升軟件功能點度量效率”兩個目標,持續完善軟件規模度量方(fāng)法及過程。
某大型(xíng)國有銀(yín)行——成本度量體係(xì)建(jiàn)設應用案例分析
組織簡(jiǎn)介>>>
l 單位類型:內部乙方
l 所屬行業:金融
l 應(yīng)用場景(jǐng):內部項目管理
l 應用部門簡介:該(gāi)行是大型國有銀行,擁有非常(cháng)高的信息化程(chéng)度,是金融領域的代表性企業(yè)。該行軟件中心是(shì)科技體係建設(shè)的重要組成部分(fèn),負責該行(háng)應用軟件的統(tǒng)一管理、開發、技術支持等。該銀行的(de)信息化建(jiàn)設以自主開發為主,擁有(yǒu)獨立的研發團隊,團隊規模有(yǒu)數千人,並處在快速發展過程中。
麵臨問題>>>
1、如何量化研發部門的(de)研發產出和價值:
隨著該行組織級量化管理的不斷提升,高層領導(dǎo)對信息化管理提出了新的要求,金融信息(xī)化每年投入了大量的人力,如何能客觀地量(liàng)化(huà)相應的產出?
2、傳統功能點方法(IFPUG)難以應用在項目早期:
2008年(nián)該行(háng)軟件中心引入的IFPUG傳統功能點,主要在項目需求規格說明書確定之後使用。隨著中心管理(lǐ)流程的變化,需要在項目早期立(lì)項階段就要(yào)進行科學估算,而傳統的功能點方法(fǎ)無法在項目早期使用。
由於產品類型複雜、,傳統功能點既有調整因子難以充分反映不同係(xì)統之間的差異,導致不同估算結果有較大偏差(chà)。
3、估算及(jí)評審人(rén)員能力(lì)尚待(dài)提高
內部的估算專(zhuān)家團隊(duì),由於項目背景經驗不同,不同專家在對功能點及估算方法的具體理解,有著一定的偏差(chà)。同時由於專家團隊人員(yuán)較多,能力水平(píng)層次不(bú)齊,每年(nián)實踐估算機會較少,整體估算技能及實踐水平尚待提高。
實施方案>>>
在麵臨上述問題的同時,該組(zǔ)織主要有(yǒu)以下三方麵特(tè)點:
1. 有較(jiào)好的(de)量化管理基礎,積累了大量(liàng)曆史數據;
2. 研發團隊規模大(dà)、質量要求高;
3.有長期(qī)的功能(néng)點方法(fǎ)實踐(jiàn)經驗(yàn),同時也形成了一些錯誤(wù)認識,積累了一些管理難題。
針對上述特點及麵臨(lín)的問題,該組織過程(chéng)改進(jìn)團隊(duì)在外部專家的指導下製訂了以下策略:
1. 深(shēn)入現狀調研,梳理曆史項目
鑒於該銀行有一定的功能(néng)點方法理論基礎(chǔ)及實踐經驗,首(shǒu)先需要充分了解用戶功能點方法的應用基礎,並用快速功能點方法對曆史項目數(shù)據進行梳理。
2. 成本度量方法優化
首先,基於行業標準和近700個項目曆史(shǐ)數據進(jìn)行分析研究,以獲得該銀行的研發基(jī)線數據;其次,在功能點方法深化應用的同時,提出(chū)適合該行(háng)項目的定製規則,有(yǒu)效平衡宏觀量化管理需求(qiú)與微觀場景合理計數的衝突,保證定製的計數規則盡可能適用於全項目和場景,同時計數的結果依然具備客觀性並可橫向比較(jiào),以保證數據的有(yǒu)效性;最後,根據用戶項目特點及曆史數據對方法進行驗證和持續改進。
3. 全麵提(tí)升人員能力,深(shēn)化功能點方法(fǎ)應用:針對該行項目管理條線(xiàn)、研發條線、測試條線的人員集中(zhōng)培訓(xùn)指(zhǐ)導,在對相關人(rén)員開展培訓並要求持證上崗的同時,通過交叉評審加深對關鍵知識點的理解並形成常(cháng)見問題解答知識庫,不斷修訂和豐富功能點方(fāng)法應用指南。
效(xiào)果評價>>>
1、引入快速(sù)功能點,解決了項目早期(qī)估算難題(tí)
在軟(ruǎn)件中心原有的功能點體係中(zhōng),引入並建立了適合軟件中心項目早期立項階段的快(kuài)速功能點估算標準,彌補了傳統功能點在項目(mù)早期估算不足的難(nán)題,完善了項目整個周期的估算。
2、對功能點方法進行優化(huà),滿足中心的量化管理要求
通過對已有的功(gōng)能點估算的方(fāng)法、過程、數據進行梳理、分析,製定了優化方(fāng)案,建立(lì)了適(shì)合項目不同階段(duàn)、不同產品線、不同(tóng)應用場景的功能點方法應用指南。
3、初步建立從功能(néng)點到工作量的估算模型
通過對已有曆史項目數據進行分析,初步建立了以數據分析為基礎的(de)針對不同產品(pǐn)線的估算(suàn)模型。定製了功能點詳細計算規則,包括數(shù)據倉庫項目的計算規則、17項新提出的特性因子等。
4、培養認證(zhèng)一(yī)批估算專家人(rén)才,提升了(le)專家團隊的(de)技能水平
通過對項目經(jīng)理、業務主管、過程改進人員、研發骨幹等炒股400人進行(háng)了統一的標準化估算方法培訓,並(bìng)要求項目經理通過軟件工程造價師人證方可(kě)上崗,為(wéi)軟件成本估算方法落(luò)地奠定了(le)良好的人(rén)才基礎。