軟件危機(jī)與軟件工程_第1頁
軟件危機(jī)與軟件工程_第2頁
軟件危機(jī)與軟件工程_第3頁
軟件危機(jī)與軟件工程_第4頁
軟件危機(jī)與軟件工程_第5頁
已閱讀5頁,還剩126頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2023最新整理收集do

something第一部分:產(chǎn)品和過程2軟件業(yè)現(xiàn)狀軟件工程軟件和軟件危機(jī)第一部分:軟件和軟件工程現(xiàn)狀、發(fā)展歷史、問題軟件的概念、特點軟件危機(jī)的表現(xiàn)、原因概念、原理軟件過程模型第一部分:產(chǎn)品和過程41765年,春天的蘇格蘭...一位29歲的鐘表匠沒日沒夜地在他的實驗室中干著。他把他的管子和金屬柱接起來,把水加熱,測量其運(yùn)動,然后將其拆開,一次又一次。在四年多的時間里,他不斷地接上和拆開這些管子和金屬柱1769年1月5日,這位鐘表匠獲得了第一項專利5年后這項發(fā)明的首個實用模型完成。在此過程中,年輕的發(fā)明家?guī)状蚊媾R破產(chǎn),而且在他最終完成一個實用模型后,大多數(shù)人卻忽視了它又經(jīng)歷了20年的時間,世界才發(fā)現(xiàn)了它的潛力...第一部分:產(chǎn)品和過程5這就是被看作工業(yè)革命開始的生產(chǎn)力提高了100倍第一部分:產(chǎn)品和過程61978年,春天的波士頓...一名26歲正在哈佛讀MBA的學(xué)生正在進(jìn)行案例分析直到深夜。在其他學(xué)生用紙計算它們的財務(wù)數(shù)據(jù)時,這名擁有MIT計算機(jī)學(xué)位的學(xué)生已經(jīng)在一臺DEC小型機(jī)上進(jìn)行計算以節(jié)省時間。他同一個來自MIT的好朋友一起,花了好幾個月在他們的“實驗室”中尋求答案第一部分:產(chǎn)品和過程71978年,春天的波士頓...這兩位年輕的革新家就是DanBricklin&BobFrankston。他們的答案就是電子表格。他們將產(chǎn)品命名為VisiCalc第一部分:產(chǎn)品和過程81978年,春天的波士頓...1979年,VisiCalc引入到了AppleII型計算機(jī)。當(dāng)他們第一次將它展示給波士頓的一家計算機(jī)商店時,銷售人員覺得他有點意思,但看到它的商店會計卻開始發(fā)抖:需要20小時人工的預(yù)算編制被縮減到15分鐘。VisiCalc成了暢銷貨。6年里他 賣出了70萬套。它成了蘋果2型 計算機(jī)的“應(yīng)用王牌”。許多顧客 因為價值100美元的VisiCalc

軟件而購買2000美元的蘋果電腦第一部分:產(chǎn)品和過程91978年,春天的波士頓...1996年,IEEE表彰Bricklin為“我們今日所知的個人計算機(jī)市場興起的催化劑”。是獲得IEEE計算機(jī)企業(yè)家獎?wù)碌牡谝粋€軟件業(yè)領(lǐng)袖。在他之后才是AndyGrove、BillGates、SteveJobsPCMagazine將其評為“全球

10大最具影響力軟件”首位, 之后是WordStar,Apache, Mosaic,MacOS,Photoshop...第一部分:產(chǎn)品和過程10軟件:新的驅(qū)動力80年代初期,BusinessWeekly

在頭版給出了這樣一個大標(biāo)題:“軟件:新的驅(qū)動力”,編輯們當(dāng)時根本沒有意識到他們的預(yù)見是多么的正確。那時,大多數(shù)人對軟件還一無所知,大軟件公司如微軟還不存在;出售包裝好的軟件的計算機(jī)超市聞所未聞;在電視上為操作系統(tǒng)作60秒的商業(yè)廣告的想法是可笑的;互聯(lián)網(wǎng)僅為個別研究機(jī)構(gòu)和高校所知...第一部分:產(chǎn)品和過程1120年后...第一部分:產(chǎn)品和過程12帶翼的軟件Boeing7771995年問世,耗資40億美元高度復(fù)雜:300萬個部件軟件的全面介入:“設(shè)計飛機(jī)需要數(shù)千名專家,加上許多人工智能,在完成之前,美國和日本的1700個工作站已經(jīng)運(yùn)行了專門的CAD軟件,一旦飛機(jī)飛在空中,有400萬條完全沒有錯誤的指令在驅(qū)動他?!避浖<褽dwardYourdon評述到“Boeing777可以被看作是一串帶翼的軟件”第一部分:產(chǎn)品和過程13公路上的代碼BMW在1998年開展了一次全球范圍的廣告宣傳,廣告中阿波羅11號飛船正在直沖云霄。下面的文字為“當(dāng)您啟動BMW7系列時,您激活了20兆字節(jié)的計算能力...這比阿波羅11號的登月之旅中所用的還要多?!钡谝徊糠郑寒a(chǎn)品和過程14軟件已經(jīng)成為一種驅(qū)動力軟件——新興產(chǎn)業(yè)早期的軟件作為硬件的附屬品免費奉送80年代起,以微軟為首的一批軟件企業(yè)開始嶄露頭角,開辟了全新的獨立的軟件企業(yè),并逐漸取代硬件業(yè),成為信息產(chǎn)業(yè)中的最重要力量一些傳統(tǒng)制造業(yè)的公司,比如波音,從事與軟件相關(guān)的人員比例超過了一半第一部分:產(chǎn)品和過程15軟件已經(jīng)成為一種驅(qū)動力信息產(chǎn)業(yè)的“軟盛硬衰”據(jù)美國勞工部統(tǒng)計局的數(shù)據(jù)顯示,美國2002年從業(yè)硬件工程師約為74000,而軟件工程師約為675000硬件設(shè)計的“軟化”用硬件描述語言(如VHDL)來編程由軟件進(jìn)行初步的仿真試驗蓋茨于2004年3月的一次演講中更聲稱,10年后硬件雖然不會絕對免費,但基本上可以忽略不計第一部分:產(chǎn)品和過程16軟件已經(jīng)成為一種驅(qū)動力軟件的“硬化”軟件的復(fù)雜性使它難以修改和升級維護(hù)相應(yīng)的成本在上升WindowsXP中文專業(yè)版¥1690Office2003中文專業(yè)版¥3290Delphi7.0¥24800AutoCAD2004¥19800Photoshop7.0中文版¥8000第一部分:產(chǎn)品和過程17軟件的發(fā)展程序設(shè)計階段程序系統(tǒng)階段軟件工程階段第一部分:產(chǎn)品和過程18軟件的發(fā)展

程序設(shè)計階段50-60年代軟件所指程序編程語言機(jī)器、匯編語言軟件使用者程序設(shè)計者本人軟件開發(fā)組織個人軟件規(guī)模小型決定質(zhì)量的因素個人編程技術(shù)開發(fā)技術(shù)段子程序和程序庫硬件特征價格高,存儲容量小,可靠性差軟件特征完全不受重視第一部分:產(chǎn)品和過程19軟件的發(fā)展50-60年代

程序系統(tǒng)階段60-70年代

程序設(shè)計階段軟件所指程序及說明書編程語言高級語言軟件使用者少數(shù)用戶軟件開發(fā)組織開發(fā)小組軟件規(guī)模中小型決定質(zhì)量的因素小組技術(shù)水平開發(fā)技術(shù)段結(jié)構(gòu)化程序設(shè)計硬件特征降價,速度、容量、可靠性提高軟件特征軟件技術(shù)的發(fā)展不能滿足需要,出現(xiàn)軟件危機(jī)軟件所指程序編程語言機(jī)器、匯編語言軟件使用者程序設(shè)計者本人軟件開發(fā)組織個人軟件規(guī)模小型決定質(zhì)量的因素個人編程技術(shù)開發(fā)技術(shù)段子程序和程序庫硬件特征價格高,存儲容量小,可靠性差軟件特征完全不受重視第一部分:產(chǎn)品和過程20

程序系統(tǒng)階段

程序設(shè)計階段

軟件工程階段50-60年代70年代以后60-70年代軟件所指程序、文檔、數(shù)據(jù)編程語言軟件語言軟件使用者市場用戶軟件開發(fā)組織大中型開發(fā)機(jī)構(gòu)軟件規(guī)模大中小型決定質(zhì)量的因素技術(shù)和管理水平開發(fā)技術(shù)手段工程化開發(fā)方法、面向?qū)ο蠹败浖?fù)用硬件特征向超高速、大容量、微型化及網(wǎng)絡(luò)化方向發(fā)展軟件特征開發(fā)技術(shù)有進(jìn)步,但未完全擺脫軟件危機(jī)軟件的發(fā)展軟件所指程序及說明書編程語言高級語言軟件使用者少數(shù)用戶軟件開發(fā)組織開發(fā)小組軟件規(guī)模中小型決定質(zhì)量的因素小組技術(shù)水平開發(fā)技術(shù)段結(jié)構(gòu)化程序設(shè)計硬件特征降價,速度、容量、可靠性提高軟件特征軟件技術(shù)的發(fā)展不能滿足需要,出現(xiàn)軟件危機(jī)第一部分:產(chǎn)品和過程21當(dāng)前軟件產(chǎn)業(yè)的發(fā)展趨勢網(wǎng)絡(luò)化服務(wù)化全球化第一部分:產(chǎn)品和過程22背景材料:軟件外包外包企業(yè)做自己最能干的事情(揚(yáng)已所長)把其它的工作外包給能做好這些事情的專業(yè)組織(避已之短)哪些可以外包“藍(lán)領(lǐng)外包”:產(chǎn)品制造過程外包“白領(lǐng)外包”:即“服務(wù)外包”,比如IT服務(wù)、人力資源管理、金融、會計、客戶服務(wù)、研發(fā)、產(chǎn)品設(shè)計第一部分:產(chǎn)品和過程23背景材料:軟件外包外包業(yè)務(wù)的關(guān)鍵外包出去的一定是非核心業(yè)務(wù)核心、創(chuàng)新性工作一定要自己掌握服裝生產(chǎn)軟件生產(chǎn)第一部分:產(chǎn)品和過程25Softwareishard——DonaldKnuth,authorofTheArtofComputerProgramming第一部分:產(chǎn)品和過程26軟件危機(jī)軟件危機(jī)SoftwareCrisis在軟件開發(fā)和維護(hù)過程中遇到的一系列嚴(yán)重的問題第一部分:產(chǎn)品和過程27軟件危機(jī)數(shù)據(jù)11999年,美國StandishGroup對當(dāng)年美國的軟件項目的統(tǒng)計:第一部分:產(chǎn)品和過程28軟件危機(jī)這些有問題或失敗的項目帶來的直接損失為970億美元,占當(dāng)年全美IT投資額(2550億)的近40%所有的項目中平均超期189%平均超預(yù)算222%80%的資源被開銷在維護(hù)上第一部分:產(chǎn)品和過程29軟件危機(jī)數(shù)據(jù)2根據(jù)美國國家標(biāo)準(zhǔn)和技術(shù)學(xué)會(NationalInstituteofStandardsandTechnology)2002的研究:軟件錯誤每年造成美國$595億的損失2/3的項目明顯延遲或超出預(yù)算,甚至無疾而終第一部分:產(chǎn)品和過程30軟件危機(jī):表現(xiàn)具體表現(xiàn)有:成本和進(jìn)度估計不準(zhǔn)用戶與開發(fā)人員交流不充分,產(chǎn)品不合用戶要求軟件質(zhì)量無保障軟件可維護(hù)性差無文檔資料是軟件質(zhì)量主要原因軟件成本占計算機(jī)系統(tǒng)比例上升軟件開發(fā)生產(chǎn)效率低,供不應(yīng)求第一部分:產(chǎn)品和過程31Intheearly1980s,theUnitedStates’InternalRevenueService(IRS)hiredSperryCorporationtobuildanautomatedfederalincometaxformprocessingsystem.theUnitedStates’InternalRevenueServiceSperryCorporationautomatedfederalincometaxformprocessingsystem成本和進(jìn)度估計不準(zhǔn)、用戶與開發(fā)人員交流不充分,產(chǎn)品不合用戶要求第一部分:產(chǎn)品和過程32AccordingtotheWashingtonPost,the“systemhasprovedinadequatetotheworkload,costnearlytwicewhatwasexpectedandmustbereplacedsoon”In1985,anextra$90millionwasneededtoenhancetheoriginal$103millionworthofSperryequipment.Inaddition,becausetheproblempreventedtheIRSfromreturningrefundstotaxpayersbythedeadline,theIRSwasforcedtopay$40.2millionininterestand$22.3millioninovertimewagesforitsemployeeswhoweretryingtocatchup.In1996,thesituationhadnotimproved.TheLosAngelesTimesreportedthattherewasstillnomasterplanforthemodernizationofIRScomputers,onlyasix-thousandtechnicaldocument.CongressmanJimLightfootcalledtheproject“a$4-billionfiascothatisflounderingbecauseofinadequateplanning”第一部分:產(chǎn)品和過程33軟件質(zhì)量無保障、軟件可維護(hù)性差案例:IBM公司在1963年至1966年開發(fā)IBM360機(jī)的操作系統(tǒng)。這一項目花了5000人年的工作量,最多時有1000人投入開發(fā)工作,寫出了近100萬行源程序...據(jù)統(tǒng)計,這個操作系統(tǒng)每次發(fā)行的新版本都是從前一版本中找出1000個程序錯誤而修正的結(jié)果...第一部分:產(chǎn)品和過程34項目負(fù)責(zé)人Brooks事后總結(jié)了他的沉痛教訓(xùn)時說:“...正像一只逃亡的野獸落到泥潭中做垂死的掙扎,越是掙扎,陷得越深,最后無法逃脫滅頂?shù)臑?zāi)難...程序設(shè)計工作正像這樣一個泥潭,...一批批程序員被迫在泥潭中拼命掙扎...誰也沒有料到問題竟會陷入這樣的困境...”第一部分:產(chǎn)品和過程35背景材料FrederickBrooks哈佛博士1959年進(jìn)入IBM1961年和BobEvans合作開發(fā)IBM/360計算機(jī),任項目負(fù)責(zé)人1999年獲圖靈獎著作:TheMythicalMan-Month《人月神話》等第一部分:產(chǎn)品和過程36軟件危機(jī):表現(xiàn)無文檔資料是軟件質(zhì)量主要原因榜樣:在印度,編程人員的流動率高達(dá)30%!可以想見他們的文檔水平如何。他們的產(chǎn)品不依賴任何一個人,誰都可以立即辭職,產(chǎn)品的開發(fā)還是會正常進(jìn)行第一部分:產(chǎn)品和過程37軟件危機(jī):表現(xiàn)軟件成本占計算機(jī)系統(tǒng)比例上升

比如:常見軟件的零售價如下WindowsXP中文專業(yè)版¥1690Office2003中文專業(yè)版¥3290Delphi7.0¥24800AutoCAD2004¥19800Photoshop7.0中文版¥8000第一部分:產(chǎn)品和過程38軟件危機(jī):表現(xiàn)軟件開發(fā)生產(chǎn)效率低,供不應(yīng)求例:美國軟件生產(chǎn)率的提高圖432101955196519751985第一部分:產(chǎn)品和過程39軟件危機(jī):表現(xiàn)小結(jié)時代:20世紀(jì)60~70年代表現(xiàn)質(zhì)量差、超預(yù)算、超工期、難維護(hù)...原因為什么會出現(xiàn)軟件危機(jī)呢?首先來看看什么是軟件第一部分:產(chǎn)品和過程40維修電路圖觀看設(shè)備文檔信號(數(shù)據(jù))短虹牌電視機(jī)使用說明書第一部分:產(chǎn)品和過程41軟件危機(jī):什么是軟件軟件的定義是一套成配置的元素或?qū)ο?,包括:程序:能夠完成預(yù)定功能和性能的可執(zhí)行指令文檔:與程序開發(fā)、維護(hù)和使用有關(guān)的圖文材料數(shù)據(jù):使得程序能夠適當(dāng)?shù)夭僮餍畔⒌臄?shù)據(jù)結(jié)構(gòu)第一部分:產(chǎn)品和過程42軟件危機(jī):軟件的特點軟件是“開發(fā)”出來的,而非“制造”硬件:每一件都需要制造,在制造過程 中進(jìn)行質(zhì)量控制,以保證產(chǎn)品的質(zhì)量軟件:通過人們的智力活動,把知識與技術(shù)轉(zhuǎn)化成信息的一種產(chǎn)品。一旦某一軟件研制成功,以后就可以大量廉價地復(fù)制所以對軟件的質(zhì)量控制,必須著重在軟件開發(fā)方面下功夫第一部分:產(chǎn)品和過程43軟件危機(jī):軟件的特點軟件不會“磨損”在軟件的運(yùn)行和使用期間,沒有硬件那樣的機(jī)械磨損、老化問題所以軟件的維護(hù)比硬件的維護(hù)要復(fù)雜得多,與硬件的維修有著本質(zhì)的差別

第一部分:產(chǎn)品和過程44失效率時間磨合期磨損用壞硬件失效的“浴缸曲線”第一部分:產(chǎn)品和過程45軟件失效率曲線理想曲線修改點失效率時間修改導(dǎo)致的副作用實際曲線第一部分:產(chǎn)品和過程46軟件危機(jī):軟件的特點軟件會“退化”在其生命期中,軟件會經(jīng)歷修改(維護(hù)),這些修改,有可能會引入新的錯誤,使得故障率曲線呈現(xiàn)為鋸齒形軟件的退化由于修改而發(fā)生軟件維護(hù)要比硬件維護(hù)復(fù)雜得多當(dāng)硬件部件磨損時,可用另一個零件替換它但對于軟件,每一個故障都表明設(shè)計或編碼存在錯誤第一部分:產(chǎn)品和過程47軟件危機(jī):軟件的特點大多數(shù)軟件是“定制”的,而不是通過已有的構(gòu)件組裝而來的軟構(gòu)件其它特點:軟件的開發(fā)和運(yùn)行對計算機(jī)系統(tǒng)有依賴性軟件的開發(fā)尚未完全擺脫手工藝的開發(fā)方式軟件相當(dāng)復(fù)雜、昂貴相當(dāng)多的軟件工作涉及到社會因素第一部分:產(chǎn)品和過程48軟件危機(jī):軟件及其特點小結(jié)軟件一套配置,包括程序、文檔、數(shù)據(jù)等軟件不同于硬件軟件是開發(fā)出來的,不存在磨損相對于硬件,軟件開發(fā)、維護(hù)更加困難第一部分:產(chǎn)品和過程49軟件危機(jī):軟件神話軟件神話一直以來,人們對軟件和軟件開發(fā)有著很多誤解,把它們看得太美好,像“神話”一樣,而事實未必如此第一部分:產(chǎn)品和過程50軟件危機(jī):軟件神話管理者的神話神話:如果我們已經(jīng)落后于計劃,可以增加更多的人手來趕上進(jìn)度(“稱為蒙古部落觀念”TheMongolianHordeconcept)事實:“addingpeopletoalatesoftwareprojectmakesitlater.”(Brooks)理由:軟件開發(fā)不同于簡單勞動,高度復(fù)雜,需要協(xié)作第一部分:產(chǎn)品和過程51軟件危機(jī):軟件神話傳統(tǒng)農(nóng)業(yè)勞動:有一塊麥田,1個人割需要10天問5個人割需要多久?10/5=2天因為沒有復(fù)雜的協(xié)作第一部分:產(chǎn)品和過程52軟件危機(jī):軟件神話軟件開發(fā)軟件開發(fā)需要協(xié)作?!敖o落后于的項目增添人手,只會更加延誤項目”(Brooks):軟件項目總是各不相同新手更容易犯錯誤,幫倒忙老手向新手解釋工作以及交流思想都要花費時間,耽誤其工作人多,通信、交流都更加困難第一部分:產(chǎn)品和過程53軟件危機(jī):軟件神話軟件開發(fā)Brooks:“Menandmonthsareinterchangeablecommoditiesonlywhenataskcanbepartitionedamongmanyworkerswithnocommunicationamongthem”“只有當(dāng)任務(wù)可以分配給不需要交流的工作者的時候,人和月才是可互換的”第一部分:產(chǎn)品和過程54軟件危機(jī):軟件神話事實:自己都管理不好,外包商又能管好么?另外,核心競爭力靠外包是得不到的神話:我們可以把開發(fā)工作外包出去Wecanoutsourceit!第一部分:產(chǎn)品和過程55軟件危機(jī):軟件神話用戶的神話神話:有了對目標(biāo)的一般描述就足以開始寫程序了——我們可以以后再補(bǔ)充細(xì)節(jié)事實:不完善的系統(tǒng)定義是軟件項目失敗的主要原因。關(guān)于項目的應(yīng)用領(lǐng)域、功能、性能、接口、設(shè)計約束及確認(rèn)標(biāo)準(zhǔn)的形式化的、詳細(xì)的描述是必須的。這些內(nèi)容只有通過用戶和開發(fā)者之間的溝通交流才能確定我想做一件西裝好的...不過我還沒量尺寸呢你自己看著辦吧,回頭再說再巧的裁縫也難為無尺寸之衣?。〉谝徊糠郑寒a(chǎn)品和過程56軟件危機(jī):軟件神話神話:項目需求總是在不斷變化,但這些變化能夠很容易地滿足,因為軟件是靈活的事實:越晚修改,代價越大(就像治?。└膭拥拇鷥r定義階段開發(fā)階段發(fā)布階段1x1.5-6x60-100x第一部分:產(chǎn)品和過程57軟件危機(jī):軟件神話事實:可執(zhí)行程序僅是軟件配置的一部分,軟件配置包括:程序、文檔和數(shù)據(jù)。文檔是成功開發(fā)的基礎(chǔ),更重要的是,文檔為軟件維護(hù)提供了指導(dǎo)開發(fā)者的神話神話:一個成功項目唯一應(yīng)該提交的就是程序第一部分:產(chǎn)品和過程58軟件危機(jī):軟件神話事實:從項目一開始就可以應(yīng)用的最有效的軟件質(zhì)量保證機(jī)制之一是正式的技術(shù)復(fù)審。軟件復(fù)審是“質(zhì)量的過濾器”,比起通過測試找到某類軟件錯誤要有效得多神話:在程序真正運(yùn)行之前,沒有辦法評估其質(zhì)量第一部分:產(chǎn)品和過程59軟件危機(jī):軟件神話神話:咱們趕緊開始寫代碼吧,這樣可以早點兒交貨事實:越是著急寫程序,最終可能要花更長的時間才能完成 軟件開發(fā)60~80%的工作都是在第一次交付以后進(jìn)行的(即維護(hù))第一部分:產(chǎn)品和過程60軟件危機(jī):原因例:阿麗亞娜5火箭首次發(fā)射背景歐洲航天局阿麗亞娜4型取得了巨大成功5型增加了載重量(5.9噸)首次發(fā)射:1996.6.4任務(wù):把4顆的衛(wèi)星送入軌道命運(yùn):發(fā)射40秒后偏離軌道,自行解體原因:浮點運(yùn)算異常未處理第一部分:產(chǎn)品和過程61軟件危機(jī):原因起因:平臺校正軟件,慣性參考系統(tǒng)的一部分火箭發(fā)射以后就應(yīng)該停止工作但是實際上發(fā)射后仍然運(yùn)行了40秒問題:Ada編寫的程序拋出了異常,但是未被處理在把64位浮點數(shù)轉(zhuǎn)換成16位有符號整數(shù)表示的水平偏差時常識:對于未被處理的異常,系統(tǒng)通常的處理方法是關(guān)閉程序第一部分:產(chǎn)品和過程62背景材料AdaByron(1815-1852)英國詩人拜倫之女18歲時幫助查爾斯·巴貝奇研制 “分析機(jī)”,負(fù)責(zé)為設(shè)想中的計算 機(jī)編寫軟件她為如何計算“伯努利數(shù)”寫了一份規(guī)劃。這份規(guī)劃具有了現(xiàn)代計算機(jī)程序的基本要素,比如算法、程序流程圖等,被認(rèn)為是“第一件計算機(jī)程序”,Ada也被認(rèn)為是第一個程序員1981年,美國國防部把他們設(shè)計的一種語言命名為Ada第一部分:產(chǎn)品和過程63軟件危機(jī):原因事故回放30秒:慣性參考系統(tǒng)被關(guān)閉31秒:計算機(jī)收到了錯誤的指令計算機(jī)命令噴嘴最大角度偏轉(zhuǎn)火箭偏離軌道33秒:地面控制將其引爆損失已經(jīng)研制了8年,耗資>80億第一部分:產(chǎn)品和過程64軟件危機(jī):原因為什么火箭發(fā)射后平臺校正軟件還在運(yùn)行?該軟件從阿麗亞娜4型重用下來這個異常為什么沒有處理程序?為了把處理器的負(fù)載減小到80%以下對阿麗亞娜4的分析表明,浮點計算異常在物理上就是不可能的但是阿麗亞娜5的軌道和阿麗亞娜4不一樣!為什么對阿麗亞娜5的設(shè)計沒有修改認(rèn)為在阿麗亞娜4上運(yùn)行沒問題第一部分:產(chǎn)品和過程65軟件危機(jī):原因為什么這個問題在單元測試時沒有發(fā)現(xiàn)?慣性參考系統(tǒng)的需求分析報告中沒有提供阿麗亞娜5的軌道信息為什么這個問題在集成測試時沒有發(fā)現(xiàn)?全面的集成測試被認(rèn)為成本過高慣性參考系統(tǒng)被認(rèn)為是可靠的集成測試的時候用的是模擬的慣性參考系統(tǒng)為什么在復(fù)查過程中沒有發(fā)現(xiàn)這個問題?根本沒有檢查它!第一部分:產(chǎn)品和過程66軟件危機(jī):原因啟發(fā)系統(tǒng)故障往往源于一個小錯誤測試和復(fù)查有可能發(fā)現(xiàn)這個錯誤失敗往往有技術(shù)、管理兩方面原因可靠的軟件不僅僅是寫出正確的程序需求分析、交流、管理、質(zhì)量保證...軟件危機(jī)的原因軟件規(guī)模越來越大,開發(fā)、維護(hù)難度增加沒有科學(xué)、規(guī)范的技術(shù)、管理手段第一部分:產(chǎn)品和過程68軟件工程:定義概念的提出NATOConference,Germany,1968軟件工程的定義:Boehm:運(yùn)用現(xiàn)代科學(xué)技術(shù)知識來設(shè)計并構(gòu)造計算機(jī)程序及為開發(fā)、運(yùn)行和維護(hù)這些程序所必需的相關(guān)文件資料FritzBauer:“軟件工程是為了經(jīng)濟(jì)地獲得能夠在實際機(jī)器上有效運(yùn)行的可靠軟件而建立和使用的一系列完善的工程化原則”第一部分:產(chǎn)品和過程69軟件工程:定義IEEE: “Theapplicationofasystematic,disciplined,quantifiableapproachtothedevelopment,operation,andmaintenanceofsoftware;thatis,theapplicationofengineeringtosoftware” “軟件工程是將系統(tǒng)化的、規(guī)范的、可度量的方法應(yīng)用于軟件的開發(fā)、運(yùn)行和維護(hù)的過程,即將工程化應(yīng)用于軟件中”第一部分:產(chǎn)品和過程70背景材料BarryBoehmUCLA博士1959~1973:藍(lán)德公司信息科學(xué)部部長1973~1989:TRW公司國防系統(tǒng)集團(tuán)首席科學(xué)家1989~1992:美國國防部DARPA項目信息科技部主任COCOMO模型、螺旋模型的發(fā)明者...第一部分:產(chǎn)品和過程71軟件工程:定義課本:“采用工程的概念、原理、技術(shù)和方法來開發(fā)與維護(hù)軟件,把經(jīng)過時間考驗而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來”總結(jié)工程化應(yīng)用于軟件開發(fā)、維護(hù)管理和技術(shù)相結(jié)合第一部分:產(chǎn)品和過程72軟件工程:定義軟件工程和其它工程的區(qū)別每個軟件項目都是新的新的需求、新的技術(shù)、新的部署方式等每個項目都是在不斷變化的只有“變化”是不變的軟件項目風(fēng)險很大據(jù)統(tǒng)計真正按期、按預(yù)算完成的不到20%軟件項目通常是團(tuán)隊活動人多不一定力量更大第一部分:產(chǎn)品和過程73軟件工程:不僅僅是編程復(fù)雜的問題不是光靠編程就能解決的編程之前需要設(shè)計設(shè)計之前需要分析用戶的需求編寫好的程序需要集成為完整的系統(tǒng)產(chǎn)品發(fā)布前需要測試軟件為保持生命力應(yīng)當(dāng)不斷升級、維護(hù)軟件開發(fā)是團(tuán)隊活動,團(tuán)隊需要管理第一部分:產(chǎn)品和過程74軟件工程:關(guān)注建模模型對現(xiàn)實世界的抽象表示結(jié)構(gòu)化方法基于功能分解,將復(fù)雜的系統(tǒng)分解為更容易解決的小單元面向?qū)ο蠓椒ò严到y(tǒng)分解為屬于一定組件/包的類,類對象之間存在一定關(guān)聯(lián)第一部分:產(chǎn)品和過程75軟件工程:7個基本原理軟件工程的7個基本原理(Boehm)

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

2、堅持進(jìn)行階段評審

3、實行嚴(yán)格的產(chǎn)品控制

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

5、結(jié)果應(yīng)能清除的審查

6、開發(fā)人員應(yīng)該少而精

7、承認(rèn)不斷改進(jìn)軟件工程實踐的必要性第一部分:產(chǎn)品和過程76軟件工程:三階段軟件工程的三個階段定義確定系統(tǒng)的功能、性能、界面...開發(fā)體系結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、算法、編碼、測試維護(hù)即對軟件進(jìn)行修改第一部分:產(chǎn)品和過程77軟件工程:三要素軟件工程三要素:過程、方法和工具第一部分:產(chǎn)品和過程78工具程序=算法+數(shù)據(jù)結(jié)構(gòu)組織管理/計劃過程RUP/XP工程需求管理/配置管理...方法OOP/MDA實現(xiàn)團(tuán)隊經(jīng)營第一部分:產(chǎn)品和過程79軟件工程:三要素什么叫軟件過程?舉一個例子:吃飯去餐館吃:點餐、付賬、用餐自己做飯:買菜、洗菜、做飯、吃飯、刷鍋洗碗第一部分:產(chǎn)品和過程80軟件工程:三要素方法假設(shè)采用的是“自己做飯”這種過程模型“做飯”這個階段可以用的方法有:煎、炒、烹、炸、煮、蒸、涮...工具某種方法可能會用到一些工具:炒菜要炒鍋,煎要平底鍋,蒸要蒸籠...第一部分:產(chǎn)品和過程81軟件工程:目標(biāo)理想化來看:生產(chǎn)出的軟件產(chǎn)品完全正確以最短的時間以最小的開發(fā)成本軟件維護(hù)的成本最小質(zhì)量時間成本第一部分:產(chǎn)品和過程82軟件工程:目標(biāo)實際上:“快、好、省任選其二”沒有一個軟件能同時做到以上幾點軟件工程的目標(biāo)就是盡量做到這些軟件工程的藝術(shù)就在于在實際項目中盡量平衡這些目標(biāo)第一部分:產(chǎn)品和過程83背景材料:銀彈Brooks:1975,“TheMythicalMan-Month”第一部分:產(chǎn)品和過程84背景材料:銀彈Brooks:1986,“NoSilverBullet:EssenceandAccidentsofSoftwareEngineering”“Therewillbenosilverbulletwithin10years”“在未來十年內(nèi),無論是在技術(shù)還是管理方法上,都看不出有任何突破性的進(jìn)步,能夠獨自保證在十年內(nèi)大幅度提高軟件的生產(chǎn)率、可靠性和簡潔性”第一部分:產(chǎn)品和過程85背景材料:銀彈注:銀彈,美國民間流傳月圓之夜會有狼人出沒,只有以純銀子彈射穿狼人心臟,才能制服狼人在這里Brooks用銀彈來比喻解決軟件危機(jī)的一招斃命的方法第一部分:產(chǎn)品和過程86背景材料:銀彈BradCox提出了“SoftwareIC”O(jiān)bject-C語言的發(fā)明者OO大師1990,“ThereIsaSilverBullet”“重用和交互的構(gòu)件開發(fā)是解決軟件根本困難的一種方法”第一部分:產(chǎn)品和過程87背景材料:銀彈Brooks1995年初:“NoSilverBulletRefired”“復(fù)雜性是我們行業(yè)的屬性,而且復(fù)雜性是我們的主要限制”“軟件開發(fā)是一件棘手的事情,前方并不會有魔術(shù)般的解決方案”BradCox年底:“NoSilverBulletReconsidered”第一部分:產(chǎn)品和過程88軟件危機(jī)不是不能解決情況在改善1994年的統(tǒng)計數(shù)據(jù)(Standish):第一部分:產(chǎn)品和過程89軟件危機(jī)不是不能解決情況在改善2006年的統(tǒng)計數(shù)據(jù):第一部分:產(chǎn)品和過程90軟件危機(jī)不是不能解決進(jìn)步的主要原因更好的項目管理迭代開發(fā)Web開發(fā)框架第一部分:產(chǎn)品和過程91軟件工程:小結(jié)概念的提出1968年北約德國會議目標(biāo)提高軟件質(zhì)量和軟件生產(chǎn)率7個基本原理三要素過程、方法、工具三階段定義、開發(fā)、維護(hù)第一部分:產(chǎn)品和過程92軟件過程模型:主要環(huán)節(jié)第一部分:產(chǎn)品和過程93軟件過程模型第一部分:產(chǎn)品和過程94軟件過程模型福特汽車的生產(chǎn)流水線1913年,亨利福特發(fā)明了傳送帶式的汽車裝配生產(chǎn)線,使得生產(chǎn)率大大提高福特的成功也讓流水線走向其它行業(yè),成為現(xiàn)代化生產(chǎn)的標(biāo)志和象征思考:同樣的生產(chǎn)線能不能用到軟件的生產(chǎn)中來呢?軟件生產(chǎn)不是簡單重復(fù)性勞動軟件開發(fā)是滾雪球一樣的滾動式,而非直線式軟件開發(fā)雖然沒有套路,但是有規(guī)范第一部分:產(chǎn)品和過程95軟件過程模型什么是過程?“AProcessdefinesWhoisdoingWhat,WhenandHow,inordertoreachacertaingoal”用一定的流程將各個環(huán)節(jié)連接起來,并用規(guī)范的方式操作全過程,是跨越軟件整個生存期的全部過程、活動和任務(wù)的框架過程模型過程的抽象表示第一部分:產(chǎn)品和過程96軟件過程模型過程模型過程的抽象表示定義了:角色分工活動定義提交結(jié)果工作流和溝通第一部分:產(chǎn)品和過程97我的學(xué)生S案例我T第一部分:產(chǎn)品和過程98軟件過程模型

這位同學(xué)回去后想了一下,列出了一個工作清單:工作清單一、功能

1.讀取、顯示、另存四種格式的圖片

2.放大、縮小、漫游

3.列出當(dāng)前目錄下所有四種格式圖片文件名

4.PAGEUP(PAGEDOWN)翻頁二、其它說明:

1.界面盡量簡潔,容易操作

2.不需要圖片預(yù)覽和打印第一部分:產(chǎn)品和過程99軟件過程模型三、開發(fā)工具:VC6.0四、開發(fā)環(huán)境:普通PC機(jī)、Window2000/XP五、工作量:

1.研究一下四種圖片的格式

2.設(shè)計一個解析器類,解析這四種格式

3.設(shè)計一個文檔類,實現(xiàn)讀取、另存和目錄瀏覽功能

4.設(shè)計一個視圖類,實現(xiàn)顯示、縮放、漫游功能第一部分:產(chǎn)品和過程100軟件過程模型:瀑布模型實際情況1

一切順利,學(xué)生S按期交付了軟件,經(jīng)過一兩周的試用、修改、完善后,三方都比較滿意,該軟件在老師的朋友那里成為一個得心應(yīng)手的工具瀑布模型(傳統(tǒng)的生命周期模型、線性模型)第一部分:產(chǎn)品和過程101軟件過程模型:瀑布模型需求分析可行性研究總體設(shè)計詳細(xì)設(shè)計編程測試交付維護(hù)清單1、2對話過程清單4、5寫代碼前的思考過程寫代碼交給老師檢查給老師朋友安裝、講解修正問題、改進(jìn)軟件...第一部分:產(chǎn)品和過程102軟件過程模型:瀑布模型可行性研究需求分析分析開發(fā)編碼和單元測試(實現(xiàn))集成測試維護(hù)維護(hù)設(shè)計詳細(xì)設(shè)計總體設(shè)計第一部分:產(chǎn)品和過程103軟件過程模型:瀑布模型瀑布模型也稱為生命周期模型、線性模型采用結(jié)構(gòu)化分析、設(shè)計、編程技術(shù)特點順序性和依賴性推遲實現(xiàn)保證質(zhì)量第一部分:產(chǎn)品和過程104軟件過程模型:瀑布模型1.需求分析弄清楚要做些什么記錄用戶要求的特性注:有時用戶自己也不知道想要什么目的保證做出來的東西是用戶想要的第一部分:產(chǎn)品和過程105軟件過程模型:瀑布模型2.需求規(guī)格說明書需求分析結(jié)果的正式的、完整的、書面的記錄第一部分:產(chǎn)品和過程106軟件過程模型:瀑布模型3.設(shè)計確定體系結(jié)構(gòu)劃分模塊確定模塊間的接口開始考慮如何做第一部分:產(chǎn)品和過程107軟件過程模型:瀑布模型4.實現(xiàn)編程測試第一部分:產(chǎn)品和過程108軟件過程模型:瀑布模型5.集成把各個模塊組裝成一個系統(tǒng)并測試第一部分:產(chǎn)品和過程109軟件過程模型:瀑布模型6.發(fā)布交付用戶使用同時開始維護(hù)第一部分:產(chǎn)品和過程110軟件過程模型:瀑布模型瀑布模型假定:用戶需求基本不變設(shè)計人員運(yùn)籌帷幄決勝千里每個子模塊到集成時可以自然的合在一起缺陷:真正的系統(tǒng)很少完全遵從線性模式用戶最初可能很難說清楚需求直到后期才能得出一個可用的系統(tǒng)這些假定顯然受到了建筑工程的影響第一部分:產(chǎn)品和過程111軟件過程模型:瀑布模型軟件工程和建筑工程都和規(guī)模相關(guān):狗窩還是摩天大樓需要大規(guī)模團(tuán)隊合作很難修改設(shè)計軟件中的很多術(shù)語來自建筑工程:體系結(jié)構(gòu)architecture、構(gòu)建build、組建component第一部分:產(chǎn)品和過程112軟件過程模型:瀑布模型軟件工程和建筑工程有很多不同軟件除了靜態(tài)結(jié)構(gòu)外,更注重動態(tài)行為建筑施工是對建筑藍(lán)圖的原樣實現(xiàn),少偏差建筑工程的成本主要在施工環(huán)節(jié),而軟件成本主要在測試和維護(hù)第一部分:產(chǎn)品和過程113我的學(xué)生S我的朋友C實際情況2我T第一部分:產(chǎn)品和過程114

事情就這樣定下來了,S憤怒的撕掉了自己的工作清單,回去后S花一天時間用Delphi做了個樣子,只能讀BMP和JPG文件,做了些菜單和工具欄,用Access建了一個圖片庫。就這個“假”的程序,S和C討論了一天,S又修改了幾次,又討論了幾次,一周后,這個“假”的程序表面看起來和真的一模一樣。 于是S打算用VC重寫這個程序,但是他很快發(fā)現(xiàn)繼續(xù)用Delphi寫更方便,因為至少界面不用重做了,于是兩個月后,這個事情終于結(jié)束了。

S順利的完成了他的畢業(yè)設(shè)計《JPG壓縮優(yōu)化算法設(shè)計》,C一直使用這個軟件管理他的圖片,并慶幸花了這么少的錢得到了這么有用的東西,而T,則正在考慮如何為他下一批學(xué)生分派任務(wù)??焖僭头ǖ谝徊糠郑寒a(chǎn)品和過程115軟件過程模型:快速原型法適合用戶需求不明或易變的系統(tǒng)稱為用戶驅(qū)動建立/修改原型用戶測試原型聽取用戶需求第一部分:產(chǎn)品和過程116軟件過程模型:快速原型法原型:系統(tǒng)的一個早期可運(yùn)行的版本它反映最終系統(tǒng)的部分重要特性比如:大致界面、基本功能...就像概念車第一部分:產(chǎn)品和過程117軟件過程模型:快速原型法建立原型的目的分析用戶需求評論員比作家更容易當(dāng)“百聞不如一見”,用戶親眼看見產(chǎn)品的原型更容易說出他心中的需求評估關(guān)鍵技術(shù)展示新概念和方法軟件中的概念車Google就是靠一個簡單的概念模型贏得了第一筆10萬美元的種子資金開始了創(chuàng)業(yè)之路第一部分:產(chǎn)品和過程118軟件過程模型:快速原型法如何建造原型分清主次原型只是為了展示基本功能、大致界面等因此不需要注重性能、質(zhì)量兵貴神速選用快速開發(fā)工具比如界面原型,可以使用VB

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論