【軟件工程知識】{4} 軟件項目管理概述

一、項目管理的重要性和定義

1、重要性(兩個階段)

(1)20世紀(jì)70年代中期

①70%的項目失敗是由于管理不善引起的,而并不是因為技術(shù)實力不夠;

②管理是影響軟件研發(fā)項目全局的因素,而技術(shù)只影響局部的因素。

(2)20世紀(jì)90年代中期

美國軟件工程實施現(xiàn)狀的調(diào)查:

①10%的項目能夠在預(yù)定的費(fèi)用和進(jìn)度下交付;

②軟件項目管理成為軟件項目開發(fā)中最重要的核心問題之一。

2、軟件項目管理的定義

(1)定義

軟件項目管理是為了使軟件項目能夠順利完成,而對成本、人員、進(jìn)度、質(zhì)量、風(fēng)險等進(jìn)行分析和管理的活動。

(2)對象

軟件工程項目,它所涉及的范圍覆蓋了整個軟件工程過程。

(3)何時(即什么時候做項目管理)

這種管理在技術(shù)工作開始之前就應(yīng)開始,在軟件從概念到實現(xiàn)的過程中繼續(xù)進(jìn)行,當(dāng)軟件工程過程最后結(jié)束時才終止。

二、管理四要素4P

1、管理的四要素(4P)

  • 人員People —— 成功項目的重要因素;
  • 產(chǎn)品Product —— 要開發(fā)的軟件;
  • 過程Process —— 軟件工程的框架活動,包含了任務(wù)、里程碑、工作產(chǎn)品以及質(zhì)量保證點(diǎn);
  • 項目Project —— 開發(fā)軟件所需要的所有工作

2、軟件項目中影響最終結(jié)果的要素

  • 規(guī)模
  • 提交的期限
  • 預(yù)算和代價
  • 應(yīng)用領(lǐng)域
  • 運(yùn)用的技術(shù)
  • 系統(tǒng)約束
  • 用戶需求
  • 可提供的資源

3、項目管理關(guān)心的問題

  • 產(chǎn)品的質(zhì)量
  • 風(fēng)險的識別和管理
  • 度量
  • 代價估算
  • 項目進(jìn)度
  • 和客戶交流
  • 項目成員
  • 其他資源
  • 項目監(jiān)控

PS: 以下將對4P的內(nèi)容進(jìn)行詳細(xì)分析。

三、項目參與者類型(people)

項目參與者類型一般包括以下幾類:

  • 高級管理者:負(fù)責(zé)定義業(yè)務(wù)問題;
  • 項目(技術(shù))管理者:必須計劃、激勵、組織和控制軟件開發(fā)人員;
  • 開發(fā)人員:負(fù)責(zé)開發(fā)一個產(chǎn)品或應(yīng)用所需的專門技術(shù);
  • 客戶:負(fù)責(zé)說明待開發(fā)軟件相關(guān)需求的人以及其他風(fēng)險承擔(dān)者;
  • 最終用戶:一旦軟件發(fā)布成為產(chǎn)品,最終用戶是直接與軟件進(jìn)行交互的人

總結(jié):
①高級管理者,即定義業(yè)務(wù)問題的人;
②項目管理者,即管理軟件開發(fā)的人;
③開發(fā)人員,即應(yīng)用技術(shù)開發(fā)軟件的人;
④客戶,即提出軟件需求,并承擔(dān)一定風(fēng)險的人;
⑤最終用戶,即與軟件交互的人。

四、項目小組結(jié)構(gòu)(people)

1、項目的三種一般小組組織形式

(1)民主分散式(Democratic Decentralized, DD)

(2)控制分散式(Controlled Decentralized, CD)

(3)控制集中式(Controlled Centralized, CC)

2、關(guān)于小組結(jié)構(gòu)的說明

(1)DD(民主分散式):沒有固定的負(fù)責(zé)人,適合難度比較高、交付期限很長及生存期較長的項目,最適合于解決模塊化程度比較低的問題,因為需要通信;

通俗來說:沒有負(fù)責(zé)人,只有水平通信,成員之間需要廣泛的兩兩交流。

(2)CD(控制分散式):有一個固定的負(fù)責(zé)人,若有子負(fù)責(zé)人,<u>子負(fù)責(zé)人和總負(fù)責(zé)人的通信</u>是垂直的,而<u>個人間的通信</u>是水平的,適合交付期限較長、比較簡單的項目;

通俗來說:有固定負(fù)責(zé)人,成員之間需要交流,成員與負(fù)責(zé)人之間也需要交流;若有子負(fù)責(zé)人,成員跟子負(fù)責(zé)交流,子負(fù)責(zé)人跟總負(fù)責(zé)交流。

(3)CC(控制集中式):<u>負(fù)責(zé)人和小組成員之間的通信</u>是垂直的,適合解決交付期限比較嚴(yán)格的、簡單的、模塊化程度高的項目

通俗來說:有固定負(fù)責(zé)人,成員之間不溝通,只跟上級溝通。

:CD和CC兩種結(jié)構(gòu)都需要有一個固定的負(fù)責(zé)人,而DD不用;且會比DD產(chǎn)生更少的缺陷。

3、項目小組人員間的通信路徑

項目小組人員間的通信路徑

從上圖中可以看出,項目小組人數(shù)越多,通信路徑越多。
通信路徑計算公式為
C_n^2=\frac{n(n-1)}{2} ,n表示水平通信成員間的人數(shù)

4、小組結(jié)構(gòu)的選擇需考慮的因素

對于一個小組來說,選擇一個合適的結(jié)構(gòu)需考慮以下因素:

  • 待解決軟件項目的困難程度;
  • 產(chǎn)生的程序規(guī)模,以代碼行或者功能點(diǎn)來衡量;
  • 小組成員需要共同工作的時間(小組生存期);
  • 項目所需要的通信的程度
  • 問題能夠被模塊化的程度;
  • 待建造系統(tǒng)所要求的質(zhì)量和可靠性
  • 交付日期的嚴(yán)格程度

5、思考題

Q1:某公司有21名員工,請問分別按DD、CD、CC方式來進(jìn)行組織結(jié)構(gòu)的劃分,各自會產(chǎn)生多少條的通信路徑?假設(shè)在CD和CC方式下被分成四組,畫出大概的組織結(jié)構(gòu)圖。

A1

思考題解答

五、軟件范圍及問題分解(product)

1、預(yù)告

在開始進(jìn)行一個項目之前,應(yīng)該了解些什么呢?

1在進(jìn)行項目計劃之前,軟件開發(fā)者和客戶必須一起定義產(chǎn)品的目的和范圍,考慮可選的解決方案,標(biāo)識技術(shù)和管理的約束;

2)沒有這些信息,就不可能進(jìn)行合理的(準(zhǔn)確的)成本估算、有效的風(fēng)險評估、適當(dāng)?shù)?strong>項目任務(wù)劃分或是可管理的項目進(jìn)度安排;

3)軟件范圍是軟件項目管理的第一個活動。

通過下面一張圖來加深對軟件范圍的理解。

軟件范圍

圓圈里的內(nèi)容即軟件范圍,確定該項目要做什么;那么不在圈子里面的,就先拋開,也就是說,不該做的內(nèi)容先不要做。

2、軟件范圍的確定(劃定問題的邊界)

1)語境;

2)信息目標(biāo);

3)功能和性能

3、問題分解(確定各部分的功能)

1)分而治之;

2)估算開始之前,范圍中所描述的軟件功能必須被評估和細(xì)化,以提供更多的細(xì)節(jié)。因為成本和進(jìn)度的估算都是面向功能的,所以某種程度的分解通常是很有用的。

六、過程(process)

1、一般性階段

1)軟件過程的一般性階段(定義、開發(fā)和支持)適用于所有軟件項目;

2)問題在于選擇一個適合項目組所要開發(fā)軟件的過程模型。

回顧下上一篇文章提到過的過程模型:

  • 線性順序模型(瀑布模型)
  • V模型
  • 原型實現(xiàn)模型
  • RAD模型
  • 增量模型
  • 螺旋模型
  • 形式化方法模型

2、選擇過程模型階段

項目管理者必須決定哪一個過程模型最適合用在此項目,因此在選擇過程模型時需考慮以下因素:

1)需要該產(chǎn)品的客戶和將做此工作的人員;

2)產(chǎn)品本身的特征;

3)軟件項目組工作的項目環(huán)境。

3、已確定過程模型階段

1)當(dāng)一個過程模型被選定時,項目組基于通用過程框架活動集合,定義一個初步的計劃;

2)一旦建立了初步的計劃,便可以開始進(jìn)行過程分解,即必須建立一個完整的計劃以反映框架活動中所需要的工作任務(wù)

3)工作任務(wù)必須針對項目的特定需要進(jìn)行適應(yīng)性修改;且框架活動總是一樣的,但工作任務(wù)則要根據(jù)一系列的適應(yīng)性標(biāo)準(zhǔn)來選擇。

七、產(chǎn)品和過程的二元性(product and process)

產(chǎn)品和過程的二元性

從上圖中可以看出,橫向坐標(biāo)表示過程,縱向坐標(biāo)表示產(chǎn)品,也就是說,每一個產(chǎn)品都有它對應(yīng)的一系列過程。所以,在一個項目中,產(chǎn)品和過程都一樣重要,缺了誰都不行,這也就體現(xiàn)了產(chǎn)品和過程的二元性。

八、項目的5W2H原則(project)

項目的5W2H原則包含以下幾點(diǎn):

  • WHY —— 為什么(Why)該系統(tǒng)被開發(fā)?(業(yè)務(wù)目的
  • WHAT —— 將做什么(What)?(項目任務(wù)
  • WHEN —— 什么時候(When)做?(里程碑
  • WHO —— 某功能由誰(Who)負(fù)責(zé)?(角色和責(zé)任
  • WHERE —— 他們的機(jī)構(gòu)組織位于何處(Where)?(角色責(zé)任界定
  • HOW —— 工作將如何(How)被技術(shù)和管理地進(jìn)行?(管理和技術(shù)策略
  • HOW MUCH —— 每種資源需要多少(How much)?(資源分配

九、寫在最后——think more

看完上面文章內(nèi)容后,不妨試問下自己以下問題:

分析如下具體項目情況,選擇合適的團(tuán)隊結(jié)構(gòu)(CC、CD、DD)及軟件過程模型,并分析原因。

Q1:在一個信息系統(tǒng)組織中,你被指派為項目經(jīng)理。你的工作是開發(fā)一個應(yīng)用程序,該程序類似于你的團(tuán)隊以前已經(jīng)做過的某個項目,只是規(guī)模更大而且更復(fù)雜一些。需求已經(jīng)由用戶寫成文檔。

Q2:你被指派為一個小型軟件產(chǎn)品公司的項目經(jīng)理。你的工作是開發(fā)一個有突破性的產(chǎn)品,該產(chǎn)品結(jié)合了虛擬現(xiàn)實的硬件和高超的軟件。因為家庭娛樂市場的競爭非常激烈,完成這項工作的壓力很大。

Q3:你被指派為一個大型軟件產(chǎn)品公司的項目經(jīng)理。你的工作是管理該公司已被廣泛使用的字處理軟件的新版本的開發(fā)。因為必須獲得新的收益,已經(jīng)規(guī)定了緊迫的最后期限并對外公布。

Q4:在一個為遺傳工程領(lǐng)域服務(wù)的公司中,你被指派為項目經(jīng)理。你的工作是管理一個軟件新產(chǎn)品的開發(fā),該產(chǎn)品能夠加速基因分解的速度。這項工作是面向研究及開發(fā)的,但其目標(biāo)是在下一年度內(nèi)生產(chǎn)出產(chǎn)品。

評論區(qū)留下你的答案?(?????)?
如果這篇文章對你有幫助,記得留下star哦~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容