1 引言
長期以來,軟體項目高失敗率的狀況一直困擾著人們,研究表明,軟體項目失敗的原因主要有兩個:一是應用項目的複雜性;二是缺乏合格的軟體專案管理人才。實踐證明缺乏有效專案管理是導致軟體項目失控的直接原因。軟體開發的風險之所以大,是由於軟體流程能力低,其中最關鍵的問題在於軟體開發組織不能很好地管理其軟體過程,從而使一些好的開發方法和技術不能起到預期的作用。
流程管理作為現代企業管理的先進思想和有效工具,隨著市場環境與組織模式的變化,在以電腦網路為基礎的現代社會資訊化背景下越發顯示出其威力和效用。流程管理不僅是一種管理技術,更體現了現代管理的思想。流程管理的重點是:理清和管理好所有主、支流程間的關係,使他們相互協調發揮應有的作用。流程管理增加了部門的透明度,管理的對象不是“部門”和“部門員工”的概念,而是以工序流程為管理對象,注重流程中每一個過程和效率以及和上下遊工序的關係,管理重點在於整體流程的完整性和順暢性。
運用流程管理方法和技術進行軟體專案管理,可以有效地改變軟體過程管理混亂的局面。首先對軟體項目開發過程進行有效、正常化的定義;其次,在軟體項目開發過程中,所有的活動過程均按照流程所規定的活動的邏輯關係、活動的實現方式來執行,這樣可以使得所有的活動有序和可控;第三,通過明確運作流程,使項目組人員迅速融入項目和開發過程中;第四,關注每個過程的“結果”,使軟體項目的所有工作產品均能得到有效儲存,保證了軟體產品完整性。
2 流程的概念及在軟體專案管理中的作用
流程是由活動組成的。基本活動是由個人或團體來完成的,它不需要進行其他的基本活動的轉化。流程的各個活動之間有著特定的流向,它包含著明確的起始活動與終止活動,因此是一個動態概念。從結構上來看,流程有四個基本的構成因素:活動、活動的邏輯關係、活動的實現方式和活動的承擔者。流程與“一系列的活動或事件”、“結果”等概念密切相關。流程管理不僅是一種管理技術,更體現了現代管理的思想,原有的以控制、塔式組織為基礎的職能行政管理已經不能完全滿足於現代企業發展和市場競爭的需要,管理的發展沿著分工理論運行了上百年後,現在又重新迴歸到整合與系統。
軟體專案生命週期的一系列的開發過程是各種各樣的流程活動。軟體項目的計劃編製、系統分析、概要設計、詳細設計、程式編碼、測試與維護等活動過程都是一種流程活動。制定軟體專案管理流程,重點考慮以下幾點:
1)制定的流程能引導項目逐步走向成功;
2)制定的流程能適用軟體開發過程;
3)制定的流程能指導項目開發活動,有利於對項目開發活動的管理;
4)制定的流程能以直觀的流程圖表示,能使項目群組成員清楚的知道軟體開發與管理的過程和相互間的關係;
5)流程中的起始活動條件、終止活動條件明確、規範,便於控制;
6)流程中的工作產品定義明確、可度量,評價標準和方法具體、可操作。
3 軟體專案管理總體流程設計
在軟體項目開發管理過程中,不僅要努力實現項目的範圍、時間、成本和品質等目標,還必須協調整個項目過程,以滿足項目參與者及其他利益相關者的需要和期望;隨著軟體規模和所涉及的領域不斷地擴大,軟體項目的管理越來越困難。縱觀所有失敗的軟體項目,基本原因是不能管理其軟體過程,在無紀律的、混亂的項目狀態下,組織不可能從較好的方法和工具中獲益。嚴謹的軟體過程式控制制與管理不僅可以在每個里程碑追溯和糾正項目的偏差,識別軟體項目的風險甚至果斷中止項目,而且可以將人才流動所帶來的不利影響減少到最小。要進行有效過程式控制制,必須明確軟體專案管理流程。
軟體專案管理總體流程設計為項目搜尋、立項、售前、合約產生和合約執行等5個主要階段,分別以P1、P2、P3、P4、P5表示;同時設計了立項完成、合約簽定、功能定義、軟體開發、項目驗收等5個裡程碑,分別以TM1、TM2、TM3、TM4、TM5表示,1所示。在這些流程中,合約執行流程是軟體專案管理的核心,其主要過程有:產品定義、軟體開發、測試執行、內部驗收、項目實施與驗收、項目維護。
圖1 軟體專案管理總體流程
4 軟體專案管理總體流程分析
4.1項目搜尋
項目搜尋是項目立項的基礎,項目搜尋階段的主要任務包括市場資訊收集,使用者需求跟蹤,對潛在的項目進行分析和篩選。
4.2項目立項
立項階段的主要任務是確認立項的理由,提出立項建議,提供合適的資金和資源,使立項建議成為正式項目。
4.3 項目售前
售前階段從項目立項開始到項目合約的簽定結束,主要工作有:制定與客戶的交流計劃,詳細瞭解客戶的背景資料,瞭解客戶啟動項目的緣由、目的和期望,編製項目方案建議書,準備合約藍本。
4.4合約產生
合約產生階段的主要工作有:項目方案的評估與確定,技術合約、商務合約的商定、評估與簽署。
4.5合約執行
合約執行是軟體專案管理流程的重點,可分為軟體開發、測試執行;內部驗收、項目驗收、系統維護等五個基本工作過程。
4.5.1軟體開發
軟體開發階段分為:需求調研、系統分析、系統設計、編碼、單元測試等過程。主要從三個方面進行管理:
1) 制定專案計劃。軟體專案計劃是一個用來協調所有其他計劃,以指導項目執行和控制的可操作檔案。它體現了對客戶需求的理解,是開展項目活動的基礎,也是軟體項目跟蹤與監控的依據。
2) 確定開發過程。根據軟體項目和項目組的實際情況,建立起一個穩定、可控的軟體開發過程模型,並按照該過程來進行軟體開發。
3) 加強過程式控制制。過程式控制制主要包括過程管理、變更控制和組態管理。
4.5.2測試與執行
項目測試的目的是檢查系統是否符合項目合約與任務書規定的要求。項目測試分整合測試和系統測試,主要進行功能測試、健壯性測試、效能—效率測試、使用者介面測試、安全性測試、壓力測試、可靠性測試、安裝/反安裝測試等。測試過程在類比運行環境中進行。
4.5.3內部驗收
項目完成整合測試和系統測試後進行項目內部驗收,主要有三個步驟:1)文檔準備。專案經理提交內部驗收計劃、項目開發總結報告、產品發布清單;財務主管提交項目財務預算報告。2)內部驗收測試。內部驗收測試的測試內容與方法雖然與系統測試基本相同,但應站在使用者驗收的角度進行,因為它是試啟動並執行基礎,通過這一步,為使用者驗收作充分的準備。3)內部評審。對提交的所有文檔及測試結果進行內部評審,完成項目開發總結報告。
4.5.4項目試運行與驗收
試運行與使用者驗收階段的主要任務是,使所有的工作產品得到使用者的確認。主要工作有:1) 驗收前的準備。專案經理負責檢查產品的完整性,包括文檔、介質和中間產品等,以確保現場實施的成功;負責應用軟體的現場安裝調試,完成安裝調試總結報告;負責制定使用者驗收計劃,並得到客戶的確認。2) 使用者進行驗收測試和系統試運行,進行文檔和系統的移交。3) 使用者確認。專案經理負責與客戶協調,協助使用者進行項目驗收,形成使用者驗收報告。
4.5.5項目維護
軟體系統的維護分為兩大類:一類是錯誤修正性維護,由於前期的測試不可能暴露軟體系統中所有潛在的和隱含的錯誤,診斷和改正這些錯誤的過程為錯誤修正性維護。另一類是完善性維護,在軟體正常使用過程中,使用者還會不斷地提出新的需求,為了滿足使用者新的需求而增加軟體功能的活動稱為完善性維護。如果需求變更很大,那完善性維護將轉變為軟體新版本的開發。系統維護的宗旨就是提高客戶對軟體產品的滿意度。確保系統的正常運行是系統維護的根本目的。
4.6 軟體專案管理的裡程碑
項目的考核與評審是軟體專案管理流程式控制制的基礎,我們在整個流程中設定五個基準,即確定五個裡程碑,它們分別是TM1:立項完成;TM2:合約簽訂; TM3:產品功能定義完成;TM4:軟體開發完成;TM5:驗收通過。1所示。各階段的主要的進入條件和相應的工作結果是裡程碑是否達到的重要標誌。
5 結束語
本文設計的軟體專案管理總體流程及相關技術已成功運用在軟體項目的研發和管理中。通過將流程管理應用於軟體專案管理中,以設定軟體項目總體流程為主線,確定每個階段的主要流程和裡程碑,並採用評價指標體系和一系列的模板和表格進行軟體項目開發過程的控制和管理,使軟體項目的成功率顯著提高。
實踐證明,針對企業和項目的實際情況,確定軟體項目運作流程,定義軟體工作產品,明確各階段的進入條件和允出準則,進行有效流程式控制制與管理,大大的提高了軟體開發的效率和項目的成功率。(來源:希賽網)