◆李圣霞 劉盼 夏侯康 羅軍 程宇
(廣東機(jī)場(chǎng)白云信息科技有限公司 廣東 510470)
隨著社會(huì)的進(jìn)步和管理水平的日益提高,軟件開(kāi)發(fā)與各個(gè)行業(yè)和領(lǐng)域都密不可分,民航單位作為運(yùn)輸行業(yè)的一大重點(diǎn),日常運(yùn)營(yíng)管理越來(lái)越精細(xì)化,對(duì)信息化的程度要求越來(lái)越高。第一,用戶迫切需要信息化的管理軟件,來(lái)幫助自己梳理和記錄日常業(yè)務(wù)流程,提高自身管理水平;第二,用戶對(duì)軟件不熟悉,對(duì)系統(tǒng)的需求是模糊的、不明確的,只有在軟件研發(fā)的過(guò)程中,才能逐漸明確下一步的需求計(jì)劃;第三,因?yàn)槊窈綐I(yè)務(wù)的特殊性,對(duì)安全和質(zhì)量的要求很高,軟件系統(tǒng)的質(zhì)量問(wèn)題,對(duì)日常業(yè)務(wù)影響較大,且一般影響范圍較廣。
在這種情況下,傳統(tǒng)的瀑布模型已經(jīng)無(wú)法適應(yīng)不斷變動(dòng)的需求,因?yàn)樾枨笞兏谄俨奸_(kāi)發(fā)模型中,尤其是開(kāi)發(fā)后期帶來(lái)的成本是高昂的,不確定的需求也會(huì)導(dǎo)致開(kāi)發(fā)過(guò)程中工期、成本、質(zhì)量的多重風(fēng)險(xiǎn),并最終導(dǎo)致項(xiàng)目的失敗。
敏捷是一種通過(guò)創(chuàng)造變化和響應(yīng)變化在不確定和混亂的環(huán)境中取得成功的能力。敏捷軟件開(kāi)發(fā)是基于敏捷宣言定義的價(jià)值觀和原則的一系列方法和實(shí)踐的總稱。
敏捷開(kāi)發(fā)遵循十二條基本原則,如下:
第一,我們最重要的目標(biāo),是通過(guò)及早和持續(xù)不斷地交付有價(jià)值的軟件使客戶滿意。
第二,欣然面對(duì)需求變化,即使在開(kāi)發(fā)后期也一樣。為了客戶的競(jìng)爭(zhēng)優(yōu)勢(shì),敏捷過(guò)程掌控變化。
第三,經(jīng)常地交付可工作的軟件,相隔幾個(gè)星期或一兩個(gè)月,傾向于采取較短的周期。
第四,業(yè)務(wù)人員和開(kāi)發(fā)人員必須相互合作,項(xiàng)目中的每一天都不例外。
第五,激發(fā)個(gè)體的斗志,以他們?yōu)楹诵拇罱?xiàng)目。提供所需的環(huán)境和支援,輔以信任,從而達(dá)成目標(biāo)。
第六,不論團(tuán)隊(duì)內(nèi)外,傳遞信息效果最好效率也最高的方式是面對(duì)面的交談。
第七,可工作的軟件是進(jìn)度的首要度量標(biāo)準(zhǔn)。
第八,敏捷過(guò)程倡導(dǎo)可持續(xù)開(kāi)發(fā)。責(zé)任人、開(kāi)發(fā)人員和用戶要能夠共同維持其步調(diào)穩(wěn)定延續(xù)。
第九,堅(jiān)持不懈地追求技術(shù)卓越和良好設(shè)計(jì),敏捷能力由此增強(qiáng)。
第十,以簡(jiǎn)潔為本,它是極力減少不必要工作量的藝術(shù)。
第十一,最好的架構(gòu)、需求和設(shè)計(jì)出自自組織團(tuán)隊(duì)。
第十二,團(tuán)隊(duì)定期地反思如何能提高成效,并依此調(diào)整自身的行為表現(xiàn)。
Scrum是敏捷開(kāi)發(fā)的一種最基本框架,也是最流行的一種框架,尤其是對(duì)于初次進(jìn)行敏捷開(kāi)發(fā)的企業(yè)尤其適用。Scrum原始含義是指英式橄欖球次要犯規(guī)時(shí)在犯規(guī)地點(diǎn)對(duì)陣爭(zhēng)球。傳統(tǒng)的“接力式”的開(kāi)發(fā)模式已經(jīng)不能滿足快速靈活的市場(chǎng)需求,而整體或“橄欖球式”的方法——團(tuán)隊(duì)作為一個(gè)整體前進(jìn),在團(tuán)隊(duì)的內(nèi)部傳球并保持前進(jìn),這也許可以更好地滿足當(dāng)前激烈的市場(chǎng)競(jìng)爭(zhēng)。
Scrum框架包括3個(gè)角色(Product Owner、Scrum Master、開(kāi)發(fā)團(tuán)隊(duì))、3個(gè)工件(Product Backlog、Sprint Backlog、產(chǎn)品增量)、5個(gè)事件(Sprint、Sprint計(jì)劃會(huì)議、“每日站會(huì)”、Sprint評(píng)審會(huì)議、Sprint回顧會(huì)議)、5個(gè)價(jià)值(承諾、專注、開(kāi)放、尊重、勇氣)。
在民航系統(tǒng)管理軟件的開(kāi)發(fā)過(guò)程中,采用傳統(tǒng)瀑布模型,因?yàn)榭蛻粜枨蟮牟淮_定性、各單位部門之間溝通協(xié)調(diào)的復(fù)雜性、對(duì)接其他系統(tǒng)數(shù)據(jù)的困難性等各種因素,往往前期需求調(diào)研階段特別長(zhǎng),因?yàn)楣て诰o張容易造成延期問(wèn)題,并帶來(lái)質(zhì)量的隱患,容易導(dǎo)致客戶滿意度的降低。
采用敏捷開(kāi)發(fā)方法中的Scrum,可以有效地解決以上問(wèn)題,把客戶需要的大的功能劃分為一個(gè)一個(gè)小的迭代,采用增量發(fā)布的方式,每次只需要確認(rèn)當(dāng)前迭代的功能,使客戶需求漸進(jìn)明細(xì),目前已成為我們研發(fā)的主要模式。
Scrum主要有5個(gè)事件:Sprint、Sprint計(jì)劃會(huì)議、“每日站會(huì)”、Sprint評(píng)審會(huì)議、Sprint回顧會(huì)議。下面分別一一講述:
(1)Sprint:每個(gè)Sprint就是一個(gè)迭代,按照敏捷開(kāi)發(fā)原則是迭代周期越短越好,因?yàn)檫@樣可以使客戶更早看到系統(tǒng)并進(jìn)行試用,也能更早反饋意見(jiàn)。但鑒于民航管理系統(tǒng)的復(fù)雜性,太小的功能點(diǎn)完成對(duì)客戶來(lái)說(shuō)是沒(méi)有意義的,機(jī)場(chǎng)是7*24小時(shí)在運(yùn)轉(zhuǎn)的,客戶因?yàn)槠渥陨順I(yè)務(wù)工作的繁忙,也很難進(jìn)行深入的試用,因此,迭代周期太短,無(wú)法取得預(yù)期的效果,而迭代周期太長(zhǎng),則無(wú)法按照敏捷開(kāi)發(fā)模式推進(jìn),經(jīng)綜合評(píng)估,我們確立了1個(gè)月的迭代周期長(zhǎng)度,9人的開(kāi)發(fā)團(tuán)隊(duì),基本可以完成80人天左右的開(kāi)發(fā)工作量,預(yù)留測(cè)試和修復(fù)bug時(shí)間。經(jīng)過(guò)近三個(gè)迭代的實(shí)踐,目前這是比較合適的一個(gè)工作安排。
(2)Sprint計(jì)劃會(huì)議:計(jì)劃會(huì)議主要用來(lái)確定本次迭代要完成的功能,產(chǎn)品經(jīng)理在前一個(gè)迭代開(kāi)發(fā)過(guò)程中,就開(kāi)始與客戶溝通確認(rèn)下一迭代的功能,因此,在計(jì)劃會(huì)議上,產(chǎn)品經(jīng)理確認(rèn)好本次迭代的功能點(diǎn),做詳細(xì)地介紹,每個(gè)迭代的計(jì)劃會(huì)議時(shí)間盒為8小時(shí),產(chǎn)品經(jīng)理按功能點(diǎn)對(duì)客戶業(yè)務(wù)需求和需求實(shí)現(xiàn)方式進(jìn)行詳細(xì)地講解,開(kāi)發(fā)團(tuán)隊(duì)一起進(jìn)行討論,對(duì)需求錯(cuò)誤點(diǎn)和遺漏點(diǎn)直接指出,每個(gè)功能點(diǎn)講解完成后,立即進(jìn)行開(kāi)發(fā)任務(wù)分配,由開(kāi)發(fā)工程師,利用敏捷估算撲克,對(duì)詳細(xì)功能點(diǎn)進(jìn)行估算。傳統(tǒng)模式下,開(kāi)發(fā)工程師在需求評(píng)審時(shí)基本不提意見(jiàn),開(kāi)發(fā)過(guò)程中經(jīng)常按照自己的理解去開(kāi)發(fā),到測(cè)試環(huán)節(jié)后才發(fā)現(xiàn)實(shí)現(xiàn)與需求不符;而敏捷開(kāi)發(fā)模式當(dāng)場(chǎng)估算的方式,無(wú)形中讓開(kāi)發(fā)工程師盡可能地去了解需求,及時(shí)提出可能遇到的問(wèn)題,給出相對(duì)準(zhǔn)確的估算,這也是Scrum核心價(jià)值觀中的“承諾”。
(3)“每日站會(huì)”:“每日站會(huì)”是Scrum的經(jīng)典應(yīng)用,體現(xiàn)核心價(jià)值觀中的“開(kāi)放”?!懊咳照緯?huì)”我們采用最簡(jiǎn)單的手工看板+便利貼,把開(kāi)發(fā)、測(cè)試任務(wù)細(xì)化到個(gè)人,每人有一行來(lái)標(biāo)識(shí)自己的任務(wù)和進(jìn)度,每日約定9點(diǎn)10分為站會(huì)的時(shí)間,到時(shí)間點(diǎn)大家自動(dòng)在看板前聚集成半圓,不用每日通知,也不用安排專人召集,按順序發(fā)言,回答三個(gè)問(wèn)題:1)昨天我做了哪些工作;2)今日我打算做什么工作;3)遇到的困難和障礙。全部完成后,大家散開(kāi)回去開(kāi)始今天的工作,敏捷教練記錄下所有的困難和障礙,和對(duì)應(yīng)成員討論并解決。一方面,“每日站會(huì)”提供了一個(gè)溝通交流的平臺(tái),讓大家有機(jī)會(huì)了解團(tuán)隊(duì)整體的工作進(jìn)展,一個(gè)系統(tǒng)內(nèi)部總是互相關(guān)聯(lián)的,對(duì)整體的把握有助于對(duì)部分的設(shè)計(jì)完善;另一方面,“每日站會(huì)”從心理學(xué)角度分析,雖然敏捷團(tuán)隊(duì)更注重整體的進(jìn)度,但每日匯報(bào)進(jìn)度時(shí),個(gè)體總是會(huì)想要展示自己更好的一面,從其他人贊賞的眼光中,獲得一種滿足感,因此,敏捷開(kāi)發(fā)團(tuán)隊(duì)無(wú)形中會(huì)有更高的工作熱情,以在每日的站會(huì)中有更好的表現(xiàn),這便是核心價(jià)值觀中的“尊重”。
(4)Sprint評(píng)審會(huì)議:每個(gè)Sprint,我們?nèi)匀槐A羝俨寄P椭械闹匾h(huán)節(jié),召開(kāi)幾次評(píng)審會(huì)議:需求評(píng)審、設(shè)計(jì)評(píng)審、代碼評(píng)審、發(fā)布評(píng)審,需求評(píng)審一般在計(jì)劃會(huì)議之后召開(kāi),設(shè)計(jì)評(píng)審,則在設(shè)計(jì)完成后進(jìn)行,代碼評(píng)審每周進(jìn)行一次,發(fā)布評(píng)審則在每次迭代功能測(cè)試完成時(shí)進(jìn)行。需求、設(shè)計(jì)、發(fā)布評(píng)審一般是會(huì)議形式,代碼評(píng)審則一般在工位電腦前進(jìn)行,不必拘泥于何種形式,有問(wèn)題也不必拘泥在什么時(shí)間提出,一般在發(fā)現(xiàn)問(wèn)題時(shí),我們鼓勵(lì)立即提出,不讓可能的缺陷或問(wèn)題流入下一個(gè)環(huán)節(jié),這也是精益思想的一種體現(xiàn)。一旦發(fā)現(xiàn)問(wèn)題變成一種鼓勵(lì),每個(gè)人都感覺(jué)到提出問(wèn)題是安全的,團(tuán)隊(duì)中的每個(gè)人都會(huì)放下戒心,更多的問(wèn)題被提出,才能被盡早解決,而越早解決問(wèn)題,越能減少修復(fù)問(wèn)題的成本,也越能帶來(lái)產(chǎn)品質(zhì)量的提升,這是Scrum核心價(jià)值觀中的“勇氣”的體現(xiàn)。
(5)Sprint回顧會(huì)議:每次迭代結(jié)束后,在發(fā)布評(píng)審會(huì)議后,我們會(huì)立即召開(kāi)回顧會(huì)議?;仡檿?huì)議在各種參考書(shū)籍中有很多推薦形式,但核心思想就是要讓團(tuán)隊(duì)全員都參與進(jìn)來(lái)。敏捷團(tuán)隊(duì)中犯錯(cuò)誤是被允許的,一般不會(huì)在回顧會(huì)議上對(duì)犯錯(cuò)誤的人或事進(jìn)行批斗,但必須要做的事情是,我們哪些地方做得不好,我們可以做什么來(lái)避免錯(cuò)誤的再次發(fā)生。這些要采取的行動(dòng),就變?yōu)橄乱坏母倪M(jìn)任務(wù),和其他任務(wù)一起粘貼在白板上。做這些事情的,不是上級(jí)領(lǐng)導(dǎo),不是敏捷教練,而是開(kāi)發(fā)團(tuán)隊(duì)中的每個(gè)人,一般來(lái)說(shuō),讓大家說(shuō)的效果沒(méi)有寫(xiě)下來(lái)的效果更好,我們經(jīng)常制定5分鐘的時(shí)間盒,讓大家去思考,并把問(wèn)題或者改進(jìn)措施寫(xiě)下來(lái),完成后再一起進(jìn)行討論,也嘗試過(guò)大家坐在一個(gè)會(huì)議室里面輪流發(fā)言,首先發(fā)言的過(guò)程中很容易被打斷,再就是可能前面的人說(shuō)過(guò)的問(wèn)題,后面的人覺(jué)得差不多就不會(huì)再提了。
最后,再談?wù)凷crum核心價(jià)值觀中的“專注”,專注是指讓團(tuán)隊(duì)成員盡可能地不受外界干擾,把全部精力都投入到目前的工作中?,F(xiàn)實(shí)的工作中,絕對(duì)的不受干擾是不存在的,比如一個(gè)開(kāi)發(fā)工程師,正在進(jìn)行A項(xiàng)目的開(kāi)發(fā)工作,此時(shí),正好有一個(gè)之前參與的B項(xiàng)目,客戶有一些疑問(wèn),幾分鐘時(shí)間可以解答的問(wèn)題,難道一定要推開(kāi)嗎,從公司的角度來(lái)看,一定不會(huì)希望產(chǎn)生這樣的情況,從敏捷團(tuán)隊(duì)角度,這樣的打擾太多,也會(huì)造成一定的困擾。因此,敏捷教練在其中要起一定的作用,把握好度,既不能犧牲客戶的滿意度,也不能影響當(dāng)前的工作。
綜上,Scrum在提升效率、提高質(zhì)量方面為我們的研發(fā)工作做出了積極的貢獻(xiàn),在使用過(guò)程中,我們嚴(yán)格遵守它的核心價(jià)值觀,遵循敏捷的十二條基本原則,但并沒(méi)有拘泥于固有的形式,和原有的瀑布模型也進(jìn)行了一定的整合,在一些項(xiàng)目應(yīng)用上取得成效之后,后續(xù)也將應(yīng)用到其他民航IT研發(fā)項(xiàng)目中。