3 敏捷管理模式在軟件開發(fā)項(xiàng)目中的應(yīng)用
敏捷最早出現(xiàn)于1995年,相比于“分析—設(shè)計(jì)—實(shí)現(xiàn)”這種“重量級(jí)”(heavyweight)瀑布式軟件開發(fā)方法,敏捷提倡“輕量級(jí)”(lightweight)的開發(fā)模式。“輕”與“重”的差異不是說(shuō)敏捷丟棄分析、設(shè)計(jì)這些過(guò)程,敏捷要求分析和設(shè)計(jì)要適度而不是過(guò)度,而且敏捷更強(qiáng)調(diào)迭代,要求迭代的周期不要太長(zhǎng),通常是2~4周,這樣軟件產(chǎn)品是通過(guò)一次一次的較短周期迭代而成,每次迭代都有交付成果,而不是經(jīng)歷漫長(zhǎng)的過(guò)程等待,等待軟件最終的“破繭成蝶”。敏捷歷史上最為重大的事件是“敏捷軟件開發(fā)宣言”(Manifesto for Agile Software Development)的發(fā)表,宣言制定了4個(gè)核心價(jià)值觀:
“我們正在通過(guò)實(shí)踐和幫助其他人實(shí)踐,揭示更好的開發(fā)軟件的方法。我們的價(jià)值觀是:
?、偃撕拖嗷ソ涣鲃儆谶^(guò)程和工具;
?、诳梢怨ぷ鞯能浖儆谇笕?zé)備的文檔;
③與客戶協(xié)作勝于合同談判;
?、茈S時(shí)應(yīng)對(duì)變化勝于按部就班。也就是說(shuō),雖然右邊的條目有價(jià)值,但我們更看重左邊的條目。”
正如敏捷所提倡的,它的宣言也異常“輕量”。敏捷宣言強(qiáng)調(diào)在實(shí)踐中揭示好的方法,并且認(rèn)為人(開發(fā)者與客戶)、可交付成果(軟件)、適應(yīng)變化這三者在軟件開發(fā)中更為重要,它的核心是“變革”,也就是從“重量級(jí)”的過(guò)程式開發(fā)變革到“輕量級(jí)”的敏捷開發(fā),對(duì)過(guò)程式開發(fā)過(guò)度倚重的過(guò)程、文檔、計(jì)劃進(jìn)行精簡(jiǎn),一個(gè)組織、一個(gè)團(tuán)隊(duì)、一個(gè)項(xiàng)目是否敏捷,判斷的唯一依據(jù) 就是是否遵循這四條原則,敏捷的項(xiàng)目管理同樣需要遵循這四條原則。
在軟件開發(fā)項(xiàng)目中引入敏捷之后,將會(huì)引發(fā)管理上的一系列變革。首先,關(guān)注重點(diǎn)由過(guò)程轉(zhuǎn)向人,過(guò)程是死的,人是活的,敏捷管理將充分調(diào)動(dòng)人的自主能動(dòng)性,對(duì)于依靠人這一最主要生產(chǎn)要素才得以實(shí)現(xiàn)的軟件產(chǎn)品來(lái)說(shuō),敏捷管理的這一做法真正回歸到了前面分析的“管理的本質(zhì)”,即充分發(fā)揮各個(gè)組織以及成員的潛能,敏捷管理將關(guān)注客戶與開發(fā)人員間的協(xié)作和交流,以及開發(fā)人員之間的協(xié)作和交流;其次,它將管理控制對(duì)象由項(xiàng)目計(jì)劃轉(zhuǎn)向項(xiàng)目的交付成果———軟件,這一轉(zhuǎn)變統(tǒng)一了客戶方與開發(fā)方的期待,而不是象過(guò)程管理強(qiáng)調(diào)了計(jì)劃卻忽略了客戶的期待和項(xiàng)目的最終目標(biāo),這種統(tǒng)一消除了雙方內(nèi)在隱含的“此消彼長(zhǎng)”邏輯關(guān)系,成為促進(jìn)項(xiàng)目成功的“共同動(dòng)力”;再次,敏捷要求在軟件開發(fā)過(guò)程中隨時(shí)可以適應(yīng)變化,甚至在項(xiàng)目快要結(jié)束的時(shí)候也能夠接受變更,這種能力解決了軟件產(chǎn)品由于“漸進(jìn)認(rèn)知”特點(diǎn)進(jìn)而引發(fā)需求變更的難題,而且除了流程、技術(shù)具備這種適應(yīng)能力之外,敏捷更要求開發(fā)人員擁有適應(yīng)變化的正確態(tài)度,擁抱變化而不是拒絕變化,這種態(tài)度轉(zhuǎn)變消除了客戶方和開發(fā)方之間關(guān)于“變更”存在的矛盾,進(jìn)一步掃清了項(xiàng)目成功道路上的“人為”障礙;最后,敏捷鼓勵(lì)創(chuàng)新,創(chuàng)新不是去創(chuàng)造一件前所未有的產(chǎn)品,而是為客戶“挖掘”新的價(jià)值,敏捷鼓勵(lì)新思維、使用新技術(shù),只有這樣才能適應(yīng)變化的環(huán)境,為客戶帶來(lái)價(jià)值,另一方面敏捷要求消除浪費(fèi),凡是不能為客戶提供價(jià)值的合規(guī)活動(dòng)———比如冗余的開發(fā)文檔,這些活動(dòng)就應(yīng)該堅(jiān)決擯除,消除浪費(fèi)可以把更多開發(fā)重心放在為客戶創(chuàng)造價(jià)值的活動(dòng)上,這是一個(gè)“反向增值”的舉措。
因此,敏捷4個(gè)核心價(jià)值觀的核心就是一個(gè)詞:變革。敏捷宣言發(fā)起人之一的Jim Highsmith在《敏捷項(xiàng)目管理》中提出了幾個(gè)重要觀點(diǎn):
①敏捷是促進(jìn)變革并響應(yīng)變化以便在動(dòng)蕩的商業(yè)環(huán)境中創(chuàng)造利潤(rùn)的能力;
?、诿艚菔瞧胶忪`活性和穩(wěn)定性的能力;③敏捷更多的是一種態(tài)度而不是一個(gè)流程,是一種氛圍而不是方法。這幾個(gè)觀點(diǎn)給敏捷管理指出了方向:敏捷管理應(yīng)該轉(zhuǎn)變?nèi)说乃季S和態(tài)度,應(yīng)該營(yíng)造敏捷的團(tuán)隊(duì)氛圍,應(yīng)該培養(yǎng)敏捷的應(yīng)變能力,最終在多變的環(huán)境下創(chuàng)造利潤(rùn),而轉(zhuǎn)變的關(guān)鍵在于對(duì)靈活性和平衡性的把握。在軟件項(xiàng)目開發(fā)中,敏捷的范圍管理首先要做的是轉(zhuǎn)變態(tài)度,去適應(yīng)范圍的變化,而不是去控制;對(duì)于變更,應(yīng)該是樂于接受,而不是盲目排斥。
除了價(jià)值觀作為指導(dǎo),敏捷同時(shí)提供最佳的實(shí)踐做法,比如測(cè)試驅(qū)動(dòng)開發(fā)(TDD)、特征驅(qū)動(dòng)開發(fā)(FDD),結(jié)對(duì)編程(Paring Coding)等,并且提供給軟件開發(fā)組織各種敏捷的開發(fā)和管理框架,其中應(yīng)用最為廣泛的是SCRUM。
SCRUM的英文意思是英式橄欖球隊(duì),SCRUM這個(gè)開發(fā)框架將軟件團(tuán)隊(duì)比作橄欖球隊(duì),有明確的最高目標(biāo),熟悉開發(fā)流程中所應(yīng)具備的最佳典范和技術(shù),擁有高度自主權(quán),緊密溝通與協(xié)作,高適應(yīng)性地迎接各種挑戰(zhàn),確保每天、每個(gè)階段都明確地朝目標(biāo)推進(jìn)。SCRUM的實(shí)施過(guò)程是:
(1)制定產(chǎn)品Backlog,Backlog是軟件產(chǎn)品的一個(gè)需求列表。
(2)將整個(gè)產(chǎn)品的Backlog分解成Sprint Backlog,這個(gè)Sprint Backlog是按照目前的人力物力條件可以完成的。Sprint意思是沖刺,代表一次迭代周期(通常為30天),開發(fā)團(tuán)隊(duì)需要完成一個(gè)制定的Spring Back-log,并且最終成果是一個(gè)增量的、可以交付的產(chǎn)品。
(3)召開Sprint Planning Meeting,確定這個(gè)Sprint內(nèi)需要完成的任務(wù),標(biāo)注任務(wù)的優(yōu)先級(jí)并分配給每個(gè)成員。
(4)進(jìn)入Sprint開發(fā)周期,在這個(gè)周期內(nèi),每天需要召開Daily Scrum Meeting(站立式會(huì)議)。
(5)整個(gè)Sprint周期結(jié)束,召開Sprint ReviewMeeting,將成果演示給Product Owner。
(6)團(tuán)隊(duì)成員最后召開Sprint Retrospective Meet-ing,總結(jié)問(wèn)題和經(jīng)驗(yàn)。
(7)這樣周而復(fù)始,按照同樣的步驟進(jìn)行下一次Sprint。
從SCRUM實(shí)施過(guò)程可以看出,產(chǎn)品Backlog的制定對(duì)應(yīng)于傳統(tǒng)過(guò)程管理的范圍定義(Scope Defining),產(chǎn)品Backlog是客戶期待包含進(jìn)項(xiàng)目的軟件特征列表,在制定這個(gè)特征列表的時(shí)候,最需要注意的是確保這些特征能夠彼此獨(dú)立,這樣的劃分使得隨時(shí)做優(yōu)先排序或者進(jìn)行變更成為可能。
作為項(xiàng)目管理者,有幾點(diǎn)是在制定產(chǎn)品Backlog中要明確的:第一,產(chǎn)品Backlog SCRUM實(shí)施過(guò)程允許隨著項(xiàng)目進(jìn)展而進(jìn)行變更,或者增加,或者修改,或者刪減其中的一些特征;第二,產(chǎn)品Backlog的制定需要客戶參與,并且由客戶做出選擇;第三,產(chǎn)品Back-log有一個(gè)擁有者,即Product Backlog Owner,這個(gè)擁有者可以是開發(fā)方的產(chǎn)品經(jīng)理,或者直接來(lái)自客戶,他擁有該特征列表的最終決定權(quán);第四,產(chǎn)品Backlog的優(yōu)先排序原則將取決于特征的價(jià)值,也就是說(shuō),如果不是現(xiàn)在就實(shí)現(xiàn)這個(gè)功能,會(huì)存在哪些風(fēng)險(xiǎn),或者要丟失什么樣市場(chǎng)機(jī)遇,應(yīng)該根據(jù)價(jià)值原則做出決定;
第五,需要對(duì)產(chǎn)品Backlog的各特征項(xiàng)進(jìn)行大小和復(fù)雜程度進(jìn)行估計(jì)。
傳統(tǒng)過(guò)程管理通過(guò)范圍分解(WBS)來(lái)建立工作分解結(jié)構(gòu)詞匯表,獲得范圍基準(zhǔn),并且為制訂項(xiàng)目進(jìn)度計(jì)劃提供輸入,這在敏捷開發(fā)當(dāng)中沒有專門對(duì)應(yīng)的技術(shù)和方法。在實(shí)際操作中,SCRUM將一個(gè)完整項(xiàng)目劃分為若干個(gè)小項(xiàng)目,每個(gè)小項(xiàng)目稱為一個(gè)發(fā)布(Re-lease),然后一個(gè)發(fā)布又分為多個(gè)Sprint,Sprint有自己的Sprint Backlog,每個(gè)Sprint Backlog包含完成任務(wù)所需的Backlog Item,這個(gè)過(guò)程有些類似于任務(wù)分解,但是分解的目的并不是為了接下去做一個(gè)“龐大而務(wù)求精準(zhǔn)”的項(xiàng)目計(jì)劃,而是在一個(gè)Sprint當(dāng)中具體地細(xì)分任務(wù),實(shí)現(xiàn)任務(wù)并且交付成果。敏捷的做法其實(shí)是將分解的任務(wù)以及能力轉(zhuǎn)移到敏捷的團(tuán)隊(duì)開發(fā)當(dāng)中,這種轉(zhuǎn)移化解了信息輸入不夠而可能造成的計(jì)劃不當(dāng)風(fēng)險(xiǎn),并且由開發(fā)團(tuán)隊(duì)的成員協(xié)作完成,使開發(fā)人員更明確各自的任務(wù)和交付成果,增強(qiáng)了自主性。
基于這種增量和迭代的方法,采用敏捷方法的項(xiàng)目經(jīng)理可以制訂更高層次的計(jì)劃來(lái)控制項(xiàng)目范圍和進(jìn)度。當(dāng)一次迭代完成后,客戶可以立即參與到交付成果評(píng)估當(dāng)中,客戶評(píng)估的對(duì)象是可用的功能,而不是一個(gè)空泛的文件說(shuō)明,客戶要么接受這一迭代的成果,要么提出改進(jìn)意見,要么可以拒絕這個(gè)成果。這種驗(yàn)收方式,即范圍核實(shí)(Scope Verification)較傳統(tǒng)的“一次性驗(yàn)收”顯得更為具體和可行,它及時(shí)獲得客戶的反饋,而吸納反饋后改進(jìn)的軟件功能才有可能為客戶提供更多價(jià)值。
在范圍控制上,實(shí)施敏捷的項(xiàng)目團(tuán)隊(duì)更有信心面對(duì)變更,因?yàn)檫m應(yīng)性已經(jīng)成為團(tuán)隊(duì)最為突出的能力,提供客戶價(jià)值、正確的態(tài)度、迭代、協(xié)作、創(chuàng)新是這種信心的有力保障,項(xiàng)目經(jīng)理面對(duì)變更需要把握的處理原則就是:客戶價(jià)值在什么地方,應(yīng)該在可獲得的時(shí)間與資源中,交付什么樣的成果從而為客戶帶來(lái)最大的價(jià)值。 變更的結(jié)果有可能是為了增加更高價(jià)值的功能,而另一些則需要拋棄,這就是Jim Highsmith提到的敏捷的“平衡能力”。
4 結(jié)語(yǔ)
最后再將目光重新投向“項(xiàng)目三角形”,在引入敏捷之后,或許不能再這么簡(jiǎn)單地利用三個(gè)因素去考慮和衡量一個(gè)項(xiàng)目,美國(guó)項(xiàng)目管理專家Johanna Rothman提出了這么一個(gè)“項(xiàng)目新三角”。
在這個(gè)新三角形當(dāng)中,由成本(cost)、工作環(huán)境(work environment)、人以及人的能力(People and theirCapabilities)三條邊決定三角形的大小,從三角形內(nèi)部的一個(gè)點(diǎn)向三角形的頂點(diǎn)各引一條線,分別是范圍(Feature Set)、時(shí)間(Time to Market)、質(zhì)量(Low De-fects),很明顯內(nèi)部的這三條線受到雙重約束,第一重約束是由外部三條邊所構(gòu)成的這個(gè)三角形,第二重約束就是內(nèi)部的三條線之間的制約:如果拽住這三條線的聯(lián)結(jié)點(diǎn)進(jìn)行拉伸,任何一條線的長(zhǎng)短變化都會(huì)引起其他兩條線的變化。
這個(gè)新“項(xiàng)目三角形”帶來(lái)很大的啟發(fā),假如能夠擴(kuò)大整個(gè)三角形,那么范圍、時(shí)間、質(zhì)量這三個(gè)因素間的矛盾就將從根本上得以緩解甚至消除!這是一個(gè)嶄新的視角,該如何去擴(kuò)大這個(gè)“三角形”,答案在哪里?
當(dāng)一個(gè)軟件項(xiàng)目引入敏捷之后,就能找到這個(gè)答案,因?yàn)檎鏙im Highsmith的精辟見解一樣———“敏捷更多是一種‘態(tài)度’,是一種‘氛圍’”,而態(tài)度足以改變一個(gè)人,足以改變整個(gè)團(tuán)隊(duì),足以改變客
戶方與開發(fā)方的關(guān)系,氛圍則是敏捷所創(chuàng)造的平等、自主、協(xié)作、適應(yīng)和創(chuàng)新的工作環(huán)境,這不正是新三角形中People and their Capabilities與Work Environment這兩條邊嗎?
最后,幾乎可以很肯定地說(shuō),擁有敏捷團(tuán)隊(duì)的項(xiàng)目經(jīng)理將是一個(gè)非常幸運(yùn)的人。
溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,信管網(wǎng)網(wǎng)站提供的以上信息僅供參考,如有異議,請(qǐng)以權(quán)威部門公布的內(nèi)容為準(zhǔn)!
信管網(wǎng)致力于為廣大信管從業(yè)人員、愛好者、大學(xué)生提供專業(yè)、高質(zhì)量的課程和服務(wù),解決其考試證書、技能提升和就業(yè)的需求。
信管網(wǎng)軟考課程由信管網(wǎng)依托10年專業(yè)軟考教研傾力打造,官方教材參編作者和資深講師坐鎮(zhèn),通過(guò)深研歷年考試出題規(guī)律與考試大綱,深挖核心知識(shí)與高頻考點(diǎn),為學(xué)員考試保駕護(hù)航。面授、直播&錄播,多種班型靈活學(xué)習(xí),滿足不同學(xué)員考證需求,降低課程學(xué)習(xí)難度,使學(xué)習(xí)效果事半功倍。
發(fā)表評(píng)論 查看完整評(píng)論 | |