淺談敏捷項目管理在軟件開發(fā)中的應(yīng)用

字號:

摘要:本文先介紹了使用傳統(tǒng)項目管理技術(shù)管理軟件開發(fā)項目的方法,然后介紹了使用敏捷項目管理的初步實踐,通過兩者比較,提出了使用敏捷項目管理進(jìn)行軟件開發(fā)的方法。
    關(guān)鍵詞:敏捷開發(fā)、極限編程、XP、項目管理
    一、使用傳統(tǒng)項目管理技術(shù)管理軟件開發(fā)項目的方法
    按照《人月神話》的說法,軟件開發(fā)是個焦油坑,書店里關(guān)于軟件開發(fā)管理的書籍林良滿目,各個軟件開發(fā)組織也在嘗試和應(yīng)用不同的軟件開發(fā)管理辦法,希望尋找到“軟件開發(fā)的銀彈”。
    在軟件開發(fā)管理中,引入項目管理的辦法,已經(jīng)得到廣大軟件開發(fā)管理人員的一致認(rèn)同,但對于具體實施何種項目管理辦法,各個軟件開發(fā)組織都有不同的答案,更多的迷茫,因為引入的項目管理辦法不能從根本上解決軟件開發(fā)項目面臨的進(jìn)度拖后、費用超支等問題,軟件開發(fā)的銀彈到底在哪里?
    以下是筆者對國內(nèi)軟件開發(fā)組織不同項目管理成熟度的歸納和總結(jié),大概可以分如下幾類;1)小作坊、混沌形的,這樣的組織還處在接單求生存的階段,管理者還根本沒有項目的意識,以滿足客戶需求、定制開發(fā)和回款為第一要務(wù);2)嘗試按照項目管理的思路與方法管理軟件開發(fā)項目,但發(fā)現(xiàn)推行困難,不得要領(lǐng),目前很多中小型的軟件開發(fā)組織都處于這個階段;3)大型的軟件企業(yè),已經(jīng)通過CMM|ISO認(rèn)證、有足夠的資源做保障,實行規(guī)范的項目管理做法,如一些軟件外包工廠。
    本文主要講述處于第二個層次的軟件開發(fā)組織的項目管理問題。軟件開發(fā)項目管理涉及非常多的內(nèi)容,從軟件開發(fā)本身的業(yè)務(wù)出發(fā),有需求管理、變更控制、配置管理、測試管理、系統(tǒng)分析與設(shè)計等;從項目管理的知識領(lǐng)域角度,有范圍管理、時間管理、溝通管理、人力資源管理等內(nèi)容。
    按照傳統(tǒng)的經(jīng)典項目管理方法,通過一定的項目管理模板與IT工具,總結(jié)多個項目的經(jīng)驗,筆者總結(jié)有如下經(jīng)典步驟來完成項目管理的計劃編制與進(jìn)度控制過程:
    計劃編制的經(jīng)典步驟:
    ①建立企業(yè)和項目資源庫:這個是進(jìn)行項目管理的基礎(chǔ)工作。
    ②設(shè)置項目日歷、資源日歷。
    ③設(shè)置項目的主要里程碑點。
    ④在WBS(工作包)下列出工作清單(Task,Activity)。工作分解結(jié)構(gòu)(WBS)和作業(yè)是進(jìn)行項目范圍管理的途徑。
    ⑤對每個Task估計工期。
    ⑥連接每個Task間的邏輯關(guān)系(SS,F(xiàn)S,F(xiàn)S,F(xiàn)F,延時)。
    ⑦加載完成每個Task所需要的資源和資源數(shù)量。
    ⑧進(jìn)度計算后,看開完工里程碑是否符合合同或業(yè)主要求,看資源負(fù)荷是否過大。
    ⑨看進(jìn)度計劃是否需要調(diào)整。
    ⑩調(diào)整的方法為:壓縮關(guān)鍵路徑上Task的工期,多投入資源以縮短工期,分解較長工期的作業(yè)。
    ⑾看調(diào)整后的進(jìn)度計劃是否合適。合適的話,則把第一份計劃,保存為目標(biāo)計劃(Baseline)。
    ⑿張榜發(fā)布第一版本計劃,通知項目干系人。
    進(jìn)度控制的經(jīng)典步驟:
    ①確定進(jìn)度報告的周期,以周計還是以月計。
    ②下發(fā)第一個報告周期內(nèi)所有成員的Task清單(例如內(nèi)容、質(zhì)量要求、時間要求)。
    ③第一個報告周期結(jié)束時,各個成員反饋自己負(fù)責(zé)的Task實際進(jìn)展(例如實際開始時間、實際結(jié)束時間、完成百分比、尚需工期、本期的資源消耗數(shù)量、工作結(jié)果的提交)
    ④匯總各個成員的進(jìn)度報告,產(chǎn)生實際進(jìn)度計劃。
    ⑤把實際進(jìn)度計劃與目標(biāo)計劃(Baseline)做對比,監(jiān)控主要的里程碑點是否還符合業(yè)主或合同的要求,周例會上針對每個員工的任務(wù)完成情況作對比。
    ⑥如果不符合,則調(diào)整計劃,并存儲為新的目標(biāo)計劃。
    ⑦下發(fā)下一報告周期項目成員工作內(nèi)容清單(Task)。
    ⑧……循環(huán)往復(fù),直到項目結(jié)束。
    計劃編制的其他技巧:
    ①團(tuán)隊成員依據(jù)責(zé)任分工,協(xié)同完成計劃編制工作。
    ②編制多層計劃(適用于大型的項目,項目群管理)。
    ③編制滾動計劃(適用于工期很長的項目)。
    上述方法對于任何傳統(tǒng)項目或IT實施服務(wù)項目,都是適用的,而且可以達(dá)到很好的項目,也是實施項目管理的必由之路。筆者對于本事業(yè)部所有的IT服務(wù)項目,都是使用這個方法進(jìn)行管理,達(dá)到了項目進(jìn)度控制的目的。
    但對于軟件開發(fā)活動,由于其與傳統(tǒng)項目如工程建設(shè)項目的顯著區(qū)別,在應(yīng)用上述方法與步驟時,往往達(dá)不到理想的效果,很多軟件開發(fā)組織在推行這套管理思路與方法的時候,也遇到了很多困難。主要表現(xiàn)在:
    1)傳統(tǒng)項目的時間估算可能存在歷史或經(jīng)驗數(shù)據(jù),而軟件開發(fā)的活動工期估算卻是因人而異;
    2)軟件開發(fā)包含大量創(chuàng)新性活動,而這些創(chuàng)新性活動很難確定合適的工期;
    3)經(jīng)典的計劃編制方法中,強(qiáng)調(diào)作業(yè)間的依賴性(邏輯關(guān)系),以作業(yè)間邏輯關(guān)系來推算和安排項目進(jìn)度,而在實際的軟件開發(fā)活動中,意義不大;
    4)新型的軟件開發(fā)方法,如迭代開發(fā),很難就單個作業(yè)(功能點)反饋進(jìn)度,因為某個功能開發(fā)在周期內(nèi)是反復(fù)進(jìn)行的,進(jìn)度反饋可操作性差。
    5)我們需要反思這樣一個問題:“項目管理如何為一個項目增加價值”,因為很多開發(fā)人員把項目管理活動如工時填報、進(jìn)度反饋做為額外的負(fù)擔(dān),認(rèn)為項目管理師日常行政管理活動,不為項目增加價值;
    反思傳統(tǒng)項目管理技術(shù)在軟件開發(fā)活動中的應(yīng)用,我們發(fā)現(xiàn):這樣的做法過于強(qiáng)調(diào)計劃管理和控制的自動調(diào)節(jié)模式,而對項目管理應(yīng)該做的重點—實施—不夠重視。
    針對軟件開發(fā)活動,傳統(tǒng)計劃存在一定的問題:如計劃的動機(jī)通常來自于項目之外,即制定計劃的目的可能是為了滿足管理的要求,而不是基于需要完成的工作;制定計劃的動機(jī)往往與控制欲望有關(guān),而不是與實際工作的實施需要有關(guān);制定計劃的人不參與實際工作,項目經(jīng)理為了控制目的而制定的、以任務(wù)為基礎(chǔ)的計劃與開發(fā)人員的實際工作幾乎沒有任何聯(lián)系;站在項目管理的角度,計劃和控制成為了焦點,而具體做事被看作是最不重要的,項目任務(wù)的合法化優(yōu)先于產(chǎn)生的結(jié)果。
    上述問題導(dǎo)致項目管理活動與軟件開發(fā)的具體活動存在脫節(jié)和兩層皮的問題,客觀上導(dǎo)致了管理費的增加,而看不到項目管理對于項目的真實價值。
    二、使用敏捷項目管理的初步實踐
    在當(dāng)前的市場條件下,為商業(yè)競爭的需要,開發(fā)團(tuán)隊必須有以更快的速度開發(fā)和交付質(zhì)量更好、更具客戶價值和創(chuàng)新性的產(chǎn)品。軟件開發(fā)的方式須由預(yù)見性(以計劃為推動力)向適應(yīng)性(對不確定性的探索)轉(zhuǎn)變,以滿足客戶對創(chuàng)新的不斷需求。與此相適應(yīng),項目管理也需要強(qiáng)調(diào)速度、機(jī)動性和質(zhì)量,一種區(qū)別于傳統(tǒng)結(jié)構(gòu)化、改良或創(chuàng)新的項目方法,敏捷項目管理就誕生了。
    敏捷項目管理的核心是敏捷軟件開發(fā),與傳統(tǒng)軟件開發(fā)模式相比,敏捷軟件開發(fā)突出如下四點:1)個體和交互勝過過程與工具;2)可以工作的軟件勝過面面俱到的文檔;3)客戶合作勝過合同談判;4)響應(yīng)變化勝過遵循計劃。
    敏捷項目管理是側(cè)重于實施的模式,而不是側(cè)重于計劃和控制的模式。在敏捷項目管理中,項目經(jīng)理的首要任務(wù)是促進(jìn)產(chǎn)品構(gòu)想的構(gòu)思,并指導(dǎo)團(tuán)隊去實現(xiàn)該構(gòu)想,而不是制定計劃和進(jìn)度表、控制進(jìn)度,保證“計劃”得以實行。當(dāng)然敏捷項目管理不是反對計劃的模式。計劃(和控制)是敏捷項目管理的組成部分,只不過它不是重點。
    在做好做實需求管理、變更管理、測試管理、配置管理、分析與設(shè)計管理等業(yè)務(wù)的基礎(chǔ)上,筆者在自己的團(tuán)隊中推行“以構(gòu)架為中心、用例驅(qū)動、迭代開發(fā)”的敏捷項目管理方法。試圖在對傳統(tǒng)項目管理方法反思的基礎(chǔ)上,提高項目管理活動對于項目成功的真正價值。
    “以構(gòu)架為中心、用例驅(qū)動、迭代開發(fā)”三句話來自IBM的RUP軟件開發(fā)過程,是一種重量級的軟件開發(fā)過程指南。需要有明確的責(zé)任分工和大量的過程文檔,顯然不適合中小型開發(fā)團(tuán)隊。但卻道出了成功進(jìn)行軟件系統(tǒng)開發(fā)的核心要素:缺乏良好的構(gòu)架,軟件可維護(hù)性差,質(zhì)量不行;必須是用例(需求)驅(qū)動;迭代開發(fā)又稱增量開發(fā),指構(gòu)建軟件的方式,整個生命周期依次由幾個迭代組成,每個迭代是自包含的迷你項目,他們由活動組成,例如,需求分析、設(shè)計、編程和測試。每次迭代之后將產(chǎn)生一個迭代版本,這是一個部分完成的系統(tǒng),但它是穩(wěn)定的、完整的和被測試過的。
    在流派上,敏捷包括Scrum、極限編程、統(tǒng)一過程(RUP)、Evo等方法。結(jié)合團(tuán)隊實際情況,綜合各種方法,進(jìn)行了如下一些嘗試性實踐:
    1)轉(zhuǎn)變團(tuán)隊的溝通方式:過程文件盡可能減少,能不形成office文件的,盡量不需要。對于需要多人協(xié)作溝通的,盡量使用軟件系統(tǒng),如需求使用TRICHORD,數(shù)據(jù)庫設(shè)計使用PowerDesigner,Bug及變更使用Bugfree,配置管理使用SVN,測試使用TestDirector,項目管理系統(tǒng)使用PowerOn(主要管理實施文件、項目成本、人工時)。給每個團(tuán)隊都配備白板等溝通工具。同時項目團(tuán)隊還有自己的門戶網(wǎng)站。項目成員對這些工具軟件的充分應(yīng)用,都是為了提高溝通的效率,減少溝通過程中的信息丟失,同時都是些必要的溝通,項目成員之間基于軟件系統(tǒng)的溝通過程,也就是業(yè)務(wù)的處理過程。
    2)采用迭代的開發(fā)方式:我們約定每次小版本的發(fā)布周期為1個月,每周進(jìn)行一次迭代,經(jīng)過4次迭代,小版本即可發(fā)布試用。每次小版本包括若干需要實現(xiàn)的Feature, 在每次迭代中,F(xiàn)eature細(xì)化為用戶Story,而對于每個Story的實現(xiàn),則再細(xì)化為具體的任務(wù)(Task)。這樣的劃分,與WBS的劃分基本一致,不同的是,傳統(tǒng)項目管理的Task很重要的一個屬性是時間,以及作業(yè)之間的邏輯關(guān)系,而迭代開發(fā)中的這種劃分,卻是為了更好的完成任務(wù),Task使用Size度量工作量的大小,并且使用看板管理每次迭代的總體進(jìn)度。
    3)變傳統(tǒng)的計劃編制與進(jìn)度控制模式為直觀的看板式管理辦法:
    通過把Feature、Story、Task以看板的形式,直觀的體現(xiàn)在團(tuán)隊成員面前,團(tuán)隊成員可以更好的理解當(dāng)前任務(wù)及進(jìn)度,并且項目管理不自覺地已經(jīng)蘊含在日常活動中,項目管理這支手看不不見了,但仍舊在起作用,團(tuán)隊的知識工作者則獲得了更好地工作環(huán)境,公司獲得了更高質(zhì)量、更及時的的交付產(chǎn)品。
    三、總結(jié)
    通過敏捷項目管理的初步實踐,團(tuán)隊的產(chǎn)品交付有了固定的頻率,每次迭代出來的都是可以直接交付客戶使用的版本,也防止了需求蔓延導(dǎo)致項目進(jìn)度拖后挫傷成員積極性等事情的發(fā)生,極大的提高了團(tuán)隊成員的積極性和生產(chǎn)效率。PowerOn各個小版本的交付周期平均縮短1.5個月,保證了公司為應(yīng)對市場變化而提高產(chǎn)品研發(fā)效率的戰(zhàn)略要求。
    敏捷項目管理在傳統(tǒng)項目管理的基礎(chǔ)上,把項目管理的職能化“有形”為“無形”,適合知識型員工的、帶有創(chuàng)新性質(zhì)的中小型項目,為我們縮短產(chǎn)品交付周期、提高員工積極性,營造良好的團(tuán)隊文化提供了一條新的途徑。