『软件工程4』一文了解软件项目管理中的4P
軟件項目管理中的4P
- 一、項目管理的重要性和定義
 - 1、重要性(兩個階段)
 - 2、軟件項目管理的定義
 
- 二、管理四要素4P
 - 1、管理的四要素(4P)
 - 2、軟件項目中影響最終結果的要素
 - 3、項目管理關心的問題
 
- 三、項目參與者類型(people)
 - 四、項目小組結構(people)
 - 1、項目的三種一般小組組織形式
 - 2、關于小組結構的說明
 - 3、項目小組人員間的通信路徑
 - 4、小組結構的選擇需考慮的因素
 - 5、思考題
 
- 五、軟件范圍及問題分解(product)
 - 1、預告
 - 2、軟件范圍的確定(劃定問題的邊界)
 - 3、問題分解(確定各部分的功能)
 
- 六、過程(process)
 - 1、一般性階段
 - 2、選擇過程模型階段
 - 3、已確定過程模型階段
 
- 七、產品和過程的二元性(product and process)
 - 八、項目的5W2H原則(project)
 - 九、寫在最后——think more
 
在日常的軟件開發中,很多人可能認為只要技術實力夠了,不需要任何的軟件項目管理。但殊不知的是, 軟件項目管理對于整個軟件項目起著至關重要的作用,甚至有可能關乎到軟件項目的生死存亡。一項調查顯示, 70%的項目失敗是由于管理不善引起的,而并不是因為技術實力不夠的原因。
那在軟件項目管理當中,重要的4個因素又是什么呢?
在下面的這篇文章當中,將講解軟件項目管理中的4個重要因素4P, people 、 product 、 process 、 project 。
一、項目管理的重要性和定義
1、重要性(兩個階段)
(1)20世紀70年代中期
①70%的項目失敗是由于管理不善引起的,而并不是因為技術實力不夠;
②管理是影響軟件研發項目全局的因素,而技術只影響局部的因素。
(2)20世紀90年代中期
美國軟件工程實施現狀的調查:
①10%的項目能夠在預定的費用和進度下交付;
②軟件項目管理成為軟件項目開發中最重要的核心問題之一。
2、軟件項目管理的定義
(1)定義
軟件項目管理是為了使軟件項目能夠順利完成,而對成本、人員、進度、質量、風險等進行分析和管理的活動。
(2)對象
軟件工程項目,它所涉及的范圍覆蓋了整個軟件工程過程。
(3)何時(即什么時候做項目管理)
這種管理在技術工作開始之前就應開始,在軟件從概念到實現的過程中繼續進行,當軟件工程過程最后結束時才終止。
二、管理四要素4P
1、管理的四要素(4P)
- 人員People —— 成功項目的重要因素;
 - 產品Product —— 要開發的軟件;
 - 過程Process —— 軟件工程的框架活動,包含了任務、里程碑、工作產品以及質量保證點;
 - 項目Project —— 開發軟件所需要的所有工作
 
2、軟件項目中影響最終結果的要素
- 規模
 - 提交的期限
 - 預算和代價
 - 應用領域
 - 運用的技術
 - 系統約束
 - 用戶需求
 - 可提供的資源
 
3、項目管理關心的問題
- 產品的質量
 - 風險的識別和管理
 - 度量
 - 代價估算
 - 項目進度
 - 和客戶交流
 - 項目成員
 - 其他資源
 - 項目監控
 
PS: 以下將對4P的內容進行詳細分析。
三、項目參與者類型(people)
項目參與者類型一般包括以下幾類:
- 高級管理者:負責定義業務問題;
 - 項目(技術)管理者:必須計劃、激勵、組織和控制軟件開發人員;
 - 開發人員:負責開發一個產品或應用所需的專門技術;
 - 客戶:負責說明待開發軟件相關需求的人以及其他風險承擔者;
 - 最終用戶:一旦軟件發布成為產品,最終用戶是直接與軟件進行交互的人
 
總結:
 ①高級管理者,即定義業務問題的人;
 ②項目管理者,即管理軟件開發的人;
 ③開發人員,即應用技術開發軟件的人;
 ④客戶,即提出軟件需求,并承擔一定風險的人;
 ⑤最終用戶,即與軟件交互的人。
四、項目小組結構(people)
1、項目的三種一般小組組織形式
(1)民主分散式(Democratic Decentralized, DD)
(2)控制分散式(Controlled Decentralized, CD)
(3)控制集中式(Controlled Centralized, CC)
2、關于小組結構的說明
(1)DD(民主分散式):沒有固定的負責人,適合難度比較高、交付期限很長及生存期較長的項目,最適合于解決模塊化程度比較低的問題,因為需要通信;
通俗來說:沒有負責人,只有水平通信,成員之間需要廣泛的兩兩交流。
(2)CD(控制分散式):有一個固定的負責人,若有子負責人,子負責人和總負責人的通信是垂直的,而個人間的通信是水平的,適合交付期限較長、比較簡單的項目;
通俗來說:有固定負責人,成員之間需要交流,成員與負責人之間也需要交流;若有子負責人,成員跟子負責交流,子負責人跟總負責交流。
(3)CC(控制集中式):負責人和小組成員之間的通信是垂直的,適合解決交付期限比較嚴格的、簡單的、模塊化程度高的項目
通俗來說:有固定負責人,成員之間不溝通,只跟上級溝通。
注:CD和CC兩種結構都需要有一個固定的負責人,而DD不用;且會比DD產生更少的缺陷。
3、項目小組人員間的通信路徑
 從上圖中可以看出,項目小組人數越多,通信路徑越多。
 通信路徑計算公式為:
 Cn2=n(n?1)2,n表示水平通信成員間的人數C_n^2=\frac{n(n-1)}{2} ,n表示水平通信成員間的人數 Cn2?=2n(n?1)?,n表示水平通信成員間的人數
4、小組結構的選擇需考慮的因素
對于一個小組來說,選擇一個合適的結構需考慮以下因素:
- 待解決軟件項目的困難程度;
 - 產生的程序規模,以代碼行或者功能點來衡量;
 - 小組成員需要共同工作的時間(小組生存期);
 - 項目所需要的通信的程度;
 - 問題能夠被模塊化的程度;
 - 待建造系統所要求的質量和可靠性;
 - 交付日期的嚴格程度
 
5、思考題
Q1:某公司有21名員工,請問分別按DD、CD、CC方式來進行組織結構的劃分,各自會產生多少條的通信路徑?假設在CD和CC方式下被分成四組,畫出大概的組織結構圖。
A1:
 下面給出無子負責人和有子負責人的框架圖:
 
 寫到這里,不妨再思考下,在CD和CC方式下被分成五組,有多少條通信路徑?組織架構又是怎么樣的呢?
 評論區留下你的答案~
五、軟件范圍及問題分解(product)
1、預告
在開始進行一個項目之前,應該了解些什么呢?
(1)在進行項目計劃之前,軟件開發者和客戶必須一起定義產品的目的和范圍,考慮可選的解決方案,標識技術和管理的約束;
(2)沒有這些信息,就不可能進行合理的(準確的)成本估算、有效的風險評估、適當的項目任務劃分或是可管理的項目進度安排;
(3)軟件范圍是軟件項目管理的第一個活動。
通過下面一張圖來加深對軟件范圍的理解。
圓圈里的內容即軟件范圍,確定該項目要做什么;那么不在圈子里面的,就先拋開,也就是說,不該做的內容先不要做。
2、軟件范圍的確定(劃定問題的邊界)
(1)語境;
(2)信息目標;
(3)功能和性能
3、問題分解(確定各部分的功能)
(1)分而治之;
(2)估算開始之前,范圍中所描述的軟件功能必須被評估和細化,以提供更多的細節。因為成本和進度的估算都是面向功能的,所以某種程度的分解通常是很有用的。
六、過程(process)
1、一般性階段
(1)軟件過程的一般性階段(定義、開發和支持)適用于所有軟件項目;
(2)問題在于選擇一個適合項目組所要開發軟件的過程模型。
回顧下上一篇文章提到過的過程模型:
- 線性順序模型(瀑布模型)
 - V模型
 - 原型實現模型
 - RAD模型
 - 增量模型
 - 螺旋模型
 - 形式化方法模型
 
2、選擇過程模型階段
項目管理者必須決定哪一個過程模型最適合用在此項目,因此在選擇過程模型時需考慮以下因素:
(1)需要該產品的客戶和將做此工作的人員;
(2)產品本身的特征;
(3)軟件項目組工作的項目環境。
3、已確定過程模型階段
(1)當一個過程模型被選定時,項目組基于通用過程框架活動集合,定義一個初步的計劃;
(2)一旦建立了初步的計劃,便可以開始進行過程分解,即必須建立一個完整的計劃以反映框架活動中所需要的工作任務;
(3)工作任務必須針對項目的特定需要進行適應性修改;且框架活動總是一樣的,但工作任務則要根據一系列的適應性標準來選擇。
七、產品和過程的二元性(product and process)
 從上圖中可以看出,橫向坐標表示過程,縱向坐標表示產品,也就是說,每一個產品都有它對應的一系列過程。所以,在一個項目中,產品和過程都一樣重要,缺了誰都不行,這也就體現了產品和過程的二元性。
八、項目的5W2H原則(project)
項目的5W2H原則包含以下幾點:
- WHY —— 為什么(Why)該系統被開發?(業務目的)
 - WHAT —— 將做什么(What)?(項目任務)
 - WHEN —— 什么時候(When)做?(里程碑)
 - WHO —— 某功能由誰(Who)負責?(角色和責任)
 - WHERE —— 他們的機構組織位于何處(Where)?(角色責任界定)
 - HOW —— 工作將如何(How)被技術和管理地進行?(管理和技術策略)
 - HOW MUCH —— 每種資源需要多少(How much)?(資源分配)
 
九、寫在最后——think more
看完上面文章內容后,不妨試問下自己以下問題:
分析如下具體項目情況,選擇合適的團隊結構(CC、CD、DD)及軟件過程模型,并分析原因。
Q1:在一個信息系統組織中,你被指派為項目經理。你的工作是開發一個應用程序,該程序類似于你的團隊以前已經做過的某個項目,只是規模更大而且更復雜一些。需求已經由用戶寫成文檔。
Q2:你被指派為一個小型軟件產品公司的項目經理。你的工作是開發一個有突破性的產品,該產品結合了虛擬現實的硬件和高超的軟件。因為家庭娛樂市場的競爭非常激烈,完成這項工作的壓力很大。
Q3:你被指派為一個大型軟件產品公司的項目經理。你的工作是管理該公司已被廣泛使用的字處理軟件的新版本的開發。因為必須獲得新的收益,已經規定了緊迫的最后期限并對外公布。
Q4:在一個為遺傳工程領域服務的公司中,你被指派為項目經理。你的工作是管理一個軟件新產品的開發,該產品能夠加速基因分解的速度。這項工作是面向研究及開發的,但其目標是在下一年度內生產出產品。
評論區留下你的答案?(?????)?
PS 本文篇幅較長,有不理解或者有誤的地方歡迎私聊或加我微信 MondayLaboratory 交流~
- 公眾號:星期一研究室
 - 微信:MondayLaboratory
 
如果這篇文章對你有幫助,記得留下star哦~
總結
以上是生活随笔為你收集整理的『软件工程4』一文了解软件项目管理中的4P的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 『软件工程3』你应该知道的三种原型实现模
 - 下一篇: 培根热量是多少