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

下載本文檔

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

文檔簡介

軟件工程

SoftwareEngineering

第一講王玉善

amywang@課程簡介授課內(nèi)容授課方式考核方式參考書目:軟件工程:實(shí)踐者的研究方法(第5版),RogerS.Pressman機(jī)械工業(yè)出版社議題第1章軟件工程學(xué)概述軟件軟件危機(jī)軟件工程

計(jì)算機(jī)軟件已經(jīng)成為一種驅(qū)動(dòng)力。它是進(jìn)行商業(yè)決策的引擎;它是現(xiàn)代科學(xué)研究和工程問題尋求解答的基礎(chǔ);它也是鑒別現(xiàn)代產(chǎn)品和服務(wù)的關(guān)鍵因素。它被嵌入在各種類型的系統(tǒng)中:交通、醫(yī)療、電信、軍事、工業(yè)生產(chǎn)過程、娛樂、辦公、……難以窮舉。軟件在現(xiàn)代社會(huì)中確實(shí)是必不可少的。而且我們進(jìn)入21世紀(jì),軟件將成為從基礎(chǔ)教育到基因工程的所有領(lǐng)域新進(jìn)展的驅(qū)動(dòng)器。什么是軟件軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另一部分,它是包括程序,數(shù)據(jù)及其相關(guān)文檔的完整集合程序是按事先設(shè)計(jì)的功能和性能要求執(zhí)行的指令序列數(shù)據(jù)是使程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu)文檔是與程序開發(fā),維護(hù)和使用有關(guān)的圖文材料軟件的特點(diǎn)軟件是一種邏輯實(shí)體,而不是具體的物理實(shí)體。因而它具有抽象性軟件的生產(chǎn)與硬件不同,在它的開發(fā)過程中沒有明顯的制造過程在軟件的運(yùn)行和使用期間,沒有硬件那樣的機(jī)械磨損,老化問題軟件的特點(diǎn)軟件的特點(diǎn)軟件的開發(fā)和運(yùn)行常受到計(jì)算機(jī)系統(tǒng)的限制,對(duì)計(jì)算機(jī)系統(tǒng)有著不同程度的依賴性軟件本身是復(fù)雜的實(shí)際問題的復(fù)雜性程序邏輯結(jié)構(gòu)的復(fù)雜性軟件成本相當(dāng)昂貴相當(dāng)多的軟件工作涉及到社會(huì)因素軟件的發(fā)展Intheearlydays:“Software”=“Placeasequenceofinstructionstogethertogetthecomputertodosomethinguseful”.UserComputerComputerbecamecheaperandmorecommonHighlevellanguageswereinventedProgrammerUserComputerLate1950’s:Early1960s:Veryfewlargesoftwareprojectsweredonebysomeexperts.Middletolate1960s:Trulylargesoftwaresystemswereattempted.After1968:SoftwareEngineering軟件危機(jī)(Crisis)軟件危機(jī)是指在計(jì)算機(jī)軟件的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題:成本和進(jìn)度軟件產(chǎn)品的質(zhì)量可維護(hù)性軟件通常沒有適當(dāng)?shù)奈臋n資料。軟件成本在計(jì)算機(jī)系統(tǒng)總成本中所占的比例逐年上升。軟件開發(fā)生產(chǎn)率產(chǎn)生軟件危機(jī)的原因⑴項(xiàng)目沒有被很好地理解;計(jì)劃不周,最終導(dǎo)致進(jìn)度拖延。例在20世紀(jì)60年代后期,一位熱情的年青工程師受命為一個(gè)自動(dòng)化制造應(yīng)用項(xiàng)目“編寫”計(jì)算機(jī)程序。選擇他的理由非常簡單,因?yàn)樵谡麄€(gè)技術(shù)小組中他是唯一參加過計(jì)算機(jī)編程培訓(xùn)的人。這位工程師對(duì)匯編語言的IN和OUT指令以及Fortran語言有所了解,但是卻根本不懂軟件工程,更不要說項(xiàng)目進(jìn)度安排和跟蹤了。他的老板給了他一大堆相關(guān)的手冊(cè),以及需要做些什么的口頭描述。年輕人被告知該項(xiàng)目必須在兩個(gè)月之內(nèi)完成。他閱讀了這些手冊(cè),想好了解決方法,就開始編寫代碼。兩周后,老板將他叫到辦公室詢問項(xiàng)目進(jìn)展情況。問題出在哪里?“非常好”工程師以年輕人的熱情回答道,“這個(gè)項(xiàng)目遠(yuǎn)比我想像的簡單。我差不多已經(jīng)完成了75%的任務(wù)。老板笑了,說道:“真是太棒了”然后他囑咐年輕人繼續(xù)努力工作,準(zhǔn)備好一周后再匯報(bào)一次工作進(jìn)度。一周后老板將年輕人叫到辦公室,問他說:“現(xiàn)在進(jìn)度如何?”“一切順利”年輕人回答說,“但是我遇到了一些小麻煩。我會(huì)排除這些困難,很快就可以回到正軌上來。”“你覺得在最后期限之前能否完成?”老板問道?!皼]有問題”工程師答道?!拔也畈欢嘁呀?jīng)完成了90%”如果你在軟件領(lǐng)域中工作過幾年,你一定可以將這個(gè)故事寫完。毫不奇怪,年輕工程師在整個(gè)項(xiàng)目工期內(nèi)始終停留在90%的進(jìn)度上,(在別人的幫助下)直到交付期限之后一個(gè)月才做完⑵沒有充分的文檔資料(documentation)Managers——evaluate,trackprogress,......Programmers——communicatetoeachotherMaintainers——人與人的交流比寫程序困難得多。⑶.軟件缺乏”可見性”,軟件可靠性缺少度量的標(biāo)準(zhǔn),質(zhì)量無法保證。

如何保證軟件產(chǎn)品的質(zhì)量,是非常復(fù)雜困難的問題。特別對(duì)于規(guī)模龐大的軟件.⑷軟件難以維護(hù)(maintainability)不易升級(jí)(evolvability)負(fù)責(zé)軟件的管理者像大多數(shù)其他行業(yè)的管理者一樣,都有巨大的壓力,要維持預(yù)算、保持進(jìn)度,還要提高質(zhì)量。就像溺水者抓住一根救命稻草,軟件管理者常常抓住軟件神話不放,這些神話能夠緩解其壓力的話(哪怕是暫時(shí)的)。神話1:我們已經(jīng)有了關(guān)于建造軟件的標(biāo)準(zhǔn)和規(guī)程的書籍,難道它們不能給人們提供所有它們需要知道的信息嗎?現(xiàn)實(shí):不錯(cuò),關(guān)于標(biāo)準(zhǔn)的書籍已經(jīng)存在,但真正使用它們了嗎?軟件實(shí)踐者知道它們的存在嗎?它們是否反映了現(xiàn)代軟件工程實(shí)踐?它們完備嗎?它們對(duì)在保持關(guān)注質(zhì)量的情況下改善交付時(shí)間是簡便有效的嗎?很多情況下,這些問題的答案是否定的。軟件神話-管理神話神話2:如果我們已經(jīng)落后于計(jì)劃,可以增加更多的程序員趕上進(jìn)度。現(xiàn)實(shí):給一個(gè)已經(jīng)延遲的軟件項(xiàng)目增加人手只會(huì)使其更加延遲。神話3:如果我決定向第三方外包軟件項(xiàng)目,我可以放松并讓承包公司去建造它?,F(xiàn)實(shí):如果一個(gè)機(jī)構(gòu)不了解如何在內(nèi)部管理和控制軟件項(xiàng)目,當(dāng)它外包軟件項(xiàng)目時(shí)將總是處于掙扎的境地。軟件神話-客戶神話在許多情況下,客戶相信關(guān)于軟件的神話,因?yàn)樨?fù)責(zé)軟件開發(fā)的管理者和開發(fā)人員很少去糾正客戶的錯(cuò)誤理解。導(dǎo)致客戶過高的期望值,并最終引起對(duì)開發(fā)人員的不滿意。神話1:有了對(duì)目標(biāo)的一般性描述就足以開始寫程序了,我們可以以后再補(bǔ)充細(xì)節(jié)?,F(xiàn)實(shí):糟糕的系統(tǒng)定義是軟件項(xiàng)目失敗的主要原因。關(guān)于信息領(lǐng)域、功能、行為、性能、接口、設(shè)計(jì)約束及確認(rèn)標(biāo)準(zhǔn)的形式化的、詳細(xì)的描述是必要的。這些內(nèi)容只有通過客戶和開發(fā)者之間徹底地交流后才能確定。神話2:軟件需求確實(shí)是經(jīng)常變更的,但這些變更能夠很容易地滿足,因?yàn)檐浖庆`活的?,F(xiàn)實(shí):軟件需求確實(shí)是變更的,但這些變更產(chǎn)生的影響會(huì)隨著其被引入的時(shí)間而不同的。軟件神話-實(shí)踐者神話在軟件的早期階段,程序設(shè)計(jì)被看成是一門藝術(shù)。神話1:一旦我們寫出了程序并使其正常運(yùn)行,我們的工作就結(jié)束了?,F(xiàn)實(shí):越早開始寫代碼,就要花越長的時(shí)間才能完成它。研究表明在一鼐軟件上所投入的60%到80%的工作量是花費(fèi)在軟件第一次交付客戶之后。神話2:在程序真正運(yùn)行之前,沒有辦法評(píng)估其質(zhì)量。現(xiàn)實(shí):從項(xiàng)目一開始就可以應(yīng)用的最有效的軟件質(zhì)量保證機(jī)制之一是--正式的技術(shù)評(píng)審。神話3:一個(gè)成功項(xiàng)目唯一應(yīng)該提交的就是運(yùn)行程序?,F(xiàn)實(shí):運(yùn)行程序僅是軟件配置的一部分,軟件配置包括很多東西。神話4:軟件工程將使我們創(chuàng)建大量的、不必要的文檔,并總是延緩我們的進(jìn)度。現(xiàn)實(shí):軟件工程并不是為創(chuàng)建文檔,而了創(chuàng)建質(zhì)量。消除軟件危機(jī)的途徑了解產(chǎn)生軟件危機(jī)的原因,澄清錯(cuò)誤認(rèn)識(shí),建立起關(guān)于軟件開發(fā)和維護(hù)的正確概念,還僅僅是解決軟件危機(jī)的開始,全面解決軟件危機(jī)需要一系列綜合措施。 ——軟件工程

SoftwareEngineering人們對(duì)軟件生產(chǎn)提出了許多疑問:為什么需要那么長的時(shí)間才能完成軟件開發(fā)。為什么開發(fā)成本如此高為什么我們不能在把軟件提交客戶之前就發(fā)現(xiàn)所有的錯(cuò)誤為什么在軟件開發(fā)過程總是難以度量其進(jìn)展造成以上問題的原因主要是:軟件行業(yè)發(fā)展的速度太快,對(duì)經(jīng)驗(yàn)總結(jié)不足人們對(duì)自身處理能力的認(rèn)識(shí)不清解決的方法:多實(shí)踐,積累成功和失敗的案例總結(jié)、思考、提取經(jīng)驗(yàn)建立軟件的模型和模式軟件工程軟件工程是指導(dǎo)計(jì)算機(jī)軟件開發(fā)和維護(hù)的工程學(xué)科。采用工程的概念、原理、技術(shù)和方法來開發(fā)與維護(hù)軟件,把經(jīng)過時(shí)間考驗(yàn)而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來,以經(jīng)濟(jì)地開發(fā)出高質(zhì)量的軟件并有效地維護(hù)它軟件工程FritzBauer:建立并使用完善的工程化原則,以較經(jīng)濟(jì)的手段獲得能在實(shí)際機(jī)器上有效運(yùn)行的可靠軟件的一系列方法IEEE:軟件工程是開發(fā)、運(yùn)行、維護(hù)和修復(fù)軟件的系統(tǒng)方法軟件工程的本質(zhì)特性軟件工程關(guān)注于大型程序的構(gòu)造軟件工程的中心課題是控制復(fù)雜性軟件經(jīng)常變化開發(fā)軟件的效率非常重要和諧地工作是開發(fā)軟件的關(guān)鍵軟件必須有效的支持它的用戶在軟件工程領(lǐng)域中是由一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品軟件工程的基本原理分階段的生命周期計(jì)劃嚴(yán)格管理堅(jiān)持進(jìn)行階段評(píng)審實(shí)行嚴(yán)格的產(chǎn)品控制——基準(zhǔn)配置管理采用現(xiàn)代程序設(shè)計(jì)技術(shù)結(jié)果應(yīng)能清楚地審查開發(fā)小組的人員應(yīng)該少而精1+1<2承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性軟件工程三要素:方法、工具和過程軟件工程方法為軟件開發(fā)提供了“如何做”的技術(shù)傳統(tǒng)軟件工程方法學(xué)與面向?qū)ο蠓椒▽W(xué)軟件工具為軟件工程方法提供了自動(dòng)的或半自動(dòng)的軟件支撐環(huán)境軟件工程過程定義了:

方法使用的順序要求交付的文檔資料為保證質(zhì)量和適應(yīng)變化所需要的管理軟件開發(fā)各個(gè)階段完成的里程碑軟件工程三要素ALayeredTechnologya“quality”focusprocessmodelmethodstoolsObject-orientedmethodRationalRose誰需要軟件工程程序員項(xiàng)目組成員項(xiàng)目負(fù)責(zé)人為什么需要軟件工程項(xiàng)目延遲用戶需求維護(hù)困難項(xiàng)目超支我國軟件業(yè)的現(xiàn)狀我國軟件業(yè)的規(guī)模目前,我國從事軟件開發(fā)、研制、銷售、維護(hù)和服務(wù)的軟件企業(yè)有2000家左右,加上兼營的企業(yè),總數(shù)大約有10000多家,其中具有自主軟件研發(fā)能力的軟件企業(yè)約5700家,從事軟件銷售、維護(hù)和服務(wù)的企業(yè)5000多家。在這里面,營業(yè)規(guī)模超過一億元的軟件企業(yè)達(dá)到100家以上,超過5億元的達(dá)到18家,超過10億元的達(dá)到12家。我國軟件業(yè)的現(xiàn)狀2001年,世界軟件產(chǎn)品市場(chǎng)銷售額超過1865億美元,我國當(dāng)年的銷售額為285億元人民幣,只占世界市場(chǎng)不到2%的份額。國內(nèi)軟件市場(chǎng)有限的份額中大部分為國外軟件廠商所瓜分,國內(nèi)所開發(fā)的軟件產(chǎn)品僅占小部分。我國軟件業(yè)的現(xiàn)狀2001年我國軟件銷售總額96.3億美元,軟件企業(yè)約5000家,從業(yè)人員29萬。2001年印度軟件銷售總額102.3億美元,軟件企業(yè)約6000家,從業(yè)人員40萬。2001年我國軟件的出口額僅為7.2億美元,2000年與1999年分別為4億美元及2.5億美元。印度在軟件出口方面,則一直保持高速的增長。1990年印度軟件出口只有5000萬美元,1999年就達(dá)到了39億美元,2000年達(dá)到了62億美元,而2001年印度軟件出口額為77.8億美元,已經(jīng)占到了印度全部出口總額的10.5%。我國軟件業(yè)的現(xiàn)狀我國軟件業(yè)發(fā)展不理想的原因除了政策和盜版外,最大的問題是我國絕大多數(shù)軟件企業(yè)對(duì)其軟件開發(fā)工作過程缺乏有效的管理和控制。多數(shù)軟件企業(yè)開發(fā)和生產(chǎn)基本上處于“技術(shù)少標(biāo)準(zhǔn)、開發(fā)缺規(guī)范、生產(chǎn)無檢驗(yàn)、質(zhì)量無保證”的狀態(tài)。在這方面印度軟件業(yè)的發(fā)展能夠給我們以啟發(fā)。它山之石印度軟件業(yè)能夠這么迅速地發(fā)展起來,除了有政府支持、英語程度、人才儲(chǔ)備等原因外,最重要的是從標(biāo)準(zhǔn)化與產(chǎn)品流程入手,重視管理。印度的軟件開發(fā)管理的特點(diǎn)是流程重于項(xiàng)目,流程管理人員獨(dú)立于研發(fā)部門,專門檢查研發(fā)部門的開發(fā)流程是不是按照既定流程走,如果流程不對(duì),項(xiàng)目肯定就此停止。另外,所謂的項(xiàng)目經(jīng)理一般都是從編碼人員

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論