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