《軟件工程與開發(fā)技術(西電第二版)第15章軟件工程項目管理基礎》由會員分享,可在線閱讀,更多相關《軟件工程與開發(fā)技術(西電第二版)第15章軟件工程項目管理基礎(33頁珍藏版)》請在裝配圖網上搜索。
1、第15章 軟件工程項目管理基礎,15.1 項目管理的范圍 15.2 人員角色管理 15.3 問題管理 15.4 過程管理 15.5 小結,15.1 項目管理的范圍,有效的項目管理集中在三個P上,即人員(People)、問題(Problem)和過程(Process)。這三者的順序不能夠任意變更。軟件工程是人的智力密集型勞動,忽略了對人的管理,工程必然失??;如果在項目早期沒有和用戶進行有效的通信交流,沒有界定出清晰的需求,那么即使設計出不錯的解決方案,也往往針對的是錯誤的目標;如果對于過程環(huán)節(jié)疏于管理,即使采用了良好的技術方法和先進的工具,也會因過程的混亂失控而遭遇失敗。,人員的過程能力、技術水平
2、和協(xié)同工作能力是保證軟件項目成功的關鍵因素。培養(yǎng)有創(chuàng)造力的、技術水平高的軟件人員是從20世紀60年代起就開始討論的話題。近年來對于優(yōu)秀軟件人才的要求中又增加了針對個人軟件過程能力(PSP)方面的要素??紤]到人的因素非常重要,SEI還專門開發(fā)了一個人員管理能力成熟度模型PM-CMM。專門用以指導軟件開發(fā)組織改進人力資源管理工作。人員管理能力成熟度模型PM-CMM共分為五個成熟度等級。它為軟件人員管理定義了如下的關鍵過程域:招聘、選擇、績效管理、培訓、報酬、專業(yè)發(fā)展、組織和工作計劃以及團隊精神/企業(yè)文化培養(yǎng)。在PM-CMM方面的成熟度等級越高的組織,更有可能增強開發(fā)團隊的能力,實現(xiàn)有效的軟件工程開
3、發(fā)。,問題管理主要解決“軟件定義”和任務分解方面的問題,明晰針對什么對象、進行什么處理、達到什么目標、分配給什么角色去完成。任何一個軟件工程項目都應當首先界定項目的目標和范圍。這一活動是作為系統(tǒng)工程活動的一部分開始的,持續(xù)到軟件需求分析階段。這一活動的目的是說明該項目的總體目標,但并不涉及到如何實現(xiàn);范圍說明給出與問題相關的主要數(shù)據(jù)、功能和行為,并且以量化的形式約束這些特性。目標和范圍確定之后,要開始考慮軟件的解決方案,并據(jù)此確定項目的約束條件。,軟件過程提供了一個活動框架的集合,這些框架適合于任何一個軟件項目。根據(jù)該框架可以建立一個綜合的開發(fā)計劃。通過定義框架中不同的具體任務,能夠使描述通用
4、過程的框架“個性化”,從而適合于不同軟件項目的特征和項目組的需求。每一個框架(任務集合)都由任務、里程碑、交付的工作產品和質量控制點組成。對軟件過程進行管理,使之按照嚴格的規(guī)則有效地進行裁剪,以適應具體的工程特征;對實際進程進行度量都屬于過程管理的任務。,,15.2 人員角色管理,15.2.1 項目參與者 (1) 高級管理者:負責確定商業(yè)問題,這些問題往往對項目會產生很大影響。所有涉及外部組織和個人的承諾只能由高級管理者驗證確定。 (2) 項目(技術)管理者:對項目的進展負責。包括制定項目計劃;組織、控制并激勵軟件開發(fā)人員展開工作;負責和用戶代表交流,獲取項目的需求與約束條件;和用戶代表協(xié)
5、商,進行變更控制;協(xié)調內部軟件相關組的工作;安排必要的培訓。,(3) 開發(fā)人員:負責開發(fā)一個產品或者應用軟件所需的各類專門技術人員。根據(jù)工作性質的不同,又可以劃分成不同的角色,比如系統(tǒng)分析員、系統(tǒng)設計師、程序員、測試工程師等等。按照項目開發(fā)計劃所賦予的任務和角色的崗位職責開展工作。 (4) 客戶代表:負責說明待開發(fā)軟件需求的人員。同時和項目管理者協(xié)作控制項目開發(fā)過程中的各類變更。,(5) 最終用戶:一旦軟件發(fā)布成為產品,最終用戶是直接與軟件進行交互的人,在使用過程中還會提供必要的反饋信息。在驗收測試階段,最終用戶起著非常重要的作用。 每一個軟件項目都應當有上述人員參加,為了提高人員工作效率
6、,項目負責人必須最大限度地發(fā)揮每個人的技術和能力。為了能夠更好地發(fā)揮各類專業(yè)人員的作用,軟件開發(fā)組織應當根據(jù)實際情況建立本組織的崗位責任制度。劃定崗位,明確職責,力爭做到人定其崗、崗定其責。同時開發(fā)組織、項目組還應當保證每種角色在承擔自己的任務時都接受過必要的、足夠的培訓,保證具有履行相應崗位職責的能力。,15.2.2 項目負責人 項目負責人是項目管理工作的策劃者和主要執(zhí)行者之一。遴選項目負責人時必須注意,管理人員的管理技能水平是首要的條件。一個優(yōu)秀的軟件工程師并不見得就能夠很好地承擔項目負責人的角色。 項目管理的核心是人員的管理,一個優(yōu)秀的項目管理人必須善于利用激勵機制鼓勵技術人員發(fā)揮其
7、最大能力;必須具有組織能力,能夠駕馭或者創(chuàng)新過程,使得最初的概念能夠逐漸轉化成最終的產品;他也應當鼓勵人們在工作中發(fā)揮創(chuàng)造性。,項目負責人還應當集中注意力理解待解決的問題;管理新想法、新思路的交流;通過語言和行為在整個項目組中貫徹質量至上的意識。一個有效的軟件項目負責人應當能夠準確地診斷出技術的和管理的問題,把以往的成功經驗應用到新環(huán)境下;策劃系統(tǒng)的解決方案并激勵開發(fā)人員實現(xiàn)方案。如果最初的方案遭遇挫折,項目負責人應當靈活地改進方案。,項目負責人必須掌管整個項目,在必要時對項目進程進行調控,必須保證優(yōu)秀的技術人員能夠最充分地發(fā)揮技術特長,獎勵有主動性和做出成績的人員,并鼓勵在項目約束范圍內進行
8、創(chuàng)新。項目負責人應當具有較強的語言交流能力,以期充分理解下屬的意見并與之交流。 良好的心態(tài)對于一個優(yōu)秀的項目負責人來說是不可或缺的。當項目出現(xiàn)困難時,項目負責人必須能夠承受較大的壓力,保持對項目的控制能力。,項目管理者的目標都是盡力建立并維持一個具有“凝聚力”的小組。一個具有凝聚力的小組是一組團結緊密的人,他們的整體力量大于個體力量的總和。具有凝聚力的小組成員比起一般的小組來說具有更高的生產率和更大的動力。軟件企業(yè)的人員流動率遠高于傳統(tǒng)企業(yè),管理者更應當認真做好人員管理工作,提高小組的凝聚力、穩(wěn)定開發(fā)隊伍。,15.2.3 軟件項目組的組織結構 軟件項目組的組織結構取決于整個軟件開發(fā)組織的管
9、理風格、問題的難易程度和人員的數(shù)量及技術水平。策劃常見的小組組織形式包括: (1) 民主分權式(DD,Democratic Decentralized)。這種軟件工程小組沒有固定的負責人,任務協(xié)調者是短期指定的,之后就由協(xié)調不同任務的人取代。通過小組討論來完成問題定義和解決方案制定,小組成員之間的通信是平行的。DD小組結構最適于解決模塊化程度比較低的問題。它適合于生命周期較長的小組。能夠產生較高的士氣和工作滿意度。,(2) 受控分權式 (CD,Controlled Decentralized)。這種軟件工程小組有一個固定的負責人,他負責協(xié)調特定的任務并負責和負責子任務的二級負責人交流。問題的
10、解決過程仍然是一個群體活動,但是解決方案的實現(xiàn)是由小組負責人在二級組之間進行劃分的。子小組和個人之間的通信是平行的,也存在著上下級的通信。CD結構模式適用于項目有較高的模塊化特性時。當質量保證活動比較有效時,CD模式能夠產生比DD模式更少的缺陷。,(3) 受控集權式(CC,Controlled Centralized)。適用于較大項目。頂層問題的解決和內部小組協(xié)調是小組負責人管理的。負責人和小組成員之間的通信是上下級形式的。CC結構模式適用于項目有較高的模塊化特性的情況。當質量保證活動比較有效時,CC模式能夠產生比DD模式更少的缺陷。歷史上風行一時的“主程序員組”就屬于CC模式。 選擇項目小
11、組結構方式時,應當充分考慮到項目各方面的具體特征,盡量選擇適合的結構形式。集中式的結構能夠更快地完成任務,最適合處理簡單問題;分散使得小組更能夠產生出更多的解決方案,所以這種結構在處理復雜問題時成功的幾率更大;小組的性能和通信量成反比,所以較大的項目最好采用CC或CD結構。表12.1描述了項目特性對選擇項目小組結構的影響。,表15.1 項目特征與適宜的小組結構,除上述的劃分方法之外,還有人將軟件工程小組劃分為四種“范型”。 (1) 封閉式范型:按照傳統(tǒng)的權利層次來組織小組,類似于CC小組。這種小組不利于創(chuàng)新,但在開發(fā)和原先的產品類似的軟件時十分有效。 (2) 隨機式范型:依賴小組成員個人的
12、主動性。適于進行創(chuàng)新或技術上的突破,但當需要“有次序的執(zhí)行任務”才能完成工作時,常常陷入困境。,(3) 開放式范型:試圖結合前兩種范型的優(yōu)勢。工作的執(zhí)行結合了大量的通信和基于小組一致意見的決策。適于解決復雜問題,但效率不是很高。 (4) 同步式范型:依賴于問題的自然劃分,小組成員各自解決問題的片斷,彼此之間很少有主動的通信需要。 從歷史上看,最早的軟件開發(fā)小組是IBM首先提出的“主程序員組”。這種組織就本質來看,類同與CC結構的小組。,15.2.4 小組內的協(xié)調和通信 協(xié)調一致的工作是小組成功的保證,便捷靈活的通信是進行協(xié)調的技術手段。 許多現(xiàn)代軟件的規(guī)模宏大,小組成員之間的關系比較復
13、雜。一部分成員以另一部分成員的工作輸出為自己的工作輸入。彼此之間進行產品交接、技術討論、產品互查都是日常必須進行的工作。此外,在項目的進展過程中,不確定性經常出現(xiàn),給項目組帶來困擾和一系列的變更。在多人協(xié)作開發(fā)的軟件成分之間,不可避免地存在著相互操作的要求,這更需要在開發(fā)者之間進行交流。,為了保證小組成員之間開展成功的協(xié)同工作,項目組必須建立良好的協(xié)調和通信機制。例如工作產品的交換,同事之間針對個人工作的相互審查,變更的請求,實施與通報,里程碑處的正式復審等等都需要有效的通信機制來保障。在組內的通信與協(xié)調,可以借助電子郵件、項目簡報、周工作會議、同行審查和里程碑報告等方式進行。具體可以歸為如下
14、幾類: (1) 正式的、非個人的交流方法:包括使用組織的歷史數(shù)據(jù)庫、項目配置庫、工程文檔、階段產品、備忘錄、錯誤跟蹤報告等方式進行的通信與交流。,(2) 正式的、個人間的通信交流,如狀態(tài)復審會議、產品互查等等。 (3) 非正式的、個人間的交流,例如個人間針對特定問題的討論等。 (4) 電子通信:包括電子郵件、網絡會議等通信方式。 對于由N個成員組成的小組來說,通信的路徑有N(N1)條。隨著N值的增加,通信與協(xié)調工作的復雜性急劇增加。所以,軟件工程的基本原則中,要求建立“少而精”的開發(fā)小組。同樣,因為通信協(xié)調工作的復雜性,在項目開發(fā)的后期靠增加開發(fā)人員來趕進度并不是明智之舉。,圖15.1
15、 協(xié)調和通信技術的價值及使用,,15.3 問 題 管 理,所謂問題,包括需求問題和工程過程問題兩重含義。 問題管理要解決兩個問題:問題界定與問題的分解劃分。和用戶的深入交流是本項工作得以完成的保障。也可以認為問題管理的實質就是初始需求管理,包括獲取需求和精化需求兩項內容。 問題界定要明確就當前認識層次而言,確定的軟件范圍是什么。據(jù)此可以制定初步的開發(fā)計劃;問題的分解進一步評估和精化軟件功能,為量化估算提供基礎。軟件范圍的確定可以從三個層面上來描述。,(1) 工程背景與約束條件(環(huán)境需求):待建造的軟件如何適應特定的客戶背景,包括未來的運行環(huán)境、軟硬件平臺和其他系統(tǒng)的接口以及可能提出的擴充性
16、需求。 (2) 信息目標(數(shù)據(jù)I/O需求):需要什么樣的輸入流,輸出什么樣的用戶可見的數(shù)據(jù),輸出具有什么樣的表現(xiàn)形式。,(3) 功能和性能(綜合需求):為將輸入數(shù)據(jù)轉換成輸出數(shù)據(jù),軟件需要什么樣的加工功能;對于處理精度、處理速度、數(shù)據(jù)容量、通信速率、容錯性、可靠性等各類性能有什么要求。 問題分解又稱為劃分,是軟件需求分析的核心活動。在軟件范圍界定時雖然也對需求進行了初始劃分,但粒度較粗,不利于進行精確的分析與估算。在此基礎上,還需要進一步的劃分。首先需要對功能進行細分。從整體功能到子系統(tǒng),從子系統(tǒng)到功能模塊。如此逐層細分,為估算項目規(guī)模、開發(fā)工作量、工作進度和資源需求提供了基礎。,其次,要
17、對生產待交付產品的工作過程進行細分。按照選定的工程模型,將整個過程中所包含的一般性、保護性活動劃分為若干階段,確定每個階段的任務,明確階段工作產品,確定工作里程碑。這樣不但有利于制定較詳細的工作計劃,也有利于將整體綜合計劃細分為階段計劃和單項計劃,增加計劃的可操作性。,,15.4 過 程 管 理,項目過程定義、制訂過程計劃、實施過程跟蹤監(jiān)控是過程管理環(huán)節(jié)的中心工作。軟件過程一般可以粗略地定義為系統(tǒng)定義、軟件開發(fā)、軟件維護三大階段,這種劃分適用于任何軟件項目。但是,采用不同的軟件工程過程模型,各類一般性和保護性框架中包括的具體活動及其執(zhí)行順序是有差別的??晒┪覀冞x擇的軟件工程過程模型包括線性順序
18、模型、RAD模型、原型模型、演化增量模型、演化螺旋模型等等。項目管理者應當根據(jù)項目的特點和用戶的要求,選擇最適合本項目的工程過程模型?;谔囟P偷墓策^程框架活動集合定義一個初步的項目計劃。然后通過對過程的細化分解,從初步計劃出發(fā)建立一個完整的計劃,明確框架活動中所需要的工作任務。,項目計劃開始于“問題”和“過程”的合并。軟件項目組所要開發(fā)的每一個功能(問題)都必須選擇過程規(guī)定的框架活動集合來完成。假如組織采用了如下的框架活動集合: 用戶通信:建立開發(fā)者和用戶之間有效通信的任務。 計劃:定義資源、進度及其他項目相關信息所需要的任務。 風險分析:評估技術風險、管理風險的任務。 工程:建
19、立應用的“表示”(文檔、源碼、可執(zhí)行代碼等)的任務。 建造及發(fā)布:建造、安裝、調試、培訓用戶等任務。 用戶評估:獲取用戶反饋信息所需要的任務。,那么,承擔每一項具體工作任務(如需求分析、體系設計、測試等等)的成員,都必須將規(guī)定的每一項活動應用于本項任務的開發(fā)上。這樣,整個工作就得以按照“規(guī)范化的統(tǒng)一的過程”進行,在要解決的具體問題和統(tǒng)一的過程活動上進行了統(tǒng)一。,考慮到項目各有特點,項目組在選擇過程模型時應當有較大的靈活度,并應當按照項目的特點和組織的現(xiàn)實情況對過程規(guī)定的活動進行裁剪。如果開發(fā)一個和原來開發(fā)過的項目類似的小項目,可以考慮采用線性順序模型;如果時間很緊而問題又便于分解,則可首選
20、RAD模型;如果時間太緊,可以考慮使用增量模型。一旦選定了模型,公共過程框架(CPF,Common Process Franework)應當能夠適用于它。CPF是不變的,它能夠充當一個開發(fā)組織所執(zhí)行的所有軟件工作的基礎。但是,執(zhí)行一個框架活動時,具體工作任務卻是可簡可繁的。這種特點在將過程活動分解成具體工作任務時應當注意。,,15.5 小 結,軟件項目管理是軟件工程中的保護性活動。它先于任何技術活動之前開始,貫穿于軟件工程始終。具有無可替代的重要作用。實現(xiàn)軟件工程目標、控制開發(fā)成本、改進組織的過程能力都有賴于項目管理活動。,簡單地說,項目管理活動覆蓋項目估算、風險預測、進度安排、計劃制定、品質
21、保證、配置管理和針對整個項目進程的跟蹤、度量活動。項目管理的重點是人員、問題和過程。實施項目管理的基本目標是保證人員高效、問題明晰、過程可控。三個P(人員、問題和過程)對項目管理具有本質的影響 。人員必須得到必要的培訓并被組織為有效率的小組,激勵他們進行高質量的軟件工作,并協(xié)調他們能夠進行高效率的通信;問題必須由開發(fā)者和用戶交流,界定目標、范圍、約束條件、分解為合適的粒度,并分配給軟件小組;過程必須適合于人員和問題。必須根據(jù)開發(fā)組織的標準過程結合項目組的特點裁剪形成項目的開發(fā)過程。也就是要選用一個公共過程框架、選定一個適合于具體情況的工程過程模型、并選擇適當?shù)墓ぷ魅蝿占蟻硗瓿身椖康拈_發(fā)。,在任何一個項目中,最關鍵的因素是人員。項目管理者應當根據(jù)項目的特征和自己的人力資源選擇采用不同的組織結構,并以階段評審和成員互審等方法為主,實現(xiàn)小組成員之間的有效交流和通信。,,