項目背景介紹:
08年8月到12月,某省級無線運營商的網上營業廳三期項目,在這個項目中,我擔任了項目經理的角色。
網上營業廳是該運營商的省級網上門戶,是電子化營銷渠道的重要組成部分。其主要功能包括:企業形象宣傳;新業務、新活動推廣;客戶進行業務查詢和辦理等。隨著客戶對電子渠道認知度的提升,原有的網上營業廳2期在硬件方面,已經無法滿足日益增長的客戶數。在軟件架構方面,已經無法快速響應頻繁復雜的需求變更。因此,該運營商提出了對于網上營業廳3期項目的建設計劃。3期建設的預期目標為:把網上營業廳的注冊客戶數從200萬提升到500萬,并從硬件、軟件等各方面保證客戶正常使用。
該項目的人員組成包括:1名項目經理,1名軟件開發經理,1名系統實施經理,3名程序員,2名頁面制作,2名系統實施共10人。項目的開發平臺為J2EE。
該項目的硬件大體情況為:14臺IBM BCH ,安裝apache,作為 web前端服務器。6臺IBM P52A,安裝weblogic,作為應用服務器。2臺P570作為身份認證服務器。2臺P570,安裝oracle,作為數據庫服務器。操作系統使用了紅帽企業版 linux 5,以及AIX5.3。
目前,網上營業廳3期成功通過終驗,并按時上線。在月初、月末的業務辦理高峰期,能夠保證客戶的正常訪問。此項目得到了該省級無線運營商和我所在公司領導的認可。
正文:
我們的團隊采用敏捷過程進行管理,這是由項目的性質所決定的。第一,網上營業廳項目有40多個業務需要開發,但業務和業務之間的關聯度很低,有些甚至沒有任何關聯。第二,臨時業務需求隨時會出現,往往是時間緊迫,讓人措手不及。第三,3期將要與2期并行運行,眾多業務將會一部分一部分地上線。敏捷需求的特點就是要把需求分出輕重緩急,總是著眼于當前最緊迫的任務,并快速地交付可用的軟件來為客戶創造商業價值。除此之外,敏捷需求還需注意需求的可持續性和可疊加性。就算初期交付了可以工作的軟件,如果這個需求不是可持續疊加的,就將面臨被推倒重來的危險,敏捷需求也就失去了其原有的價值。下面,我將結合網上營業廳項目,進一步闡述敏捷過程是如何把握客戶需求的。
網上選號是網上營業廳的一項業務。此業務是一個典型的時間緊,任務急的例子。在這個例子中,敏捷需求的理念得到了充分的發揮。對于無線運營商來說,在網客戶數量就是其商業價值的根本。所以,不同的無線運營商在爭奪客戶資源方面都花盡了心思。網上營業廳項目的時間表恰好跨越9月份這個各大院校開學的日子,所以,該無線運營商要求我們開發一個網上選號的業務,并且要讓即將開學的大學生們能夠在網上進行選號。然而此時,已經是8月25日,離交付日期僅有6天時間。
該運營商的市場經理向我們提出了以下幾個需求。前臺有:網上查號及選號、靚號竟拍和號碼預約。后臺有:物流配送、網上開機和統計分析。這些需求是市場經理在上級領導的巨大壓力下,花了整整一天的時間想出來的,他希望我們在剩下的6天里統統實現。
其實,就算只有“物流配送”這一個需求,我們也恐怕也無法在6天里面完成。于是,我建議這位市場經理再仔細地梳理這些需求,并進一步了解上級領導的心理底線!拔锪髋渌汀钡碾y點恐怕還不是在軟件開發上,而是在于協調SIM卡、物流、客服等資源上。就算是以前和物流商有過協議,但也不能一概而論。后來,該市場經理通過和以前合作過的物流商聯系發現,僅僅讓物流商進行代收費一事,就基本上是不現實的了。最后“物流配送”改成了由該無線運營商的流動服務車配卡,然后由學生自行取卡。最復雜的需求就這樣被消除了。
雖然,我和這位市場經理不熟,但我還是拿出了令他信服的項目組迭代速度。以此證明,在6天的時間里,我們仍然不可能完成剩下的所有的需求。經過進一步的溝通,最終我們確定了最緊迫的兩個需求:“網上查號及選號”和“網上開機”。只要這兩個需求能夠在6天內被交付,那么,此業務就能夠順利地在9月1日上線。雖然結果可能并不那么吸引人,但這樣仍然完成了市場經理及其上司的心理底線。所有剩下的需求都將作為較遠期的迭代目標,項目組僅僅給與較模糊的考慮和認識即可。最后,我們把這兩個需求分解為可度量的功能點,并又一次去掉了幾個瑣碎的,難以實現的,并且對交付成果沒有太大意義的功能點。除此之外,我們還商定了驗收測試用例,并以文字形式保存下來。
在接下來的6天里,我們按照以往的速度平穩推進,并成功地在9月1日完成這次迭代,該無線運營商也搶在了其他運營商前面占領了市場先機。項目組備受鼓舞。
除了敏捷需求的獲取之外,我想再說明一下對于敏捷需求的管理。我們在網上營業廳項目中,采用了輕量級的項目管理工具Redmine作為需求管理工具。雖然Redmine不是專業的需求管理工具,但經過我們的實踐,把它用在敏捷需求的管理上特別合適。
Redmine以“問題”作為管理的基本單元,在敏捷需求管理的意義上,就是一個可度量的“功能點”。功能點具有發起人、緊急程度、狀態、指派給、相關問題、開始日期、結束日期、預計工時、跟蹤者和描述等屬性。通過把從需求中分解出來的功能點記錄下來,就可以對所有的需求問題進行結構化的管理。這樣一來,開發人員面對的就不是以往那種文檔化的功能點,而是可追溯的,易跟蹤的以及結構化的功能點。這對于軟件開發的組織和管理有著舉足輕重的意義。
通過Redmine對于需求的管理,我們還獲得了很多額外的好處。其中最重要的一項就是,開發人員每天對于所參與的功能點的“耗時登記”。這些數據提供了項目組的可以量化的迭代速度。這個可量化的速度對于以后的需求獲取和功能點的分解有著很強的說服力。
通過以上的論述,說明了敏捷需求管理對于網上營業廳項目的重要意義。雖然項目的進展十分順利,但需求過程當中仍然存在一些缺陷值得思考。其中一個就是對于需求的自動化驗收腳本的使用。由于項目的復雜性和特殊性,自動化驗收仍然面臨著眾多障礙。這其中包括對于驗證碼圖片的識別、頁面文字的正確性、統一計費環境的本地模擬等等。因此,網上營業廳項目的驗收測試在很大程度上仍然依賴于人工。好在無線運營商擁有龐大的客服體系,使得此問題并沒有阻礙項目的進度。另外有一點遺憾就是在Redmine中,無法對功能點打包。也就是說,它不能夠以“用戶卡片”或“用例”來組織功能點。不過Redmine是一個開源的工具,我們將在以后的項目當中,結合自己的實踐,嘗試對其進行改進,使其更加適合敏捷需求的管理。
文章來源于領測軟件測試網 http://www.k11sc111.com/