軟件項目管理流程

軟件項目管理流程總結

項目管理與軟件開發的質量、效率、最終成果息息相關,本文主要講述軟件項目的風險評估、成本預算、客戶溝通、須要分析、開發管理、成品交付等多個流程。
在現今國內的項目的管理形式十分零亂,對管理欠缺重視,以至不少項目由於失去管理而最終折腰。
不少的實戰形人才只重視於開發環節,而對其餘的流程欠缺認識(包括本人),於是致使項目欠缺有條理的、階段化的管理。
本人是一個典型的只重視開發的管理者,在屢次的教訓中深入地體會到管理的重要性,於是以此文章對項目管理做出一個總結,當中存在不少的不足之處,敬請各位點評!
html

  1. 風險評估數據庫

  2. 成本預算安全

  3. 客戶溝通的過程服務器

  4. 需求分析網絡

  5. 面向對象程序設計架構

  6. 開發管理框架

  7. 產品交付ide

1、     風險評估函數

軟件項目風險是指在整個項目週期中所涉及的成本預算、開發進度、技術難度、經濟可行性、安全管理等各方面的問題,以及由這些問題而對項目所產生的影響。項目的風險與其可行性成反比,其可行性越高,風險越低。軟件項目的可行性分爲經濟可行性、業務可行性、技術可行性、法律可行性等四個方面。而軟件項目風險則分爲產品規模風險、須要風險、相關性風險、管理風險、安全風險等六個方面:工具

1.      產品規模風險

項目的風險是與產品的規模成正比的,通常產品規模越大,問題就越突出。尤爲是估算產品規模的方法,複用軟件的多少,需求變動的多少等因素與產品風險息息相關:

(1)  估算產品規模的方法

(2)  產品規模估算的信任度

(3)  產品規模與之前產品規模平均值的誤差

(4)  產品的用戶數

(5)  複用軟件的多少

(6)  產品需求變動的多少

2.      需求風險

不少項目在肯定需求時都面臨着一些不肯定性。當在項目早期容忍了這些不肯定性,而且在項目進展過程中得不到解決,這些問題就會對項目的成功形成很大威脅。若是不控制與需求相關的風險因素,那麼就頗有可能產生錯誤的產品或者拙劣地建造預期的產品。每一種狀況對產品來說均可能致命的,這些的風險因素有:

(1)  對產品缺乏清晰的認識

(2)  對產品需求缺乏認同

(3)  在作需求分析過程當中客戶參與不夠

(4)  沒有優先需求

(5)  因爲不肯定的須要致使新的市場

(6)  不斷變化需求

(7)  缺乏有效的需求變化管理過程

(8)  對需求的變化缺乏相關分析等

3.      相關性風險

許多風險都是由於項目的外部環境或因素的相關性產生的。控制外部的相關性風險, 能緩解策略應該包括可能性計劃,以便從第二資源或協同工做資源中取得必要的組成部分,並覺察潛在的問題,與外部環境相關的因素有:

(1)  客戶供應條目或信息

(2)  交互成員或交互團體依賴性

(3)  內部或外部轉包商的關係

(4)  經驗豐富人員的可得性

(5)  項目的複用性

4.      技術風險

軟件技術的飛速發展和經驗豐富員工的缺少,意味着項目團隊可能會由於技巧的緣由影響項目的成功。 在早期,識別風險從而採起合適的預防措施是解決風險領域問題的關鍵,好比:培訓、聘請顧問以及爲項目團隊招聘合適的人才等。關於技術主要有下面這些風險因素:

(1)  缺少培訓

(2)  對方法、工具和技術理解的不夠

(3)  應用領域的經驗不足

(4)  對新的技術和開發方法應用不熟悉

5.      管理風險

儘管管理問題制約了不少項目的成功,可是不要由於風險管理計劃中沒有包括全部管理活動而感到驚奇。在大部分項目裏,項目經理常常是寫項目風險管理計劃的人,他們有先天性的不足——不能檢查到本身的錯誤。於是,使項目的成功變得更加困難。若是不正視這些棘手的問題,它們就頗有可能在項目進行的某個階段影響項目自己。當咱們定義了項目追蹤過程而且明晰項目角色和責任,就能處理這些風險因素:

(1)  計劃和任務定義不夠充分

(2)  對實際項目狀態不瞭解

(3)  項目全部者和決策者分不清

(4)  不切實際的承諾

(5)  不能與員工之間的進行充分地溝通

6.      安全風險

軟件產品自己是屬於創造性的產品,產品自己的核心技術保密很是重要。但一直以來,咱們在軟件這方 面的安全意識比較淡薄,對軟件產品的開發主要注重技術自己,而忽略了專利的保護。軟件行業的技術人員流動是很廣泛的現象,隨着技術人員的流失、變動,很能會致使產品和新技術的泄密,導致咱們的軟件產品被它公司竊取,致使項目失敗。並且在軟件方面關於知識產權的認定目前尚未明確的一個行業規範,這也是咱們 軟件項目潛在的風險。

7.      迴避風險的方式

(1)  以開發方誘導能保證需求的完整,使需求與客戶的真實指望高度一致。再以書面方便造成《用戶需求》這一重要的文檔,避免疏漏形成的損失在軟件系統的後續階段被逐步地放大。

(2)  設立監督制度,項目開發中任何較大的決定都必須有客戶參與進行的,在該項目中項目監督由項目開發中的質量監督組來實施。

(3)  需求變動須要通過統一的負責人提出,而且要用戶需求的審覈領導承認,需求變動應該是按期而不是隨時的提出,並且開發方應該作好詳細的記錄,讓客戶瞭解需求變動的實際狀況。

(4)  控制系統的複雜程度,過於簡單的系統結構,對用戶來使用比例會有明顯的折扣,甚至形成軟件壽命太短。反之,軟件結構的過於靈活和通用,必然引發軟件實現的難度增長,系統的複雜度會上升,這又會在實現和測試階段帶來風險。適當控制系統的複雜程度有利於下降開發的風險。

(5)  從軟件工程的角度看,軟件維護費用約佔總費用的55%~70%,系統越大,該費用越高。對系統可維護性的輕視是大型軟件系統的最大風險。在軟件漫長的運營期內,業務規則確定會不斷髮展,科學的解決此問題的作法是不斷對軟件系統進行版本升級,在確保可維護性的前提下逐步擴展系統。

(6)  設定應急計劃,每一個開發計劃都至少應該設定一個應急預案去應對出現突發狀況和不可遇知的風險。

2、     成本預算

1.      成本預算方式

(1)  自上而下的預算方法

自上而下的預方法主要是依據上層、中層項目管理人員的管理經驗進行判斷,對構成項目總體成本的子項目成本進行估計,並把這些判斷估計的結果傳遞給低一層的管理人員,在此基礎上由這一層的管理人員對組成項目的子任務和子項目的成本進行估計,而後繼續向下一層傳遞他們的成本估計,直到傳遞到最低一層。

使用此預算方式,在上層的管理人員根據他們的經驗進行的費用估計分解到下層時,可能會出現下層人員認爲上層的估計不足以完成相應任務的狀況。這時,下層人員不必定會表達出本身的真實觀點,不必定會和上層管理人員進行理智地討論,從而得出更爲合理的預算分配方案。在實際中,他們每每只能沉默地等待上層管理者自行發現問題並予以糾正,這樣每每會給項目帶來諸多問題。

自上而下更適用於項目啓動的前期,與真實費用相差在30% ~ 70%之間。

Scrum使用自上而下的成本預算方式,它不會當即精確地肯定成本,而是以最大限度容納客戶對將來產品要求所產生的變動。

(2)  自下而上的預算方法

自下而上方法要求運用WBS(Work Breakdown Structure,工做分解結構)對項目的全部工做任務的時間和預算進行仔細考察。最初,預算是針對資源(團隊成員的工做時間、硬件的配置)進行的,項目經理在此之上再加上適當的間接費用(如培訓費用、管理費用、不可預見費等)以及項目要達到的利潤目標就造成了項目的總預算。自下而上的預算方法要求全面考慮全部涉及到的工做任務,更適用於項目的初期與中期,它能準備地評估項目的成本,與真實費用相差在5% ~ 10%之間。

註解:WBS

WBS是面向提交成果對項目的分解,從提交成果的列表能夠肯定每一個提交成果須要執行的活動。Scrum會對WBS進一步細化,把一個迭代分解爲一個或多個的工做包,再把工做包分解爲細小的開發任務(通常開發任務的開發週期在15個工做小時之內)。

2.      肯定項目支出

整體成本預算就是結合下列多個成本預算方式綜合計算的開發成本:

(1)  零基數預算

在成本預算的初期應該使用零基數的計算原則,而不可使用相似於:以上一年整體費用加上20% 這樣粗略的方式計算項目成本。

(2)  軟硬件成本、物品成本

物品成本是指相似於:服務器(RAM 硬盤 CPU NIC卡 RAID簇)成本、維護成本、機房租金、光纖通信成本、軟件成本等的成本。

計算成本時須要考慮組裝硬盤需時的長短,技術人員須要具有的質素,產品供應商可否提供保證質量,管理時是否須要額外的管理人員這些多方因素。

(3)  軟件許可證成本

(4)  外包成本

當使用相似:視頻、短信、移動電信類服務、門戶網站等子項目時能夠考慮之外包形式完成,以下降開發成本。

(5)  人力資源成本

計算人力資源成本時應該使用以最高和最低的工做效率估算平均效率的方式,計算出人力資源的平均成本。

(6)  維修保養成本

3、     客戶溝通的過程

從客戶溝通的方向出發來看,軟件項目可分爲:需求識別、方案定製、項目實施、項目結束等4個不一樣的階段,各個階段都具備不一樣的溝通重點。

1.  需求識別階段

(1)  文本溝通

在需求識別的前期,應該經過問卷、原型展現、界面展現、邏輯處理展現、準化文檔模板等方式進行全方位多角度的分析,隨時將不明確之處反饋給客戶,以期待客戶解答。並以文本記錄的方式創建須要分析書,並要求客戶審覈需求分析書,以達到須要分析與客戶的真實指望高度一致的結果。

(2)  業務邏輯溝通

在進行業務溝通時,應該瞭解客戶的行業語言,以促進業務分析的過程,越過應用需求和開發之間的鴻溝。溝經過程提倡以草圖或者可視信息化的方式進行, 針對不一樣層面的企業用戶提供最適合的操做界面。以多角度的方式思考問題,要抓住需求重點,尤爲是客戶方領導所關注的創新類和實用類需求。

(3)  需求變動的規範化管理

需求變動在軟件開發類項目中是能夠理解的,但必須對需求變動作好規範化的管理,以免出現需求無止境變動的風險。需求變動必須由統一的負責人提出,而且由用戶需求的審覈領導者承認。需求變動的提出應該是按期而不是隨時的,開發方應該作好詳細的文本記錄,讓客戶瞭解需求變動的實際狀況和開發方爲之所付出的成本代價。

2.  方案定製階段

該階段項目的主要任務是與客戶共同制定一個之前期明確的需求、雙方的資源、項目開始的階段、實施的時間約定、項目費用限制等爲基礎的具備可操做性的項目計劃,從本階段開始爭取客戶全面參與項目的管理,並以雙方的共同利益考慮項目實施的具體計劃與風險規避。

3.  項目實施階段

在該階段,軟件項目團隊應該與客戶共同領導項目的實施。同時,項目團隊應實時評估客戶滿意度,並經過持續改進的方式提升客戶滿意度,還應要求客戶參加必要的培訓,以及在必要時檢查項目產品。在出現客戶的需求變動前,應主動與客戶溝通交流,使客戶充分了解項目的每一個環節,以及變動帶來的影響,減小需求變動。若是出現客戶需求變動,應與客戶一塊兒共同解決由變動引發的成本、進度、質量變化。

4.  結束階段

該階段主要進行項目成果的移交,並把系統交付給維護人員,幫助客戶實現商務目標,結清各類款項。完成這些工做後應該進行項目評估,審覈此項目的成果並總結項目經驗。

5.  售前人員注意事項

在產品型項目做爲開發成果時,相關銷售人員應該注意:對產品的推銷不該該過度承諾。若是過度承諾,會給後續的項目實施帶來困難;一旦承諾沒有兌現,也會下降客戶滿意度,影響從此合做。若是有附加承諾,必定要以文本形式記錄,讓實施項目經理知曉並傳達給項目組成員。

註解:在軟件項目中,須要明確如下四種客戶角色

A.   要明確最終使用部門和用戶,要去了解他們現有的工做方式,要讓他們知道項目的目標框架,知道項目要解決他們的哪些困難,但絕對不是所有困難,這樣能夠較好的控制項目範圍。

B.   要明確需求的提出者,他或者他們要可以表明最終客戶羣體。提出產品需求的這類客戶要具備必定的技術、業務能力和權威,可以真正表明最終客戶團隊的意願和想法,最好有IT基礎,可以用IT語言描述問題和需求,以利於雙方的溝通、協做,避免產生歧義。

C.   要明確作需求確認的中層領導,他要把握方向。軟件開發項目是解決實際生產或者管理問題,同時 也是領導系統建設的具體實現,作需求確認的客戶領導,既要了解高層領導的系統建設要點和方向,又要諳熟具體業務和生產管理實際。若是是這樣的客戶領導來把 握和決策,對企業軟件開發項目的順利進展做用非凡。

D.   要明確誰來對成品提意見,誰來驗收。項目驗收環節,是項目的收尾環節,若是驗收的人對項目初期的需求目標不瞭解,會從態度和產品實際使用效果上對驗收產生負面的影響,對提供產品的企業關閉項目很是不利。根據實踐總結,由需求提出人和確認人來作項 目的驗收工做,可以促進項目的順利完成,避免延期。

4、     需求分析

1.     需求分析的過程

需求過程包括需求開發和需求管理2個部分:

(1)  需求開發就是對開發前期的管理,與客房的溝經過程,能夠分爲4個階段:需求獲取、需求分析、編寫需求和需求驗證。

(2)  需求管理:就是軟件項目開發過程當中控制和維持需求約定的活動。包括:變動控制、版本控制、需求跟蹤、需求狀態跟蹤。

2.      需求的層次

需求的層次包括:業務需求、用戶需求、功能需求、非功能需求等4個方面。

3.     需求開發階段的重點

(1)  提取業務對象

業務對象是指系統使用的真實對象,例如一個供應鏈管理 (Supply Chain Management ,簡稱SCM) 業務對象主要包括:生產批發商、零售商、送貨商、顧客多個層次。

(2)  提取業務流程

在瞭解業務邏輯的過程當中,應該列舉出所開發軟件模塊的各自職能,並細化每一個工做流程,深刻分析業務邏輯。

(3)  性能需求

在分析的前期應該注意客戶對所開發軟件的技術性能指標,如存儲容量限制、運行時間限制、安全保密性等。

(4)  環境需求

環境需求是指軟件平臺運行時所處環境的要求,如硬件方面:機型、外部設備、數據通訊接口;軟件方面:系統軟件,包括操做系統、網絡軟件、數據庫管理系統方面;使用方面:使用部門在制度上,操做人員上的技術水平上應具有怎樣的條件。

(5)  可靠性需求

對所開發軟件在投入運行後發生故障的機率,應該按實際的運行環境提出要求。對於重要的軟件,或是運行失效會形成嚴重後果的軟件,應提出較高的可靠性要求。

(6)  安全保密要求

在需求分析時應當在這方面恰當地作出規定,對所開發的軟件給予特殊的設計,使其在運行中,其安全保密方面的性能獲得必要的保證。

(7)  用戶界面需求

爲用戶界面細緻地規定到達的要求。

(8)  資源使用需求

開發的軟件在運行時和開發時所須要的各類資源。

(9)  軟件成本消耗與開發進度需求

在軟件項目立項後,根據合同規定,對軟件開發的進度和各步驟的費用提出要求,做爲開發管理的依據。

(10) 開發目標需求

預先估計之後系統可能達到的目標,這樣能夠比較容易對系統進行必要的補充和修改。

4.      需求分析的任務

需求分析的主要任務是藉助於當前系統的邏輯模型導出目標系統的邏輯模型,其流程以下:

(1)  肯定對系統的綜合需求(功能、性能、運行、擴充需求)

(2)  製做產品需求文檔 (PRD)

(3)  分析系統的數據需求(概念模型、數據字典、規範化)

(4)  導出目標系統的詳細的邏輯模型(數據流圖、數據字典、主要功能描述)

(5)  開發原形系統

(6)  從PRD提取編制軟件需求規格說明書(SRS)

註解:SRS格式

1.引言  2系統概述(項目背景、系統目標、核心業務流程) 3.術語說明  4.系統結構(架構圖、功能圖)

5.主體功能與業務邏輯(重點) 6.接口需求(內部、外部接口、) 7.網絡整體設計(拓撲網絡、主機、組網)

8.運行環境(Linux、Windows、IIS、 WebLogic、Tomcat、OLAP、OLTP、JDK 8.0 、.NET Framework 4.0等)


5、     面向對象程序設計(略)

1.      設計原則

(1)  SRP單一職責鏈

每一個類都應該只負責作一件事。

(2)  OCP開封閉合原則

軟件的實體(類、模塊、函數等)應該是能夠擴展的,可是不可修改的。

(3)  LSP替換原則

子類必須能替換他們的基類型。

(4)  DIP依賴倒置原則

高層模塊不該該依賴於低層模塊,兩者都應該依賴於接口與抽象類。抽象不該該依賴於細節,細節應依賴於對象。

(5)  ISP接口隔離原則

不該該強迫客戶依賴於並未使用的接口,而應該把胖接口分離。

2.      實現UML建模

(1)  業務對象的提取

(2)  根據SRS、CRC等實現用況建模

(3)  實現業務順序圖

(4)  創建類圖,根據用況圖創建對象之間的關聯

(5)  繪製活動圖、實現協做圖、狀態圖

6、     開發管理

1.      創建項目計劃

(1)  設計整體架構

針對系統的實施須要,採起適當的且成熟的框架結構。

(2)  控制可擴展度

擴展度過大,將提升系統的複雜程度,延長開發時間;擴展度太低,會直接影響系統的二次開發與維護。控制系統的可擴展性,能提升開發效率,下降系統維護的難度。

(3)  創建基礎設施

合理分配部署軟、硬件等基礎設施所須要的時間與成本(例如:服務器的訂購安裝、光纖接入、軟件平臺訂購)。

(4)  劃分開發任務

利用WBS(Work Breakdown Structure,工做分解結構)對可交付結果進行分類與劃分。每一個項目都能劃分爲多個不一樣階段,每一個階段又能夠分爲多個工做包(Work Package),工做包是WBS裏最小的可交付結果,最後從工做包中分解出多個開發任務列表。

(5)  部署開發進度

一個項目應該按進度劃分爲多個開發階段,每一個階段的開發週期通常在30~60個工做日之內。在此階段內應該與客戶舉行協商會議,制定產品路線圖,在開發過程當中邀請客戶積極參與並提出反饋意見。而後把該時段內的開發任務按照開發難度,依賴性,重要性等多方條件劃分爲多個迭代週期。

在Scrum 敏捷軟件開發原則中,應該把每一個迭代任務進一步細分爲多個開發任務列表,再開發任務分配給組員各自負責,而開發時間應該控制在15個工做小時之內。若是開發時間超出15個工做小時,應該考慮把開發任務再度細化。開發任務建議應該由組員自主選擇,而不要使用強制分配的方式。

(5)  測試項目成果

每一個工做包都應該同步部署測試工做,提升項目的質量。對出錯BUG的工做包應該由測試人員以文本方式記錄,向開發人員展現錯誤所在,讓開發人員及時進行修改。

2.      管理開發團隊

(1)  組建團隊

按照工做任務與項目時間的前提條件創建團隊,按團隊職責分配人員,通常團隊人數應該控制在8~12人之間。當團隊人數超過15人時,應該考慮把團隊分解成2個獨立團隊,負責不一樣的開發任務。

(2)  分配開發任務

在每一個迭代週期內(通常是15~30個工做日),應該把每一個工做包進一步細分爲多個開發任務,再開發任務分配給組員各自負責,開發時間應該控制在15個工做小時之內。若是開發任務的開發時間超出15個工做小時,應該考慮把任務再度細化。而開發任務應該以自由選擇的方式分配給每一個組員。

(3)  監督開發進度

在迭代的前期舉行一次會議,讓組員瞭解開發的進展及流程,並以自主選擇的方式分配開發任務。期間可以使用Microsoft Project等工具記錄開發流程的進展,在每一個工做包完成開發後應該進行×××的測試,並以文本方式記錄測試結果。

天天舉行一次15分鐘的站立會議,讓組員交待昨天已完成的開發任務,當天將要作的任務,與開發過程當中所遇到的問題。並在每週末舉行一次例行會議,交待整體進程。

在迭代末期舉行一次衝刺會議,總結項目的進展,交行已完成的任務,回顧該迭代週期內所遇到的問題,爲下一個迭代作好準備。

(4)  系統測試

對每一個已完成的工做包進行適時的測試,保證系統質量與性能。對測試結果進行文本的記錄,並把測試結果與績效工資收入掛鉤,並以真實數據計算組員的績效收入。

(5)  解決開發中所遇到的問題

對開發人員進行前期培訓,可適當按工做能力分配任務,指導組員的開發。當遇到問題時應該在當天的站立會議時即時提出,並在15個工做小時內解決所遇到的問題以防止問題進一步擴大。

3.      監管產品質量

(1)  質量須要的是計劃、設計而並不是審查的。在產品創建的初級,必須與「質量保證」(QA)的部門進行協商,以正式文檔的方式,決定恰當的質量策略和標準。

(2)  在開發過程當中使用TDD(測試驅動開發)的模式,提升開發質量。測試人員應該以文本方式記錄bug,並與開發人員共同工做的,把突出的缺陷演示給開發人員,以提升修改的效率。

(3)  在每一個迭代的結束時進行一次產品效果的演示,從客戶、使用者、高層領導中收集反饋信息。在團隊內部舉行評審會議,分析測試結果,瞭解產品性能,爲下次迭代所須要作的改進作好計劃。

4.      修改項目計劃

(1)  在產品須要識別階段,應該以文檔形式記錄產品功能與開發流程,在開發計劃須要修改時,應該與客戶共同探討,讓客戶瞭解計劃修改對項目進度所形成的影響。

(2)  項目計劃的修改應該由統一的負責人提出,而且由用戶需求的審覈領導者承認。需求變動的提出應該是按期而不是隨時的。

(3)  計劃的變動應該作好詳細的文本記錄,讓客戶瞭解需求變動的實際狀況和開發方爲之所付出的成本代價。

7、     產品交付

1.      項目的後期審覈

在項目開發最終完成後,對開發人員來講可算是放下工做的重擔,但對項目經理來講這每每是項目的關鍵時刻。前期的風險評估、成本預算、需求分析、軟件設計都是爲了引導項目走向這一時刻,此時全部的目光都將投向項目管理人員。你可能發現大量而瑣碎的工做將要在幾個小時內完成,此刻項目經理更須要保持清醒與鎮定,把最後的工做視爲微型項目來對待。細緻地對項目進行後期的審覈,分析項目成果、項目團隊的效率、可交付產品的價值,以此審覈結果可做爲項目管理經驗總結的一部分。

2.      質量評審

在項目交付前,應該把項目交給相關的「質量保證」(QA)部門進行質量評審,並邀請典型用戶感覺產品的質量。

3.      項目的最終交付

正常狀況下在項目的前期就會訂立項目交付的協議,項目交付方式分爲非正式驗收與正式驗收兩種。通常在項目完成後都會先進行非正式驗收,讓客戶體會項目的質量並提出反饋意見,最後在客戶確定產品質量後再以書面協議的形式進行正式的產品驗收。

4.      項目的最終報告

在項目的最後,應該制定項目的最終報告,此報告能夠視爲是對該項目一個記錄,但報告沒必要包含項目的全部方面。通常最終報告應該包含如下方面:

(1)  最初引進項目時的初期項目視圖

(2)  對該項目的價值評估及支持性信息

(3)  項目的範圍

(4)  項目的開發流程及WBS

(5)  項目的會議記錄

(6)  項目變動的報告及變動的理由

(7)  與項目相關的溝經過程文件

(8)  項目的審覈報告與客戶驗收報告

(9)  項目成員的表現報告

(10) 項目的最終成果

相關文章
相關標籤/搜索