第16章軟件項目管理與過程改進課件_第1頁
第16章軟件項目管理與過程改進課件_第2頁
第16章軟件項目管理與過程改進課件_第3頁
第16章軟件項目管理與過程改進課件_第4頁
第16章軟件項目管理與過程改進課件_第5頁
已閱讀5頁,還剩310頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第十六章

軟件項目管理與過程改進軟件工程(第三版)

齊治昌譚慶平寧洪2012年8月第十六章

軟件項目管理與過程改進軟件工程(第十六章

軟件項目管理與過程改進16.1軟件項目管理與過程模型16.2軟件項目度量與估算16.3風險分析16.4軟件項目計劃16.5軟件項目人員和組織16.6軟件質量保證16.7軟件配置管理16.8軟件過程改進2023/7/31國防科技大學計算機學院2第十六章

軟件項目管理與過程改進16.1軟件項目管軟件項目管理與過程改進軟件管理是軟件工程學科的重要組成部分,在軟件生存周期中發(fā)揮著重要的作用。軟件開發(fā)過程中的軟件管理稱軟件項目管理,直接關系到軟件項目的成敗。軟件配置管理貫穿整個軟件生存周期,在軟件開發(fā)過程中是軟件項目管理的重要組成部分,在軟件交付后是軟件有效運行和維護的保障。軟件開發(fā)組織建設和過程改進是不斷推出高質量軟件制品的關鍵。本章主要介紹軟件項目管理、軟件配置管理、軟件過程改進。軟件項目管理與過程改進軟件管理是軟件工程學科的重要組成部分,16.1軟件項目管理與過程模型本節(jié)主要介紹軟件項目管理的概念軟件項目管理的過程模型軟件項目管理的原則軟件項目制品16.1軟件項目管理與過程模型本節(jié)主要介紹16.1.1軟件項目管理的概念軟件項目管理是軟件工程的重要組成部分。軟件項目已通過軟件項目的可行性論證和立項的法定程序。軟件項目可能是基于計算機的系統(tǒng)工程的一部分,也可能是獨立的實體。按照合同要求,軟件項目應具有明確的目標、任務、責任人、技術途徑、資金投入、交付時間、客戶實體、利益相關方。在面向領域的應用軟件開發(fā)項目中,領域專家和客戶愿意和軟件開發(fā)團隊密切合作,這是項目成功的關鍵。2023/7/31國防科技大學計算機學院516.1.1軟件項目管理的概念軟件項目管理是軟件工程的重要組軟件項目管理的概念軟件工程是人的智力密集型勞動,軟件是邏輯制品,軟件項目管理更要強調工作的計劃性,人員、進度、制品的可控性,要及時進行軟件項目的風險分析和管理。客戶與開發(fā)者必須在項目開發(fā)早期、軟件需求工程的初始階段完成下列六項任務。2023/7/31國防科技大學計算機學院6軟件項目管理的概念軟件工程是人的智力密集型勞動,軟件是邏輯制軟件項目管理的概念①確定制品目標、范圍,主要技術指標、功能

和行為特性;②確定管理者和開發(fā)人員;③進行成本估算;④進行有效的風險分析、驗證與確認;⑤給出恰當?shù)捻椖咳蝿談澐?;⑥根?jù)約束條件,如制品交付期限、預算、可

用人員、技術接口等因素,選擇“最佳”方

案,制定可管理的項目進度計劃,給出明確

的項目進展標志,并將任務、責任落實到人。2023/7/31國防科技大學計算機學院7軟件項目管理的概念①確定制品目標、范圍,主要技術指標、功能軟件項目管理的概念1999年,軟件產業(yè)界的統(tǒng)計數(shù)據(jù)表明,26%的軟件項目徹底失敗,46%的項目成本和進度超出預定計劃。軟件項目失敗率仍然很高。實踐表明,良好的軟件開發(fā)過程孕育著好的軟件制品,而好的軟件制品一般隱含良好的軟件開發(fā)過程。本節(jié)的其余部分介紹軟件項目管理原則、軟件項目的管理模型、生存周期各階段的軟件制品。軟件項目管理的概念1999年,軟件產業(yè)界的統(tǒng)計數(shù)據(jù)表明,2616.1.2軟件項目管理的過程模型第一章討論了軟件生存周期和軟件開發(fā)的幾種模型。生存周期及其劃分涉及軟件開發(fā)過程和過程生成的制品。軟件開發(fā)過程分為線性過程和非線性過程兩類。瀑布模型是典型的線性過程模型。增量模型、螺旋模型雖是迭代模型,但本質上是瀑布模型的應用。統(tǒng)一過程RUP是迭代的非線性模型,與瀑布模型存在本質的區(qū)別。這些模型既用于軟件開發(fā)的技術過程,也用于軟件開發(fā)的管理過程。16.1.2軟件項目管理的過程模型第一章討論了軟件生存周期軟件項目管理的過程模型軟件開發(fā)的技術人員和管理人員在軟件開發(fā)過程中分工明確,他們在模型中參與相應的活動,開發(fā)相應的制品。軟件過程的活動序列按任務分類,組成軟件開發(fā)人員開發(fā)軟件制品的“工作流”?!肮ぷ髁鳌睆娬{“人的活動”,目標是開發(fā)軟件制品,其中蘊含開發(fā)人員使用的技術、工具和必須遵循的約束條件。第二章介紹了RUP的九個工作流,及在軟件生存周期各階段的工作量分布。2023/7/31國防科技大學計算機學院10軟件項目管理的過程模型軟件開發(fā)的技術人員和管理人員在軟件開發(fā)軟件項目管理的過程模型啟動每個工作流都要完成某項任務,產生某些制品,都要使用一定的資源,必須滿足一定的約束條件。如,需求工作流將系統(tǒng)工程師或用戶以某種方式提供的系統(tǒng)功能和特征作為前置條件,通過需求獲取、分析、建模活動生成用軟件建模語言(如,UML)描述的軟件需求規(guī)約。需求階段的約束是需求文檔的標準、表示法、需求預算、進度等。2023/7/31國防科技大學計算機學院11軟件項目管理的過程模型啟動每個工作流都要完成某項任務,產生某軟件項目管理的過程模型軟件團隊選擇軟件過程模型時,有很大的靈活性,應根據(jù)項目需要確定過程模型。如果問題能很好地劃分,時間緊,不可能完成所有功能,可采用增量模型,分期交付。如果項目需求不能完全確定、需求變更頻繁可采用RUP迭代過程模型等。2023/7/31國防科技大學計算機學院12軟件項目管理的過程模型軟件團隊選擇軟件過程模型時,有很大的靈16.1.3軟件項目管理的原則W.Royce總結了現(xiàn)代軟件項目管理應該遵循的十條重要原則。⑴體系結構優(yōu)先的過程軟件體系結構是軟件需求、軟件設計活動的關鍵制品。軟件體系結構過程涉及軟件項目全局,包括:軟件項目計劃、需求獲取、描述、風險分析、軟件體系結構設計等。軟件體系結構過程與軟件實現(xiàn)、交付、維護相比,涉及的人較少,工作量較小。16.1.3軟件項目管理的原則W.Royce總結了現(xiàn)代軟軟件項目管理的原則穩(wěn)定、優(yōu)質的體系結構是軟件實現(xiàn)和交付的基礎,可以避免軟件上游缺陷蔓延到下游,減少軟件制品返工和報廢,避免時間和資源的浪費。軟件體系結構基線是軟件初始、軟件細化階段成熟的標志。體系結構優(yōu)先的過程體現(xiàn)了軟件體系結構在現(xiàn)代軟件開發(fā)過程中的重要地位。2023/7/31國防科技大學計算機學院14軟件項目管理的原則穩(wěn)定、優(yōu)質的體系結構是軟件實現(xiàn)和交付的基礎軟件項目管理的原則⑵風險驅動的迭代過程軟件開發(fā)存在許多不確定因素,存在許多風險。適時進行風險分析,提出化解風險的措施,驅動迭代過程,是保證軟件開發(fā)過程按計劃前行,軟件制品隨軟件開發(fā)的迭代過程不斷進化的有效途徑。⑶基于構件的設計基于構件的軟件設計可以降低軟件復雜性,有效實施軟件復用,提高軟件質量,降低軟件開發(fā)成本,縮短交付期限,提高軟件項目計劃和成本估算的準確性。2023/7/31國防科技大學計算機學院15軟件項目管理的原則⑵風險驅動的迭代過程2023/7/31國軟件項目管理的原則⑷建立配置和變更管理環(huán)境軟件開發(fā)過程中變更不可避免,需求不能完全確定的項目只能在探索中前進。軟件開發(fā)文檔、中間制品很多,某一文檔的變更通常會涉及相關文檔,必須對這些文檔進行相應的維護,保持軟件制品的一致性。采用迭代、增量開發(fā)模型,面對不同的用戶需求,項目團隊將持續(xù)發(fā)布多種版本的軟件制品。復雜多變的軟件項目和制品,需要變更管理工具、配置數(shù)據(jù)庫和配置管理系統(tǒng)的支持,人工不能完成這一任務。軟件項目管理的原則⑷建立配置和變更管理環(huán)境軟件項目管理的原則⑸建立支持雙向工程的工具和環(huán)境為了保持變更的一致性,軟件工具和環(huán)境要支持正向工程和逆向工程。詳細設計、代碼的修改確定后,利用逆向工程工具和環(huán)境自動生成軟件開發(fā)上游的體系結構和需求文檔。正向和逆向工程的工具和環(huán)境相互配合,為可變更的迭代開發(fā)過程提供了靈活性,提高了軟件開發(fā)的效率和軟件制品的質量。2023/7/31國防科技大學計算機學院17軟件項目管理的原則⑸建立支持雙向工程的工具和環(huán)境2023/軟件項目管理的原則⑹用嚴格的、基于模型的符號描述設計制品程序設計語言是描述程序的工具,用于人與人、人與機器的交流,控制計算機的運行。程序設計語言是用一組符號按照嚴格的語法、語義、語用定義的。目前廣泛使用統(tǒng)一建模語言UML,支持軟件需求、設計和實現(xiàn)的全過程(實現(xiàn)過程需要Java、C++等程序設計語言的支持)。UML標準提供用例圖、結構圖(類圖、對象圖、包圖)、行為圖(交互圖、狀態(tài)圖、順序圖、通信圖)、構件圖、部署圖五類共十種圖形建模表示法和OCL約束語言。軟件項目管理的原則⑹用嚴格的、基于模型的符號描述設計制品軟件項目管理的原則⑺為客觀的質量控制插裝驗證和確認過程客觀的軟件質量強調軟件制品的實際質量。在初始和細化階段,只能通過檢查、審查方式評估軟件制品,軟件的質量評估往往帶有主觀色彩。在軟件開發(fā)過程中,設置關鍵點插裝評估過程,對軟件制品和過程進行嚴格檢查和V&V可防止缺陷蔓延、減少制品報廢和返工,提高軟件制品質量。2023/7/31國防科技大學計算機學院19軟件項目管理的原則⑺為客觀的質量控制插裝驗證和確認過程20軟件項目管理的原則⑻借助演示評估中間制品現(xiàn)代軟件開發(fā)過程借助場景、用例描述需求。場景、用例具有直觀、便捷、容易理解的優(yōu)點。軟件開發(fā)過程中借助演示,驗證確認基于場景、用例的中間制品的演化過程,有利于團隊成員的溝通,及時統(tǒng)一軟件開發(fā)人員對軟件制品的認識,減少因理解過失導致的軟件制品缺陷,提高軟件制品的評審質量和軟件開發(fā)效率。2023/7/31國防科技大學計算機學院20軟件項目管理的原則⑻借助演示評估中間制品2023/7/31軟件項目管理的原則⑼大量使用場景。按照場景細化等級,在軟件生存周期的前期就開始持續(xù)的發(fā)布有用的軟件版本。保持需求、設計和計劃均衡進化。⑽爭取更多的投資回報。推廣項目團隊掌握的方法、技術、工具和經驗,建立靈活的配置過程,在經濟上爭取更多的回報。2023/7/31國防科技大學計算機學院21軟件項目管理的原則⑼大量使用場景。2023/7/31國防科軟件項目管理的原則現(xiàn)代軟件項目管理要素是,人員、環(huán)境、質量、規(guī)模和過程。上述十項原則符合軟件經濟學基本規(guī)律:成本=(人員)×(環(huán)境)×(質量)×(規(guī)模)(過程)

人員:用演示方式進行溝通、不斷發(fā)布用例進化細節(jié),提高人員對項目、軟件制品的理解和認識,避免誤解和無效勞動。環(huán)境:建立軟件雙向工程的工具和環(huán)境,采用過程插裝,進行客觀的質量度量和控制,提高軟件開發(fā)質量和效率。軟件項目管理的原則現(xiàn)代軟件項目管理要素是,人員、環(huán)境、質量、軟件項目管理的原則質量:貫徹體系結構優(yōu)先的原則,統(tǒng)一開發(fā)過程和語言,實施變更管理,加強環(huán)境基礎建設,重視對項目和軟件制品的V&V,提高軟件制品的質量。規(guī)模:采用構件開發(fā),統(tǒng)一開發(fā)過程的語言描述,利用多種途徑降低復雜性,化解規(guī)模帶來的壓力。過程:采用迭代開發(fā)模型,實施可配置的過程改進,進行風險分析和管理,重視項目的過程復用,優(yōu)化軟件開發(fā)過程。成本和規(guī)模、過程的指數(shù)關系表明,減少規(guī)模,改進過程對降低成本的特殊重要性。人員、環(huán)境、質量、規(guī)模、過程的改進可減少大量文檔,降低軟件開發(fā)成本。軟件項目管理的原則質量:貫徹體系結構優(yōu)先的原則,統(tǒng)一開發(fā)過程軟件項目管理的原則按照上述原則進行軟件項目管理是現(xiàn)代軟件開發(fā)實踐經驗的總結,也是軟件項目取得成功的關鍵。軟件項目團隊應根據(jù)自身的實際,在軟件項目開發(fā)過程中靈活運用,并不斷創(chuàng)造新的實踐經驗和原則。

軟件項目管理的原則按照上述原則進行軟件項目管理是現(xiàn)代軟件開發(fā)16.1.4軟件項目制品現(xiàn)代軟件項目的管理過程與開發(fā)過程配套,多采用迭代方式。軟件制品不是在生存周期的階段內按照線性方式開發(fā),而是采用迭代方式一起進化。進化過程中不僅要不斷豐富、細化系統(tǒng)描述,還要對約束、抽象層次和自由度進行折衷,盡量保持軟件制品細節(jié)的平衡。為了對軟件項目實施管理,軟件開發(fā)活動產生的制品通常劃分為若干制品集,支持軟件項目的開發(fā)活動。16.1.4軟件項目制品現(xiàn)代軟件項目的管理過程與開發(fā)過程配軟件項目制品W.Royce將軟件項目制品劃分為:用文本語言描述的管理集用文本和模型描述問題空間的需求集用解空間模型描述的設計集用程序設計語言及相關文檔描述的實現(xiàn)集用機器語言及相關文檔描述的實施集2023/7/31國防科技大學計算機學院26軟件項目制品W.Royce將軟件項目制品劃分為:2023/7軟件項目制品近年來用RUP過程開發(fā)軟件項目已成為一種潮流。用強有力的、可視化的、具有嚴格語法和語義定義的統(tǒng)一建模語言UML支持體系結構優(yōu)先策略開發(fā)的需求制品集和設計制品集是軟件工程在技術上的重大進步。這些制品集是軟件工程數(shù)據(jù)庫的重要組成部分。下面從管理制品和工程制品兩個方面分別介紹五類制品集。2023/7/31國防科技大學計算機學院27軟件項目制品近年來用RUP過程開發(fā)軟件項目已成為一種潮流。21.管理制品集管理制品集即管理集,包括:①工作分解WBS和財務追蹤制品②成本、進度和利潤預測、度量和統(tǒng)計業(yè)務案例制品③描述軟件制品范圍、開發(fā)計劃和發(fā)布基線的發(fā)布版規(guī)約④軟件項目開發(fā)計劃⑤基于基線的發(fā)布版說明書⑥反映項目進展狀態(tài)的驗證和確認制品⑦軟件變更管理系統(tǒng)和軟件配置管理系統(tǒng)1.管理制品集管理制品集即管理集,包括:管理制品集⑧實施文檔,包括:移交計劃、用戶培訓課程、銷售展示工具包等⑨軟件開發(fā)環(huán)境,包括:軟件工具、文檔、人員培訓資料等管理集制品的形式有軟件、文本、圖形、圖像、視頻等項目相關人員應對管理集制品進行評審,按照里程碑進行展示評審管理集制品反映軟件項目成本、進度、質量、項目變更、軟件制品進化的情況2023/7/31國防科技大學計算機學院29管理制品集⑧實施文檔,包括:移交計劃、用戶培訓課程、銷售展示2.工程制品集工程制品集由需求集、設計集、實現(xiàn)集和實施集組成。制品集隨時間進化,必須保證需求、設計、實現(xiàn)和實施制品之間的系統(tǒng)性、正確性和一致性。2.工程制品集工程制品集由需求集、設計集、實現(xiàn)集和實施集組成需求集用結構化文本描述構想、合同、管理需求、用戶原型。用UML描述需求模型,如用例模型和領域業(yè)務模型。需求集是評審設計集、實現(xiàn)集和實施集的主要依據(jù),也是生成測試用例的基礎。需求集制品用于評審需求集與管理集規(guī)約的一致性分析構想和需求模型的一致性支持需求集、設計集、實現(xiàn)集和實施集制品描述的一致性和完整性,及版本變更等2023/7/31國防科技大學計算機學院31需求集用結構化文本描述構想、合同、管理需求、用戶原型。202設計集在不同的抽象層次上用UML描述設計模型,描述解空間的構件和屬性,描述靜態(tài)架構和動態(tài)活動等利用設計模型的結構和行為信息可以直接或自動轉換為實現(xiàn)集和實施集制品設計集制品

設計模型、測試模型、軟件體系結構描述設計集制品評審

設計模型的一致性和質量,設計模型與需求模型的一致性和完整性,向實現(xiàn)集和實施集遷移的可追蹤性,源代碼生成、編譯和鏈接問題,反映設計模型過程中出現(xiàn)的廢品、返工和缺陷排除趨勢的版本變更等目前設計集制品質量主要靠人工評審。2023/7/31國防科技大學計算機學院32設計集在不同的抽象層次上用UML描述設計模型,描述解空間的構實現(xiàn)集實現(xiàn)集制品

用程序設計語言描述的源代碼,編譯腳本、數(shù)據(jù)文檔,單機環(huán)境下的構件可執(zhí)行代碼,自文檔化的測試源代碼基線、測試用例的輸入和輸出文檔,及構件測試驅動程序的可執(zhí)行代碼,配置管理設施等。源代碼表示構件、構件接口、依賴關系及實現(xiàn)。最終制品

可執(zhí)行代碼、可復用構件、遺留構件、定制構件、商業(yè)構件及應用程序接口(API)、程序設計語言(如Java、C++、VisualBasic或匯編)API組成。實現(xiàn)集制品通過編譯或鏈接轉換為實施集的可執(zhí)行代碼。實現(xiàn)集評估

測試構件或可執(zhí)行文檔,測試源代碼與設計模型的一致性,分析實現(xiàn)集版本的一致性、完整性和變更趨勢等。

2023/7/31國防科技大學計算機學院33實現(xiàn)集實現(xiàn)集制品2023/7/31國防科技大學計算機學院33實施集實施集制品

可執(zhí)行的基線及運行時的文檔和用戶手冊。

交付給用戶的機器語言的可執(zhí)行軟件、構造文檔、安裝腳本,以及在目標環(huán)境中使用該制品所需要的數(shù)據(jù)。

在使用環(huán)境安裝和執(zhí)行實施集的源代碼,支持最終制品的運行并發(fā)揮全部設計功能和性能。實施集測試和度量

按需求測試使用場景和質量屬性,測試一致性、完整性;

測試將實現(xiàn)集構件映射到實施系統(tǒng)的合理性、正確性;

測試用戶手冊定義的使用場景;

測試安裝、面向用戶的配置、日常使用及異常管理;

分析實施集缺陷排除趨勢和性能變更等。2023/7/31國防科技大學計算機學院34實施集實施集制品2023/7/31國防科技大學計算機學院34表16.1軟件項目制品集需求集①構想文檔②需求模型設計集①設計模型②測試模型③體系結構描述實現(xiàn)集①源代碼基線②編譯文檔③可執(zhí)行構件實施集①可執(zhí)行的集成化的制品集②運行文檔③用戶手冊管理集:計劃制品管理集:可操作制品①工作分解結構WBS⑤發(fā)布版說明書②業(yè)務案例⑥V&V狀態(tài)③發(fā)布版規(guī)約⑦配置和變更管理數(shù)據(jù)庫④軟件開發(fā)計劃⑧實施文檔

⑨環(huán)境討論軟件項目生成的制品和制品集的目的是,進一步了解軟件開發(fā)過程、了解軟件開發(fā)制品及其描述。表16.1軟件項目制品集需求集設計集實現(xiàn)集實施集管理集:計劃軟件項目制品表16.2反映軟件制品在工作流的作用下經歷軟件生存周期各個階段的進化過程。軟件項目管理的進一步討論請參閱文獻[1][3][112][113[115][116][128][130]。軟件項目制品表16.2反映軟件制品在工作流的作用下經歷軟件生16.2軟件項目度量與估算軟件項目度量和估算是軟件開發(fā)組織量化管理的重要內容,也是軟件開發(fā)組織成熟度的標志。軟件開發(fā)過程中對軟件過程、項目和制品屬性進行測量獲得數(shù)據(jù),再經過度量計算、度量分析獲得重要的管理及技術指標。項目度量能夠支持軟件項目的計劃、軟件項目跟蹤及控制,能夠評估生成軟件制品的質量,及時改進項目的工作流程和技術方法。軟件開發(fā)組織的過程度量能夠使軟件開發(fā)組織從戰(zhàn)略高度了解、改進軟件過程,提升企業(yè)文化。項目度量和過程度量是軟件開發(fā)組織的基礎性工作,相互促進相互依存。16.2軟件項目度量與估算軟件項目度量和估算是軟件開發(fā)組軟件項目度量與估算軟件規(guī)模、可靠性、軟件項目工作量、開發(fā)時間和過程生產率是軟件和軟件項目度量的核心要素。上一章討論了軟件規(guī)模和可靠性度量,這一章討論軟件項目的度量與估算。大型復雜軟件項目的度量必須進行分解,采用自頂向下、自底向上、專家判斷、經驗公式等方法“分而治之”。對于規(guī)模較小的軟件項目可參照類似項目或選用適宜的估算模型直接估算。軟件開發(fā)工作量估算在軟件項目估算中尤其重要,直接用于項目進度計劃、成本估算和人員安排等。2023/7/31國防科技大學計算機學院38軟件項目度量與估算軟件規(guī)模、可靠性、軟件項目工作量、開發(fā)時間16.2.1軟件項目分解在軟件項目策劃的過程中,往往對軟件項目的工作制品和過程進行層次分解,分解為較小的易于管理和開發(fā)的子系統(tǒng)或模塊。借助軟件項目管理的工作分解結構可采用自頂向下和自底向上方法進行估算。估算內容除各子系統(tǒng)或模塊外還應考慮各子系統(tǒng)之間關聯(lián)和系統(tǒng)級的工作量。如,軟件風險分析、軟件變更管理、軟件配置管理、軟件質量管理等。16.2.1軟件項目分解在軟件項目策劃的過程中,往往對軟件⑴自頂向下方法步驟①根據(jù)完成的類似軟件項目的工作量或成本,估算待開發(fā)軟件項目的工作量或成本W0。②估算軟件開發(fā)各項任務協(xié)調、交流、管理、集成和軟件項目特殊要求的工作量W10③軟件開發(fā)工作量為W20=W0-W10

2023/7/31國防科技大學計算機學院40⑴自頂向下方法步驟2023/7/31國防科技大學計算機學院自頂向下方法參照Boehm給出的軟件生存周期各階段工作量的基本分布(如表16.3所示),計算軟件生存周期各階段工作量

W2J0=pjⅹW20

pj是W2j在W20中所占的百分比,j=1,2,…k,于是W20=W210+W220+…

+W2K02023/7/31國防科技大學計算機學院41自頂向下方法參照Boehm給出的軟件生存周期各階段工作量的基表16.3Boehm統(tǒng)計的工作量分布階段制品規(guī)模2KDSI8KDSI32KDSI128KDSI計劃與需求+6%+6%+6%+6%概要設計16%16%16%16%詳細設計26%25%24%23%編碼與單元測試42%40%38%36%集成與測試16%19%22%25%表16.3中“計劃與需求”預置6%的附加工作量,用于團隊獲取領域知識和經驗、與客戶合作、處理知識產權等問題,DSI表示項目開發(fā)的有效的不含注釋的源指令行。表16.3Boehm統(tǒng)計的工作量分布軟件項目分解Boehm給出的軟件生存周期各階段工作量的基本分布可根據(jù)今天的軟件開發(fā)方法、環(huán)境和問題,軟件開發(fā)組織的實際進行必要的調整。估算的各個部分的工作量帶有主觀成分,應根據(jù)項目的實際情況進行修改。⑤軟件開發(fā)過程中,及時統(tǒng)計實際工作量W2J,并與初始估算W2J0進行比較,以此為參考對尚無實際工作量的初始估算進行修正。自頂向下方法適用于軟件開發(fā)早期,但不精確,需要在軟件開發(fā)過程中不斷調整、修正。軟件項目分解Boehm給出的軟件生存周期各階段工作量的基本分⑵自底向上方法利用軟件項目管理的工作分解結構,自底向上估算各項任務的工作量(或成本),再逐步相加,得到待開發(fā)軟件的總工作量(或成本)。Boehm給出了用自底向上方法進行軟件估算的示例(如表16.4所示)。該方法的成效取決于工作分解結構的質量和穩(wěn)定性。如果分解結構在軟件開發(fā)過程中很少變更,估算的準確性較高。⑵自底向上方法利用軟件項目管理的工作分解結構,自底向上估算各表16.4a自底向上方法進行軟件估算示例1構件:人機交互開發(fā)者:王平日期:階段任務人天總計計劃與需求組件需求開發(fā)計劃718概要設計概要設計用戶手冊初稿測試計劃84113詳細設計用PDL描述的詳細設計定義數(shù)據(jù)測試用例設計64515總計(人天)36表16.4a自底向上方法進行軟件估算示例1構件:人機交互開表16.4b自底向上方法進行軟件估算示例2構件:人機交互開發(fā)者:張潔日期:階段任務人天總計詳細設計生成測試數(shù)據(jù)編寫完整的用戶手冊6814編碼與單元測試編碼單元測試101222集成與集成測試集成集成測試編寫文檔57517總計(人天)532023/7/31國防科技大學計算機學院46將各階段工作量數(shù)據(jù)相加,得w=36+53=89.表16.4b自底向上方法進行軟件估算示例2構件:人機交互開(3)根據(jù)實驗或歷史數(shù)據(jù)根據(jù)實驗或歷史數(shù)據(jù)給出軟件項目工作量或成本的經驗估算公式。上述三種方法可以同時、單獨或組合使用,取長補短、互相參考,提高項目估算的精度和可靠性。采用分解技術估算軟件項目應考慮各項任務之間協(xié)調、系統(tǒng)集成時需要的工作量。為了實現(xiàn)軟件項目估算,實踐中開發(fā)了大量的軟件項目自動估算工具,支持軟件工作量或成本估算。(3)根據(jù)實驗或歷史數(shù)據(jù)根據(jù)實驗或歷史數(shù)據(jù)給出軟件項目工作量軟件項目分解傳統(tǒng)軟件工程的軟件項目按照瀑布模型分解,分別估算出軟件項目在軟件開發(fā)各個階段的工作量和成本,再進行匯總,估算出整個項目的工作量和成本。現(xiàn)代軟件工程的軟件項目采用RUP過程,迭代模型,可按照初始、細化、構造階段分解,分別估算工作量,也可以按照各個工作流統(tǒng)計工作量。積累軟件開發(fā)組織和團隊開發(fā)軟件項目的歷史數(shù)據(jù),對開發(fā)組織的軟件項目估算和管理十分必要。軟件項目分解傳統(tǒng)軟件工程的軟件項目按照瀑布模型分解,分別估算16.2.2采用代碼行、功能點度量的工作量估算軟件項目的規(guī)模是影響軟件項目成本和工作量的重要因素。較小的軟件項目或模塊可采用代碼行和功能點估算,然后根據(jù)類似項目的專家經驗換算成工作量和成本。采用上述估算方法可以估算出LOC或FP的樂觀值a,悲觀值b和一般值m,然后根據(jù)下列加權公式計算出期望值。E=(a+4m+b)/616.2.2采用代碼行、功能點度量的工作量估算軟件項目的規(guī)采用代碼行、功能點度量的工作量估算我們希望LOC或FP的值落在區(qū)間[a,b]之外的概率極小。當LOC或FP的期望值估算出來之后,根據(jù)以前軟件項目開發(fā)的平均生產率,每人月代碼行(LOC/PM),或每人月功能點(FP/PM)就可以計算出工作量。如,軟件項目的規(guī)模估算為310FP,以前完成類似軟件項目的生產率為5.5FP/PM,于是工作量估算為E=310/5.5=56PM。如果當前估算的軟件子項目比以前完成的項目復雜,所用的生產率值可以低于平均生產率,反之高于平均生產率。采用代碼行、功能點度量的工作量估算我們希望LOC或FP的值落例16.1估算計算機輔助設計(CAD)軟件項目將CAD項目按功能分解為七個子項目:

①用戶界面和控制;②二維幾何分析;

③三維幾何分析;④數(shù)據(jù)庫管理;

⑤計算機圖形顯示;

⑥外設控制;

⑦設計分析。表16.5給出七個子項目代碼行的樂觀估計、悲觀估計和一般估算值,然后計算出加權平均值。分析七個子項目的規(guī)模、復雜性和難度,參照以前開發(fā)類似項目的經驗給出開發(fā)每行代碼的平均成本,每月開發(fā)的代碼行數(shù)。用這兩組數(shù)據(jù)計算出七個子項目的開發(fā)成本和工作量。最后匯總的CAD軟件開發(fā)項目

規(guī)模為33360LOC,

成本為656680$,工作量為144.5PM2023/7/3151國防科技大學計算機學院例16.1估算計算機輔助設計(CAD)軟件項目將CAD項目估算計算機輔助設計(CAD)軟件項目再用第二種方法分別估算軟件開發(fā)子項目在軟件工程各個階段的工作量,估算結果列入表16.6。兩種方法估算的工作量分別為144.5PM和152.5PM,相差5%左右。估算的成本分別為656680$和708075$,相差7%左右。兩種方法估算的工作量和成本基本一致。這個例子只給出估算方法的步驟和說明,具體數(shù)據(jù)不一定符合今天軟件開發(fā)的實際狀況。2023/7/3152國防科技大學計算機學院估算計算機輔助設計(CAD)軟件項目再用第二種方法分別估算軟表16.5基于功能分解的代碼行、成本、工作量估算2023/7/3153國防科技大學計算機學院表16.5基于功能分解的代碼行、成本、工作量估算2023/表16.6功能和過程分解的工作量估2023/7/31國防科技大學計算機學院54表16.6功能和過程分解的工作量估2023/7/31國防16.2.3軟件項目的生產率度量管理人員希望在不同的軟件過程和不同的環(huán)境中評估軟件開發(fā)人員的生產率。傳統(tǒng)模型的生產率度量是,用規(guī)模除以工作量。直接用于軟件生產率度量是

代碼行數(shù)/人月

功能點數(shù)/人月

對象點數(shù)/人月這些度量沒有反映影響生產率的許多其他重要因素,如代碼質量,軟硬件環(huán)境,復雜性等。2023/7/31國防科技大學計算機學院5516.2.3軟件項目的生產率度量管理人員希望在不同的軟件過軟件項目的生產率度量圖16.1的生產率模型從經濟學的角度出發(fā),用軟件的價值和投入成本的比值度量生產率,并對軟件的市場價值和成本進行了分解。

生產率=軟件制品價值/軟件成本從經濟學的角度定義生產率比較全面的反映了生產率和生產要素的關系。適用于軟件組織和軟件項目的生產率度量。模型沒有指明各種要素對生產率的具體影響。只從管理的角度要求軟件開發(fā)過程要降低成本、提高質量,開拓軟件制品市場、增加發(fā)行數(shù)量,沒有對軟件開發(fā)人員提出提高生產率的具體技術措施。2023/7/31國防科技大學計算機學院56軟件項目的生產率度量圖16.1的生產率模型從經濟學的角度出發(fā)圖16.1軟件生產率模型2023/7/31國防科技大學計算機學院57圖16.1軟件生產率模型2023/7/31國防科技大學計16.2.4一般經驗估算模型軟件工作量估算模型是根據(jù)以前完成項目的實際數(shù)據(jù)導出的,用于新軟件項目的計劃階段。導出的模型參數(shù)是“從前的”、“局部的”,估算模型不可能適用于當前所有的軟件項目和全部開發(fā)環(huán)境,僅有一定的參考價值。2023/7/31國防科技大學計算機學院5816.2.4一般經驗估算模型軟件工作量估算模型是根據(jù)以前完一般經驗估算模型估算工作量、進度和成本的一般算法模型:

其中:E是以人月為單位的工作量ev是以KLOC或FP為單位的規(guī)模估算變量A,B,C是大量軟件項目數(shù)據(jù)通過回歸分析得出的經驗常數(shù)m(X)是項目調整因子,取值依賴于項目屬性向量X2023/7/31國防科技大學計算機學院59一般經驗估算模型估算工作量、進度和成本的一般算法模型:202一般經驗估算模型如,X=(項目復雜性,可靠性,人員經驗,環(huán)境,…)為向量X各元素定值是由定性到定量的估算過程。如,將項目復雜性為(高,較高,一般,較低,低)的屬性量化為(1.0,0.9,0.8,0.7,0.6)形式。當某軟件項目復雜性評估為“較高”時,向量元素“項目復雜性”取值為0.9.其余向量元素的定值如法炮制。得到向量X各元素的值后,可按各元素的重要程度加權求和,最后得m(X)的值。

2023/7/31國防科技大學計算機學院60一般經驗估算模型如,2023/7/31國防科技大學計算機學院一般經驗估算模型表16.7給出幾個基于代碼行和功能點的估算模型,這些模型都是針對特定軟件開發(fā)環(huán)境和項目數(shù)據(jù)庫的數(shù)據(jù)得出的,應用時必須和具體的項目環(huán)境相結合,對參數(shù)進行修正,或修改項目調整因子中的向量元素。本節(jié)的其余部分介紹兩個常用的估算模型:COCOMO模型、Putnam模型。2023/7/31國防科技大學計算機學院61一般經驗估算模型表16.7給出幾個基于代碼行和功能點的估算表16.7基于代碼行和功能點的

工作量估算模型基于代碼行的模型

E=a(KLOC)b+cWalston-Felixa=5.200b=0.910c=0Bailey-Basilia=0.730b=1.160c=5.5Doty(KLOC>9)a=5.288b=1.047c=0基于功能點的模型

E=a+bⅹFPAlbrecht-Gaffneya=-91.40b=0.355Kemerera=-37.00b=0.960小型項目回歸模型

a=-12.88b=0.4052023/7/31國防科技大學計算機學院62表16.7基于代碼行和功能點的

工作量估算模型基于代碼行的16.2.5COCOMO模型1981年Boehm提出“構造性成本模型”,簡稱COCOMO模型(ConstructiveCostModel)1989年COCOMO模型用于Ada軟件開發(fā)2000年經進一步加工推出COCOMOⅡCOCOMO模型被廣泛應用,經歷了三十年的進化取得了較好的效果。原始的COCOMO模型是在軟件工程的結構化時代,廣泛采用瀑布模型的歷史背景下產生的,是1980年代軟件工程的一項重要成果。2023/7/31國防科技大學計算機學院6316.2.5COCOMO模型1981年Boehm提出“構造COCOMO模型原始的COCOMO模型是一個靜態(tài)、單變量經驗模型。模型將規(guī)模作為工作量(或成本)估算的主要因素,根據(jù)多個領域的56個軟件項目數(shù)據(jù)庫,從工程和經濟兩個方面的大量測量數(shù)據(jù),提取調節(jié)因子得出經驗公式。公式描述了開發(fā)系統(tǒng)的工作量或時間與系統(tǒng)規(guī)模、制品、過程、項目和團隊之間的關系。Boehm把軟件生存周期劃分為:

計劃需求、制品設計、詳細設計、編碼和單元測試、集成和系統(tǒng)測試

五個階段。2023/7/31國防科技大學計算機學院64COCOMO模型原始的COCOMO模型是一個靜態(tài)、單變量經驗COCOMO模型COCOMO模型假設①軟件項目管理、設施、保障滿足軟件項目過程需要,這部分工作量不列入COCOMO模型的工作量估算范圍;②源代碼行數(shù)不包括注釋;③開發(fā)過程的工作量估算從設計開始,計劃和需求獲取額外處理;④一個人月包括152個小時。2023/7/31國防科技大學計算機學院65COCOMO模型COCOMO模型假設2023/7/31國防科COCOMO模型COCOMO模型分為基本、中間、詳細三個層次。基本COCOMO模型用于系統(tǒng)開發(fā)初期,軟件制品設計階段,估算整個系統(tǒng)的工作量(包括軟件維護)和軟件開發(fā)所需要的時間。中間COCOMO模型用于軟件的詳細設計階段,估算各子系統(tǒng)的工作量和開發(fā)時間。詳細COCOMO模型用于估算獨立的軟構件,如子系統(tǒng)內部各模塊,軟件的集成和測試。2023/7/31國防科技大學計算機學院66COCOMO模型COCOMO模型分為基本、中間、詳細三個層次圖16.2軟件項目工作量估算趨勢隨著軟件開發(fā)的進展,能夠提供的影響參數(shù)估算的消息逐步增多,精度越來越高,工作量的估算也趨于實際,但估算的預報功能也逐漸喪失軟件開發(fā)過程終止時,軟件開發(fā)工作量的估算值應收斂到核算值(如圖

所示)。詳細COCOMO請見[133][135]。2023/7/31國防科技大學計算機學院67圖16.2軟件項目工作量估算趨勢隨著軟件開發(fā)的進展,能夠1.基本COCOMO模型基本COCOMO模型具有下列形式:E=a(L)b(16-6)D=c(E)d(16-7)其中:E表示工作量,單位是人月(PM)D表示開發(fā)時間,單位是月(M)L是項目的代碼行估算值,單位是千行代碼(KLOC)a,b,c,d是常數(shù),取值如表16.8所示2023/7/31國防科技大學計算機學院681.基本COCOMO模型基本COCOMO模型具有下列形式:表16.8基本COCOMO模型參數(shù)軟件類型abcd適用范圍組織型2.41.052.50.38各類應用程序半獨立型3.01.122.50.35各類實用程序、編譯程序等

嵌入型3.61.202.50.32實時程序、控制程序、操作系統(tǒng)

公式給出了軟件代碼行數(shù)與工作量、工作量與開發(fā)時間的函數(shù)關系。Boehm把軟件劃分為組織型、半獨立型和嵌入型三類,允許不同應用領域和復雜程度的軟件按照上述三類軟件的適用范圍選取相應的參數(shù)a,b,c,d。2023/7/31國防科技大學計算機學院69表16.8基本COCOMO模型參數(shù)軟件類型2.中間COCOMO模型軟件類型ab組織型3.21.05半獨立型3.01.12嵌入型2.81.20中間COCOMO模型以基本COCOMO模型為基礎工作量估算公式中乘以工作量調節(jié)因子EAF,充分利用軟件開發(fā)進入詳細設計階段的信息。中間COCOMO模型具有下列形式:E=a(L)bEAF(16-8)其中:L是項目的代碼行估算值,

單位是千行代碼。a,b是常數(shù),取值如表所示。2023/7/31國防科技大學計算機學院702.中間COCOMO模型軟件類型ab組織型3.21.05半中間COCOMO模型工作量調節(jié)因子EAF是軟件項目15個要素的函數(shù):①軟件制品屬性(軟件可靠性、軟件復雜性、數(shù)據(jù)庫的規(guī)模)②計算機屬性(程序執(zhí)行時間、程序占用內存的大小、軟件開發(fā)環(huán)境的變化、軟件開發(fā)環(huán)境的響應速度)③人員屬性(分析員的能力、程序員的能力、有關應用領域的經驗、開發(fā)環(huán)境的經驗、程序設計語言的經驗)④軟件項目屬性(軟件開發(fā)方法的能力,軟件工具的質量和數(shù)量、軟件開發(fā)的進度要求)。COCOMO模型要求為上述四種屬性15個要素賦予要素調節(jié)因子Fi,i=1,2,...,15,Fi的值對應的屬性狀態(tài)可能是:很低、低、正常、高、很高、極高,共六級。Boehm推薦的Fi的取值范圍如表16-10所示。正常情況下Fi=1。2023/7/31國防科技大學計算機學院71中間COCOMO模型工作量調節(jié)因子EAF是軟件項目15個要表16.10COCOMO模型調節(jié)要素和

調節(jié)因子的范圍調節(jié)要素i調節(jié)因子Fi的范圍調節(jié)要素i調節(jié)因子Fi的范圍制品屬性可靠性

0.75-1.40數(shù)據(jù)庫規(guī)模

0.94-1.16軟件復雜性

0.70-1.65人員屬性分析員能力

1.46-0.71應用經驗

1.29-0.82程序員能力

1.42-0.70虛擬機經驗

1.21-0.90語言經驗

1.14-0.95計算屬性執(zhí)行時間限制

1.00-1.66主存限制

1.00-1.56虛擬機的變更

0.87-1.30計算等待時間

0.87-1.15項目屬性現(xiàn)代實踐的使用

1.24-0.82軟件工具的使用

1.24-0.83開發(fā)進度約束

1.23-1.102023/7/31國防科技大學計算機學院72表16.10COCOMO模型調節(jié)要素和

中間COCOMO模型當15個Fi的值選定后,EAF的計算如下:(16-9)調節(jié)因子集的定義和調節(jié)因子定值是由統(tǒng)計結果和經驗決定的。不同的軟件開發(fā)組織,在不同的歷史時期,隨著環(huán)境的變化,軟件開發(fā)的進展這些數(shù)據(jù)可能變化。顯然,越到軟件開發(fā)的中、后期調節(jié)因子的定值效果越好。使用中間COCOMO模型可以估算開發(fā)軟件制品的工作量,比較各種開發(fā)方案對工作量的影響。2023/7/31國防科技大學計算機學院73中間COCOMO模型當15個Fi的值選定后,EAF的計算如例16.2用基本COCOMO模型估算例16.1的工作量、開發(fā)時間和參加項目開發(fā)的人數(shù)。在例16.1中,目標代碼行數(shù)為33.3KLOC,CAD軟件開發(fā)屬于中等規(guī)模、半獨立型從表16.9中查到a=3.0,b=1.12。代入公式E=3.0(L)1.12=3.0(33.3)1.12=152PM將E的估算值代入公式,并取C=2.5,d=0.35D=2.5(E)0.35=2.5(152)0.35=14.5MN=E/D=152/14.5≈11(人)

2023/7/31國防科技大學計算機學院74例16.2用基本COCOMO模型估算例16.1的工作量、中間COCOMO模型例16.2中計算出來的11人是粗略估計。在軟件項目開發(fā)過程中,需要的11個人不可能都有相同的能力和個性,相同的經驗和知識結構,并且在軟件開發(fā)的各個階段對人的要求也不同。若干人共同開發(fā)一個軟件項目還應該增加他們之間相互通信和交換意見的額外工作量。N個程序員組成的小組,實現(xiàn)相同規(guī)模的程序,相互通信數(shù)為C2N=N(N-1)/2,設每次通信和交換意見的平均工作量為μ則增加的通信開銷為:Ec=μN(N-1)/2(16-10)2023/7/31國防科技大學計算機學院75中間COCOMO模型例16.2中計算出來的11人是粗略估計例16.3計算3人和5人開發(fā)一個程序的通信開銷3人和5人開發(fā)一個程序相互通信和交換意見的關系如圖16.3所示。將N=3和N=5分別代入公式Ec(3)=μ3(3-1)/2=3μEc(5)=μ5(5-1)/2=10μ2023/7/31國防科技大學計算機學院76

圖16.3N=3和N=5時的相互通信關系

例16.3計算3人和5人開發(fā)一個程序的通信開銷3人和5人中間COCOMO模型由N個程序員組成的小組共同開發(fā)一個程序總的工作量ET滿足:ET=E+Ec于是,程序員小組的生產率是PG=LOC/(E+Ec)程序員小組生產率和單個程序員生產率的比為:Rp=E/(E+Ec)隨著程序員小組人數(shù)的增加Ec≈μN2/2,程序員小組的生產率將會下降。模型說明,盲目增加程序員人數(shù)會推遲軟件完成的日期.2023/7/31國防科技大學計算機學院77中間COCOMO模型由N個程序員組成的小組共同開發(fā)一個程序中間COCOMO模型以靜態(tài)單變量COCOMO模型為基礎,還可以定義估算資源R的靜態(tài)多變量模型:其中:ei表示軟件第i個特性,ai,bi是與軟件第i個特性有關的常數(shù),由實驗數(shù)據(jù)的回歸分析確定。Boehm給出一個大型嵌入式軟件項目的工作量和進度分布,如表16.11所示。一般軟件項目COCOMO工作分解默認的工作量分配如表16.12所示。2023/7/31國防科技大學計算機學院78中間COCOMO模型以靜態(tài)單變量COCOMO模型為基礎,還表16.11大型嵌入式軟件項目的工作量和進度分布

活動工作量%時間%計劃和需求

+8+36制品設計

1836詳細設計

2518代碼和單元測試

2618集成和集成測試

31282023/7/31國防科技大學計算機學院79表16.11大型嵌入式軟件項目的工作量和進度分布表16.12一般軟件項目COCOMO工作分解默認的工作量分配活動工作量%

需求分析

4制品設計

12實現(xiàn)

44測試計劃

6V&V14項目管理

7配置管理和質量保證

7編寫使用手冊

62023/7/31國防科技大學計算機學院80表16.12一般軟件項目COCOMO工作分解默認的工作量16.2.6COCOMOII模型二十世紀九十年代,迭代式軟件開發(fā)過程、面向對象、基于構件、軟件復用、使用四代語言4GL等方法應用廣泛,網絡軟件逐步興起,軟件開發(fā)的制品、過程、方法、工具和環(huán)境有了很大變化系統(tǒng)中有些軟件是自主開發(fā)的,有些是現(xiàn)成的,而另一些是經過維護后采用的。傳統(tǒng)的COCOMO模型己不適應現(xiàn)代軟件開發(fā)方法1995年Boehm對COCOMO模型進行了擴充,稱COCOMOII,估算工作量的公式是

E=a(L)bEAF+ER2023/7/31國防科技大學計算機學院8116.2.6COCOMOII模型二十世紀九十年代,迭代式COCOMOII模型公式的第一項與公式(16-8)形式相同第二項ER表示復用構件、代碼自動生成需要的工作量,單位以人月計參數(shù)a,b,EAF的選擇依賴于軟件開發(fā)的時間結點。對于COCOMOII模型Boehm認為,應在三個時間點上根據(jù)軟件過程的特點及軟件開發(fā)信息庫提供的信息分別進行工作量估算。這三個時間點是,①系統(tǒng)需求確定后;②概要設計、設計原則、環(huán)境、復用構件確定后;③軟件體系結構細節(jié)基本確定時。如圖16.4所示。2023/7/31國防科技大學計算機學院82COCOMOII模型公式的第一項與公式(16-8)形式圖16.4迭代模型軟件項目估算的

精度趨勢2023/7/31國防科技大學計算機學院83圖16.4迭代模型軟件項目估算的

精度趨勢2023/7/3COCOMOII模型對于RUP迭代模型可將系統(tǒng)需求分解,軟件項目估算要與需求分解相對應。對確定的需求和增量逐個進行估算后,將所有需求和增量的估算相加,得到整個項目的估算。在對確定的需求和增量進行估算時,需求工作流和設計工作流在初始階段和細化階段需要多次交互。初始階段結束時,軟件需求獲取基本完成,這次迭代系統(tǒng)的需求場景基本確定。2023/7/31國防科技大學計算機學院84COCOMOII模型對于RUP迭代模型可將系統(tǒng)需求分解,軟COCOMOII模型但軟件開發(fā)信息庫還不具備采用功能點和代碼行估算這次迭代軟件開發(fā)規(guī)模的條件。為此,COCOMOII估算模型采用對象點估算開發(fā)軟件的規(guī)模。對象點開發(fā)軟件的屏幕數(shù)、報告數(shù)、第三代語言構件數(shù)等要素估算軟件項目規(guī)模。要素由計算機輔助軟件工程環(huán)境定義,可借助高層工作量生成器進行統(tǒng)計。每個要素分為簡單、適中或難3個級別,分別賦予三個不同的權值(1,2,3)。利用15.2節(jié)介紹的對象點度量方法估算對象點數(shù)。2023/7/31國防科技大學計算機學院85COCOMOII模型但軟件開發(fā)信息庫還不具備采用功能點和代COCOMOII模型統(tǒng)計出所有對象點OPi(i=1,2,…,k)后,可根據(jù)開發(fā)人員的經驗和能力、CASE成熟度確定生產率因子pi(表16.13給出pi的統(tǒng)計值)。生產率因子pi是對大量軟件項目和團隊在通常的軟件開發(fā)環(huán)境支持下,對完成各類對象點所需工作量的統(tǒng)計結果,應存放在COCOMOII的支持工具中。第i類生產率因子PiPi=OPi/PMii=1,2,…,k(16-16)其中OPi表示第i類要素對象點個數(shù)PMi表示完成OPi個對象點所需的人月數(shù)2023/7/31國防科技大學計算機學院86COCOMOII模型統(tǒng)計出所有對象點OPi(i=1,2COCOMOII模型如果開發(fā)人員經驗和能力被認為“低”,CASE成熟度和能力也是“低”,那么從表16.13查出生產率的值是每人月7個對象點。所需人月數(shù)是對象點數(shù)除以7。當開發(fā)人員的經驗“低”,但CASE成熟度“高”時,生產率估算是兩個值的平均p=(7+25)/2=16。表16.13選擇生產率因子開發(fā)人員的經驗和能力非常低低一般高非常高CASE成熟度和能力非常低低一般高非常高生產率因子(對象點/人月)pj471325502023/7/31國防科技大學計算機學院87COCOMOII模型如果開發(fā)人員經驗和能力被認為“低”,CCOCOMOII模型于是,估算工作量

EPM=PMi=OPi/piCOCOMOII的支持工具應不斷收集、充實各類對象點度量及完成工作量的數(shù)據(jù)(OPi,PMi),適時增加或調整生產率因子Pi的類型,提高統(tǒng)計精度和置信度。為提高初始階段工作量估算精度打下基礎。細化階段結束后,軟件系統(tǒng)的功能、體系結構基本確定、與對象點相比,這時的軟件開發(fā)信息庫可以提供更多的軟件描述細節(jié),可以使用功能點對軟件系統(tǒng)規(guī)模進行估算,估算的精度會有較大提高。細化階段的工作量估算采用COCOMOII的計算公式2023/7/31國防科技大學計算機學院88COCOMOII模型于是,估算工作量2023/7/31COCOMOII模型指數(shù)b的取值范圍是[1.01,1.26],取決于開發(fā)組織在應用領域的經驗、軟件開發(fā)過程的靈活性、風險預測和解決情況、開發(fā)團隊的凝聚力、過程成熟度5個要素。調節(jié)因子EAF取決于制品可靠性和復雜性、可復用構件數(shù)、平臺困難程度、個人能力、個人經驗、項目進度、支持設施7個要素。在構造階段,軟件詳細設計、編碼、測試全面展開,軟件開發(fā)信息庫有更多的詳細信息可以利用,采用功能點或代碼行進行規(guī)模估算可以獲得較為準確的結果。指數(shù)b的取值與細化階段相同,調節(jié)因子EAF取決于制品可靠性、復雜性、執(zhí)行時間、主存限制、平臺經驗、平臺變更、應用經驗、語言/工具經驗、文檔、復用、程序員能力等17個要素。2023/7/31國防科技大學計算機學院89COCOMOII模型指數(shù)b的取值范圍是[1.01,1.26COCOMOII模型常用的COCOMOII模型估算工具:Costar()EstimateProfessional()COCOMOII的詳細討論請參考[133][135]2023/7/31國防科技大學計算機學院90COCOMOII模型常用的COCOMOII模型估算工具:16.2.7Putnam模型1978年,Putnam提出了大型軟件項目(一般在30人年以上)的工作量估算模型。它是動態(tài)多變量模型,適用于軟件開發(fā)的各個階段,估算模型以大型軟件項目的實測數(shù)據(jù)為基礎,導出如圖16.5所示的工作量分布曲線。該曲線與著名的Rayleigh-Norden(R-N)曲線的形狀相似它描述了開發(fā)工作量,開發(fā)時間和軟件代碼行數(shù)之間的關系。2023/7/31國防科技大學計算機學院9116.2.7Putnam模型1978年,Putnam提圖16.5大型軟件項目的工作量分布2023/7/31國防科技大學計算機學院92圖16.5大型軟件項目的工作量分布2023/7/31國防科技Putnam模型方程L=CkE1/3td4/3

(16-18)其中:

L表示源程序代碼行數(shù)

E表示工作量(以人年記,包括維護)

td表示開發(fā)時間

Ck表示軟件開發(fā)環(huán)境

的常數(shù),取值如表

所示。軟件開發(fā)環(huán)境

CK的值比較差

2000一般

8000比較好

110002023/7/31國防科技大學計算機學院93Putnam模型方程軟件開發(fā)環(huán)境差的軟件開發(fā)環(huán)境指,軟件開發(fā)沒有方法學的支持,缺乏對文檔的評審,采用批處理方式。一般的軟件開發(fā)環(huán)境應有軟件開發(fā)方法學的支持,有適宜的文檔和評審,采用交互處理方式。好的軟件開發(fā)環(huán)境應采用CASE工具和集成化CASE環(huán)境。由(16-18)有

E=L3/(CK3td4)

(16-19)td對應于Rayleigh-Norden曲線的最大值,表示軟件交付時工作量最大,參與軟件項目的人最多。2023/7/31國防科技大學計算機學院94Putnam模型差的軟件開發(fā)環(huán)境指,軟件開發(fā)沒有方法學的支持,缺乏對文檔的評Putnam模型當工作量估算出來之后,利用每人年的開銷($/PY)可以估算成本。公式(16-19)表明,開發(fā)軟件項目的工作量與交貨時間的4次方成反比,將0.9td代入(16-19)式的td計算E,我們發(fā)現(xiàn),提前10%的時間要增加52%的工作量,降低了軟件開發(fā)生產率。軟件開發(fā)過程中,人員與時間的折衷十分重要。2023/7/31國防科技大學計算機學院95Putnam模型當工作量估算出來之后,利用每人年的開銷($圖16.6軟件開發(fā)時間與人力投入的關系圖16.6(a)所示曲線表明,軟件開發(fā)項目每年所需要的人年數(shù)與開發(fā)時間t的關系滿足Rayleigh-Norden分布,相應的累計人年數(shù)與開發(fā)時間t的關系如圖16.6(b)所示。2023/7/31國防科技大學計算機學院96圖16.6軟件開發(fā)時間與人力投入的關系圖16.6(a)所示Putnam模型曲線表明:軟件開發(fā)項目的工作量隨著時間t的增長并不呈線性增長趨勢。參加軟件項目開發(fā)的人員數(shù)目不應該是一成不變的。圖16.6表明,如果按照線性分布方案配備人員,即每年的人數(shù)是常數(shù)。這樣初始段將有部分人力是多余的,而峰值段人力又不夠,到項目后期再增加人力為時已晚,造成浪費。由于人力調度的不合理,不得不延長項目開發(fā)時間,增加一部分額外工作量。2023/7/31國防科技大學計算機學院97Putnam模型曲線表明:軟件開發(fā)項目的工作量隨著時間t的Putnam模型Putnam模型雖然揭示了軟件項目的工作量、軟件開發(fā)時間和程序代碼長度三者之間的關系,但它沒有反映軟件制品、軟件項目、軟件開發(fā)人員、計算機軟硬件資源等屬性。用Putnam模型進行軟件項目的成本估算是十分粗糙的。軟件項目度量的進一步討論請參閱[1][3][113][114][115][116][133][134][135]PriceS(WWW.)CostXpert()SLIM-Estimate(WWW.)2023/7/31國防科技大學計算機學院98Putnam模型Putnam模型雖然揭示了軟件項目的工作量16.3風險分析與任何其他工程項目一樣,軟件工程項目的開發(fā)也存在各種各樣的風險,有些風險甚至是災難性的。R.Charette認為,風險與將要發(fā)生的事情有關,它涉及諸如思想、觀念、行為、地點、時間等多種因素;風險隨條件的變化而改變,人們改變、選擇、控制與風險密切相關的條件可以減少風險,但改變、選擇、控制條件的策略往往是不確定的。2023/7/31國防科技大學計算機學院9916.3風險分析與任何其他工程項目一樣,軟件工程項目的開發(fā)風險分析軟件開發(fā)過程中,人們關心的問題是,什么風險會導致軟件項目的徹底失敗?顧客需求、開發(fā)環(huán)境、目標機、時間、成本的改變對軟件項目的風險會產生什么影響?必須抓住什么機會、采取什么措施才能有效地減少風險、順利完成任務?所有這些問題都是軟件開發(fā)過程中不可避免并需要妥善處理的。2023/7/31國防科技大學計算機學院100風險分析軟件開發(fā)過程中,人們關心的問題是,2023/7/31風險分析軟件工程風險分析的任務

找出并標識對項目構成威脅的各類風險,通過風險估算量化風險的不確定性和可能帶來的損失程度,在此基礎上制定風險管理和監(jiān)控計劃,實施風險管理。本節(jié)將分別介紹風險標識、風險估算、風險評價和風險管理。2023/7/31國防科技大學計算機學院101風險分析軟件工程風險分析的任務2023/7/31國防科技大學16.3.1風險標識宏觀上,風險可以分為項目風險、技術風險和商業(yè)風險三類。由于項目在預算、進度、人力、資源、顧客和需求等方面的原因對軟件項目產生的不良影響稱為項目風險。軟件在設計、實現(xiàn)、接口、驗證和維護過程中可能發(fā)生的潛在問題,如規(guī)約的二義性、采用陳舊或尚不成熟的技術等等,對軟件項目帶來的危害稱技術風險。2023/7/31國防科技大學計算機學院10216.3.1風險標識宏觀上,風險可以分為項目風險、技術風險風險標識開發(fā)了一個沒人需要的優(yōu)質軟件,或銷售部門不知如何推銷這一軟件產品,或開發(fā)的產品不符合公司的產品銷售戰(zhàn)略等等稱為商業(yè)風險。這些風險有些是可以預料的,有些是很難預料的。為了幫助項目管理人員、項目規(guī)劃人員全面了解軟件開發(fā)過程存在的風險,Boehm建議設計并使用各類風險檢測表標識各種風險。例16.4給出一個參考性的“人員配備風險檢測表”。2023/7/31國防科技大學計算機學院103風險標識開發(fā)了一個沒人需要的優(yōu)質軟件,或銷售部門不知如何推銷例16.4人員配備風險檢測表(1)開發(fā)人員的水平如何。(2)開發(fā)人員在技術上是否配套。(3)開發(fā)人員的數(shù)量如何。(4)開發(fā)人員是否能夠自始至終地參加軟件開發(fā)

工作。(5)開發(fā)人員是否能夠集中全部精力投入到軟件

開發(fā)工作。(6)開發(fā)人員對自己的工作是否有正確的期望。(7)開發(fā)人員是否接受過必要的培訓。(8)開發(fā)人員的流動是否能夠保證工作的連續(xù)性。2023/7/31國防科技大學計算機學院104例16.4人員配備風險檢測表(1)開發(fā)人員的水平如何。2人員配備風險檢測表上述問題可以選用0,1,2,3,4,5來回答。完全肯定取值為0,反之為5,中間情況分別取值1,2,3,4,值越大表示風險越大。人員配備風險檢測表反映了人的因素對軟件項目的影響,可以用它來估算人的因素對軟件項目帶來的風險。2023/7/31國防科技大學計算機學院105人員配備風險檢測表上述問題可以選用0,1,2,3,4,5來回16.3.2風險估算軟件項目管理人員可以從影響風險的因素和風險發(fā)生后帶來的損失兩方面來度量風險。為了對各種風險進行估算,必須建立風險度量指標體系;必須指明各種風險帶來的后果和損失;必須估算風險對軟件項目及軟件產品的影響;必須給出風險估算的定量結果

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論