王俊
摘要:傳統(tǒng)的軟件開發(fā)方法,由于其過長的開發(fā)周期、經(jīng)常性的超預(yù)算成本、不令人滿意的軟件質(zhì)量控制等因素,讓原本就繁重、復(fù)雜的軟件開發(fā)過程越來越不能適應(yīng)現(xiàn)實(shí)的需要。隨著互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,對(duì)當(dāng)前軟件項(xiàng)目的管理要求是約來約高。影響軟件項(xiàng)目的因素也越來越多,新技術(shù)的產(chǎn)生、需求的變化、成本的競爭、市場的競爭等,敏捷技術(shù)應(yīng)運(yùn)而生。作為新技術(shù),敏捷開發(fā)方法被很多國內(nèi)外軟件企業(yè)推廣和使用。因此文章重點(diǎn)就敏捷開發(fā)scrum在軟件項(xiàng)目管理中的運(yùn)用進(jìn)行略述。
關(guān)鍵詞:敏捷開發(fā)scrum;軟件項(xiàng)目;運(yùn)用
目前,軟件行業(yè)經(jīng)過了幾十年的發(fā)展后,我們所面對(duì)的軟件系統(tǒng)變得越來越復(fù)雜。傳統(tǒng)的軟件開發(fā)方法,由于其過長的開發(fā)周期、經(jīng)常性的超預(yù)算成本、不令人滿意的軟件質(zhì)量控制、流動(dòng)頻繁的開發(fā)為員團(tuán)隊(duì)、不適合且僵化的管理體系、迅速變化的軟件需求及市場環(huán)境等因素,讓原本就繁重、復(fù)雜的軟件開發(fā)過程越來越不能適應(yīng)現(xiàn)實(shí)的需要。尤其隨著互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,在軟件項(xiàng)目開發(fā)中,項(xiàng)目需求變化的速度也越來越快,如何應(yīng)對(duì)客戶需求的快速變化,交付高質(zhì)量的軟件,已成為現(xiàn)階段軟件開發(fā)公司生存的關(guān)鍵。因此,對(duì)軟件項(xiàng)目管理就提出了較高要求。在這樣的環(huán)境下,一種輕量級(jí)的軟件敏捷開發(fā)方法應(yīng)運(yùn)而生。近年來,Scrum 敏捷開發(fā)方法被越來越多的軟件企業(yè)關(guān)注,國內(nèi)外各大軟件企業(yè)開始紛紛推廣和實(shí)踐。
一、軟件企業(yè)所面臨的問題與挑戰(zhàn)
在信息技術(shù)的不斷發(fā)展推動(dòng)著生產(chǎn)力的不斷提高,并且互聯(lián)網(wǎng)技術(shù)的迅速進(jìn)步將信息和通信技術(shù)推向了一個(gè)新的高度的新時(shí)代背景下,軟件行業(yè)的技術(shù)需求也逐漸滲透到了社會(huì)與生活的各個(gè)領(lǐng)域,并且以更加快速的方式向前發(fā)展。對(duì)于軟件企業(yè)而言,將走向一個(gè)嶄新的發(fā)展階段,但未來也會(huì)面臨著以下諸多挑戰(zhàn):
(1)新軟件產(chǎn)品投放市場的時(shí)間太慢;
(2)項(xiàng)目失敗的比例非常高,投資回報(bào)低;
(3)對(duì)變化與變更的響應(yīng),難度大且成本高;
(4)客戶體驗(yàn)及以客戶為導(dǎo)向的實(shí)現(xiàn)性很差;
(5)軟件質(zhì)量不過關(guān);
(6)員工士氣,動(dòng)力及責(zé)任感很低;
(7)人員流失率非常高;
二、敏捷開發(fā)Scrum 概述
Scrum 是一種敏捷開發(fā)方法,是一個(gè)增量的、迭代的開發(fā)過程。在這個(gè)方法中,整個(gè)開發(fā)周期由若干個(gè)小的迭代周期,每個(gè)小的迭代周期稱為一個(gè)Sprint,每個(gè)Sprint的建議長度為2 到3周。在Scrum中,使用產(chǎn)品Backlog來管理產(chǎn)品的需求,產(chǎn)品 backlog是一個(gè)按照商業(yè)價(jià)值排序的需求列表,列表?xiàng)l目的體現(xiàn)形式通常為用戶故事。Scrum團(tuán)隊(duì)總是先開發(fā)對(duì)客戶具有較高價(jià)值的用戶需求。在每個(gè)Sprint中,Scrum團(tuán)隊(duì)從產(chǎn)品Backlog中挑選最有價(jià)值的用戶需求進(jìn)行開發(fā)。挑選的需求在Sprint計(jì)劃會(huì)議上經(jīng)過討論、分析和估算得到相應(yīng)的任務(wù)列表,我們稱它為Sprint backlog。在每個(gè)迭代結(jié)束時(shí),Scrum團(tuán)隊(duì)將遞交潛在可交付的產(chǎn)品增量。
三、敏捷開發(fā)scrum在軟件項(xiàng)目管理中的運(yùn)用
(一)建立敏捷項(xiàng)目團(tuán)隊(duì)
團(tuán)隊(duì)成員通過對(duì) Scrum 方法中相關(guān)理論、敏捷的特點(diǎn)以及角色和活動(dòng)的掌研究,對(duì)開發(fā)團(tuán)隊(duì)進(jìn)行了組建Scrum 敏捷開發(fā)團(tuán)隊(duì)確定了三種角色,具體為品負(fù)責(zé)人、Scrum Master和開發(fā)團(tuán)隊(duì)。
(二)建立 Scrum 項(xiàng)目開發(fā)流程
Scrum 敏捷開發(fā)模式,是迭代的、增量的開發(fā)過程。敏捷開發(fā)模式將項(xiàng)目分解為多個(gè)迭代,每個(gè)迭代周期時(shí)間為 2 到 3 周,每個(gè)迭代稱為一個(gè) Sprint。在 Scrum中,用 Product Backlog 管理用戶需求。對(duì) Product Backlog 中軟件跟進(jìn)需求的優(yōu)先級(jí)進(jìn)行排序,在 Sprint 計(jì)劃會(huì)上,通過討論再將優(yōu)先級(jí)高的 Product Backlog 中的需求進(jìn)行拆分,形成更詳細(xì)的 Sprint Backlog,最后由 Scrum 開發(fā)團(tuán)隊(duì)對(duì) Sprint Backlog 的用戶故事進(jìn)行認(rèn)領(lǐng)和開發(fā)。Scrum 開發(fā)流程中,通過兩個(gè) Backlog 任務(wù)列表文件,對(duì)用戶需求進(jìn)行了詳細(xì)的管理,用這兩個(gè)列表代替了傳統(tǒng)開發(fā)模式下大量的需求管理文檔,優(yōu)化了管理模式,這兩個(gè)列表分別為:他們分別是產(chǎn)品任務(wù)列表(Product Backlog)和 Sprint任務(wù)列表(Sprint Backlog)。
1.Product Backlog
產(chǎn)品負(fù)責(zé)人通過收集客戶需求,負(fù)責(zé)將用戶需求按照相關(guān)格式整理到 Product
Backlog 列表,并對(duì)整理的需求內(nèi)容進(jìn)行優(yōu)先級(jí)排列。產(chǎn)品列表是持續(xù)完善的動(dòng)
態(tài)的列表,用戶需求需要持續(xù)的進(jìn)行完善,列表中的任務(wù)也隨著迭代的完成,其
狀態(tài)也會(huì)有相應(yīng)的變化,具體狀態(tài)為計(jì)劃中、已交付、已刪除。項(xiàng)目啟動(dòng)后,TJSNBG 項(xiàng)目敏捷實(shí)施產(chǎn)品負(fù)責(zé)人進(jìn)行 Product Backlog 制定,產(chǎn)品負(fù)責(zé)人將產(chǎn)品待辦事項(xiàng)列表的內(nèi)容、可用性和優(yōu)先級(jí)進(jìn)行梳理。
2.Sprint Backlog
Sprint Backlog 具體記錄了 Product Backlog 中拆分出的更加具體,更加詳細(xì)的任務(wù),這些任務(wù)唄標(biāo)識(shí)為 Sprint1、Sprint2、Sprint3 等多個(gè)迭代,Sprint1 則為第一個(gè)迭代周期內(nèi)需要完成的任務(wù),Sprint2 則為第二個(gè)迭代周期內(nèi)需要完成的任務(wù),以此類推,每完成一個(gè) Sprint 迭代,則為一個(gè)小的版本交付,直到所有的 Sprint迭代任務(wù)完成,則最終交付的產(chǎn)品實(shí)現(xiàn)完成。 在 TJSNBG 項(xiàng)目敏捷實(shí)施中,在小版本 Sprint1 迭代時(shí),Scrum 團(tuán)隊(duì)進(jìn)行Sprint Backlog 計(jì)劃,在 Product Backlog 中選出一些功能任務(wù),通過團(tuán)隊(duì)成員、PO、SM 一起討論,確定 Sprint1 計(jì)劃中相關(guān)任務(wù)的優(yōu)先級(jí),并進(jìn)行工作量估算,形成一個(gè)可發(fā)布的 Sprint1 版本。
(三)建立 Scrum 會(huì)議機(jī)制
敏捷項(xiàng)目管理中,最重要的就是 Scrum 會(huì)議,他是 Scrum 管理的特色。通過Scrum 會(huì)議,團(tuán)隊(duì)可以不斷的溝通、反饋、修改。 Scrum 的會(huì)議主要有版本計(jì)劃會(huì)、Sprint 計(jì)劃會(huì)、每日例會(huì)、Sprint 評(píng)審會(huì)和Sprint 回顧會(huì)。
(四)采用輔助工具
為了配合 Scrum 敏捷項(xiàng)目開發(fā),萬維公司在項(xiàng)目管理過程中,采用一些輔助工具來提高 Scrum 軟件開發(fā)過程中項(xiàng)目質(zhì)量。包括:持續(xù)集成平臺(tái) Jenkins,靜態(tài)代碼檢查工具 Findbugs 和單元測試覆蓋率統(tǒng)計(jì)工具 Eclemma。這些輔助工具在Scrum 開發(fā)過程中發(fā)揮了很重要的作用。
(五)Scrum 敏捷過程體系的建立
根據(jù)公司自身業(yè)務(wù)發(fā)展需要,結(jié)合 cmmi 最佳實(shí)踐和敏捷思想,公司組織人員成立了虛擬過程改進(jìn)小組,建立了敏捷過程體系,體系文件中,首先對(duì)軟件過程進(jìn)行階段劃分,具體階段為:規(guī)劃立項(xiàng)階段、發(fā)布計(jì)劃階段、迭代開發(fā)階段、發(fā)布沖刺階段、項(xiàng)目結(jié)項(xiàng)階段、維護(hù)支撐階段。同時(shí)在每個(gè)階段下有相關(guān)的指導(dǎo)書、指導(dǎo)程序、相關(guān)模版、相關(guān)檢查單等,每個(gè)階段具體成果物如下:
項(xiàng)目啟動(dòng)立項(xiàng)階段:項(xiàng)目立項(xiàng)表;
發(fā)布計(jì)劃階段:配置管理計(jì)劃、敏捷開發(fā)項(xiàng)目過程自定義表、業(yè)務(wù)目標(biāo)陳述書;
迭代開發(fā)階段:架構(gòu)設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì)、接口及關(guān)鍵功能模塊設(shè)計(jì)、輕量級(jí)監(jiān)管(度量、評(píng)審、風(fēng)險(xiǎn))、Product Backlog、Sprint Backlog;
發(fā)布沖刺階段:放行測試報(bào)告、上線就緒審查表、配置審計(jì)報(bào)告、安裝調(diào)測
申請(qǐng)單、安裝調(diào)測上線通知;
項(xiàng)目結(jié)項(xiàng)階段:項(xiàng)目總結(jié)報(bào)告、項(xiàng)目結(jié)項(xiàng)確認(rèn)書、完工報(bào)告、客戶驗(yàn)收申請(qǐng)、
驗(yàn)收?qǐng)?bào)告、驗(yàn)收證明、客戶工程資料移交單;
維護(hù)支撐階段:問題列表;同時(shí)在整個(gè)開發(fā)過程管控中,還有全周期監(jiān)控的管理,具體成果物為項(xiàng)目周報(bào)、檢查單等。
四、效果評(píng)價(jià)
第一,Scrum 敏捷方法實(shí)施后,項(xiàng)目 Sprint 迭代發(fā)布基本上控制到了 2-3 周進(jìn)行一次產(chǎn)品版本的迭代發(fā)布。這將避免了發(fā)布時(shí)間是由客戶決定所造成的發(fā)布周期的不固定以及項(xiàng)目進(jìn)度控制難的問題,成功的將項(xiàng)目的進(jìn)度的控制權(quán),從客戶轉(zhuǎn)移到項(xiàng)目團(tuán)隊(duì)。第二,Scrum 敏捷方法實(shí)施后,每個(gè)迭代的產(chǎn)品質(zhì)量團(tuán)隊(duì)共同負(fù)責(zé),而 Scrum 轉(zhuǎn)型前,產(chǎn)品質(zhì)量則由測試團(tuán)隊(duì)負(fù)責(zé)。這樣也提高了Scrum 團(tuán)隊(duì)其他成員對(duì)產(chǎn)品質(zhì)量的重視度,從而有助于提高產(chǎn)品的質(zhì)量。第三,Scrum 敏捷方法實(shí)施后,所有的需求都由產(chǎn)品負(fù)責(zé)人統(tǒng)一管理??蛻粜枨蟀l(fā)生變化時(shí),不會(huì)影響團(tuán)隊(duì)當(dāng)前 Sprint 迭代開發(fā)任務(wù)??蜁r(shí)臨時(shí)有需求變更時(shí),則產(chǎn)品負(fù)責(zé)人會(huì)跟客戶進(jìn)行溝通協(xié)商,確定變更的需求是在本迭代中變更還是在下一個(gè)迭代中變更,能夠更好的應(yīng)對(duì)客戶的需求。
總之,Scrum 是目前被應(yīng)用最廣的一種敏捷方法,是一種迭代的增量的軟件開發(fā)過程。實(shí)踐證明,Scrum在軟件項(xiàng)目管理中的應(yīng)用,能夠極大的提升軟件產(chǎn)品的生產(chǎn)效率和生產(chǎn)質(zhì)量,值得推廣應(yīng)用。
參考文獻(xiàn):
[1]朱獻(xiàn)文.軟件開發(fā)綜合實(shí)訓(xùn)課程Scrum敏捷開發(fā)方法研究[J].信息與電腦(理論版),2018(07)
[2]商志偉.敏捷開發(fā)研究[J].電子世界,2018(07)
[3]王丹.DD公司基于敏捷方法的研發(fā)項(xiàng)目流程優(yōu)化研究[J].中國管理信息化,2018,21(02)