何晶
(北京軟件產(chǎn)品質(zhì)量監(jiān)測檢驗中心,北京 100193)
軟件項目管理應(yīng)用方法最早出現(xiàn)于20世紀(jì)60年代,最早的瀑布法成為當(dāng)時社會環(huán)境下所有軟件公司的普遍開發(fā)方法,現(xiàn)代社會技術(shù)的發(fā)展改變了現(xiàn)有的硬件環(huán)境,也讓軟件項目的管理面臨要求更高的局面。原有的開發(fā)方法存在明顯缺陷,讓階段和階段之間存在著一定程度的矛盾。再加上軟件項目開發(fā)過程當(dāng)中本身存在的變化和不確定因素,尤其是日益變更的用戶需求和計算機硬件環(huán)境的改變,對此確定軟件項目管理措施也具有明確的現(xiàn)實意義。
敏捷項目管理概念與敏捷軟件開發(fā)之間存在的密切聯(lián)系,而敏捷軟件開發(fā)的深度發(fā)展,使得某些極端項目的管理理念變得更加精確的具體,所以在有效的方法被提出之后,該管理概念也成為項目管理方面的一種統(tǒng)一化稱謂?!癝crum”在英文里所指代的是橄欖球運動的“爭球”,所以該技術(shù)將軟件開發(fā)比作一個橄欖球隊伍,隊伍有著相應(yīng)的比賽目標(biāo),并且在開發(fā)過程當(dāng)中利用相應(yīng)的技術(shù)和方法進行自主規(guī)劃,通過互相交流合作,借助彈性化的問題解決方式來處理團隊遇到的各種問題,確保團隊中的每個人員都能達到既定的目標(biāo)。從20世紀(jì)90年代開始,很多企業(yè)就用此類方法進行復(fù)雜產(chǎn)品的開發(fā),且用戶在框架當(dāng)中的地位和作用也將發(fā)生改變,能夠用技術(shù)手段完成過程構(gòu)建,并且在調(diào)整的過程當(dāng)中確保項目的行進方向不偏移最終目標(biāo)。總體而言Scrum能夠以經(jīng)驗過程控制理論為依據(jù),對軟件產(chǎn)品開發(fā)過程的可預(yù)見性風(fēng)險展開提前控制,具有高透明度和檢驗特征。如果在檢驗環(huán)節(jié)發(fā)現(xiàn)某個方面無法達到既定的標(biāo)準(zhǔn),或是導(dǎo)致產(chǎn)品可能無法滿足要求,那么團隊內(nèi)部就會以此為基礎(chǔ)對過程展開調(diào)整。在一些復(fù)雜的動態(tài)環(huán)境當(dāng)中,各項工作之間本身具有關(guān)聯(lián)性,它作為一種輕量級的軟件開發(fā)框架,能夠定位最高優(yōu)先級的需求,在現(xiàn)有設(shè)計流程總結(jié)基礎(chǔ)上,不斷適應(yīng)團隊變化讓有效工作最大化,每個參與者都能對自己的工作進行總結(jié),將工作狀態(tài)發(fā)揮至最佳水準(zhǔn)。
在人類社會的各個領(lǐng)域當(dāng)中越來越多使用先進的計算機技術(shù),而軟件項目本身立足于軟件和產(chǎn)品的開發(fā)過程,產(chǎn)品特性和軟件項目管理之間呈現(xiàn)的正相關(guān)關(guān)系,與其他領(lǐng)域的項目管理有著明確的差異,因此軟件產(chǎn)品的開發(fā)過程實際上可以被視為是符合邏輯的指令運作過程,以信號發(fā)送來控制機器或人員的互動。定位模糊需求就可以了解到軟件項目管理的特殊性,用以規(guī)劃人力資源或成本控制來達到用戶的需求和希望,實現(xiàn)項目管理的最終目標(biāo)。軟件項目管理概念涵蓋的產(chǎn)品開發(fā)所必要的知識和工具,為了讓軟件項目能夠按照既定的成本和質(zhì)量要求完成,我們會考慮到軟件產(chǎn)品本身在功能方面的需求。具體而言,軟件產(chǎn)品開發(fā)環(huán)節(jié)的技術(shù)與管理方式將直接關(guān)系到計算機通信技術(shù)發(fā)展水平的階段性特征,在某些軟件項目的運作環(huán)節(jié),功能需求多樣化且沒有標(biāo)準(zhǔn)的軟件過程時只能從軟件開發(fā)的各個階段中來推測有關(guān)情況。按照敏捷軟件項目管理的理念而言,相比于傳統(tǒng)軟件開發(fā)過程,它更加強調(diào)用戶的需求變化與項目成本風(fēng)險控制,讓敏捷管理方法更加適用于一些成本風(fēng)險日益增加的軟件開發(fā)項目,并且可以盡早規(guī)劃有價值的產(chǎn)品而提出下一步的明確需求。這樣一來,用戶在開發(fā)過程當(dāng)中就可以了解到設(shè)計環(huán)節(jié)的一些重難點問題,通過相應(yīng)的步驟處理以減少復(fù)雜局面[1]。
我們根據(jù)當(dāng)前項目組織的具體要求可以了解到,如果要對項目組織結(jié)構(gòu)進行調(diào)整,并維持整個生產(chǎn)環(huán)節(jié)的靈活性特點,Scrum敏捷方法無疑成為了項目團隊重新構(gòu)建時的主要載體,并以此為基礎(chǔ)建立具有迭代特征的項目管理團隊發(fā)揮自組織特性。無論是客戶還是管理層等利益相關(guān)者,都可以共同確定產(chǎn)品的優(yōu)化過程,了解團隊當(dāng)中的角色定位關(guān)系。
從角色來看產(chǎn)品負責(zé)人是項目的主要利益代表,它象征著整個產(chǎn)品線的利益,并且在確定管理方法和產(chǎn)品列表之后,就能確定不同產(chǎn)品的不同商業(yè)價值,從數(shù)據(jù)差異中了解產(chǎn)品任務(wù)的優(yōu)先級。不能了解自己在整個任務(wù)列表中應(yīng)該完成的目標(biāo)任務(wù),并且確定哪些任務(wù)目標(biāo)的優(yōu)先級最為突出,哪些任務(wù)目標(biāo)可以暫時擱置。負責(zé)人會對產(chǎn)品列表的所有條目進行整合分析,從中確定商業(yè)價值的差異,并且負責(zé)人會有權(quán)接受或拒絕開發(fā)團隊的軟件增量。任何人想要改變軟件條目的優(yōu)先級,都需要先與產(chǎn)品負責(zé)人進行交流,這就說明產(chǎn)品負責(zé)人要承擔(dān)具體的開發(fā)任務(wù)。
團隊領(lǐng)導(dǎo)層則按照具體的價值觀和既定規(guī)劃,確保開發(fā)團隊能夠形成自組織和跨職能的高協(xié)調(diào)合作團隊,讓整個開發(fā)進程按照要求順利推進,各個角色之間也能相互交流合作,需要注意的是,團隊領(lǐng)導(dǎo)層不可兼任團隊的產(chǎn)品負責(zé)人。
在目前的軟件行業(yè)當(dāng)中,產(chǎn)品需要加速上市,才能在市場競爭中始終占據(jù)有利地位,傳統(tǒng)的瀑布式開發(fā)方法讓每個階段在進入下一階段前都需要完成當(dāng)前的某些工作,但軟件項目本身的需求會伴隨著項目開發(fā)進程不斷轉(zhuǎn)變,這就需要在流程方面進行綜合考評,讓開發(fā)流程充分解決未來的各種問題。Scrum作為一個敏捷開發(fā)框架本身也是迭代的開發(fā)過程,使用產(chǎn)品任務(wù)列表確定軟件產(chǎn)品的需求之后,可以在進行風(fēng)險分析和設(shè)計的基礎(chǔ)上完成測試和驗證,最終調(diào)整計劃確定產(chǎn)品的最終特點[2]。一個sprint就是一個迭代過程,具有時間周期特征,團隊領(lǐng)導(dǎo)層會通過開發(fā)和評審的方式確定團隊的未來發(fā)展目標(biāo)。對于領(lǐng)導(dǎo)層和負責(zé)層來說,應(yīng)該定期針對項目的可行性進行綜合控制,或是與產(chǎn)品負責(zé)人展開溝通追加額外的任務(wù)列表條目。sprint提前結(jié)束時對應(yīng)的就是任務(wù)列表的重新規(guī)劃(任務(wù)列表條目既包含了已經(jīng)完成的部分也包括未完成的部分),然后根據(jù)商業(yè)價值的評估結(jié)果,重新定位產(chǎn)品任務(wù)列表。不過是要注意的是提前終止必然會影響到團隊的整體進程,在必要狀態(tài)下需避免此類情況的出現(xiàn)。
開發(fā)流程的實現(xiàn)過程需要設(shè)計產(chǎn)品任務(wù)列表,完成代辦列表構(gòu)建并且將產(chǎn)品業(yè)務(wù)列表中的具體信息再劃分為小的獨立任務(wù)分配給小組成員,按照既定的要求分類到相應(yīng)的類別當(dāng)中。產(chǎn)品任務(wù)列表本身是可以預(yù)知的所有任務(wù),無論是功能性和非功能性的任務(wù),還是產(chǎn)品負責(zé)人所負責(zé)的軟件關(guān)鍵信息都需要考慮到軟件項目的整體推進要求。所以如果軟件項目處于開發(fā)階段,且團隊無法對任務(wù)進行準(zhǔn)確預(yù)測時,基于任務(wù)時間的明確要求,就可以通過產(chǎn)品任務(wù)列表其發(fā)揮綱要性的作用,按照商業(yè)價值的差異定義產(chǎn)品功能和開發(fā)任務(wù)的先后順序[3]。
計劃會議機制主要體現(xiàn)在項目初期階段的工作目標(biāo)創(chuàng)設(shè),例如建立軟件項目之后,會根據(jù)會議內(nèi)容確定后一階段的工作計劃,一般來說計劃會在問題解決方面會基于不同的問題展開考量。第一就是任務(wù)列表當(dāng)中的哪些條目需要明確體現(xiàn)在產(chǎn)品的信息當(dāng)中,二是如何確定具有最大商業(yè)價值的產(chǎn)品任務(wù)列表。整個團隊在實現(xiàn)版本目標(biāo)之后,也會按照會議的結(jié)果,確定版本目標(biāo)涉及到的某些信息,將這些信息與產(chǎn)品負責(zé)人進行交流和反饋,以便于調(diào)整不合理的版本計劃。必要時可推遲某些產(chǎn)品的發(fā)布日期。目前很多團隊會在版本發(fā)布方面進行優(yōu)化設(shè)計,其根本目的是為了保障產(chǎn)品的功能與規(guī)則符合既定要求,然后讓版本目標(biāo)在評審會議上會展開合理調(diào)整,但無論如何整體計劃都不會偏離最終的大版本的目標(biāo)。所以版本計劃會議會為需要發(fā)布的產(chǎn)品或任務(wù)列表確定其商業(yè)信息和風(fēng)險信息,在完成這項工作之前可能還需要行業(yè)專家的支持。產(chǎn)品開發(fā)環(huán)節(jié)的主要管理人員需要定位任務(wù)列表的明確要求,然后基于項目分析進度。此時他們也可以參與到項目構(gòu)建的全過程當(dāng)中及時調(diào)整問題并解決問題,作為團隊協(xié)調(diào)者存在[4]。
為了配合項目開發(fā),企業(yè)內(nèi)部會采取項目管理工具來輔助整個軟件項目管理過程,一方面用于規(guī)劃和跟蹤整體的工作進程,另一方面也可以便于團隊之間進行溝通和共享。例如JIRA就是一種典型的任務(wù)管理工具,包括任務(wù)管理和缺陷管理方面的項目內(nèi)容,具有強大的用戶權(quán)限管理功能,且配置靈活,可以便于展開錯誤跟蹤及擴展性和安全性都得到有效保證。另外通過相應(yīng)的數(shù)據(jù)可以便于追蹤和管理項目在推進過程中所耗費的時間。對于一些耗時較長的附加任務(wù),也可以將其劃分為多個子任務(wù),在必要情況下調(diào)整工時然后提前預(yù)估項目的完成情況,推算最終目標(biāo)是否能按時達到。
Scrum可以讓團隊根據(jù)自己的能力要求對任務(wù)列表進行綜合評估,并通過自身在會議當(dāng)中的討論結(jié)果挑選自己熟悉的模塊任務(wù),這樣一來就可以最大化節(jié)約達成任務(wù)目標(biāo)所消耗的時間,即便要挑選自己不熟悉的任務(wù),那么與其他成員進行交流互動之后也能了解不同任務(wù)涉及到的不同領(lǐng)域,對整個項目進行綜合考察。通過敏捷方法的具體應(yīng)用可以讓有限的資源發(fā)揮良好的保障功能,實現(xiàn)生產(chǎn)利益提高和成本降低。
從產(chǎn)品質(zhì)量的角度來看,團隊能夠不斷產(chǎn)出高質(zhì)量的工作讓工作效率得到提升之后,就可以讓以往的問題在系統(tǒng)內(nèi)部進行解決,團隊可以循序漸進產(chǎn)生高質(zhì)量的結(jié)果輸出,將缺陷遺留到下一個sprint當(dāng)中。例如借助溝通與共享工具可以保障信息層面的交流溝通質(zhì)量,并且將某些前瞻性的工作告知給相應(yīng)的團隊成員,每個團隊成員也可以將自己的版本交換給其他成員[5]。
當(dāng)產(chǎn)品的上市時間加快之后,團隊整體的生產(chǎn)效率更加穩(wěn)定,在保障開發(fā)功能的同時維持產(chǎn)品的發(fā)布特性,在滿足客戶基本工作需求的前提下,提升團隊成員的整體參與度。例如團隊工作成果在客戶那里得到應(yīng)用并發(fā)揮價值之后,團隊內(nèi)部的成員會具有成就感,在互相協(xié)作的過程當(dāng)中建立更加融洽的工作氛圍和工作關(guān)系。
Scrum作為敏捷項目管理方法開發(fā)環(huán)節(jié)的重要實踐項目,憑借著靈活的組織特點和高效的成員參與度,實現(xiàn)了扁平化管理和良好的互動反饋機制解決了傳統(tǒng)軟件開發(fā)過程當(dāng)中的困境問題??傮w而言,它作為一個極佳的敏捷項目開發(fā)管理方法,讓過程項目管理變得更加有形,而可控軟件的自我組織和自我管理工作方式,也能讓所有成員積極配合并參與到全過程當(dāng)中。在未來的工作實踐環(huán)節(jié),這些項目開發(fā)人員也需要在項目運行觀念上進行調(diào)整,立足于項目實踐工作進行優(yōu)化和完善。