韓亮
本文首先介紹和分析了兩種開發(fā)模式(瀑布式開發(fā)和敏捷開發(fā))的特點,并針對敏捷開發(fā)中的Scrum框架做了一個簡單介紹。以HSE系統(tǒng)在升級建設中所采用的開發(fā)模式為例,介紹如何在項目開發(fā)過程中既要保證項目總體質量和過程控制,又要提升功能開發(fā)效率和推進測試發(fā)布,從而所采用的混合式開發(fā)模式(即總體采用瀑布式開發(fā),局部適度引用敏捷開發(fā),過程中加入質量控制的模式),達到推進項目穩(wěn)定有效的運行和充分利用各人力資源的目的。
引言
HSE系統(tǒng)作為涵蓋了中國石油健康、安全和環(huán)保等綜合業(yè)務的大型信息系統(tǒng),不僅為中國石油的各地區(qū)公司提供信息錄入平臺,更為中國石油的集團總部提供更多的信息統(tǒng)計和決策支持服務。隨著十二五規(guī)劃的工作開展,HSE系統(tǒng)也要從1.0版升級到2.0版。在此次的系統(tǒng)升級過程中,針對功能模塊多和功能需求逐步穩(wěn)定的特點,項目組在總體流程中使用瀑布模型,局部環(huán)節(jié)適度引用敏捷開發(fā)模型,達到既要確保項目質量和過程控制,又要滿足功能開發(fā)和測試發(fā)布快速推進的目的。
瀑布式開發(fā)
瀑布式開發(fā)是將軟件開發(fā)各個階段的任務,從頂向下、從抽象到具體的一種開發(fā)方法。其形式就像一個自上而下的瀑布,總是從高處依次流到低處。瀑布式開發(fā)的優(yōu)點是階段具有順序性和依賴性[1] 。這個特點具有兩重含義:第一,必須等前一個階段的工作完成之后,才能開始后一個階段的工作;第二,前一階段的輸出文檔就是后一階段的輸入文檔。因此只有前一階段的輸出文檔正確,后一階段的工作才能獲得正確的結果。這樣的特點應用在功能模塊多和業(yè)務處理邏輯復雜的大型項目時,可以保證每一階段的工作成果都盡量正確,都能先進行評審與糾錯,控制項目的實現(xiàn)風險,追蹤每個階段的完成情況。這樣的優(yōu)點也帶來一些弊端:只有做出精確的需求分析,才能取得預期的結果。由于各種客觀、主觀的原因,需求分析往往不很精確,常常給日后的開發(fā)帶來隱患。另外,瀑布式開發(fā)往往把開發(fā)人員定義為流水線上的工人,由于各階段的開發(fā)人員只能接觸到自己工作范圍內的東西,所以對客戶需求的理解程度高低不等。對于客戶需求變更,編碼人員會比設計人員更容易產生很強的抵觸情緒。對于一個大型項目,如何能夠既保證項目開發(fā)質量、調動開發(fā)人員的工作積極性并引入適度的開發(fā)靈活性,這成為一個我們思考的問題。
敏捷開發(fā)
敏捷開發(fā)是一種面臨迅速變化的需求快速開發(fā)軟件的能力。敏捷開發(fā)的宣言[2](或者理解為原則)是:(1)個體和交互勝過過程和工具;(2)可以工作的軟件勝過面面俱到的文檔;(3)客戶合作勝過合同談判;(4)響應變化勝過遵循變化。通過這樣的原則我們不難看出敏捷開發(fā)重視人與人自之間的溝通和交互,強調個體對于項目活動的理解應該是一致的。Scrum是一個近年比較流行的敏捷開發(fā)框架,是一個增量的、迭代的開發(fā)過程。它關注透明度、審查以及適應,在敏捷開發(fā)中應用的最為普遍。該框架提供了一個相對具體的可以實現(xiàn)的敏捷開發(fā)手段,這包括制定Backlog任務表,設定Sprint開發(fā)周期,以Daily Meeting的形式促使團隊成員之間的溝通和問題反饋,利用Retrospective Meeting對于上一個Sprint做出總結,為下一個Sprint提供改進的建議[3]。
兩種模式在HSE系統(tǒng)(2.0版)中的混合應用
項目特點
HSE系統(tǒng)(2.0版)項目作為一個升級項目,是一個在原有1.0版的基礎上做功能移植
和功能提升的項目。它具備如下幾個提點:(1)功能模塊多,既要保持原有基礎業(yè)務不變還要引入新的提升功能,導致業(yè)務功能增加不少;(2)用戶要求高,在1.0版項目運維后,高級用戶和基層用戶對業(yè)務功能和用戶體驗上提出了很多建議和提升想法,這使得用戶對于項目的要求越來越高;(3)項目參與人員較多,因為業(yè)務功能和開發(fā)工作量的增加,此次投入的項目人員較多,增加了整體項目管理難度;(4)開發(fā)周期長,隨著業(yè)務功能的增多項目建設周期較長,每個階段的項目人員都要持續(xù)投入很多的工作時間在項目中,承受了很大的工作壓力。在這樣的項目特點下如何能夠既保證項目質量和風險管控,又能夠調動項目人員的積極性快速推進項目工作,成為此次升級考慮的重點。
瀑布式應用
鑒于瀑布模型是從頂?shù)较?、依次進行、階段有目標和階段有成果的特點,HSE系統(tǒng)在此次升級中,主體開發(fā)模式采用了瀑布式,依然劃分為需求分析、系統(tǒng)設計、代碼開發(fā)和系統(tǒng)測試等幾個重要階段,并在每個階段建立關鍵的里程碑,使得管理人員能夠從總體上把控項目的風險,看到各階段的工作成果,給予高級用戶及時的項目進度反饋。
敏捷開發(fā)應用
這里所要陳述的敏捷開發(fā)應用,實際上是在總體為瀑布式模型的開發(fā)基礎之上,進行的敏捷開發(fā)局部應用?;谏厦娼榻B的敏捷開發(fā)的特點,我們從如下幾個方面來介紹是如何具體應用的:
1. 快速響應,及時跟蹤
如今的項目需求,用戶不會一蹴而就的全盤提出,開發(fā)團隊也不可能一直等待業(yè)務團隊整理完全部需求文檔后再進行設計與開發(fā),因為這樣既有可能延誤項目周期,也使得用戶一段時間內長期看不到項目成果。所以將項目團隊劃分為若干個小組,將瀑布開發(fā)的幾個工作階段應用在幾個小組之內,可以讓項目團隊對于已經確定的需求快速開展工作,充分利用各小組的人力資源,及時產出工作成果。這也就是引入了敏捷模型中快速響應變化,及時給出交付物的特點。以下是一個功能狀態(tài)表,是在開發(fā)過程中反映各功能模塊階段完成情況的狀態(tài)表。
2. 加強溝通,及時處理
此次系統(tǒng)升級功能需求多,業(yè)務邏輯較為復雜,開發(fā)團隊不僅要處理紛繁復雜的業(yè)務需求,更要面對長期的大負荷工作。如何能夠提升團隊士氣,及時發(fā)現(xiàn)問題并解決問題?Scrum給了我們答案。各開發(fā)小組在每天下班前組織開發(fā)人員進行Daily Meeting會議,及時了解小組成員每天的工作成果和遇到的問題,由小組長進行匯總和解答。并在整個技術組內建立技術討論群,針對發(fā)現(xiàn)的問題及時發(fā)出議題,各組成員積極解答。使得團隊成員之間達到最大程度的知識共享與交流,促進團隊的凝聚力和問題解決能力。
結論
本文在介紹了瀑布式開發(fā)和敏捷開發(fā)的基礎上,結合這兩種模式各自的特點,將其混合
應用在HSE系統(tǒng)升級的項目開發(fā)過程中。從實際應用效果的角度,說明在項目開發(fā)過程中要充分考量項目特點,結合現(xiàn)在較為成熟的開發(fā)模式,靈活的加以應用。特別是在項目質量、風險管控、快速響應和及時交付的幾個點上做到平衡。這樣才能更好更高效的適應用戶需求,產出高質量的交付物。沒有一種模式能夠解決所有問題,但每種模式卻總有它適用的地方,只要深入了解它的精髓,無論如何混搭,只要合適即可引用。endprint