北京理工大學教學課件_第1頁
北京理工大學教學課件_第2頁
北京理工大學教學課件_第3頁
北京理工大學教學課件_第4頁
北京理工大學教學課件_第5頁
已閱讀5頁,還剩111頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

北京理工大學教學課件軟件工程北京理工大學教學課件

課名:軟件工程參考教材:1、張海藩,軟件工程導論(第5版),清華大學出版社,20082、齊治昌等,軟件工程(第二版),高等教育出版社,20063、鄭人杰等,軟件工程概論,機械工業(yè)出版社,2010教學方式:授課+實驗課時:40課名:軟件工程參考教材:教學目的和要求:(1)掌握軟件工程的基本概念(2)學會軟件工程項目開發(fā)過程的分析、設(shè)計、編碼要求以及測試、維護的基本策略和方法(3)了解軟件工程項目管理的基本內(nèi)容和方法教學目的和要求:(1)掌握軟件工程的基本概念主要內(nèi)容為:(1)軟件工程概述:軟件工程發(fā)展、過程模型.(2)

軟件工程技術(shù):

軟件工程分析方法、軟件工程系統(tǒng)設(shè)計方法、軟件測試技術(shù)(3)軟件維護:軟件的可維性、軟件維護的任務及過程、

軟件維護的副作用(4)軟件項目管理技術(shù):軟件項目管理的基本概念、項目計劃、風險分析、軟件質(zhì)量保證、軟件配置管理主要內(nèi)容為:(1)軟件工程概述:軟件工程發(fā)展、過程模型.第一章軟件工程概述第一章第一章軟件工程概述的內(nèi)容1.1引言

1.2

軟件基本概念、分類、特點1.3軟件工程的發(fā)展過程

1.4軟件工程的活動

1.5

軟件過程模型

1.6

Rational統(tǒng)一過程模型

第一章軟件工程概述的內(nèi)容1.1引言

1.1引言為什么要講軟件和軟件工程?唯有對軟件和軟件的開發(fā)過程,有充分的認識,才能更好的開發(fā)出過程受控、質(zhì)量受控的軟件產(chǎn)品。對于軟件和軟件工程的認識是困難的,但軟件開發(fā)過程又存在很多困惑,需要對此有正確的、深刻的認識。1.1引言為什么要講軟件和軟件工程?1.1引言軟件不僅僅是在計算機運行的程序任何預先定義好的程序步驟的地方,都有軟件的身影軟件的應用領(lǐng)域系統(tǒng)軟件實時軟件商業(yè)軟件工程和科學計算軟件嵌入式軟件個人計算機軟件基于Web的軟件(網(wǎng)站)人工智能軟件1.1引言軟件不僅僅是在計算機運行的程序1.2.1軟件1.2軟件基本概念、分類、特點

軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,包括程序、數(shù)據(jù)及相關(guān)文檔的完整集合。三要素程序:按事先設(shè)計的功能、性能要求執(zhí)行的指令

(語句)序列;數(shù)據(jù):使程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu);文檔:與程序開發(fā)、維護和使用有關(guān)的圖文資料。可執(zhí)行的1.2.1軟件1.2軟件基本概念、分類、特點計算機軟件定義(GB)與計算機系統(tǒng)的操作有關(guān)的計算機程序、規(guī)程、規(guī)則,以及可能有的文件、文檔及數(shù)據(jù)。其中:I=(i1,i2,…,in)

輸入集合。Ij表示一個抽象的輸入數(shù)據(jù)類型O=(O1,O2,…,On)

輸出集合。Oj表示一個抽象的輸出數(shù)據(jù)類型E=(e1,e2,…,en)

構(gòu)成集合。ei表示一個子系統(tǒng)或一個構(gòu)件R=(r1,r2,…,rn)

構(gòu)件關(guān)系集合.ri表示一個關(guān)系。軟件表示

S=(I,O,E,R)計算機軟件定義(GB)其中:軟件表示1.2.2軟件的特點1.是邏輯實體,非物理實體,具抽象性;2.沒有明顯的制作過程;3.運行、使用期間不存在磨損、老化;4.軟件的開發(fā)、運行受計算機系統(tǒng)的限制;復雜性高,成本昂貴。涉及社會因素。1.2.2軟件的特點1.是邏輯實體,非物理實體,具抽象1.2.3軟件分類軟件從設(shè)計、實現(xiàn)、維護和傳統(tǒng)工程有相同的基礎(chǔ)2.基于軟件工作方式:*實時處理*分時處理*交互處理*批處理1.基于軟件大的功能框架:

*系統(tǒng)軟件*支撐(工具)軟件*應用軟件1.2.3軟件分類軟件從設(shè)計、實現(xiàn)、維護和傳統(tǒng)工程有管理者的錯誤觀點:我們已經(jīng)有標準和規(guī)程了我們已經(jīng)有好的開發(fā)平臺和工具了我們可以在開發(fā)進度得不到保障時,可增加開發(fā)人員我們可以外包一部分項目,緩解項目的壓力用戶的錯誤觀點:因為知道項目的目標,可先編程序。不考慮項目將來怎樣,以后要變改就行了開發(fā)者的錯誤觀點:編完程序就大功告成程序未運行前,沒有質(zhì)量問題最后項目完成只提交程序軟件工程,就是寫文檔,增加開發(fā)成本1軟件開發(fā)的錯誤觀點開發(fā)者管理者用戶1.2.4軟件開發(fā)技術(shù)面臨的問題管理者的錯誤觀點:用戶的錯誤觀點:開發(fā)者的錯誤觀點:1軟件開1.2.5軟件危機概括地說,軟件危機包含下述兩個方面的問題:如何開發(fā)軟件,以滿足對軟件日益增長的需求;如何維護數(shù)量不斷膨脹的已有軟件。在軟件開發(fā)和維護的過程中存在這么多嚴重問題,一方面與軟件本身的特點有關(guān),另一方面也和軟件開發(fā)與維護的方法不正確有關(guān)。1.2.5軟件危機概括地說,軟件危機包含下述兩個方面的問題1.2.6.軟件危機的主要特點軟件開發(fā)周期大大超過規(guī)定日期;軟件系統(tǒng)開發(fā)成本高,周期長,質(zhì)量差,滿足不了市場需求;

軟件質(zhì)量無保證軟件系統(tǒng)開發(fā)人員數(shù)量少,質(zhì)量低.軟件系統(tǒng)維護難度大.軟件開發(fā)缺乏合適的工具和方法軟件的版權(quán)問題得不到保證1.2.6.軟件危機的主要特點軟件開發(fā)周期大大超過規(guī)定日期;1.2.7yet,SuccessHasntComeEasily31%53%成功爭議失敗16%成功的標準:用戶在使用用戶使用軟件很容易做完要做的事

開發(fā)人員寫出的軟件達不到用戶要求:人的能力問題.

當前技術(shù)發(fā)展問題系統(tǒng)平臺問題失敗的根本原因1.2.7yet,SuccessHasntCome1.3軟件工程的發(fā)展1.3.1軟件的發(fā)展在軟件危機形式下,軟件工程誕生了,1968年在北大西洋公約組織(NATO)的德國開的學術(shù)會議上,軟件工程術(shù)語首次提出1.3軟件工程的發(fā)展1.3.1軟件的發(fā)展在軟件危機形式1.3.2軟件生命周期(SoftwareLifeCycle)軟件產(chǎn)品或軟件系統(tǒng)從設(shè)計、投入使用到被淘汰的全過程1.3.2軟件生命周期(SoftwareLife工作成果計劃任務書需求規(guī)格說明書設(shè)計說明書基本任務理解工作范圍建立軟件結(jié)構(gòu)確定模塊結(jié)構(gòu)定義用戶需求階段計劃需求分析概要設(shè)計詳細設(shè)計系統(tǒng)分析員開發(fā)組完成人編碼測試維護編寫程序發(fā)現(xiàn)和排除問題運行和管理程序軟件產(chǎn)品改進的軟件產(chǎn)品用戶程序員測試小組工作成果計劃任務書需求規(guī)格說明書設(shè)計說明書基本任務理解工作范1.3.3硬件、軟件生命周期的比較硬件故障率曲線軟件實際故障率曲線生命初期磨損后理想曲線實際曲線由于副作用造成的故障率提高修改故障率故障率時間時間1.3.3硬件、軟件生命周期的比較硬件故障率曲線軟件實際故

改正一個問題需付出的代價需求分析結(jié)構(gòu)設(shè)計詳細設(shè)計編碼集成測試系統(tǒng)測試現(xiàn)場改正一個問題的估計費用改正一個問題估計的工作量20200200010005.02.50.050.5(美元)(人天)改正一個問題需付出的代價需結(jié)構(gòu)設(shè)計詳細設(shè)計編碼集成測試系統(tǒng)1.4軟件工程的定義1IEEE93對軟件工程定義:軟件工程是(1)將系統(tǒng)化的、嚴格約束的、可量化的方法應用于軟件的開發(fā)、運行和維護。即將工程化應用于軟件。(2)在(1)中所述方法的研究IEEE:美國電氣和電子工程師學會:(InstituteofElectricalandElectronicsEngineers)學會設(shè)各種專門技術(shù)分會,軟件標準分技術(shù)委員會為SESS2定義給的四個要點:軟件工程方法和性質(zhì)----系統(tǒng)化、嚴格約束、可量化的方法軟件工程方法的作用和范圍-----軟件的開發(fā)、運行和維護軟件工程方法的目標----即將工程化應用于軟件軟件工程方法的趨勢-----方法的研究1.4軟件工程的定義1IEEE93對軟件工程定義:I在給定成本、進度的前提下,開發(fā)出有可修改性、有效性、可靠性、可理解性、可維護性、可重用性、可適應性、可移植性、可追蹤性和可互操作性且滿足用戶需求的產(chǎn)品。3軟件工程的目標技術(shù)的觀點:包括:軟件項目的分析、設(shè)計、編碼、測試、維護等技術(shù)方法。按軟件技術(shù)理論,以高效、健壯、可復用、可維護為目的,研究軟件體系結(jié)構(gòu)、組成以及構(gòu)造方式、等工程的觀點:包括:軟件項目招標、合同、實施、監(jiān)督、驗收推廣等。以經(jīng)濟管理科學為依據(jù),研究軟件工程的規(guī)劃策略和經(jīng)濟收益等工程問題管理的觀點:包括:軟件項目開發(fā)人員組織控制、進度風險分析和質(zhì)量保證體系等方面。以科學性、高效可行及可測量性為目標來研究工程項目管理4軟件工程的三視圖在給定成本、進度的前提下,開發(fā)出有可修改性、有效性、可靠性、5軟件工程基本原理1、用分階段的生命周期計劃嚴格管理2、堅持進行階段評審3、實行嚴格的產(chǎn)品控制4、采用現(xiàn)代程序設(shè)計技術(shù)5、結(jié)果應能清楚地審查6、開發(fā)小組的人員應該少而精7、承認不斷改進軟件工程實踐的必要性5軟件工程基本原理1、用分階段的生命周期計劃嚴格管理軟件工程的基本思想生命周期的觀點重視文檔的作用自上而下和逐步細化的思想模塊化的思想反復迭代的思想注意編程風格軟件工程的基本思想1.5軟件過程模型軟件工程學的基礎(chǔ)是軟件過程軟件過程貫穿于軟件生命周期中軟件工程學中的方法用于軟件過程的各階段的各項活動中1.5軟件過程模型軟件工程學的基礎(chǔ)是軟件過程1軟件過程定義工具方法過程質(zhì)量焦點Softwareengineeringlayers質(zhì)量焦點:支持軟件工程的根基就在于對質(zhì)量的關(guān)注。過程:軟件工程的過程將技術(shù)層結(jié)合在一起,使計算機軟件合理和及時開發(fā)出來。方法:涵蓋一系列的任務:需求分析、設(shè)計、編程、測試和維護。工具:對過程、方法提供自動或半自動的支持。例CASE集成軟件、硬件或一個軟件工程數(shù)據(jù)庫。根據(jù)不同的項目來定義貫穿于軟件生命周期之中的一組關(guān)鍵活動區(qū)域。也稱過程模型2軟件過程的位置和作用1軟件過程定義工具方法過程質(zhì)量焦點Softwaree3.瀑布模型(線形順序模型)可行性研究與計劃需求分析設(shè)計編碼運行維護測試定義階段開發(fā)階段維護階段開發(fā)軟件的特點:過程具有順序性和依賴性不適應需求不確定的項目錯誤最后才發(fā)現(xiàn)開始進程呈阻塞情況

承接上一項活動中接收本項活動所需的對象作為輸入利用輸入進行本項活動。把本項的活動成果傳送下一項對本項工作進行評審,若評審正確才能進行下一項工作確定:系統(tǒng)功能系統(tǒng)性能設(shè)計:數(shù)據(jù)結(jié)構(gòu)體系結(jié)構(gòu)接口算法開發(fā)軟件的原則分析:系統(tǒng)需求軟件需求3.瀑布模型(線形順序模型)可行性研究與計劃需求分析設(shè)計4原型模型聽取用戶意見建造/修改原型用戶測試運行原型原型模型帶來的問題:原型時期的質(zhì)量問題用戶如何理解進度先入為主的非最佳方式不適合原型開發(fā)的領(lǐng)域:

實時控制軟件數(shù)值計算軟件原型產(chǎn)生的步驟需求分析和定義規(guī)格軟件設(shè)計的一種工具解決不確定性的工具一種實驗工具開發(fā)同時,作為同步培訓工具原型演化為最終系統(tǒng)軟件維護的輔助工具應用領(lǐng)域4原型模型聽取用建造/修改原型用戶測試原型模型帶來的問題:需求設(shè)計編碼測試集成運行、試用核心系統(tǒng)開發(fā)設(shè)計需求編碼測試集成運行、試用第二次迭代反饋反饋5演化(迭代)模型需要足夠的人力資源用戶和設(shè)計都成為關(guān)鍵適用于MIS形式的系統(tǒng)開發(fā)過程(1)根據(jù)用戶要求開發(fā)出核心系統(tǒng)(2)用戶試用后,提出精化系統(tǒng)、增強系統(tǒng)能力的需求,開發(fā)人員實施開發(fā)的迭代過程需求設(shè)計編碼測試集成運核心系統(tǒng)開發(fā)設(shè)計需求編碼測試集成運第二6增量模型(遞增模型、增殖模型)

先完成一個系統(tǒng)子集的開發(fā),再按同樣的開發(fā)步驟增加功能(系統(tǒng)子集),如此遞增下去直至滿足全部系統(tǒng)需求。系統(tǒng)的總體設(shè)計在初始子集設(shè)計階段就應作出設(shè)想。6增量模型(遞增模型、增殖模型)先完成一個系統(tǒng)子分析增量模型設(shè)計編碼測試分析設(shè)計編碼測試分析設(shè)計編碼測試分析設(shè)計編碼測試增量1增量2增量3增量4交付的增量1交付的增量2交付的增量3交付的增量4日歷時間分析增量模型設(shè)計編碼測試分析設(shè)計編碼測試分析7.螺旋模型

瀑布模型和增量模型相結(jié)合,增加風險分析用來指導大型軟件項目的開發(fā)將開發(fā)劃分為制定計劃、風險分析、實施工程、客戶評估四類活動沿螺旋線每轉(zhuǎn)一圈,表示開發(fā)出一個更完善的新的軟件版本要點:相似于增量模型,是順序模型與原型過程的統(tǒng)一,強調(diào)版本的升級?;顒踊植煌鼜娬{(diào):計劃、風險分析、用戶評估與增量模型的區(qū)別:7.螺旋模型瀑布模型和增量模型相結(jié)合,增加風險分析要8.噴泉模型演化分析設(shè)計實現(xiàn)確認維護1990年B.H.Sollers和J.M.Edwards提出主要用于采用面向?qū)ο蠹夹g(shù)的項目噴泉體現(xiàn)迭代和無間隙的特征軟件的某些部分常常被重復工作多次,相關(guān)對象在每次迭代中隨之加入漸進的軟件成分在分析、設(shè)計、實現(xiàn)等各項活動之間無明顯邊界8.噴泉模型演化分析設(shè)計實現(xiàn)確認維護1990年B.H.So9.構(gòu)件集成模型

構(gòu)件庫問題域識別構(gòu)件查找構(gòu)件生成構(gòu)件組裝系統(tǒng)查到構(gòu)件未查到構(gòu)件模型要點:?基于軟件復用性?形成統(tǒng)一開發(fā)過程?采用統(tǒng)一建模語言359.構(gòu)件集成模型構(gòu)件庫問題域識別構(gòu)件查找構(gòu)件生成構(gòu)件組裝系基本需求螺旋螺旋模型第n次迭代原型建造原型第n次迭代維護運行系統(tǒng)需求分析設(shè)計編碼測試132578614944GT4GT4GT10111213組合模型要點:幾種模型配合使用以一種模型為主,嵌入其它模型由開發(fā)者選擇開發(fā)路徑基本需求螺旋螺旋模型原型建造原型維護運行系統(tǒng)需求分析設(shè)計編碼?已經(jīng)有先例的項目?問題明確且時間緊的項目?規(guī)模較大且時間緊的項目?需求不確定的項目?帶有突破性技術(shù)的項目?客戶難以溝通和理解的項目?明顯復用潛力的項目項目適應模型的規(guī)律(一般情況)

項目情況適用模型瀑布模型增量模型演化模型原型模型螺旋模型原型模型構(gòu)件模型37?已經(jīng)有先例的項目項Rational統(tǒng)一過程RUPRUP是由IBM公司開發(fā)和維護的過程產(chǎn)品它提供了在開發(fā)機構(gòu)中分派任務和責任的方法它的目的是在可以預見的日程和預算前提下確保滿足最終用戶需求的高質(zhì)量軟件的產(chǎn)生Rational統(tǒng)一過程RUPRUP是由IBM公司開發(fā)和維護RUP的優(yōu)越性提高了團隊的生產(chǎn)力創(chuàng)建并維護模型為如何有效地使用UML提供了指導是一個可配置的過程吸收了許多在商業(yè)上得到證明的軟件開發(fā)的最佳實踐經(jīng)驗RUP的優(yōu)越性提高了團隊的生產(chǎn)力RUP所吸收的最佳工程實踐經(jīng)驗迭代地開發(fā)軟件需求管理使用基于組件的體系結(jié)構(gòu)可視化的軟件建模驗證軟件質(zhì)量控制軟件的變化RUP所吸收的最佳工程實踐經(jīng)驗迭代地開發(fā)軟件RUP的二維結(jié)構(gòu)RUP的二維結(jié)構(gòu)軟件工程方法學

通常把在軟件生命周期全過程中使用的一整套技術(shù)的集合稱為方法學(methodology),也稱為范型(paradigm)。軟件工程方法學包括三個要素,這就是方法、工具和過程。目前使用得最廣泛的軟件工程方法學,分別是傳統(tǒng)方法學和面向?qū)ο蠓椒▽W。軟件工程方法學43結(jié)構(gòu)化方法PK面向?qū)ο蠓椒?3結(jié)構(gòu)化方法PK面向?qū)ο蠓椒?4結(jié)構(gòu)化方法PK面向?qū)ο蠓椒▊鹘y(tǒng)的結(jié)構(gòu)化開發(fā)方法是以功能分析和數(shù)據(jù)分析為基礎(chǔ),采用分解和抽象的方法找出軟件功能模塊及其之間的連接關(guān)系,并找出數(shù)據(jù)的表或視圖以及它們之間的關(guān)聯(lián)。但是,該方法使得人們對現(xiàn)實世界的認識與編程之間存在理解上的鴻溝,整個系統(tǒng)的變動和修改十分困難,不便于軟件重用,并且難以適應以突出控制特性的系統(tǒng)要求。44結(jié)構(gòu)化方法PK面向?qū)ο蠓椒▊鹘y(tǒng)的結(jié)構(gòu)化開發(fā)方法是以功45結(jié)構(gòu)化方法PK面向?qū)ο蠓椒嫦驅(qū)ο蠓椒ㄊ菑默F(xiàn)實世界中客觀存在的事物(即對象)出發(fā),盡可能地運用人類的自然思維方式來構(gòu)造軟件系統(tǒng)。它運用人類在日常的邏輯思維中經(jīng)常采用的思想方法與原則,例如抽象、分類、繼承、聚合、封裝等,將其貫穿于整個分析和設(shè)計過程,實現(xiàn)了客觀世界到計算機系統(tǒng)的平滑過渡,容易為人們所理解,并使得軟件的復用在面向?qū)ο蟮脑O(shè)計中成了自然而然的事情。45結(jié)構(gòu)化方法PK面向?qū)ο蠓椒嫦驅(qū)ο蠓椒ㄊ菑默F(xiàn)實世界中46什么是CASECASE(ComputerAidedSoftwareEngineering)計算機輔助軟件工程是一組工具和方法的集合,用于輔助軟件開發(fā)、維護、管理過程中的各項活動,促進軟件過程的工程化和自動化所有軟件工程方法都需要CASE的相應技術(shù)支持用于系統(tǒng)模型的圖形編輯器管理設(shè)計實體的數(shù)據(jù)字典生成用戶界面的GUI軟件支持程序糾錯的調(diào)試器代碼生成器…46什么是CASECASE(ComputerAided47CASE工具IBMRational公司產(chǎn)品()開發(fā)管理軟件過程:RUP需求管理:Requisite

Pro

可視化建模:Rose自動測試:Robot,TestRealtime,TestManager,XDETester項目管理:ProjectConsole配置管理:ClearCase,ClearQuest開源CASE工具:(

)CVS:應用廣泛的版本管理工具UMLModeler:UML模型圖形編輯工具UML2EJB:將XML表示的UML模型轉(zhuǎn)換成EJB代碼的轉(zhuǎn)換器47CASE工具IBMRational公司產(chǎn)品(http48進一步說明48進一步說明49軟件工程面臨的挑戰(zhàn)遺留系統(tǒng)的問題遺留系統(tǒng)是指那些過時或存在問題的計算機系統(tǒng),通常是許多年以前開發(fā)的挑戰(zhàn):既要以合理的成本維護和更新系統(tǒng),又要能夠繼承系統(tǒng)中重要的商業(yè)信息和服務異構(gòu)系統(tǒng)的問題網(wǎng)絡(luò)環(huán)境下包含不同的硬件平臺和軟件系統(tǒng)挑戰(zhàn):需要提出新的開發(fā)技術(shù),能夠使所開發(fā)的軟件系統(tǒng)運行在不同的硬件平臺和系統(tǒng)環(huán)境下49軟件工程面臨的挑戰(zhàn)遺留系統(tǒng)的問題50軟件工程面臨的挑戰(zhàn)高可信軟件開發(fā)的要求軟件的重要作用要求正確性、可靠性、安全性等可信性質(zhì)挑戰(zhàn):如何在軟件的開發(fā)和運行中保證其具有高可信的性質(zhì)軟件開發(fā)方式的變化網(wǎng)絡(luò)時代帶來的沖擊挑戰(zhàn):研究分布式的軟件體系結(jié)構(gòu)和開發(fā)模式,探索與之相適應的軟件工程策略50軟件工程面臨的挑戰(zhàn)高可信軟件開發(fā)的要求51軟件工程知識體系軟件工程知識體系(SWEBOK)IEEE計算機學會發(fā)起研究,從而促進軟件工程發(fā)展成為獨立的專業(yè)學科2001年5月完成,發(fā)布“SWEBOK指南V1.00(試用版)”SWEBOK的組成將軟件工程知識分解成若干知識域,形成層次化的組成結(jié)構(gòu)10個知識域軟件需求、軟件設(shè)計、軟件構(gòu)造、軟件測試、軟件維護軟件配置管理、軟件工程管理、軟件工程過程、軟件工程工具與方法、軟件質(zhì)量51軟件工程知識體系軟件工程知識體系(SWEBOK)525253軟件工程及其相關(guān)學科軟件工程是應用計算機科學、數(shù)學與管理科學等基本原理,開發(fā)軟件的工程。它借鑒傳統(tǒng)工程的原則和方法,以提高質(zhì)量,降低成本為目的計算機科學和數(shù)學用于構(gòu)造軟件的模型與算法;工程科學用于制定規(guī)范、設(shè)計范型、評估成本及確定權(quán)衡;管理科學用于計劃、資源、質(zhì)量、成本等管理53軟件工程及其相關(guān)學科軟件工程是應用計算機科學、54軟件工程與計算機科學軟件工程與計算機科學的區(qū)別計算機科學研究構(gòu)成計算機和軟件系統(tǒng)基礎(chǔ)的有關(guān)理論和方法舉例:數(shù)據(jù)結(jié)構(gòu)、離散數(shù)學、算法分析等軟件工程研究開發(fā)和發(fā)布軟件的實際問題舉例:飛行控制軟件軟件工程的研究與實踐包括兩方面,一是扎根于計算機科學,二是表現(xiàn)為一種工程學科54軟件工程與計算機科學軟件工程與計算機科學的區(qū)別55思考與討論以下系統(tǒng)適合采用什么樣的軟件過程模型?為什么?在一種新型機器上,為一種已知語言開發(fā)一個普通的編譯器瀑布模型該項目的語言是已知的,需求是明確的和穩(wěn)定的,整個系統(tǒng)屬于中小規(guī)模,因此適合采用瀑布模型進行軟件開發(fā)55思考與討論以下系統(tǒng)適合采用什么樣的軟件過程模型?為什么?56案例分析大學教務管理系統(tǒng),準備替換現(xiàn)有的系統(tǒng)增量模型從該系統(tǒng)的具體情況來看,系統(tǒng)的需求是比較容易明確的,整個系統(tǒng)的結(jié)構(gòu)需要重新設(shè)計,但是原有的遺留系統(tǒng)中有些部分是可以重用的,因此我們可以采用增量模型實施軟件開發(fā)56案例分析大學教務管理系統(tǒng),準備替換現(xiàn)有的系統(tǒng)增量模型57案例分析快速原型模型本項目的主要問題在于用戶需要方面,該系統(tǒng)與最終用戶的交互是十分關(guān)鍵的,但是在項目初期用戶的需求基本上是不知道的,因此適合采用快速原型方法來確定用戶需求,在需求確定的基礎(chǔ)上再開發(fā)最終系統(tǒng)大學校園的虛擬漫游系統(tǒng),這是該大學首次使用該系統(tǒng)57案例分析快速原型模型大學校園的虛擬漫游系統(tǒng),這是該大學首小結(jié)軟件、軟件工程的概念軟件的特點軟件危機的表現(xiàn)形式軟件工程模型:瀑布、原型、演化、構(gòu)件、RUP軟件過程模型的選擇依據(jù)兩種軟件工程方法學的比較小結(jié)軟件、軟件工程的概念北京理工大學教學課件軟件工程北京理工大學教學課件

課名:軟件工程參考教材:1、張海藩,軟件工程導論(第5版),清華大學出版社,20082、齊治昌等,軟件工程(第二版),高等教育出版社,20063、鄭人杰等,軟件工程概論,機械工業(yè)出版社,2010教學方式:授課+實驗課時:40課名:軟件工程參考教材:教學目的和要求:(1)掌握軟件工程的基本概念(2)學會軟件工程項目開發(fā)過程的分析、設(shè)計、編碼要求以及測試、維護的基本策略和方法(3)了解軟件工程項目管理的基本內(nèi)容和方法教學目的和要求:(1)掌握軟件工程的基本概念主要內(nèi)容為:(1)軟件工程概述:軟件工程發(fā)展、過程模型.(2)

軟件工程技術(shù):

軟件工程分析方法、軟件工程系統(tǒng)設(shè)計方法、軟件測試技術(shù)(3)軟件維護:軟件的可維性、軟件維護的任務及過程、

軟件維護的副作用(4)軟件項目管理技術(shù):軟件項目管理的基本概念、項目計劃、風險分析、軟件質(zhì)量保證、軟件配置管理主要內(nèi)容為:(1)軟件工程概述:軟件工程發(fā)展、過程模型.第一章軟件工程概述第一章第一章軟件工程概述的內(nèi)容1.1引言

1.2

軟件基本概念、分類、特點1.3軟件工程的發(fā)展過程

1.4軟件工程的活動

1.5

軟件過程模型

1.6

Rational統(tǒng)一過程模型

第一章軟件工程概述的內(nèi)容1.1引言

1.1引言為什么要講軟件和軟件工程?唯有對軟件和軟件的開發(fā)過程,有充分的認識,才能更好的開發(fā)出過程受控、質(zhì)量受控的軟件產(chǎn)品。對于軟件和軟件工程的認識是困難的,但軟件開發(fā)過程又存在很多困惑,需要對此有正確的、深刻的認識。1.1引言為什么要講軟件和軟件工程?1.1引言軟件不僅僅是在計算機運行的程序任何預先定義好的程序步驟的地方,都有軟件的身影軟件的應用領(lǐng)域系統(tǒng)軟件實時軟件商業(yè)軟件工程和科學計算軟件嵌入式軟件個人計算機軟件基于Web的軟件(網(wǎng)站)人工智能軟件1.1引言軟件不僅僅是在計算機運行的程序1.2.1軟件1.2軟件基本概念、分類、特點

軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,包括程序、數(shù)據(jù)及相關(guān)文檔的完整集合。三要素程序:按事先設(shè)計的功能、性能要求執(zhí)行的指令

(語句)序列;數(shù)據(jù):使程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu);文檔:與程序開發(fā)、維護和使用有關(guān)的圖文資料??蓤?zhí)行的1.2.1軟件1.2軟件基本概念、分類、特點計算機軟件定義(GB)與計算機系統(tǒng)的操作有關(guān)的計算機程序、規(guī)程、規(guī)則,以及可能有的文件、文檔及數(shù)據(jù)。其中:I=(i1,i2,…,in)

輸入集合。Ij表示一個抽象的輸入數(shù)據(jù)類型O=(O1,O2,…,On)

輸出集合。Oj表示一個抽象的輸出數(shù)據(jù)類型E=(e1,e2,…,en)

構(gòu)成集合。ei表示一個子系統(tǒng)或一個構(gòu)件R=(r1,r2,…,rn)

構(gòu)件關(guān)系集合.ri表示一個關(guān)系。軟件表示

S=(I,O,E,R)計算機軟件定義(GB)其中:軟件表示1.2.2軟件的特點1.是邏輯實體,非物理實體,具抽象性;2.沒有明顯的制作過程;3.運行、使用期間不存在磨損、老化;4.軟件的開發(fā)、運行受計算機系統(tǒng)的限制;復雜性高,成本昂貴。涉及社會因素。1.2.2軟件的特點1.是邏輯實體,非物理實體,具抽象1.2.3軟件分類軟件從設(shè)計、實現(xiàn)、維護和傳統(tǒng)工程有相同的基礎(chǔ)2.基于軟件工作方式:*實時處理*分時處理*交互處理*批處理1.基于軟件大的功能框架:

*系統(tǒng)軟件*支撐(工具)軟件*應用軟件1.2.3軟件分類軟件從設(shè)計、實現(xiàn)、維護和傳統(tǒng)工程有管理者的錯誤觀點:我們已經(jīng)有標準和規(guī)程了我們已經(jīng)有好的開發(fā)平臺和工具了我們可以在開發(fā)進度得不到保障時,可增加開發(fā)人員我們可以外包一部分項目,緩解項目的壓力用戶的錯誤觀點:因為知道項目的目標,可先編程序。不考慮項目將來怎樣,以后要變改就行了開發(fā)者的錯誤觀點:編完程序就大功告成程序未運行前,沒有質(zhì)量問題最后項目完成只提交程序軟件工程,就是寫文檔,增加開發(fā)成本1軟件開發(fā)的錯誤觀點開發(fā)者管理者用戶1.2.4軟件開發(fā)技術(shù)面臨的問題管理者的錯誤觀點:用戶的錯誤觀點:開發(fā)者的錯誤觀點:1軟件開1.2.5軟件危機概括地說,軟件危機包含下述兩個方面的問題:如何開發(fā)軟件,以滿足對軟件日益增長的需求;如何維護數(shù)量不斷膨脹的已有軟件。在軟件開發(fā)和維護的過程中存在這么多嚴重問題,一方面與軟件本身的特點有關(guān),另一方面也和軟件開發(fā)與維護的方法不正確有關(guān)。1.2.5軟件危機概括地說,軟件危機包含下述兩個方面的問題1.2.6.軟件危機的主要特點軟件開發(fā)周期大大超過規(guī)定日期;軟件系統(tǒng)開發(fā)成本高,周期長,質(zhì)量差,滿足不了市場需求;

軟件質(zhì)量無保證軟件系統(tǒng)開發(fā)人員數(shù)量少,質(zhì)量低.軟件系統(tǒng)維護難度大.軟件開發(fā)缺乏合適的工具和方法軟件的版權(quán)問題得不到保證1.2.6.軟件危機的主要特點軟件開發(fā)周期大大超過規(guī)定日期;1.2.7yet,SuccessHasntComeEasily31%53%成功爭議失敗16%成功的標準:用戶在使用用戶使用軟件很容易做完要做的事

開發(fā)人員寫出的軟件達不到用戶要求:人的能力問題.

當前技術(shù)發(fā)展問題系統(tǒng)平臺問題失敗的根本原因1.2.7yet,SuccessHasntCome1.3軟件工程的發(fā)展1.3.1軟件的發(fā)展在軟件危機形式下,軟件工程誕生了,1968年在北大西洋公約組織(NATO)的德國開的學術(shù)會議上,軟件工程術(shù)語首次提出1.3軟件工程的發(fā)展1.3.1軟件的發(fā)展在軟件危機形式1.3.2軟件生命周期(SoftwareLifeCycle)軟件產(chǎn)品或軟件系統(tǒng)從設(shè)計、投入使用到被淘汰的全過程1.3.2軟件生命周期(SoftwareLife工作成果計劃任務書需求規(guī)格說明書設(shè)計說明書基本任務理解工作范圍建立軟件結(jié)構(gòu)確定模塊結(jié)構(gòu)定義用戶需求階段計劃需求分析概要設(shè)計詳細設(shè)計系統(tǒng)分析員開發(fā)組完成人編碼測試維護編寫程序發(fā)現(xiàn)和排除問題運行和管理程序軟件產(chǎn)品改進的軟件產(chǎn)品用戶程序員測試小組工作成果計劃任務書需求規(guī)格說明書設(shè)計說明書基本任務理解工作范1.3.3硬件、軟件生命周期的比較硬件故障率曲線軟件實際故障率曲線生命初期磨損后理想曲線實際曲線由于副作用造成的故障率提高修改故障率故障率時間時間1.3.3硬件、軟件生命周期的比較硬件故障率曲線軟件實際故

改正一個問題需付出的代價需求分析結(jié)構(gòu)設(shè)計詳細設(shè)計編碼集成測試系統(tǒng)測試現(xiàn)場改正一個問題的估計費用改正一個問題估計的工作量20200200010005.02.50.050.5(美元)(人天)改正一個問題需付出的代價需結(jié)構(gòu)設(shè)計詳細設(shè)計編碼集成測試系統(tǒng)1.4軟件工程的定義1IEEE93對軟件工程定義:軟件工程是(1)將系統(tǒng)化的、嚴格約束的、可量化的方法應用于軟件的開發(fā)、運行和維護。即將工程化應用于軟件。(2)在(1)中所述方法的研究IEEE:美國電氣和電子工程師學會:(InstituteofElectricalandElectronicsEngineers)學會設(shè)各種專門技術(shù)分會,軟件標準分技術(shù)委員會為SESS2定義給的四個要點:軟件工程方法和性質(zhì)----系統(tǒng)化、嚴格約束、可量化的方法軟件工程方法的作用和范圍-----軟件的開發(fā)、運行和維護軟件工程方法的目標----即將工程化應用于軟件軟件工程方法的趨勢-----方法的研究1.4軟件工程的定義1IEEE93對軟件工程定義:I在給定成本、進度的前提下,開發(fā)出有可修改性、有效性、可靠性、可理解性、可維護性、可重用性、可適應性、可移植性、可追蹤性和可互操作性且滿足用戶需求的產(chǎn)品。3軟件工程的目標技術(shù)的觀點:包括:軟件項目的分析、設(shè)計、編碼、測試、維護等技術(shù)方法。按軟件技術(shù)理論,以高效、健壯、可復用、可維護為目的,研究軟件體系結(jié)構(gòu)、組成以及構(gòu)造方式、等工程的觀點:包括:軟件項目招標、合同、實施、監(jiān)督、驗收推廣等。以經(jīng)濟管理科學為依據(jù),研究軟件工程的規(guī)劃策略和經(jīng)濟收益等工程問題管理的觀點:包括:軟件項目開發(fā)人員組織控制、進度風險分析和質(zhì)量保證體系等方面。以科學性、高效可行及可測量性為目標來研究工程項目管理4軟件工程的三視圖在給定成本、進度的前提下,開發(fā)出有可修改性、有效性、可靠性、5軟件工程基本原理1、用分階段的生命周期計劃嚴格管理2、堅持進行階段評審3、實行嚴格的產(chǎn)品控制4、采用現(xiàn)代程序設(shè)計技術(shù)5、結(jié)果應能清楚地審查6、開發(fā)小組的人員應該少而精7、承認不斷改進軟件工程實踐的必要性5軟件工程基本原理1、用分階段的生命周期計劃嚴格管理軟件工程的基本思想生命周期的觀點重視文檔的作用自上而下和逐步細化的思想模塊化的思想反復迭代的思想注意編程風格軟件工程的基本思想1.5軟件過程模型軟件工程學的基礎(chǔ)是軟件過程軟件過程貫穿于軟件生命周期中軟件工程學中的方法用于軟件過程的各階段的各項活動中1.5軟件過程模型軟件工程學的基礎(chǔ)是軟件過程1軟件過程定義工具方法過程質(zhì)量焦點Softwareengineeringlayers質(zhì)量焦點:支持軟件工程的根基就在于對質(zhì)量的關(guān)注。過程:軟件工程的過程將技術(shù)層結(jié)合在一起,使計算機軟件合理和及時開發(fā)出來。方法:涵蓋一系列的任務:需求分析、設(shè)計、編程、測試和維護。工具:對過程、方法提供自動或半自動的支持。例CASE集成軟件、硬件或一個軟件工程數(shù)據(jù)庫。根據(jù)不同的項目來定義貫穿于軟件生命周期之中的一組關(guān)鍵活動區(qū)域。也稱過程模型2軟件過程的位置和作用1軟件過程定義工具方法過程質(zhì)量焦點Softwaree3.瀑布模型(線形順序模型)可行性研究與計劃需求分析設(shè)計編碼運行維護測試定義階段開發(fā)階段維護階段開發(fā)軟件的特點:過程具有順序性和依賴性不適應需求不確定的項目錯誤最后才發(fā)現(xiàn)開始進程呈阻塞情況

承接上一項活動中接收本項活動所需的對象作為輸入利用輸入進行本項活動。把本項的活動成果傳送下一項對本項工作進行評審,若評審正確才能進行下一項工作確定:系統(tǒng)功能系統(tǒng)性能設(shè)計:數(shù)據(jù)結(jié)構(gòu)體系結(jié)構(gòu)接口算法開發(fā)軟件的原則分析:系統(tǒng)需求軟件需求3.瀑布模型(線形順序模型)可行性研究與計劃需求分析設(shè)計4原型模型聽取用戶意見建造/修改原型用戶測試運行原型原型模型帶來的問題:原型時期的質(zhì)量問題用戶如何理解進度先入為主的非最佳方式不適合原型開發(fā)的領(lǐng)域:

實時控制軟件數(shù)值計算軟件原型產(chǎn)生的步驟需求分析和定義規(guī)格軟件設(shè)計的一種工具解決不確定性的工具一種實驗工具開發(fā)同時,作為同步培訓工具原型演化為最終系統(tǒng)軟件維護的輔助工具應用領(lǐng)域4原型模型聽取用建造/修改原型用戶測試原型模型帶來的問題:需求設(shè)計編碼測試集成運行、試用核心系統(tǒng)開發(fā)設(shè)計需求編碼測試集成運行、試用第二次迭代反饋反饋5演化(迭代)模型需要足夠的人力資源用戶和設(shè)計都成為關(guān)鍵適用于MIS形式的系統(tǒng)開發(fā)過程(1)根據(jù)用戶要求開發(fā)出核心系統(tǒng)(2)用戶試用后,提出精化系統(tǒng)、增強系統(tǒng)能力的需求,開發(fā)人員實施開發(fā)的迭代過程需求設(shè)計編碼測試集成運核心系統(tǒng)開發(fā)設(shè)計需求編碼測試集成運第二6增量模型(遞增模型、增殖模型)

先完成一個系統(tǒng)子集的開發(fā),再按同樣的開發(fā)步驟增加功能(系統(tǒng)子集),如此遞增下去直至滿足全部系統(tǒng)需求。系統(tǒng)的總體設(shè)計在初始子集設(shè)計階段就應作出設(shè)想。6增量模型(遞增模型、增殖模型)先完成一個系統(tǒng)子分析增量模型設(shè)計編碼測試分析設(shè)計編碼測試分析設(shè)計編碼測試分析設(shè)計編碼測試增量1增量2增量3增量4交付的增量1交付的增量2交付的增量3交付的增量4日歷時間分析增量模型設(shè)計編碼測試分析設(shè)計編碼測試分析7.螺旋模型

瀑布模型和增量模型相結(jié)合,增加風險分析用來指導大型軟件項目的開發(fā)將開發(fā)劃分為制定計劃、風險分析、實施工程、客戶評估四類活動沿螺旋線每轉(zhuǎn)一圈,表示開發(fā)出一個更完善的新的軟件版本要點:相似于增量模型,是順序模型與原型過程的統(tǒng)一,強調(diào)版本的升級?;顒踊植煌鼜娬{(diào):計劃、風險分析、用戶評估與增量模型的區(qū)別:7.螺旋模型瀑布模型和增量模型相結(jié)合,增加風險分析要8.噴泉模型演化分析設(shè)計實現(xiàn)確認維護1990年B.H.Sollers和J.M.Edwards提出主要用于采用面向?qū)ο蠹夹g(shù)的項目噴泉體現(xiàn)迭代和無間隙的特征軟件的某些部分常常被重復工作多次,相關(guān)對象在每次迭代中隨之加入漸進的軟件成分在分析、設(shè)計、實現(xiàn)等各項活動之間無明顯邊界8.噴泉模型演化分析設(shè)計實現(xiàn)確認維護1990年B.H.So9.構(gòu)件集成模型

構(gòu)件庫問題域識別構(gòu)件查找構(gòu)件生成構(gòu)件組裝系統(tǒng)查到構(gòu)件未查到構(gòu)件模型要點:?基于軟件復用性?形成統(tǒng)一開發(fā)過程?采用統(tǒng)一建模語言939.構(gòu)件集成模型構(gòu)件庫問題域識別構(gòu)件查找構(gòu)件生成構(gòu)件組裝系基本需求螺旋螺旋模型第n次迭代原型建造原型第n次迭代維護運行系統(tǒng)需求分析設(shè)計編碼測試132578614944GT4GT4GT10111213組合模型要點:幾種模型配合使用以一種模型為主,嵌入其它模型由開發(fā)者選擇開發(fā)路徑基本需求螺旋螺旋模型原型建造原型維護運行系統(tǒng)需求分析設(shè)計編碼?已經(jīng)有先例的項目?問題明確且時間緊的項目?規(guī)模較大且時間緊的項目?需求不確定的項目?帶有突破性技術(shù)的項目?客戶難以溝通和理解的項目?明顯復用潛力的項目項目適應模型的規(guī)律(一般情況)

項目情況適用模型瀑布模型增量模型演化模型原型模型螺旋模型原型模型構(gòu)件模型95?已經(jīng)有先例的項目項Rational統(tǒng)一過程RUPRUP是由IBM公司開發(fā)和維護的過程產(chǎn)品它提供了在開發(fā)機構(gòu)中分派任務和責任的方法它的目的是在可以預見的日程和預算前提下確保滿足最終用戶需求的高質(zhì)量軟件的產(chǎn)生Rational統(tǒng)一過程RUPRUP是由IBM公司開發(fā)和維護RUP的優(yōu)越性提高了團隊的生產(chǎn)力創(chuàng)建并維護模型為如何有效地使用UML提供了指導是一個可配置的過程吸收了許多在商業(yè)上得到證明的軟件開發(fā)的最佳實踐經(jīng)驗RUP的優(yōu)越性提高了團隊的生產(chǎn)力RUP所吸收的最佳工程實踐經(jīng)驗迭代地開發(fā)軟件需求管理使用基于組件的體系結(jié)構(gòu)可視化的軟件建模驗證軟件質(zhì)量控制軟件的變化RUP所吸收的最佳工程實踐經(jīng)驗迭代地開發(fā)軟件RUP的二維結(jié)構(gòu)RUP的二維結(jié)構(gòu)軟件工程方法學

通常把在軟件生命周期全過程中使用的一整套技術(shù)的集合稱為方法學(methodology),也稱為范型(paradigm)。軟件工程方法學包括三個要素,這就是方法、工具和過程。目前使用得最廣泛的軟件工程方法學,分別是傳統(tǒng)方法學和面向?qū)ο蠓椒▽W。軟件工程方法學101結(jié)構(gòu)化方法PK面向?qū)ο蠓椒?3結(jié)構(gòu)化方法PK面向?qū)ο蠓椒?02結(jié)構(gòu)化方法PK面向?qū)ο蠓椒▊鹘y(tǒng)的結(jié)構(gòu)化開發(fā)方法是以功能分析和數(shù)據(jù)分析為基礎(chǔ),采用分解和抽象的方法找出軟件功能模塊及其之間的連接關(guān)系,并找出數(shù)據(jù)的表或視圖以及它們之間的關(guān)聯(lián)。但是,該方法使得人們對現(xiàn)實世界的認識與編程之間存在理解上的鴻溝,整個系統(tǒng)的變動和修改十分困難,不便于軟件重用,并且難以適應以突出控制特性的系統(tǒng)要求。44結(jié)構(gòu)化方法PK面向?qū)ο蠓椒▊鹘y(tǒng)的結(jié)構(gòu)化開發(fā)方法是以功103結(jié)構(gòu)化方法PK面向?qū)ο蠓椒嫦驅(qū)ο蠓椒ㄊ菑默F(xiàn)實世界中客觀存在的事物(即對象)出發(fā),盡可能地運用人類的自然思維方式來構(gòu)造軟件系統(tǒng)。它運用人類在日常的邏輯思維中經(jīng)常采用的思想方法與原則,例如抽象、分類、繼承、聚合、封裝等,將其貫穿于整個分析和設(shè)計過程,實現(xiàn)了客觀世界到計算機系統(tǒng)的平滑過渡,容易為人們所理解,并使得軟件的復用在面向?qū)ο蟮脑O(shè)計中成了自然而然的事情。45結(jié)構(gòu)化方法PK面向?qū)ο蠓椒嫦驅(qū)ο蠓椒ㄊ菑默F(xiàn)實世界中104什么是CASECASE(ComputerAidedSoftwareEngineering)計算機輔助軟件工程是一組工具和方法的集合,用于輔助軟件開發(fā)、維護、管理過程中的各項活動,促進軟件過程的工程化和自動化所有軟件工程方法都需要CASE的相應技術(shù)支持用于系統(tǒng)模型的圖形編輯器管理設(shè)計實體的數(shù)據(jù)字典生成用戶界面的GUI軟件支持程序糾錯的調(diào)試器代碼生成器…46什么是CASECASE(ComputerAided10

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論