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

下載本文檔

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

文檔簡介

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

一、軟件危機二、軟件工程

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

19601970198019902000

早期

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

多用戶

分布式系統(tǒng)

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

實時

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

數(shù)據(jù)庫

低成本硬件

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

軟件產(chǎn)品

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

并行計算

網(wǎng)絡計算機

一、軟件危機2、軟件危機

1)案例思考1——FAA的失敗項目 20世紀80年代中期,更換空中交通控制系統(tǒng)已成為美國聯(lián)邦航空管理局(FAA)非常優(yōu)先的任務。1989年IBM公司獲得更換該系統(tǒng)的合同,截止期為2001年,預計投入25億美元。由于面臨著極苛刻的需求,該軟件項目是已進行的最復雜的項目之一。例如,交通控制系統(tǒng)必須具備全局完整性并且每周7天,每天24小時不能停止工作,甚至在升級時或正常維護時,也不允許有停頓時間。任何錯誤的數(shù)據(jù)都會引起重大傷亡,任何停機均會導致世界范圍的出行延誤或潛在的危險。該系統(tǒng)的反應時間不能超過2-3秒。此外,該系統(tǒng)設(shè)計時必須考慮到允許私人飛機駕駛員繼續(xù)使用舊設(shè)備,并要求軟件能在未來移植到更新的硬件設(shè)備上。當IBM獲得該合同后,該系統(tǒng)的主要花費為軟件開發(fā),用于硬件的投入僅為8萬美元。1993年,負責該項目的IBM子公司——IBM聯(lián)邦系統(tǒng)公司被IBM賣給了Loral公司。到1994年,該系統(tǒng)已花費了23億美元,但尚未提交系統(tǒng)的任何程序段,而此時估算整個系統(tǒng)的花費將增至50億美元。1994年底,F(xiàn)AA不得不承認該項目失敗并進行調(diào)查。作為調(diào)查的結(jié)果,F(xiàn)AA取消或修改了系統(tǒng)的四個主要部分。面臨當前空中控制系統(tǒng)存在的隱患,F(xiàn)AA不得不訂購了一套作為權(quán)宜之計的系統(tǒng),由另一家公司開發(fā)。 你認為該項目的失敗反映了什么問題?失敗的主要原因可能是什么?FAA為什么選擇取消和修改的方式而不是增加資源和生產(chǎn)力的方式?FAA對此項目調(diào)查總結(jié)出的原因為以下幾條:FAA并沒有明確掌握某些系統(tǒng)功能的需求。制定了過于急躁的開發(fā)和實現(xiàn)計劃(包括費用與進度的估計)在給定的軟件復雜度下,沒有考慮到開發(fā)商的生產(chǎn)力,尤其是早期階段需要投入的資源。在《人月神話》一書中,Brooks將過去30年大型軟件項目的開發(fā)比喻為史前陷入瀝青坑的巨獸。恐龍、猛犸、劍齒虎等動物在焦油中掙扎,然而掙扎得越激烈,就陷得越快,最終都沉到了坑底。過去的大型軟件項目中,大多數(shù)開發(fā)出了可運行的系統(tǒng)——不過只有極少數(shù)滿足了目標、進度和預算的要求。表面上看起來沒有任何一個單獨的問題會導致困難,每個問題都能獲得解決,但這些問題糾纏和積累在一起時,團隊的行動就越來越慢,并且很難再看清問題的本質(zhì)。1995年美國的商業(yè)軟件失敗統(tǒng)計:

一、軟件危機2、軟件危機

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

一、軟件危機2、軟件危機

軟件項目為什么會失???

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

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

一、軟件危機2、軟件危機

2)軟件神話

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

一、軟件危機2、軟件危機

2)軟件神話

[1]管理神話神話:通過把軟件項目外包給實現(xiàn)強大的軟件開發(fā)公司可以保證軟件的成功?,F(xiàn)實:再專業(yè)的軟件公司,不了解客戶的需求和業(yè)務流程,也不可能順利完成軟件開發(fā)項目。改正一個問題需付出的代價需求分析結(jié)構(gòu)設(shè)計詳細設(shè)計編碼集成測試系統(tǒng)測試現(xiàn)場改正一個問題的估計費用改正一個問題估計的工作量20200200010005.02.50.050.5(美元)(人天)

一、軟件危機2、軟件危機

2)軟件神話

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

一、軟件危機2、軟件危機

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

一、軟件危機2、軟件危機

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

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

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

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

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

工程化訓練二、軟件工程1、軟件工程將工程管理思想引入軟件開發(fā)過程:

用戶分析員程序員“一個好的工業(yè),應有一套

良好的標準來配套”軟件的工業(yè)化生產(chǎn)過程應具備的特點:明確的工作步驟詳細具體的規(guī)范化文檔明確的質(zhì)量評價標準軟件產(chǎn)品的標準化軟件開發(fā)過程的標準化

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

二、軟件工程1、軟件工程IEEE【IEE83】給出的軟件工程定義:“軟件工程是開發(fā)、運行、維護和修復軟件的系統(tǒng)方法?!?/p>

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

IEEE【IEE93】給出了一個更加綜合的定義:“將系統(tǒng)化的、規(guī)范的、可度量的方法應用于軟件的開發(fā)、運行和維護的過程,即將工程化應用于軟件中?!倍④浖こ?、軟件工程

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

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

目標過

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

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

分析增量模型設(shè)計編碼測試分析設(shè)計編碼測試分析設(shè)計編碼測試分析設(shè)計編碼測試增量1增量2增量3增量n

增量1交付客戶

增量2交付客戶

增量3交付客戶增量n交付客戶日歷時間…..風險分析工程實施用戶通信用戶評估產(chǎn)品維護項目產(chǎn)品增強項目新產(chǎn)品開發(fā)項目概念開發(fā)項目計劃建造及發(fā)布2、軟件開發(fā)過程——螺旋模型V1.0功能時間V2.0V1.1二、軟件工程進一步開發(fā)實現(xiàn)和集成階段運行狀態(tài)實現(xiàn)階段計劃階段面向?qū)ο蠓治鲭A段需求階段維護期2、軟件開發(fā)過程——噴泉模型2、軟件開發(fā)過程——組件模型與軟件生產(chǎn)線應用構(gòu)件提取車間應用構(gòu)件庫構(gòu)件生產(chǎn)車間構(gòu)件庫組裝車間領(lǐng)域1領(lǐng)域2應用系統(tǒng)...12341基礎(chǔ)構(gòu)件,2功能構(gòu)件3接口構(gòu)件,4用戶界面構(gòu)件每一個優(yōu)秀的人,都有一段沉默的時光。那一段時光,是付出了很多努力,忍受孤獨和寂寞,不抱怨不訴苦,日后說起時,連自己都能被感動日子。。7月-237月-23Thursday,July27,2023企業(yè)的出路

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論