馬 波
基于數(shù)據(jù)驅(qū)動(dòng)的迭代式軟件開發(fā)交付研究
馬 波
(陽(yáng)泉師范高等??茖W(xué)校 信息技術(shù)系,山西 陽(yáng)泉 045000)
為了提高監(jiān)控軟件迭代的交付性能,文章提出了一種數(shù)據(jù)驅(qū)動(dòng)的新方法,用以預(yù)測(cè)軟件迭代的交付能力,為項(xiàng)目管理者提供自動(dòng)化支持。該方法提取了歷史項(xiàng)目迭代和迭代中問(wèn)題的特征,并使用統(tǒng)計(jì)聚合、詞袋和基于圖的技術(shù)將迭代問(wèn)題特征進(jìn)行組合來(lái)表征迭代。使用多個(gè)真實(shí)的開源項(xiàng)目數(shù)據(jù)對(duì)該方法進(jìn)行評(píng)估,結(jié)果表明,該方法在預(yù)測(cè)迭代進(jìn)度方面具有較好的性能。
軟件交付預(yù)測(cè);迭代式開發(fā);數(shù)據(jù)驅(qū)動(dòng)
軟件交付延遲和成本超支是軟件項(xiàng)目中的常見問(wèn)題。一項(xiàng)研究發(fā)現(xiàn),軟件項(xiàng)目平均支出超過(guò)了預(yù)算的50%,約30%參與項(xiàng)目的人員都需要加班[1]。低效率的風(fēng)險(xiǎn)管理是軟件項(xiàng)目超支的主要原因之一,風(fēng)險(xiǎn)管理的核心是:能夠在項(xiàng)目的任何階段預(yù)測(cè)軟件開發(fā)團(tuán)隊(duì)是否能夠如期完成,同時(shí)將成本控制在預(yù)算之內(nèi),并最終實(shí)現(xiàn)設(shè)計(jì)要求。所以有效的計(jì)劃、進(jìn)度監(jiān)控和預(yù)測(cè)對(duì)于迭代式軟件開發(fā)項(xiàng)目的順利完成至關(guān)重要[2–3]。本研究將重點(diǎn)放在預(yù)測(cè)軟件開發(fā)項(xiàng)目一次迭代的交付能力,以確定項(xiàng)目能否會(huì)在迭代結(jié)束時(shí)交付目標(biāo)的工作量,所提的方法可以從先前的迭代中學(xué)習(xí)以預(yù)測(cè)后續(xù)迭代的性能。
在軟件開發(fā)過(guò)程中,一個(gè)項(xiàng)目會(huì)進(jìn)行多次迭代[4]。一次迭代的時(shí)間通常為2到4周,在此期間開發(fā)團(tuán)隊(duì)設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試和交付一個(gè)產(chǎn)品增量。每次迭代都需要解決和改進(jìn)前一次迭代遺留下來(lái)的問(wèn)題,這些問(wèn)題會(huì)在迭代開始時(shí)被放置在待辦列表中。
在迭代開始之前需要確定迭代計(jì)劃,迭代計(jì)劃包括迭代的開始時(shí)間、完成時(shí)間、待解決的問(wèn)題、負(fù)責(zé)人和參與人。迭代期間可以添加和刪除問(wèn)題,迭代完成后會(huì)將本次迭代未完成和未解決的問(wèn)題分配給下一次迭代。
為了預(yù)測(cè)屬于集合中的問(wèn)題,需要量化迭代中完成的工作量,并將其用作預(yù)測(cè)的基礎(chǔ)。為每個(gè)問(wèn)題分配若干個(gè)故事點(diǎn),用速度表示單次迭代中完成的工作量,即迭代中完成的故事點(diǎn)總數(shù),于是速度就反映了一個(gè)團(tuán)隊(duì)在一次迭代中完成了多少工作。
此方法包括兩個(gè)階段:學(xué)習(xí)階段和預(yù)測(cè)階段(如圖1)。學(xué)習(xí)階段是基于歷史迭代來(lái)構(gòu)建預(yù)測(cè)模型,預(yù)測(cè)階段是使用該預(yù)測(cè)模型來(lái)預(yù)測(cè)速度差。一次迭代包括許多特征變量(例如,持續(xù)時(shí)間、參與者等)和一組問(wèn)題,而問(wèn)題的依賴關(guān)系表示為依賴關(guān)系圖,每個(gè)問(wèn)題都有自己的屬性和派生特征。本方法將迭代的派生特征分為三個(gè)部分:迭代屬性、依賴圖的描述符和問(wèn)題集合的聚合特征。聚合特征是通過(guò)將問(wèn)題空間中的一組點(diǎn)映射到迭代空間中的一個(gè)點(diǎn)而得到。其中,統(tǒng)計(jì)聚合為集合中的點(diǎn)尋找簡(jiǎn)單的集合統(tǒng)計(jì)信息,例如,迭代中問(wèn)題評(píng)論數(shù)量的最小值、最大值、平均值和標(biāo)準(zhǔn)偏差。而詞袋技術(shù)自動(dòng)將問(wèn)題空間中的所有點(diǎn)聚類,并為每個(gè)新點(diǎn)找到最接近的詞以形成一組新的特征(即詞袋)表示迭代。這種技術(shù)提供了一種強(qiáng)大、自動(dòng)的方法,可以從它下一層的一組問(wèn)題中進(jìn)行迭代學(xué)習(xí)。對(duì)于預(yù)測(cè)模型,采用三種隨機(jī)集成方法:隨機(jī)森林、隨機(jī)梯度提升機(jī)和深度神經(jīng)網(wǎng)絡(luò)來(lái)構(gòu)建預(yù)測(cè)模型,以實(shí)現(xiàn)對(duì)迭代過(guò)程中交付能力的預(yù)測(cè)。
圖1 學(xué)習(xí)階段和預(yù)測(cè)階段
所考察的迭代特征包括迭代持續(xù)時(shí)間、迭代所包含的問(wèn)題數(shù)量、問(wèn)題的速度、新增問(wèn)題數(shù)量、新增問(wèn)題的速度、移除的問(wèn)題、移除問(wèn)題的速度、待處理問(wèn)題、待處理問(wèn)題的速度、正在處理的問(wèn)題、正在處理問(wèn)題的速度、已解決的問(wèn)題、已解決問(wèn)題的速度、管理者數(shù)量、團(tuán)隊(duì)負(fù)責(zé)人的數(shù)量和團(tuán)隊(duì)的規(guī)模。將預(yù)測(cè)時(shí)刻用作參考點(diǎn)來(lái)計(jì)算反映工作量的多個(gè)特征,包括在迭代開始時(shí)分配給迭代的問(wèn)題集合以及在開始時(shí)間和預(yù)測(cè)時(shí)間之間從迭代中添加或刪除的問(wèn)題集合。此外,還利用了能反映團(tuán)隊(duì)在預(yù)測(cè)時(shí)間之前的進(jìn)度特征:已完成的問(wèn)題集合、正在進(jìn)行的問(wèn)題集合以及團(tuán)隊(duì)的待解決問(wèn)題。團(tuán)隊(duì)的特征包括了團(tuán)隊(duì)負(fù)責(zé)人的數(shù)量和團(tuán)隊(duì)的規(guī)模。
分配給迭代的問(wèn)題在表征迭代方面也起著重要作用,本研究所考慮的問(wèn)題特征如表1所示。問(wèn)題的詳細(xì)信息包括了問(wèn)題的類型、優(yōu)先級(jí)、描述和故事點(diǎn)和所分配的迭代。這些特征直接從問(wèn)題的屬性中提取,包括類型、優(yōu)先級(jí)、評(píng)論數(shù)量、影響版本數(shù)量和修復(fù)版本數(shù)量。每個(gè)問(wèn)題都將被分配一個(gè)類型和優(yōu)先級(jí)。
表1 問(wèn)題特征
一個(gè)問(wèn)題可能會(huì)在多個(gè)版本中出現(xiàn),而影響多個(gè)版本的問(wèn)題需要得到更多的關(guān)注。問(wèn)題鏈接是指問(wèn)題之間的關(guān)系,而問(wèn)題鏈接擁有包括相關(guān)和依賴等多種關(guān)系類型。其中,阻塞是問(wèn)題鏈接類型之一,屬于阻塞類型的問(wèn)題會(huì)阻止其他問(wèn)題的解決。因此屬于阻止類型的問(wèn)題都需要優(yōu)先修復(fù)。問(wèn)題描述文本解釋了問(wèn)題的性質(zhì),有助于項(xiàng)目成員了解其性質(zhì)和復(fù)雜性。采用了可讀性度量來(lái)從問(wèn)題文本描述中導(dǎo)出文本特征,使用Gunning Fox[5]根據(jù)可讀性分?jǐn)?shù)來(lái)衡量描述的復(fù)雜程度(即分?jǐn)?shù)越低,越容易閱讀)。
為了表征迭代,提取了迭代的特征和分配給迭代的問(wèn)題的特征。特征聚合通過(guò)聚合分配給迭代的問(wèn)題的特征,從迭代的問(wèn)題中導(dǎo)出一組新的特征。這里討論統(tǒng)計(jì)聚合和詞袋兩種不同的特征聚合技術(shù),采用分配給迭代的問(wèn)題的特征來(lái)表征迭代。描述這些問(wèn)題之間依賴關(guān)系圖的描述符也形成了一組代表迭代的特征,這些聚合方法能在不同方面捕獲與迭代問(wèn)題相關(guān)的特征。然后將迭代的特征及其問(wèn)題的聚合特征輸入分類器以構(gòu)建預(yù)測(cè)模型。
2.3.1 統(tǒng)計(jì)聚合
2.3.2詞袋
算法1 詞袋算法
2.3.3 基于圖的技術(shù)
迭代中的問(wèn)題之間通常存在依賴關(guān)系,這些依賴關(guān)系以問(wèn)題鏈接(如相關(guān)、依賴和阻塞)的形式記錄。阻塞是問(wèn)題跟蹤系統(tǒng)中記錄的一種常見的依賴關(guān)系。這種依賴關(guān)系形成了一個(gè)有向無(wú)環(huán)圖,以描述如何安排迭代中解決問(wèn)題的工作。
問(wèn)題的有向無(wú)環(huán)圖的復(fù)雜性描述符提供了一組表征迭代的特征。使用的一組基于圖的特征包括了節(jié)點(diǎn)數(shù)、邊數(shù)、傳入邊的總數(shù)、傳出邊的總數(shù)、問(wèn)題的最大傳入邊數(shù)、問(wèn)題的最小傳入邊數(shù)、平均傳入邊數(shù)、平均傳出邊數(shù)、最常出現(xiàn)的傳入鏈接數(shù)、最常出現(xiàn)的傳出鏈接數(shù)和節(jié)點(diǎn)和邊的度分布。
本預(yù)測(cè)模型可以預(yù)測(cè)迭代的實(shí)際交付速度與承諾速度之間的差異。為此,采用回歸方法,其中輸出反映迭代中的可交付能力。從歷史迭代(即訓(xùn)練集)中提取的特征將用于建立預(yù)測(cè)模型。迭代的特征向量和分配給迭代的問(wèn)題的聚合特征向量被連接并饋入回歸器。
運(yùn)用了隨機(jī)集成方法,該方法使用許多回歸器來(lái)進(jìn)行預(yù)測(cè)。隨機(jī)方法通過(guò)隨機(jī)化數(shù)據(jù)、特征和內(nèi)部模型組件來(lái)創(chuàng)建回歸器。隨機(jī)化是強(qiáng)大的正則化技術(shù),可減少預(yù)測(cè)方差,防止過(guò)度擬合,對(duì)噪聲數(shù)據(jù)具有魯棒性,并提高整體預(yù)測(cè)精度。
所使用的回歸器包括隨機(jī)森林、隨機(jī)梯度提升機(jī)和深度神經(jīng)網(wǎng)絡(luò)。所有這些都是使用分而治之的方法來(lái)提高性能的集成方法,使用一組“弱學(xué)習(xí)器”來(lái)形成一個(gè)“強(qiáng)學(xué)習(xí)器”。
本研究從3個(gè)開源項(xiàng)目中收集了迭代及其問(wèn)題的數(shù)據(jù),這3個(gè)項(xiàng)目包含2295個(gè)迭代和這些迭代涉及的19592個(gè)問(wèn)題。通過(guò)刪除重復(fù)的迭代以及未來(lái)和正在進(jìn)行的迭代,對(duì)數(shù)據(jù)進(jìn)行了預(yù)處理。表2顯示了數(shù)據(jù)集中的迭代次數(shù)和問(wèn)題數(shù)量,并展示了3個(gè)項(xiàng)目的相關(guān)信息。3個(gè)項(xiàng)目的迭代長(zhǎng)度都是在2到4周的范圍內(nèi),而每次迭代的問(wèn)題數(shù)量各不相同。
表2 項(xiàng)目信息
實(shí)驗(yàn)使用收集的所有迭代和問(wèn)題來(lái)進(jìn)行預(yù)測(cè),以得到實(shí)際交付速度與目標(biāo)速度之間的差異。例如,如果模型的輸出是-2,則說(shuō)明團(tuán)隊(duì)將比目標(biāo)少交付2個(gè)故事點(diǎn)。
本研究采用了平均絕對(duì)誤差(MAE)作為衡量本模型預(yù)測(cè)性能的指標(biāo)。由于不同的項(xiàng)目有不同的速度差,因此需要對(duì)MAE進(jìn)行歸一化,并將此度量稱為歸一化平均絕對(duì)誤差(NMAE)。另外,還用了精度、召回率、F度量、ROC曲線下面積(AUC)來(lái)衡量預(yù)測(cè)模型的性能。實(shí)驗(yàn)將使用了三種特征聚合方法的預(yù)測(cè)模型與僅使用迭代特征的預(yù)測(cè)模型進(jìn)行了比較,結(jié)果如圖2所示。對(duì)比結(jié)果表明,使用特征聚合方法獲得的預(yù)測(cè)性能始終優(yōu)于僅使用迭代特征的預(yù)測(cè)模型。
圖2 特征聚合技術(shù)對(duì)比
接下來(lái),對(duì)聚合特征組合的性能進(jìn)行探索,結(jié)果如圖3所示。由結(jié)果可知,在大多數(shù)情況下,兩個(gè)或多個(gè)特征聚合方法的組合比單個(gè)聚合方法產(chǎn)生了更好的性能。然而,最佳的組合因項(xiàng)目而異。將統(tǒng)計(jì)聚合和詞袋技術(shù)進(jìn)行組合,探討隨機(jī)森林、隨機(jī)梯度提升機(jī)、深度神經(jīng)網(wǎng)絡(luò)和支持向量機(jī)的性能,結(jié)果如圖4所示。結(jié)果表明,所采用的三種集成方法均具有較低的歸一化平均絕對(duì)誤差,比支持向量機(jī)方法擁有更好的預(yù)測(cè)性能。
圖3 組合特征聚合技術(shù)對(duì)比
圖4 預(yù)測(cè)模型對(duì)比
另外,展示了使用結(jié)合統(tǒng)計(jì)聚合和詞袋特征組合的隨機(jī)梯度提升機(jī)進(jìn)行速度差預(yù)測(cè)的結(jié)果,如表3所示。表3顯示了開源項(xiàng)目的精度、召回率、F度量和AUC結(jié)果,這些評(píng)估結(jié)果證明了本預(yù)測(cè)模型的有效性。
表3 預(yù)測(cè)性能對(duì)比
本研究提出了面向迭代開發(fā)環(huán)境的數(shù)據(jù)驅(qū)動(dòng)軟件交付風(fēng)險(xiǎn)預(yù)測(cè)的方法,該方法利用迭代和迭代中的問(wèn)題的特征,結(jié)合多種特征聚合技術(shù),使用多種優(yōu)秀的機(jī)器學(xué)習(xí)模型來(lái)預(yù)測(cè)在迭代過(guò)程中完成的工作量。使用多個(gè)項(xiàng)目數(shù)據(jù)來(lái)驗(yàn)證提出方法的有效性。實(shí)驗(yàn)結(jié)果表明,通過(guò)結(jié)合特征聚合技術(shù)的組合,本方法可以獲得更好的預(yù)測(cè)性能。未來(lái)的工作將集中在通過(guò)結(jié)合更多的開發(fā)團(tuán)隊(duì)特征來(lái)豐富本方法,并將探討如何使用圖嵌入將問(wèn)題依賴圖應(yīng)用于無(wú)監(jiān)督的學(xué)習(xí)中。
[1] Bloch M, Blumberg S, Laartz J. Delivering large-scale IT projects on time, on budget, and on value[J]. Harvard Business Review, 2012, 5(1): 2–7.
[2] Kurniawan F F, Shidiq F R, Sutoyo E. WeCare project: development of web-based platform for online psychological consultation using scrum framework[J]. Bulletin of computer science and Electrical engineering, 2020, 1(1): 33–41.
[3] Copola Azenha F, Aparecida Reis D, Leme Fleury A. The role and characteristics of hybrid approaches to project management in the development of technology-based products and services[J]. Project Management Journal, 2021, 52(1): 90–110.
[4] Carneiro L B, Silva A C C L M, Alencar L H. Scrum agile project management methodology application for workflow management: a case study[C]//2018 IEEE International conference on Industrial engineering and engineering management (IEEM). IEEE, 2018: 938–942.
[5] 林煜明, 王曉玲, 朱濤, 等. 用戶評(píng)論的質(zhì)量檢測(cè)與控制研究綜述[J]. 軟件學(xué)報(bào), 2014, 25(3): 506–527.
Research on Data-driven Iterative Development and Delivery
MA Bo
(Information Technology Department, Yangquan Teachers College, Yangquan Shanxi 045000, China)
To improve the performance of monitoring software iteration and delivery, a new data-driven method is proposed to predict the delivery capability of software iteration and provide automation support for project managers. This method extracts the characteristics of historical project iterations and problems in iterations, and uses statistical aggregation, bag-of-words, and graph-based techniques to combine the characteristics of iteration problems to characterize iterations. Real open source project data are used to evaluate the method, and the results show that the method has better performance in predicting the iteration progress.
software delivery forecast; iterative development; driving by data
TP391
A
2095-9249(2021)06-0068-05
2021-12-17
馬波(1979—),女,山西左權(quán)人,講師,研究方向:計(jì)算機(jī)應(yīng)用與技術(shù)。
〔責(zé)任編校:吳侃民〕