關馨北京富士通系統工程有限公司
論軟件項目的管理
關馨
北京富士通系統工程有限公司
摘要:隨著我國軟件業的蓬勃發展,軟件開發項目不再是軟件開發人員的個人行為而是團隊行為。如何在要求的時間內、合理的投資下保質保量地交付軟件產品是一個巨大的挑戰。現今軟件開發項目超期、超預算、最終的軟件產品的質量不能使最終用戶滿意等問題,都是困擾軟件業的重大問題。因此,軟件開發的項目管理日益受到重視。本文以本人擔任項目經理而負責的“高品質可視化”軟件系統開發過程為例,描述了如何應用項目管理,控制軟件開發的全過程,從而保證了項目開發的勝利完成。由于本人所在單位是通過ISO9001和CMMI產品質量認證企業,在軟件開發中嚴格遵循質量認證體系標準,確保產品開發的質量,并對于相關的一些質量記錄進行收集和整理,在項目結束后進行系統的分析,從而總結本項目的得失,為以后新的項目能夠順利的保質保量的完成,提供一些有效的幫助和借鑒。
關鍵詞:項目管理;開發過程;高品質可視化
軟件項目開發是一個復雜的腦力勞動過程。大型軟件開發周期長,參與人員多,項目管理工作的好壞對于項目的開發成敗至關重要。“高品質可視化”軟件系統是日本富士通公司委托本人所在單位承擔的一個管理軟件。該項目在開發過程中參與人員有8人,項目負責人1人,程序人員7人,開發工作有較大技術難度和組織難度。在本項目的軟件開發過程中,運用軟件項目管理技術,有力地保證了“高品質可視化”軟件系統的成功開發,并取得了委托方的好評。
1、軟件項目
“項目”,在兩千多年之前就已經存在。著名的埃及金字塔、我國的萬里長城都是國際上眾人稱頌的典型項目。什么是項目?對項目比較具體一些的解釋是“用有限的資源、有限的時間為特定客戶完成特定目標的階段性工作”。這里的資源指完成項目所需要的人、財、物;時間指項目有明確的開始和結束時間;客戶指提供資金、確定需求并擁有項目成果的組織或個人;目標則是滿足要求的產品和服務,并且有時它們是不可見的。
對軟件企業而言,可以分為兩類:一類是做軟件產品的,一類是做專業服務的,企業軟件和專業服務往往必須相結合。通過軟件工程,將客戶需求轉化為軟件產品的項目稱為軟件系統的開發項目。軟件企業不僅向客戶提供產品,更重要是根據其要求提供不同的解決方案。即使有現成的解決方案,也需要根據客戶的要求進行一定的客戶化工作,盡量滿足和完善客戶的要求,甚至需要考慮客戶沒有考慮到的可實現的解決方案。
2、軟件項目管理
如果說在軟件業初期,軟件是依靠一個或幾個人利用業余時間邊想邊寫而編出來的,那么在軟件業已經發展成為一個具有上百億元產業規模的今天,軟件業已經越來越像很多其他的傳統制造業,有項目部門、生產部門、質量部門、市場部門等等,一個軟件從構想到真正出現在市場上,需要大量的從事不同工作的人共同努力。軟件開發不再是開發人員的個人行為而是團隊行為,如何將這些人有效地組織在一起,將所有的資源結合在一起,按照預定的時間,保證質量地將產品交付客戶是軟件企業面臨的一個重大的問題。
解決這一問題的關鍵正是軟件項目的管理。軟件項目管理是確保軟件項目按時、按預算、保質量完成的關鍵活動,它主要包括項目計劃的制訂和對項目按計劃執行情況的跟蹤與動態調整。計劃的合理性是保證項目按計劃執行的重要因素。軟件項目管理可以根據項目的實際需求、允許的工期等情況,合理地安排項目活動、資源配備和項目進度,并準確地預見項目進行過程中可能遇到的風險,充分準備風險防范措施,制訂完備的項目計劃,才能確保項目按計劃順利進行。因此在項目進行過程中,項目負責人要不斷保持對項目實際進展狀況的動態跟蹤,當出現與計劃不一致的情況時,要根據實際情況合理地調整計劃安排,以確保最終的成功。當項目計劃出現變更時,要分析其誘發因素,并紀錄相關數據,利用這些數據來改進開發過程。
隨著我國軟件業的蓬勃發展,軟件開發不再是軟件開發人員的個人行為而是團隊行為,如何在要求的時間內、合理的投資下保質保量地交付軟件產品是一個巨大的挑戰。現今軟件開發項目超期、超預算、最終的軟件產品的質量不能使最終用戶滿意等問題,都是困擾軟件業的重大問題。因此,軟件開發的項目管理日益受到重視。軟件項目管理的問題更多的可能是實踐問題而非理論問題,以下是本人結合在“高品質可視化”軟件系統中擔當項目負責人的項目管理經驗,談談自己在軟件項目管理中的幾點體會和思考。
1、全面地掌握軟件項目的開發流程
軟件開發項目可劃分為需求分析、產品設計、編程、測試、產品交付等幾個階段。在項目工作開始之前就提前明確每個過程中的作業內容和要求,是至關重要的。如下的圖表1所示,介紹了“高品質可視化”軟件系統開發時的工作流程和在各工程階段的工作內容。
在項目工作的初始,需求分析也是最關鍵的一步,它直接關系到項目后續階段實施的成功與否。一個全面的詳細的分析,不會放過任何一個細小的的環節,好的分析意味著項目成功的一半。
“高品質可視化”軟件系統的項目開發非常重視需求分析活動,特意派專人前往日本和客戶進行接觸,以便能更好的了解客戶的需求,及時的提出解決方案,以便于客戶的抉擇。因為客戶需求是客觀存在的,關鍵是要區分哪些是操作性的、哪些是流程性的。對流程性的要求,要認真地進行分析,以區分哪些是受網絡技術限制,不能實現的;哪些是受專業技術限制的,需要調查的;哪些是次要的可以以后追加的,但前提必須是抱著對客戶負責的態度。
例如:客戶對系統提出可對同一畫面進行不同的內容的處理的要求,這在網絡操作中是不允許的,也是不可能實現的。在和客戶講明原因,并提出了變通的解決方案后,客戶也欣然接受了。因為注重前期的分析活動,明確了客戶的實際業務需求,進而為“高品質可視化”軟件系統的后續開發奠定了良好的基礎。產品交付后獲得了客戶的好評。
經過需求分析后,生成軟件項目開發的《需求分析規格說明》。它主要包括以下內容:制定開發標準;定義軟件的總體功能;規定軟件的支持平臺和運行環境;詳細描述軟件的性能、功能和數據的各種需求等。再由公司的開發部負責人、項目負責人、相關設計人員以及客戶方的相關人員共同組成評審小組,對《需求分析規格說明》實施評審,通過評審后軟件項目開發才能進入軟件設計階段。
2、制定完整的軟件項目計劃和開發進度
項目計劃是對項目未來進行的估計和預測,是實施項目管理的控制基礎。制定計劃應防止以下兩種傾向:一種是項目計劃的制定過于粗略,隨意性大,可操作性差,在實施中無法遵循。另一種則是過度計劃,必須將項目中全部細節都考慮清楚后才動手,這也是不切實際的,在執行中會發現難以與實際一致,而不得不頻繁地進行調整。這兩種傾向都導致了制定的計劃不切實。
“高品質可視化”軟件系統的項目中,根據系統設計的功能要求、開發人員體制的構成、工程階段的劃分、項目開發周期、成本經費預算等,制定了詳細的項目開發計劃。在項目計劃中清晰地描述了每個階段要完成的工作和成果驗收方法,甚至具體到有多少個畫面。
根據項目的開發周期和階段劃分,制定《項目整體進度表》,明確各階段的作業內容、擔當者、開始日期和完成日期,有預計和實際的記錄對比欄,實際比預計延遲時,需記錄原因及對策。具體到每一個成員,制定了《項目詳細進度表》,明確每個擔當者的作業內容和進度。《項目詳細進度表》一般控制到“人周”,有的細到“人天”。如圖表2所示,為”高品質可視化”軟件系統開發工作的《項目整體進度表》概要,其中的具體擔當者等信息從略。
通過進度表管理,不僅能夠掌握項目整體的進展、完成情況,而且可及時了解每個開發人員的工作內容和開發進度。根據項目實際進展情況修正開發計劃;根據每個人的開發特點和工作內容,適時調配人員和工作。
另外,在項目開始時,對開發人員規定了這樣的要求:任何難題的解決不要超過1天,1天不能自行解決的問題及時報告給項目組長協助解決,并填寫Q/A票;2天仍不能解決的問題,采用其他方法變通處理,并填寫Q/A票。這一規定有效的避免的由于技術問題卡殼而導致進度的延誤,使開發工作在控制在正常的范圍內,如有相似問題出現就可盡快解決。同時要求開發人員每天填寫工作日志,記錄工作內容和進展情況。這樣通過工作日志隨時了解項目組成員每天的工作情況,使開發過程更加透明。
盡管有項目計劃,但是在項目執行過程中難免與實際情況有差異,一定會產生很多修改、變更。一定要注意對項目變更的控制,盡量不要改來改去,造成項目無法正常結束;另外,在項目執行過程中還會遇到各種始料未及的意外風險,使得項目不能按計劃運行。綜合上述,項目管理不應照搬固定流程或模式,對具體問題應做具體分析,靈活應對。
3、建立有效的成本預算和控制體制
軟件開發項目中的人力成本占總成本的相當比例,項目實際的人力成本決定了項目的贏利水平。在實際工作中可能會發現:作項目預算時項目的利潤很高,但最后核算部門的總體利潤時卻賠本。這是因為人力成本很難估算準確,為了保證項目進度要求,在項目執行中會不斷追加人力,使得人力資源大大超出了預算。因此軟件企業必須建立人力成本結構及運用控制體制,通過核算項目的人力成本來控制項目開發成本。
“高品質可視化”軟件系統開發項目建立一套有效的成本預算和控制體制。具體做法是:
(1)預算成本
根據單位的標準參數,計算項目整體的預算工數、預算人月,進而得到預算成本。
①每個畫面、報表、批處理的標準工時(PG~PT)
畫面:根據畫面中控件的數量和復雜程度選擇24—32H
報表:根據報表中控件的數量和格式復雜程度選擇24—32H
批處理:批處理的STEP數選擇12—16H
②各個工程階段的工時比例和工時的預算
依據各個工程階段的工時比例,以PG-PT工程段的標準工時為基礎,來進行各個工程階段的工時的預算。如下圖表3所示。

圖表3《項目工程階段和工時比例》
③規模系數
標準項目數:20個/畫面或報表
規模系數=實際項目數÷標準項目數
④難易度
根據畫面內部關系和處理方法的難易度系數選擇0.6—1.6;根據批處理的復雜程度系數選擇0.8—1.6;根據報表抽取數據的復雜程度系數選擇0.6—1.2。

圖表4《難易度系數》
⑤項目管理工時
系統整體富裕量和項目管理所用工時:占整體工時的10%~15%
⑥各工程階段的預算工時
每個畫面/報表/批處理的預算工時=標準工時×工時比例×規模系數×難易度
⑦系統整體的預算工時
預算工時=預算工時之和÷(110%~115%)
⑧預算人月
預算人月=系統整體預算工時÷標準人月工時(170H/人月)
⑨預算成本(人力成本)
預算成本=預算人月×標準人月單價
如下圖表5所示,“高品質可視化”軟件系統開發項目的預算工數,按PG-PT標準工時(畫面26H,報表24H,批處理12H)計算得到。

圖表5《工數預算表(從SA到ST)》
項目的規模(預算人月數)=6840×1.1÷170=44.2(人月)
(2)成本管理控制和生產性分析
在項目開發期間,按月對每個開發人員的實際工數進行統計,通過實際與預算的比較分析,可以獲得當前的項目整體生產性和每個開發人員的生產性。通過對已經完成工程的生產性分析,可以了解每個開發人員的工作效率和項目整體進度,便于對本工程段或下一個工程段的計劃和人員配制進行制作和調整。
所謂的生產性是通過從作業的預算時間和實際時間進行比較得出的,實際工作時間越于預算時間,生產性越大,表明此人的工作效率較高。但如果生產性過高或過低,則有可能是對項目的預算出現問題,這時就要調整計劃或進行人員調整。在項目開發中,要動態監控人力投入情況,及時記錄實際成本支出,通過實際與預算的比較,對項目生產性的進行分析,一旦發現超出預算,即時進行補救處理。
例如,在“高品質可視化”軟件系統PG工程段時,由于一些特殊的原因,客戶又提出了新的要求,為了保證工期的順利完成,就及時進行了人員的調整和部分計劃的調整,并在以后后續工程也進行了相應的調整。
4、建立有效的溝通機制
在項目管理中,規范、準確、高效的溝通是項目順利進行的必要前提。在項目進行過程中,溝通一直是一個比較大的困難。
“高品質可視化”軟件系統項目的具體做法是:
對于項目組內部:每周例行開一次項目進度報告會。參會人員包括所有項目開發小組成員和項目負責人。在會上,項目管理人員向項目成員講解項目的整體計劃,布置每個成員現階段在項目中所承擔的具體任務,讓項目成員準確地了解執行項目的具體方法。對于項目計劃的必要變更,及時地讓項目小組成員了解;同時,聽取每個成員的工作進度,解決成員在項目開發中遇到的實際問題,對于專業技術問題,小組成員可以自由交流,展開討論,相互幫助,共同克服;對于不太好決斷的問題,則由項目負責人和有經驗的項目組成員負責進行調查,并將調查結果及時通告項目組其他成員。這樣,項目管理人員能夠清晰、準確地掌握項目的進展情況以及每個成員的工作進度,及時發現問題,為項目的后續工作計劃和進度的調整提供決策依據。
對于客戶方面:則是明確相互之間的聯系人,每周定期向客戶通報項目進展狀況,使得客戶對項目進展有所了解。對于在整個項目進行過程中,出現的一些業務或流程上的問題和對應的解決方案,也需要及時通報給客戶,必須在得到客戶的認可后才能進行對應的實施。同時要求對客戶提出的新的需求或變更,力爭在一個工作日內提出解決方案,如在一個工作日內無法回答,必須及時通知客戶,并明確回答期限。這樣才能夠保證整個項目在開發過程中不會出現偏差,保證完全符合客戶的要求,確保項目的順利完成。
5、建立有效的項目質量管理機制
軟件開發涉及到方方面面的人員,歷經多個開發階段,各個環節間都可能帶來產品質量問題;同時,由于軟件產品是邏輯體,在項目完成前不具備實體的可見性,因而產品質量也難以把握,因此如何有效地管理軟件產品的質量一直是軟件企業面臨的問題。
在“高品質可視化”軟件系統的開發過程中,通過對不同工程段的核查以及里程碑處的評審和制定較為詳細測試計劃以及相關的程序修改方案,很好地解決了這一問題。在各工程段完了進入下一工程段時都要進行核查,不符合要求時,要進行返工,以保證進入下一工程段的產品是合格的。而在里程碑處(需求分析、設計、編碼、測試)則必須通過評審才能進入下一工程段,以保證不把問題遺留到下一工程段。在實現設計的關鍵階段編碼階段,則不斷的進行品質測試,采用互查的方式進行功能檢查和代碼核查,以便降低編碼中的錯誤率。隨后,把系統所有程序段連在一起,嚴格按照測試計劃和相關測試設計書進行結合和系統測試以確認這些程序段可以共同工作。最后,派專人與客戶共同進行測試并進行必要的講解和說明,對客戶提出意見及時進行對應和解決,對產品質量進行評估。由于建立了嚴格有效的項目質量管理機制,因此產品受到了客戶的好評,現在已經建立了良好的客戶關系。
另外,由于本人所在單位是通過ISO9001和CMMI產品質量認證企業,在軟件開發中嚴格遵循質量認證體系標準,確保產品開發的質量。并對于相關的一些質量記錄進行收集和整理,在項目結束后進行系統的分析,從而總結本項目的得失,為以后新的項目能夠順利的保質保量的完成,可以提供一些有效的幫助和借鑒。
我國軟件業與世界先進國家相比,尚存在不小的差距,其主要原因是軟件工程化技術和科學的管理方法沒有得到廣泛的應用。今天,軟件開發項目不再是軟件開發人員的個人行為而是團隊行為。對于以“項目”為基本運作單位的軟件企業來說,特別是在新的領域或運用新的技術時,軟件開發項目超期、超預算、最終的軟件產品的質量不能使客戶滿意等問題,一直是困擾企業發展的重大問題。如何在要求的時間內、合理的投資下保質保量地交付軟件產品,實現“客戶滿意、公司獲利”這一企業目標,其中的關鍵是軟件項目管理。軟件企業只有在深入學習和大量實踐的基礎上,形成了獨具特色和競爭力的項目管理方法,才能不斷地在激烈的市場競爭中勝出。
參考文獻:
[1]項目管理知識體系指南(第4版)(美)項目管理協會著王勇、張斌譯
作者簡介:關馨,北京富士通系統工程有限公司,高級工程師。