




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第一章(第一講)軟件工程概述IntroductiontoSoftwareEngineering第一章(第一講)軟件工程概述1本講的主要內(nèi)容1.1有關(guān)軟件工程及其課程1.2軟件產(chǎn)業(yè)的發(fā)展背景1.3軟件、軟件產(chǎn)品及其特點(diǎn)1.4軟件危機(jī)1.5軟件工程本講的主要內(nèi)容1.1有關(guān)軟件工程及其課程21.1AboutSoftwareEngineering內(nèi)容豐富,課時有限(抓緊課外時間)基本概念、原理、規(guī)律軟件開發(fā)方法、工具和環(huán)境,軟件開發(fā)過程軟件開發(fā)管理,軟件產(chǎn)品規(guī)范新興學(xué)科,發(fā)展迅速實(shí)踐性強(qiáng)1.1AboutSoftwareEngineeri3參考書籍《軟件工程——實(shí)踐者的研究方法》第六版,RogerS.Pressman,機(jī)械工業(yè)出版社《軟件工程》第六版,IanSommerville,機(jī)械工業(yè)出版社《軟件工程——理論與實(shí)踐》第二版,ShariLawrencePfleeger,高等教育出版社《實(shí)用軟件工程》第二版,鄭人杰、殷人昆、陶永雷,清華大學(xué)出版社參考書籍《軟件工程——實(shí)踐者的研究方法》第六版,Roger4有關(guān)SE的一些組織及網(wǎng)站SWEBOK——TheSoftwareEngineeringBodyofKnowledgeACM——AssociationforComputerMachineryIEEE卡耐基.梅隆大學(xué)的SEI有關(guān)SE的一些組織及網(wǎng)站SWEBOK——TheSoftwa5對軟件工程最淺顯的認(rèn)識對工程的認(rèn)識需求分析的重要性設(shè)計與實(shí)現(xiàn)僅僅是軟件工程的一小部分規(guī)范與標(biāo)準(zhǔn)的重要性工具的重要性質(zhì)量的意義及重要性對軟件工程最淺顯的認(rèn)識對工程的認(rèn)識6人們對軟件開發(fā)的新認(rèn)識個人技巧→
團(tuán)隊意識效率第一→
清晰度第一人們對軟件開發(fā)的新認(rèn)識個人技巧→團(tuán)隊意識71.2軟件產(chǎn)業(yè)發(fā)展的背景人類社會正經(jīng)歷著一場前所未有的由工業(yè)社會向信息社會的巨變,軟件產(chǎn)業(yè)“任重道短”。從1991年起,信息產(chǎn)業(yè)保持了10—20%的增長速度。2000年,全球IT產(chǎn)業(yè)的產(chǎn)值為5000億美元。2001年,全球IT產(chǎn)值首次超過汽車工業(yè)和鋼鐵工業(yè)。硬、軟件開發(fā)人員的比例為1:8軟件,正處于信息技術(shù)的核心位置,觸及到人類社會的各個角落和人類文化的各個層次。全球10大軟件企業(yè),有7個在美國,2個在日本。在這輝煌的另一面,“軟件危機(jī)”一直折磨著軟件業(yè)界。1.2軟件產(chǎn)業(yè)發(fā)展的背景人類社會正經(jīng)歷著一場前所未有的由8人類社會已經(jīng)發(fā)展到信息時代茹毛飲血的石器時代文明初肇的青銅時代工業(yè)革命的蒸汽時代社會化大生產(chǎn)的電氣時代信息膨脹的數(shù)字時代人類社會已經(jīng)發(fā)展到信息時代茹毛飲血的石器時代9計算機(jī)科學(xué)技術(shù)的巨大作用開拓人類認(rèn)識自然改造自然的新資源物質(zhì)資源、能量資源→信息資源增添了人類發(fā)展科學(xué)技術(shù)的新手段理論推倒、科學(xué)實(shí)驗、虛擬與現(xiàn)實(shí)……提高了人類創(chuàng)造文化的新工具人的行為、思想、言語、行動……引起了人類工作方式與生活方式的變化計算機(jī)科學(xué)技術(shù)的巨大作用開拓人類認(rèn)識自然改造自然的新資源10軟件的歷史第一個寫軟件的人是AugustaAdaLovelace,1860年嘗試為機(jī)械式計算機(jī)寫軟件,但失敗了。晶體管的發(fā)明為存儲器的大量應(yīng)用提供了基礎(chǔ)。50年代,第一臺電子計算機(jī)的問世,以寫軟件為職業(yè)的人開始出現(xiàn)。60年代,美國大學(xué)開始授予計算機(jī)專業(yè)的學(xué)位,有了軟件課程。在通用硬件普及的初期,軟件的通用性卻是很有限的。軟件開發(fā)也沒有什么系統(tǒng)的方法可以遵循,是個人電腦的思維過程,帶有強(qiáng)烈的個人色彩。軟件的歷史第一個寫軟件的人是AugustaAdaLove111.3軟件的定義Software=Program+Data+Document其中:程序是按照事先設(shè)計的功能和性能要求執(zhí)行的指令序列;數(shù)據(jù)是使程序能夠正常操縱信息的數(shù)據(jù)結(jié)構(gòu);文檔是與程序開發(fā)維護(hù)和使用有關(guān)的各種圖文資料。1.3軟件的定義Software=Program+12軟件產(chǎn)品的特性是一種邏輯實(shí)體,具有高度復(fù)雜性和抽象性。軟件發(fā)過程有別于一般物質(zhì)的制造過程。一旦研制開發(fā)成功,就可以大量拷貝同一內(nèi)容的副本。軟件沒有磨損、老化的問題,其生命周期曲線不符合所謂的“浴缸曲線”。對硬件和環(huán)境的依賴性,導(dǎo)致軟件移植問題。尚未完全擺脫手工作坊式的開發(fā)方式,生產(chǎn)效率低下。軟件的成本相當(dāng)昂貴。軟件工作牽涉到很多社會因素。涉及機(jī)構(gòu)、體制和管理方式、人們的觀念和心理。軟件產(chǎn)品的特性是一種邏輯實(shí)體,具有高度復(fù)雜性和抽象性。13TimeFailurerateWearvs.DeteriorationTimeFailurerateWearvs.Deter14Wearvs.DeteriorationWearvs.Deterioration15CustomsoftwareGenericsoftwaresystemsoftwarereal-timesoftwarebusinesssoftwareengineering/scientificsoftwareembeddedsoftwareSafety-criticalsoftwareCOTS(CommercialOff-the-shelf)PCsoftwareAIsoftwareWebApps(Webapplications)SoftwareApplicationsCustomsoftwareSoftwareApplic16?Iwillcreateasoftwaretoupdatethedatabase.
(somesoftware,apieceofsoftware,asoftwaresystem)?Iwillcreateasoftwaretou171.4軟件危機(jī)(SoftwareCrisis)首次提出:1968年北大西洋公約組織在聯(lián)邦德國召開的國際學(xué)術(shù)會議上。軟件危機(jī)是指在計算機(jī)軟件的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題??梢园衍浖C(jī)概括為兩個方面的問題軟件開發(fā)十分困難,難以滿足不斷增長且日趨復(fù)雜的需求;如何維護(hù)數(shù)量不斷膨脹的軟件產(chǎn)品。1.4軟件危機(jī)(SoftwareCrisis)首次提出:18CrisisorDepressionorChronicAffliction?從軟件工程幾十年的發(fā)展歷程來看,軟件危機(jī)不是”crisis”所能形容的,而更象”chronicaffliction”,是一種頑固的慢性痛苦。軟件危機(jī)的根本原因是軟件系統(tǒng)高度復(fù)雜、難于駕馭和軟件開發(fā)所帶有的個人色彩。CrisisorDepressionorChr19軟件危機(jī)的具體表現(xiàn)對開發(fā)成本和進(jìn)度難以估計。開發(fā)成本超出預(yù)算和不能按時交付的現(xiàn)象并不罕見。用戶對“已完成”系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生。軟件質(zhì)量難以保證。Bug一大堆,Patch一個接一個。軟件的可維護(hù)程度非常之低,即“維護(hù)墻”問題。軟件通常沒有適當(dāng)?shù)奈臋n資料。軟件成本在整個系統(tǒng)中比重逐年提高。軟件開發(fā)生產(chǎn)率的提高趕不上硬件發(fā)展和需求增長。軟件危機(jī)的具體表現(xiàn)對開發(fā)成本和進(jìn)度難以估計。開發(fā)成本超出預(yù)算20軟件危機(jī)產(chǎn)生的原因軟件本身的特點(diǎn)所決定的。軟件開發(fā)和維護(hù)的方法不正確(在不斷地發(fā)展之中)忽視軟件開發(fā)前期的需求分析;開發(fā)過程沒有統(tǒng)一的、規(guī)范的方法論的指導(dǎo),缺乏過程管理,文檔資料不齊全,忽視人與人的交流;忽視測試工作,所提交的軟件質(zhì)量不高;輕視軟件的維護(hù)。硬件技術(shù)和產(chǎn)品的發(fā)展速度遠(yuǎn)遠(yuǎn)大于軟件。計算機(jī)應(yīng)用普及—社會對軟件的依賴—對軟件的需求、質(zhì)量和可靠性的要求巨增。設(shè)計問題、資源問題使得我們難以支持和增強(qiáng)已有的軟件,即所謂的“維護(hù)墻”問題。軟件危機(jī)產(chǎn)生的原因軟件本身的特點(diǎn)所決定的。21軟件神話Myths我們已經(jīng)有了一本寫滿軟件開發(fā)標(biāo)準(zhǔn)和規(guī)程的寶典,囊括了可能遇到的任何問題。如果未能按時完成計劃,可以通過增加人數(shù)而趕上進(jìn)度。將軟件外包給另一家公司就可以完全放手不管了。有了對項目目標(biāo)的大概了解,便足以開始編寫程序,有關(guān)細(xì)節(jié)以后再慢慢了解。雖然需求不斷變更,但軟件是彈性的,可以容易地適應(yīng)這些變更。當(dāng)完成程序并交付使用時,我們的任務(wù)就完成了。知道程序開始運(yùn)行,才能評估其質(zhì)量。對于一成功的軟件項目,可執(zhí)行程序是唯一交付的成果。軟件工程導(dǎo)致大量無用文檔,并因此降低了工作效率。軟件神話Myths我們已經(jīng)有了一本寫滿軟件開發(fā)標(biāo)準(zhǔn)和規(guī)221.5軟件工程1968年秋季,NATO(北約)的科技委員會召集了近50名一流的編程人員、計算機(jī)科學(xué)家和工業(yè)界巨頭,討論和制定擺脫“軟件危機(jī)”的對策。FritzBauer在會議上首次提出“軟件工程”概念。軟件工程的目標(biāo)低成本高質(zhì)量按時交付1.5軟件工程1968年秋季,NATO(北約)的科技委員23軟件工程定義軟件工程是一門研究如何用系統(tǒng)化、規(guī)范化、數(shù)量化等工程原則和方法進(jìn)行軟件開發(fā)和維護(hù)的學(xué)科。軟件工程包括兩方面內(nèi)容:軟件開發(fā)技術(shù)和軟件項目管理。軟件開發(fā)技術(shù)包括軟件開發(fā)方法學(xué)、軟件工具和軟件工程環(huán)境。軟件項目管理包括軟件度量、項目估算、進(jìn)度控制、人員組織、配置管理、項目計劃等。軟件工程定義軟件工程是一門研究如何用系統(tǒng)化、規(guī)范化、數(shù)量化等24FritzBauer的定義軟件工程是為了經(jīng)濟(jì)地獲得可靠的,能在實(shí)際的機(jī)器上高效運(yùn)行的軟件而建立和使用的科學(xué)的工程原則。FritzBauer的定義軟件工程是為了經(jīng)濟(jì)地獲得可靠的,25IEEE的定義軟件工程是(1)將系統(tǒng)化的、規(guī)范的、可度量的方法應(yīng)用于軟件的開發(fā)、運(yùn)行和維護(hù)的過程,即將工程化思想應(yīng)用于軟件開發(fā)過程中,(2)上述方法的研究。IEEE的定義軟件工程是(1)將系統(tǒng)化的、規(guī)范的、可度量的方26軟件工程的本質(zhì)特性關(guān)注大型程序的構(gòu)造軟件工程的中心課題是控制復(fù)雜性軟件需求不斷變化旨在提高軟件開發(fā)的效率團(tuán)隊合作是軟件工程順利實(shí)施的關(guān)鍵軟件必須有效支持它的用戶由一種文化背景的人替另一種文化背景的人創(chuàng)造產(chǎn)品軟件工程的本質(zhì)特性關(guān)注大型程序的構(gòu)造27軟件工程原則(1)質(zhì)量原則避免產(chǎn)生缺陷(具有恰當(dāng)?shù)臉?biāo)準(zhǔn)、規(guī)范、質(zhì)量審計過程等)確保盡早地發(fā)現(xiàn)缺陷并加以改正辨別和消除產(chǎn)生缺陷的原因和征兆根據(jù)標(biāo)準(zhǔn)和規(guī)范對生產(chǎn)的各個過程進(jìn)行獨(dú)立審計(SEI-CMM等)軟件工程原則(1)質(zhì)量原則28軟件工程原則(2)管理原則規(guī)定任務(wù)和職責(zé)制定工作計劃按照計劃跟蹤進(jìn)度不斷地完善計劃在CMM中有一個PDCA循環(huán)(Plan,Do,Check,Action)軟件工程原則(2)管理原則29軟件工程原則(3)工程原則分析問題分解任務(wù)控制各個部門之間的關(guān)系為了更好地貫徹這些原則,實(shí)現(xiàn)軟件工程的目標(biāo),我們必須連接軟件工程的思想,研究軟件工程的工具、方法、過程和質(zhì)量管理。軟件工程原則(3)工程原則30B.W.Boehm軟件工程基本原理用分階段的生命周期計劃嚴(yán)格管理堅持進(jìn)行階段評審實(shí)行嚴(yán)格的產(chǎn)品控制采用先進(jìn)的程序設(shè)計技術(shù)開發(fā)過程具有可見性,所獲結(jié)果清楚,便以審查開發(fā)人員少而精承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性B.W.Boehm軟件工程基本原理用分階段的生命周期計31基線(Baseline)通過正式復(fù)審的規(guī)格說明或中間產(chǎn)品(artifact),可以作為進(jìn)一步開發(fā)的基礎(chǔ),并且只有通過正式的變更控制過程才能改變它。(IEEE)基線的特征具有明確的標(biāo)識具有明確的內(nèi)容經(jīng)過正式審批嚴(yán)格控制變更基線(Baseline)通過正式復(fù)審的規(guī)格說明或中間產(chǎn)品(a32里程碑(Milestone)里程碑是用來說明項目進(jìn)展情況的事件,通常把一個開發(fā)活動的結(jié)束或一項開發(fā)任務(wù)的完成定義為一個里程碑。里程碑必須與軟件開發(fā)工作的進(jìn)展情況密切相關(guān),里程碑作為任務(wù)完成的標(biāo)志必須非常明顯,即里程碑具有很高的可見性。里程碑(Milestone)里程碑是用來說明項目進(jìn)展情況的事33軟件工程總體面臨的困難與風(fēng)險復(fù)雜性與大量的細(xì)節(jié)(火星探測器的失?。┘夹g(shù)的不確定性(技術(shù)的發(fā)展與開發(fā)人員對技術(shù)的理解程度都不同)由于交流障礙而引起的需求不確定性需求是持續(xù)變化的不斷的修改所帶來的錯誤使得軟件退化人為和市場的風(fēng)險軟件費(fèi)用、可靠性、生產(chǎn)率、重用問題難以解決軟件工程總體面臨的困難與風(fēng)險復(fù)雜性與大量的細(xì)節(jié)(火星探測器的34第一章(第二講)軟件工程過程第一章(第二講)軟件工程過程35本講的主要內(nèi)容軟件工程方法學(xué)軟件生命周期軟件過程軟件過程模型本講的主要內(nèi)容軟件工程方法學(xué)361、軟件工程方法學(xué)通常把軟件生命周期全過程中使用的一整套技術(shù)方法的集合成為軟件工程方法學(xué)(methodology),也成為范型(paradigm)軟件工程方法學(xué)的3個要素方法工具過程1、軟件工程方法學(xué)通常把軟件生命周期全過程中使用的一整套技術(shù)37傳統(tǒng)的軟件工程方法學(xué)結(jié)構(gòu)化范型或生命周期方法學(xué)要么面向行為以功能分解為主(基于數(shù)據(jù)流圖的結(jié)構(gòu)化分析與設(shè)計方法),要么面向數(shù)據(jù)(Jackson方法)傳統(tǒng)的軟件工程方法學(xué)結(jié)構(gòu)化范型或生命周期方法學(xué)38面向?qū)ο蠓椒▽W(xué)以數(shù)據(jù)為中心,把數(shù)據(jù)和對數(shù)據(jù)的操作緊密地結(jié)合起來,用對象分解代替?zhèn)鹘y(tǒng)的功能分解。面向?qū)ο蠓椒▽W(xué)的4個要點(diǎn)把對象作為融合數(shù)據(jù)和操作的統(tǒng)一的構(gòu)件把所有對象都劃分成類子類自動擁有父類中定義的數(shù)據(jù)和操作,即繼承對象間僅能通過發(fā)送消息互相聯(lián)系面向?qū)ο蠓椒▽W(xué)以數(shù)據(jù)為中心,把數(shù)據(jù)和對數(shù)據(jù)的操作緊密地結(jié)合起392、軟件生存周期軟件生存周期(LifeCycle)是指一個軟件從提出開發(fā)要求開始直到該軟件報廢為止的整個時期。把整個生存周期劃分為若干階段,使得每個階段有明確的任務(wù),使規(guī)模大、結(jié)構(gòu)復(fù)雜和管理復(fù)雜的軟件開發(fā)變得容易控制和管理。軟件生存周期各階段的劃分應(yīng)遵循的基本原則:各階段的任務(wù)應(yīng)盡可能相對獨(dú)立,同一階段各項任務(wù)的性質(zhì)盡可能相同,從而降低每個階段任務(wù)的復(fù)雜程度,簡化不同階段之間的聯(lián)系,有利于軟件項目開發(fā)的組織管理。2、軟件生存周期軟件生存周期(LifeCycle)是指一個40軟件生命周期的階段劃分軟件定義階段問題定義可行性研究需求分析軟件開發(fā)階段總體設(shè)計詳細(xì)設(shè)計編碼和單元測試綜合測試運(yùn)行階段軟件維護(hù)軟件生命周期的階段劃分軟件定義階段41軟件定義階段問題定義:關(guān)于問題性質(zhì)、工程目標(biāo)和工程規(guī)模的扼要描述可行性研究,即高層的分析和設(shè)計過程,以回答是否存在可行的解決方法。需求分析:準(zhǔn)確的“做什么”的描述。 軟件定義階段問題定義:關(guān)于問題性質(zhì)、工程目標(biāo)和工程規(guī)模的扼42軟件開發(fā)階段概要設(shè)計結(jié)構(gòu)設(shè)計,系統(tǒng)設(shè)計建立軟件的總體結(jié)構(gòu),即模塊結(jié)構(gòu)詳細(xì)設(shè)計算法設(shè)計,過程設(shè)計設(shè)計每個模塊的結(jié)構(gòu),IPO圖或PDL語言 編碼與單元測試生成源程序代碼和單元測試方案、數(shù)據(jù)和結(jié)果,由編程人員進(jìn)行 綜合測試通過各種測試和調(diào)試,是軟件達(dá)到預(yù)訂的要求軟件開發(fā)階段概要設(shè)計43軟件運(yùn)行階段維護(hù)通過各種必要的維護(hù)活動使系統(tǒng)持久地滿足用戶的需要四種類型的維護(hù)改正性維護(hù)適應(yīng)性維護(hù)完善性維護(hù)預(yù)防性維護(hù) 軟件運(yùn)行階段維護(hù)443、軟件工程過程一個過程定義了為達(dá)到每個確定的目標(biāo),需要什么人在什么時間以何種方式做何種工作(Goal,Who,When,How,What)。軟件工程過程規(guī)定了獲取、供應(yīng)、開發(fā)、操作和維護(hù)軟件時,要實(shí)施的過程、活動和任務(wù)。其目的是為各種人員提供一個公共的框架,以便用相同的語言進(jìn)行交流。3、軟件工程過程一個過程定義了為達(dá)到每個確定的目標(biāo),需要什么45Cont.一個開發(fā)機(jī)構(gòu)為開發(fā)特定的軟件需要制訂一系列的工作步驟(軟件工程過程),其中包含和涉及軟件工程所有參與者的各種活動、任務(wù)?;镜能浖^程活動包括:規(guī)格說明、開發(fā)、確認(rèn)和演進(jìn)。CMM的軟件工程過程包含獲取、供應(yīng)、開發(fā)、操作、維護(hù)、管理、支持七個過程。Cont.一個開發(fā)機(jī)構(gòu)為開發(fā)特定的軟件需要制訂一系列的工作步46過程定義的作用ProcessvsMusicscore用于對Customer,User,Developer,Manager的指導(dǎo),一個廣泛適用的過程使得所有參與人員更好地理解自己所扮演的角色、他人做什么。促使過程的有機(jī)結(jié)合和改善,獲得“最好過程”可以使公司內(nèi)部的培訓(xùn)標(biāo)準(zhǔn)化。由于過程的可重復(fù)性,利于開發(fā)進(jìn)度的安排,利于成本估算。過程定義的作用ProcessvsMusicscor47統(tǒng)一過程(RUP)RUP的突出特點(diǎn)用況驅(qū)動(系統(tǒng)功能)以構(gòu)架為中心(表現(xiàn)形式)迭代和增量開發(fā)(過程實(shí)施)Return統(tǒng)一過程(RUP)RUP的突出特點(diǎn)Return48UML(UnifiedModelingLanguage)1994,OO思想已經(jīng)貫穿整個軟件生存期,具有影響的OOA&D方法達(dá)50余種。UML是一種對軟件密集型系統(tǒng)進(jìn)行可視化、詳述、構(gòu)造和文檔化的建模語言,主要用于分析和設(shè)計階段的系統(tǒng)建模。UML(UnifiedModelingLanguage49UML2.01994Booch方法RumbaughOMTCoad/YourdonFireSmith方法JacobsonOOSE……1995.10發(fā)布UnifiedMethod0.81996.6發(fā)布UML0.9不包含過程指導(dǎo)Rational聯(lián)合12家公司成立UML組織,形成UML1.0,1997.1提交給OMG1997.11.4,OMG采納UML1.12002發(fā)布UML2.0UML2.019941995.10發(fā)布1996.6發(fā)布UM504、軟件過程模型模型所謂模型是為了理解事物而對事物做出的一種抽象,它忽略不必要的細(xì)節(jié),是事物的一種抽象形式、一個規(guī)劃、一個程式。軟件開發(fā)模型軟件開發(fā)全部過程、活動和任務(wù)的結(jié)構(gòu)框架。4、軟件過程模型模型51軟件過程模型的種類瀑布模型快速原型模型針對事先不能完成定義需求的軟件開發(fā)原型系統(tǒng)重在“快速”周期開發(fā)模型(增量和迭代模型)完整的體系結(jié)構(gòu)的實(shí)現(xiàn)確定多次迭代螺旋模型考慮風(fēng)險因素,由Boehm提出噴泉模型多次重復(fù),無間隙適用于面向?qū)ο蠹夹g(shù)(復(fù)用技術(shù))軟件過程模型的種類瀑布模型52瀑布模型瀑布模型(WaterfallModel)軟件生存周期模型(ClassicLifeCycleModel)線性順序模型(LinearSequentialModel)問題定義需求分析概要設(shè)計詳細(xì)設(shè)計編碼測試維護(hù)瀑布模型瀑布模型(WaterfallModel)問題定義需53瀑布模型的三個特點(diǎn)階段間具有順序性和依賴性推遲實(shí)現(xiàn)的觀點(diǎn)質(zhì)量保證的觀點(diǎn)瀑布模型的三個特點(diǎn)階段間具有順序性和依賴性54CosttochangeAfterreleaseDefinitionDevelopment1.5~6x
??????1x60~100xTheimpactofchangeCosttochangeAfterreleaseDef55計劃需求分析概要設(shè)計詳細(xì)設(shè)計編碼測試維護(hù)環(huán)計劃需求分析運(yùn)行評價編碼設(shè)計TheWaterfallModel
WithMaintenanceCircle計劃需求分析概要設(shè)計詳細(xì)設(shè)計編碼測試維護(hù)環(huán)計劃需求分析運(yùn)行評56運(yùn)行維護(hù)需求分析概要設(shè)計詳細(xì)設(shè)計編碼單元測試集成測試驗收測試Prototyping系統(tǒng)測試ValidateVerifyTheWaterfallModel
WithPrototyping運(yùn)行維護(hù)需求分析概要設(shè)計詳細(xì)設(shè)計編碼單元測試集成測試驗收測試57瀑布模型的優(yōu)點(diǎn)開發(fā)過程基本上是線性順序的,便于管理基于“明確、完備的需求”,可以獲得好的開發(fā)效果瀑布模型的優(yōu)點(diǎn)開發(fā)過程基本上是線性順序的,便于管理58運(yùn)行、維護(hù)需求分析概要設(shè)計詳細(xì)設(shè)計編碼單元集成測試驗收測試系統(tǒng)測試ValidateRequirementsVerifyDesignTheVModel運(yùn)行、維護(hù)需求分析概要設(shè)計詳細(xì)設(shè)計編碼單元集成測試驗收測試系59OperationalSpecificationModelOperationalSpecification(problem-oriented)
TransformedSpecification(implementation–oriented)
TESTExecuteandReviseSystemRequirements(sometimesinformalorincomplete)DeliveredSystemOperationalSpecificationMode60TransformationalModelTransformnFormalSpecificationproblem-oriented
Transform2TESTComparewithrequirements;UpdateasneededSystemRequirements(sometimesinformalorincomplete)DeliveredSystemTransform1FormalDevelopmentRecordSequenceoftransformationsPlusrationaleforthemTransformationalModelTransfor61ThePhasedDevelopmentModelBuildRelease2BuildRelease1BuildRelease3UseRelease2UseRelease1UseRelease3TimeProductionsystemDevelopmentsystemDevelopersUsersThePhasedDevelopmentModelBu62TheIncrementalandIterativeModelIncrementalDevelopmentIterativeDevelopmentcreateformatcreateeditformatcreateEasyquickMorestylescreatePasteeasyMorestylescreatePasteclumsystylescreateTheIncrementalandIterative63增量開發(fā)的優(yōu)點(diǎn)能在較短的時間內(nèi)向用戶提交可以完成主要功能的產(chǎn)品逐步增加產(chǎn)品的功能,使用戶有充裕的時間學(xué)習(xí)和適應(yīng)新產(chǎn)品,減少一個全新的產(chǎn)品給客戶組織帶來的沖擊增量開發(fā)的優(yōu)點(diǎn)能在較短的時間內(nèi)向用戶提交可以完成主要功能的產(chǎn)64TheSpiralModelTheSpiralModel65螺旋模型的優(yōu)點(diǎn)有利于已有軟件的重用有助于把軟件質(zhì)量作為軟件開發(fā)的一個重要目標(biāo)減少了過多測試或測試不足所帶來的風(fēng)險軟件維護(hù)與軟件開發(fā)沒有本質(zhì)區(qū)別螺旋模型的優(yōu)點(diǎn)有利于已有軟件的重用66問題定義系統(tǒng)測試需求分析概要設(shè)計詳細(xì)設(shè)計編碼單元測試維護(hù)集成測試提交運(yùn)行TheSoftwareDevelopmentProcessinReality問題定義系統(tǒng)測試需求分析概要設(shè)計詳細(xì)設(shè)計編碼單元測試維護(hù)集成67示例分析一假設(shè)你開發(fā)一軟件,其功能是把讀入的浮點(diǎn)數(shù)開平方,所得到的結(jié)果精確到小數(shù)點(diǎn)后4位。一旦實(shí)現(xiàn)并測試完成后,該產(chǎn)品將被拋棄。你打算選用哪種過程模型?示例分析一假設(shè)你開發(fā)一軟件,其功能是把讀入的浮點(diǎn)數(shù)開平方,所68示例分析1、需求很明確2、實(shí)現(xiàn)浮點(diǎn)數(shù)開平方的算法也很成熟
不需要原型過程模型3、一旦實(shí)現(xiàn)并測試完成后,該產(chǎn)品將被拋棄,可以不考慮產(chǎn)品的進(jìn)化問題4、規(guī)模相對較小,功能比較單一 不需要增量模型或螺旋過程模型總之,使用瀑布模型即可示例分析1、需求很明確 不需要原型過程模型3、一旦實(shí)現(xiàn)并測試69示例分析二你負(fù)責(zé)一個項目,其工作是管理公司已被廣泛應(yīng)用的字處理軟件的新版本開發(fā)。由于市場競爭激烈,公司規(guī)定了嚴(yán)格的完成期限并且已經(jīng)對外公布。你打算采用哪種過程模型?為什么?示例分析二你負(fù)責(zé)一個項目,其工作是管理公司已被廣泛應(yīng)用的字70示例分析舊版本相當(dāng)于一個原型,沒必要再專門開發(fā)一個原型系統(tǒng)公司軟件工程師對該軟件很熟悉,有開發(fā)字處理軟件的豐富經(jīng)驗,具備采用增量模型開發(fā)字處理軟件的技術(shù)水平該軟件廣泛使用,需要進(jìn)一步的改進(jìn)和擴(kuò)充,以形成更新的版本結(jié)論:增量模型Return示例分析舊版本相當(dāng)于一個原型,沒必要再專門開發(fā)一個原型系統(tǒng)R71技術(shù)審查和管理復(fù)審任務(wù):在軟件生存周期的每個重要的里程碑(一般是每個階段結(jié)束時),對工程項目的成本,實(shí)際花費(fèi)的經(jīng)費(fèi),投資回收的前景,項目的進(jìn)度等經(jīng)濟(jì)因素從管理角度進(jìn)行審查。目的:不讓錯誤進(jìn)入下一個階段技術(shù)審查也是降低軟件成本的一個重要措施在技術(shù)審查合格之后再進(jìn)行管理復(fù)審技術(shù)審查和管理復(fù)審任務(wù):在軟件生存周期的每個重要的里程碑(一72軟件開發(fā)工具軟件工具一般是指為了支持軟件人員開發(fā)和維護(hù)活動而使用的軟件。軟件工具發(fā)展的三個階段工具箱軟件開發(fā)環(huán)境SDE計算機(jī)輔助軟件工程CASE(ComputerAidedSoftwareEngineering)工具應(yīng)該支持軟件生命周期的各個階段RequirementsManagementVisualModelingProgrammingToolQualityAssuranceReturn軟件開發(fā)工具軟件工具一般是指為了支持軟件人員開發(fā)和維護(hù)活動而73什么是軟件危機(jī)?它有哪些具體表現(xiàn)?什么是軟件工程?它有哪些本質(zhì)特征?什么是軟件過程?它與軟件工程方法學(xué)有何關(guān)系?試比較瀑布模型、快速原型模型、增量模型和螺旋模型的優(yōu)缺點(diǎn),說明各種模型的使用范圍。什么是基線?應(yīng)有哪些基本特征?什么是里程碑?應(yīng)有哪些基本特征?作業(yè)一什么是軟件危機(jī)?它有哪些具體表現(xiàn)?作業(yè)一74第二章(第三講)可行性研究與成本效益分析第二章(第三講)可行性研究與成本效益分析75本講的主要內(nèi)容問題定義與可行性研究可行性研究的任務(wù)可行性研究的步驟系統(tǒng)流程圖成本/效益分析GO本講的主要內(nèi)容問題定義與可行性研究GO761、問題定義
問題是什么?問題性質(zhì)工程目標(biāo)或前景(vision)工程規(guī)模和范圍(scope)問題定義階段結(jié)束的標(biāo)準(zhǔn)提交有關(guān)規(guī)模和目標(biāo)的報告書1、問題定義問題是什么?77軟件可行性研究
軟件可行性研究的目的用最小的代價在盡可能短的時間內(nèi)確定該軟件項目是否能夠開發(fā),是否值得去開發(fā)。結(jié)束標(biāo)準(zhǔn)描述系統(tǒng)的高層邏輯模型成本效益分析關(guān)于“是否可行”的明確回答Return軟件可行性研究軟件可行性研究的目的Return782、軟件可行性研究的任務(wù)技術(shù)可行性經(jīng)濟(jì)可行性社會可行性操作可行性Return2、軟件可行性研究的任務(wù)技術(shù)可行性Return793、軟件可行性研究的步驟(1)確定項目規(guī)模和目標(biāo)(2)研究正在運(yùn)行的系統(tǒng)(3)建立新系統(tǒng)的高層邏輯模型(4)導(dǎo)出和評價各種方案(5)推薦可行的方案(6)編寫可行性研究報告Return3、軟件可行性研究的步驟(1)確定項目規(guī)模和目標(biāo)Retu80可行性研究是高層的分析和設(shè)計可行性研究是高層的分析和設(shè)計81可行性研究報告(1)引言(2)可行性研究前提(3)對現(xiàn)有系統(tǒng)的分析(4)所建議系統(tǒng)的技術(shù)可行性分析(5)所建議系統(tǒng)的經(jīng)濟(jì)可行性分析(6)社會因素可行性分析(7)其它可供選擇方案(8)結(jié)論意見可行性研究報告(1)引言824、系統(tǒng)流程圖
系統(tǒng)流程圖是描繪物理系統(tǒng)中各個元素的圖形符號的集合,它表達(dá)了系統(tǒng)中各個元素之間的信息流動的情況。可行性研究要根據(jù)項目的概要范圍、功能、性能等需求,以概括的形式描述現(xiàn)有系統(tǒng)的高層的邏輯模型,并通過概要的設(shè)計得到所建議的系統(tǒng)物理模型。常用符號見P29圖2.1和圖2.2Return4、系統(tǒng)流程圖系統(tǒng)流程圖是描繪物理系統(tǒng)中各個元素的圖形符號83一個庫存管理系統(tǒng)的系統(tǒng)流程圖訂貨信息庫存管理模塊報告生成模塊訂貨報告庫存文件輸入變更記錄I/O顯示磁盤聯(lián)機(jī)存儲處理文檔一個庫存管理系統(tǒng)的系統(tǒng)流程圖訂貨信息庫存管理模塊報告生成模塊845、成本/效益分析
目的:將開發(fā)成本與可能取得的效益比較和權(quán)衡,從經(jīng)濟(jì)角度評價開發(fā)一個新的軟件項目是否可行。效益分為有形效益和無形效益有形效益可以用貨幣的時間價值、投資回收期、純收人等指標(biāo)進(jìn)行度量無形效益主要從性質(zhì)上、心理上進(jìn)行衡量,很難直接進(jìn)行量的比較。5、成本/效益分析目的:將開發(fā)成本與可能取得的效益比較和權(quán)85成本估計技術(shù)
代碼行技術(shù)任務(wù)分解技術(shù)自動估計成本技術(shù)成本估計技術(shù)代碼行技術(shù)86成本/效益分析的方法
貨幣的時間價值(示例見P41)
F=P(1+i)n→P=F?(1+i)n投資回收期純收入投資回收率
P=F1?(1+i)+F2?(1+i)2+….+Fn?(1+i)n
Return成本/效益分析的方法貨幣的時間價值(示例見P41)Ret87項目開發(fā)計劃
項目概述:主要工作;軟件功能、性能;條件;用戶及合同承包者承擔(dān)的工作、完成期限及其它條件限制;應(yīng)交付的程序名稱,所使用的語言及存儲形式;應(yīng)交付的文檔。實(shí)施計劃:任務(wù)的劃分,各項任務(wù)的責(zé)任人;開發(fā)進(jìn)度,按計劃應(yīng)完成的任務(wù),用圖表說明每項任務(wù)的開始時間和完成時間;說明項目的預(yù)算,各階段的費(fèi)用支出預(yù)算。人員組織及分工交付期限項目開發(fā)計劃項目概述:主要工作;軟件功能、性能;條件;用戶88什么是軟件危機(jī)?它有哪些具體表現(xiàn)?什么是軟件工程?它有哪些本質(zhì)特征?什么是軟件過程?它與軟件工程方法學(xué)有何關(guān)系?試比較瀑布模型、快速原型模型、增量模型和螺旋模型的優(yōu)缺點(diǎn),說明各種模型的使用范圍。什么是基線?應(yīng)有哪些基本特征?什么是里程碑?應(yīng)有哪些基本特征?作業(yè)一什么是軟件危機(jī)?它有哪些具體表現(xiàn)?作業(yè)一89什么是軟件過程?它與軟件工程方法學(xué)有何關(guān)系?軟件過程是為了開發(fā)出高質(zhì)量的軟件產(chǎn)品所需完成的一系列任務(wù)的框架,它規(guī)定了完成各項任務(wù)的工作步驟。軟件過程定義了運(yùn)用技術(shù)方法的順序、應(yīng)該交付的文檔資料、為保證軟件質(zhì)量和協(xié)調(diào)軟件變化必須采取的管理措施,以及標(biāo)記完成了相應(yīng)開發(fā)活動的里程碑。軟件過程是軟件工程方法學(xué)的3個重要組成部分之一(方法、工具、過程)。Return什么是軟件過程?它與軟件工程方法學(xué)有何關(guān)系?軟件過程是為了開90各種過程模型的特點(diǎn)及使用范圍瀑布模型三個特點(diǎn)文檔驅(qū)動適應(yīng)需求比較明確和穩(wěn)定的項目快速原型模型目標(biāo)系統(tǒng)通常能夠滿足用戶的真實(shí)需求能夠有效避免在軟件開發(fā)后期的較大返工,從而有效降低軟件開發(fā)成本開發(fā)過程基本上是線性順序的適應(yīng)規(guī)模大、復(fù)雜性高的項目各種過程模型的特點(diǎn)及使用范圍瀑布模型91CONT.增量模型能在較短的時間內(nèi)向用戶提交可以完成主要功能的產(chǎn)品逐步增加產(chǎn)品的功能,使用戶有充裕的時間學(xué)習(xí)和適應(yīng)新產(chǎn)品,減少一個全新的產(chǎn)品給客戶組織帶來的沖擊開發(fā)的產(chǎn)品具有良好的可擴(kuò)充性需要首先設(shè)計出開放的軟件體系結(jié)構(gòu),故要求軟件工程師有較高的技術(shù)水平CONT.增量模型92CONT.螺旋模型及時識別和分析風(fēng)險構(gòu)件原型也是降低某種類型風(fēng)險(如需求不真實(shí)的風(fēng)險,技術(shù)方法不當(dāng)?shù)娘L(fēng)險等)的方法對可選方案和約束條件的強(qiáng)調(diào)有利于已有軟件的重用有助于把軟件質(zhì)量作為軟件開發(fā)的一個重要目標(biāo)減少了過多測試或測試不足所帶來的風(fēng)險軟件維護(hù)與軟件開發(fā)沒有本質(zhì)區(qū)別適用于內(nèi)部開發(fā)的大型軟件項目ReturnCONT.螺旋模型Return93基線(Baseline)基線是通過正式復(fù)審的規(guī)格說明或中間產(chǎn)品(artifact),可以作為進(jìn)一步開發(fā)的基礎(chǔ),并且只有通過正式的變更控制過程才能改變它?;€的特征具有明確的標(biāo)識具有明確的內(nèi)容經(jīng)過正式審批嚴(yán)格控制變更Return基線(Baseline)基線是通過正式復(fù)審的規(guī)格說明或中間產(chǎn)94里程碑(Milestone)里程碑是用來說明項目進(jìn)展情況的事件,通常把一個開發(fā)活動的結(jié)束或一項開發(fā)任務(wù)的完成定義為一個里程碑。里程碑必須與軟件開發(fā)工作的進(jìn)展情況密切相關(guān),里程碑作為任務(wù)完成的標(biāo)志必須非常明顯,即里程碑具有很高的可見性。Return里程碑(Milestone)里程碑是用來說明項目進(jìn)展情況的事95第一章(第一講)軟件工程概述IntroductiontoSoftwareEngineering第一章(第一講)軟件工程概述96本講的主要內(nèi)容1.1有關(guān)軟件工程及其課程1.2軟件產(chǎn)業(yè)的發(fā)展背景1.3軟件、軟件產(chǎn)品及其特點(diǎn)1.4軟件危機(jī)1.5軟件工程本講的主要內(nèi)容1.1有關(guān)軟件工程及其課程971.1AboutSoftwareEngineering內(nèi)容豐富,課時有限(抓緊課外時間)基本概念、原理、規(guī)律軟件開發(fā)方法、工具和環(huán)境,軟件開發(fā)過程軟件開發(fā)管理,軟件產(chǎn)品規(guī)范新興學(xué)科,發(fā)展迅速實(shí)踐性強(qiáng)1.1AboutSoftwareEngineeri98參考書籍《軟件工程——實(shí)踐者的研究方法》第六版,RogerS.Pressman,機(jī)械工業(yè)出版社《軟件工程》第六版,IanSommerville,機(jī)械工業(yè)出版社《軟件工程——理論與實(shí)踐》第二版,ShariLawrencePfleeger,高等教育出版社《實(shí)用軟件工程》第二版,鄭人杰、殷人昆、陶永雷,清華大學(xué)出版社參考書籍《軟件工程——實(shí)踐者的研究方法》第六版,Roger99有關(guān)SE的一些組織及網(wǎng)站SWEBOK——TheSoftwareEngineeringBodyofKnowledgeACM——AssociationforComputerMachineryIEEE卡耐基.梅隆大學(xué)的SEI有關(guān)SE的一些組織及網(wǎng)站SWEBOK——TheSoftwa100對軟件工程最淺顯的認(rèn)識對工程的認(rèn)識需求分析的重要性設(shè)計與實(shí)現(xiàn)僅僅是軟件工程的一小部分規(guī)范與標(biāo)準(zhǔn)的重要性工具的重要性質(zhì)量的意義及重要性對軟件工程最淺顯的認(rèn)識對工程的認(rèn)識101人們對軟件開發(fā)的新認(rèn)識個人技巧→
團(tuán)隊意識效率第一→
清晰度第一人們對軟件開發(fā)的新認(rèn)識個人技巧→團(tuán)隊意識1021.2軟件產(chǎn)業(yè)發(fā)展的背景人類社會正經(jīng)歷著一場前所未有的由工業(yè)社會向信息社會的巨變,軟件產(chǎn)業(yè)“任重道短”。從1991年起,信息產(chǎn)業(yè)保持了10—20%的增長速度。2000年,全球IT產(chǎn)業(yè)的產(chǎn)值為5000億美元。2001年,全球IT產(chǎn)值首次超過汽車工業(yè)和鋼鐵工業(yè)。硬、軟件開發(fā)人員的比例為1:8軟件,正處于信息技術(shù)的核心位置,觸及到人類社會的各個角落和人類文化的各個層次。全球10大軟件企業(yè),有7個在美國,2個在日本。在這輝煌的另一面,“軟件危機(jī)”一直折磨著軟件業(yè)界。1.2軟件產(chǎn)業(yè)發(fā)展的背景人類社會正經(jīng)歷著一場前所未有的由103人類社會已經(jīng)發(fā)展到信息時代茹毛飲血的石器時代文明初肇的青銅時代工業(yè)革命的蒸汽時代社會化大生產(chǎn)的電氣時代信息膨脹的數(shù)字時代人類社會已經(jīng)發(fā)展到信息時代茹毛飲血的石器時代104計算機(jī)科學(xué)技術(shù)的巨大作用開拓人類認(rèn)識自然改造自然的新資源物質(zhì)資源、能量資源→信息資源增添了人類發(fā)展科學(xué)技術(shù)的新手段理論推倒、科學(xué)實(shí)驗、虛擬與現(xiàn)實(shí)……提高了人類創(chuàng)造文化的新工具人的行為、思想、言語、行動……引起了人類工作方式與生活方式的變化計算機(jī)科學(xué)技術(shù)的巨大作用開拓人類認(rèn)識自然改造自然的新資源105軟件的歷史第一個寫軟件的人是AugustaAdaLovelace,1860年嘗試為機(jī)械式計算機(jī)寫軟件,但失敗了。晶體管的發(fā)明為存儲器的大量應(yīng)用提供了基礎(chǔ)。50年代,第一臺電子計算機(jī)的問世,以寫軟件為職業(yè)的人開始出現(xiàn)。60年代,美國大學(xué)開始授予計算機(jī)專業(yè)的學(xué)位,有了軟件課程。在通用硬件普及的初期,軟件的通用性卻是很有限的。軟件開發(fā)也沒有什么系統(tǒng)的方法可以遵循,是個人電腦的思維過程,帶有強(qiáng)烈的個人色彩。軟件的歷史第一個寫軟件的人是AugustaAdaLove1061.3軟件的定義Software=Program+Data+Document其中:程序是按照事先設(shè)計的功能和性能要求執(zhí)行的指令序列;數(shù)據(jù)是使程序能夠正常操縱信息的數(shù)據(jù)結(jié)構(gòu);文檔是與程序開發(fā)維護(hù)和使用有關(guān)的各種圖文資料。1.3軟件的定義Software=Program+107軟件產(chǎn)品的特性是一種邏輯實(shí)體,具有高度復(fù)雜性和抽象性。軟件發(fā)過程有別于一般物質(zhì)的制造過程。一旦研制開發(fā)成功,就可以大量拷貝同一內(nèi)容的副本。軟件沒有磨損、老化的問題,其生命周期曲線不符合所謂的“浴缸曲線”。對硬件和環(huán)境的依賴性,導(dǎo)致軟件移植問題。尚未完全擺脫手工作坊式的開發(fā)方式,生產(chǎn)效率低下。軟件的成本相當(dāng)昂貴。軟件工作牽涉到很多社會因素。涉及機(jī)構(gòu)、體制和管理方式、人們的觀念和心理。軟件產(chǎn)品的特性是一種邏輯實(shí)體,具有高度復(fù)雜性和抽象性。108TimeFailurerateWearvs.DeteriorationTimeFailurerateWearvs.Deter109Wearvs.DeteriorationWearvs.Deterioration110CustomsoftwareGenericsoftwaresystemsoftwarereal-timesoftwarebusinesssoftwareengineering/scientificsoftwareembeddedsoftwareSafety-criticalsoftwareCOTS(CommercialOff-the-shelf)PCsoftwareAIsoftwareWebApps(Webapplications)SoftwareApplicationsCustomsoftwareSoftwareApplic111?Iwillcreateasoftwaretoupdatethedatabase.
(somesoftware,apieceofsoftware,asoftwaresystem)?Iwillcreateasoftwaretou1121.4軟件危機(jī)(SoftwareCrisis)首次提出:1968年北大西洋公約組織在聯(lián)邦德國召開的國際學(xué)術(shù)會議上。軟件危機(jī)是指在計算機(jī)軟件的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題。可以把軟件危機(jī)概括為兩個方面的問題軟件開發(fā)十分困難,難以滿足不斷增長且日趨復(fù)雜的需求;如何維護(hù)數(shù)量不斷膨脹的軟件產(chǎn)品。1.4軟件危機(jī)(SoftwareCrisis)首次提出:113CrisisorDepressionorChronicAffliction?從軟件工程幾十年的發(fā)展歷程來看,軟件危機(jī)不是”crisis”所能形容的,而更象”chronicaffliction”,是一種頑固的慢性痛苦。軟件危機(jī)的根本原因是軟件系統(tǒng)高度復(fù)雜、難于駕馭和軟件開發(fā)所帶有的個人色彩。CrisisorDepressionorChr114軟件危機(jī)的具體表現(xiàn)對開發(fā)成本和進(jìn)度難以估計。開發(fā)成本超出預(yù)算和不能按時交付的現(xiàn)象并不罕見。用戶對“已完成”系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生。軟件質(zhì)量難以保證。Bug一大堆,Patch一個接一個。軟件的可維護(hù)程度非常之低,即“維護(hù)墻”問題。軟件通常沒有適當(dāng)?shù)奈臋n資料。軟件成本在整個系統(tǒng)中比重逐年提高。軟件開發(fā)生產(chǎn)率的提高趕不上硬件發(fā)展和需求增長。軟件危機(jī)的具體表現(xiàn)對開發(fā)成本和進(jìn)度難以估計。開發(fā)成本超出預(yù)算115軟件危機(jī)產(chǎn)生的原因軟件本身的特點(diǎn)所決定的。軟件開發(fā)和維護(hù)的方法不正確(在不斷地發(fā)展之中)忽視軟件開發(fā)前期的需求分析;開發(fā)過程沒有統(tǒng)一的、規(guī)范的方法論的指導(dǎo),缺乏過程管理,文檔資料不齊全,忽視人與人的交流;忽視測試工作,所提交的軟件質(zhì)量不高;輕視軟件的維護(hù)。硬件技術(shù)和產(chǎn)品的發(fā)展速度遠(yuǎn)遠(yuǎn)大于軟件。計算機(jī)應(yīng)用普及—社會對軟件的依賴—對軟件的需求、質(zhì)量和可靠性的要求巨增。設(shè)計問題、資源問題使得我們難以支持和增強(qiáng)已有的軟件,即所謂的“維護(hù)墻”問題。軟件危機(jī)產(chǎn)生的原因軟件本身的特點(diǎn)所決定的。116軟件神話Myths我們已經(jīng)有了一本寫滿軟件開發(fā)標(biāo)準(zhǔn)和規(guī)程的寶典,囊括了可能遇到的任何問題。如果未能按時完成計劃,可以通過增加人數(shù)而趕上進(jìn)度。將軟件外包給另一家公司就可以完全放手不管了。有了對項目目標(biāo)的大概了解,便足以開始編寫程序,有關(guān)細(xì)節(jié)以后再慢慢了解。雖然需求不斷變更,但軟件是彈性的,可以容易地適應(yīng)這些變更。當(dāng)完成程序并交付使用時,我們的任務(wù)就完成了。知道程序開始運(yùn)行,才能評估其質(zhì)量。對于一成功的軟件項目,可執(zhí)行程序是唯一交付的成果。軟件工程導(dǎo)致大量無用文檔,并因此降低了工作效率。軟件神話Myths我們已經(jīng)有了一本寫滿軟件開發(fā)標(biāo)準(zhǔn)和規(guī)1171.5軟件工程1968年秋季,NATO(北約)的科技委員會召集了近50名一流的編程人員、計算機(jī)科學(xué)家和工業(yè)界巨頭,討論和制定擺脫“軟件危機(jī)”的對策。FritzBauer在會議上首次提出“軟件工程”概念。軟件工程的目標(biāo)低成本高質(zhì)量按時交付1.5軟件工程1968年秋季,NATO(北約)的科技委員118軟件工程定義軟件工程是一門研究如何用系統(tǒng)化、規(guī)范化、數(shù)量化等工程原則和方法進(jìn)行軟件開發(fā)和維護(hù)的學(xué)科。軟件工程包括兩方面內(nèi)容:軟件開發(fā)技術(shù)和軟件項目管理。軟件開發(fā)技術(shù)包括軟件開發(fā)方法學(xué)、軟件工具和軟件工程環(huán)境。軟件項目管理包括軟件度量、項目估算、進(jìn)度控制、人員組織、配置管理、項目計劃等。軟件工程定義軟件工程是一門研究如何用系統(tǒng)化、規(guī)范化、數(shù)量化等119FritzBauer的定義軟件工程是為了經(jīng)濟(jì)地獲得可靠的,能在實(shí)際的機(jī)器上高效運(yùn)行的軟件而建立和使用的科學(xué)的工程原則。FritzBauer的定義軟件工程是為了經(jīng)濟(jì)地獲得可靠的,120IEEE的定義軟件工程是(1)將系統(tǒng)化的、規(guī)范的、可度量的方法應(yīng)用于軟件的開發(fā)、運(yùn)行和維護(hù)的過程,即將工程化思想應(yīng)用于軟件開發(fā)過程中,(2)上述方法的研究。IEEE的定義軟件工程是(1)將系統(tǒng)化的、規(guī)范的、可度量的方121軟件工程的本質(zhì)特性關(guān)注大型程序的構(gòu)造軟件工程的中心課題是控制復(fù)雜性軟件需求不斷變化旨在提高軟件開發(fā)的效率團(tuán)隊合作是軟件工程順利實(shí)施的關(guān)鍵軟件必須有效支持它的用戶由一種文化背景的人替另一種文化背景的人創(chuàng)造產(chǎn)品軟件工程的本質(zhì)特性關(guān)注大型程序的構(gòu)造122軟件工程原則(1)質(zhì)量原則避免產(chǎn)生缺陷(具有恰當(dāng)?shù)臉?biāo)準(zhǔn)、規(guī)范、質(zhì)量審計過程等)確保盡早地發(fā)現(xiàn)缺陷并加以改正辨別和消除產(chǎn)生缺陷的原因和征兆根據(jù)標(biāo)準(zhǔn)和規(guī)范對生產(chǎn)的各個過程進(jìn)行獨(dú)立審計(SEI-CMM等)軟件工程原則(1)質(zhì)量原則123軟件工程原則(2)管理原則規(guī)定任務(wù)和職責(zé)制定工作計劃按照計劃跟蹤進(jìn)度不斷地完善計劃在CMM中有一個PDCA循環(huán)(Plan,Do,Check,Action)軟件工程原則(2)管理原則124軟件工程原則(3)工程原則分析問題分解任務(wù)控制各個部門之間的關(guān)系為了更好地貫徹這些原則,實(shí)現(xiàn)軟件工程的目標(biāo),我們必須連接軟件工程的思想,研究軟件工程的工具、方法、過程和質(zhì)量管理。軟件工程原則(3)工程原則125B.W.Boehm軟件工程基本原理用分階段的生命周期計劃嚴(yán)格管理堅持進(jìn)行階段評審實(shí)行嚴(yán)格的產(chǎn)品控制采用先進(jìn)的程序設(shè)計技術(shù)開發(fā)過程具有可見性,所獲結(jié)果清楚,便以審查開發(fā)人員少而精承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性B.W.Boehm軟件工程基本原理用分階段的生命周期計126基線(Baseline)通過正式復(fù)審的規(guī)格說明或中間產(chǎn)品(artifact),可以作為進(jìn)一步開發(fā)的基礎(chǔ),并且只有通過正式的變更控制過程才能改變它。(IEEE)基線的特征具有明確的標(biāo)識具有明確的內(nèi)容經(jīng)過正式審批嚴(yán)格控制變更基線(Baseline)通過正式復(fù)審的規(guī)格說明或中間產(chǎn)品(a127里程碑(Milestone)里程碑是用來說明項目進(jìn)展情況的事件,通常把一個開發(fā)活動的結(jié)束或一項開發(fā)任務(wù)的完成定義為一個里程碑。里程碑必須與軟件開發(fā)工作的進(jìn)展情況密切相關(guān),里程碑作為任務(wù)完成的標(biāo)志必須非常明顯,即里程碑具有很高的可見性。里程碑(Milestone)里程碑是用來說明項目進(jìn)展情況的事128軟件工程總體面臨的困難與風(fēng)險復(fù)雜性與大量的細(xì)節(jié)(火星探測器的失?。┘夹g(shù)的不確定性(技術(shù)的發(fā)展與開發(fā)人員對技術(shù)的理解程度都不同)由于交流障礙而引起的需求不確定性需求是持續(xù)變化的不斷的修改所帶來的錯誤使得軟件退化人為和市場的風(fēng)險軟件費(fèi)用、可靠性、生產(chǎn)率、重用問題難以解決軟件工程總體面臨的困難與風(fēng)險復(fù)雜性與大量的細(xì)節(jié)(火星探測器的129第一章(第二講)軟件工程過程第一章(第二講)軟件工程過程130本講的主要內(nèi)容軟件工程方法學(xué)軟件生命周期軟件過程軟件過程模型本講的主要內(nèi)容軟件工程方法學(xué)1311、軟件工程方法學(xué)通常把軟件生命周期全過程中使用的一整套技術(shù)方法的集合成為軟件工程方法學(xué)(methodology),也成為范型(paradigm)軟件工程方法學(xué)的3個要素方法工具過程1、軟件工程方法學(xué)通常把軟件生命周期全過程中使用的一整套技術(shù)132傳統(tǒng)的軟件工程方法學(xué)結(jié)構(gòu)化范型或生命周期方法學(xué)要么面向行為以功能分解為主(基于數(shù)據(jù)流圖的結(jié)構(gòu)化分析與設(shè)計方法),要么面向數(shù)據(jù)(Jackson方法)傳統(tǒng)的軟件工程方法學(xué)結(jié)構(gòu)化范型或生命周期方法學(xué)133面向?qū)ο蠓椒▽W(xué)以數(shù)據(jù)為中心,把數(shù)據(jù)和對數(shù)據(jù)的操作緊密地結(jié)合起來,用對象分解代替?zhèn)鹘y(tǒng)的功能分解。面向?qū)ο蠓椒▽W(xué)的4個要點(diǎn)把對象作為融合數(shù)據(jù)和操作的統(tǒng)一的構(gòu)件把所有對象都劃分成類子類自動擁有父類中定義的數(shù)據(jù)和操作,即繼承對象間僅能通過發(fā)送消息互相聯(lián)系面向?qū)ο蠓椒▽W(xué)以數(shù)據(jù)為中心,把數(shù)據(jù)和對數(shù)據(jù)的操作緊密地結(jié)合起1342、軟件生存周期軟件生存周期(LifeCycle)是指一個軟件從提出開發(fā)要求開始直到該軟件報廢為止的整個時期。把整個生存周期劃分為若干階段,使得每個階段有明確的任務(wù),使規(guī)模大、結(jié)構(gòu)復(fù)雜和管理復(fù)雜的軟件開發(fā)變得容易控制和管理。軟件生存周期各階段的劃分應(yīng)遵循的基本原則:各階段的任務(wù)應(yīng)盡可能相對獨(dú)立,同一階段各項任務(wù)的性質(zhì)盡可能相同,從而降低每個階段任務(wù)的復(fù)雜程度,簡化不同階段之間的聯(lián)系,有利于軟件項目開發(fā)的組織管理。2、軟件生存周期軟件生存周期(LifeCycle)是指一個135軟件生命周期的階段劃分軟件定義階段問題定義可行性研究需求分析軟件開發(fā)階段總體設(shè)計詳細(xì)設(shè)計編碼和單元測試綜合測試運(yùn)行階段軟件維護(hù)軟件生命周期的階段劃分軟件定義階段136軟件定義階段問題定義:關(guān)于問題性質(zhì)、工程目標(biāo)和工程規(guī)模的扼要描述可行性研究,即高層的分析和設(shè)計過程,以回答是否存在可行的解決方法。需求分析:準(zhǔn)確的“做什么”的描述。 軟件定義階段問題定義:關(guān)于問題性質(zhì)、工程目標(biāo)和工程規(guī)模的扼137軟件開發(fā)階段概要設(shè)計結(jié)構(gòu)設(shè)計,系統(tǒng)設(shè)計建立軟件的總體結(jié)構(gòu),即模塊結(jié)構(gòu)詳細(xì)設(shè)計算法設(shè)計,過程設(shè)計設(shè)計每個模塊的結(jié)構(gòu),IPO圖或PDL語言 編碼與單元測試生成源程序代碼和單元測試方案、數(shù)據(jù)和結(jié)果,由編程人員進(jìn)行 綜合測試通過各種測試和調(diào)試,是軟件達(dá)到預(yù)訂的要求軟件開發(fā)階段概要設(shè)計138軟件運(yùn)行階段維護(hù)通過各種必要的維護(hù)活動使系統(tǒng)持久地滿足用戶的需要四種類型的維護(hù)改正性維護(hù)適應(yīng)性維護(hù)完善性維護(hù)預(yù)防性維護(hù) 軟件運(yùn)行階段維護(hù)1393、軟件工程過程一個過程定義了為達(dá)到每個確定的目標(biāo),需要什么人在什么時間以何種方式做何種工作(Goal,Who,When,How,What)。軟件工程過程規(guī)定了獲取、供應(yīng)、開發(fā)、操作和維護(hù)軟件時,要實(shí)施的過程、活動和任務(wù)。其目的是為各種人員提供一個公共的框架,以便用相同的語言進(jìn)行交流。3、軟件工程過程一個過程定義了為達(dá)到每個確定的目標(biāo),需要什么140Cont.一個開發(fā)機(jī)構(gòu)為開發(fā)特定的軟件需要制訂一系列的工作步驟(軟件工程過程),其中包含和涉及軟件工程所有參與者的各種活動、任務(wù)?;镜能浖^程活動包括:規(guī)格說明、開發(fā)、確認(rèn)和演進(jìn)。CMM的軟件工程過程包含獲取、供應(yīng)、開發(fā)、操作、維護(hù)、管理、支持七個過程。Cont.一個開發(fā)機(jī)構(gòu)為開發(fā)特定的軟件需要制訂一系列的工作步141過程定義的作用ProcessvsMusicscore用于對Customer,User,Developer,Manager的指導(dǎo),一個廣泛適用的過程使得所有參與人員更好地理解自己所扮演的角色、他人做什么。促使過程的有機(jī)結(jié)合和改善,獲得“最好過程”可以使公司內(nèi)部的培訓(xùn)標(biāo)準(zhǔn)化。由于過程的可重復(fù)性,利于開發(fā)進(jìn)度的安排,利于成本估算。過程定義的作用ProcessvsMusicscor142統(tǒng)一過程(RUP)RUP的突出特點(diǎn)用況驅(qū)動(系統(tǒng)功能)以構(gòu)架為中心(表現(xiàn)形式)迭代和增量開發(fā)(過程實(shí)施)Return統(tǒng)一過程(RUP)RUP的突出特點(diǎn)Return143UML(UnifiedModelingLanguage)1994,OO思想已經(jīng)貫穿整個軟件生存期,具有影響的OOA&D方法達(dá)50余種。UML是一種對軟件密集型系統(tǒng)進(jìn)行可視化、詳述、構(gòu)造和文檔化的建模語言,主要用于分析和設(shè)計階段的系統(tǒng)建模。UML(UnifiedModelingLanguage144UML2.01994Booch方法RumbaughOMTCoad/YourdonFireSmith方法JacobsonOOSE……1995.10發(fā)布UnifiedMethod0.81996.6發(fā)布UML0.9不包含過程指導(dǎo)Rational聯(lián)合12家公司成立UML組織,形成UML1.0,1997.1提交給OMG1997.11.4,OMG采納UML1.12002發(fā)布UML2.0UML2.019941995.10發(fā)布1996.6發(fā)布UM1454、軟件過程模型模型所謂模型是為了理解事物而對事物做出的一種抽象,它忽略不必要的細(xì)節(jié),是事物的一種抽象形式、一個規(guī)劃、一個程式。軟件開發(fā)模型軟件開發(fā)全部過程、活動和任務(wù)的結(jié)構(gòu)框架。4、軟件過程模型模型146軟件過程模型的種類瀑布模型快速原型模型針對事先不能完成定義需求的軟件開發(fā)原型系統(tǒng)重在“快速”周期開發(fā)模型(增量和迭代模型)完整的體系結(jié)構(gòu)的實(shí)現(xiàn)確定多次迭代螺旋模型考慮風(fēng)險因素,由Boehm提出噴泉模型多次重復(fù),無間隙適用于面向?qū)ο蠹夹g(shù)(復(fù)用技術(shù))軟件過程模型的種類瀑布模型147瀑布模型瀑布模型(WaterfallModel)軟件生存周期模型(ClassicLifeCycleModel)線性順序模型(LinearSequentialModel)問題定義需求分析概要設(shè)計詳細(xì)設(shè)計編碼測試維護(hù)瀑布模型瀑布模型(WaterfallModel)問題定義需148瀑布模型的三個特點(diǎn)階段間具有順序性和依賴性推遲實(shí)現(xiàn)的觀點(diǎn)質(zhì)量保證的觀點(diǎn)瀑布模型的三個特點(diǎn)階段間具有順序性和依賴性149CosttochangeAfterreleaseDefinitionDevelopment1.5~6x
??????1x60~100xTheimpactofchangeCosttochangeAfterreleaseDef150計劃需求分析概要設(shè)計詳細(xì)設(shè)計編碼測試維護(hù)環(huán)計劃需求分析運(yùn)行評價編碼設(shè)計TheWaterfallModel
WithMaintenanceCircle計劃需求分析概要設(shè)計詳細(xì)設(shè)計編碼測試維護(hù)環(huán)計劃需求分析運(yùn)行評151運(yùn)行維護(hù)需求分析概要設(shè)計詳細(xì)設(shè)計編碼單元測試集成測試驗收測試Prototyping系統(tǒng)測試ValidateVerifyTheWaterfallModel
WithPrototyping運(yùn)行維護(hù)需求分析概要設(shè)計詳細(xì)設(shè)計編碼單元測試集成測試驗收測試152瀑布模型的優(yōu)點(diǎn)開發(fā)過程基本上是線性順序的,便于管理基于“明確、完備的需求”,可以獲得好的開發(fā)效果瀑布模型的優(yōu)點(diǎn)開發(fā)過程基本上是線性順序的,便于管理153運(yùn)行、維護(hù)需求分析概要設(shè)計詳細(xì)設(shè)計編碼單元集成測試驗收測試系統(tǒng)測試ValidateRequirementsVerifyDesignTheVModel運(yùn)行、維護(hù)需求分析概要設(shè)計詳細(xì)設(shè)計編碼單元集成測試驗收測試系154OperationalSpecificationModelOperationalSpecification(problem-oriented)
TransformedSpecification(implementation–oriented)
TESTExecuteandReviseSystemRequirements(sometimesinformalorincomplete)DeliveredSystemOperationalSpecificationMode155TransformationalModelTransformnFormalSpecificationproblem-oriented
Transform2TESTComparewithrequirements;UpdateasneededSystemRequirements(sometimesinformalorincomplete)DeliveredSystemTransform1FormalDevelopmentRecordSequenceoftransformationsPlusrationaleforthemTransformationalModelTransfor156ThePhasedDevelopmentModelBuildRelease2BuildRelease1BuildRelease3UseRelease2UseRelease1UseRelease3TimeProductionsystemDevelopmentsystemDevelopersUsersThePhasedDevelopmentModelBu157TheIncrementalandIterativeModelIncrementalDevelopmentIterativeDevelopmentcreateformatcreateeditformatcreateEasyquickMorestylescreatePasteeasyMorestylescreatePasteclumsystylescreateTheIncrementalandIterative158增量開發(fā)的優(yōu)點(diǎn)能在較短的時間內(nèi)向用戶提交可以完成主要功能的產(chǎn)品逐步增加產(chǎn)品的功能,使用戶有充裕的時間學(xué)習(xí)和適應(yīng)新產(chǎn)品,減少一個全新的產(chǎn)品給客戶組織帶來的沖擊增量開發(fā)的優(yōu)點(diǎn)能在較短的時間內(nèi)向用戶提交可以完成主要功能的產(chǎn)159TheSpiralModelTheSpiralModel160螺旋模型的優(yōu)點(diǎn)有利于已有軟件的重用有助于把軟件質(zhì)量作為軟件開發(fā)的一個重要目標(biāo)減少了過多測試或測試不足所帶來的風(fēng)險軟件維護(hù)與軟件開發(fā)沒有本質(zhì)區(qū)別螺旋模型的優(yōu)點(diǎn)有利于已有軟件的重用161問題定義系統(tǒng)測試需求分析概要設(shè)計詳細(xì)設(shè)計編碼單元測試維護(hù)集成測試提交運(yùn)行TheSoftwareDevelopmentProcessinReality問題定義系統(tǒng)測試需求分析概要設(shè)計詳細(xì)設(shè)計編碼單元測試維護(hù)集成162示例分析一假設(shè)你開發(fā)一軟件,其功能是把讀入的浮點(diǎn)數(shù)開平方,所得到的結(jié)果精確到小數(shù)點(diǎn)后4位。一旦實(shí)現(xiàn)并測試完成后,該產(chǎn)品將被拋棄。你打算選用哪種過程模型?示例分析一假設(shè)你開發(fā)一軟件,其功能是把讀入的浮點(diǎn)數(shù)開平方,所163示例分析1、需求很明確2、實(shí)現(xiàn)浮點(diǎn)數(shù)開平方的算法也很成熟
不需要原型過程模型3、一旦實(shí)現(xiàn)并測試完成后,該產(chǎn)品將被拋棄,可以不考慮產(chǎn)品的進(jìn)化問題4、規(guī)模相對較小,功能比較單一 不需要增量模型或螺旋過程模型總之,使用瀑布模型即可示例分析1、需求很明確 不需要原型過程模型3、一旦實(shí)現(xiàn)并測試164示例分析二你負(fù)責(zé)一個項目,其工作是管理公司已被廣泛應(yīng)用的字處理軟件的新版本開發(fā)。由于市場競爭激烈,公司規(guī)定了嚴(yán)格的完成期限并且已經(jīng)對外公布。你打算采用哪種過程模型?為什么?示例分析二你負(fù)責(zé)一個項目,其工作是管理公司已被廣泛應(yīng)用的字165示例分析舊版本相當(dāng)于一個原型,沒必要再專門開發(fā)一個原型系統(tǒng)公司軟件工程師對該軟件很熟悉,有開發(fā)字處理軟件的豐富經(jīng)驗,具備采用增量模型開發(fā)字處理軟件的技術(shù)水平該軟件廣泛使用,需要進(jìn)一步的改進(jìn)和擴(kuò)充,以形成更新的版本結(jié)論:增量模型Return示例分析舊版本相當(dāng)于一個原型,沒必要再專門開發(fā)一個原型系統(tǒng)R166技術(shù)審查和管理復(fù)審任務(wù):在軟件生存周期的每個重要的里程碑(一般是每個階段結(jié)束時),對工程項目的成本,實(shí)際花費(fèi)的經(jīng)費(fèi),投資回收的前景,項目的進(jìn)度等經(jīng)濟(jì)因素從管理角度進(jìn)行審查。目的:不讓錯誤進(jìn)入下一個階段技術(shù)審查也是降低軟件成本的一個重要措施在技術(shù)審查合格之后再進(jìn)行管理復(fù)審技術(shù)審查和管理復(fù)審任務(wù):在軟件生存周期的每個重要的里程碑(一167軟件開發(fā)工具軟件工具一般是指為了支持軟件人員開發(fā)和維護(hù)活動而使用的軟件。軟件工具發(fā)展的三個階段工具箱軟件開發(fā)環(huán)境SDE計算機(jī)輔助軟件工程CASE(ComputerAidedSoftwareEngineering)工具應(yīng)該支持軟件生命周期的各個階段RequirementsManagementVisualModelingProgrammingToolQualityAssuranceReturn軟件開發(fā)工具軟件工具一般是指為了支持軟件人員開發(fā)和維護(hù)活動而168什么是軟件危機(jī)?它有哪些具體表現(xiàn)?什么是軟件工程?它有哪些本質(zhì)特征?什么是軟件過程?它與軟件工程方法學(xué)有何關(guān)系?試比較瀑布模型、快速原型模型、增量模型和螺旋模型的優(yōu)缺點(diǎn),說明各種模型的使用范圍。什么是基線?應(yīng)有哪些基本特征?什么是里程碑?應(yīng)有哪些基本特征?作業(yè)一什么是軟件危機(jī)?
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建設(shè)工程勞務(wù)項目內(nèi)部承包合同
- 鄉(xiāng)村環(huán)境整治項目農(nóng)業(yè)承包協(xié)議
- 裝飾工程承包合同
- 環(huán)境監(jiān)測設(shè)備研發(fā)合同
- 建筑工程施工包干合同
- 店鋪?zhàn)赓U三方協(xié)議
- 房屋出租安全協(xié)議
- 個人循環(huán)保證借款合同
- 公司企業(yè)單位安全生產(chǎn)與勞動保護(hù)知識競賽參考試題庫500題(含答案)
- 2025年鄂州c1貨運(yùn)從業(yè)資格證模擬考試題
- 醫(yī)院實(shí)習(xí)生崗前培訓(xùn)課件
- 照明燈具統(tǒng)計表
- 杭州市居住房屋出租安全管理若干規(guī)定
- 2022年江西工業(yè)貿(mào)易職業(yè)技術(shù)學(xué)院職業(yè)適應(yīng)性測試題庫及答案解析
- 給水排水管道工程質(zhì)量通病以及防治
- 計算機(jī)視覺全套課件
- 中國聯(lián)通IMS接口規(guī)范 第三分冊:Sh接口 V1.0
- protel完全教程(原理圖部分)
- 迎澤公園文化廣場歌詞匯集
- 環(huán)境化學(xué)物的毒性作用及其影響因素
- Q∕GDW 12176-2021 反竊電監(jiān)測終端技術(shù)規(guī)范
評論
0/150
提交評論