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

下載本文檔

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

文檔簡介

軟件工程王濤華東交通大學(xué)軟件學(xué)院E-mial:wthdjd@163.com第一章概論如何理解“軟件工程”?軟件工程

(SoftwareEngineering,簡稱SE)是一門研究用工程化方法構(gòu)建和維護(hù)有效的、實(shí)用的和高質(zhì)量的軟件的學(xué)科。軟件工程采用系統(tǒng)工程學(xué)和管理學(xué)相結(jié)合的原理、方法和技術(shù)來指導(dǎo)、管理和實(shí)施軟件的各種活動(dòng),包括軟件開發(fā)、運(yùn)行、維護(hù)和服務(wù)等。1.1.1軟件工程的概念傳統(tǒng)工業(yè),如道路橋梁工程、民用建筑工程和化學(xué)工程等“軟件工程”有代表性的定義:軟件工程是一種工程形式,它運(yùn)用計(jì)算機(jī)科學(xué)和數(shù)學(xué)原理,針對(duì)軟件問題獲得一種經(jīng)濟(jì)有效的解決方案。用系統(tǒng)的、規(guī)范的、可度量的方法,開發(fā)、運(yùn)行和維護(hù)軟件。}軟件工程的基本目標(biāo)高質(zhì)量高生產(chǎn)力1.滿足客戶需求2.獲得最好收益1.1.2軟件工程的發(fā)展20世紀(jì)六七十年代,計(jì)算機(jī)硬件技術(shù)有了很大的發(fā)展,為計(jì)算機(jī)的廣泛應(yīng)用創(chuàng)造了條件,并要求軟件與之相適應(yīng)。然而當(dāng)時(shí)的軟件開發(fā)與維護(hù)技術(shù)無法滿足日益增長的軟件產(chǎn)品需求?。?!表現(xiàn)如下:1.開發(fā)工具落后2.程序設(shè)計(jì)語言功能差3.軟件可維護(hù)性差“軟件危機(jī)”1968年的NATO(北大西洋公約組織)會(huì)議需要將工程技術(shù)的思想引入軟件開發(fā)領(lǐng)域。會(huì)議上第一次提出了“軟件工程”這個(gè)名詞。1.軟件工程的成型與發(fā)展歷程軟件工程的初步成型首先是從軟件工程過程開始的。為獲得高質(zhì)量的軟件產(chǎn)品,軟件工程過程必須科學(xué)、合理。這就涉及到軟件生命周期的描述采用何種模型的問題。螺旋模型漸增模型噴泉模型快速應(yīng)用開發(fā)模型快速原型模型瀑布模型智能模型軟件生命周期軟件生命周期方法學(xué)把軟件開發(fā)和維護(hù)分成軟件定義、軟件開發(fā)和軟件維護(hù)三個(gè)時(shí)期,每個(gè)時(shí)期又分成若干個(gè)階段。軟件定義時(shí)期:確定軟件開發(fā)必須完成的任務(wù);論證軟件的可行性;確定用戶需求的詳細(xì)功能和性能。這個(gè)時(shí)期可以劃分為三個(gè)階段:問題定義、可行性研究和需求分析。(2)軟件開發(fā)時(shí)期:設(shè)計(jì)和實(shí)現(xiàn)軟件的定義。軟件開發(fā)時(shí)期包

括四個(gè)階段:總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼及單元測試、綜合測試。(3)軟件維護(hù)時(shí)期:軟件維護(hù)是對(duì)投入使用的軟件的修改,實(shí)

際上是對(duì)軟件的一次重新定義和開發(fā)過程。1.問題定義:在問題定義階段,軟件開發(fā)人員應(yīng)該清楚:“要解決什么問題”。2.可行性研究:知道了要解決的問題,在這個(gè)階段應(yīng)該清楚“用什么辦法解決這個(gè)問題”,保證在技術(shù)上、實(shí)效上、法律上都是行得通的。3.需求分析:確定軟件的功能和性能。4.總體設(shè)計(jì):設(shè)計(jì)軟件的總體結(jié)構(gòu),將一個(gè)大系統(tǒng)按照功能設(shè)計(jì)成小模塊,每個(gè)模塊完成一個(gè)相對(duì)獨(dú)立的小功能??傮w設(shè)計(jì)有時(shí)也稱概要設(shè)計(jì)。

5.詳細(xì)設(shè)計(jì):這個(gè)階段還不是編寫程序,是對(duì)每個(gè)模塊設(shè)計(jì)具體的算法和數(shù)據(jù)結(jié)構(gòu),可以包括具體細(xì)節(jié),類似于工程設(shè)計(jì)中的施工圖紙。詳細(xì)設(shè)計(jì)有時(shí)也稱模塊設(shè)計(jì)。6.編碼和單元測試:這個(gè)階段的主要任務(wù)是根據(jù)詳細(xì)設(shè)計(jì)的結(jié)果,用一種程序設(shè)計(jì)語言,編寫正確的源程序,并且對(duì)每段程序進(jìn)行嚴(yán)格測試。要求源程序容易理解、容易維護(hù)。7.綜合測試:通過測試使軟件系統(tǒng)達(dá)到用戶的要求。最基本的測試集成測試和驗(yàn)收測試。8.軟件維護(hù):軟件投入運(yùn)行后的維護(hù)活動(dòng)。面向過程(Procedure-oriented,簡稱PO)面向?qū)ο?Object-oriented,簡稱OO)統(tǒng)一建模語言(UnifiedModelingLanguage,UML)基于凈室技術(shù)、敏捷技術(shù)、重構(gòu)技術(shù)、人工智能技術(shù)互聯(lián)網(wǎng)和圖像化接口技術(shù)基于面向?qū)ο蠡A(chǔ)的構(gòu)件技術(shù)計(jì)算機(jī)輔助軟件工程(ComputerAidedSoftwareEngineering,簡稱CASE)

21世紀(jì)軟件發(fā)展的趨勢軟件即服務(wù)人機(jī)交互應(yīng)用模式資源共享與管理應(yīng)用模式中間件技術(shù)、對(duì)等計(jì)算、語義網(wǎng)、自治計(jì)算隨需即取等2.軟件工程學(xué)科的基本確立1983年,IEEE給軟件工程下了定義,即“軟件工程是開發(fā)、運(yùn)行、維護(hù)和修復(fù)軟件的系統(tǒng)方法”。B.W.Boelim提出關(guān)于軟件工程的7條基本原理:用分階段的生命周期計(jì)劃嚴(yán)格管理堅(jiān)持進(jìn)行階段評(píng)審實(shí)行嚴(yán)格的產(chǎn)品控制采用現(xiàn)代程序設(shè)計(jì)技術(shù)結(jié)果應(yīng)能清楚地審查開發(fā)小組的人員應(yīng)該少而精承認(rèn)不斷改進(jìn)的軟件工程實(shí)踐的必要性原則、方法與技術(shù)軟件工程在軟件開發(fā)、管理、維護(hù)中所作的研究

軟件工程學(xué)就是研究“如何借助科學(xué)的理論和現(xiàn)代工程技術(shù)來指導(dǎo)軟件的開發(fā),從而達(dá)到用較少的投資獲得高質(zhì)量的、可靠的軟件的目的”

。程序設(shè)計(jì)時(shí)期軟件時(shí)期軟件工程時(shí)期后軟件工程時(shí)期軟件工程學(xué)4個(gè)發(fā)展時(shí)期我們現(xiàn)在處于該時(shí)期!3.軟件工程管理的規(guī)范化和標(biāo)準(zhǔn)化軟件工程管理,就是從工程學(xué)角度出發(fā),對(duì)軟件工程的項(xiàng)目范圍、項(xiàng)目周期、產(chǎn)品質(zhì)量、知識(shí)資源、人力資源和項(xiàng)目成本等六大要素進(jìn)行管理,克服軟件危機(jī),規(guī)避軟件風(fēng)險(xiǎn),提高軟件開發(fā)效益和質(zhì)量,降低軟件開發(fā)成本。方法與技術(shù)工具與環(huán)境標(biāo)準(zhǔn)與規(guī)范組織與管理完整意義上的軟件工程4.啟示與總結(jié)縱觀軟件工程的發(fā)展歷史,我們可以得到以下啟示:(1)研究工程理論和實(shí)踐需要有系統(tǒng)科學(xué)的思想(2)軟件工程管理任重道遠(yuǎn)(3)軟件工程的新技術(shù)新方法將不斷涌現(xiàn)1.2軟件開發(fā)技術(shù)軟件開發(fā)技術(shù),它包括軟件生存期模型、軟件開發(fā)方法、軟件開發(fā)工具和環(huán)境以及軟件管理技術(shù)。1.2.1軟件生存期模型軟件生存期模型(也稱軟件生命周期模型)——是描述軟件開發(fā)過程中各種活動(dòng)如何執(zhí)行的模型。

目前典型的軟件開發(fā)模型有:

瀑布模型、增量模型、螺旋模型、噴泉模型和變換模型等。不同的開發(fā)方法有不同的軟件過程模型。瀑布模型瀑布模型的優(yōu)點(diǎn)它提供了一個(gè)模版,模版使得分析、設(shè)計(jì)、編碼、測試和維護(hù)的方法可以在該模版下有一個(gè)共同的指導(dǎo)。雖然有不少缺陷,但比在軟件開發(fā)中隨意的狀態(tài)要好得多。瀑布模型的缺點(diǎn)實(shí)際的項(xiàng)目大部分情況難以按照該模型給出的順序進(jìn)行,而且這種模型的迭代是間接的,這很容易有微小的變化而造成大的混亂。經(jīng)常情況下用戶難以表達(dá)真正的需求,而這種模式卻要求如此,這種模型是不歡迎具有二義性問題存在的。瀑布模型的缺點(diǎn)用戶要等到開發(fā)周期的晚期才能看到程序運(yùn)行的測試版本,而在這時(shí)若發(fā)現(xiàn)大的錯(cuò)誤,可能引起用戶的驚慌,而后果也可能是災(zāi)難性的。采用這種線性模型,經(jīng)常在過程的開始和結(jié)束時(shí),要等待其他成員完成后,才能進(jìn)行下去,有可能花在等待的時(shí)間比開發(fā)的時(shí)間有長。我們稱之為“堵塞狀態(tài)”。用戶試用原型系統(tǒng)之后會(huì)提出許多修改意見,開發(fā)人員按照用戶的意見快速地修改原型系統(tǒng),然后再次請(qǐng)用戶試用……一旦用戶認(rèn)為這個(gè)原型系統(tǒng)確實(shí)能做他們所需要的工作,開發(fā)人員便可據(jù)此書寫規(guī)格說明文檔,根據(jù)這份文檔開發(fā)出的軟件可以滿足用戶的真實(shí)需求??焖僭湍P驮隽磕P驮隽磕P偷膬?yōu)點(diǎn)人員分配靈活,剛開始不用投入大量人力資源,當(dāng)核心產(chǎn)品很受歡迎時(shí),可增加人力實(shí)現(xiàn)下一個(gè)增量先發(fā)布部分功能給用戶,對(duì)用戶起到鎮(zhèn)靜劑的作。具有一定的市場。螺旋模型螺旋模型的優(yōu)點(diǎn)對(duì)于大型系統(tǒng)及軟件的開發(fā),這種模型是一個(gè)很好的方法。開發(fā)者和客戶能夠較好地對(duì)待和理解每一個(gè)演化級(jí)別上的風(fēng)險(xiǎn)。螺旋模型的缺點(diǎn)需要相當(dāng)?shù)娘L(fēng)險(xiǎn)分析評(píng)估的技術(shù),且成功就依賴于這種技術(shù)。顯然,若存在一個(gè)沒有被發(fā)現(xiàn)的大風(fēng)險(xiǎn),將會(huì)出現(xiàn)問題,甚至可能導(dǎo)致演化過程失去控制。噴泉模型優(yōu)點(diǎn):噴泉模型不像瀑布模型那樣,需要分析活動(dòng)結(jié)束后才開始設(shè)計(jì)活動(dòng),設(shè)計(jì)活動(dòng)結(jié)束后才開始編碼活動(dòng)。該模型的各個(gè)階段沒有明顯的界限,開發(fā)人員可以同步進(jìn)行開發(fā)。其優(yōu)點(diǎn)是可以提高軟件項(xiàng)目開發(fā)效率,節(jié)省開發(fā)時(shí)間,適應(yīng)于面向?qū)ο蟮能浖_發(fā)過程。噴泉模型的缺點(diǎn)由于噴泉模型在各個(gè)開發(fā)階段是重疊的,因此在開發(fā)過程中需要大量的開發(fā)人員,因此不利于項(xiàng)目的管理。此外這種模型要求嚴(yán)格管理文檔,使得審核的難度加大,尤其是面對(duì)可能隨時(shí)加入各種信息、需求與資料的情況。變換模型變換模型的優(yōu)點(diǎn)形式化規(guī)約可直接作為程序驗(yàn)證的基礎(chǔ),可以盡早地發(fā)現(xiàn)和糾正錯(cuò)誤(包括那些在其他情況下不能發(fā)現(xiàn)的錯(cuò)誤)。開發(fā)出來的軟件具有很高的安全性和健壯性,特別適合安全部門或者軟件錯(cuò)誤會(huì)造成經(jīng)濟(jì)損失的開發(fā)項(xiàng)目。變換模型的缺點(diǎn)開發(fā)費(fèi)用高,而且需要的時(shí)間長。不能將該模型作為對(duì)客戶通信的機(jī)制,因?yàn)榭蛻魧?duì)這些數(shù)學(xué)語言一無所知。具有開發(fā)無缺陷軟件的承諾1.2.2軟件開發(fā)方法軟件開發(fā)方法主要包括:面向過程的開發(fā)方法面向?qū)ο蟮拈_發(fā)方法基于構(gòu)件的開發(fā)方法傳統(tǒng)的軟件開發(fā)方法:結(jié)構(gòu)化開發(fā)方法(StructuredDeveloping)、Jackson方法、原型化方法(PrototypingMethod)、HIPO法等。面向?qū)ο蟮能浖_發(fā)方法OOSD(Object-OrientedSoftwareDevelopment)基于構(gòu)件的開發(fā)(Component-BasedDevelopment,簡稱CBD)或基于構(gòu)件的軟件工程(Component-BasedSoftwareEngineering,簡稱CBSE)基于構(gòu)件的開發(fā)(Component-BasedDevelopment,簡稱CBD)是在一定構(gòu)件模型的支持下,復(fù)用構(gòu)件庫中的一個(gè)或多個(gè)軟件構(gòu)件,通過組合手段高效率、高質(zhì)量地構(gòu)造應(yīng)用軟件系統(tǒng)的過程。已經(jīng)成為現(xiàn)今軟件復(fù)用實(shí)踐的研究熱點(diǎn),被認(rèn)為是最具潛力的軟件工程發(fā)展方向之一。接口和契約構(gòu)件

CBD開發(fā)模式構(gòu)件技術(shù)和對(duì)象技術(shù)的關(guān)系構(gòu)件框架基于構(gòu)件開發(fā)的相關(guān)概念:1.構(gòu)件軟件構(gòu)件是一個(gè)僅帶特定契約接口和顯式語境依賴的結(jié)構(gòu)單元,軟件構(gòu)件可以獨(dú)立部署,易于第三方整合。2.接口和契約接口(Interface)是用戶與構(gòu)件發(fā)生交互的連接渠道,第三方只能通過構(gòu)件接口的規(guī)格說明理解和復(fù)用構(gòu)件,接口規(guī)格說明也是一種“契約”(Contract),它足夠精確地描述構(gòu)件實(shí)現(xiàn)的功能,同時(shí)又不把構(gòu)件限定于唯一的實(shí)現(xiàn)方法,3.構(gòu)件框架構(gòu)件框架(Framework)是構(gòu)件實(shí)例“即插即用”的支撐結(jié)構(gòu)。通過一定的環(huán)境條件和交互規(guī)則,構(gòu)件框架允許一組構(gòu)件形成一個(gè)“孤島”,獨(dú)立地與外部構(gòu)件或其他框架交互和協(xié)作,因此構(gòu)件框架及其內(nèi)含的構(gòu)件也可以視為一個(gè)構(gòu)件。4.CBD開發(fā)模式開發(fā)任務(wù)創(chuàng)建檢索和評(píng)價(jià)適配(adaptation)組裝測試和驗(yàn)證配置和部署維護(hù)和演進(jìn)……不同于傳統(tǒng)的軟件生命周期開發(fā)方法5.構(gòu)件技術(shù)和對(duì)象技術(shù)的關(guān)系構(gòu)件技術(shù)與面向?qū)ο蠹夹g(shù)緊密相關(guān)。構(gòu)件和對(duì)象都是對(duì)現(xiàn)實(shí)世界的抽象描述,通過接口封裝了可復(fù)用的代碼實(shí)現(xiàn)。然而兩者在以下三方面不同:概念層面復(fù)用策略技術(shù)手段當(dāng)今,構(gòu)件技術(shù)已經(jīng)成為計(jì)算環(huán)境的基本組成之一,眾多中間件產(chǎn)品和開發(fā)工具提供了對(duì)不同構(gòu)件模型的實(shí)現(xiàn)支持,然而有關(guān)CBD開發(fā)方法學(xué),至今仍有一些問題尚未解決!1.3軟件開發(fā)環(huán)境軟件開發(fā)環(huán)境(SoftwareDevelopmentEnvironment,SDE)一般以對(duì)象庫為基礎(chǔ)來組織環(huán)境,支持封裝性、實(shí)例化、類屬和繼承,達(dá)到了較高的集成度和開放性的統(tǒng)一。1.3.1軟件開發(fā)環(huán)境簡介人機(jī)界面軟件工具算法語言如C、C#、C++和Java等1.3.2軟件開發(fā)環(huán)境的分類軟件開發(fā)環(huán)境可按以下幾種角度分類:1.按軟件開發(fā)模型及開發(fā)方法分類,有支持瀑布模型、演化模型、螺旋模型、噴泉模型以及結(jié)構(gòu)化方法、信息模型方法、面向?qū)ο蠓椒ǖ炔煌P图胺椒ǖ能浖_發(fā)環(huán)境。2.按功能及結(jié)構(gòu)特點(diǎn)分類,有單體型、協(xié)同型、分散型和并發(fā)型等多種類型的軟件開發(fā)環(huán)境。3.按應(yīng)用范圍分類,有通用型和專用型軟件開發(fā)環(huán)境。其中專用型軟件開發(fā)環(huán)境與應(yīng)用領(lǐng)域有關(guān),故又軟件開發(fā)方法(SoftwareDevelopmentMethod)是指軟件開發(fā)過程所遵循

溫馨提示

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