當前位置:學問谷 >

行業範例 >管理 >

軟件研發項目管理流程

軟件研發項目管理流程

軟件開發是根據用户要求建造出軟件系統或者系統中的軟件部分的過程。以下是小編收集的軟件研發項目管理流程,歡迎查看!

軟件研發項目管理流程

一、 風險評估

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

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) 設定應急計劃,每個開發計劃都至少應該設定一個應急預案去應對出現突發情況和不可遇知的風險。

二、 成本預算

1. 成本預算方式

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

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

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

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

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

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

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

2. 確定項目支出

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

(1) 零基數預算

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

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

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

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

(3) 軟件許可證成本

(4) 外包成本

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

(5) 人力資源成本

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

(6) 維修保養成本

三、 客户溝通的過程

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

1. 需求識別階段

(1) 文本溝通

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

(2) 業務邏輯溝通

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

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

需求變更在軟件開發類項目中是可以理解的,但必須對需求變更做好規範化的管理,以避免出現需求無止境變更的風險。需求變更必須由統一的負責人提出,並且由用户需求的審核領導者認可。需求變更的提出應該是定期而不是隨時的,開發方應該做好詳細的文本記錄,讓客户瞭解需求變更的實際情況和開發方為之所付出的成本代價。

2. 方案定製階段

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

3. 項目實施階段

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

4. 結束階段

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

5. 售前人員注意事項

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

四、 需求分析

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)

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

1. 設計原則

(1) SRP單一職責鏈

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

(2) OCP開封閉合原則

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

(3) LSP替換原則

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

(4) DIP依賴倒置原則

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

(5) ISP接口隔離原則

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

2. 實現UML建模

(1) 業務對象的提取

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

(3) 實現業務順序圖

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

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

六、 開發管理

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) 計劃的變更應該做好詳細的文本記錄,讓客户瞭解需求變更的實際情況和開發方為之所付出的成本代價。

七、 產品交付

1. 項目的後期審核

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

2. 質量評審

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

3. 項目的最終交付

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

4. 項目的最終報告

在項目的最後,應該制定項目的最終報告,此報告可以視為是對該項目一個記錄,但報告不必包含項目的所有方面。一般最終報告應該包含以下方面:

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

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

(3) 項目的範圍

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

(5) 項目的會議記錄

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

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

(8) 項目的審核報告與客户驗收報告

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

(10) 項目的最終成果

  • 文章版權屬於文章作者所有,轉載請註明 https://xuewengu.com/flhy/guanli/14rpen.html