趙 宇,趙建軍
(1.北京礦冶研究總院,北京 100070;2.礦冶過程自動(dòng)控制技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,北京 100070;3.礦冶過程自動(dòng)控制技術(shù)北京市重點(diǎn)實(shí)驗(yàn)室,北京 100070)
敏捷開發(fā)方法在選冶儀表軟件開發(fā)中的應(yīng)用
趙 宇1-3,趙建軍1-3
(1.北京礦冶研究總院,北京 100070;2.礦冶過程自動(dòng)控制技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,北京 100070;3.礦冶過程自動(dòng)控制技術(shù)北京市重點(diǎn)實(shí)驗(yàn)室,北京 100070)
隨著國(guó)內(nèi)選冶過程關(guān)鍵參數(shù)檢測(cè)技術(shù)實(shí)現(xiàn)了儀器化,選冶儀表在單機(jī)自動(dòng)化、操作智能化、信息挖掘等方面的需求開始不斷增長(zhǎng)和豐富,這對(duì)選冶儀表軟件開發(fā)提出了更高的要求,如何權(quán)衡并解決需求更迭變化情況下選冶儀表軟件的發(fā)布質(zhì)量和交付速度是我們亟待解決的問題。以選冶儀表軟件開發(fā)項(xiàng)目為例,探討了利用敏捷開發(fā)的方法優(yōu)化開發(fā)流程的具體應(yīng)用。
選冶儀表;敏捷開發(fā);Scrum;在線;儀表軟件
隨著國(guó)內(nèi)在選冶過程關(guān)鍵工藝參數(shù)品位、粒度、濃度、酸堿度/浮選電位等檢測(cè)手段成熟,國(guó)內(nèi)研究機(jī)構(gòu)相繼研制出工業(yè)在線檢測(cè)儀器儀表,在儀表投入市場(chǎng)應(yīng)用初期,國(guó)內(nèi)選廠在線檢測(cè)的需求相對(duì)簡(jiǎn)單穩(wěn)定,選冶儀表的研制開發(fā)可以在瀑布開發(fā)模型控制軟件過程和質(zhì)量。但近些年來,隨著國(guó)內(nèi)選廠對(duì)在線檢測(cè)理解的深入,以及其他行業(yè)儀表智能化進(jìn)程的推進(jìn),不斷有新的功能需求提出,由于選冶儀器行業(yè)領(lǐng)域市場(chǎng)容量小,競(jìng)爭(zhēng)程度較高,迫使儀表廠家對(duì)市場(chǎng)需求做出快速反應(yīng),不斷升級(jí)儀器功能甚至定制化,這對(duì)儀表軟件開發(fā)質(zhì)量和交付速度提出較高的要求。敏捷軟件開發(fā)的思想是用于開發(fā)和維持復(fù)雜產(chǎn)品的框架,其目的是改善軟件開發(fā)在需求快速變化中的應(yīng)變能力,本文深入闡述了敏捷開發(fā)方法在選冶儀表開發(fā)中的具體應(yīng)用,并根據(jù)開發(fā)團(tuán)隊(duì)的規(guī)模特點(diǎn)適當(dāng)簡(jiǎn)化開發(fā)過程[6-8]。
敏捷開發(fā)設(shè)計(jì)是以人為核心、迭代、循序漸進(jìn)的開發(fā)方法,不同于瀑布開發(fā)過程,敏捷開發(fā)注重的是人與人之間的面對(duì)面交流,Scrum過程是敏捷軟件開發(fā)方式之一,是一個(gè)過程框架和流程,需要結(jié)合具體項(xiàng)目和團(tuán)隊(duì)形式套用和改進(jìn),結(jié)合選冶儀表軟件開發(fā)團(tuán)隊(duì)規(guī)模,適當(dāng)簡(jiǎn)化了開發(fā)流程[1-2]。
簡(jiǎn)化Scrum過程的角色包括(1)產(chǎn)品負(fù)責(zé)人,負(fù)責(zé)確定軟件的功能標(biāo)準(zhǔn),確保Scrum流程在項(xiàng)目中的實(shí)施。(2)開發(fā)小組成員,負(fù)責(zé)軟件產(chǎn)品在Scrum規(guī)定流程下的開發(fā)工作。
簡(jiǎn)化Scrum過程的文檔包括(1)產(chǎn)品需求列表(Product Backlog);(2)沖刺需求列表(Sprint Backlog);(3)燃盡圖;(4)人力資源狀態(tài)表[3]。
簡(jiǎn)化Scrum過程必要管理過程:(1)看板;(2)每日站會(huì);(3)演示會(huì)議[5]。
首先由產(chǎn)品負(fù)責(zé)人確定按優(yōu)先順序排列的產(chǎn)品需求列表,開發(fā)團(tuán)隊(duì)根據(jù)需求列表分割細(xì)化若干沖刺階段并預(yù)估工作量,形成沖刺需求列表,每一次沖刺過程結(jié)束時(shí),開發(fā)團(tuán)隊(duì)必須形成可以釋放給用戶的軟件,并把開發(fā)的軟件展示給產(chǎn)品負(fù)責(zé)人及相關(guān)人員獲得反饋,以更新下一次沖刺列表的內(nèi)容,依次類推,最終實(shí)現(xiàn)產(chǎn)品需求列表中定義的全部功能,如圖1所示[4]。
圖1 Scrum開發(fā)模型
Scrum流程方法的實(shí)施需要人和項(xiàng)目,本文主要以在線品位分析儀器開發(fā)項(xiàng)目為例,組建4人儀表軟件開發(fā)小組,組長(zhǎng)擔(dān)任產(chǎn)品/流程負(fù)責(zé)人,其他3位成員組成開發(fā)團(tuán)隊(duì),分別擔(dān)任人機(jī)界面設(shè)計(jì)、嵌入式軟件設(shè)計(jì)、數(shù)據(jù)算法及控制時(shí)序設(shè)計(jì)、系統(tǒng)測(cè)試等工作。另外,軟件界面的設(shè)計(jì)美化需要一名美工人員,因?yàn)槊阑ぷ鞑⒉皇秦灤╅_發(fā)的整個(gè)過程的,美工人員采用外聘的形式共組,敏捷開發(fā)的團(tuán)隊(duì)必須是一個(gè)跨職能的高效團(tuán)隊(duì),才能讓每個(gè)人發(fā)揮最大的能量。
Scrum過程是主要準(zhǔn)備工作就是挖掘需求創(chuàng)建產(chǎn)品列表(Product Backlog),由于該表清晰的定義了每個(gè)需求和任務(wù)的優(yōu)先級(jí)和完成時(shí)間,因此它還是一個(gè)詳細(xì)的軟件開發(fā)計(jì)劃,通常產(chǎn)品需求早期階段存在大量的不確定,需要在實(shí)施階段不斷的更新,直至研發(fā)結(jié)束,如表1所列出一部分設(shè)計(jì)需求實(shí)例演示[10]。
表1 需求列表
初步需求開發(fā)很難在開始階段定義出一個(gè)產(chǎn)品完整的功能,比如說“內(nèi)層面更換提醒功能”是計(jì)時(shí)提醒,那么儀器關(guān)機(jī)了是否需要仍然計(jì)時(shí),提醒是彈出一個(gè)窗口還是給出一個(gè)報(bào)警,儀器相關(guān)聯(lián)鎖動(dòng)作有哪些,儀器怎樣恢復(fù)測(cè)量等需要逐步細(xì)化的功能。一般客戶不具備需求論證手段也難免出現(xiàn)需求間耦合關(guān)系矛盾、多義性的問題,但對(duì)于Scrum只要保持開發(fā)者與需求提出者順暢的溝通渠道,開發(fā)工作即可啟動(dòng)。工作量由團(tuán)隊(duì)成員共同評(píng)估和商定,評(píng)估工作量之前先要形成第一階段沖刺計(jì)劃。經(jīng)過技術(shù)討論,最終我們確定第一階段可以完成“標(biāo)定取樣功能”。
另外一個(gè)重要方面是統(tǒng)計(jì)人力資源狀態(tài),產(chǎn)品負(fù)責(zé)人根據(jù)開發(fā)團(tuán)隊(duì)成員可用工作時(shí)間、統(tǒng)計(jì)人力資源狀態(tài),如表2所示,簡(jiǎn)化統(tǒng)計(jì)和管理的前提是需要開發(fā)團(tuán)隊(duì)成員技術(shù)能力狀態(tài)均衡,最后計(jì)算該沖刺階段的釋放時(shí)間。
表2 人力資源狀態(tài)列表
在每個(gè)沖刺正式開發(fā)前,產(chǎn)品負(fù)責(zé)人根據(jù)該沖刺階段的需求任務(wù)形成看板—沖刺需求列表,團(tuán)隊(duì)成員和利益相關(guān)人員可以清晰明了了解團(tuán)隊(duì)項(xiàng)目進(jìn)展?fàn)顟B(tài),如圖2所示。
圖2 沖刺-看板圖
每一個(gè)需求開發(fā)任務(wù)都應(yīng)該被歸類在“待完成”,“正在進(jìn)行”“待驗(yàn)證”“已完成”4個(gè)狀態(tài)中的任意一個(gè)。例如開發(fā)“流道標(biāo)定取樣”時(shí),把該功能分解項(xiàng)放入“待執(zhí)行”項(xiàng)目中,包括一次取樣設(shè)計(jì)、多路分配設(shè)計(jì)、樣品盒取樣設(shè)計(jì)、標(biāo)定氣缸時(shí)序設(shè)計(jì);當(dāng)開發(fā)人員開始實(shí)現(xiàn)、測(cè)試驗(yàn)證流道標(biāo)定分解項(xiàng)子功能時(shí),該功能依次標(biāo)記為“正在執(zhí)行”“測(cè)試階段”狀態(tài);測(cè)試通過該功能標(biāo)記“已完成”。在敏捷開發(fā)中的需要注意的是清晰各子功能相互關(guān)聯(lián)性,一個(gè)功能的修改會(huì)導(dǎo)致哪些功能需要重新測(cè)試和驗(yàn)證[9]。
Scrum過程強(qiáng)調(diào)開發(fā)人員之間充分溝通以快速了解項(xiàng)目的開發(fā)狀態(tài),但對(duì)于微型團(tuán)隊(duì)而言,這種溝通如果過于頻繁會(huì)導(dǎo)致花過多的時(shí)間在交流上而不是軟件開發(fā)上,每天站會(huì)的形式是一個(gè)較好的方法。每個(gè)工作日開始,團(tuán)隊(duì)人員會(huì)圍繞在看板面前主動(dòng)交流3個(gè)問題:上次開會(huì)以來做了些什么,今天計(jì)劃做什么,現(xiàn)在有無任何困難,對(duì)于開發(fā)進(jìn)度相對(duì)落后的程序員,其他成員的開發(fā)狀態(tài)可以潛移默化的對(duì)該開發(fā)人員產(chǎn)生危機(jī)感,無形中可以激勵(lì)開發(fā)人員的能動(dòng)性,已達(dá)到提供其工作效率的目的。
如圖3所示,該燃盡圖顯示了整個(gè)開發(fā)過程的進(jìn)度,橫軸表示開發(fā)所化的時(shí)間,縱軸表示實(shí)現(xiàn)的功能數(shù)量的關(guān)系。
圖3 看板-燃盡圖
燃盡圖可起到項(xiàng)風(fēng)險(xiǎn)預(yù)警提示的作用,該品位分析設(shè)備軟件開發(fā)在初期階段由于處于磨合階段,在需求沖突評(píng)估上出現(xiàn)了小失誤,產(chǎn)品負(fù)責(zé)人立即組織專題討論從而解決了問題并調(diào)整預(yù)定速度。在選冶儀表軟件開發(fā)過程中,也不斷有新的需求被提出,如果不是變更當(dāng)前的沖刺階段需求,團(tuán)隊(duì)負(fù)責(zé)人在評(píng)估需求優(yōu)先級(jí)后及時(shí)更新需求列表,放入下一次沖刺階段中實(shí)現(xiàn)。在軟件釋放階段,為確保儀表軟硬件的匹配,需要專門的軟件釋放沖刺階段去完成驗(yàn)證,從而確保軟件質(zhì)量,當(dāng)軟件系統(tǒng)具備了釋放條件后,此次沖刺階段宣告結(jié)束[5]。
經(jīng)過敏捷開發(fā)過程的實(shí)施,選冶儀表軟件開發(fā)質(zhì)量、開發(fā)效率和團(tuán)隊(duì)成員專業(yè)素質(zhì)都得到明顯提高。隨著選冶行業(yè)全流程自動(dòng)化進(jìn)程不斷推進(jìn)和選冶儀表定制化時(shí)代的到來,未來對(duì)于選冶儀表功能需求仍將不斷的發(fā)展和演化。本文通過論述了敏捷軟件開發(fā)思想在選冶儀表軟件開發(fā)流程中的實(shí)踐與應(yīng)用,證明了這種開發(fā)模式在選冶儀表研制過程中具有極強(qiáng)的適應(yīng)性,發(fā)布的軟件產(chǎn)品在行業(yè)內(nèi)也得到一定范圍的推廣應(yīng)用和肯定。
[1]王式安. 基于敏捷開發(fā)的構(gòu)件化軟件可靠性研究[J]. 微電子學(xué)與計(jì)算機(jī), 2011, 28(3):119-122.
[2]曹國(guó)平. 嵌入式系統(tǒng)開發(fā)中敏捷方法的應(yīng)用研究綜述[J]. 軟件學(xué)報(bào),2014, 25(2):267-283.
[3]韓鵬. 小規(guī)模團(tuán)隊(duì)的敏捷開發(fā)研究[J]. 軟件工程師, 2011(7):42-46.
[4]張林. 敏捷開發(fā)在軟件產(chǎn)品項(xiàng)目中的應(yīng)用實(shí)踐[J]. 硅谷,2011(7):122:122.
[5]謝超. 敏捷開發(fā)方法在汽車儀表軟件研發(fā)中的應(yīng)用[J]. 汽車零部件,2014(3):52-55.
[6]舒強(qiáng). 中小軟件企業(yè)的敏捷開發(fā)之道[J]. 科技情報(bào)開發(fā)與經(jīng)濟(jì),2009, 19(6):195-195.
[7]文俊浩. Scrum中軟件缺陷管理方法的研究與應(yīng)用[J]. 計(jì)算機(jī)工程,2011, 37(19):35-37.
[8]陳國(guó)棟. Scrum敏捷軟件開發(fā)方法實(shí)踐中的改進(jìn)和應(yīng)用[J]. 計(jì)算機(jī)技術(shù)與發(fā)展, 2011, 21(12):97-99.
[9]楊帆. 一種改進(jìn)的Scrum敏捷軟件開發(fā)方法[J]. 電子技術(shù), 2011,38(9):22-23.
[10]榮國(guó)平. 嵌入式系統(tǒng)開發(fā)中敏捷方法的應(yīng)用研究綜述 [J]. 軟件學(xué)報(bào), 2014, 25(2):267-283.
Application of Agile Process Implementation in the Mineral Processing and Smelting Instrument Software Development
ZHAO Yu1-3, ZHAO Jian-jun1-3
(1. Beijing General Research Institute of Mining and Metallurgy, Beijing 100070, China; 2. State Key Laboratory of Mining and Metallurgy Process Automatic Control Technology, Beijing 100070, China; 3. Beijing Key Laboratory of Mining and Metallurgy Process Automatic Control Technology, Beijing 100070, China)
With domestic mineral processing parameters to achieve instrument measurement, mineral processing instrument demand began to grow in the stand-alone automated, intelligent operation, data mining, etc, which put forward higher requirements for the instrument software development. We need to consider how to solve the problem of quality and delivery speed of the instrument software in the case of increasing demand. With the development example of mineral processing and smelting instrument software, the application of agile process implementation to optimize the development process is discussed.
mineral processing and smelting instrument;agile development;scrum;on-line;instrument software
TP319
B
1009-3842(2016)04-0075-04
2016-05-11
趙宇(1979-),男,遼寧鞍山人,高級(jí)工程師,主要從事選冶儀表嵌入式系統(tǒng)與智能化技術(shù)研究。E-mail:zhao_yu@bgrimm.com