軟件工程課件_第1頁
軟件工程課件_第2頁
軟件工程課件_第3頁
軟件工程課件_第4頁
軟件工程課件_第5頁
已閱讀5頁,還剩1044頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

<<軟件工程>>

SoftwareEngineering

第一章軟件與軟件工程軟件軟件工程軟件生存周期軟件開發(fā)模型CASE工具及環(huán)境Question:

什么是軟件?計(jì)算機(jī)軟件是與計(jì)算機(jī)系統(tǒng)操作有關(guān)的程序、規(guī)程、規(guī)則及任何與之有關(guān)的文檔及數(shù)據(jù)。軟件的組成程序和數(shù)據(jù)(機(jī)器可執(zhí)行)文檔(機(jī)器不可執(zhí)行)程序程序是用程序設(shè)計(jì)語言描述的、適合于計(jì)算機(jī)處理的語句序列。面向機(jī)器:匯編語言、機(jī)器語言等面向過程:Fortran,Pascal,C等面向?qū)ο?C++,Java等面向問題:結(jié)構(gòu)化查詢語言SQL等文檔文檔是一種數(shù)據(jù)媒體和其上所記錄的數(shù)據(jù)。文檔記錄軟件開發(fā)的活動(dòng)和階段成果,它具有永久性并能供人或機(jī)器閱讀。不僅用于專業(yè)人員和用戶之間的通信和交流,而且還可以用于軟件開發(fā)過程的管理和運(yùn)行階段的維護(hù)軟件的特點(diǎn)抽象性:邏輯產(chǎn)品而非物理產(chǎn)品開發(fā)費(fèi)用高:開發(fā)設(shè)計(jì)幾乎都是從頭開始,成本和進(jìn)度很難估計(jì)可復(fù)制性:與開發(fā)成本相比,復(fù)制成本很低無折舊受硬件制約維護(hù)比硬件困難:糾錯(cuò)性維護(hù);完善性維護(hù);適應(yīng)性維護(hù)軟件的分類系統(tǒng)軟件實(shí)時(shí)軟件嵌入式軟件科學(xué)和工程計(jì)算軟件事務(wù)處理軟件人工智能軟件個(gè)人計(jì)算機(jī)軟件CASE工具軟件軟件的發(fā)展第一階段(1950-1960)程序員個(gè)人聰明才智:自己開發(fā)自己使用第二階段(1960-1975)軟件車間軟件個(gè)性第三階段(1975-1985)分布式、網(wǎng)絡(luò)的發(fā)展:軟件產(chǎn)品幾萬份Copy第四階段(1985-現(xiàn)在)面向?qū)ο?、Internet的發(fā)展軟件的發(fā)展軟件發(fā)展存在的問題(1/2)軟件開發(fā)能力不能滿足人們的需要。社會(huì)對軟件的依賴程度加大,人們普遍關(guān)注軟件的安全和可靠性。建造高可靠性、高質(zhì)量軟件的任務(wù)任重而道遠(yuǎn)。軟件發(fā)展存在的問題(2/2)若干年前開發(fā)的應(yīng)用軟件經(jīng)過幾十次修改已無人認(rèn)識(shí)它的內(nèi)部結(jié)構(gòu),己經(jīng)不可維護(hù)。由于經(jīng)濟(jì)原因,嵌入式系統(tǒng)存在許多怪現(xiàn)象,企業(yè)不愿意投入資源再生產(chǎn),而采取打補(bǔ)丁+時(shí)髦界面的方法。軟件危機(jī)軟件成為限制計(jì)算機(jī)系統(tǒng)發(fā)展的關(guān)鍵因素計(jì)算機(jī)硬件性能/價(jià)格比平均每十年提高二個(gè)數(shù)量級;軟件成本卻逐年上升,質(zhì)量無保證,開發(fā)生產(chǎn)率遠(yuǎn)遠(yuǎn)跟不上需求軟件危機(jī)2000年,StandishGroup對280,000個(gè)軟件開發(fā)項(xiàng)目進(jìn)行了分析軟件危機(jī)導(dǎo)致大量人力、物力的浪費(fèi)Question:

什么是軟件危機(jī)?

軟件危機(jī)是指在計(jì)算機(jī)軟件的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題。主要是兩個(gè)問題:1.如何開發(fā)軟件,怎樣滿足對軟件的日益增長的需求。2.如何維護(hù)數(shù)量不斷膨脹的已有軟件不僅僅“不能正常運(yùn)行的”程序具有,幾乎所有軟件不同程度地存在這些問題軟件危機(jī)的主要表現(xiàn)對軟件開發(fā)成本和進(jìn)度的估計(jì)不準(zhǔn)確用戶不滿意軟件質(zhì)量不高、可靠性差軟件常常不可維護(hù)、錯(cuò)誤難以改正。缺乏適當(dāng)?shù)奈臋n資料軟件成本占系統(tǒng)總成本的比例逐年上升軟件開發(fā)速度跟不上計(jì)算機(jī)發(fā)展速度軟件危機(jī)的原因用戶對軟件需求的描述不精確軟件開發(fā)人員對用戶需求的理解有偏差管理人員和軟件開發(fā)人員之間的誤解大型軟件開發(fā)容易產(chǎn)生疏漏和錯(cuò)誤缺乏有力的方法學(xué)和工具支持軟件產(chǎn)品的特殊性和人類智力的局限性軟件危機(jī)仍在繼續(xù)影響軟件質(zhì)量的糊涂認(rèn)識(shí)(1/3)在項(xiàng)目的初始階段對系統(tǒng)若明若暗就開始寫程序認(rèn)為軟件是靈活的容易修改,對軟件需求的改變不以為然程序調(diào)試成功標(biāo)志著工作的結(jié)束軟件危機(jī)仍在繼續(xù)影響軟件質(zhì)量的糊涂認(rèn)識(shí)(2/3)程序運(yùn)行前無法評價(jià)程序的質(zhì)量一個(gè)軟件項(xiàng)目給客戶提交的主要是程序,而軟件文檔則認(rèn)為可有可無、可多可少等等。雖然發(fā)布了軟件標(biāo)準(zhǔn)和規(guī)范,但在實(shí)踐中執(zhí)行需要額外的開銷,劃不來軟件危機(jī)仍在繼續(xù)--影響軟件質(zhì)量的糊涂認(rèn)識(shí)(3/3)雖然開發(fā)了許多軟件工具,但很多開發(fā)者對使用這些工具興趣不大為了開發(fā)軟件人們不惜用重金購買最新型號的主機(jī)和工作站而不愿意購買軟件工具在軟件開發(fā)過程中,進(jìn)度遲后就增派更多的程序員突擊,趕進(jìn)度………如何解決軟件危機(jī)?軟件設(shè)計(jì)、實(shí)現(xiàn)和維護(hù)應(yīng)當(dāng)與傳統(tǒng)的工程學(xué)科具有同等地位,因此軟件開發(fā)應(yīng)當(dāng)同其它工程任務(wù)的開發(fā)相似1968年,北大西洋公約組織(Nato)計(jì)算機(jī)科學(xué)會(huì)議上FritzBauer首先提出了

“軟件工程”

建立并使用正確的工程方法開發(fā)出成本低、可靠性好并在機(jī)器上能高效運(yùn)行的軟件。Question:

什么是軟件工程軟件工程[教材]軟件工程是用工程、科學(xué)和數(shù)學(xué)的原則與方法研制、維護(hù)計(jì)算機(jī)軟件的有關(guān)技術(shù)及管理方法。Question:

什么是軟件工程-2

軟件工程[IEE93](1)將系統(tǒng)的、規(guī)范的、可度量的方法應(yīng)用于軟件的開發(fā)、運(yùn)行和維護(hù)的過程;(2)上述方法的研究。軟件工程三要素-過程、方法和工具(1/6)質(zhì)量是軟件工程的生命線,軟件工程以質(zhì)量保證為基礎(chǔ)。質(zhì)量管理促進(jìn)了過程的改進(jìn),創(chuàng)造了許多行之有效的軟件開發(fā)方法和工具。軟件工程三要素-過程、方法和工具(2/6)軟件工程釆用層次化的方法,每個(gè)層次都包括過程、方法、工具三要素。方法支撐過程和工具、過程和工具促進(jìn)方法學(xué)的研究。軟件工程三要素-過程、方法和工具(3/6)將系統(tǒng)的、規(guī)范的、可量化的方法運(yùn)用到軟件工程的始終,滲透到軟件工程的過程、方法和工具中。軟件工程過程方法工具軟件工程三要素-過程、方法和工具(4/6)軟件工程的過程過程貫穿軟件開發(fā)的各個(gè)環(huán)節(jié),各環(huán)節(jié)之間建立里程碑;管理者在軟件工程過程中對軟件開發(fā)的質(zhì)量、進(jìn)度、成本進(jìn)行評估、管理和控制;技術(shù)人員采用相應(yīng)的方法和工具生成軟件工程產(chǎn)品(模型、文檔、數(shù)據(jù)、報(bào)告、表格等)。軟件工程三要素-過程、方法和工具(5/6)軟件工程的方法軟件工程方法是完成軟件工程項(xiàng)目的技術(shù)手段。它支持項(xiàng)目計(jì)劃和估算、系統(tǒng)和軟件需求分析、設(shè)計(jì)、編程、測試和維護(hù)。軟件工程方法依賴一組原則,它貫穿軟件工程的各個(gè)環(huán)節(jié)。軟件工程方法分兩類:傳統(tǒng)方法和面向?qū)ο蠓椒ㄜ浖こ倘?過程、方法和工具(6/6)

軟件工程工具它為軟件工程的過程和方法提供自動(dòng)化或半自動(dòng)化的工具支持。將若干工具集成起來,與軟件工程數(shù)據(jù)庫和計(jì)算機(jī)系統(tǒng)構(gòu)成一個(gè)支持軟件開發(fā)的系統(tǒng)稱“計(jì)算機(jī)輔助軟件工程(CASE)”,系統(tǒng)中某一工具的信息加工結(jié)果可以作為另一工具的輸入。集成的軟件工程工具再加上人的因素構(gòu)成了軟件工程環(huán)境。軟件開發(fā)方法和軟件工具結(jié)構(gòu)化分析方法結(jié)構(gòu)化程序設(shè)計(jì)語言面向?qū)ο蠓终鄯椒嫦驅(qū)ο蟪绦蛟O(shè)計(jì)語言軟件和軟件開發(fā)過程軟件過程和軟件產(chǎn)品密切相關(guān)。大型軟件項(xiàng)目沒有良好的軟件開發(fā)過程,不可能建造出用戶滿意的優(yōu)質(zhì)產(chǎn)品;反之,一個(gè)好的軟件產(chǎn)品隱含著良好的軟件開發(fā)過程。計(jì)算機(jī)軟件領(lǐng)域產(chǎn)品和過程不斷交替創(chuàng)新,促進(jìn)軟件工程的進(jìn)步和發(fā)展。軟件工程的目標(biāo)(1/6)

在給定成本、進(jìn)度的前提下,開發(fā)滿足用戶需求的并具有以下特性的軟件產(chǎn)品??尚薷男杂行钥煽啃钥衫斫庑钥删S護(hù)性可重用性可適應(yīng)性可移植性可追蹤性可互操作性軟件工程的目標(biāo)(2/6)有效性能有效地利用計(jì)算機(jī)的時(shí)間和空間資源可修改性容許對系統(tǒng)進(jìn)行修改而不增加原系統(tǒng)的復(fù)雜性,它支持軟件的調(diào)試與維護(hù)。軟件工程的目標(biāo)(3/6)可靠性具有能夠防止因概念、設(shè)計(jì)和結(jié)構(gòu)等方面的不完善而造成的系統(tǒng)失效,具有挽回因操作不當(dāng)造成軟件系統(tǒng)失效的能力可理解性系統(tǒng)具有清晰的結(jié)構(gòu),能直接反映軟件需求。軟件工程的目標(biāo)(4/6)可維護(hù)性便于對軟件增加新功能、改進(jìn)性能、修改錯(cuò)誤、移植

可重用性軟件易于被再次使用軟件工程的目標(biāo)(5/6)可適應(yīng)性采用流行的程序設(shè)計(jì)語言、運(yùn)行環(huán)境、標(biāo)準(zhǔn)的術(shù)語和格式??勺粉櫺詫浖M(jìn)行正向和反向追蹤的能力

軟件工程的目標(biāo)(6/6)可移植性從一個(gè)環(huán)境搬遷到另一個(gè)環(huán)境

可互操作性多個(gè)軟件要素相互通訊協(xié)同完成任務(wù)的能力軟件工程的原則(1/6)抽象信息隱藏模塊化局部化一致性完全性可驗(yàn)證性軟件工程的原則(2/6)抽象關(guān)注事物基本、重要的部分,忽略不相關(guān)成分

抽象可以使我們的思維聚焦于問題本質(zhì),從而簡化問題,控制問題復(fù)雜度,支持復(fù)雜、龐大軟件系統(tǒng)的開發(fā)。

軟件工程原則(3/6)信息隱藏模塊中的軟件設(shè)計(jì)決策信息封裝起來的技術(shù),只知道它的功能以及對外的接口,而不知它的內(nèi)部細(xì)節(jié)

有助于軟件開發(fā)人員的注意力集中于更高的抽象層次

軟件工程的原則(4/6)模塊化模塊是程序中一個(gè)邏輯上相對獨(dú)立、具有良好的接口定義的編程單位:過程、函數(shù)、類、程序包等模塊化是,將復(fù)雜的系統(tǒng)分解為一個(gè)個(gè)相對獨(dú)立的模塊來加以實(shí)現(xiàn),有助于抽象和信息隱藏以及表示復(fù)雜的系統(tǒng)軟件工程原則(5/6)局部化物理模塊內(nèi)集中邏輯上相互關(guān)聯(lián)的計(jì)算資源

確保模塊內(nèi)各成分關(guān)系密切而??熘g的關(guān)系松散,保證模塊具有良好的獨(dú)立性軟件工程原則(6/6)一致性整個(gè)軟件系統(tǒng)均使用統(tǒng)一的符號、概念和術(shù)語完全性整個(gè)軟件系統(tǒng)不丟失任何重要的成分,軟件完全實(shí)現(xiàn)系統(tǒng)所需的功能、行為和性能可驗(yàn)證性軟件系統(tǒng)應(yīng)易于檢查、測試和評審軟件工程的基本原理1983年,Boehm提出了軟件工程的七條基本原理七條原理互相獨(dú)立,缺一不可,并且相當(dāng)完備。軟件工程基本原理用分階段的生命周期計(jì)劃嚴(yán)格管理;

Boehm認(rèn)為,應(yīng)制定并嚴(yán)格執(zhí)行六類計(jì)劃:項(xiàng)目概要計(jì)劃、里程碑計(jì)劃、項(xiàng)目控制計(jì)劃、產(chǎn)品控制計(jì)劃、驗(yàn)證計(jì)劃、運(yùn)行維護(hù)計(jì)劃。堅(jiān)持進(jìn)行階段評審原因:(1)大部分錯(cuò)誤是在編碼前造成的(設(shè)計(jì)錯(cuò)誤63%,編碼錯(cuò)誤37%);(2)錯(cuò)誤發(fā)現(xiàn)越晚,所付出的代價(jià)越大。軟件工程基本原理實(shí)行嚴(yán)格的產(chǎn)品控制(1)軟件開發(fā)過程中不應(yīng)隨意改變需求,因?yàn)楦淖円豁?xiàng)需求往往需要付出較高的代價(jià)。(2)當(dāng)改變需求時(shí),為了保持軟件各個(gè)配置成分的一致性,必須實(shí)行嚴(yán)格的產(chǎn)品控制,其中主要是實(shí)行基準(zhǔn)配置管理(變動(dòng)控制)。(3)一切有關(guān)修改軟件的建議,特別是涉及到對基準(zhǔn)配置的修改建議,都必須按照嚴(yán)格的規(guī)程進(jìn)行評審,獲得批準(zhǔn)以后才能實(shí)施修改。軟件工程基本原理采用現(xiàn)代程序設(shè)計(jì)技術(shù)(1)60年代末提出了結(jié)構(gòu)程序設(shè)計(jì)技術(shù),已經(jīng)成為絕大多數(shù)人公認(rèn)的先進(jìn)的程序設(shè)計(jì)技術(shù)。(2)以后又進(jìn)一步發(fā)展出各種結(jié)構(gòu)分析(SA)與結(jié)構(gòu)設(shè)計(jì)(SD)技術(shù)。(3)80年代中期提出的面向?qū)ο蟪绦驅(qū)嶋H技術(shù)(4)實(shí)踐表明,采用先進(jìn)的技術(shù)既可提高軟件開發(fā)的效率,又可提高軟件維護(hù)的效率。軟件工程基本原理結(jié)果應(yīng)能清楚地審查(1)軟件產(chǎn)品不同于一般的物理產(chǎn)品,它是看不見摸不著的邏輯產(chǎn)品。(2)為了提高軟件開發(fā)過程的可見性,應(yīng)該根據(jù)軟件開發(fā)項(xiàng)目的總目標(biāo)及完成期限,規(guī)定開發(fā)組織的責(zé)任和產(chǎn)品標(biāo)準(zhǔn)軟件工程基本原理開發(fā)小組的人員應(yīng)該少而精(1)軟件開發(fā)小組的組成人員的素質(zhì)好,開發(fā)效率可能高幾倍至幾十倍,而且開發(fā)錯(cuò)誤少。(2)隨著開發(fā)小組人員數(shù)目的增加,因?yàn)榻涣髑闆r討論問題而造成的通信開銷會(huì)急劇增加。軟件工程基本原理承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性(1)僅有上述六條原理并不能保證軟件開發(fā)與維護(hù)的過程能趕上時(shí)代前進(jìn)的步伐,能跟上技術(shù)的不斷進(jìn)步。(2)不僅要積極主動(dòng)地采納新的軟件技術(shù),而且要注意不斷總結(jié)經(jīng)驗(yàn)。Question:

什么是軟件生存周期軟件產(chǎn)品從形成概念開始,經(jīng)過開發(fā)、使用和維護(hù),直到最后退役的全過程。軟件生存周期的劃分軟件定義軟件開發(fā)軟件使用與維護(hù)可行性研究、制定初步軟件項(xiàng)目計(jì)劃需求分析、制定需求規(guī)格說明詳細(xì)設(shè)計(jì)概要設(shè)計(jì)確認(rèn)測試組裝測試實(shí)現(xiàn)使用維護(hù)退役軟件生存周期

問題定義1.可行性研究任務(wù)

了解用戶要求和現(xiàn)實(shí)環(huán)境

從技術(shù)、經(jīng)濟(jì)、市場等方面研究并論證開發(fā)該軟件系統(tǒng)的可行性可行性研究

(2/3)技術(shù)可行性當(dāng)前的軟件開發(fā)方法和工具能否支持需求的實(shí)現(xiàn);操作可行性用戶能否在特定的環(huán)境下使用這個(gè)軟件;經(jīng)濟(jì)可行性開發(fā)和使用、維護(hù)這個(gè)軟件的成本能否被用戶所接受。可行性研究

(3/3)階段性產(chǎn)品可行性論證報(bào)告制定初步項(xiàng)目開發(fā)計(jì)劃(人員,進(jìn)度)問題定義2.需求分析任務(wù) 確定用戶對軟件系統(tǒng)的需求:功能需求軟件必須要完成的功能;性能需求軟件的安全性、可靠性、可維護(hù)性、精度、錯(cuò)誤處理、適應(yīng)性、用戶培訓(xùn)等;運(yùn)行環(huán)境約束待開發(fā)的軟件產(chǎn)品必須滿足的環(huán)境要求需求分析(2/4)重要性軟件開發(fā)的依據(jù),軟件驗(yàn)收的標(biāo)準(zhǔn)困難難以說清、

動(dòng)態(tài)變化、

歧義、復(fù)雜、應(yīng)用軟件的需求分析涉及應(yīng)用領(lǐng)域的知識(shí)和經(jīng)驗(yàn)。需求分析(3/4)需求分析過程需求分析人員必須與用戶不斷、反復(fù)地交流和商討,使用戶需求逐步準(zhǔn)確、一致、完全。方法

面向數(shù)據(jù)流的分析方法面向數(shù)據(jù)流的分析方法面向?qū)ο蟮姆治龇椒ǔ橄?、問題分解、快速原型、多視點(diǎn)等工具RationalRose,WitClass,VisualModel需求分析(4/4)階段性產(chǎn)品軟件需求規(guī)格說明書SRS用軟件需求規(guī)格說明語言描述軟件系統(tǒng)的功能需求、性能需求、接口需求、設(shè)計(jì)需求、軟件產(chǎn)品的基本結(jié)構(gòu)、采用的開發(fā)標(biāo)準(zhǔn)和驗(yàn)收原則等。用戶手冊概要。軟件開發(fā)1.概要設(shè)計(jì)任務(wù)根據(jù)SRS建立目標(biāo)軟件系統(tǒng)的總體結(jié)構(gòu)、設(shè)計(jì)全局?jǐn)?shù)據(jù)庫和數(shù)據(jù)結(jié)構(gòu),規(guī)定設(shè)計(jì)約束,制定組裝測試計(jì)劃等等。概要設(shè)計(jì)(2/3)方法根據(jù)軟件需求規(guī)格說明書,

自頂向下、逐步求精、

抽象、

模塊化、

局部化、信息隱藏…堅(jiān)持功能模塊內(nèi)部緊耦合,功能模塊之間松耦合的原則;堅(jiān)持與需求規(guī)格說明書的一致性概要設(shè)計(jì)(3/3)工具

面向數(shù)據(jù)流的設(shè)計(jì)方法結(jié)構(gòu)圖面向?qū)ο蟮脑O(shè)計(jì)方法RationalRose階段性產(chǎn)品概要設(shè)計(jì)規(guī)格說明書數(shù)據(jù)庫或數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)說明書集成測試計(jì)劃。詳細(xì)設(shè)計(jì)任務(wù)細(xì)化概要設(shè)計(jì)所生成的各個(gè)模塊,并詳細(xì)描述程序模塊的內(nèi)部細(xì)節(jié)(算法,數(shù)據(jù)結(jié)構(gòu)等),形成可編程的程序模塊,制訂單元測試計(jì)劃階段新產(chǎn)品詳細(xì)設(shè)計(jì)規(guī)格說明書,單元測試計(jì)劃實(shí)現(xiàn)(1/2)任務(wù)根據(jù)詳細(xì)設(shè)計(jì)規(guī)格說明書編寫源程序,并對程序進(jìn)行調(diào)試、單元測試、系統(tǒng)集成,驗(yàn)證程序與詳細(xì)設(shè)計(jì)文檔的一致性實(shí)現(xiàn)(2/2)方法以詳細(xì)設(shè)計(jì)規(guī)格說明書為依據(jù)、基于某種程序設(shè)計(jì)語言進(jìn)行編碼結(jié)構(gòu)化程序設(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì)工具VisualC++,VisualJava,etcIDE階段產(chǎn)品源程序代碼組裝測試任務(wù)

組裝測試應(yīng)滿足概要設(shè)計(jì)的要求。途徑測試模塊連接的正確性;測試系統(tǒng)或子系統(tǒng)的I/O;測試系統(tǒng)的功能和性能。產(chǎn)品滿足概要設(shè)計(jì)要求的程序、組裝測試報(bào)告。確認(rèn)測試

任務(wù)根據(jù)軟件需求規(guī)格說明書,測試軟件系統(tǒng)是否滿足用戶的需求

方法用戶參與,以軟件需求規(guī)格說明書為依據(jù)進(jìn)行確認(rèn)測試工具專用測試工具(如IBM的RationalTeststudio)

階段性產(chǎn)品可供用戶使用的軟件產(chǎn)品(文檔,源程序)軟件開發(fā)與測試的對應(yīng)關(guān)系可行性研究運(yùn)行

需求分析確認(rèn)測試

概要設(shè)計(jì)組裝測試詳細(xì)設(shè)計(jì)單元測試編碼與調(diào)試軟件開發(fā)模型瀑布模型原型模型螺旋模型其他模型瀑布模型典型瀑布模型具有順序性和依賴性瀑布模型具有維護(hù)循環(huán)的軟件生存期的瀑布模型瀑布模型的特征階段間具有順序性和依賴性1.必須等前一階段的工作完成之后,才能開始后一階段的工作;2.前一階段的輸出文檔就是后一階段的輸入文檔。推遲實(shí)現(xiàn)的觀點(diǎn)質(zhì)量保證的觀點(diǎn)1.每個(gè)階段都必須完成規(guī)定的文檔;2.每個(gè)階段結(jié)束前都要對所完成的文檔進(jìn)行評審。瀑布模型的缺點(diǎn)從認(rèn)識(shí)論角度看,人的認(rèn)識(shí)是一個(gè)多次反復(fù)循環(huán)的過程,不可能一次完成。但瀑布模型中劃分的幾個(gè)階段,沒有反映出這種認(rèn)識(shí)過程的反復(fù)性軟件開發(fā)是一個(gè)知識(shí)密集型的開發(fā)活動(dòng),需要相互合作完成,但瀑布模型沒有體現(xiàn)這一點(diǎn)原型模型原型模型的特征它是一個(gè)可實(shí)際運(yùn)行的系統(tǒng)。它沒有固定的生存期。從需求分析到最終產(chǎn)品都可作原型,即可為不同目標(biāo)作原型。它必須快速、廉價(jià)。它是迭代過程的集成部分,即每次經(jīng)用戶評價(jià)后修改、運(yùn)行,不斷重復(fù)雙方認(rèn)可。螺旋模型螺旋模型的特征在螺旋模型結(jié)構(gòu)中,維護(hù)只是螺旋模型的另一個(gè)周期,在維護(hù)和開發(fā)之間本質(zhì)上并沒有區(qū)別,從而解決了做太多測試或未作足夠測試所帶來的風(fēng)險(xiǎn)一般只適用于大規(guī)模軟件的開發(fā)變換模型

用于軟件的形式化開發(fā)方法,從軟件需求形式化說明開始,經(jīng)過一系列變換,最終得到系統(tǒng)的目標(biāo)程序需要嚴(yán)格的數(shù)學(xué)理論和一整套開發(fā)環(huán)境的支持目前形式化開發(fā)方法在理論、實(shí)踐和人員培訓(xùn)方面離工程應(yīng)用尚有一段距離噴泉模型噴泉模型特征噴泉模型是一種以用戶需求為動(dòng)力,以對象為驅(qū)動(dòng)的模型,主要用于描述面向?qū)ο蟮能浖_發(fā)過程軟件開發(fā)過程自下而上周期的各階段是相互重疊和多次反復(fù)的,就像水噴上去又可以落下來,類似一個(gè)噴泉。各個(gè)開發(fā)階段沒有特定的次序要求,并且可以交互進(jìn)行,可以在某個(gè)開發(fā)階段中隨時(shí)補(bǔ)充其他任何開發(fā)階段中的遺漏噴泉模型優(yōu)缺點(diǎn)優(yōu)點(diǎn):該模型的各個(gè)階段沒有明顯的界限,開發(fā)人員可以同步進(jìn)行開發(fā),可以提高軟件項(xiàng)目開發(fā)效率,節(jié)省開發(fā)時(shí)間,適應(yīng)于面向?qū)ο蟮能浖_發(fā)過程。缺點(diǎn)一:由于該模型在各個(gè)開發(fā)階段是重疊的,在開發(fā)過程中需要大量的開發(fā)人員,因此不利于項(xiàng)目的管理。缺點(diǎn)二:該模型要求嚴(yán)格管理文檔,使得審核的難度加大,尤其是面對可能隨時(shí)加入各種信息、需求與資料的情況?;谒拇夹g(shù)的模型組合模型Question:

什么是CASE?CASEComputerAidedSoftwareEngineering

計(jì)算機(jī)輔助軟件工程CASE工具事務(wù)系統(tǒng)規(guī)劃工具項(xiàng)目管理工具支撐工具分析和設(shè)計(jì)工具程序設(shè)計(jì)工具測試工具原型制造工具維護(hù)工具框架工具小結(jié)軟件工程是,采用系統(tǒng)的、規(guī)范的和可度量的方法支持軟件開發(fā)、運(yùn)行和維護(hù)的過程;軟件工程的目標(biāo)是,在給定成本、進(jìn)度的前提下開發(fā)出高質(zhì)量的、滿足用戶需求的軟件產(chǎn)品。過程、方法、工具的研究和應(yīng)用是軟件工程學(xué)科的核心;小結(jié)軟件工程是一門工程學(xué)科,涉及軟件生產(chǎn)的各個(gè)方面;過程、方法和工具構(gòu)成了軟件工程的全部內(nèi)容;軟件產(chǎn)品由開發(fā)的程序及相關(guān)文檔構(gòu)成;軟件產(chǎn)品的基本屬性是可維護(hù)性、可依賴性、有效性、可用性;軟件過程由開發(fā)軟件產(chǎn)品的一系列活動(dòng)組成?;镜幕顒?dòng)有:軟件描述、開發(fā)、有效性驗(yàn)證和進(jìn)化;小結(jié)軟件工程方法是軟件生產(chǎn)的組織方式,包括對軟件過程的建議、使用的標(biāo)記法、進(jìn)行系統(tǒng)描述的規(guī)律和設(shè)計(jì)指南;CASE工具是一些軟件系統(tǒng),支持軟件過程的常規(guī)活動(dòng),如編輯設(shè)計(jì)圖表、檢查圖表的連貫性、跟蹤已經(jīng)運(yùn)行的程序測試等;軟件工程人員對軟件工程這一職業(yè)和社會(huì)負(fù)有責(zé)任,不應(yīng)該只關(guān)心技術(shù)問題;職業(yè)協(xié)會(huì)頒布的行為準(zhǔn)則規(guī)定了協(xié)會(huì)成員應(yīng)該遵守的一系列行為標(biāo)準(zhǔn)。90內(nèi)容軟件度量軟件項(xiàng)目估算軟件質(zhì)量度量軟件復(fù)雜性度量軟件開發(fā)過程的管理CMM91軟件項(xiàng)目管理的目的為了使軟件項(xiàng)目能夠在預(yù)定成本、進(jìn)度、質(zhì)量的前提下順利完成,必須對軟件工程項(xiàng)目進(jìn)行計(jì)劃、組織、監(jiān)控和管理92軟件項(xiàng)目管理任務(wù)制定軟件項(xiàng)目的實(shí)施計(jì)劃和方案;對人員進(jìn)行組織和分工;按照計(jì)劃進(jìn)度,以及成本管理、風(fēng)險(xiǎn)管理、質(zhì)量管理的要求進(jìn)行軟件開發(fā),完成軟件項(xiàng)目的各項(xiàng)要求和任務(wù)。93Question:

什么是軟件項(xiàng)目管理?成本管理:估算軟件項(xiàng)目的成本,作為簽訂合同或項(xiàng)目立項(xiàng)的依據(jù);在軟件開發(fā)過程中按計(jì)劃管理經(jīng)費(fèi)的使用。質(zhì)量管理:制定軟件質(zhì)量保證計(jì)劃;按照軟件質(zhì)量評價(jià)體系控制軟件質(zhì)量要素;對階段性的軟件產(chǎn)品進(jìn)行評審;對最終產(chǎn)品進(jìn)行驗(yàn)證和確認(rèn),確保軟件產(chǎn)品的質(zhì)量。軟件配置管理:制定配置管理計(jì)劃;對程序、文檔和數(shù)據(jù)的各種版本進(jìn)行管理,確保軟件的完整性和一致性。94軟件項(xiàng)目管理特點(diǎn)管理在軟件工程項(xiàng)目中的地位和作用與其它工程項(xiàng)目一樣十分重要,必須對成本、人員、進(jìn)度、質(zhì)量、風(fēng)險(xiǎn)等進(jìn)行分析和管理。軟件產(chǎn)品是邏輯的,軟件項(xiàng)目的施工是開發(fā)小組集體的智力勞動(dòng),使用的開發(fā)工具是建立在計(jì)算機(jī)系統(tǒng)上的軟件。軟件很多屬性無法直接度量為軟件定量分析和項(xiàng)目管理增加困難。95軟件度量軟件度量的意義軟件度量的概念軟件規(guī)模度量軟件功能度量96度量、測量和估算(1/8)

度量(metrics)軟件度量是軟件產(chǎn)品、軟件開發(fā)過程或資源簡單屬性的定量描述。如程序規(guī)模、操作符個(gè)數(shù)、程序中錯(cuò)誤的個(gè)數(shù)等。97度量、測量和估算(2/8)測量measure對軟件開發(fā)過程、產(chǎn)品和資源進(jìn)行實(shí)時(shí)和事后的定量描述,涉及測量的要素、方法、過程、工具和數(shù)值結(jié)果。直接測量和間接測量直接測量用于不依賴于其它屬性的簡單屬性;間接測量用于依賴于若干其它屬性的要素、準(zhǔn)則和屬性。98度量、測量和估算(3/8)估算estimation對軟件產(chǎn)品、過程、資源進(jìn)行預(yù)測估算可以采用經(jīng)驗(yàn)公式、或參考?xì)v史資料估算用于事前簽訂合同、立項(xiàng)、制定工作計(jì)劃等99度量、測量和估算(4/8)軟件的外部屬性和內(nèi)部屬性外部屬性軟件產(chǎn)品、過程、資源與環(huán)境的關(guān)系如,成本、效益、勞動(dòng)生產(chǎn)率、可靠性、可維護(hù)性內(nèi)部屬性軟件產(chǎn)品、過程、資源、環(huán)境自身的屬性如,產(chǎn)品結(jié)構(gòu)、模塊化程度、復(fù)雜性、程序長度等。100度量、測量和估算(5/8)用戶和管理者關(guān)心外部屬性,但在開發(fā)過程中無法直接管理和控制。由于外部屬性是由內(nèi)部屬性決定的,因此必須建立外部屬性與內(nèi)部屬性的關(guān)系,并通過內(nèi)部屬性的度量去度量外部屬性。101度量、測量和估算(6/8)產(chǎn)品的內(nèi)部屬性程序代碼長度程序功能模塊化重用性控制流數(shù)據(jù)流模塊耦合度與內(nèi)聚度產(chǎn)品的外部屬性程序的可靠性可用性可維護(hù)性軟件的可理解性有效性可移植性

102度量、測量和估算(7/8)過程的內(nèi)部屬性工作量計(jì)劃和進(jìn)度一段時(shí)間內(nèi)某類事件發(fā)生的次數(shù)過程的外部屬性成本可控制性可觀察性穩(wěn)定性103度量、測量和估算(8/8)資源的內(nèi)部屬性人軟硬件環(huán)境方法經(jīng)驗(yàn)資源的外部屬性成本時(shí)間軟件度量分類:104Question:面向規(guī)模的度量?代碼行估算方法計(jì)算:軟件項(xiàng)目的生產(chǎn)率

Pl=L/E

其中L軟件項(xiàng)目代碼行數(shù)

E軟件項(xiàng)目工作量(人月PM)Pl軟件項(xiàng)目生產(chǎn)率(LOC/PM)代碼出錯(cuò)率

EQRl=Ne/L

其中Ne軟件項(xiàng)目的代碼錯(cuò)誤數(shù)

EQRl每千行代碼的錯(cuò)誤數(shù)105面向規(guī)模的度量-代碼行估算每行代碼平均成本

Cl=S/L

其中S軟件項(xiàng)目總開銷(元/美元)

Cl軟件項(xiàng)目每千行代碼的平均成本文檔與代碼比

Dl=Pd/L

其中Pd軟件項(xiàng)目文檔頁數(shù)

Dl每千行代碼的平均文檔數(shù)106例:軟件項(xiàng)目記錄項(xiàng)目工作量

PM成本萬美元代碼行kLOC文檔頁數(shù)

Pd錯(cuò)誤數(shù)

Ne人數(shù)

MAaa-012416.812.1365293Ccc-046244.027.21224865Fff-034331.420.21050646107代碼行估算軟件規(guī)模的優(yōu)缺點(diǎn)優(yōu)點(diǎn):簡單,容易實(shí)行缺點(diǎn):代碼行數(shù)的估算依賴于程序設(shè)計(jì)語言的功能和表達(dá)能力;采用代碼行估算方法會(huì)對設(shè)計(jì)精巧的軟件項(xiàng)目產(chǎn)生不利的影響;代碼行估算只適用于過程式程序設(shè)計(jì)語言,不太適用于非過程式的程序設(shè)計(jì)語言108Question:面向功能的度量?軟件功能點(diǎn)度量方法(三個(gè)步驟)FP=CT[0.65+0.01∑Fi](2-5)CT:5個(gè)信息量的加權(quán)和(表2.3)∑Fi:14個(gè)因素的復(fù)雜性調(diào)節(jié)值Fi取值0,1,...,5當(dāng)Fi=0時(shí),表示Fi不起作用

Fi=5時(shí),表示Fi作用最大109表2.3功能點(diǎn)度量

測量參數(shù)值權(quán)值用戶輸入數(shù)□*4=□用戶輸出數(shù)□*5=□用戶查詢數(shù)□*4=□文件數(shù)□*7=□外部界面數(shù)□*7=□CT=

□110面向功能的度量表2.3中的五個(gè)信息量按下列方式取值用戶輸入數(shù)用戶為軟件提供的輸入?yún)?shù)個(gè)數(shù)用戶輸出數(shù)軟件系統(tǒng)為用戶提供的輸出參數(shù)個(gè)數(shù)用戶查詢數(shù)一個(gè)聯(lián)機(jī)輸入確定一次查詢,軟件以聯(lián)機(jī)輸出的形式,實(shí)時(shí)地產(chǎn)生一個(gè)響應(yīng)文件數(shù)統(tǒng)計(jì)邏輯的主文件個(gè)數(shù)外部界面數(shù)統(tǒng)計(jì)所有機(jī)器可讀的界面,利用這些界面可以將信息從一個(gè)系統(tǒng)傳送到另一個(gè)系統(tǒng)111面向功能的度量用功能點(diǎn)定義的概念生產(chǎn)率

Pf=FP/E

其中Pf表示每人月完成的功能點(diǎn)數(shù)112面向功能的度量軟件規(guī)模的功能點(diǎn)度量沒有直接涉及軟件系統(tǒng)本身的算法復(fù)雜性。1986年Jones把軟件項(xiàng)目中的算法復(fù)雜性因素引入到功能點(diǎn)計(jì)算中來,為了避免混淆,我們把Albrecht定義的功能點(diǎn)稱為簡單功能點(diǎn),用FPs表示,把Jones推廣的功能點(diǎn)稱為功能點(diǎn),用FP表示。推廣的功能點(diǎn)包括計(jì)算機(jī)程序中用于各類問題求解的算法因素,如求解線性代數(shù)方程組、遍歷二叉樹的各個(gè)結(jié)點(diǎn)、處理中斷等等。功能點(diǎn)計(jì)算仍用公式(2—5),其中CT按表2.5計(jì)算。113表2.5功能點(diǎn)度量測量參數(shù)值權(quán)值用戶輸入數(shù)□*4=□用戶輸出數(shù)□*5=□用戶查詢數(shù)□*4=□文件數(shù)□*7=□外部界面數(shù)□*7=□算法□*3=□CT=

□114

面向功能的度量對一般的工程計(jì)算或事務(wù)處理軟件,用表2.3和表2.5兩種方法計(jì)算出來的FP值應(yīng)該基本上相同對于比較復(fù)雜的軟件系統(tǒng)

FP比FPs的值高20%~35%

115功能點(diǎn)度量方法的優(yōu)缺點(diǎn)優(yōu)點(diǎn):與程序設(shè)計(jì)語言無關(guān),適用于過程式與非過程式語言;功能點(diǎn)度量能適用于軟件項(xiàng)目的開發(fā)初期;缺點(diǎn):涉及到的主觀因素比較多,如各種權(quán)函數(shù)的取值;信息領(lǐng)域中的某些數(shù)據(jù)有時(shí)不容易采集;FP的值沒有直觀的物理意義。116代碼行度量與功能點(diǎn)度量的比較代碼行度量依賴于程序設(shè)計(jì)語言,而功能點(diǎn)度量不依賴于程序設(shè)計(jì)語言。Albrecht和Jones等人對若干軟件采用事后處理的方式分別統(tǒng)計(jì)出不同程序設(shè)計(jì)語言每個(gè)功能點(diǎn)與代碼行數(shù)的關(guān)系,用LOC/FP的平均值表示。表2.6表明,一行Ada語言代碼的“功能”平均是一行FORTRAN語言代碼“功能”的1.4倍。一行四代語言代碼的“功能”平均是一行傳統(tǒng)程序設(shè)計(jì)語言代碼“功能”的3至5倍。117表2.6各種語言的LOC/FP(平均值)程序設(shè)計(jì)語言LOC/FP(平均值)匯編語言300COBOL100FORTRAN100Pascal90Ada70面向?qū)ο蟮恼Z言30四代語言(4GL)20代碼生成器15

118軟件項(xiàng)目估算當(dāng)前在基于計(jì)算機(jī)的系統(tǒng)中,軟件開發(fā)成本占總成本的比例很大。在軟件項(xiàng)目立項(xiàng)和軟件項(xiàng)目管理工作中,客戶和項(xiàng)目管理人員都十分重視軟件項(xiàng)目的成本估算。軟件是邏輯產(chǎn)品,成本估算涉及人、技術(shù)、環(huán)境、政策等多種因素,在項(xiàng)目完成之前,很難精確地估算出項(xiàng)目的開銷。119軟件項(xiàng)目估算方法參照已經(jīng)完成的類似項(xiàng)目將大的項(xiàng)目分解成若干小的子項(xiàng)目將軟件項(xiàng)目按軟件生存周期分解根據(jù)實(shí)驗(yàn)或歷史數(shù)據(jù)給出軟件項(xiàng)目工作量或成本的經(jīng)驗(yàn)估算公式120代碼行、功能點(diǎn)和工作量估算軟件項(xiàng)目的規(guī)模是影響軟件項(xiàng)目成本和工作量的重要因素。軟件項(xiàng)目代碼行和功能點(diǎn)估算是成本和工作量估算的基礎(chǔ)。采用上述四種估算方法可以估算出LOC或FP的樂觀值a,悲觀值b和一般值m,然后根據(jù)下列加權(quán)公式計(jì)算出期望值

e=(a+4m+b)/6(2-10)

希望LOC或FP的值落在區(qū)間[a,b]之外的概率極小121代碼行、功能點(diǎn)和工作量估算當(dāng)LOC或FP的期望值估算出來之后,根據(jù)以前軟件項(xiàng)目開發(fā)的平均生產(chǎn)率LOC/PM或FP/PM就可以計(jì)算出工作量。如,軟件項(xiàng)目的規(guī)模估算為310FP,以前完成的軟件項(xiàng)目的生產(chǎn)率為5.5FP/PM,于是工作量估算為E=310/5.5=56PM。如果當(dāng)前估算的軟件子項(xiàng)目比以前完成的項(xiàng)目復(fù)雜,那么所用的生產(chǎn)率值可以低于平均生產(chǎn)率,反之也可以高于平均生產(chǎn)率。122經(jīng)驗(yàn)估算模型之一CoCoMo模型計(jì)算機(jī)軟件的估算模型是根據(jù)以前完成項(xiàng)目的實(shí)際數(shù)據(jù)導(dǎo)出的,用于軟件項(xiàng)目的計(jì)劃階段。模型是根據(jù)“從前的”,“局部的”數(shù)據(jù)得出的,估算模型不可能完全適用于當(dāng)前所有的軟件項(xiàng)目和全部開發(fā)環(huán)境。這些模型的計(jì)算結(jié)果僅供參考。兩個(gè)常用的估算模型

CoCoMo模型Putnam模型123

CoCoMo模型1981年Boehm提出“構(gòu)造性成本模型”(ConstructiveCostModel),簡稱CoCoMo模型。它是在靜態(tài)、單變量模型的基礎(chǔ)上構(gòu)造出來的。

CoCoMo模型分為基本、中間、詳細(xì)三個(gè)層次,分別用于軟件開發(fā)的三個(gè)不同階段。124

CoCoMo模型基本CoCoMo模型用于系統(tǒng)開發(fā)的初期,估算整個(gè)系統(tǒng)的工作量(包括軟件維護(hù))和軟件開發(fā)所需要的時(shí)間。中間CoCoMo模型用于估算各個(gè)子系統(tǒng)的工作量和開發(fā)時(shí)間。詳細(xì)CoCoMo模型用于估算獨(dú)立的軟部件,如子系統(tǒng)內(nèi)部的各個(gè)模塊。125基本CoCoMo模型靜態(tài)、單變量模型

E=aLb(2-11)D=cEd(2-12)其中:E表示工作量,單位是人月(PM)。D表示開發(fā)時(shí)間,單位是月(M)。L是項(xiàng)目的代碼行估計(jì)值,單位是千行代碼

a,b,c,d是常數(shù),取值如表2.9所示。126

表2.9基本CoCoMo模型參數(shù)軟件類型abcd適用范圍組織型2.41.052.50.38各類應(yīng)用程序半獨(dú)立型3.01.122.50.35各類實(shí)用程序、編譯程序等嵌入型3.61.202.50.32實(shí)時(shí)處理、控制程序、操作系統(tǒng)127中間CoCoMo模型中間CoCoMo模型以基本CoCoMo模型為基礎(chǔ),在工作量估計(jì)公式中乘以工作量調(diào)節(jié)因子EAFE=aLb*EAF

(2-13)其中:L是軟件產(chǎn)品的目標(biāo)代碼行數(shù)

a,b是常數(shù),取值如表2.10所示。128中間CoCoMo模型表2.10中間CoCoMo模型參數(shù)軟件類型ab

組織型3.21.05半獨(dú)立型3.01.12嵌入型2.81.20129

中間CoCoMo模型工作量調(diào)節(jié)因子與軟件產(chǎn)品屬性、計(jì)算機(jī)屬性、人員屬性、項(xiàng)目屬性有關(guān)軟件產(chǎn)品屬性軟件可靠性、軟件復(fù)雜性、數(shù)據(jù)庫的規(guī)模。計(jì)算機(jī)屬性程序執(zhí)行時(shí)間、程序占用內(nèi)存的大小、軟件開發(fā)環(huán)境的變化、軟件開發(fā)環(huán)境的響應(yīng)速度。人員屬性分析員的能力、程序員的能力、有關(guān)應(yīng)用領(lǐng)域的經(jīng)驗(yàn)、開發(fā)環(huán)境的經(jīng)驗(yàn)、程序設(shè)計(jì)語言的經(jīng)驗(yàn)項(xiàng)目屬性軟件開發(fā)方法的能力,軟件工具的質(zhì)量和數(shù)量、軟件開發(fā)的進(jìn)度要求。130中間CoCoMo模型四種屬性共15個(gè)要素。每個(gè)要素調(diào)節(jié)因子Fi,i=1,2,...,15,的值分為:很低、低、正常、高、很高、極高,共六級。正常情況下Fi=1。Boehm推薦的Fi值范圍

(0.70,0.85,1.00,1.15,1.30,1.65)

當(dāng)15個(gè)Fi的值選定后,EAF的計(jì)算如下

EAF=F1*F2*……*F15

131中間CoCoMo模型

調(diào)節(jié)因子集的定義和調(diào)節(jié)因子定值是由統(tǒng)計(jì)結(jié)果和經(jīng)驗(yàn)決定的。不同的軟件開發(fā)組織,在不同的歷史時(shí)期,隨著環(huán)境的變化,這些數(shù)據(jù)可能改變。132例2.3用基本CoCoMo模型估算例2.2工作量、開發(fā)時(shí)間和項(xiàng)目開發(fā)人數(shù)在例2.2中,目標(biāo)代碼行數(shù)為33.3KLOCCAD軟件開發(fā)屬于中等規(guī)模、半獨(dú)立型從表2.9中查到a=3.0,b=1.12。代入公式(2-11)

E=3.0*L1.12=3.0*33.31.12=152PM133例2.3用基本CoCoMo模型估算例2.2將E的估算值代入公式(2-12)取C=2.5d=0.35D=2.5*E0.35=2.5*1520.35=14.5M

建議參加項(xiàng)目開發(fā)的人數(shù)

N=E/D=152/14.5≈11Notice:盲目增加程序員人數(shù)會(huì)推遲軟件完成的日期134CoCoMo模型例中計(jì)算出來的11人是粗略估計(jì)在軟件項(xiàng)目開發(fā)過程中,11個(gè)人不可能都有相同的能力和個(gè)性,相同的經(jīng)驗(yàn)和知識(shí)結(jié)構(gòu),并且在軟件開發(fā)的各個(gè)階段對人的要求也不同。135人員和工作量之間的關(guān)系十個(gè)人年工作量的項(xiàng)目不可能由一個(gè)人干十年,但十個(gè)人干一年也無法完成任務(wù),因?yàn)槭畟€(gè)人的任務(wù)組需要交流的開銷;項(xiàng)目后期增加人員還需要增加培訓(xùn)的工作量,可能會(huì)使項(xiàng)目的交付日期一托再托;項(xiàng)目工作人員的數(shù)量和項(xiàng)目整體生產(chǎn)率之間的關(guān)系不是線性的。136

CoCoMo模型若干人共同開發(fā)一個(gè)軟件項(xiàng)目還應(yīng)該增加他們之間相互通信和交換意見的額外工作量。

設(shè)

N個(gè)程序員組成小組,實(shí)現(xiàn)相同規(guī)模的程序,相互通信數(shù)為

C=N(N-1)/2

每次通信和交換意見的平均工作量為μ

則增加的通信開銷為

Ec=μN(yùn)(N-1)/2(2-14)137

CoCoMo模型由N個(gè)程序員組成的小組共同開發(fā)一個(gè)程序總的工作量ET滿足

ET=E+Ec程序員小組的生產(chǎn)率是

PG=LOC/(E+Ec)

程序員小組生產(chǎn)率和單個(gè)程序員生產(chǎn)率的比為

Rp=E/(E+Ec)

隨著程序員小組人數(shù)的增加Ec≈μN(yùn)*N/2,程序員小組的生產(chǎn)率將會(huì)下降。模型表明

盲目增加程序員人數(shù)會(huì)推遲軟件完成的日期138

CoCoMo模型

以靜態(tài)單變量CoCoMo模型為基礎(chǔ),還可以定義估算資源R的靜態(tài)多變量模型

R=∑ai*ei**bi

其中:ei表示軟件第i個(gè)特性

ai,bi是與軟件第i個(gè)特性有關(guān)的常數(shù),通常由實(shí)驗(yàn)數(shù)據(jù)確定。

139經(jīng)驗(yàn)估算模型之二:Putnam模型

1978年,Putnam提出了大型軟件項(xiàng)目工作量(一般在30人年以上)估算模型。它是一個(gè)動(dòng)態(tài)多變量模型,適用于軟件開發(fā)的各個(gè)階段,估算模型以大型軟件項(xiàng)目的實(shí)測數(shù)據(jù)為基礎(chǔ),導(dǎo)出工作量分布曲線,該曲線與Rayleigh-Norden曲線形狀比較相似140大型軟件項(xiàng)目的工作量分布141

Putnam模型該模型描述了開發(fā)工作量,開發(fā)時(shí)間和軟件代碼行數(shù)之間的關(guān)系:

L=CKE1/3td4/3其中:L表示源程序代碼行數(shù)

td表示開發(fā)時(shí)間

Ck表示技術(shù)狀態(tài)常數(shù)

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

Putnam模型-Ck的確定差的軟件開發(fā)環(huán)境軟件開發(fā)沒有方法學(xué)的支持,缺乏對文檔的評審,采用批處理方式。一般的軟件開發(fā)環(huán)境應(yīng)有軟件開發(fā)方法學(xué)的支持,有適宜的文檔和評審,采用交互處理方式。好的軟件開發(fā)環(huán)境應(yīng)采用CASE工具和集成化CASE環(huán)境。

CK=2000比較差的軟件開發(fā)環(huán)境8000一般的軟件開發(fā)環(huán)境11000比較好的軟件開發(fā)環(huán)143軟件開發(fā)過程人員與時(shí)間的關(guān)系144Putnam模型的啟示軟件開發(fā)項(xiàng)目的工作量隨著時(shí)間t的增長并不呈線性增長趨勢。參加軟件項(xiàng)目開發(fā)的人員數(shù)目不應(yīng)該是一成不變的。如果按照線性分布方案配備人員,即每年的人數(shù)是常數(shù)。那么起始段一部分人力是多余的,而峰值段人力又不夠,到項(xiàng)目后期再增加人力為時(shí)已晚,造成浪費(fèi)。由于人力調(diào)度的不合理,不得不延長項(xiàng)目開發(fā)時(shí)間,增加一部分額外工作量。145Putnam模型的缺點(diǎn)它沒有反映軟件產(chǎn)品屬性,軟件項(xiàng)目屬性、軟件開發(fā)人員屬性,計(jì)算機(jī)軟硬件資源屬性等用Putnam模型進(jìn)行軟件項(xiàng)目的成本估算是十分粗糙的146軟件質(zhì)量軟件質(zhì)量是軟件的生命,它直接影響軟件的使用與維護(hù)。質(zhì)量低下的軟件不但影響基于計(jì)算機(jī)系統(tǒng)的工作效率,而且還可能給用戶帶來災(zāi)難性的后果。提高軟件產(chǎn)品質(zhì)量是軟件工程的首要任務(wù)。軟件開發(fā)人員、管理人員、維護(hù)人員和用戶在軟件開發(fā)、維護(hù)、使用過程中所處地位不同,對軟件質(zhì)量的理解和要求也不同。147軟件質(zhì)量管理人員關(guān)心軟件開發(fā)標(biāo)準(zhǔn),在經(jīng)費(fèi)和時(shí)間允許的情況下,如何實(shí)現(xiàn)軟件需求規(guī)格說明中定義的功能維護(hù)人員重視軟件的正確性,可理解性和可修改性用戶更關(guān)心軟件的性能和可靠性等等

因此應(yīng)該對軟件質(zhì)量給出一個(gè)客觀的、科學(xué)的定義并盡量予以量化。148Question:什么是軟件質(zhì)量?1983年ANSI/IEEEstd729給出的定義:軟件產(chǎn)品滿足規(guī)定的和隱含的與需求能力有關(guān)的全部特征和特性,包括:軟件產(chǎn)品質(zhì)量滿足用戶要求的程度;軟件各種屬性的組合程度;用戶對軟件產(chǎn)品的綜合反映程度;軟件在使用過程中滿足用戶要求的程度。149軟件度量軟件質(zhì)量依賴于軟件的內(nèi)部特性及其組合為了對軟件質(zhì)量進(jìn)行度量,必須對影響軟件質(zhì)量的要素進(jìn)行度量,并建立實(shí)用的軟件質(zhì)量度量體系或模型150軟件質(zhì)量度量-發(fā)展1968年Rubey和Hartwick提出了軟件某些屬性的度量方法1976年Boehm提出了定量評價(jià)軟件質(zhì)量的概念,給出了60個(gè)軟件質(zhì)量度量公式和軟件質(zhì)量度量的層次模型151軟件質(zhì)量度量-發(fā)展1978年Walters和McCall提出了包括質(zhì)量要素(factor)、準(zhǔn)則(criteria)和度量(metric)的三層次軟件質(zhì)量度量模型G.Murine又提出了軟件質(zhì)量度量技術(shù)SQM用于定量地評價(jià)軟件質(zhì)量1985年國際標(biāo)準(zhǔn)化組織(ISO)提出了軟件質(zhì)量度量(SQM)工作報(bào)告152McCall的軟件質(zhì)量度量模型

質(zhì)量要素(factor)評價(jià)準(zhǔn)則(criteria)度量(metric)153軟件質(zhì)量要素軟件質(zhì)量要素直接影響軟件開發(fā)過程各個(gè)階段的產(chǎn)品質(zhì)量由于對軟件質(zhì)量理解的不斷深化,軟件質(zhì)量要素不是一成不變的McCall等人給出的軟件質(zhì)量要素共11個(gè),分為三類。154McCall的軟件質(zhì)量要素軟件的運(yùn)行特征正確性可靠性有效性完整性可用性軟件承受修改的能力可維護(hù)性靈活性可測試性軟件對新環(huán)境的適應(yīng)程度可移植性可重用性連接性

155軟件的屬性(續(xù))正確性(Correctness):程序滿足規(guī)格說明及完成用戶目標(biāo)的程度。

完整性(Integrity):控制未被授權(quán)人員訪問程序和數(shù)據(jù)的程度。可用性(Usability):學(xué)習(xí)使用軟件的難易程度。包括:操作軟件、為軟件準(zhǔn)備輸入數(shù)據(jù),解釋軟件輸出結(jié)果。156軟件的屬性(續(xù))靈活性(Flexibility)

改變一個(gè)操作程序所需的工作量??蓽y試性(Testability)

測試程序使之具有預(yù)定功能所需的工作量。連接性(Interoperability)

兩個(gè)或多個(gè)系統(tǒng)交換信息并相互使用已交換信息的能力。157

軟件質(zhì)量要素之間的關(guān)系軟件質(zhì)量要素之間有正相關(guān),也有負(fù)相關(guān)。系統(tǒng)設(shè)計(jì)過程中應(yīng)根據(jù)具體情況對各種要素的要求進(jìn)行折衷,以便得到在總體上用戶和系統(tǒng)開發(fā)人員都滿意的質(zhì)量標(biāo)準(zhǔn)。實(shí)時(shí)控制系統(tǒng)的可靠性、有效性是決定系統(tǒng)成敗的關(guān)鍵要素,必須全力保證,而軟件的可移植性、可重用性就不是主要的了。通用軟件工具對可維護(hù)性、可移植性、可重用性應(yīng)該給予更多的注意158軟件質(zhì)量要素評價(jià)準(zhǔn)則直接測量軟件質(zhì)量要素十分困難,甚至是不可能的,McCall等人定義了一組比較容易度量的軟件質(zhì)量要素評價(jià)準(zhǔn)則,通過評價(jià)準(zhǔn)則間接測量軟件質(zhì)量要素。定義評價(jià)準(zhǔn)則的關(guān)鍵是確定影響軟件質(zhì)量要素的屬性。這些屬性必須滿足①比較完整、準(zhǔn)確的描述軟件質(zhì)量要素;②比較容易量化和測量,能夠反映軟件質(zhì)量的優(yōu)劣159McCall的評價(jià)準(zhǔn)則(21種)可審查性準(zhǔn)確性通信通用性完全性簡明性一致性數(shù)據(jù)通用性容錯(cuò)性執(zhí)行效率可擴(kuò)充性通用性硬件獨(dú)立性檢測性模塊化可操作性安全性自文檔化簡單性軟件系統(tǒng)獨(dú)立性可追蹤性易培訓(xùn)性160McCall軟件質(zhì)量要素評價(jià)準(zhǔn)則(1/6)可審查性(Auditability)

檢查軟件需求、規(guī)格說明、標(biāo)準(zhǔn)、過程、指令、代碼及合同是否一致的難易程度。準(zhǔn)確性(Accuracy)

計(jì)算和控制的精度,最好表示成相對誤差的函數(shù),值越大表示精度越高。通信通用性(CommunicationCommonality)

使用標(biāo)準(zhǔn)接口、協(xié)議和頻帶的程度。161McCall軟件質(zhì)量要素評價(jià)準(zhǔn)則(2/6)完全性(Completeness)見1.2簡明性(Conciseness)程序源代碼的緊湊性。一致性(Consistency)見1.2數(shù)據(jù)通用性(DataCommonality)在程序中使用標(biāo)準(zhǔn)的數(shù)據(jù)結(jié)構(gòu)和類型。162McCall軟件質(zhì)量要素評價(jià)準(zhǔn)則(3/6)容錯(cuò)性(Error

tolerance)

系統(tǒng)在各種異常條件下提供繼續(xù)操作的能力執(zhí)行效率(ExecutionEfficiency)

程序運(yùn)行效率可擴(kuò)充性(Expandability)

能夠?qū)Y(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)和過程設(shè)計(jì)進(jìn)行擴(kuò)充的程度通用性(Generality)

程序部件潛在的應(yīng)用范圍的廣泛性163McCall軟件質(zhì)量要素評價(jià)準(zhǔn)則(4/6)硬件獨(dú)立性(HardwareIndependence)

軟件同支持它運(yùn)行的硬件系統(tǒng)不相關(guān)的程度。檢測性(Instrumentation)

監(jiān)視程序的運(yùn)行,一旦發(fā)生錯(cuò)誤時(shí),標(biāo)識(shí)錯(cuò)誤的程度。模塊化(Modularity)見1.2可操作性(Operability)

操作一個(gè)軟件的難易程度。164McCall軟件質(zhì)量要素評價(jià)準(zhǔn)則(5/6)安全性(Security)

控制或保護(hù)程序和數(shù)據(jù)不受破壞的機(jī)制,以防止程序和數(shù)據(jù)受到意外的或蓄意的存取、使用、修改、毀壞或泄密。自文檔化(Self-documentation)

源代碼提供有意義文檔的程度。簡單性(Simplicity)

理解程序的難易程度。165McCall軟件質(zhì)量要素評價(jià)準(zhǔn)則(6/6)軟件系統(tǒng)獨(dú)立性(SoftwareSystemIndependence)

程序與非標(biāo)準(zhǔn)的程序設(shè)計(jì)語言特征、操作系統(tǒng)特征、以及其他環(huán)境約束無關(guān)的程度??勺粉櫺?Tracebility)見1.2易培訓(xùn)性(Training)

軟件支持新用戶使用該系統(tǒng)的能力。166Mcall的軟件質(zhì)量度量模型軟件質(zhì)量要素Fj的值可用下式計(jì)算

LFj=∑CjkMkj=1,2,...,11.

k=1其中Mk是軟件質(zhì)量要素Fj對第k種評價(jià)準(zhǔn)則的測量值

Cjk是相應(yīng)的加權(quán)系數(shù).滿足∑Cjk=1并且Cjk≥0當(dāng)質(zhì)量要素Fj與k項(xiàng)評價(jià)準(zhǔn)則無關(guān)時(shí),Cjk=0

McCall定義的評價(jià)準(zhǔn)則多數(shù)都沒有客觀的測量方法,只能憑主觀印象為評價(jià)準(zhǔn)則定值。McCall將評價(jià)準(zhǔn)則分為0--10級:0級最低,10級最高。

Mk的取值是0,0.1,0.2,…,1.0167軟件質(zhì)量的FURPS度量1987年Hewlett-Packard提出一組被稱之為FURPS的軟件質(zhì)量要素。這組要素由功能性(Functionality)、可用性(Usability)、可靠性(Reliability)、性能(Performance)和可支撐性(Supportability)組成。Grad和Caswell給出了以調(diào)查報(bào)告/規(guī)格說明、設(shè)計(jì)、實(shí)現(xiàn)、測試、支撐為行,以上述要素為列的5行5列矩陣,通過對矩陣元素的度量導(dǎo)出軟件開發(fā)過程和軟件產(chǎn)品質(zhì)量要素的FURPS度量。168FURPS軟件貭量要素要素關(guān)系準(zhǔn)則功能性可用性可靠性性能可支撐性論證報(bào)告/規(guī)格說明設(shè)計(jì)實(shí)現(xiàn)測試支撐環(huán)境169ISOvs.McCall三層軟件質(zhì)量度量模型軟件質(zhì)量需求評價(jià)準(zhǔn)則vs.要素軟件質(zhì)量設(shè)計(jì)評價(jià)準(zhǔn)則vs.評價(jià)準(zhǔn)則軟件質(zhì)量度量評價(jià)準(zhǔn)則vs.度量170軟件復(fù)雜性度量軟件復(fù)雜性及度量原則控制結(jié)構(gòu)的復(fù)雜性度量文本復(fù)雜性度量171軟件復(fù)雜性及度量原則開發(fā)規(guī)模相同、復(fù)雜性不同的軟件,花費(fèi)的時(shí)間和成本會(huì)有很大差異。K.Magel從六個(gè)方面描述了軟件復(fù)雜性172K.Magel的軟件復(fù)雜性描述

①理解程序的難度;②糾錯(cuò)、維護(hù)程序的難度;③向他人解釋程序的難度;④按指定方法修改程序的難度;⑤根據(jù)設(shè)計(jì)文件編寫程序的工作量;⑥執(zhí)行程序時(shí)需要資源的程度。它反映了軟件的可理解性、模塊性、簡潔性等屬性。173軟件復(fù)雜性度量的原則(1/2)1.軟件復(fù)雜性與程序大小的關(guān)系不是線性的;2.控制結(jié)構(gòu)復(fù)雜的程序較復(fù)雜;3.數(shù)據(jù)結(jié)構(gòu)復(fù)雜的程序較復(fù)雜;4.轉(zhuǎn)向語句使用不當(dāng)?shù)某绦蜉^復(fù)雜;5.循環(huán)結(jié)構(gòu)比選擇結(jié)構(gòu)復(fù)雜;選擇結(jié)構(gòu)又比順序結(jié)構(gòu)復(fù)雜;6.語句、數(shù)據(jù)、子程序和模塊在程序中的次序?qū)?fù)雜性有影響;174軟件復(fù)雜性度量的原則(2/2)7.全程變量、非局部變量較多時(shí),程序較復(fù)雜;8.參數(shù)按地址調(diào)用比按值調(diào)用復(fù)雜;9.函數(shù)副作用比顯式參數(shù)傳遞難于理解;10.具有不同作用的變量共用一個(gè)名字時(shí)較難理解;11.模塊間、過程間聯(lián)系密切的程序比較復(fù)雜;12.嵌套越深程序越復(fù)雜。175控制結(jié)構(gòu)的復(fù)雜性度量程序控制結(jié)構(gòu)圖

程序結(jié)構(gòu)對應(yīng)于有一個(gè)入口結(jié)點(diǎn)和一個(gè)出口結(jié)點(diǎn)的有向圖圖中每個(gè)結(jié)點(diǎn)對應(yīng)一個(gè)語句或一個(gè)順序流程的程序代碼塊弧對應(yīng)于程序中的轉(zhuǎn)移由入口結(jié)點(diǎn)可以到達(dá)圖中每個(gè)結(jié)點(diǎn),并且從圖中每個(gè)結(jié)點(diǎn)都可以到達(dá)出口結(jié)點(diǎn)176控制結(jié)構(gòu)的復(fù)雜性度量

McCabe用程序控制結(jié)構(gòu)圖的巡回秩數(shù)V(G)作為程序結(jié)構(gòu)復(fù)雜性的度量

V(G)=e-n+2

其中:e為結(jié)構(gòu)圖的邊數(shù)

n為結(jié)構(gòu)圖的結(jié)點(diǎn)數(shù)可以證明V(G)等于結(jié)構(gòu)圖中有界或無界的封閉區(qū)域個(gè)數(shù)177例計(jì)算程序控制結(jié)構(gòu)的V(G)值E=1E=3N=2N=3V=1V=2178計(jì)算程序控制結(jié)構(gòu)的V(G)值E=4E=3N=4N=3V=2V=2179控制結(jié)構(gòu)的復(fù)雜性度量McCabe建議把V(G)作為模塊規(guī)模的定量指標(biāo),一個(gè)模塊V(G)的值不要大于10當(dāng)V(G)>10時(shí),模塊內(nèi)部結(jié)構(gòu)就會(huì)變得復(fù)雜,給編碼和測試帶來困難。

180文本復(fù)雜性度量M.Halstead用下式定義程序量

V=Nlog2(n1+n2)其中n1為程序中不同操作符的個(gè)數(shù)

n2為程序中不同操作數(shù)的個(gè)數(shù)

N1為程序中操作符的個(gè)數(shù)

N2為程序中操作數(shù)的個(gè)數(shù)N=N1+N2它反映了程序在“詞匯”上的復(fù)雜性。181軟件開發(fā)過程管理風(fēng)險(xiǎn)分析進(jìn)度安排軟件開發(fā)標(biāo)準(zhǔn)軟件質(zhì)量保證軟件開發(fā)人員的組織與分工軟件項(xiàng)目的開發(fā)過程管理182風(fēng)險(xiǎn)分析--風(fēng)險(xiǎn)的概念風(fēng)險(xiǎn)與將要發(fā)生的事情有關(guān),研究風(fēng)險(xiǎn)就是研究明天將要發(fā)生的事情風(fēng)險(xiǎn)涉及思想、觀念、行為、地點(diǎn)、時(shí)間等多種因素風(fēng)險(xiǎn)隨條件的變化而改變,人們通過改變、選擇、控制與風(fēng)險(xiǎn)密切相關(guān)的條件減少、回避風(fēng)險(xiǎn)改變、選擇、控制條件的策略是不確定的183風(fēng)險(xiǎn)分析-對待風(fēng)險(xiǎn)的態(tài)度被動(dòng)從不擔(dān)心發(fā)生任何問題,問題發(fā)生后再做出反應(yīng)。軟件項(xiàng)目組對存在的風(fēng)險(xiǎn)不聞不問,直到出了問題才趕緊采取措施,當(dāng)種種努力失敗后,項(xiàng)目處于真正的危機(jī)之中。主動(dòng)項(xiàng)目開始時(shí)就預(yù)測、標(biāo)識(shí)項(xiàng)目存在的各種風(fēng)險(xiǎn),評估風(fēng)險(xiǎn)發(fā)生的概率和影響的大小並按重要性進(jìn)行排序;項(xiàng)目組建立風(fēng)險(xiǎn)管理計(jì)劃和意外事件處理計(jì)劃,以便預(yù)防風(fēng)險(xiǎn),及時(shí)處理突發(fā)事件184風(fēng)險(xiǎn)分析-風(fēng)險(xiǎn)類別項(xiàng)目風(fēng)險(xiǎn):項(xiàng)目在預(yù)算、進(jìn)度、人力、資源、顧客和需求等方面的原因?qū)浖?xiàng)目產(chǎn)生的不良影響;技術(shù)風(fēng)險(xiǎn):項(xiàng)目在設(shè)計(jì)、實(shí)現(xiàn)、接口、驗(yàn)證和維護(hù)過程中可能發(fā)生的潛在問題對項(xiàng)目帶來的危害;商業(yè)風(fēng)險(xiǎn):開發(fā)了一個(gè)沒人需要的優(yōu)質(zhì)軟件,開發(fā)的產(chǎn)品不符合公司的產(chǎn)品銷售戰(zhàn)略等。185Question:以下情況分別屬于哪種風(fēng)險(xiǎn)?開發(fā)的產(chǎn)品沒有銷路沒能夠在預(yù)定的時(shí)間內(nèi)完成任務(wù)開發(fā)環(huán)境的更改186軟件工程的風(fēng)險(xiǎn)187風(fēng)險(xiǎn)標(biāo)識(shí)對侍風(fēng)險(xiǎn)不能采取回避態(tài)度項(xiàng)目開始時(shí)應(yīng)對一般性風(fēng)險(xiǎn)和特定產(chǎn)品風(fēng)險(xiǎn)進(jìn)行系統(tǒng)標(biāo)識(shí),並隨著項(xiàng)目的展開不斷更新。一般可預(yù)測風(fēng)險(xiǎn)產(chǎn)品規(guī)模、商業(yè)影響、客戶、過程、技術(shù)、環(huán)境、人員及經(jīng)驗(yàn)等。識(shí)別風(fēng)險(xiǎn)的有效方法風(fēng)險(xiǎn)檢測表188例:人員配備風(fēng)險(xiǎn)檢測表(1)開發(fā)人員的水平如何。(2)開發(fā)人員在技術(shù)上是否配套。(3)開發(fā)人員的數(shù)量如何。(4)開發(fā)人員是否能夠自始至終地參加軟件開發(fā)工作。(5)開發(fā)人員是否能夠集中全部精力投入到軟件開發(fā)工作。(6)開發(fā)人員對自己的工作是否有正確的期望。(7)開發(fā)人員是否接受過必要的培訓(xùn)。(8)開發(fā)人員的流動(dòng)是否能夠保證工作的連續(xù)性。189例:人員配備風(fēng)險(xiǎn)檢測表上述問題可以選用0,1,2,3,4,5來回答。完全肯定取值為0反之為5,中間情況分別取值1,2,3,4值越大表示風(fēng)險(xiǎn)越大。人員配備風(fēng)險(xiǎn)檢測表反映了人的因素給軟件項(xiàng)目帶來的風(fēng)險(xiǎn)190風(fēng)險(xiǎn)估算如果某一風(fēng)險(xiǎn)檢測表由m項(xiàng)組成,每項(xiàng)選取一個(gè)整數(shù)值0,1,…,N,在最理想的情況取值為0,反之取值為N對于中間狀態(tài)依次取值1,2,…,N-1設(shè)第i種風(fēng)險(xiǎn)檢測表第j項(xiàng)取值Xij,對應(yīng)的加權(quán)系數(shù)是Wij,于是第i種風(fēng)險(xiǎn)的估算值可以定義為

mσi=∑WijXij/(mN)j=1

其中∑Wij=m,Wij≥0191風(fēng)險(xiǎn)估算如果第i種風(fēng)險(xiǎn)對整個(gè)軟件項(xiàng)目的風(fēng)險(xiǎn)估算σi,加權(quán)系數(shù)是ρi,i=1,2,…,I.I為風(fēng)險(xiǎn)要素的個(gè)數(shù)∑ρi=1則軟件項(xiàng)目風(fēng)險(xiǎn)估算定義為

R=∑ρiσi0≤R≤1

當(dāng)R接近于0時(shí)表示風(fēng)險(xiǎn)比較小,R接近于1時(shí)表示風(fēng)險(xiǎn)比較大。當(dāng)ρiσi比較大時(shí),表示第i類風(fēng)險(xiǎn)出現(xiàn)并帶來不良影響的可能性比較大,必須引起足夠重視,設(shè)法改善條件,減小σi的值。192風(fēng)險(xiǎn)評價(jià)和管理風(fēng)險(xiǎn)評價(jià)是風(fēng)險(xiǎn)管理的重要步驟任務(wù)

進(jìn)一步審查風(fēng)險(xiǎn)預(yù)測的精度;更新風(fēng)險(xiǎn)優(yōu)先次序;考慮控制和/或避免可能發(fā)生風(fēng)險(xiǎn)的辦法。193風(fēng)險(xiǎn)評價(jià)定義

風(fēng)險(xiǎn)管理三元組[ri,li,xi]i=1,2,3…

其中:ri

表示風(fēng)險(xiǎn)

li

表示風(fēng)險(xiǎn)發(fā)生的概率

xi表示風(fēng)險(xiǎn)產(chǎn)生的影響對大多數(shù)軟件項(xiàng)目,應(yīng)該定義性能、成本、支持及進(jìn)度的風(fēng)險(xiǎn)參考水平值,當(dāng)某一風(fēng)險(xiǎn)或風(fēng)險(xiǎn)組合值超過水平值時(shí)項(xiàng)目被迫停止。194評價(jià)風(fēng)險(xiǎn)的影響風(fēng)險(xiǎn)影響三要素風(fēng)險(xiǎn)的性質(zhì)風(fēng)險(xiǎn)發(fā)生時(shí)可能產(chǎn)生的問題。風(fēng)險(xiǎn)的范圍風(fēng)險(xiǎn)引發(fā)損失的分布及嚴(yán)重性。風(fēng)險(xiǎn)的時(shí)間風(fēng)險(xiǎn)發(fā)生的時(shí)間、持續(xù)的時(shí)間,應(yīng)注意這時(shí)項(xiàng)目所處的狀態(tài)。195確定風(fēng)險(xiǎn)影響的步驟確定每個(gè)風(fēng)險(xiǎn)元素發(fā)生的平均概率給出每個(gè)元素影響的大小填寫風(fēng)險(xiǎn)表並分析其結(jié)果風(fēng)險(xiǎn)預(yù)測和分析技術(shù)可以在軟件項(xiàng)目進(jìn)展過程中反復(fù)使用,項(xiàng)目組應(yīng)定期復(fù)查風(fēng)險(xiǎn)表,評估每一個(gè)風(fēng)險(xiǎn),以此為基礎(chǔ)判斷風(fēng)險(xiǎn)發(fā)生概率及影響的變化。必要時(shí)可潻加新的風(fēng)險(xiǎn)元素,刪去不存在影響的元素,並對風(fēng)險(xiǎn)表重新排序。196風(fēng)險(xiǎn)預(yù)測(1/2)風(fēng)險(xiǎn)預(yù)測又稱風(fēng)險(xiǎn)評估(1)風(fēng)險(xiǎn)發(fā)生的概率;(2)風(fēng)險(xiǎn)發(fā)生產(chǎn)生的后果。197風(fēng)險(xiǎn)預(yù)測(2/2)風(fēng)險(xiǎn)預(yù)測活動(dòng)風(fēng)險(xiǎn)的度量估算風(fēng)險(xiǎn)產(chǎn)生的后果估算風(fēng)險(xiǎn)對項(xiàng)目及產(chǎn)品的影響標(biāo)注風(fēng)險(xiǎn)預(yù)測的整體精度,避免誤解項(xiàng)目管理人員和技術(shù)人員共同參加198風(fēng)險(xiǎn)評估的步驟1定義項(xiàng)目的風(fēng)險(xiǎn)參考水平值;2建立三元組,給出相應(yīng)的參考水平值;3預(yù)測一組臨界點(diǎn),定義項(xiàng)目終止區(qū)域;4預(yù)測什么樣的風(fēng)險(xiǎn)組合會(huì)影響參考水平值199風(fēng)險(xiǎn)表(1/3)風(fēng)險(xiǎn)類別概率影響RMMM123項(xiàng)目開始時(shí)應(yīng)在第一列列出所有風(fēng)險(xiǎn);第二列給出風(fēng)險(xiǎn)類別;第三列給出每種風(fēng)險(xiǎn)發(fā)生的概率;第四列給出各種風(fēng)險(xiǎn)產(chǎn)生影響的評估值;第五列給出風(fēng)險(xiǎn)緩解、監(jiān)控和管理計(jì)劃。200風(fēng)險(xiǎn)表(2/3)評估值按風(fēng)險(xiǎn)因素:性能、支持、成本、進(jìn)度的影響類別求加權(quán)平均值影響類別取值:災(zāi)難的1,嚴(yán)重的2,輕微的3,可忽略的4。對風(fēng)險(xiǎn)表中的風(fēng)險(xiǎn)按照發(fā)生概率大小、影響大小,由大至小排序。201風(fēng)險(xiǎn)表(3/3)項(xiàng)目管理者對風(fēng)險(xiǎn)表進(jìn)行研究后應(yīng)定義一條中止線,線上的風(fēng)險(xiǎn)較大者應(yīng)給予特別的關(guān)注,線下的風(fēng)險(xiǎn)需要進(jìn)一步的跟蹤、評估、排序。對風(fēng)險(xiǎn)發(fā)生概率較大的事件應(yīng)引起特別關(guān)注,要及早采取措施盡量避免它的發(fā)生。202風(fēng)險(xiǎn)緩解、監(jiān)控和管理風(fēng)險(xiǎn)分析的目的協(xié)助項(xiàng)目組建立處理風(fēng)險(xiǎn)的策略。有效的風(fēng)險(xiǎn)處理策略風(fēng)險(xiǎn)避免;風(fēng)險(xiǎn)監(jiān)控;風(fēng)險(xiǎn)管理及異常事件處理。風(fēng)險(xiǎn)緩解計(jì)劃軟件項(xiàng)目組主動(dòng)避免風(fēng)險(xiǎn)發(fā)生的最好策略。落實(shí)風(fēng)險(xiǎn)緩解計(jì)劃項(xiàng)目管理者應(yīng)該對引發(fā)風(fēng)險(xiǎn)的因素和采取措施取得的效果進(jìn)行監(jiān)控;當(dāng)風(fēng)險(xiǎn)發(fā)生時(shí),采取積極的補(bǔ)救措施。203204風(fēng)險(xiǎn)評價(jià)和管理-例子三元組[ri,li,xi]是風(fēng)險(xiǎn)管理的基礎(chǔ)設(shè)高級職員流動(dòng)給項(xiàng)目帶來風(fēng)險(xiǎn)r1,

根據(jù)歷史的經(jīng)驗(yàn)或直觀感覺,高級職員離開課題組的概率l1

=70%,

這一風(fēng)險(xiǎn)導(dǎo)致事件x1

發(fā)生

項(xiàng)目開發(fā)時(shí)間延長15%,成本增加20%.205項(xiàng)目負(fù)責(zé)人采取的風(fēng)險(xiǎn)管理措施(1)項(xiàng)目開始前控制產(chǎn)生風(fēng)險(xiǎn)的原因。項(xiàng)目開工后應(yīng)設(shè)法減輕風(fēng)險(xiǎn)的影響。(2)了解項(xiàng)目開發(fā)人員變動(dòng)的原因,在項(xiàng)目開發(fā)期間應(yīng)控制上述原因,盡量減少人員的流動(dòng)。(3)在工作方法和技術(shù)上采取適當(dāng)措施,防止因人員流動(dòng)給工作帶來損失。(4)項(xiàng)目在開發(fā)過程中應(yīng)及時(shí)公布并交流項(xiàng)目開發(fā)的信息。(5)建立組織機(jī)構(gòu),確定文檔標(biāo)準(zhǔn)、并及時(shí)生成文檔。(6)對工作進(jìn)行集體復(fù)審,使多數(shù)人都能了解工作的細(xì)節(jié),跟上工作進(jìn)度。(7)為關(guān)鍵技術(shù)準(zhǔn)備后備人員。206

RMMM計(jì)劃風(fēng)險(xiǎn)緩解、監(jiān)控和管理計(jì)劃

RiskMitigation,Monitoring,andManagementPlan

將風(fēng)險(xiǎn)分析工作文擋化,成為項(xiàng)目的一部分。207進(jìn)度安排制定進(jìn)度表的兩

溫馨提示

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

評論

0/150

提交評論