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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第十六章

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

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

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

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

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

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

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

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

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

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

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

設(shè)計模型、測試模型、軟件體系結(jié)構(gòu)描述設(shè)計集制品評審

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

W2J0=pjⅹW20

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

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

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

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

⑤計算機圖形顯示;

⑥外設(shè)控制;

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

規(guī)模為33360LOC,

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

代碼行數(shù)/人月

功能點數(shù)/人月

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

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

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

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

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

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

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

所示)。詳細COCOMO請見[133][135]。2023/7/31國防科技大學(xué)計算機學(xué)院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國防科技大學(xué)計算機學(xué)院681.基本COCOMO模型基本COCOMO模型具有下列形式:表16.8基本COCOMO模型參數(shù)軟件類型abcd適用范圍組織型2.41.052.50.38各類應(yīng)用程序半獨立型3.01.122.50.35各類實用程序、編譯程序等

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

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

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

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

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

0.94-1.16軟件復(fù)雜性

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

1.46-0.71應(yīng)用經(jīng)驗

1.29-0.82程序員能力

1.42-0.70虛擬機經(jīng)驗

1.21-0.90語言經(jīng)驗

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國防科技大學(xué)計算機學(xué)院72表16.10COCOMO模型調(diào)節(jié)要素和

中間COCOMO模型當15個Fi的值選定后,EAF的計算如下:(16-9)調(diào)節(jié)因子集的定義和調(diào)節(jié)因子定值是由統(tǒng)計結(jié)果和經(jīng)驗決定的。不同的軟件開發(fā)組織,在不同的歷史時期,隨著環(huán)境的變化,軟件開發(fā)的進展這些數(shù)據(jù)可能變化。顯然,越到軟件開發(fā)的中、后期調(diào)節(jié)因子的定值效果越好。使用中間COCOMO模型可以估算開發(fā)軟件制品的工作量,比較各種開發(fā)方案對工作量的影響。2023/7/31國防科技大學(xué)計算機學(xué)院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國防科技大學(xué)計算機學(xué)院74例16.2用基本COCOMO模型估算例16.1的工作量、中間COCOMO模型例16.2中計算出來的11人是粗略估計。在軟件項目開發(fā)過程中,需要的11個人不可能都有相同的能力和個性,相同的經(jīng)驗和知識結(jié)構(gòu),并且在軟件開發(fā)的各個階段對人的要求也不同。若干人共同開發(fā)一個軟件項目還應(yīng)該增加他們之間相互通信和交換意見的額外工作量。N個程序員組成的小組,實現(xiàn)相同規(guī)模的程序,相互通信數(shù)為C2N=N(N-1)/2,設(shè)每次通信和交換意見的平均工作量為μ則增加的通信開銷為:Ec=μN(N-1)/2(16-10)2023/7/31國防科技大學(xué)計算機學(xué)院75中間COCOMO模型例16.2中計算出來的11人是粗略估計例16.3計算3人和5人開發(fā)一個程序的通信開銷3人和5人開發(fā)一個程序相互通信和交換意見的關(guān)系如圖16.3所示。將N=3和N=5分別代入公式Ec(3)=μ3(3-1)/2=3μEc(5)=μ5(5-1)/2=10μ2023/7/31國防科技大學(xué)計算機學(xué)院76

圖16.3N=3和N=5時的相互通信關(guān)系

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

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

+8+36制品設(shè)計

1836詳細設(shè)計

2518代碼和單元測試

2618集成和集成測試

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

需求分析

4制品設(shè)計

12實現(xiàn)

44測試計劃

6V&V14項目管理

7配置管理和質(zhì)量保證

7編寫使用手冊

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

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

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

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

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

E=L3/(CK3td4)

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

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

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

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

溫馨提示

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

評論

0/150

提交評論