Chp 1 軟件工程學(xué)概論_第1頁(yè)
Chp 1 軟件工程學(xué)概論_第2頁(yè)
Chp 1 軟件工程學(xué)概論_第3頁(yè)
Chp 1 軟件工程學(xué)概論_第4頁(yè)
Chp 1 軟件工程學(xué)概論_第5頁(yè)
已閱讀5頁(yè),還剩79頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

2023/2/41第1章軟件工程學(xué)概論本章內(nèi)容軟件危機(jī)軟件工程軟件生命周期軟件過(guò)程2023/2/423

學(xué)習(xí)重點(diǎn)1、軟件危機(jī)、軟件工程產(chǎn)生的原因2、軟件工程過(guò)程和軟件生命周期3、軟件生命周期模型掌握一些基本概念軟件危機(jī)軟件工程軟件生命周期軟件過(guò)程軟件生命周期模型瀑布模型增量模型螺旋模型RUP敏捷過(guò)程極限編程微軟過(guò)程本章內(nèi)容軟件危機(jī)軟件工程軟件生命周期軟件過(guò)程2023/2/445

軟件危機(jī)與軟件工程學(xué)軟件工程學(xué)的產(chǎn)生要從“軟件危機(jī)”說(shuō)起1968年,第一屆NAT0(北大西洋公約組織的計(jì)算機(jī)科學(xué)家的國(guó)際會(huì)議)會(huì)議,“軟件工程”的慨念作為一種有效解決“軟件危機(jī)”的途徑被正式提出。什么是軟件危機(jī)?軟件危機(jī)有什么典型表現(xiàn)?為什么會(huì)產(chǎn)生軟件危機(jī)?怎么解決軟件危機(jī)?6

軟件危機(jī)什么是軟件危機(jī)?軟件危機(jī)指在計(jì)算機(jī)軟件的開發(fā)和維護(hù)過(guò)程中,所遇到的一系列嚴(yán)重問(wèn)題。許多軟件項(xiàng)目不能滿足客戶的要求許多軟件項(xiàng)目超出預(yù)算和時(shí)間安排功能和性能方面成本和進(jìn)度方面軟件危機(jī)的典型表現(xiàn)對(duì)軟件開發(fā)成本和進(jìn)度的估計(jì)常常很不正確用戶對(duì)“已完成的”軟件系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生軟件產(chǎn)品的質(zhì)量往往靠不住軟件常常是不可維護(hù)的軟件通常沒(méi)有適當(dāng)?shù)奈臋n資料軟件成本在計(jì)算機(jī)系統(tǒng)總成本中所占的比例逐年上升軟件開發(fā)生產(chǎn)率提高的速度遠(yuǎn)遠(yuǎn)跟不上計(jì)算機(jī)應(yīng)用迅速普及深入的趨勢(shì)2023/2/478

圖硬件/軟件成本變化趨勢(shì)硬件/軟件成本變化趨勢(shì)9

幾個(gè)軟件危機(jī)的著名案例①1966年,IBM360機(jī)的操作系統(tǒng)?;ㄙM(fèi)5000人一年的工作量,寫了近1萬(wàn)行代碼。錯(cuò)誤百出,每次的新版本就是從前一版本中找1000個(gè)程序錯(cuò)誤而修正的結(jié)果。②1963年,美國(guó)用于控制火星探測(cè)器的計(jì)算機(jī)軟件中的一個(gè)“

,”號(hào)被誤寫為“.”,而致使飛往火星的探測(cè)器發(fā)生爆炸,造成高達(dá)數(shù)億美元的損失。③美國(guó)丹佛新國(guó)際機(jī)場(chǎng)自動(dòng)化行李系統(tǒng)軟件。投資1.93億美元,計(jì)劃1993年萬(wàn)圣節(jié)啟用。但開發(fā)人員一直為系統(tǒng)錯(cuò)誤困擾,屢次推后啟用時(shí)間,直到1994年6月,機(jī)場(chǎng)計(jì)劃者承認(rèn)無(wú)法預(yù)測(cè)何時(shí)能啟用。④1996年,歐洲阿里亞納5型運(yùn)載火箭墜毀,造成5億美元損失。原因是控制軟件中的一個(gè)錯(cuò)誤。10

出現(xiàn)軟件危機(jī)的原因主要兩個(gè)原因:與軟件本身的特點(diǎn)有關(guān)與軟件開發(fā)與維護(hù)的方法不正確有關(guān)11

軟件本身的特點(diǎn)(1)軟件與硬件、一般程序存在很多不同之處。軟件與硬件不同抽象性:軟件生產(chǎn)沒(méi)有明顯的制造過(guò)程,難以衡量開發(fā)進(jìn)展,也難以控制軟件質(zhì)量。問(wèn)題的隱蔽性:沒(méi)有硬件的磨損、老化問(wèn)題,但存在開發(fā)早期在分析、設(shè)計(jì)階段的錯(cuò)誤,修改難度較大。12

失效率曲線13

軟件與一般程序不同①軟件遠(yuǎn)比一般程序規(guī)模龐大,復(fù)雜性高軟件所反映的實(shí)際問(wèn)題的復(fù)雜性程序邏輯結(jié)構(gòu)的復(fù)雜性。例1:Windows95,1000萬(wàn)行代碼;

Windows2000,5000萬(wàn)行代碼例2:Exchange2000和windows2000開發(fā)人員14

軟件的規(guī)模軟件產(chǎn)品的特殊性和人類智力、知識(shí)的局限性,導(dǎo)致人們無(wú)力處理“復(fù)雜問(wèn)題”。15

軟件與一般程序不同(2)②大型軟件開發(fā)既有技術(shù)問(wèn)題,還有社會(huì)問(wèn)題。

社會(huì)因素:組織機(jī)構(gòu)、體制、管理方式、觀念、人的心理素等。開發(fā)團(tuán)隊(duì)成員分工合作技術(shù)與管理的矛盾軟件開發(fā)人員對(duì)軟件應(yīng)用的領(lǐng)域知識(shí)的了解16

軟件開發(fā)維護(hù)方法中存在的問(wèn)題(1)①對(duì)用戶需求的獲取不正確用戶的原因分析人員的原因?qū)Ψ治鋈藛T的要求:溝通能力、歸納總結(jié)能力、經(jīng)驗(yàn)越是早期產(chǎn)生的錯(cuò)誤,付出的代價(jià)越大。圖:不同時(shí)期引入同一變動(dòng)的代價(jià)17

軟件開發(fā)維護(hù)方法中存在的問(wèn)題(2)②軟件開發(fā)就是編寫程序。一個(gè)完整的軟件產(chǎn)品由一整套完整的配置組成,程序只是其中的一個(gè)組成部分。軟件開發(fā)過(guò)程包括多個(gè)階段,每個(gè)階段的產(chǎn)品都是最終的完整的軟件產(chǎn)品的一部分。③軟件開發(fā)只要依靠個(gè)別編程高手就能完成。④輕視軟件維護(hù)軟件維護(hù)約占軟件費(fèi)用55一75%,包括修改軟件運(yùn)行的錯(cuò)誤;對(duì)軟件進(jìn)行改進(jìn)和功能擴(kuò)充。18

其他產(chǎn)生軟件危機(jī)的原因①軟件開發(fā)尚未完全擺脫手工開發(fā)方式。②軟件成本相當(dāng)昂貴,主要依靠大量復(fù)雜的、高強(qiáng)度的腦力勞動(dòng)。③軟件的開發(fā)和運(yùn)行常常受到計(jì)算機(jī)系統(tǒng)的限制,對(duì)計(jì)算機(jī)系統(tǒng)有著不同程度的依賴性。軟件的“可移植性”就是指的軟件對(duì)硬件的依賴程度。好的可移植性依賴少。19

消除軟件危機(jī)的途徑1、徹底消除“軟件就是程序”的錯(cuò)誤觀念。2、充分認(rèn)識(shí)到軟件開發(fā)是一種組織良好、管理嚴(yán)密、各類人員協(xié)同配合、共同完成的工程項(xiàng)目,不是個(gè)人獨(dú)立的勞動(dòng)。

3、推廣和使用在實(shí)踐中總結(jié)出來(lái)的軟件開發(fā)的成功技術(shù)和方法。

4、開發(fā)和使用更好的軟件工具20

消除軟件危機(jī)的途徑“軟件工程”的方法理論是擺脫軟件危機(jī)的一個(gè)主要出路。計(jì)算機(jī)和軟件科學(xué)家為解決軟件危機(jī)問(wèn)題,嘗試將在其它領(lǐng)域中行之有效的工程學(xué)知識(shí)運(yùn)用到軟件開發(fā)工作中來(lái),經(jīng)過(guò)不斷實(shí)踐和總結(jié),最后得出一個(gè)結(jié)論;按工程化的原則和方法組織軟件開發(fā)工作是有效的,是擺脫軟件危機(jī)的一個(gè)主要出路。21

思考題(1)1)只要是編程高手,即使是不懂軟件工程,也能編出很好的軟件。軟件是服務(wù)于大眾,卻是由個(gè)性化的開發(fā)人員完成的。如果個(gè)性化太強(qiáng),程序就無(wú)法閱讀,其他人員也就無(wú)法維護(hù)。22

思考題(2)2)只要擁有一套講述如何開發(fā)軟件的書籍,并了解了書中的標(biāo)準(zhǔn)與示例,就可以解決軟件開發(fā)中遇到的任何問(wèn)題。軟件是用來(lái)解決現(xiàn)實(shí)問(wèn)題的,現(xiàn)實(shí)問(wèn)題的特殊性對(duì)規(guī)范提出了挑戰(zhàn)(要進(jìn)行適應(yīng))。軟件技術(shù)是發(fā)展的,沒(méi)有祖?zhèn)髅胤?。就像擁有食譜并不能成為名廚一樣,軟件開發(fā)需要實(shí)踐。23

思考題(3)3)只要擁有最好的開發(fā)工具、最好的計(jì)算機(jī),一定能做出優(yōu)秀的軟件。硬件環(huán)境只是必要條件,人才是充分條件,軟件是人在一定的約束條件下創(chuàng)造出來(lái)的。因人因事而異。24

思考題(4)4)軟件開發(fā)時(shí),如果進(jìn)度慢,落后于計(jì)劃,可以增加更多的程序員來(lái)解決。增加人力可以減少開發(fā)時(shí)間嗎?新手!任務(wù)的重新劃分!溝通更加復(fù)雜!必須依靠科學(xué)地計(jì)劃來(lái)解決這樣的問(wèn)題。25

思考題(5)5)爭(zhēng)議:如果軟件運(yùn)行較慢,是換一臺(tái)更快的計(jì)算機(jī),還是設(shè)計(jì)一種更快的算法?軟件的性能問(wèn)題;應(yīng)用級(jí)別→算法的合理性;系統(tǒng)級(jí)別→操作系統(tǒng)、數(shù)據(jù)庫(kù)系統(tǒng)、系統(tǒng)軟件等;硬件級(jí)別→機(jī)器性能本章內(nèi)容軟件危機(jī)軟件工程軟件生命周期軟件過(guò)程2023/2/42627

軟件工程“軟件工程”的典型定義1)1968年,第一屆NATO會(huì)議

為了經(jīng)濟(jì)地獲得可靠的且能在實(shí)際機(jī)器上有效地運(yùn)行的軟件,而建立和使用完善的工程原理。2)IEEE-CS(電氣電子工程師協(xié)會(huì)/計(jì)算機(jī)科學(xué)分會(huì))

1993年,將系統(tǒng)化的、規(guī)范的、可度量的方法應(yīng)用于軟件的開發(fā)、運(yùn)行和維護(hù)的過(guò)程,即將工程化應(yīng)用于軟件中。

②對(duì)①中提到的各種方法的研究。28

3)其他學(xué)者的定義Boehm:運(yùn)用現(xiàn)代科學(xué)技術(shù)知識(shí)來(lái)設(shè)計(jì)并構(gòu)造計(jì)算機(jī)程序及為開發(fā)、運(yùn)行和維護(hù)這些程序所必需的相關(guān)文件資料。FritzBauer:建立并使用完善的工程化原則,以較經(jīng)濟(jì)的手段獲得能在實(shí)際機(jī)器上有效運(yùn)行的可靠軟件的一系列方法所有定義都強(qiáng)調(diào)在軟件開發(fā)過(guò)程中,應(yīng)用工程化原則的重要性!29

幾個(gè)關(guān)于軟件工程本質(zhì)特性和基本原理的問(wèn)題問(wèn)題1:軟件工程適用范圍?

軟件工程關(guān)注大型程序的構(gòu)造問(wèn)題2:軟件工程如何控制系統(tǒng)開發(fā)的復(fù)雜性的?

將復(fù)雜的問(wèn)題進(jìn)行分解問(wèn)題3:需求經(jīng)常變化,軟件應(yīng)該怎么樣?適應(yīng)變化,開發(fā)時(shí)考慮可能的變化30

幾個(gè)關(guān)于軟件工程本質(zhì)特性和基本原理的問(wèn)題問(wèn)題4:協(xié)同工作有什么重要性?

協(xié)同工作,責(zé)任和溝通問(wèn)題5:在需求分析完成并獲得了用戶的肯定,也通過(guò)了評(píng)審,進(jìn)入軟件設(shè)計(jì)階段之后,用戶的想法有了改變,提出了一個(gè)新的要求,此時(shí)如果你是項(xiàng)目負(fù)責(zé)人,應(yīng)該怎樣做?31

幾個(gè)關(guān)于軟件工程本質(zhì)特性和基本原理的問(wèn)題問(wèn)題6:怎樣理解“在軟件工程領(lǐng)域中是由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品”這句話?問(wèn)題7:某軟件開發(fā),由于時(shí)間和資金都非常緊迫,在需求分析人員非常認(rèn)真、仔細(xì)地做完需求分析之后,說(shuō):我們可以保證我們的需求分析正確性,不用花時(shí)間檢查了,設(shè)計(jì)人員可以直接拿著這份分析報(bào)告,馬上開始設(shè)計(jì)。如果你是項(xiàng)目負(fù)責(zé)人,你會(huì)如何決定?為什么?32

軟件工程本質(zhì)特性1)軟件工程關(guān)注于大型程序的構(gòu)造。2)軟件工程的中心課題是控制復(fù)雜性如何分解和集成?G.Miller:“7士2”

原則3)軟件經(jīng)常變化4)開發(fā)軟件的效率非常重要5)和諧地合作是開發(fā)軟件的關(guān)鍵6)軟件必須有效地支持它的用戶7)在軟件工程領(lǐng)域中是由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品

擴(kuò)展定義:軟件=知識(shí)+程序+數(shù)據(jù)+文檔33

軟件工程的基本原理Boehm,1983年提出:

1)用分階段的生命周期計(jì)劃嚴(yán)格管理

2)堅(jiān)持進(jìn)行階段評(píng)審

3)實(shí)行嚴(yán)格的產(chǎn)品控制基線(baseline)

4)采用現(xiàn)代程序設(shè)計(jì)技術(shù)

5)結(jié)果應(yīng)能清楚地審查

6)開發(fā)小組的人員應(yīng)該少而精7)承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性

Boehm認(rèn)為這7條基本原理是確保軟件產(chǎn)品質(zhì)量和開發(fā)效率的原理的最小集合。基線是項(xiàng)目?jī)?chǔ)存庫(kù)中每個(gè)工件版本在特定時(shí)期的一個(gè)“快照”,它是軟件文檔或源碼(或其它產(chǎn)出物)的一個(gè)穩(wěn)定版本,它是進(jìn)一步開發(fā)的基礎(chǔ)。34

軟件工程方法學(xué)軟件工程包括“管理”和“技術(shù)”兩方面內(nèi)容:管理——對(duì)人、財(cái)、物的合理使用和配置;技術(shù)——指軟件開發(fā)中采用的方法、工具和過(guò)程。什么是軟件工程方法學(xué)?通常把在軟件生命周期全過(guò)程中使用的一整套技術(shù)方法的集合稱為方法學(xué)(methodology),也稱為范型(paradigm)。35

軟件工程方法學(xué)三要素:工具、方法和過(guò)程要素一:軟件工程過(guò)程

為獲得高質(zhì)量軟件產(chǎn)品所需要進(jìn)行的一系列活動(dòng)的框架要素二:軟件工程方法

完成軟件開發(fā)的各項(xiàng)任務(wù)的技術(shù)方法,為軟件開發(fā)提供了“如何做”的技術(shù)。如項(xiàng)目計(jì)劃與估算、軟件系統(tǒng)需求分析、數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)總體結(jié)構(gòu)的設(shè)計(jì)、算法過(guò)程的設(shè)計(jì)、編碼、測(cè)試以及維護(hù)等。要素三:軟件工程工具

計(jì)算機(jī)輔助軟件工程CASE(computerAidedsottwareEngineering),為軟件工程方法提供自動(dòng)或半自動(dòng)的軟件支撐環(huán)境。36

軟件工程方法學(xué)思想目前使用最廣泛的軟件工程方法學(xué):1、傳統(tǒng)方法學(xué)(生命周期方法學(xué)或結(jié)構(gòu)化范型)

2、面向?qū)ο蠓椒?7

傳統(tǒng)方法學(xué)(生命周期方法學(xué)或結(jié)構(gòu)化范型)采用結(jié)構(gòu)化技術(shù)(結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計(jì)和結(jié)構(gòu)化實(shí)現(xiàn))來(lái)完成軟件開發(fā)的各項(xiàng)任務(wù);把軟件生命周期劃分為若干個(gè)階段,按順序完成每個(gè)階段的任務(wù);每個(gè)階段開始和結(jié)束都有嚴(yán)格的標(biāo)準(zhǔn),對(duì)任何兩個(gè)相鄰的階段而言,前一個(gè)階段的結(jié)束標(biāo)準(zhǔn)就是后一階段的開始標(biāo)準(zhǔn);每一個(gè)階段結(jié)束之前都必須進(jìn)行正式嚴(yán)格的技術(shù)審查和管理復(fù)審。38

傳統(tǒng)方法學(xué)的優(yōu)缺點(diǎn)傳統(tǒng)方法學(xué)的優(yōu)點(diǎn)分解任務(wù),分工合作,降低整個(gè)軟件開發(fā)工程的困難;采用科學(xué)的管理技術(shù)和良好的技術(shù)方法對(duì)每個(gè)階段成果都進(jìn)行嚴(yán)格的審查。保證了軟件的質(zhì)量。傳統(tǒng)方法學(xué)的缺點(diǎn)把數(shù)據(jù)和操作人為地分離成兩個(gè)獨(dú)立的部分,增加了軟件開發(fā)與維護(hù)的難度。39

面向?qū)ο蠓椒▽W(xué)(OO,Object-oriented)模擬人類習(xí)慣的思維方式,使開發(fā)軟件的方法與過(guò)程盡可能接近人類認(rèn)識(shí)世界解決問(wèn)題的方法與過(guò)程,從而使描述問(wèn)題的問(wèn)題空間(也稱為問(wèn)題域)與實(shí)現(xiàn)解法的解空間(也稱為求解域)在結(jié)構(gòu)上盡可能一致。40

面向?qū)ο蠓椒▽W(xué)4要點(diǎn)把對(duì)象(object)作為融合了數(shù)據(jù)及在數(shù)據(jù)上的操作行為的統(tǒng)一的軟件構(gòu)件。

功能分解對(duì)象分解把所有對(duì)象都劃分成類(class)。按照父類(或稱為基類)與子類(或稱為派生類)的關(guān)系,把若干個(gè)相關(guān)類組成一個(gè)層次結(jié)構(gòu)的系統(tǒng)(也稱為類等級(jí))。對(duì)象彼此間僅能通過(guò)發(fā)送消息互相聯(lián)系。OO=Objects+Classes+inheritance+CommunicationwithMessages41

二者區(qū)別傳統(tǒng)方法學(xué):強(qiáng)調(diào)自頂向下順序地完成軟件開發(fā)的各階段任務(wù)。面向?qū)ο蠓椒ǎ菏侵鲃?dòng)地多次反復(fù)迭代的演化過(guò)程本章內(nèi)容軟件危機(jī)軟件工程軟件生命周期軟件過(guò)程2023/2/44243

軟件生命周期什么是軟件生命周期(lifecycle)?

指軟件孕育、誕生、成長(zhǎng)、成熟、衰亡的生存過(guò)程

GB-8567中將軟件生命周期分為7個(gè)階段:

可行性研究和項(xiàng)目開發(fā)計(jì)劃;需求分析;概要設(shè)計(jì);詳細(xì)設(shè)計(jì);編碼;測(cè)試;維護(hù)其他分法,5個(gè)階段:

需求定義、設(shè)計(jì)、編碼、測(cè)試及維護(hù);需求定義階段包括可行性研究和項(xiàng)目開發(fā)計(jì)劃、需求分析;設(shè)計(jì)階段包括慨要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。44

本教材對(duì)軟件生命周期的劃分45

軟件定義時(shí)期任務(wù):系統(tǒng)分析確定軟件開發(fā)工程必須完成的總目標(biāo);確定工程的可行性;導(dǎo)出實(shí)現(xiàn)工程目標(biāo)應(yīng)該采用的策略及系統(tǒng)必須完成的功能;估計(jì)完成該項(xiàng)工程需要的資源和成本,并且制定工程進(jìn)度表。通常分為問(wèn)題定義、可行性研究和需求分析三個(gè)階段。46

軟件定義時(shí)期的三個(gè)階段①問(wèn)題定義階段:

回答:“要解決的問(wèn)題是什么?”②可行性研究階段

回答:“對(duì)于上一個(gè)階段所確定的問(wèn)題有行得通的解決辦法嗎?③需求分析(RequirementAnalysis)

回答“為了解決這個(gè)問(wèn)題,目標(biāo)系統(tǒng)必須做什么?

用正式文檔準(zhǔn)確地記錄對(duì)目標(biāo)系統(tǒng)的需求,這份文檔通常稱為規(guī)格說(shuō)明書(specification)。47

軟件開發(fā)時(shí)期任務(wù):具體設(shè)計(jì)和實(shí)現(xiàn)前一個(gè)時(shí)期定義的軟件①總體設(shè)計(jì)(概要設(shè)計(jì))

回答:“概括地說(shuō),應(yīng)該怎樣實(shí)現(xiàn)目標(biāo)系統(tǒng)?”

根據(jù)需求分析,設(shè)計(jì)軟件的體系結(jié)構(gòu);定義結(jié)構(gòu)中的組成模塊。②詳細(xì)設(shè)計(jì)(模塊設(shè)計(jì))

回答:“應(yīng)該怎樣具體地實(shí)現(xiàn)這個(gè)系統(tǒng)呢?”

對(duì)每個(gè)模塊要完成的工作進(jìn)行具體的描述,為源程序編寫打下基礎(chǔ)。編寫設(shè)計(jì)說(shuō)明書,提交評(píng)審。二者統(tǒng)稱系統(tǒng)設(shè)計(jì)

48

軟件開發(fā)時(shí)期四個(gè)階段③程序編寫(Coding,Programming):把軟件設(shè)計(jì)轉(zhuǎn)換成計(jì)算機(jī)可以接受的程序代碼。④軟件測(cè)試(Testing):按規(guī)定的各項(xiàng)需求,逐項(xiàng)進(jìn)行有效性測(cè)試,決定已開發(fā)的軟件是否合格,能否交付用戶使用,包括單元測(cè)試和綜合測(cè)試。二者統(tǒng)稱系統(tǒng)實(shí)現(xiàn)49

運(yùn)行維護(hù)(軟件維護(hù))時(shí)期(Running/Maintenance)使軟件持久的滿足用戶的需要。包括:改正性維護(hù):運(yùn)行中發(fā)現(xiàn)了軟件中的錯(cuò)誤需要修正。適應(yīng)性維護(hù):為了適應(yīng)變化了的軟件工作環(huán)境,需做適當(dāng)變更。完善性維護(hù):當(dāng)用戶有新的要求時(shí),應(yīng)該及時(shí)改進(jìn)軟件以滿足用戶的要求。預(yù)防性維護(hù):即修改軟件為將來(lái)的維護(hù)活動(dòng)預(yù)先做準(zhǔn)備。50

幾個(gè)關(guān)于軟件生命周期階段的問(wèn)題問(wèn)題1:開發(fā)一個(gè)軟件大概需要多少資金、時(shí)間,將獲得什么效益一般是在哪個(gè)階段確定?相對(duì)而言,在哪個(gè)階段與用戶交流最多?問(wèn)題2:系統(tǒng)分析員主要工作在哪個(gè)時(shí)期?程序員主要工作在哪個(gè)時(shí)期?問(wèn)題3:軟件定義時(shí)期的三個(gè)階段,各自回答什么關(guān)鍵問(wèn)題?問(wèn)題4:軟件開發(fā)時(shí)期有幾個(gè)階段?各自回答什么關(guān)鍵問(wèn)題?問(wèn)題5:軟件體系結(jié)構(gòu)最早是在哪個(gè)階段決定的?問(wèn)題6:詳細(xì)設(shè)計(jì)與程序編寫階段有什么樣的密切聯(lián)系?問(wèn)題7:“軟件測(cè)試是為了驗(yàn)證系統(tǒng)的正確性”這句話對(duì)嗎?問(wèn)題8:軟件維護(hù)有那幾種?各有什么功能?本章內(nèi)容軟件危機(jī)軟件工程軟件生命周期軟件過(guò)程2023/2/45152

軟件過(guò)程(SoftwareProcess)軟件過(guò)程是為了獲得高質(zhì)量軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。

ISO9000的定義:使用資源將輸入轉(zhuǎn)化為輸出的活動(dòng)所構(gòu)成的系統(tǒng)。“系統(tǒng)”是相互關(guān)聯(lián)或相互作用的一組要素。過(guò)程是軟件工程三要素之一。通常用軟件生命周期模型來(lái)描述。53

什么是軟件生命周期模型又稱:軟件開發(fā)模型/軟件過(guò)程模型/軟件工程范型。指軟件項(xiàng)目從需求定義直至軟件經(jīng)使用后廢棄為止,跨越整個(gè)生存周期的系統(tǒng)開發(fā)、運(yùn)作和維護(hù)所實(shí)施的全部過(guò)程、活動(dòng)和任務(wù)的結(jié)構(gòu)框架。常見的有:瀑布模型、快速原型模型、增量模型、螺旋模型、噴泉模型、RUP、敏捷過(guò)程、微軟過(guò)程54

瀑布模型(Waterfallmodel)1970年,由W.Royce提出

傳統(tǒng)的瀑布模型從上一階段接受本階段

的工作對(duì)象,作為輸入;利用輸入,完成本階段活

動(dòng)的內(nèi)容.本階段的工作成果作為輸出

傳入下一階段。55

瀑布模型—實(shí)際的瀑布模型需求分析驗(yàn)證規(guī)格說(shuō)明驗(yàn)證設(shè)計(jì)驗(yàn)證編碼測(cè)試綜合測(cè)試維護(hù)變化的需求驗(yàn)證

增加了一個(gè)評(píng)審活動(dòng),評(píng)審每個(gè)階段完成的活動(dòng),若得到確認(rèn),則進(jìn)行下一階段的活動(dòng);否則返回前一階段,甚至更前階段返工;56

瀑布模型特點(diǎn)階段間具有順序性和依賴性推遲實(shí)現(xiàn)的觀點(diǎn)質(zhì)量保證的觀點(diǎn)57

瀑布模型優(yōu)缺點(diǎn)優(yōu)點(diǎn):可強(qiáng)迫開發(fā)人員采用規(guī)范的方法;嚴(yán)格地規(guī)定了每個(gè)階段必須提交的文檔;要求每個(gè)階段的所有產(chǎn)品都必須經(jīng)過(guò)質(zhì)量保證小組的仔細(xì)驗(yàn)證;缺點(diǎn):無(wú)法解決軟件需求不明確或不準(zhǔn)確的問(wèn)題;可能導(dǎo)致最終開發(fā)的產(chǎn)品不能真正滿足用戶需要。瀑布模型比較適合開發(fā)需求明確的軟件。58

快速原型模型什么是“原型”?

原型是快速實(shí)現(xiàn)和運(yùn)行的早期版本,反映最終系統(tǒng)部分重要特性。常見的原型實(shí)例:人機(jī)界面;系統(tǒng)主要功能。

優(yōu)點(diǎn):

1、通常能反映用戶真實(shí)需求;

2、軟件產(chǎn)品的開發(fā)基本上是線性順序進(jìn)行的。59

快速原型的過(guò)程獲得用戶的基本需求說(shuō)明,據(jù)此快速建立一個(gè)小型軟件系統(tǒng).用戶試用,對(duì)其評(píng)價(jià);開發(fā)人員按照用戶的意見快速地修改原型系統(tǒng),獲得新的原型版本,再請(qǐng)用戶試用,如此反復(fù),直到滿足用戶的要求;用戶確認(rèn)原型系統(tǒng)之后,開發(fā)人員據(jù)此書寫規(guī)格說(shuō)明文檔,進(jìn)行下一步開發(fā)。60

增量(漸增)模型把軟件產(chǎn)品作為一系列的增量構(gòu)件來(lái)設(shè)計(jì)、編碼、集成和測(cè)試。每個(gè)構(gòu)件由多個(gè)相互作用的模塊構(gòu)成,并且能夠完成特定的功能。使用增量模型時(shí),第一個(gè)階段的增量構(gòu)件往往實(shí)現(xiàn)軟件的基本需求,提供最核心的功能;后面的增量構(gòu)架逐漸添加系統(tǒng)的功能。61

增量(漸增)模型需求分析驗(yàn)證規(guī)格說(shuō)明驗(yàn)證設(shè)計(jì)驗(yàn)證維護(hù)針對(duì)每個(gè)構(gòu)件完成詳細(xì)設(shè)計(jì)、編碼和集成,經(jīng)測(cè)試后交付給用戶62

增量模型注意事項(xiàng)增量構(gòu)件規(guī)模適中;分解的約束條件是當(dāng)把新構(gòu)件集成到現(xiàn)有軟件中時(shí),所形成的產(chǎn)品必須是可測(cè)試的;軟件體系必須是開放的,即在對(duì)現(xiàn)有系統(tǒng)添加新增量構(gòu)件時(shí),不能破壞系統(tǒng)原有功能。63

增量模型優(yōu)缺點(diǎn)優(yōu)點(diǎn):能在較短的時(shí)間內(nèi),提供可完成部分工作的初步產(chǎn)品給用戶;用戶有較為充裕的時(shí)間學(xué)習(xí)和適應(yīng)新產(chǎn)品。缺點(diǎn):對(duì)開發(fā)人員技術(shù)能力要求較高,要求能從系統(tǒng)整體出發(fā)正確劃分增量構(gòu)件,并進(jìn)行分別開發(fā),最后能很好地集成這些構(gòu)件。64

一種風(fēng)險(xiǎn)更大的增量模型有可能提高開發(fā)速度,但需要密切地監(jiān)控整個(gè)開發(fā)過(guò)程,否則將冒構(gòu)件無(wú)法集成到一起的風(fēng)險(xiǎn)。分析分析分析分析設(shè)計(jì)設(shè)計(jì)設(shè)計(jì)設(shè)計(jì)編碼編碼編碼編碼測(cè)試測(cè)試測(cè)試測(cè)試構(gòu)件1構(gòu)件2構(gòu)件3構(gòu)件465

螺旋模型(spiralmodel)大型軟件開發(fā)面臨的重要問(wèn)題:軟件風(fēng)險(xiǎn)如:產(chǎn)品交付給用戶之后,用戶不滿意;

開發(fā)進(jìn)度落后,開發(fā)成本超出預(yù)算;

產(chǎn)品完成前關(guān)鍵的開發(fā)人員跳槽;

在產(chǎn)品投人市場(chǎng)前,競(jìng)爭(zhēng)對(duì)手發(fā)布了一個(gè)功能相近,價(jià)格更低的軟件………構(gòu)建原型能使某些類型的風(fēng)險(xiǎn)降到最低.66

簡(jiǎn)單的螺旋模型螺旋模型改進(jìn)了原型模型,在每個(gè)階段都加入風(fēng)險(xiǎn)分析。簡(jiǎn)化的螺旋模型

67

完整的螺旋模型68

螺旋模型的優(yōu)缺點(diǎn)優(yōu)點(diǎn):強(qiáng)調(diào)可選方案和約束條件,有利于已有軟件的重用,也有助于把軟件質(zhì)量作為軟件開發(fā)的一個(gè)重要目標(biāo);減少了過(guò)多測(cè)試(浪費(fèi)資金)或測(cè)試不足(產(chǎn)品故障多)所帶來(lái)的風(fēng)險(xiǎn);維護(hù)是一個(gè)周期,與開發(fā)并沒(méi)有本質(zhì)區(qū)別缺點(diǎn):需要開發(fā)人員具有相當(dāng)豐富的風(fēng)險(xiǎn)評(píng)估經(jīng)驗(yàn)和專門知識(shí);進(jìn)行風(fēng)險(xiǎn)分析的費(fèi)用可能較大。適合大型軟件開發(fā)69

各種模型的比較模型優(yōu)點(diǎn)缺點(diǎn)瀑布模型規(guī)范,文檔驅(qū)動(dòng)系統(tǒng)可能不滿足客戶真正的需求快速原型克服了瀑布型的缺點(diǎn)增量模型開發(fā)早期回報(bào)明確,易于維護(hù)要求開放的軟件體系結(jié)構(gòu)螺旋模型風(fēng)險(xiǎn)驅(qū)動(dòng),適用于大型項(xiàng)目開發(fā)風(fēng)險(xiǎn)分析人員需要有經(jīng)驗(yàn)且經(jīng)過(guò)充分訓(xùn)練噴泉模型噴泉模型是典型的面向?qū)ο筌浖^(guò)程模型以用戶需求為動(dòng)力,以對(duì)象為驅(qū)動(dòng)的模型

在開發(fā)早期定義一系列面向問(wèn)題的對(duì)象,在整個(gè)開發(fā)過(guò)程中不斷充實(shí)和擴(kuò)充它們多次迭代,無(wú)縫連接

各階段都使用統(tǒng)一的概念和表示符號(hào)采用面向?qū)ο蠓缎秃缶S護(hù)時(shí)間縮短了!2023/2/470Rational統(tǒng)一過(guò)程RationalUnifiedProcess,簡(jiǎn)稱RUP或UP

基于構(gòu)件(component),在UML基礎(chǔ)上發(fā)展起來(lái)的,“用例驅(qū)動(dòng),以架構(gòu)為核心,迭代并且增量”。在某種程度上,統(tǒng)一過(guò)程嘗試從傳統(tǒng)軟件過(guò)程中挖掘最好的特征和性質(zhì),但是以敏捷開發(fā)中許多好的原則來(lái)實(shí)現(xiàn)。采用迭代方式開發(fā)軟件在軟件開發(fā)的全過(guò)程中有效地管理需求使用基于構(gòu)件的軟件體系結(jié)構(gòu)建立軟件產(chǎn)品的可視化模型在軟件開發(fā)的全過(guò)程中嚴(yán)格地驗(yàn)證軟件質(zhì)量控制軟件變更2023/2/471RUP軟件開發(fā)生命周期9個(gè)核心工作流(6個(gè)過(guò)程工作流,3個(gè)支持工作流)2023/2/472RUP軟件開發(fā)生命周期RUP強(qiáng)調(diào)采用迭代和漸增的方式來(lái)開發(fā)軟件,整個(gè)項(xiàng)目開發(fā)過(guò)程由多個(gè)迭代過(guò)程組成。RUP循環(huán)遍歷多次軟件生命周期。每次循環(huán)都經(jīng)歷一個(gè)完整的生命周期,每次循環(huán)結(jié)束都向用戶交付產(chǎn)品的一個(gè)可運(yùn)行的版本。RUP軟件開發(fā)生命周期中的每個(gè)階段進(jìn)一步細(xì)分為一次或多次迭代過(guò)程。項(xiàng)目經(jīng)理根據(jù)當(dāng)前迭代所處的階段及上一次迭代的結(jié)果,對(duì)核心工作流程中的活動(dòng)進(jìn)行適當(dāng)?shù)牟眉?,以完成一次具體的迭代過(guò)程。2023/2/473敏捷過(guò)程(AgileSoftwareDevelopment)敏捷過(guò)程是針對(duì)傳統(tǒng)的瀑布開發(fā)模式的弊端而產(chǎn)生的一種新的開發(fā)模式,目標(biāo)是提高開發(fā)效率和響應(yīng)能力。根據(jù)下述4個(gè)價(jià)值觀提出的軟件過(guò)程統(tǒng)稱為敏捷過(guò)程開發(fā)人員的素質(zhì)及相互間的交互與協(xié)作比過(guò)程和工具更重要可以工作的軟件比面面俱到的文檔更重要與客戶的合作比合同談判更重要及時(shí)響應(yīng)變化比死板地遵循計(jì)劃更重要2023/2/474極限編程(eXtremeProgramming,XP)極限編程是最著名的敏捷過(guò)程,“極限”是指把最有效的軟件開發(fā)實(shí)踐運(yùn)用到極致。極限編程的有效實(shí)踐(12條)

1、完整團(tuán)隊(duì)XP項(xiàng)目的所有參與者(開發(fā)人員、客戶、測(cè)試人員等)一起工作在一個(gè)開放的場(chǎng)所中,他們是同一個(gè)團(tuán)隊(duì)的成員。這個(gè)場(chǎng)所的墻壁上隨意懸掛著大幅的、顯著的圖表以及其他一些顯示他們進(jìn)度的東西。

2、計(jì)劃游戲計(jì)劃是持續(xù)的、循序漸進(jìn)的。每2周,開發(fā)人員就為下2周估算候選特性的成本,而客戶則根據(jù)成本和商務(wù)價(jià)值來(lái)選擇要實(shí)現(xiàn)的特性。2023/2/475極限編程的有效實(shí)踐(續(xù))

3、客戶測(cè)試

作為選擇每個(gè)所期望的特性的一部分,客戶可以根據(jù)腳本語(yǔ)言來(lái)定義出自動(dòng)驗(yàn)收測(cè)試來(lái)表明該特性可以工作。

4、簡(jiǎn)單設(shè)計(jì)

團(tuán)隊(duì)保持設(shè)計(jì)恰好和當(dāng)前的系統(tǒng)功能相匹配。它通過(guò)了所有的測(cè)試,不包含任何重復(fù),表達(dá)出了編寫者想表達(dá)的所有東西,并且包

溫馨提示

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

評(píng)論

0/150

提交評(píng)論