第11章軟件工程概述_第1頁
第11章軟件工程概述_第2頁
第11章軟件工程概述_第3頁
第11章軟件工程概述_第4頁
第11章軟件工程概述_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1軟件工程SoftwareEngineering2參考書目

(References)軟件工程導(dǎo)論〔第三版〕張海藩清華大學(xué)出版社〔1997〕實(shí)用軟件工程〔第二版〕鄭人杰、殷人昆、陶永雷清華大學(xué)出版社〔1996〕3FrederickP.Brooks著清華大學(xué)出版社

TomDemarco著清華大學(xué)出版社閱讀材料(RecommendedBooks)4軟件工程概述5主要內(nèi)容計(jì)算機(jī)軟件的概念定義/特征/分類介紹軟件工程的根本概念軟件危機(jī)與軟件工程軟件危機(jī)/軟件工程軟件開發(fā)的過程的坎坎坷坷樹立軟件工程的重要思想軟件開發(fā)模型瀑布式開發(fā)模型6軟件的根本概念7什么是軟件軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另一局部,是包括程序,數(shù)據(jù)及其相關(guān)文檔的完整集合。軟件由兩個(gè)局部組成:程序過程和數(shù)據(jù)程序是可執(zhí)行局部。是按照功能和性能要求編寫的指令序列。任務(wù)的描述、處理規(guī)那么的實(shí)現(xiàn)。數(shù)據(jù)是程序操作的數(shù)據(jù)結(jié)構(gòu)和其他需要的相關(guān)的信息。文檔資料——不可執(zhí)行局部。它是軟件的靜態(tài)描述,涉及到軟件的設(shè)計(jì)、運(yùn)行、維護(hù)等。它有面向開發(fā)者的開發(fā)方案、面向維護(hù)人員的維護(hù)手冊(cè),也有面向用戶的使用說明等。8軟件概念的說明程序是按事先設(shè)計(jì)的功能和性能要求執(zhí)行的指令序列。它是針對(duì)完成任務(wù)的動(dòng)作和對(duì)象的描述。程序能夠被計(jì)算機(jī)理解和執(zhí)行。數(shù)據(jù)是使程序能正常操作信息的數(shù)據(jù)結(jié)構(gòu)。文檔是用自然語言或者形式化語言所編寫的文字資料和圖表,用來描述軟件的內(nèi)容、組成、設(shè)計(jì)、功能規(guī)格、開發(fā)情況、測試結(jié)果以及使用方法。包括方案制定、程序設(shè)計(jì)說明書、流程圖、用戶手冊(cè)等。9軟件的特點(diǎn)軟件是一種邏輯實(shí)體,而不是具體的物理實(shí)體。因而它具有抽象性。通過紙、存儲(chǔ)等方式描述它。通過執(zhí)行、分析等手段評(píng)判它。開發(fā)、使用、評(píng)判的標(biāo)準(zhǔn)較難掌握。軟件的生產(chǎn)與硬件不同,在它的開發(fā)過程中沒有明顯的制造過程。不能簡單地按照生產(chǎn)過程的質(zhì)量控制方法來管理軟件的開發(fā)。10軟件的特點(diǎn)在軟件的運(yùn)行和使用期間,沒有硬件那樣的機(jī)械磨損,老化問題。出現(xiàn)問題是由于問題原來就存在。因此控制軟件的質(zhì)量重點(diǎn)在開發(fā),而不在使用。軟件維護(hù)實(shí)質(zhì)是修改原來的設(shè)計(jì),區(qū)別通常維修中的更換。問題出現(xiàn)既然不可防止,應(yīng)該使得軟件變得容易維護(hù)。11

軟件不會(huì)磨損,但軟件會(huì)變的惡化失效率時(shí)間磨合期磨損加劇硬件失效率曲線理想曲線改變!邊緣效應(yīng)導(dǎo)致的失效率增加實(shí)際曲線12軟件的特點(diǎn)軟件的開發(fā)和運(yùn)行常受到計(jì)算機(jī)系統(tǒng)的限制,對(duì)計(jì)算機(jī)系統(tǒng)有著不同程度的依賴性。軟件的開發(fā)至今尚未完全擺脫手工藝的開發(fā)方式。軟件本身是復(fù)雜的:實(shí)際問題的復(fù)雜性程序邏輯結(jié)構(gòu)的復(fù)雜性軟件本錢相當(dāng)昂貴。相當(dāng)多的軟件工作涉及到社會(huì)因素。13軟件的分類--按功能劃分按軟件的功能進(jìn)行劃分:系統(tǒng)軟件:使計(jì)算機(jī)系統(tǒng)各個(gè)部件、相關(guān)軟件和數(shù)據(jù)協(xié)調(diào)、高效地工作的軟件,它具有公用性、共享性、根底性等特點(diǎn)。操作系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)設(shè)備驅(qū)動(dòng)程序通信處理程序等14軟件的分類--按功能劃分支撐軟件:協(xié)助用戶開發(fā)軟件的工具軟件。文本編輯程序文件格式化程序磁盤向磁帶進(jìn)行數(shù)據(jù)傳輸?shù)某绦虺绦驇煜到y(tǒng)支持需求分析、設(shè)計(jì)、實(shí)現(xiàn)、測試和支持管理的軟件15軟件的分類--按功能劃分應(yīng)用軟件工程與科學(xué)計(jì)算軟件(Matlab)計(jì)算機(jī)輔助設(shè)計(jì)/制造軟件(CAD/CAM)系統(tǒng)仿真軟件(SIMULINK)智能產(chǎn)品嵌入軟件(LABVIEW)醫(yī)療、制藥軟件(HIS)事務(wù)管理、辦公自動(dòng)化軟件(OFFICE)商業(yè)數(shù)據(jù)處理軟件(如財(cái)務(wù)軟件)計(jì)算機(jī)輔助教學(xué)軟件16嵌入式軟件嵌入式系統(tǒng):以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為根底、軟件硬件可裁剪、適應(yīng)各應(yīng)用系統(tǒng)對(duì)功能、可靠性、本錢、體積、功耗嚴(yán)格等有要求的專用計(jì)算機(jī)系統(tǒng)。外觀上:不具有通用計(jì)算機(jī)的形態(tài)。按需要對(duì)計(jì)算機(jī)的組成局部進(jìn)行裁剪。嵌入式軟件嵌入式操作系統(tǒng):進(jìn)/線程管理、存儲(chǔ)管理、IO管理嵌入式應(yīng)用軟件:嵌入式系統(tǒng)中的應(yīng)用軟件。17軟件的分類--按規(guī)模劃分類別參加人員數(shù) 研制期限源程序行數(shù)微型1 1~4周0.5k小型1 1~6月1k~2k數(shù)值計(jì)算或數(shù)據(jù)處理,通常沒有與其它程序的接口。需要按一定的標(biāo)準(zhǔn)化技術(shù)、正規(guī)的資料書寫以及定期的系統(tǒng)審查。只是沒有大題目那樣嚴(yán)格。中型2~5 1~2年5k~50k軟件人員之間、與用戶之間的聯(lián)系、協(xié)調(diào)的配合關(guān)系。因而方案、資料書寫以及技術(shù)審查需要比較嚴(yán)格地進(jìn)行。應(yīng)用程序和系統(tǒng)程序。系統(tǒng)的軟件工程方法是完全必要的。18軟件的分類--按規(guī)模劃分大型5~20 2~3年50k~100k編譯程序、小型分時(shí)系統(tǒng)、實(shí)時(shí)控制系統(tǒng)等。二級(jí)管理,假設(shè)干小組,每組5人以下。人員調(diào)整往往不可防止,新手的培訓(xùn)。采用統(tǒng)一的標(biāo)準(zhǔn),實(shí)行嚴(yán)格的審查是絕對(duì)必要的。甚大型100~10004~5年1M(=1000k)假設(shè)干個(gè)子工程,每一個(gè)子工程都是一個(gè)大型軟件。子工程之間具有復(fù)雜的接口。如遠(yuǎn)程通信系統(tǒng)、多任務(wù)系統(tǒng)、大型操作系統(tǒng)、大型數(shù)據(jù)庫管理系統(tǒng)、軍事指揮系統(tǒng)通常現(xiàn)有這樣的規(guī)模。很顯然,這類問題沒有軟件工程方法的支持,它的開發(fā)工作是不可想象的。極大型2000~50005~10年1M~10M 軍事指揮、彈道導(dǎo)彈防御系統(tǒng)。只是對(duì)軟件工程技術(shù)依賴的程度不同而已。19軟件的分類—其它按軟件工作方式劃分:實(shí)時(shí)處理軟件分時(shí)軟件交互式軟件批處理軟件按軟件效勞對(duì)象的范圍劃分:工程軟件產(chǎn)品軟件按使用的頻度進(jìn)行劃分:一次使用頻繁使用20軟件危機(jī)與軟件工程21軟件危機(jī)美國IBM公司在1963年至1966年開發(fā)的IBM360機(jī)的操作系統(tǒng)。這一工程花了5000人一年的工作量,最多時(shí)有1000人投入開發(fā)工作,寫出了近100萬行源程序。......據(jù)統(tǒng)計(jì),這個(gè)操作系統(tǒng)每次發(fā)行的新版本都是從前一版本中找出1000個(gè)程序錯(cuò)誤而修正的結(jié)果。......SoftwareCrisis!22軟件危機(jī)這個(gè)工程的負(fù)責(zé)人F.P.Brooks事后總結(jié)了他在組織開發(fā)過程中的沉痛教訓(xùn)時(shí)說:“......正像一只逃亡的野獸落到泥潭中做垂死的掙扎,越是掙扎,陷得越深,最后無法逃脫滅頂?shù)臑?zāi)難。......程序設(shè)計(jì)工作正像這樣一個(gè)泥潭,......一批批程序員被迫在泥潭中拼命掙扎......誰也沒有料到問題竟會(huì)陷入這樣的困境......〞。IBM360操作系統(tǒng)的歷史教訓(xùn)成為軟件開發(fā)工程的典型事例為人們所記取。23軟件危機(jī)《人月神話》Frederick.P.Brooks《TheMythycalMan-Month》24軟件危機(jī)1、工程沒有被很好地理解;方案不周,最終導(dǎo)致進(jìn)度拖延。2、沒有充分的文檔資料(documentation)工程經(jīng)理——評(píng)估、跟蹤整個(gè)過程程序員——相互之間需要交流通訊維護(hù)人員——需要維護(hù)手冊(cè)人與人的交流比寫程序困難得多。3、軟件可靠性(reliability)缺少度量標(biāo)準(zhǔn),質(zhì)量無法保證。4、軟件難以維護(hù)(maintainability)、不易升級(jí)(evolvability)25軟件危機(jī)軟件危機(jī):是指在計(jì)算機(jī)軟件的開發(fā)與維護(hù)的過程中所遇到的一系列嚴(yán)重的問題。軟件危機(jī)包括兩個(gè)方面的內(nèi)容:如何開發(fā)軟件以滿足各種需求如何維護(hù)已有的眾多的軟件軟件危機(jī)不僅存在于“不能正常運(yùn)行〞的軟件中,幾乎所有的軟件都存在著開發(fā)和維護(hù)的難題26軟件危機(jī)軟件危機(jī)的表現(xiàn)本錢和進(jìn)度估計(jì)不正確

用戶對(duì)“已完成的〞軟件系統(tǒng)不滿意

質(zhì)量不可靠

,常被疑心不可維護(hù)

缺乏良好的、適當(dāng)?shù)奈臋n資料本錢高昂,并逐年上升27軟件危機(jī)的原因軟件自身特點(diǎn)所造成的:軟件是邏輯實(shí)體而非物理實(shí)體,因此把握開發(fā)的進(jìn)度、評(píng)價(jià)、排故等都較困難。軟件龐大復(fù)雜軟件的運(yùn)行錯(cuò)誤是由于方案、設(shè)計(jì)、開發(fā)等階段引入的,改正錯(cuò)誤,意味著修改原來的設(shè)計(jì)。開發(fā)與維護(hù)方法的原因未弄清楚用戶要求而急于著手寫程序。程序僅僅是軟件的一局部,常常無視軟件配置成分。輕視軟件的維護(hù)。28軟件危機(jī)的解決之道“軟件工程〞(SoftwareEngineering) NATOConference Garmisch(加米施),Germany,1968.引入軟件工程的概念開發(fā)軟件不僅僅是技術(shù)問題,更重要的是要重視管理。推廣有效的軟件開發(fā)方法和技術(shù)。開發(fā)和使用更好的軟件工具。29軟件工程軟件工程是采用工程的概念、原理、技術(shù)和方法來開發(fā)和維護(hù)軟件。軟件工程強(qiáng)調(diào)使用軟件生存周期階段方法學(xué)和各種結(jié)構(gòu)分析和結(jié)構(gòu)設(shè)計(jì)技術(shù)。采用工程化方法和途徑來開發(fā)和維護(hù)軟件借鑒其它工程工程的原理、概念、技術(shù)和方法推廣使用實(shí)踐中總結(jié)出來的軟件開發(fā)的成功技術(shù)和方法探索新的有效技術(shù)和方法開發(fā)和使用更好的軟件工具采取必要的管理措施30軟件工程學(xué)軟件工程學(xué)包括技術(shù)和管理兩方面的內(nèi)容軟件開發(fā)技術(shù)軟件開發(fā)過程軟件開發(fā)方法軟件開發(fā)工具軟件工程管理31軟件開發(fā)過程開發(fā)一個(gè)最終能滿足需求且到達(dá)目標(biāo)的軟件產(chǎn)品所需要的步驟研究與分析問題解決問題的方法與設(shè)計(jì)目標(biāo)系統(tǒng)實(shí)施解決問題方案,即編程實(shí)現(xiàn)測試運(yùn)行與維護(hù)軟件開發(fā)過程是為了獲得軟件產(chǎn)品或是為了完成軟件過程工程需要完成的有關(guān)軟件開發(fā)活動(dòng),每一項(xiàng)活動(dòng)又可分解成一些軟件任務(wù)。32軟件開發(fā)方法軟件開發(fā)方法是對(duì)軟件開發(fā)步驟和各階段的文檔格式提出標(biāo)準(zhǔn)化的要求和標(biāo)準(zhǔn),使軟件生產(chǎn)實(shí)現(xiàn)“工程化〞。軟件開發(fā)方法的演變本書講述的線索:結(jié)構(gòu)化設(shè)計(jì)方法個(gè)性化軟件開發(fā)方法結(jié)構(gòu)化軟件開發(fā)方法面向?qū)ο筌浖_發(fā)方法基于構(gòu)件軟件開發(fā)方法新軟件開發(fā)方法33軟件開發(fā)工具軟件工具為軟件工程方法提供了自動(dòng)的或半自動(dòng)的軟件支撐環(huán)境軟件工程環(huán)境方法與工具相結(jié)合、加上配套的軟、硬件支持34軟件工程管理按照進(jìn)度和預(yù)算完成軟件開發(fā)方案本錢估計(jì)、進(jìn)度安排、人員組織、質(zhì)量保證35軟件的生命周期在軟件工程的概念中必須意識(shí)到:“軟件〞編程,它有自己的生命周期(lifecycle)。大型軟件系統(tǒng)的開發(fā)與其它工程工程如建造橋梁、制造飛機(jī)、輪船等的開發(fā)是同理的。軟件生存周期--指從軟件工程提出,包括研制、運(yùn)行和維護(hù)直到退役的整個(gè)過程。軟件生存周期劃分為3個(gè)時(shí)期:方案時(shí)期、開發(fā)時(shí)期和運(yùn)行時(shí)期,每一時(shí)期又區(qū)分為假設(shè)干更小的階段。瀑布模型快速原型模型36生命周期的幾個(gè)觀點(diǎn)將整個(gè)生命周期劃分為較小的階段是實(shí)現(xiàn)軟件生產(chǎn)工程化的重要步驟;每個(gè)階段賦予明確而有限的任務(wù),可以降低因?yàn)檐浖?guī)模大大增長而增加了的軟件復(fù)雜度;階段之間的順序性和依賴性;前一個(gè)階段任務(wù)的完成是開始后一個(gè)階段工作的前提和根底;后一個(gè)階段的任務(wù)是前一階段結(jié)果的具體化。每個(gè)階段結(jié)束前必須進(jìn)行技術(shù)審查和管理復(fù)查;37生命周期的幾個(gè)觀點(diǎn)每個(gè)階段結(jié)束之后都要交付完整、清楚、準(zhǔn)確的文檔;根據(jù)不同階段的任務(wù)特點(diǎn),應(yīng)采用不同的技術(shù)和方法;軟件的生命周期有效地降低了軟件開發(fā)的難度,保證了軟件的質(zhì)量,提高了可維護(hù)性。38瀑布式開發(fā)模型瀑布模型:將軟件的生命周期劃分為定義、開發(fā)、維護(hù)三個(gè)時(shí)期,每個(gè)時(shí)期又區(qū)分為假設(shè)干個(gè)階段,各個(gè)階段的工作順序展開,猶如奔流不息的瀑布。特點(diǎn)單源頭缺乏靈活性,無法解決軟件需求不明確或不準(zhǔn)確的問題39瀑布式開發(fā)模型40瀑布式開發(fā)模型的階段性任務(wù)劃分階段的原那么:各個(gè)階段的任務(wù)彼此之間盡可能相對(duì)獨(dú)立同一個(gè)階段各項(xiàng)任務(wù)的性質(zhì)盡可能相同瀑布式模型生命周期的時(shí)期劃分:軟件定義時(shí)期軟件開發(fā)時(shí)期軟件維護(hù)時(shí)期41軟件定義時(shí)期軟件定義時(shí)期是軟件的方案、分析階段。完成以下問題:該軟件是什么開發(fā)該軟件的是否可行該軟件的功能/性能怎樣開發(fā)該軟件的軟/硬件資源是什么完成方案的進(jìn)度表是什么軟件定義時(shí)期的三個(gè)階段:問題定義:問題是什么可行性研究:是否能解決/值得解決42軟件開發(fā)時(shí)期具體分析、設(shè)計(jì)和實(shí)現(xiàn)軟件定義時(shí)期定義的軟件軟件開發(fā)時(shí)期的四個(gè)階段需求分析:弄清楚系統(tǒng)做什么弄清系統(tǒng)全部需求,給出需求規(guī)格說明書軟件設(shè)計(jì)總體設(shè)計(jì):建立軟件總體結(jié)構(gòu),確定系統(tǒng)由那些模塊組成詳細(xì)設(shè)計(jì):確定軟件的內(nèi)部過程及算法,給出程序的詳細(xì)規(guī)格說明編碼和單元測試:編寫源程序,測試每個(gè)模塊軟件測試:找出軟件中的錯(cuò)誤并改正集成測試:按軟件結(jié)構(gòu),進(jìn)行組裝測試驗(yàn)收測試:按照軟件需求規(guī)格說明,對(duì)目標(biāo)系統(tǒng)的驗(yàn)收43軟件維護(hù)時(shí)期軟件的維護(hù)包括糾正錯(cuò)誤和擴(kuò)充、完善功能。軟件維護(hù)的種類:改正性維護(hù):糾正錯(cuò)誤適應(yīng)性維護(hù):適應(yīng)環(huán)境變化完善性維護(hù):擴(kuò)充或完善功能預(yù)防性維護(hù):為以后的維護(hù)活動(dòng)做準(zhǔn)備44瀑布式開發(fā)模型的幾個(gè)觀點(diǎn)1、階段的順序性和依賴性只有前一階段任務(wù)的完成之后,后一階段的工作才能開始;前一階段的輸出文檔就是后一階段的輸入文檔。2、推遲實(shí)現(xiàn)的觀點(diǎn)3、質(zhì)量保證的觀點(diǎn)每一階段都要完成規(guī)定的文檔;每一階段都要對(duì)自己完成的文檔進(jìn)行復(fù)審。4、不同階段中所需人員、資源不同45瀑布式開發(fā)模型的幾個(gè)觀點(diǎn)測試策略與用例軟件計(jì)劃用戶要求系統(tǒng)測試需求分析需求規(guī)格說明書確認(rèn)測試概要設(shè)計(jì)概要設(shè)計(jì)說明書集成測試詳細(xì)設(shè)計(jì)詳細(xì)詳細(xì)說明書編碼程序代碼單元測試運(yùn)行維護(hù)文檔與測試測試測試準(zhǔn)備圖11.4各階段評(píng)審錯(cuò)誤追溯46瀑布式開發(fā)模型特征前一階段的輸出應(yīng)該作為本階段的輸入〔即:工作對(duì)象〕。利用該階段的輸入實(shí)施該項(xiàng)活動(dòng)應(yīng)完成的內(nèi)容。得到該階段的工作成果,作為輸出傳給下一個(gè)階段。對(duì)本階段實(shí)施的工作進(jìn)行評(píng)審。確認(rèn)之后才能進(jìn)入下一個(gè)階段。47原型模型(快速成型模型)建造/修改原型用戶測試運(yùn)行原型

聽取用戶意見48原型模型原型化模型:在開發(fā)初期,要想得到一個(gè)完整準(zhǔn)確的規(guī)格說明不是一件容易的事。特別是對(duì)一些大型的軟件工程

溫馨提示

  • 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)論