CH1軟件工程課件_第1頁
CH1軟件工程課件_第2頁
CH1軟件工程課件_第3頁
CH1軟件工程課件_第4頁
CH1軟件工程課件_第5頁
已閱讀5頁,還剩82頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

軟件工程學(xué)概述計(jì)算機(jī)系任洪敏HmRen@2009.9.1信息管理與信息系統(tǒng)軟件工程軟件工程導(dǎo)論(第五版)張海藩清華大學(xué)出版社(2007)教材2軟件工程

實(shí)用軟件工程(第四版)鄭人杰殷人昆陶永雷清華大學(xué)出版社(1996)

軟件工程-實(shí)踐者的研究方法(英文版第八版)RogerS.Pressman機(jī)械工業(yè)出版社參考書目3軟件工程SoftwareEngineeringLaboratoryProjectHomeDesignandImprovementSystemTheHomeDesignandImprovementSystem,HDIS,isintendedtointegrateandunifyallactivitiesrelatedtoconstructionandimprovementsofhomes.Constructinganewhomeorrenovatinganexistinghomecanrequireahighnumberofinteractionswithnumerousindividuals,companies,andstores.ThepurposeofHDISistoutilizecomputingtechnologyinapositivewaytoenhance,facilitate,andpromotethisactivity.5軟件工程計(jì)劃:工作內(nèi)容①ContractorManagement②HomeOwnerManagement③ArchitecturalManagement④InteriorDesigner⑤LandscapeManagement⑥Schedule&SupplierManagement

FundingManagement

LandOfficeManagement6《圖書管理系統(tǒng)》《圖書管理系統(tǒng)》針對的用戶是中型圖書室,藏書的種類包括中、英、俄、德、日文書籍和期刊,讀者的數(shù)量和來源僅限于本單位職工及通過館際互借認(rèn)可的讀者。相應(yīng)的需求有:能夠存儲一定數(shù)量的圖書信息,并方便有效的進(jìn)行相應(yīng)的書籍?dāng)?shù)據(jù)操作和管理,這主要包括:7

讀者信息的登記、刪除及修改。讀者資料的統(tǒng)計(jì)與查詢。能夠?qū)π枰慕y(tǒng)計(jì)結(jié)果提供打印輸出。能夠提供一定的安全機(jī)制,提供數(shù)據(jù)信息授權(quán)訪問,防止隨意刪改,同時(shí)提供信息備份的服務(wù)。9鼓勵(lì)項(xiàng)目移動(dòng)互聯(lián)網(wǎng)項(xiàng)目李開復(fù):創(chuàng)新工作室10信息管理與信息系統(tǒng)應(yīng)提交的文檔軟件需求規(guī)格說明書軟件設(shè)計(jì)規(guī)格說明書系統(tǒng)測試報(bào)告書演示程序11軟件工程目的體驗(yàn)軟件工程各階段的主要工作,特別注意吸取教訓(xùn);

學(xué)會(huì)與他人合作,培養(yǎng)團(tuán)隊(duì)精神,單干戶將得不到成績?,F(xiàn)在開始:構(gòu)想、分組行動(dòng)起來!第一次進(jìn)度要求:1周分組,班長發(fā)到我處,指明組長13Late1950’s:§1.軟件危機(jī)(SoftwareCrisis)Intheearlydays:

“Software”=“Placeasequenceofinstructionstogethertogetthecomputertodosomethinguseful”.UserComputerComputerbecamecheaperandmorecommonHighlevellanguageswereinventedProgrammerUserComputereasier14Early1960s:Veryfewlargesoftwareprojectsweredonebysomeexperts.HackerMiddletolate1960s:Trulylargesoftwaresystemswereattempted.例:美國IBM公司在1963年至1966年開發(fā)的IBM360機(jī)的操作系統(tǒng)。這一項(xiàng)目花了5000人一年的工作量,最多時(shí)有1000人投入開發(fā)工作,寫出了近100萬行源程序。據(jù)統(tǒng)計(jì),這個(gè)操作系統(tǒng)每次發(fā)行的新版本都是從前一版本中找出1000個(gè)程序錯(cuò)誤而修正的結(jié)果。Cracker15一些數(shù)據(jù):大約70%的軟件開發(fā)項(xiàng)目超出了估算的時(shí)間,大型項(xiàng)目平均超出計(jì)劃交付時(shí)間20%到50%,90%以上的軟件項(xiàng)目開發(fā)費(fèi)用超出預(yù)算,并且項(xiàng)目越大,超出項(xiàng)目計(jì)劃的程度越高美國政府審計(jì)局:只有不到2%的合同定購軟件在發(fā)布時(shí)具有可用性——98%以上的項(xiàng)目都失敗了17yet,SuccessHasntComeEasily31%53%16%SuccessfullyChallengedCanceled軟件危機(jī)相關(guān)術(shù)語“兩難境地(CrunchMode)”:處于兩難境地的項(xiàng)目面臨著無法達(dá)到最初目標(biāo)的威脅(費(fèi)用、進(jìn)度表、功能性等等),而項(xiàng)目團(tuán)隊(duì)在努力想要跨越該困境。“我們正處于兩難境地,在半夜之前是不會(huì)回家的”“死亡行軍(DeathMarch)”:用來描述其進(jìn)度表幾乎不可能完成的項(xiàng)目。“這是一個(gè)死亡行軍項(xiàng)目,我希望自己不要參與進(jìn)去”19更準(zhǔn)確的說法:慢性痛苦(chronicaffliction)SuggestedbyProf.DanielTiechrow,UniversityofMichigan盡管忍受痛苦,但是軟件依然在我們這個(gè)世界起著越來越重要的作用,但是如果能夠醫(yī)治痛苦,那么軟件業(yè)將發(fā)展得更加健康。如何醫(yī)治這種軟件業(yè)的慢性痛苦?21§1.軟件危機(jī)⑴項(xiàng)目沒有被很好地理解;計(jì)劃不周,最終導(dǎo)致進(jìn)度拖延。例1.Inthelate1960s,abright-eyedyoungengineer*waschosento“write”acomputerprogramforanautomatedmanufacturingapplication.Thereasonforhisselectionwassimple.Hewastheonlypersoninhistechnicalgroupwhohadattendedacomputerprogrammingseminar.Heknewthein’sandout’sofassemblerlanguageandFortran,butnothingaboutsoftwareengineeringandevenlessaboutprojectschedulingandtracking.問題出在哪里?22Hisbossgavehimtheappropriatemanualsandaverbaldescriptionofwhathadtobedone.Hewasinformedthattheprojectmustbecompletedintwomonths.Hereadthemanuals,consideredhisapproach,andbeganwritingcode.Aftertwoweeks,thebosscalledhimintohisofficeandaskedhowthingsweregoing.“Reallygreat,”saidtheyoungengineerwithyouthfulenthusiasm,“ThiswasmuchsimplerthanIthought.I’m

probablycloseto75percentfinished.”Thebosssmiled.“That’sreallyterrific,”hesaid.Hethentoldtheyoungengineertokeepupthegoodworkandplantomeetagaininaweek’stime.23§1.軟件危機(jī)例2:

Intheearly1980s,theUnitedStates’InternalRevenueService(IRS)hiredSperryCorporationtobuildanautomatedfederalincometaxformprocessingsystem.AccordingtotheWashingtonPost,the“systemhasprovedinadequatetotheworkload,costnearlytwicewhatwasexpectedandmustbereplacedsoon”(Sawyer1985).In1985,anextra$90millionwasneededtoenhancetheoriginal$103millionworthofSperryequipment.Inaddition,becausetheproblempreventedtheIRSfromreturningrefundstotaxpayersbythedeadline,theIRSwasforcedtopay$40.2millionininterestand$22.3millioninovertimewagesforitsemployeeswhoweretryingtocatchup.25§1.軟件危機(jī)In1996,thesituationhadnotimproved.TheLosAngelesTimesreportedonMarch29thattherewasstillnomasterplanforthemodernizationofIRScomputers,onlyasix-thousandtechnicaldocument.CongressmanJimLightfootcalledtheproject“a$4-billionfiascothatisflounderingbecauseofinadequateplanning”(Vartabedian1996).Myth:Ifwegetbehindschedule,wecanaddmoreprogrammersandcatchup.Reality:Softwaredevelopmentisnotamechanisticprocesslikemanufacturing.InthewordsofBrooks,“addingpeopletoalatesoftwareprojectmakesitlater.”26

1963年美國飛往火星的火箭爆炸,造成1000萬美元的損失。原因是FORTRAN程序:

DO5I=1,3

誤寫為:DO5I=1.3

1967年蘇聯(lián)“聯(lián)盟一號”載人宇宙飛船在返航時(shí),由于軟件忽略一個(gè)小數(shù)點(diǎn),在進(jìn)入大氣層時(shí)因打不開降落傘而燒毀。29§1.軟件危機(jī)⑷軟件難以維護(hù)(maintainability)不易升級evolvability)Myth:Oncewewritetheprogramandgetittowork,ourjobisdone.Reality:Someoneoncesaidthat“thesooneryoubegin‘writingcode’,thelongerit’lltakeyoutogetdone.”Industrydataindicatethatbetween50and70percentofalleffortexpendedonaprogramwillbeexpendedafteritisdeliveredtothecustomerforthefirsttime.30§1.軟件危機(jī)

BettermanagementDifferentteamorganizationsBetterlanguages&toolsUniformcodingconventions

必須意識到:“軟件”編程,它有自己的生命周期(lifecycle)。大型軟件系統(tǒng)的開發(fā)與其它工程項(xiàng)目如建造橋梁、制造飛機(jī)、輪船等的開發(fā)是同理的?!败浖こ獭?SoftwareEngineering)NATOConference,Garmisch,Germany,1968.解決問題的想法:312軟件的概念軟件的概念:軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另一部分,它是包括程序,數(shù)據(jù)及其相關(guān)文檔的完整集合。其中,程序是按事先設(shè)計(jì)的功能和性能要求執(zhí)行的指令序列。數(shù)據(jù)是使程序能正常操作所需的數(shù)據(jù)結(jié)構(gòu);文檔是與程序開發(fā),維護(hù)和使用有關(guān)的圖文材料。322.1軟件特點(diǎn)軟件的特點(diǎn):

軟件的生產(chǎn)與硬件不同,它沒有明顯的制造過程。硬件在制造過程中進(jìn)行質(zhì)量控制,軟件在開發(fā)過程中進(jìn)行質(zhì)量控制。軟件是一種邏輯實(shí)體,不是具體的物理實(shí)體,具有抽象性.軟件的運(yùn)行和使用期間,沒有硬件那樣的機(jī)械磨損和老化問題,但存在軟件退化問題。332.1軟件的特點(diǎn)(續(xù))軟件的開發(fā)和運(yùn)行常常受到計(jì)算機(jī)系統(tǒng)的限制,不同程度依賴計(jì)算機(jī)系統(tǒng)。軟件移植的問題。軟件的開發(fā)至今尚未完全擺脫手工藝的開發(fā)方式。軟件本身的復(fù)雜性。軟件的復(fù)雜性可能來自它所反映的實(shí)際問題的復(fù)雜性,也可能來自程序邏輯結(jié)構(gòu)的復(fù)雜性。軟件成本相當(dāng)昂貴。軟件的研制工作需要投入大量的、復(fù)雜的、高強(qiáng)度的腦力勞動(dòng),它的成本是比較高的。相當(dāng)多的軟件工作涉及到社會(huì)因素。許多軟件的開發(fā)和運(yùn)行涉及機(jī)構(gòu)、體制及管理方式等問題,甚至涉及到人的觀念和人們的心理。它直接影響到項(xiàng)目的成敗

342.2軟件的分類軟件的分類:按照功能劃分:系統(tǒng)軟件、支撐軟件、應(yīng)用軟件按照規(guī)模劃分:微型、小型、中型、大型、甚大型、極大型按照工作方式劃分:實(shí)時(shí)處理軟件、分時(shí)軟件、交互式軟件、批處理軟件按照服務(wù)對象劃分:項(xiàng)目軟件、產(chǎn)品軟件按照使用頻度劃分:使用一次、一年一次、一天一次、頻繁使用按照失效影響劃分:高可靠性軟件、一般可靠性軟件35計(jì)算機(jī)軟件經(jīng)歷了三個(gè)發(fā)展階段:程序設(shè)計(jì)階段,約為50至60年代程序系統(tǒng)階段,約為60至70年代軟件工程階段,約為70年代以后計(jì)算機(jī)軟件發(fā)展三個(gè)時(shí)期及其特點(diǎn):參見下表。表注:軟件語言包括需求定義語言、軟件功能語言、軟件設(shè)計(jì)語言、程序設(shè)計(jì)語言。36軟件發(fā)展階段(續(xù))特點(diǎn)

時(shí)期程序設(shè)計(jì)程序系統(tǒng)軟件工程軟件所指程序程序及說明書程序、文檔、數(shù)據(jù)程序設(shè)計(jì)語言匯編、機(jī)器語言高級語言軟件語言軟件工作范圍程序編寫包括設(shè)計(jì)和測試軟件生成期需求人員程序設(shè)計(jì)者本人少數(shù)用戶市場用戶開發(fā)組織個(gè)人開發(fā)小組開發(fā)小組、開發(fā)機(jī)構(gòu)軟件規(guī)模小型中小型大中小型質(zhì)量決定因素個(gè)人程序技術(shù)小組技術(shù)水平管理水平開發(fā)技術(shù)和手段子程序、程序庫結(jié)構(gòu)化程序設(shè)計(jì)工程化開發(fā)方法、CASE、數(shù)據(jù)庫維護(hù)人員程序設(shè)計(jì)者開發(fā)小組專職維護(hù)人員硬件特征價(jià)高、速度、容量、可靠性差降價(jià)、速度、容量、可靠性提高高速、大容量、微型化、網(wǎng)絡(luò)化軟件特征完全不受重視軟件不能滿足需求,出現(xiàn)軟件危機(jī)有進(jìn)步,未突破性進(jìn)展,價(jià)高,未完全擺脫危機(jī)時(shí)期特點(diǎn)37軟件發(fā)展的根本變化數(shù)十年來根本的變化:人們對軟件有了新的認(rèn)識。50年代到60年代時(shí),程序設(shè)計(jì)曾經(jīng)被看做是一種任人發(fā)揮創(chuàng)造才能的技術(shù)領(lǐng)域。程序的寫法可以不受任何約束。隨著計(jì)算機(jī)的廣泛使用,人們要求這些程序容易看懂、容易使用,并且容易修改和擴(kuò)充。于是,程序便從個(gè)人按自己意圖創(chuàng)造的“藝術(shù)品”轉(zhuǎn)變?yōu)槟鼙粡V大用戶接受的工程化產(chǎn)品。軟件的需求是軟件發(fā)展的動(dòng)力。早期的程序開發(fā)者只是為了滿足自己的需要,這種自給自足的生產(chǎn)方式仍然是其低級階段的表現(xiàn)。進(jìn)入軟件工程階段以后,軟件開發(fā)的成果具有社會(huì)屬性,它要在市場中流通以滿足廣大用戶的需要,軟件開發(fā)者和用戶的分工和責(zé)任也是十分清楚的軟件工作的范圍從只考慮程序的編寫擴(kuò)展到涉及整個(gè)軟件生存周期,包括制定計(jì)劃、需求分析、軟件設(shè)計(jì)、軟件實(shí)現(xiàn)、軟件測試和軟件維護(hù)。383軟件工程定義Boehm:運(yùn)用現(xiàn)代科學(xué)技術(shù)知識來設(shè)計(jì)并構(gòu)造計(jì)算機(jī)程序及為開發(fā)、運(yùn)行和維護(hù)這些程序所必需的相關(guān)文件資料IEEE:軟件工程是開發(fā)、運(yùn)行、維護(hù)和修復(fù)軟件的系統(tǒng)方法FritzBauer:建立并使用完善的工程化原則,以較經(jīng)濟(jì)的手段獲得能在實(shí)際機(jī)器上有效運(yùn)行的可靠軟件的一系列方法工程:系統(tǒng)、規(guī)范、可度量39軟件工程的定義軟件工程是一類求解軟件的工程,它應(yīng)用計(jì)算機(jī)科學(xué),數(shù)學(xué)以及管理科學(xué)等原理,借鑒傳統(tǒng)工程的原則、方法,創(chuàng)建軟件以達(dá)到提高質(zhì)量,降低成本的目的。其中計(jì)算機(jī)科學(xué)、數(shù)學(xué)用于構(gòu)造模型與算法,工程科學(xué)用于制定規(guī)范、設(shè)計(jì)范型、評估成本以及確定權(quán)衡,管理科學(xué)用于計(jì)劃、資源、質(zhì)量、成本等管理。軟件工程是一門指導(dǎo)計(jì)算機(jī)軟件開發(fā)和維護(hù)的工程學(xué)科。40軟件工程的產(chǎn)生和發(fā)展軟件工程的發(fā)展已經(jīng)歷了四個(gè)重要階段:4、第四代軟件工程—構(gòu)件工程3、第三代軟件工程—過程工程2、第二代軟件工程—對象工程1、第一代軟件工程—傳統(tǒng)的軟件工程411.1.1軟件程的產(chǎn)生和發(fā)展軟件工程的發(fā)展已經(jīng)歷了四個(gè)重要階段:1、第一代軟件工程—傳統(tǒng)的軟件工程2、第二代軟件工程—對象工程3、第三代軟件工程—過程工程4、第四代軟件工程—構(gòu)件工程

60年代末到70年代為了克服“軟件危機(jī)”(Softwarecrisis)提出“軟件工程”的名詞,將軟件開發(fā)納入工程化的軌道,基本形成軟件工程的概念、框架、技術(shù)和方法。稱為傳統(tǒng)的軟件工程。421.1.1軟件工程的產(chǎn)生和發(fā)展1.1.1軟件工程的產(chǎn)生和發(fā)展軟件工程的發(fā)展已經(jīng)歷了四個(gè)重要階段:1、第一代軟件工程—傳統(tǒng)的軟件工程2、第二代軟件工程—對象工程3、第三代軟件工程—過程工程4、第四代軟件工程—構(gòu)件工程80年代中到90年代,面向?qū)ο蟮姆椒ㄅc技術(shù)得到發(fā)展,研究的重點(diǎn)轉(zhuǎn)移到面向?qū)ο蟮姆治雠c設(shè)計(jì),演化為一種完整的軟件開發(fā)方法和系統(tǒng)的技術(shù)體系,稱為對象工程。431.1.1軟件工程的產(chǎn)生和發(fā)展1.1.1軟件工程的產(chǎn)生和發(fā)展軟件工程的發(fā)展已經(jīng)歷了四個(gè)重要階段:1、第一代軟件工程—傳統(tǒng)的軟件工程2、第二代軟件工程—對象工程3、第三代軟件工程—過程工程4、第四代軟件工程—構(gòu)件工程80年代中開始,人們在軟件開發(fā)的實(shí)踐過程中認(rèn)識到:提高軟件生產(chǎn)率,保證軟件質(zhì)量的關(guān)鍵是“軟件過程”,是軟件開發(fā)和維護(hù)中的管理和支持能力,逐步形成軟件過程工程。441.1.1軟件工程的產(chǎn)生和發(fā)展1.1.1軟件工程的產(chǎn)生和發(fā)展軟件工程的發(fā)展已經(jīng)歷了四個(gè)重要階段:1、第一代軟件工程—傳統(tǒng)的軟件工程2、第二代軟件工程—對象工程3、第三代軟件工程—過程工程4、第四代軟件工程—構(gòu)件工程90起年代,基于構(gòu)件(Component)的開發(fā)方法取得重要進(jìn)展,軟件系統(tǒng)的開發(fā)可通過使用現(xiàn)成的可復(fù)用構(gòu)件組裝完成,而無需從頭開始構(gòu)造,以此達(dá)到提高效率和質(zhì)量,降低成本的目的。稱為構(gòu)件工程。45軟件工程本質(zhì)特性軟件工程關(guān)注大型復(fù)雜程序構(gòu)造軟件工程的中心課題是控制復(fù)雜性軟件經(jīng)常變化:keepingsoftwaresoft軟件開發(fā)的效率非常重要和諧合作是軟件開發(fā)的關(guān)鍵軟件必須有效地支持它的用戶軟件工程相關(guān)的知識和文化背景的分離46軟件工程管理的基本原理用分階段的生命周期計(jì)劃嚴(yán)格管理堅(jiān)持進(jìn)行階段評審實(shí)行嚴(yán)格的產(chǎn)品控制[基準(zhǔn)配置管理]采用現(xiàn)代程序設(shè)計(jì)技術(shù)結(jié)果應(yīng)能清楚地審查開發(fā)小組的人員應(yīng)該少而精承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性47軟件工程技術(shù)的基本原理抽象:

抽取事物最基本的特性和行為,忽略非基本的細(xì)節(jié)。采用分層次抽象,自頂向下、逐層細(xì)化的辦法控制軟件開發(fā)過程的復(fù)雜性。信息隱蔽:

將模塊設(shè)計(jì)成“黑箱”,實(shí)現(xiàn)的細(xì)節(jié)隱藏在模塊內(nèi)部,不讓模塊的使用者直接訪問。這就是信息封裝,使用與實(shí)現(xiàn)分離的原則。使用者只能通過模塊接口訪問模塊中封裝的數(shù)據(jù)。模塊化:

模塊是程序中邏輯上相對獨(dú)立的成分,是獨(dú)立的編程單位,應(yīng)有良好的接口定義。如C語言程序中的函數(shù)過程,C++語言程序中的類。模塊化有助于信息隱蔽和抽象,有助于表示復(fù)雜的系統(tǒng)。局部化:

要求在一個(gè)物理模塊內(nèi)集中邏輯上相互關(guān)聯(lián)的計(jì)算機(jī)資源,保證模塊之間具有松散的耦合,模塊內(nèi)部具有較強(qiáng)的內(nèi)聚。這有助于控制解的復(fù)雜性。48軟件工程技術(shù)的基本原理(續(xù))確定性:軟件開發(fā)過程中所有概念的表達(dá)應(yīng)是確定的、無歧義性的、規(guī)范的。這有助于人們之間在交流時(shí)不會(huì)產(chǎn)生誤解、遺漏,保證整個(gè)開發(fā)工作協(xié)調(diào)一致。一致性:

整個(gè)軟件系統(tǒng)(包括程序、文檔和數(shù)據(jù))的各個(gè)模塊應(yīng)使用一致的概念、符號和術(shù)語。程序內(nèi)部接口應(yīng)保持一致。軟件和硬件、操作系統(tǒng)的接口應(yīng)保持一致。系統(tǒng)規(guī)格說明與系統(tǒng)行為應(yīng)保持一致。用于形式化規(guī)格說明的公理系統(tǒng)應(yīng)保持一致。完備性:

軟件系統(tǒng)不丟失任何重要成分,可以完全實(shí)現(xiàn)系統(tǒng)所要求功能的程度。為了保證系統(tǒng)的完備性,在軟件開發(fā)和運(yùn)行過程中需要嚴(yán)格的技術(shù)評審??沈?yàn)證性:

開發(fā)大型的軟件系統(tǒng)需要對系統(tǒng)自頂向下、逐層分解。系統(tǒng)分解應(yīng)遵循系統(tǒng)易于檢查、測試、評審的原則,以確保系統(tǒng)的正確性。49軟件工程研究的內(nèi)容軟件開發(fā)一整套技術(shù)方法的集合軟件工程方法學(xué)包括三個(gè)要素:方法、工具和過程。軟件工程方法為軟件開發(fā)提供了“如何做”的技術(shù)。它包括了多方面的任務(wù),如項(xiàng)目計(jì)劃與估算、軟件系統(tǒng)需求分析、數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)總體結(jié)構(gòu)的設(shè)計(jì)、算法過程的設(shè)計(jì)、編碼、測試以及維護(hù)等。50toolmethodprocedureQualityfocusSoftwareengineeringlayers軟件工具為軟件工程方法提供了自動(dòng)的或半自動(dòng)的軟件支撐環(huán)境。計(jì)算機(jī)輔助軟件工程(CASE)將各種軟件工具、開發(fā)機(jī)器和一個(gè)存放開發(fā)過程信息的工程數(shù)據(jù)庫組合起來形成一個(gè)軟件工程環(huán)境。軟件工程的過程則是將軟件工程的方法和工具綜合起來以達(dá)到合理、及時(shí)地進(jìn)行計(jì)算機(jī)軟件開發(fā)的目的。過程定義了方法使用的順序、要求交付的文檔資料、為保證質(zhì)量和協(xié)調(diào)變化所需要的管理、及軟件開發(fā)各個(gè)階段完成的里程碑。52生命開發(fā)方法學(xué)結(jié)構(gòu)化方法:結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計(jì)、結(jié)構(gòu)化編碼過程:劃分階段、依此進(jìn)行、技術(shù)和管理復(fù)審、文檔驅(qū)動(dòng)工具:大量輔助工具簡單、有條不紊、廣泛應(yīng)用不適合:規(guī)模龐大、需求模糊和變化、維護(hù)困難53面向?qū)ο蠓椒▽W(xué)面向?qū)ο蠹夹g(shù):面向?qū)ο蠓治?、面向?qū)ο笤O(shè)計(jì)、面向?qū)ο缶幋a(OO的思想)過程:主動(dòng)地多次反復(fù)迭代的演化過程。工具:VS、ROSE易于理解、易于復(fù)用、易于維護(hù)54計(jì)算機(jī)系統(tǒng)工程基于計(jì)算機(jī)的系統(tǒng)和其元素55計(jì)算機(jī)系統(tǒng)工程軟件:計(jì)算機(jī)程序、數(shù)據(jù)結(jié)構(gòu)、相關(guān)文檔硬件:計(jì)算設(shè)備(如CPU,存儲器)和外部機(jī)電設(shè)備(如傳感器、馬達(dá)等)人:硬件和軟件的用戶數(shù)據(jù)庫:一個(gè)大型的有組織的信息集合文檔:手冊、表格和其它用以描述系統(tǒng)使用和操作的信息過程:定義每一種系統(tǒng)元素的特定使用步驟,或系統(tǒng)駐留的過程性環(huán)境56SoftwareandsystemsengineeringTheproportionofsoftwareinsystemsisincreasing.Software-drivengeneralpurposeelectronicsisreplacingspecial-purposesystemsProblemsofsystemsengineeringaresimilarto

problemsofsoftwareengineeringSoftwareis(unfortunately)seenasaproblem

insystemsengineering.Manylargesystemprojectshavebeendelayedbecauseofsoftwareproblems574軟件生命周期正如同任何事物一樣,軟件也有一個(gè)孕育、誕生、成長、成熟、衰亡的生存過程。我們稱其為計(jì)算機(jī)軟件的生存周期。生命周期的三個(gè)時(shí)期:軟件定義、軟件開發(fā)、軟件維護(hù)58軟件生命周期(續(xù))問題定義:“要解決的問題是什么”簡要寫出問題性質(zhì)、工程目標(biāo)、工程規(guī)模的書面報(bào)告可行性研究:“該問題有可行的解決辦法嗎?”高層、壓縮和簡化的系統(tǒng)分析和設(shè)計(jì)過程研究問題的范圍、值得嗎、行嗎需求分析:“目標(biāo)系統(tǒng)必須做什么”系統(tǒng)的邏輯模型需求規(guī)格說明書59軟件生命周期(續(xù))總體設(shè)計(jì):“概括地說,系統(tǒng)怎樣實(shí)現(xiàn)?”設(shè)計(jì)和分析多種方案,推薦方案和其計(jì)劃系統(tǒng)的體系結(jié)構(gòu)詳細(xì)設(shè)計(jì):“系統(tǒng)具體怎樣實(shí)現(xiàn)?”程序的詳細(xì)規(guī)格說明,編碼的藍(lán)圖確定模塊的算法和數(shù)據(jù)結(jié)構(gòu)60軟件生命周期(續(xù))編碼和單元測試:編碼程序模塊測試該模塊綜合測試集成測試驗(yàn)收測試系統(tǒng)分析61軟件生命周期(續(xù))軟件維護(hù)改正性維護(hù)完善性維護(hù)適應(yīng)性維護(hù)預(yù)防性維護(hù)沒有一個(gè)四海皆準(zhǔn)的統(tǒng)一的過程62問題定義編碼需求分析設(shè)計(jì)可行性研究運(yùn)行與維護(hù)測試開發(fā)時(shí)期運(yùn)行時(shí)期計(jì)劃時(shí)期(目標(biāo)與范圍說明書)(可行性論證論告)(維護(hù)報(bào)告)(測試報(bào)告)(程序)(設(shè)計(jì)文檔)(需求說明書)瀑布模型圖1.3瀑布模型1.3軟件生存期63軟件過程——生命周期模型瀑布模型64圖1-3軟件生存周期工作量分配65圖1-4開發(fā)期工作量分配66軟件過程——生命周期模型快速原形模型快速原形規(guī)格說明設(shè)計(jì)實(shí)現(xiàn)系統(tǒng)維護(hù)67軟件過程——生命周期模型增量模型定義概要需求把需求分配給增量設(shè)計(jì)系統(tǒng)結(jié)構(gòu)開發(fā)系統(tǒng)增量驗(yàn)證增量組裝增量驗(yàn)證系統(tǒng)系統(tǒng)不完全最終系統(tǒng)68軟件過程——生命周期模型增量模型需求分析規(guī)格說明系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)集成實(shí)現(xiàn)集成需求分析規(guī)格說明系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)集成實(shí)現(xiàn)集成需求分析規(guī)格說明系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)集成實(shí)現(xiàn)集成構(gòu)件n構(gòu)件2構(gòu)件169增量模型(incrementalmodel)增量模型是一種非整體開發(fā)的模型。該模型具有較大的靈活性,適合于軟件需求不明確、設(shè)計(jì)方案有一定風(fēng)險(xiǎn)的軟件項(xiàng)目。增量模型和瀑布模型之間的本質(zhì)區(qū)別是:瀑布模型屬于整體開發(fā)模型,它規(guī)定在開始下一個(gè)階段的工作之前,必須完成前一階段的所有細(xì)節(jié)。而增量模型屬于非整體開發(fā)模型,它推遲某些階段或所有階段中的細(xì)節(jié),從而較早地產(chǎn)生工作軟件。70

螺旋模型

對于大型軟件,只開發(fā)一個(gè)原型往往達(dá)不到要求。螺旋模型將瀑布模型和增量模型結(jié)合起來,并加入了風(fēng)險(xiǎn)分析。螺旋模型將開發(fā)過程分為幾個(gè)螺旋周期,每個(gè)螺旋周期可分為4個(gè)工作步驟:1.確定目標(biāo)、方案和限制條件;2.評估方案、標(biāo)識風(fēng)險(xiǎn)和解決風(fēng)險(xiǎn);3.開發(fā)確認(rèn)產(chǎn)品;4.計(jì)劃下一周期工作。螺旋模型71軟件過程——生命周期模型噴泉模型重復(fù)演進(jìn)各階段間無明顯界限72統(tǒng)一過程概述Rational公司的RUP發(fā)展而來的一套軟件工程方法,是目前最有效的軟件開發(fā)過程模型。基于構(gòu)件的用UML制定軟件系統(tǒng)所有藍(lán)圖突出特點(diǎn):用例驅(qū)動(dòng)、架構(gòu)優(yōu)先、迭代和增量過程四個(gè)階段:初始、細(xì)化、構(gòu)造、移交強(qiáng)調(diào)開發(fā)過程五個(gè)核心工作流:需求捕獲、分析、設(shè)計(jì)、實(shí)現(xiàn)、測試73RUP工作流與階段74在RUP中,項(xiàng)目生命周期被劃分為四個(gè)階段:

(1)初始階段(Inception)

(2)細(xì)化階段(Elaboration)

(3)構(gòu)造階段(Construction)

(4)交付階段(Transition)每個(gè)階段開始時(shí)都有特定的目標(biāo),結(jié)束時(shí)有里程碑。在每個(gè)階段中存在一個(gè)或多個(gè)迭代。在每個(gè)迭代中,可以有多個(gè)工作流。2統(tǒng)一過程四個(gè)工作階段75獲取需求需求分析具體描述優(yōu)化程序驗(yàn)證維護(hù)調(diào)整知識庫/專家系統(tǒng)智能模型76SoftwareMyths(1)ManagementMyths(管理神話)Managerswithsoftwareresponsibility,likemanagersinmostdisciplines,areoftenunderpressuretomaintainbudgets,keepschedulesfromslipping(松弛),andimprovequality.Likeadrowningpersonwhograspsatastraw(抓住稻草的要淹死的人),asoftwaremanageroftengraspsatbeliefinasoftwaremyth,ifthatbeliefwilllessenthepressure(eventemporarily).77ManagementMythsMyth:Wealreadyhaveabookthat’sfullofstandardsandproceduresforbuildingsoftware,won’tthatprovidemypeoplewitheverythingtheyneedtoknow?Reality:Thebookofstandardsmayverywellexist,butisitused?Aresoftwarepractitionersawareofitsexistence?Doesitreflectmodernsoftwareengineeringpractice?Isitcomplete?Isitstreamlinedtoimprovetimetodeliverywhilestillmaintainingafocusonquality?Inmanycases,theanswertoallofthesequestionsis“no”.78ManagementMythsMyth:Mypeoplehavestate-of-the-artsoftwaredevelopmenttools,afterall,webuythemthenewestcomputers.Reality:Ittakesmuchmorethanthelatestmodelmainframe,workstationorPCtodohigh-qualitysoftwaredevelopment.Computer-aidedsoftwareengineeringtoolsaremoreimportantthanhardwareforachievinggoodqualityandproductivity,yetthemajorityofsoftwaredevelopersstilldonotusethemeffectively.79ManagementMythsMyth:Ifwegetbehindschedule,wecanaddmoreprogrammersandcatchup(sometimescalledtheMongolianhordeconcept)Reality:Softwaredevelopmentisnotamechanisticprocesslikemanufacturing.InthewordsofBrooks:Addingpeopletoalatesoftwareprojectmakesitlater.80ManagementMythsMyth:IfIdecidetooutsourcethesoftwareprojecttoathirdparty,Icanjustrelaxandletthatfirmbuildit.Reality:Ifanorganizationdoesnotunderstandhowtomanageandcontrolsoftwareprojectsinternally,itwillinvariablystrugglewhenitoutsourcessoftwareprojects.81SoftwareMyths(2)CustomermythsAcustomerwhorequestscomputersoftwaremaybeapersonatthenextdesk,atechnicalgroupdownthehall,themarketing/salesdepartment,oranoutsidecompanythathasrequestedsoftwareundercontract.Inmanycases,thecustomerbelievesmythsaboutsoftwarebecausesoftwaremanagersandpractitionersdolittletocorrectmisinformation.Mythsleadtofalseexpectations(bythecustomer)andultimately,dissatisfactionwiththedeveloper.82CustomermythsMyth:Ageneralstatementofobjectivesissufficienttobeginwri

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論