軟件系統(tǒng)開發(fā)與軟件工程方法課件_第1頁(yè)
軟件系統(tǒng)開發(fā)與軟件工程方法課件_第2頁(yè)
軟件系統(tǒng)開發(fā)與軟件工程方法課件_第3頁(yè)
軟件系統(tǒng)開發(fā)與軟件工程方法課件_第4頁(yè)
軟件系統(tǒng)開發(fā)與軟件工程方法課件_第5頁(yè)
已閱讀5頁(yè),還剩85頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第七章軟件系統(tǒng)開發(fā)與軟件工程方法

一、軟件危機(jī)二、軟件工程第七章軟件系統(tǒng)開發(fā)與軟件工程方法一、軟件危機(jī)

一、軟件危機(jī)1、軟件開發(fā)的發(fā)展歷程

19601970198019902000

早期

第二階段第三階段第四階段面向批處理

多用戶

分布式系統(tǒng)

強(qiáng)大的桌面系統(tǒng)有限的分布

實(shí)時(shí)

嵌入“智能”面向?qū)ο蠹夹g(shù)自定義軟件

數(shù)據(jù)庫(kù)

低成本硬件

專家系統(tǒng)開發(fā)者=使用者

軟件產(chǎn)品

人工神經(jīng)網(wǎng)絡(luò)

并行計(jì)算

網(wǎng)絡(luò)計(jì)算機(jī)

一、軟件危機(jī)19601970198019902000

一、軟件危機(jī)2、軟件危機(jī)

1)案例思考1——FAA的失敗項(xiàng)目 20世紀(jì)80年代中期,更換空中交通控制系統(tǒng)已成為美國(guó)聯(lián)邦航空管理局(FAA)非常優(yōu)先的任務(wù)。1989年IBM公司獲得更換該系統(tǒng)的合同,截止期為2001年,預(yù)計(jì)投入25億美元。由于面臨著極苛刻的需求,該軟件項(xiàng)目是已進(jìn)行的最復(fù)雜的項(xiàng)目之一。例如,交通控制系統(tǒng)必須具備全局完整性并且每周7天,每天24小時(shí)不能停止工作,甚至在升級(jí)時(shí)或正常維護(hù)時(shí),也不允許有停頓時(shí)間。任何錯(cuò)誤的數(shù)據(jù)都會(huì)引起重大傷亡,任何停機(jī)均會(huì)導(dǎo)致世界范圍的出行延誤或潛在的危險(xiǎn)。該系統(tǒng)的反應(yīng)時(shí)間不能超過2-3秒。此外,該系統(tǒng)設(shè)計(jì)時(shí)必須考慮到允許私人飛機(jī)駕駛員繼續(xù)使用舊設(shè)備,并要求軟件能在未來移植到更新的硬件設(shè)備上。當(dāng)IBM獲得該合同后,該系統(tǒng)的主要花費(fèi)為軟件開發(fā),用于硬件的投入僅為8萬美元。1993年,負(fù)責(zé)該項(xiàng)目的IBM子公司——IBM聯(lián)邦系統(tǒng)公司被IBM賣給了Loral公司。到1994年,該系統(tǒng)已花費(fèi)了23億美元,但尚未提交系統(tǒng)的任何程序段,而此時(shí)估算整個(gè)系統(tǒng)的花費(fèi)將增至50億美元。1994年底,F(xiàn)AA不得不承認(rèn)該項(xiàng)目失敗并進(jìn)行調(diào)查。作為調(diào)查的結(jié)果,F(xiàn)AA取消或修改了系統(tǒng)的四個(gè)主要部分。面臨當(dāng)前空中控制系統(tǒng)存在的隱患,F(xiàn)AA不得不訂購(gòu)了一套作為權(quán)宜之計(jì)的系統(tǒng),由另一家公司開發(fā)。 你認(rèn)為該項(xiàng)目的失敗反映了什么問題?失敗的主要原因可能是什么?FAA為什么選擇取消和修改的方式而不是增加資源和生產(chǎn)力的方式?

一、軟件危機(jī)1)案例思考1——FAA的失敗項(xiàng)目FAA對(duì)此項(xiàng)目調(diào)查總結(jié)出的原因?yàn)橐韵聨讞l:FAA并沒有明確掌握某些系統(tǒng)功能的需求。制定了過于急躁的開發(fā)和實(shí)現(xiàn)計(jì)劃(包括費(fèi)用與進(jìn)度的估計(jì))在給定的軟件復(fù)雜度下,沒有考慮到開發(fā)商的生產(chǎn)力,尤其是早期階段需要投入的資源。在《人月神話》一書中,Brooks將過去30年大型軟件項(xiàng)目的開發(fā)比喻為史前陷入瀝青坑的巨獸。恐龍、猛犸、劍齒虎等動(dòng)物在焦油中掙扎,然而掙扎得越激烈,就陷得越快,最終都沉到了坑底。過去的大型軟件項(xiàng)目中,大多數(shù)開發(fā)出了可運(yùn)行的系統(tǒng)——不過只有極少數(shù)滿足了目標(biāo)、進(jìn)度和預(yù)算的要求。表面上看起來沒有任何一個(gè)單獨(dú)的問題會(huì)導(dǎo)致困難,每個(gè)問題都能獲得解決,但這些問題糾纏和積累在一起時(shí),團(tuán)隊(duì)的行動(dòng)就越來越慢,并且很難再看清問題的本質(zhì)。FAA對(duì)此項(xiàng)目調(diào)查總結(jié)出的原因?yàn)橐韵聨讞l:在《人月神話》一書1995年美國(guó)的商業(yè)軟件失敗統(tǒng)計(jì):1995年美國(guó)的商業(yè)軟件失敗統(tǒng)計(jì):

一、軟件危機(jī)2、軟件危機(jī)

案例思考2——遺傳信息庫(kù)建設(shè) 在正在建設(shè)的遺傳信息庫(kù)如,假設(shè)你要開發(fā)一個(gè)管理軟件。你并不是一個(gè)生物遺傳方面的專家,甚至對(duì)此方面的知識(shí)一竅不通,你該如何入手?要使該項(xiàng)目成功,你認(rèn)為應(yīng)該有哪些保障條件?你的問題是什么:對(duì)遺傳信息的管理需要什么條件:了解遺傳信息的表示和管理流程如何實(shí)現(xiàn):與遺傳領(lǐng)域的專家交流。障礙是什么:難以溝通與交流。可能因誤解產(chǎn)生錯(cuò)誤的需求描述。

一、軟件危機(jī)案例思考2——遺傳信息庫(kù)建設(shè)你的問題是什么:對(duì)

一、軟件危機(jī)2、軟件危機(jī)

軟件項(xiàng)目為什么會(huì)失敗?

軟件項(xiàng)目失敗的核心問題在哪里?答案只有一個(gè):復(fù)雜性。軟件要解決的問題本身是復(fù)雜的開發(fā)人員一般不是該問題領(lǐng)域的專家軟件規(guī)模要求多人參與,而不同專業(yè)領(lǐng)域的人的交流是困難的軟件規(guī)模使得既要理解系統(tǒng)整體結(jié)構(gòu)又要把握細(xì)節(jié)比較困難。

一、軟件危機(jī)軟件項(xiàng)目為什么會(huì)失敗?軟件項(xiàng)目失敗的核心問題在例:Windows95有1000萬行代碼

Windows2000有5000萬行代碼Exchange2000和Windows2000開發(fā)人員結(jié)構(gòu)Exchange2000Windows2000項(xiàng)目經(jīng)理25人約250人開發(fā)人員140人約1700人測(cè)試人員350人約3200人例:Windows95有1000萬行代碼Exchange20

一、軟件危機(jī)2、軟件危機(jī)

2)軟件神話

[1]管理神話神話:有關(guān)軟件開發(fā)的理論和方法已經(jīng)很豐富,有很多可用的標(biāo)準(zhǔn)與規(guī)范,因而可以保證軟件開發(fā)的順利進(jìn)行。現(xiàn)實(shí):理論與方法在大多數(shù)實(shí)踐中并沒有得到真正的應(yīng)用。使用者并沒有對(duì)這些理論與方法建立正確的認(rèn)識(shí)。神話:已經(jīng)有很多強(qiáng)大的開發(fā)工具和先進(jìn)的計(jì)算機(jī)硬件,這些可以保證軟件開發(fā)的質(zhì)量與效率。現(xiàn)實(shí):這些工具并沒有得到合理的應(yīng)用。神話:如果我們落后于進(jìn)度,可以通過增加人手來趕上。現(xiàn)實(shí):向一個(gè)已經(jīng)延遲的項(xiàng)目增加人手,只會(huì)使延遲的項(xiàng)目更加落后——除非項(xiàng)目中不需要交流。生一個(gè)孩子10個(gè)月,無論有多少人。

一、軟件危機(jī)2)軟件神話[1]管理神話

一、軟件危機(jī)2、軟件危機(jī)

2)軟件神話

[1]管理神話神話:通過把軟件項(xiàng)目外包給實(shí)現(xiàn)強(qiáng)大的軟件開發(fā)公司可以保證軟件的成功。現(xiàn)實(shí):再專業(yè)的軟件公司,不了解客戶的需求和業(yè)務(wù)流程,也不可能順利完成軟件開發(fā)項(xiàng)目。

一、軟件危機(jī)2)軟件神話[1]管理神話改正一個(gè)問題需付出的代價(jià)需求分析結(jié)構(gòu)設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼集成測(cè)試系統(tǒng)測(cè)試現(xiàn)場(chǎng)改正一個(gè)問題的估計(jì)費(fèi)用改正一個(gè)問題估計(jì)的工作量20200200010005.02.50.050.5(美元)(人天)改正一個(gè)問題需付出的代價(jià)需結(jié)構(gòu)設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼集成測(cè)試系統(tǒng)測(cè)

一、軟件危機(jī)2、軟件危機(jī)

2)軟件神話

[2]客戶神話神話:有了目標(biāo)系統(tǒng)的一般性描述就可以寫程序了,細(xì)節(jié)可以逐步完善。現(xiàn)實(shí):糟糕的系統(tǒng)定義是項(xiàng)目失敗的主要原因。關(guān)于問題域、功能、行為、性能、接口、設(shè)計(jì)約束以及確認(rèn)標(biāo)準(zhǔn)的形式化的、詳細(xì)的描述是必要的,這些內(nèi)容只能通過客戶與開發(fā)者之間的交流才能確定。神話:軟件需求是經(jīng)常變更的,而這些變更可以容易的被滿足,因?yàn)檐浖庆`活的。現(xiàn)實(shí):軟件需求確實(shí)是容易變更的,但變更的代價(jià)將隨軟件開發(fā)的進(jìn)度不同而有很大的差異。如果重新項(xiàng)目早期的問題定義,需求變化則很容易被調(diào)節(jié),而項(xiàng)目后期需求變更的代價(jià)可能是致命的。

一、軟件危機(jī)2)軟件神話[2]客戶神話

一、軟件危機(jī)2、軟件危機(jī)

2)軟件神話[3]實(shí)踐者的神話神話:軟件是藝術(shù),軟件開發(fā)是個(gè)人的舞臺(tái)。現(xiàn)實(shí):50年代可能是,現(xiàn)在不是。神話:一旦寫完了程序并能正常運(yùn)行,我們的工作就結(jié)束了。現(xiàn)實(shí):越早開始寫代碼,軟件開發(fā)花費(fèi)的時(shí)間就越長(zhǎng)。統(tǒng)計(jì)表明60%到80%的工作量是花在將軟件第一次交付給客戶以后發(fā)生的。神話:程序真正運(yùn)行以前,沒有辦法評(píng)估其質(zhì)量。現(xiàn)實(shí):高質(zhì)量的實(shí)現(xiàn)來自高質(zhì)量的設(shè)計(jì)。從項(xiàng)目一開始就必須進(jìn)行技術(shù)評(píng)審。神話:項(xiàng)目的成功來自于可運(yùn)行程序的提交。軟件開發(fā)過程中的文檔是不必要的,延緩項(xiàng)目進(jìn)度的東西。現(xiàn)實(shí):軟件項(xiàng)目的成果包含很多內(nèi)容,文檔是成功開發(fā)的基礎(chǔ),也是軟件質(zhì)量的保證。好的開發(fā)質(zhì)量降低了重復(fù)勞動(dòng),從而提高了效率,導(dǎo)致更短的交付時(shí)間。

一、軟件危機(jī)2)軟件神話[3]實(shí)踐者的神話

一、軟件危機(jī)2、軟件危機(jī)

3)軟件危機(jī)及主要表現(xiàn)軟件危機(jī)指在計(jì)算機(jī)軟件開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題——軟件開發(fā)不能滿足日益增長(zhǎng)的需求;難以維護(hù)不斷增長(zhǎng)的已有軟件。[1]成本與進(jìn)度的估計(jì)[2]用戶需求與產(chǎn)品不一致[3]軟件可靠性差[4]可維護(hù)性差[5]文檔資料不完整[6]軟件成本比例不斷上升[7]開發(fā)生產(chǎn)率相對(duì)停滯

一、軟件危機(jī)3)軟件危機(jī)及主要表現(xiàn)軟件危機(jī)指在計(jì)算機(jī)軟件開一、軟件危機(jī)2、軟件危機(jī)

3)軟件項(xiàng)目成敗的因素分析1)失敗項(xiàng)目的主要原因[1]用戶需求不完整、被誤解或經(jīng)常變化[2]有限的用戶參與[3]缺少行政支持[4]缺少技術(shù)支持[5]項(xiàng)目計(jì)劃不充分[6]目標(biāo)不明確[7]沒有足夠的資源(客戶沒有提供/開發(fā)者不具備相應(yīng)生產(chǎn)力)2)成功項(xiàng)目的主要原因[1]大量的用戶參與[2]上層管理人員的支持[3]完整、詳細(xì)的項(xiàng)目計(jì)劃[4]符合實(shí)際的工作進(jìn)度與里程碑[5]開發(fā)人員的培訓(xùn)、交流[6]良好的工作環(huán)境、團(tuán)隊(duì)協(xié)作機(jī)制一、軟件危機(jī)3)軟件項(xiàng)目成敗的因素分析1)失敗項(xiàng)目的主要原因一、軟件危機(jī)2、軟件危機(jī)

3)消除軟件危機(jī)的思路——[1]正確的觀念a)軟件不是程序軟件是邏輯產(chǎn)品而不是實(shí)物產(chǎn)品軟件的功能依賴于硬件和軟件的運(yùn)行環(huán)境以及人們對(duì)它的操作軟件特征:功能的多樣性實(shí)現(xiàn)的多樣性能見度低軟件結(jié)構(gòu)合理性差智力密集及知識(shí)產(chǎn)權(quán)保護(hù)b)軟件開發(fā)不是個(gè)體勞動(dòng)軟件設(shè)計(jì)的復(fù)雜性一、軟件危機(jī)3)消除軟件危機(jī)的思路——[1]正確的觀念a)軟一、軟件危機(jī)2、軟件危機(jī)

3)消除軟件危機(jī)的思路——[2]正確的過程管理與控制軟件開發(fā)技術(shù):軟件開發(fā)方法軟件開發(fā)過程軟件工具和軟件工程環(huán)境軟件工程管理:軟件管理軟件經(jīng)濟(jì)軟件心理一、軟件危機(jī)3)消除軟件危機(jī)的思路——[2]正確的過程管理與二、軟件工程1、軟件工程將工程管理思想引入軟件開發(fā)過程:

轉(zhuǎn)變對(duì)軟件的認(rèn)識(shí):上升程序系統(tǒng)轉(zhuǎn)變思維定式:上升程序員系統(tǒng)工程師(系統(tǒng)分析員)

工程化訓(xùn)練二、軟件工程轉(zhuǎn)變對(duì)軟件的認(rèn)識(shí):二、軟件工程1、軟件工程將工程管理思想引入軟件開發(fā)過程:

二、軟件工程用戶分析員程序員用戶分析員程序員“一個(gè)好的工業(yè),應(yīng)有一套

良好的標(biāo)準(zhǔn)來配套”軟件的工業(yè)化生產(chǎn)過程應(yīng)具備的特點(diǎn):明確的工作步驟詳細(xì)具體的規(guī)范化文檔明確的質(zhì)量評(píng)價(jià)標(biāo)準(zhǔn)“一個(gè)好的工業(yè),應(yīng)有一套

良好的標(biāo)準(zhǔn)來配套”軟件的工業(yè)化生產(chǎn)軟件產(chǎn)品的標(biāo)準(zhǔn)化軟件開發(fā)過程的標(biāo)準(zhǔn)化軟件產(chǎn)品的標(biāo)準(zhǔn)化軟件開發(fā)過程的標(biāo)準(zhǔn)化

強(qiáng)調(diào)規(guī)范化強(qiáng)調(diào)文檔化軟件工程技術(shù)的兩個(gè)明顯特點(diǎn):強(qiáng)調(diào)規(guī)范化軟件工程技術(shù)的兩個(gè)明顯特點(diǎn):二、軟件工程1、軟件工程FritzBauer在NATO會(huì)議上給出的定義:“軟件工程是為了經(jīng)濟(jì)地獲得可靠的和能在實(shí)際機(jī)器上高效運(yùn)行的軟件而確立和使用的健全的工程原理(方法)。”

二、軟件工程二、軟件工程1、軟件工程IEEE【IEE83】給出的軟件工程定義:“軟件工程是開發(fā)、運(yùn)行、維護(hù)和修復(fù)軟件的系統(tǒng)方法。”

二、軟件工程二、軟件工程1、軟件工程

IEEE【IEE93】給出了一個(gè)更加綜合的定義:“將系統(tǒng)化的、規(guī)范的、可度量的方法應(yīng)用于軟件的開發(fā)、運(yùn)行和維護(hù)的過程,即將工程化應(yīng)用于軟件中。”二、軟件工程二、軟件工程1、軟件工程

軟件工程是應(yīng)用計(jì)算機(jī)科學(xué)、數(shù)學(xué)及管理科學(xué)等原理開發(fā)軟件的工程。它借鑒傳統(tǒng)工程的原則、方法,以提高質(zhì)量,降低成本為目的。軟件工程所包含的內(nèi)容不是一成不變的,而是隨著人們對(duì)軟件系統(tǒng)的研制開發(fā)和生產(chǎn)的理解不斷發(fā)展變化,應(yīng)該用發(fā)展的眼光看待。二、軟件工程軟件工程所包含的內(nèi)容不是一成不變的,而是隨著人們二、軟件工程1、軟件工程軟件工程是一種層次化的活動(dòng),a)質(zhì)量——軟件工程的根基與目標(biāo)b)過程——建造一個(gè)高質(zhì)量軟件所需完成任務(wù)的框架c)方法——提供了如何建造軟件的技術(shù)手段d)工具——為過程和方法提供自動(dòng)或半自動(dòng)化的支持(CASE)二、軟件工程軟件工程是一種層次化的活動(dòng),a)質(zhì)量——軟件工程工具方法過程質(zhì)量焦點(diǎn)工具方法過程質(zhì)量焦點(diǎn)二、軟件工程2、軟件工程一般視圖

工程:對(duì)技術(shù)(或社會(huì))實(shí)體的分析、設(shè)計(jì)、構(gòu)造、驗(yàn)證和管理。首先要問題的問題: 要解決什么問題? 實(shí)體的什么特征能解決這個(gè)問題? 如何設(shè)計(jì)該實(shí)體? 如何構(gòu)建該實(shí)體? 如何控制和避免構(gòu)建過程中的錯(cuò)誤? 如何在用戶要求修改、適應(yīng)和增強(qiáng)時(shí)長(zhǎng)期地支持這些實(shí)體?定義階段:做什么開發(fā)階段:如何做支持階段:應(yīng)對(duì)變化項(xiàng)目跟蹤與控制技術(shù)評(píng)審質(zhì)量保證軟件配置管理文檔管理復(fù)用管理測(cè)試管理風(fēng)險(xiǎn)管理支持活動(dòng)二、軟件工程工程:對(duì)技術(shù)(或社會(huì))實(shí)體的分析、設(shè)計(jì)、構(gòu)造、驗(yàn)軟件工程框架可用性性性確正合算選取適宜的開發(fā)模型采用合適的設(shè)計(jì)方法提供高質(zhì)量的工程支持重視軟件工程的管理基本過程原則

目標(biāo)過

程支持過程組織過程軟件工程框架可用性性性確正合算選取適宜的開發(fā)模型采用合適的設(shè)軟件過程評(píng)估軟件能力成熟度CMM1-初始級(jí):沒有過程定義,個(gè)人能力。2-可重復(fù)級(jí):基本項(xiàng)目管理過程,跟蹤費(fèi)用與進(jìn)度,有必要的規(guī)范以重復(fù)類似項(xiàng)目的成功。3-定義級(jí):過程管理文檔化、標(biāo)準(zhǔn)化、集成化。使用統(tǒng)一的文檔化的組織過程認(rèn)可的方法開發(fā)和維護(hù)軟件。4-管理級(jí):對(duì)軟件過程與產(chǎn)品質(zhì)量進(jìn)行詳細(xì)地定量地收集與評(píng)估5-優(yōu)化級(jí):通過定量反饋不斷進(jìn)行過程優(yōu)化與改進(jìn)。軟件過程評(píng)估軟件能力成熟度CMM二、軟件工程3、軟件開發(fā)過程——軟件生命周期軟件產(chǎn)品或軟件系統(tǒng)從設(shè)計(jì)、投入使用到被淘汰的全過程。二、軟件工程軟件生存期的階段劃分(1)可行性研究與計(jì)劃(2)需求分析(3)總體設(shè)計(jì)(4)詳細(xì)設(shè)計(jì)(5)實(shí)現(xiàn)(6)集成測(cè)試(7)確認(rèn)測(cè)試(8)使用和維護(hù)軟件生存期的階段劃分(1)可行性研究與計(jì)劃二、軟件工程3、軟件開發(fā)過程——軟件開發(fā)模型軟件開發(fā)模型是軟件開發(fā)全部過程、活動(dòng)和任務(wù)的結(jié)構(gòu)框架。它能直觀表達(dá)軟件開發(fā)全過程,明確規(guī)定要完成的主要活動(dòng)、任務(wù)和開發(fā)策略。軟件開發(fā)模型也常稱為:軟件過程模型軟件生存期模型軟件工程范型二、軟件工程二、軟件工程2、軟件開發(fā)過程——瀑布模型可行性研究與計(jì)劃需求分析設(shè)計(jì)編碼運(yùn)行維護(hù)測(cè)試定義階段開發(fā)階段維護(hù)階段二、軟件工程可行性研究與計(jì)劃需求分析設(shè)計(jì)編碼運(yùn)行維護(hù)測(cè)試定義按照傳統(tǒng)瀑布模型開發(fā)軟件的特點(diǎn)1.階段間具有順序性和依賴性。2.推遲實(shí)現(xiàn)的觀點(diǎn)。3.每個(gè)階段必須完成規(guī)定的文檔;每個(gè)階段結(jié)束前完成文檔審查,及早改正錯(cuò)誤。按照傳統(tǒng)瀑布模型開發(fā)軟件的特點(diǎn)1.階段間具有順序性和依賴性。二、軟件工程2、軟件開發(fā)過程——原型模型建造/修改原型用戶測(cè)試運(yùn)行原型

聽取用戶意見二、軟件工程建造/修改用戶測(cè)試聽取用采用原型模型的軟件生存周期分析定義系統(tǒng)需求生成原型系統(tǒng)設(shè)計(jì)程序設(shè)計(jì)編碼測(cè)試運(yùn)行和維護(hù)原型化含原型化的軟件生存期采用原型模型的軟件生存周期分析定義生成系統(tǒng)程序編碼測(cè)試運(yùn)行二、軟件工程2、軟件開發(fā)過程——增量模型先完成一個(gè)系統(tǒng)子集的開發(fā),再按同樣的開發(fā)步驟增加功能(系統(tǒng)子集),如此遞增下去直至滿足全部系統(tǒng)需求。系統(tǒng)的總體設(shè)計(jì)在初始子集設(shè)計(jì)階段就應(yīng)作出設(shè)想。

二、軟件工程分析增量模型設(shè)計(jì)編碼測(cè)試分析設(shè)計(jì)編碼測(cè)試分析設(shè)計(jì)編碼測(cè)試分析設(shè)計(jì)編碼測(cè)試增量1增量2增量3增量n

增量1交付客戶

增量2交付客戶

增量3交付客戶增量n交付客戶日歷時(shí)間…..分析增量模型設(shè)計(jì)編碼測(cè)試分析設(shè)計(jì)編碼測(cè)試分析風(fēng)險(xiǎn)分析工程實(shí)施用戶通信用戶評(píng)估產(chǎn)品維護(hù)項(xiàng)目產(chǎn)品增強(qiáng)項(xiàng)目新產(chǎn)品開發(fā)項(xiàng)目概念開發(fā)項(xiàng)目計(jì)劃建造及發(fā)布2、軟件開發(fā)過程——螺旋模型風(fēng)險(xiǎn)工程用戶通信用戶產(chǎn)品維護(hù)項(xiàng)目產(chǎn)品增強(qiáng)項(xiàng)目新產(chǎn)品開發(fā)項(xiàng)目概V1.0功能時(shí)間V2.0V1.1V1.0功時(shí)間V2.0V1.1二、軟件工程進(jìn)一步開發(fā)實(shí)現(xiàn)和集成階段運(yùn)行狀態(tài)實(shí)現(xiàn)階段計(jì)劃階段面向?qū)ο蠓治鲭A段需求階段維護(hù)期2、軟件開發(fā)過程——噴泉模型二、軟件工程進(jìn)一步開發(fā)實(shí)現(xiàn)和集成階段運(yùn)行狀態(tài)實(shí)現(xiàn)階段計(jì)劃階段2、軟件開發(fā)過程——組件模型與軟件生產(chǎn)線應(yīng)用構(gòu)件提取車間應(yīng)用構(gòu)件庫(kù)構(gòu)件生產(chǎn)車間構(gòu)件庫(kù)組裝車間領(lǐng)域1領(lǐng)域2應(yīng)用系統(tǒng)...12341基礎(chǔ)構(gòu)件,2功能構(gòu)件3接口構(gòu)件,4用戶界面構(gòu)件2、軟件開發(fā)過程——組件模型與軟件生產(chǎn)線應(yīng)用構(gòu)件應(yīng)用構(gòu)件生第七章軟件系統(tǒng)開發(fā)與軟件工程方法

一、軟件危機(jī)二、軟件工程第七章軟件系統(tǒng)開發(fā)與軟件工程方法一、軟件危機(jī)

一、軟件危機(jī)1、軟件開發(fā)的發(fā)展歷程

19601970198019902000

早期

第二階段第三階段第四階段面向批處理

多用戶

分布式系統(tǒng)

強(qiáng)大的桌面系統(tǒng)有限的分布

實(shí)時(shí)

嵌入“智能”面向?qū)ο蠹夹g(shù)自定義軟件

數(shù)據(jù)庫(kù)

低成本硬件

專家系統(tǒng)開發(fā)者=使用者

軟件產(chǎn)品

人工神經(jīng)網(wǎng)絡(luò)

并行計(jì)算

網(wǎng)絡(luò)計(jì)算機(jī)

一、軟件危機(jī)19601970198019902000

一、軟件危機(jī)2、軟件危機(jī)

1)案例思考1——FAA的失敗項(xiàng)目 20世紀(jì)80年代中期,更換空中交通控制系統(tǒng)已成為美國(guó)聯(lián)邦航空管理局(FAA)非常優(yōu)先的任務(wù)。1989年IBM公司獲得更換該系統(tǒng)的合同,截止期為2001年,預(yù)計(jì)投入25億美元。由于面臨著極苛刻的需求,該軟件項(xiàng)目是已進(jìn)行的最復(fù)雜的項(xiàng)目之一。例如,交通控制系統(tǒng)必須具備全局完整性并且每周7天,每天24小時(shí)不能停止工作,甚至在升級(jí)時(shí)或正常維護(hù)時(shí),也不允許有停頓時(shí)間。任何錯(cuò)誤的數(shù)據(jù)都會(huì)引起重大傷亡,任何停機(jī)均會(huì)導(dǎo)致世界范圍的出行延誤或潛在的危險(xiǎn)。該系統(tǒng)的反應(yīng)時(shí)間不能超過2-3秒。此外,該系統(tǒng)設(shè)計(jì)時(shí)必須考慮到允許私人飛機(jī)駕駛員繼續(xù)使用舊設(shè)備,并要求軟件能在未來移植到更新的硬件設(shè)備上。當(dāng)IBM獲得該合同后,該系統(tǒng)的主要花費(fèi)為軟件開發(fā),用于硬件的投入僅為8萬美元。1993年,負(fù)責(zé)該項(xiàng)目的IBM子公司——IBM聯(lián)邦系統(tǒng)公司被IBM賣給了Loral公司。到1994年,該系統(tǒng)已花費(fèi)了23億美元,但尚未提交系統(tǒng)的任何程序段,而此時(shí)估算整個(gè)系統(tǒng)的花費(fèi)將增至50億美元。1994年底,F(xiàn)AA不得不承認(rèn)該項(xiàng)目失敗并進(jìn)行調(diào)查。作為調(diào)查的結(jié)果,F(xiàn)AA取消或修改了系統(tǒng)的四個(gè)主要部分。面臨當(dāng)前空中控制系統(tǒng)存在的隱患,F(xiàn)AA不得不訂購(gòu)了一套作為權(quán)宜之計(jì)的系統(tǒng),由另一家公司開發(fā)。 你認(rèn)為該項(xiàng)目的失敗反映了什么問題?失敗的主要原因可能是什么?FAA為什么選擇取消和修改的方式而不是增加資源和生產(chǎn)力的方式?

一、軟件危機(jī)1)案例思考1——FAA的失敗項(xiàng)目FAA對(duì)此項(xiàng)目調(diào)查總結(jié)出的原因?yàn)橐韵聨讞l:FAA并沒有明確掌握某些系統(tǒng)功能的需求。制定了過于急躁的開發(fā)和實(shí)現(xiàn)計(jì)劃(包括費(fèi)用與進(jìn)度的估計(jì))在給定的軟件復(fù)雜度下,沒有考慮到開發(fā)商的生產(chǎn)力,尤其是早期階段需要投入的資源。在《人月神話》一書中,Brooks將過去30年大型軟件項(xiàng)目的開發(fā)比喻為史前陷入瀝青坑的巨獸。恐龍、猛犸、劍齒虎等動(dòng)物在焦油中掙扎,然而掙扎得越激烈,就陷得越快,最終都沉到了坑底。過去的大型軟件項(xiàng)目中,大多數(shù)開發(fā)出了可運(yùn)行的系統(tǒng)——不過只有極少數(shù)滿足了目標(biāo)、進(jìn)度和預(yù)算的要求。表面上看起來沒有任何一個(gè)單獨(dú)的問題會(huì)導(dǎo)致困難,每個(gè)問題都能獲得解決,但這些問題糾纏和積累在一起時(shí),團(tuán)隊(duì)的行動(dòng)就越來越慢,并且很難再看清問題的本質(zhì)。FAA對(duì)此項(xiàng)目調(diào)查總結(jié)出的原因?yàn)橐韵聨讞l:在《人月神話》一書1995年美國(guó)的商業(yè)軟件失敗統(tǒng)計(jì):1995年美國(guó)的商業(yè)軟件失敗統(tǒng)計(jì):

一、軟件危機(jī)2、軟件危機(jī)

案例思考2——遺傳信息庫(kù)建設(shè) 在正在建設(shè)的遺傳信息庫(kù)如,假設(shè)你要開發(fā)一個(gè)管理軟件。你并不是一個(gè)生物遺傳方面的專家,甚至對(duì)此方面的知識(shí)一竅不通,你該如何入手?要使該項(xiàng)目成功,你認(rèn)為應(yīng)該有哪些保障條件?你的問題是什么:對(duì)遺傳信息的管理需要什么條件:了解遺傳信息的表示和管理流程如何實(shí)現(xiàn):與遺傳領(lǐng)域的專家交流。障礙是什么:難以溝通與交流。可能因誤解產(chǎn)生錯(cuò)誤的需求描述。

一、軟件危機(jī)案例思考2——遺傳信息庫(kù)建設(shè)你的問題是什么:對(duì)

一、軟件危機(jī)2、軟件危機(jī)

軟件項(xiàng)目為什么會(huì)失敗?

軟件項(xiàng)目失敗的核心問題在哪里?答案只有一個(gè):復(fù)雜性。軟件要解決的問題本身是復(fù)雜的開發(fā)人員一般不是該問題領(lǐng)域的專家軟件規(guī)模要求多人參與,而不同專業(yè)領(lǐng)域的人的交流是困難的軟件規(guī)模使得既要理解系統(tǒng)整體結(jié)構(gòu)又要把握細(xì)節(jié)比較困難。

一、軟件危機(jī)軟件項(xiàng)目為什么會(huì)失敗?軟件項(xiàng)目失敗的核心問題在例:Windows95有1000萬行代碼

Windows2000有5000萬行代碼Exchange2000和Windows2000開發(fā)人員結(jié)構(gòu)Exchange2000Windows2000項(xiàng)目經(jīng)理25人約250人開發(fā)人員140人約1700人測(cè)試人員350人約3200人例:Windows95有1000萬行代碼Exchange20

一、軟件危機(jī)2、軟件危機(jī)

2)軟件神話

[1]管理神話神話:有關(guān)軟件開發(fā)的理論和方法已經(jīng)很豐富,有很多可用的標(biāo)準(zhǔn)與規(guī)范,因而可以保證軟件開發(fā)的順利進(jìn)行。現(xiàn)實(shí):理論與方法在大多數(shù)實(shí)踐中并沒有得到真正的應(yīng)用。使用者并沒有對(duì)這些理論與方法建立正確的認(rèn)識(shí)。神話:已經(jīng)有很多強(qiáng)大的開發(fā)工具和先進(jìn)的計(jì)算機(jī)硬件,這些可以保證軟件開發(fā)的質(zhì)量與效率。現(xiàn)實(shí):這些工具并沒有得到合理的應(yīng)用。神話:如果我們落后于進(jìn)度,可以通過增加人手來趕上。現(xiàn)實(shí):向一個(gè)已經(jīng)延遲的項(xiàng)目增加人手,只會(huì)使延遲的項(xiàng)目更加落后——除非項(xiàng)目中不需要交流。生一個(gè)孩子10個(gè)月,無論有多少人。

一、軟件危機(jī)2)軟件神話[1]管理神話

一、軟件危機(jī)2、軟件危機(jī)

2)軟件神話

[1]管理神話神話:通過把軟件項(xiàng)目外包給實(shí)現(xiàn)強(qiáng)大的軟件開發(fā)公司可以保證軟件的成功。現(xiàn)實(shí):再專業(yè)的軟件公司,不了解客戶的需求和業(yè)務(wù)流程,也不可能順利完成軟件開發(fā)項(xiàng)目。

一、軟件危機(jī)2)軟件神話[1]管理神話改正一個(gè)問題需付出的代價(jià)需求分析結(jié)構(gòu)設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼集成測(cè)試系統(tǒng)測(cè)試現(xiàn)場(chǎng)改正一個(gè)問題的估計(jì)費(fèi)用改正一個(gè)問題估計(jì)的工作量20200200010005.02.50.050.5(美元)(人天)改正一個(gè)問題需付出的代價(jià)需結(jié)構(gòu)設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼集成測(cè)試系統(tǒng)測(cè)

一、軟件危機(jī)2、軟件危機(jī)

2)軟件神話

[2]客戶神話神話:有了目標(biāo)系統(tǒng)的一般性描述就可以寫程序了,細(xì)節(jié)可以逐步完善。現(xiàn)實(shí):糟糕的系統(tǒng)定義是項(xiàng)目失敗的主要原因。關(guān)于問題域、功能、行為、性能、接口、設(shè)計(jì)約束以及確認(rèn)標(biāo)準(zhǔn)的形式化的、詳細(xì)的描述是必要的,這些內(nèi)容只能通過客戶與開發(fā)者之間的交流才能確定。神話:軟件需求是經(jīng)常變更的,而這些變更可以容易的被滿足,因?yàn)檐浖庆`活的。現(xiàn)實(shí):軟件需求確實(shí)是容易變更的,但變更的代價(jià)將隨軟件開發(fā)的進(jìn)度不同而有很大的差異。如果重新項(xiàng)目早期的問題定義,需求變化則很容易被調(diào)節(jié),而項(xiàng)目后期需求變更的代價(jià)可能是致命的。

一、軟件危機(jī)2)軟件神話[2]客戶神話

一、軟件危機(jī)2、軟件危機(jī)

2)軟件神話[3]實(shí)踐者的神話神話:軟件是藝術(shù),軟件開發(fā)是個(gè)人的舞臺(tái)。現(xiàn)實(shí):50年代可能是,現(xiàn)在不是。神話:一旦寫完了程序并能正常運(yùn)行,我們的工作就結(jié)束了。現(xiàn)實(shí):越早開始寫代碼,軟件開發(fā)花費(fèi)的時(shí)間就越長(zhǎng)。統(tǒng)計(jì)表明60%到80%的工作量是花在將軟件第一次交付給客戶以后發(fā)生的。神話:程序真正運(yùn)行以前,沒有辦法評(píng)估其質(zhì)量。現(xiàn)實(shí):高質(zhì)量的實(shí)現(xiàn)來自高質(zhì)量的設(shè)計(jì)。從項(xiàng)目一開始就必須進(jìn)行技術(shù)評(píng)審。神話:項(xiàng)目的成功來自于可運(yùn)行程序的提交。軟件開發(fā)過程中的文檔是不必要的,延緩項(xiàng)目進(jìn)度的東西。現(xiàn)實(shí):軟件項(xiàng)目的成果包含很多內(nèi)容,文檔是成功開發(fā)的基礎(chǔ),也是軟件質(zhì)量的保證。好的開發(fā)質(zhì)量降低了重復(fù)勞動(dòng),從而提高了效率,導(dǎo)致更短的交付時(shí)間。

一、軟件危機(jī)2)軟件神話[3]實(shí)踐者的神話

一、軟件危機(jī)2、軟件危機(jī)

3)軟件危機(jī)及主要表現(xiàn)軟件危機(jī)指在計(jì)算機(jī)軟件開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題——軟件開發(fā)不能滿足日益增長(zhǎng)的需求;難以維護(hù)不斷增長(zhǎng)的已有軟件。[1]成本與進(jìn)度的估計(jì)[2]用戶需求與產(chǎn)品不一致[3]軟件可靠性差[4]可維護(hù)性差[5]文檔資料不完整[6]軟件成本比例不斷上升[7]開發(fā)生產(chǎn)率相對(duì)停滯

一、軟件危機(jī)3)軟件危機(jī)及主要表現(xiàn)軟件危機(jī)指在計(jì)算機(jī)軟件開一、軟件危機(jī)2、軟件危機(jī)

3)軟件項(xiàng)目成敗的因素分析1)失敗項(xiàng)目的主要原因[1]用戶需求不完整、被誤解或經(jīng)常變化[2]有限的用戶參與[3]缺少行政支持[4]缺少技術(shù)支持[5]項(xiàng)目計(jì)劃不充分[6]目標(biāo)不明確[7]沒有足夠的資源(客戶沒有提供/開發(fā)者不具備相應(yīng)生產(chǎn)力)2)成功項(xiàng)目的主要原因[1]大量的用戶參與[2]上層管理人員的支持[3]完整、詳細(xì)的項(xiàng)目計(jì)劃[4]符合實(shí)際的工作進(jìn)度與里程碑[5]開發(fā)人員的培訓(xùn)、交流[6]良好的工作環(huán)境、團(tuán)隊(duì)協(xié)作機(jī)制一、軟件危機(jī)3)軟件項(xiàng)目成敗的因素分析1)失敗項(xiàng)目的主要原因一、軟件危機(jī)2、軟件危機(jī)

3)消除軟件危機(jī)的思路——[1]正確的觀念a)軟件不是程序軟件是邏輯產(chǎn)品而不是實(shí)物產(chǎn)品軟件的功能依賴于硬件和軟件的運(yùn)行環(huán)境以及人們對(duì)它的操作軟件特征:功能的多樣性實(shí)現(xiàn)的多樣性能見度低軟件結(jié)構(gòu)合理性差智力密集及知識(shí)產(chǎn)權(quán)保護(hù)b)軟件開發(fā)不是個(gè)體勞動(dòng)軟件設(shè)計(jì)的復(fù)雜性一、軟件危機(jī)3)消除軟件危機(jī)的思路——[1]正確的觀念a)軟一、軟件危機(jī)2、軟件危機(jī)

3)消除軟件危機(jī)的思路——[2]正確的過程管理與控制軟件開發(fā)技術(shù):軟件開發(fā)方法軟件開發(fā)過程軟件工具和軟件工程環(huán)境軟件工程管理:軟件管理軟件經(jīng)濟(jì)軟件心理一、軟件危機(jī)3)消除軟件危機(jī)的思路——[2]正確的過程管理與二、軟件工程1、軟件工程將工程管理思想引入軟件開發(fā)過程:

轉(zhuǎn)變對(duì)軟件的認(rèn)識(shí):上升程序系統(tǒng)轉(zhuǎn)變思維定式:上升程序員系統(tǒng)工程師(系統(tǒng)分析員)

工程化訓(xùn)練二、軟件工程轉(zhuǎn)變對(duì)軟件的認(rèn)識(shí):二、軟件工程1、軟件工程將工程管理思想引入軟件開發(fā)過程:

二、軟件工程用戶分析員程序員用戶分析員程序員“一個(gè)好的工業(yè),應(yīng)有一套

良好的標(biāo)準(zhǔn)來配套”軟件的工業(yè)化生產(chǎn)過程應(yīng)具備的特點(diǎn):明確的工作步驟詳細(xì)具體的規(guī)范化文檔明確的質(zhì)量評(píng)價(jià)標(biāo)準(zhǔn)“一個(gè)好的工業(yè),應(yīng)有一套

良好的標(biāo)準(zhǔn)來配套”軟件的工業(yè)化生產(chǎn)軟件產(chǎn)品的標(biāo)準(zhǔn)化軟件開發(fā)過程的標(biāo)準(zhǔn)化軟件產(chǎn)品的標(biāo)準(zhǔn)化軟件開發(fā)過程的標(biāo)準(zhǔn)化

強(qiáng)調(diào)規(guī)范化強(qiáng)調(diào)文檔化軟件工程技術(shù)的兩個(gè)明顯特點(diǎn):強(qiáng)調(diào)規(guī)范化軟件工程技術(shù)的兩個(gè)明顯特點(diǎn):二、軟件工程1、軟件工程FritzBauer在NATO會(huì)議上給出的定義:“軟件工程是為了經(jīng)濟(jì)地獲得可靠的和能在實(shí)際機(jī)器上高效運(yùn)行的軟件而確立和使用的健全的工程原理(方法)。”

二、軟件工程二、軟件工程1、軟件工程IEEE【IEE83】給出的軟件工程定義:“軟件工程是開發(fā)、運(yùn)行、維護(hù)和修復(fù)軟件的系統(tǒng)方法。”

二、軟件工程二、軟件工程1、軟件工程

IEEE【IEE93】給出了一個(gè)更加綜合的定義:“將系統(tǒng)化的、規(guī)范的、可度量的方法應(yīng)用于軟件的開發(fā)、運(yùn)行和維護(hù)的過程,即將工程化應(yīng)用于軟件中。”二、軟件工程二、軟件工程1、軟件工程

軟件工程是應(yīng)用計(jì)算機(jī)科學(xué)、數(shù)學(xué)及管理科學(xué)等原理開發(fā)軟件的工程。它借鑒傳統(tǒng)工程的原則、方法,以提高質(zhì)量,降低成本為目的。軟件工程所包含的內(nèi)容不是一成不變的,而是隨著人們對(duì)軟件系統(tǒng)的研制開發(fā)和生產(chǎn)的理解不斷發(fā)展變化,應(yīng)該用發(fā)展的眼光看待。二、軟件工程軟件工程所包含的內(nèi)容不是一成不變的,而是隨著人們二、軟件工程1、軟件工程軟件工程是一種層次化的活動(dòng),a)質(zhì)量——軟件工程的根基與目標(biāo)b)過程——建造一個(gè)高質(zhì)量軟件所需完成任務(wù)的框架c)方法——提供了如何建造軟件的技術(shù)手段d)工具——為過程和方法提供自動(dòng)或半自動(dòng)化的支持(CASE)二、軟件工程軟件工程是一種層次化的活動(dòng),a)質(zhì)量——軟件工程工具方法過程質(zhì)量焦點(diǎn)工具方法過程質(zhì)量焦點(diǎn)二、軟件工程2、軟件工程一般視圖

工程:對(duì)技術(shù)(或社會(huì))實(shí)體的分析、設(shè)計(jì)、構(gòu)造、驗(yàn)證和管理。首先要問題的問題: 要解決什么問題? 實(shí)體的什么特征能解決這個(gè)問題? 如何設(shè)計(jì)該實(shí)體? 如何構(gòu)建該實(shí)體? 如何控制和避免構(gòu)建過程中的錯(cuò)誤? 如何在用戶要求修改、適應(yīng)和增強(qiáng)時(shí)長(zhǎng)期地支持這些實(shí)體?定義階段:做什么開發(fā)階段:如何做支持階段:應(yīng)對(duì)變化項(xiàng)目跟蹤與控制技術(shù)評(píng)審質(zhì)量保證軟件配置管理文檔管理復(fù)用管理測(cè)試管理風(fēng)險(xiǎn)管理支持活動(dòng)二、軟件工程工程:對(duì)技術(shù)(或社會(huì))實(shí)體的分析、設(shè)計(jì)、構(gòu)造、驗(yàn)軟件工程框架可用性性性確正合算選取適宜的開發(fā)模型采用合適的設(shè)計(jì)方法提供高質(zhì)量的工程支持重視軟件工程的管理基本過程原則

目標(biāo)過

程支持過程組織過程軟件工程框架可用性性性確正合算選取適宜的開發(fā)模型采用合適的設(shè)軟件過程評(píng)估軟件能力成熟度CMM1-初始級(jí):沒有過程定義,個(gè)人能力。2-可重復(fù)級(jí):基本項(xiàng)目管理過程,跟蹤費(fèi)用與進(jìn)度,有必要的規(guī)范以重復(fù)類似項(xiàng)目的成功。3-

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論