第1章 軟件工程學(xué)概述.ppt_第1頁
第1章 軟件工程學(xué)概述.ppt_第2頁
第1章 軟件工程學(xué)概述.ppt_第3頁
第1章 軟件工程學(xué)概述.ppt_第4頁
第1章 軟件工程學(xué)概述.ppt_第5頁
已閱讀5頁,還剩73頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第1章軟件工程學(xué)概述 1 第1章軟件工程學(xué)概述 本章介紹了軟件 軟件危機(jī) 軟件工程 軟件生命周期以及軟件過程 第1章軟件工程學(xué)概述 2 本章目錄 I 1 1軟件1 1 1軟件的分類1 1 1 1按用途分類1 1 1 2按規(guī)模分類1 1 1 3按工作方式分類1 1 1 4按服務(wù)對象分類1 1 1 5按使用頻度分類1 1 1 6按失效的影響分類1 1 2軟件的特征1 1 3軟件的發(fā)展1 2軟件危機(jī)1 2 1軟件危機(jī)的定義1 2 2軟件危機(jī)的表現(xiàn)1 2 3產(chǎn)生軟件危機(jī)的原因1 2 4解決軟件危機(jī)的途徑 第1章軟件工程學(xué)概述 3 本章目錄 II 1 3軟件工程1 3 1軟件工程的定義1 3 2軟件工程的本質(zhì)特性1 3 3軟件工程的基本原理1 3 4軟件工程方法學(xué)1 3 4 1方法學(xué)的三要素1 3 4 2傳統(tǒng)方法學(xué)1 3 4 3面向?qū)ο蠓椒▽W(xué)1 4軟件生命周期1 5軟件過程1 5 1軟件過程層次1 5 2軟件過程特點 本章目錄 III 1 5 3軟件過程模型1 5 3 1瀑布模型1 5 3 2原型模型1 5 3 3快速應(yīng)用開發(fā)模型1 5 3 4演化軟件過程模型1 5 3 4 1增量模型1 5 3 4 2螺旋模型1 5 3 5噴泉模型1 5 3 6Rational統(tǒng)一過程1 5 4軟件過程技術(shù)1 5 4 1重用技術(shù)1 5 4 2框架技術(shù)作業(yè) 第1章軟件工程學(xué)概述 4 第1章軟件工程學(xué)概述 5 1 1軟件 軟件是計算機(jī)系統(tǒng)中與硬件相互依存的另一部分 它是包括程序 數(shù)據(jù)及其相關(guān)文檔的完整集合 程序是為實現(xiàn)設(shè)計的功能和性能要求而編寫的指令序列 數(shù)據(jù)是使指令能夠正常操縱信息的數(shù)據(jù)結(jié)構(gòu) 文檔是與程序開發(fā) 維護(hù)和使用有關(guān)的圖文資料 第1章軟件工程學(xué)概述 6 1 1 1軟件的分類 軟件的分類沒有一個統(tǒng)一的嚴(yán)格的標(biāo)準(zhǔn) 通常針對不同角度可以對軟件進(jìn)行如下分類 按用途分類按規(guī)模分類按工作方式分類按服務(wù)對象分類按使用頻度分類按失效的影響分類 第1章軟件工程學(xué)概述 7 1 1 1 1按用途分類 I 1 系統(tǒng)軟件就一般情況來說 系統(tǒng)軟件是為其他軟件服務(wù)的軟件 系統(tǒng)軟件與計算機(jī)硬件交互頻繁 處理大量的確定或不確定的復(fù)雜數(shù)據(jù) 往往需要具有多用戶支持 資源精細(xì)調(diào)度 并發(fā)操作管理 多種外部設(shè)備接口支持等項功能 2 實時軟件管理 分析 控制現(xiàn)實世界中所發(fā)生的事件的軟件稱為實時軟件 一般有數(shù)據(jù)采集 數(shù)據(jù)分析 輸出控制等三方面的功能 實時軟件需要保持一個現(xiàn)實任務(wù)可以接受的響應(yīng)時間 即必須保證能夠在嚴(yán)格限定的時間范圍內(nèi)對輸入做出響應(yīng) 第1章軟件工程學(xué)概述 8 1 1 1 1按用途分類 II 3 商業(yè)管理軟件商業(yè)信息處理是最大的軟件應(yīng)用領(lǐng)域 包括常規(guī)的數(shù)據(jù)處理軟件和一些交互式的計算處理 如POS軟件 軟件 它的基本功能是將已有的數(shù)據(jù)重新構(gòu)造 變換成一種可以輔助商業(yè)操作和管理決策的形式 在這個過程中 幾乎都要涉及到對于大型數(shù)據(jù)庫的訪問 各類管理信息系統(tǒng) MIS 企業(yè)資源計劃 ERP 客戶關(guān)系管理 CRM 等都是典型的商業(yè)管理軟件 第1章軟件工程學(xué)概述 9 1 1 1 1按用途分類 III 4 工程與科學(xué)計算軟件此類軟件的特征是要實現(xiàn)特定的 數(shù)值分析 算法 例如 離散傅立葉變換 有限元分析 演化計算等等 CAD CAM軟件一般也可以歸屬到這一類型中來 5 嵌入式軟件 駐留在專用智能產(chǎn)品的內(nèi)存中 用于控制這些產(chǎn)品進(jìn)行正常工作 完成很有限 很專業(yè)的功能的軟件 例如各類智能檢測儀表 數(shù)碼相機(jī) 移動電話 微波爐等智能產(chǎn)品都必須在嵌入式軟件的支持下才能正常工作 第1章軟件工程學(xué)概述 10 1 1 1 1按用途分類 IV 6 人工智能軟件利用非數(shù)值算法去解決復(fù)雜問題的軟件 各類專家系統(tǒng) 模式識別軟件 人工神經(jīng)網(wǎng)絡(luò)軟件都屬于人工智能軟件 7 個人計算機(jī)軟件文字處理系統(tǒng) 電子表格 游戲娛樂軟件等等 第1章軟件工程學(xué)概述 11 1 1 1 2按規(guī)模分類 第1章軟件工程學(xué)概述 12 1 1 1 3按工作方式分類 1 實時處理軟件在事件或數(shù)據(jù)產(chǎn)生時 立即予以處理 并及時反饋信號 控制需要監(jiān)測和控制的過程的軟件 2 分時軟件允許多個聯(lián)機(jī)用戶同時使用計算機(jī) 系統(tǒng)把處理機(jī)時間輪流分配給各聯(lián)機(jī)用戶 使各用戶都感到只是自己在使用計算機(jī)的軟件 3 交互式軟件能實現(xiàn)人機(jī)通信的軟件 4 批處理軟件最傳統(tǒng)的工作方式 把一組輸入作業(yè)或一批數(shù)據(jù)以成批處理的方式一次運(yùn)行 按順序逐個處理完的軟件 第1章軟件工程學(xué)概述 13 1 1 1 4按服務(wù)對象分類 1 項目軟件也稱定制軟件 是受某個特定客戶 或少數(shù)客戶 的委托 由一個或多個軟件開發(fā)機(jī)構(gòu)在合同的約束下開發(fā)出來的軟件 2 產(chǎn)品軟件是由軟件開發(fā)機(jī)構(gòu)開發(fā)出來直接提供給市場 或是為千百個用戶服務(wù)的軟件 這是一些服務(wù)于多個目的及多個用戶的軟件 第1章軟件工程學(xué)概述 14 1 1 1 5按使用頻度分類 1 有些軟件開發(fā)出來僅供一次使用 例如 人口普查軟件 工業(yè)普查軟件 由于若干年才進(jìn)行一次普查 前些年開發(fā)的軟件在若干年以后很難適用 2 有些統(tǒng)計資料或試驗數(shù)據(jù)須按年度做統(tǒng)計分析 相應(yīng)的軟件每年運(yùn)行一次 3 有些軟件需要每天運(yùn)行 對信息進(jìn)行及時處理 例如 天氣預(yù)報軟件等 第1章軟件工程學(xué)概述 15 1 1 1 6按失效的影響分類 工作在不同領(lǐng)域的軟件 適應(yīng)其不同的需要 在運(yùn)行中對可靠性的要求也不同 1 有些軟件如果在工作中出現(xiàn)故障 造成軟件失效 可能給軟件整個系統(tǒng)帶來的影響不大 2 有些軟件如果在工作中出現(xiàn)故障 造成軟件失效 可能釀成災(zāi)難性的后果 例如 航空航天控制軟件等 第1章軟件工程學(xué)概述 16 1 1 2軟件的特征 I 軟件是邏輯的而不是物理的 具有與硬件完全不同的特征 1 軟件是一種邏輯實體 具有抽象性 軟件被保存在媒體介質(zhì)上 無法直接看到軟件的形態(tài) 具有明顯的非可視特征 2 軟件的生產(chǎn)與硬件不同 相同點 兩者都能夠通過良好的設(shè)計獲得高質(zhì)量的產(chǎn)品 不同點 硬件在批量制造過程中仍然可能引入質(zhì)量問題 這種情況對于軟件而言幾乎不存在 軟件的批量制造過程只是簡單的拷貝 復(fù)制 軟件的成本集中在開發(fā)過程上 而硬件生產(chǎn)的成本更多地表現(xiàn)在原材料消耗上 第1章軟件工程學(xué)概述 17 1 1 2軟件的特征 II 3 軟件產(chǎn)品不會 磨損 硬件的故障多來自外在條件導(dǎo)致的 磨損 或 老化 而軟件的故障無一例外的是在設(shè)計開發(fā)過程中留有隱患 硬件的故障可以通過簡單的更換部件解決 而軟件的故障必須通過全面的軟件維護(hù)活動才有望克服 同時 不完善的維護(hù)活動又可能在軟件中注入新的故障 導(dǎo)致軟件質(zhì)量的 退化 軟件故障的修復(fù)要比硬件故障的修復(fù)復(fù)雜得多 因此 衡量軟件產(chǎn)品質(zhì)量的一個重要指標(biāo)就是它的 可維護(hù)性 第1章軟件工程學(xué)概述 18 1 1 2軟件的特征 III 軟件 硬件產(chǎn)品失效率曲線 如下圖所示 硬件 軟件 第1章軟件工程學(xué)概述 19 1 1 3軟件的發(fā)展 I 自從20世紀(jì)40年代第一臺計算機(jī)問世以來 就有了 程序 的概念 可以認(rèn)為它是軟件的前身 軟件的發(fā)展經(jīng)歷了以下三個階段 20世紀(jì)50 60年代 程序設(shè)計階段20世紀(jì)60 70年代 程序系統(tǒng)階段20世紀(jì)70年代以后 軟件工程階段 第1章軟件工程學(xué)概述 20 1 1 3軟件的發(fā)展 II 計算機(jī)軟件發(fā)展的三個階段及其特點如下表 第1章軟件工程學(xué)概述 21 1 1 3軟件的發(fā)展 III 第1章軟件工程學(xué)概述 22 1 2軟件危機(jī) 隨著軟件數(shù)量的飛速增長 如何維護(hù)應(yīng)用中的大量現(xiàn)有軟件 已經(jīng)成為計算機(jī)應(yīng)用系統(tǒng)進(jìn)一步發(fā)展的瓶頸 1968年 北大西洋公約組織的計算機(jī)科學(xué)家們在聯(lián)邦德國召開的國際會議上討論了軟件危機(jī)問題 正是由于軟件危機(jī)帶來的嚴(yán)重問題 也是在這個會議上 提出了 軟件工程 這個名詞 導(dǎo)致了一門新的工程學(xué)科的正式誕生 第1章軟件工程學(xué)概述 23 1 2 1軟件危機(jī)的定義 定義 所謂軟件危機(jī) 就是指在軟件開發(fā)和軟件維護(hù)過程中所存在的一系列嚴(yán)重問題 軟件工程概念的提出 正是為了克復(fù)軟件危機(jī) 第1章軟件工程學(xué)概述 24 1 2 2軟件危機(jī)的表現(xiàn) I 具體地說 軟件危機(jī)具有如下一些表現(xiàn) 1 軟件開發(fā)沒有真正的計劃性 對軟件開發(fā)進(jìn)度和軟件開發(fā)成本的估計常常很不準(zhǔn)確 計劃的制定帶有很大的盲目因素 因此工期超出 成本失控的現(xiàn)象經(jīng)常困擾著軟件開發(fā)者 2 對于軟件需求信息的獲取常常不充分 軟件產(chǎn)品往往不能真正地滿足用戶的實際需求 3 缺乏良好的軟件質(zhì)量評測手段 從而導(dǎo)致軟件產(chǎn)品的質(zhì)量常常得不到保證 4 對于軟件的可理解性 可維護(hù)性認(rèn)識不夠 軟件的可復(fù)用性 可維護(hù)性不如人意 第1章軟件工程學(xué)概述 25 1 2 2軟件危機(jī)的表現(xiàn) II 5 軟件開發(fā)過程沒有實現(xiàn) 規(guī)范化 缺乏必要的文檔資料或者文檔資料不合格 不準(zhǔn)確 難以進(jìn)行專業(yè)維護(hù) 6 軟件開發(fā)的人力成本持續(xù)上升 例如 美國在1995年的軟件開發(fā)成本已經(jīng)占到了計算機(jī)系統(tǒng)成本的90 計算機(jī)系統(tǒng)硬件 軟件成本比例變化 如下圖所示 第1章軟件工程學(xué)概述 26 1 2 2軟件危機(jī)的表現(xiàn) III 7 缺乏自動化的軟件開發(fā)技術(shù) 軟件開發(fā)的生產(chǎn)率依然低下 遠(yuǎn)遠(yuǎn)滿足不了急劇增長的軟件需求 下圖展示了 軟件技術(shù)的發(fā)展落后于需求 的情況 第1章軟件工程學(xué)概述 27 1 2 3產(chǎn)生軟件危機(jī)的原因 I 產(chǎn)生軟件危機(jī)的原因可以歸納為主 客觀兩個方面 客觀原因 1 軟件生產(chǎn)過程和產(chǎn)品都具有明顯的 不可視 特征 結(jié)果 軟件不同于硬件 其質(zhì)量較難進(jìn)行先期評價 對軟件開發(fā)過程進(jìn)行管理和控制也比較困難 解決 在軟件工程的早期 制定詳細(xì)的開發(fā)計劃并且進(jìn)行全程跟蹤調(diào)控 對于所有的階段產(chǎn)品和階段工作進(jìn)展進(jìn)行技術(shù)審查和管理復(fù)審 可望在一定程度上克服 開發(fā)過程不可視 造成的消極影響 2 軟件維護(hù)相對困難 原因 較硬件來說 軟件維護(hù)過程不是簡單地更換損壞部件那樣容易 解決 利用足夠的文檔資料使不可視的產(chǎn)品可視化 有助于提升軟件產(chǎn)品的可理解性和可維護(hù)性 第1章軟件工程學(xué)概述 28 1 2 3產(chǎn)生軟件危機(jī)的原因 II 主觀原因在計算機(jī)系統(tǒng)發(fā)展的早期 軟件開發(fā)主要基于軟件開發(fā)人員的 個人能力 軟件開發(fā)的 個體化 特點 主要表現(xiàn)為忽視軟件需求分析的重要性 忽視軟件的可理解性 文檔不完備 輕視軟件的可維護(hù)性 過分強(qiáng)調(diào)編碼技巧等等方面 在對用戶的需求沒有清楚的認(rèn)識時就倉促進(jìn)行程序編寫 最終必然會導(dǎo)致開發(fā)工作的失敗 第1章軟件工程學(xué)概述 29 1 2 4解決軟件危機(jī)的途徑 I 解決軟件危機(jī)的途徑可以從技術(shù)和管理兩方面來考慮 從管理層面考慮注意推廣和使用在實踐中總結(jié)出來的開發(fā)軟件的成功的技術(shù)和方法 注意積累軟件開發(fā)過程中的經(jīng)驗數(shù)據(jù)財富 其手段包括 建立適合于本組織的軟件工程規(guī)范 制定軟件開發(fā)中各個工作環(huán)節(jié)的流程文件 工作指南和階段工作產(chǎn)品模板 實施針對軟件開發(fā)全過程的計劃跟蹤和品質(zhì)管理活動 為每一項工程開發(fā)活動建立配置管理庫 實施嚴(yán)格的產(chǎn)品基線管理并建立組織的軟件過程數(shù)據(jù)庫和軟件財富庫 為各類員工及時提供必要的培訓(xùn) 第1章軟件工程學(xué)概述 30 1 2 4解決軟件危機(jī)的途徑 II 從技術(shù)角度考慮應(yīng)當(dāng)開發(fā)和使用更好的軟件開發(fā)工具 提高軟件開發(fā)效率和開發(fā)工作過程的規(guī)范化程度 常用的軟件開發(fā)工具包括 統(tǒng)一建模語言 UML 各種配置管理工具缺陷管理工具自動測試工具計算機(jī)輔助軟件工程 CASE 第1章軟件工程學(xué)概述 31 1 3軟件工程 1968年 北大西洋公約組織的計算機(jī)科學(xué)家在原聯(lián)邦德國召開國際會議 首次提出 軟件工程 這一術(shù)語 軟件工程的基本思路 針對軟件危機(jī)的嚴(yán)峻形勢 把在其他工程領(lǐng)域中行之有效的一些工程學(xué)知識運(yùn)用到軟件開發(fā)過程中來 從管理和技術(shù)兩個方面研究如何更好地開發(fā)和維護(hù)計算機(jī)軟件 軟件工程的核心思想 采用工程的概念 原理 技術(shù)和方法來開發(fā)和維護(hù)軟件 把經(jīng)過實踐考驗而證明是正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來 從而大大提高軟件開發(fā)的成功率和生產(chǎn)率 簡單地說 軟件工程是指導(dǎo)軟件開發(fā)和維護(hù)的工程學(xué)科 第1章軟件工程學(xué)概述 32 1 3 1軟件工程的定義 IEEE的綜合定義 1 將系統(tǒng)化的 規(guī)范的 可度量的方法應(yīng)用于軟件的開發(fā) 運(yùn)行和維護(hù)過程 即將工程化方法應(yīng)用于軟件開發(fā)與維護(hù)過程中 2 對上述方法的研究 其他定義 運(yùn)用現(xiàn)代科學(xué)技術(shù)知識來設(shè)計并構(gòu)造計算機(jī)程序及為開發(fā) 運(yùn)行和維護(hù)這些程序所必需的相關(guān)文件資料 Boehm 軟件工程是開發(fā) 運(yùn)行 維護(hù)和修復(fù)軟件的系統(tǒng)方法 IEEE于1983年 建立并使用完善的工程化原則 以較經(jīng)濟(jì)的手段獲得能在實際機(jī)器上有效運(yùn)行的可靠軟件的一系列方法 FritzBauer 1 3 2軟件工程的本質(zhì)特性 軟件工程的本質(zhì)特性包括 1 軟件工程關(guān)注于大型程序的構(gòu)造 2 軟件工程的中心課題是控制復(fù)雜性 3 軟件經(jīng)常變化 4 開發(fā)軟件的效率非常重要 5 和諧地合作是開發(fā)軟件的關(guān)鍵 6 軟件必須有效地支持它的用戶 7 在軟件工程領(lǐng)域中通常由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品 第1章軟件工程學(xué)概述 33 第1章軟件工程學(xué)概述 34 1 3 3軟件工程的基本原理 著名軟件工程專家B W Boehm于1983年提出了軟件工程的七項基本原理 1 用分階段的生命周期計劃嚴(yán)格管理軟件工程過程 2 堅持在軟件工程過程中進(jìn)行階段評審 3 實行嚴(yán)格的產(chǎn)品控制 4 采用現(xiàn)代的開發(fā)技術(shù)進(jìn)行軟件的設(shè)計與開發(fā) 5 工作結(jié)果應(yīng)當(dāng)是能夠清楚地審查的 6 開發(fā)小組的人員應(yīng)該 少而精 7 承認(rèn)不斷改進(jìn)軟件工程實踐的必要性 這七條原則是互相獨立的 缺一不可的 完備的最小集合 1 3 4軟件工程方法學(xué) 概念 通常把軟件生命周期全過程中使用的一整套技術(shù)方法的集合稱為方法學(xué) methodology 也稱為泛型 paradigm 第1章軟件工程學(xué)概述 35 第1章軟件工程學(xué)概述 36 1 3 4 1方法學(xué)的三要素 軟件工程方法學(xué)包括以下三個要素 方法為軟件開發(fā)提供了 如何做某項工作 的技術(shù)指南 使得整個開發(fā)過程的每一種階段任務(wù)都能夠 有章可循 工具為軟件工程方法提供了自動的或半自動的軟件支撐環(huán)境 例如 計算機(jī)輔助軟件工程 CASE 過程將軟件工程的方法和工具綜合起來以達(dá)到合理 及時地進(jìn)行計算機(jī)軟件開發(fā)的目的 軟件工程過程可以被理解為軟件工程的工藝路線 1 3 4 2傳統(tǒng)方法學(xué) 傳統(tǒng)方法學(xué)也稱為生命周期方法學(xué)或結(jié)構(gòu)化泛型 特點 1 傳統(tǒng)方法學(xué)采用結(jié)構(gòu)化技術(shù) 結(jié)構(gòu)化分析 結(jié)構(gòu)化設(shè)計和結(jié)構(gòu)化實現(xiàn) 來完成軟件開發(fā)的各項任務(wù) 并使用適當(dāng)?shù)能浖ぞ呋蜍浖こ汰h(huán)境來支持結(jié)構(gòu)化技術(shù)的應(yīng)用 2 傳統(tǒng)方法學(xué)把軟件生命周期的全過程依次劃分為若干個階段 然后順序地完成每個階段的任務(wù) 第1章軟件工程學(xué)概述 37 1 3 4 3面向?qū)ο蠓椒▽W(xué) 傳統(tǒng)方法學(xué)的不足 傳統(tǒng)方法學(xué)要么面向行為 即對數(shù)據(jù)的操作 要么面向數(shù)據(jù) 還沒有既面向數(shù)據(jù)又面向行為的結(jié)構(gòu)化技術(shù) 面向?qū)ο蠓椒▽W(xué)的特點 面向?qū)ο蠓椒▽W(xué)是一種以數(shù)據(jù)為主線 把數(shù)據(jù)和對數(shù)據(jù)的操作緊密地結(jié)合起來的方法 面向?qū)ο蠓椒▽W(xué)的四個要點 1 把對象 object 作為融合了數(shù)據(jù)及在數(shù)據(jù)上的操作行為的統(tǒng)一的軟件結(jié)構(gòu) 2 把所有對象都劃分成類 class 3 按照父類 或稱基類 與子類 或稱派生類 的關(guān)系 把若干個相關(guān)類組成一個層次結(jié)構(gòu)的系統(tǒng) 也稱類等級 4 對象彼此間僅能通過發(fā)送消息相互聯(lián)系 第1章軟件工程學(xué)概述 38 第1章軟件工程學(xué)概述 39 1 4軟件生命周期 I 概念 軟件產(chǎn)品從策劃 定義 開發(fā) 使用與維護(hù)直到最后廢棄所經(jīng)歷的整個時期稱為軟件的生命周期 軟件生命周期分為以下三個階段 1 軟件定義 階段主要進(jìn)行軟件目標(biāo)的策劃 可行性研究和軟件的需求分析工作 通過和用戶多次交流 在所要開發(fā)的軟件必須 作什么 方面和用戶達(dá)成一致 本階段是提高軟件質(zhì)量 降低軟件成本 保證開發(fā)進(jìn)度的關(guān)鍵環(huán)節(jié) 2 軟件開發(fā) 階段主要對軟件的體系架構(gòu) 數(shù)據(jù)結(jié)構(gòu)和主要算法進(jìn)行設(shè)計和編碼實現(xiàn) 對于編碼結(jié)果 還要按照規(guī)范進(jìn)行測試后 才能最終交付使用 統(tǒng)計數(shù)據(jù)表明 在典型的軟件工程過程中 編碼工作量大約只占軟件開發(fā)全部工作量的15 20 第1章軟件工程學(xué)概述 40 1 4軟件生命周期 II 3 運(yùn)行與維護(hù) 階段原因 在軟件運(yùn)行過程中 分析和設(shè)計階段的一些遺留缺陷可能會逐步暴露 運(yùn)行環(huán)境的演變也會對運(yùn)行中的軟件提出變更要求 用戶新需求的提出常常要求擴(kuò)充現(xiàn)有軟件的功能或者改進(jìn)其性能 本在軟件生命周期中占據(jù)的比例最大 針對不同的需求 維護(hù)工作一般可以分為糾錯性維護(hù) 適應(yīng)性維護(hù) 擴(kuò)充性維護(hù)和預(yù)防性維護(hù)等不同類型 作為軟件產(chǎn)品 還應(yīng)當(dāng)有一個完整的配置 應(yīng)當(dāng)包括完整 準(zhǔn)確 翔實的文檔資料 主要的文檔包括 需求規(guī)格說明書 體系結(jié)構(gòu)設(shè)計說明書 詳細(xì)設(shè)計說明書 安裝手冊 操作手冊 系統(tǒng)管理員手冊 等 第1章軟件工程學(xué)概述 41 1 4軟件生命周期 III 值得注意的嚴(yán)重問題是 在軟件開發(fā)的不同階段進(jìn)行修改所付出的代價是極其不同的 根據(jù)美國一些軟件公司的統(tǒng)計資料 軟件開發(fā)后期引入一個變動比在早期引入相同變動所需付出的代價高2 3個數(shù)量級 下圖是 變更代價隨時間變化的趨勢示意 對該問題作了定性的描述 第1章軟件工程學(xué)概述 42 1 4軟件生命周期 IV 美國貝爾實驗室對該問題統(tǒng)計得出了定量的結(jié)果 下圖描述了 改正一個問題需要付出的代價 1 5軟件過程 軟件工程過程是開發(fā)或維護(hù)軟件及其相關(guān)產(chǎn)品的一系列活動 軟件工程過程是一個軟件開發(fā)組織針對某一類軟件產(chǎn)品為自己規(guī)定的工作步驟 它應(yīng)當(dāng)是科學(xué)的 合理的 否則必將影響到軟件產(chǎn)品的質(zhì)量 第1章軟件工程學(xué)概述 43 軟件工程 第2章軟件工程過程模型 黃進(jìn) 44 1 5 1軟件過程層次 I 軟件工程是一種層次化的技術(shù) 軟件工程過程層次圖 如下圖所示 它包括四個層次 1 質(zhì)量焦點軟件工程必須以有組織的軟件質(zhì)量保證為基礎(chǔ) 對質(zhì)量的關(guān)注構(gòu)成了軟件工程的根基 軟件工程 第2章軟件工程過程模型 黃進(jìn) 45 1 5 1軟件過程層次 II 2 過程層軟件工程的基層 定義了一組關(guān)鍵過程域 KPAs 目前比較流行的軟件工程過程包括 RUP過程 極限 XP 過程 敏捷軟件過程 AgileS P 等等 3 方法層涵蓋了需求分析 設(shè)計 編程 測試 維護(hù)等各個環(huán)節(jié) 給出了完成這些任務(wù)在技術(shù)上應(yīng)當(dāng) 如何做 的方法 4 工具層對過程和方法提供支持 使得工程活動 管理活動得以自動 半自動的進(jìn)行 目前廣為使用的工具包括 數(shù)據(jù)庫建模工具Erwin 面向?qū)ο蟮慕9ぞ逺ationnalRose 配置管理工具 計算機(jī)輔助軟件工程 CASE 等 軟件工程 第2章軟件工程過程模型 黃進(jìn) 46 1 5 2軟件過程特點 一個良好的軟件工程過程應(yīng)當(dāng)具備如下特點 1 易理解性 2 可見性每個過程活動都以得到明確的結(jié)果而告終 保證過程的進(jìn)展對外可見 3 可支持性容易得到CASE工具的支持 4 可接受性比較容易被軟件工程師接受和使用 5 可靠性不會出現(xiàn)過程錯誤 或者出現(xiàn)的過程錯誤能夠在產(chǎn)品出錯之前被發(fā)現(xiàn) 6 健壯性不受意外發(fā)生問題的干擾 7 可維護(hù)性過程可以根據(jù)開發(fā)組織的需求的改變而改進(jìn) 8 高效率從給出軟件規(guī)格說明起 就能夠較快地完成開發(fā)而交付使用 軟件工程 第2章軟件工程過程模型 黃進(jìn) 47 1 5 3軟件過程模型 I 概念 在一個具體的實際工程活動中 軟件工程師必須設(shè)計 提煉出一個工程開發(fā)策略 用以覆蓋軟件過程中的基本階段 確定所涉及的過程 方法 工具 這種策略常被稱為 軟件工程過程模型 從宏觀上來看 所有的軟件開發(fā)過程都可以看成是一個循環(huán)解決問題的過程 如下圖 問題循環(huán)解決的各個階段 所示 軟件工程 第2章軟件工程過程模型 黃進(jìn) 48 1 5 3軟件過程模型 II 循環(huán)解決問題的過程包括四個截然不同的階段 狀態(tài)描述表示了事物的當(dāng)前狀態(tài) 問題定義標(biāo)識了要解決的特定問題 技術(shù)開發(fā)通過應(yīng)用某些技術(shù)來解決問題 方案綜述提交解決結(jié)果 如文檔 程序 數(shù)據(jù) 新的商業(yè)功能 新產(chǎn)品 給那些從一開始就需要方案的人 軟件工程 第2章軟件工程過程模型 黃進(jìn) 49 1 5 3軟件過程模型 III 循環(huán)解決問題的過程可以應(yīng)用于軟件工程的多個不同開發(fā)級別 階段 上 循環(huán)解決問題過程的每一個階段又包含一個相同的循環(huán)解決問題的過程 如下圖 問題循環(huán)解決階段中的階段 所示 軟件工程 第2章軟件工程過程模型 黃進(jìn) 50 1 5 3軟件過程模型 IV 想要清楚地劃分循環(huán)解決問題的四個階段的活動是很困難的 所有四個活動階段在某個細(xì)節(jié)的級別上都是同時存在的 軟件工程專家致力于將本質(zhì)上無序的活動有序化 從而產(chǎn)生了很多軟件過程模型 包括 瀑布模型原型模型快速應(yīng)用開發(fā)模型演化軟件過程模型增量模型螺旋模型噴泉模型Rational統(tǒng)一過程敏捷過程與極限編程微軟過程 軟件工程 第2章軟件工程過程模型 黃進(jìn) 51 1 5 3 1瀑布模型 I 線性順序模型有時也稱為 線性順序模型 它表示了軟件開發(fā)系統(tǒng)的 順序的方法 如下圖所示 特點 從系統(tǒng)級開始 隨后是分析 設(shè)計 編碼 測試和維護(hù) 每一步的工作都必須以前一階段的輸出為輸入 這種特征會導(dǎo)致工作中發(fā)生 阻塞 狀態(tài) 雖然瀑布模型支持帶反饋的循環(huán) 但大多數(shù)使用者均把它視為是嚴(yán)格線性的 軟件工程 第2章軟件工程過程模型 黃進(jìn) 52 1 5 3 1瀑布模型 II 優(yōu)點 線性順序模型是最早 也曾經(jīng)是應(yīng)用最廣泛的軟件工程過程模型 提供了一個模板 使得分析 設(shè)計 編碼 測試與維護(hù)工作可以在該模板的指導(dǎo)下有序地展開 避免了軟件開發(fā) 維護(hù)過程中的隨意狀態(tài) 缺點 不適應(yīng)需求經(jīng)常發(fā)生變更的環(huán)境 線性順序模型能夠允許迭代 但卻是間接的迭代 用戶往往難以在一開始就明確地提出所有的需求 使模型的第一步輸入就得不到滿足 某些項目組成員不得不等待組內(nèi)其他成員先完成前驅(qū)任務(wù)才可能展開自己的工作 有時這種等待時間可能會超過實際花在工作上的時間 對于需求確定 變更相對較少的項目 線性順序模型仍然是一種可以考慮采取的過程模型 軟件工程 第2章軟件工程過程模型 黃進(jìn) 53 1 5 3 2原型模型 I 概念 在用戶不能準(zhǔn)確 全面地描述其需求 開發(fā)者不能確定所選用算法的有效性或人機(jī)交互界面的形式時 可以建立一個簡化了的樣品程序并使之運(yùn)行 引導(dǎo)用戶通過對樣品運(yùn)行情況的觀察 進(jìn)一步明確需求或驗證算法的正確性 這種開發(fā)模式就稱之為原型模型 原型模型 示意圖如下圖所示 軟件工程 第2章軟件工程過程模型 黃進(jìn) 54 1 5 3 2原型模型 II 特點 在開發(fā)者和用戶確定了軟件的總體目標(biāo)并標(biāo)識出已知的需求后 進(jìn)行快速設(shè)計并編碼實現(xiàn)原型 快速設(shè)計和建造通常集中在用戶可見的部分 如輸入方式 輸出界面 原型的建造是一個多次迭代的過程 原型的建造僅僅是為了定義需求 之后就必須被全部或部分拋棄 故又稱為 拋棄原型模型 必須有快速開發(fā)工具可供使用 軟件工程 第2章軟件工程過程模型 黃進(jìn) 55 1 5 3 3快速應(yīng)用開發(fā)模型 I 快速應(yīng)用開發(fā) RAD 模型強(qiáng)調(diào)極端的開發(fā)周期 通過使用基于構(gòu)件的建造方法達(dá)到快速開發(fā)的效果 RAD過程主要用于信息應(yīng)用軟件的開發(fā) 如下圖 軟件工程 第2章軟件工程過程模型 黃進(jìn) 56 1 5 3 3快速應(yīng)用開發(fā)模型 II RAD包含如下五個開發(fā)階段 1 業(yè)務(wù)建模業(yè)務(wù)活動中的信息流被模型化 此階段說明什么信息驅(qū)動業(yè)務(wù)流程 生成什么信息 誰負(fù)責(zé)生成該信息 該信息流向何處 誰處理它等 2 數(shù)據(jù)建模業(yè)務(wù)建模階段定義的一部分信息流被精化 形成一組支持該業(yè)務(wù)所需的數(shù)據(jù)對象 此階段標(biāo)識出每個數(shù)據(jù)對象的特征屬性 定義這些對象之間的關(guān)系 3 處理建模數(shù)據(jù)建模階段定義的數(shù)據(jù)對象變換成為要完成一項業(yè)務(wù)功能所需的信息流 此階段創(chuàng)建處理描述以便增加 修改 刪除或獲取某個數(shù)據(jù)對象 軟件工程 第2章軟件工程過程模型 黃進(jìn) 57 1 5 3 3快速應(yīng)用開發(fā)模型 III 4 應(yīng)用生成RAD過程不是采用傳統(tǒng)的第三代程序設(shè)計語言來創(chuàng)建軟件 而主要是復(fù)用已有的程序構(gòu)件或是創(chuàng)建可復(fù)用的構(gòu)件 在所有情況下 均使用自動化工具輔助軟件建造 5 測試及反復(fù)RAD過程強(qiáng)調(diào)復(fù)用 許多構(gòu)件是已經(jīng)測試過的 減少了測試工作量 新創(chuàng)建構(gòu)件 接口都必須測試到 采用RAD模型時 系統(tǒng)的每一個主要功能部件可以由一個單獨的RAD工作組完成 最后再將所有的部件集成起來形成完整的軟件 軟件工程 第2章軟件工程過程模型 黃進(jìn) 58 1 5 3 3快速應(yīng)用開發(fā)模型 IV 特點 RAD模型強(qiáng)調(diào)可復(fù)用程序構(gòu)件的開發(fā) 支持多小組并行工作以縮短整體工期 缺點 如果一個系統(tǒng)難以被適當(dāng)?shù)啬K化 構(gòu)件的復(fù)用和建造就會出現(xiàn)問題 RAD模型依賴于構(gòu)件復(fù)用 它不適用于技術(shù)風(fēng)險很高的 要采用很多新技術(shù)的項目 對于具有高性能需求的軟件 如果這種高性能必須通過對接口的反復(fù)調(diào)整才能實現(xiàn) 那么 采用RAD模型也就有可能失敗 軟件工程 第2章軟件工程過程模型 黃進(jìn) 59 1 5 3 4演化軟件過程模型 演化軟件過程模型的基本思想是 分期完成 分步提交 可以先提交一個有限功能的版本 再逐步地使其完善 演化軟件過程模型的主要特點是利用 迭代 方法 使工程師們漸進(jìn)地開發(fā) 生產(chǎn)出逐步完善的軟件版本 在商業(yè)軟件開發(fā)實踐中 演化模型日益得到廣泛的應(yīng)用 演化軟件過程模型可細(xì)分為以下兩種模型 增量模型螺旋模型 軟件工程 第2章軟件工程過程模型 黃進(jìn) 60 1 5 3 4 1增量模型 I 增量模型實際上是一個隨著日程 時間的進(jìn)展而交錯的線性序列集合 如下圖所示 軟件工程 第2章軟件工程過程模型 黃進(jìn) 61 1 5 3 4 1增量模型 II 特點 每一個線性序列產(chǎn)生一個軟件的可發(fā)布的 增量 所有的增量都能夠結(jié)合到原型模型中去 第一個增量模型往往是核心部分的產(chǎn)品 它實現(xiàn)了軟件的基本需求 核心產(chǎn)品經(jīng)用戶使用或復(fù)審評估后得出的結(jié)果成為下一個增量開發(fā)的依據(jù) 每一個增量在前一個增量發(fā)布后迭代地進(jìn)行 直到產(chǎn)生最終完善的產(chǎn)品 每一個增量發(fā)布為一個可操作的產(chǎn)品 稱為 產(chǎn)品擴(kuò)充迭代 其早期產(chǎn)品是最終產(chǎn)品的可拆卸版本 每一個版本都能夠提供給用戶實際使用 這也是它與原型模型不同之處 增量式的工程開發(fā)必須取得用戶的全面理解與支持 否則難以成功 軟件工程 第2章軟件工程過程模型 黃進(jìn) 62 1 5 3 4 2螺旋模型 I 螺旋模型被劃分為若干個框架活動 也稱框架任務(wù)區(qū)域 如下圖所示 軟件工程 第2章軟件工程過程模型 黃進(jìn) 63 1 5 3 4 2螺旋模型 II 框架活動包括 1 用戶通信建立開發(fā)者和用戶之間有效通信所需要的任務(wù) 2 計劃定義資源 進(jìn)度和其他項目相關(guān)信息所需要的任務(wù) 3 風(fēng)險分析評估技術(shù)的風(fēng)險及管理的風(fēng)險所需要的任務(wù) 4 工程建立應(yīng)用的一個或多個表示所需要的任務(wù) 5 建造及發(fā)布建造 測試 安裝和提供用戶支持所需要的任務(wù) 6 用戶評估基于在工程階段產(chǎn)生的或在安裝階段實現(xiàn)的軟件表示的評估 是獲得用戶反饋所必需的任務(wù) 1 5 3 4 2螺旋模型 III 第1章軟件工程學(xué)概述 64 軟件工程 第2章軟件工程過程模型 黃進(jìn) 65 1 5 3 4 2螺旋模型 IV 特點 軟件開發(fā)是一系列的增量發(fā)布 并不要求每一個增量都是可以運(yùn)行的程序 在早期的迭代中 發(fā)布的增量可以是一個紙上的模型或原型 在以后的迭代中產(chǎn)生更加完善的版本 這也是它與增量模型不同之處 每一個框架活動 任務(wù)區(qū)域 都需要應(yīng)用諸如軟件配置管理 軟件品質(zhì)保證等保護(hù)性活動 軟件工程項目組按照順時針方向沿螺旋移動 從核心開始 第一圈可能產(chǎn)生軟件規(guī)格說明書 第二圈可能開發(fā)出一個原型 隨后可能是軟件更完善的版本 需要用戶的充分理解和積極參與 需要使用專門的風(fēng)險評估技術(shù)以便識別風(fēng)險 防范風(fēng)險 特別適合于大型系統(tǒng)及軟件的開發(fā) 1 5 3 5噴泉模型 噴泉模型是典型的面向?qū)ο蟮能浖^程模型之一 1 噴泉 這個詞體現(xiàn)了面向?qū)ο筌浖_發(fā)過程迭代和無縫的特性 2 圓圈代表不同階段 3 圓圈相互重疊表示兩個活動之間存在交迭 4 一個階段內(nèi)的向下箭頭表示該階段內(nèi)的迭代 或求精 5 較小的圓圈代表維護(hù) 象征著采用面向?qū)ο蠓缎椭缶S護(hù)時間縮短了 6 中心垂線是一個線性過程 或采用快速原型模型 代表總目標(biāo) 第1章軟件工程學(xué)概述 66 1 5 3 6Rational統(tǒng)一過程 I Rational統(tǒng)一過程 RationalUnifiedProcess RUP 是由Rational軟件公司推出的一種完整而且完美的軟件過程 RUP總結(jié)了經(jīng)過多年商業(yè)化驗證的6條最有效的被稱為 最佳實踐 的軟件開發(fā)經(jīng)驗 1 迭代式開發(fā) 2 管理需求 3 使用基于構(gòu)件的體系結(jié)構(gòu) 4 可視化建模 5 驗證軟件質(zhì)量 6 控制軟件變更 第1章軟件工程學(xué)概述 67 1 5 3 6Rational統(tǒng)一過程 II RUP軟件開發(fā)生命周期是一個二維的生命周期模型 第1章軟件工程學(xué)概述 68 1 5 3 6Rational統(tǒng)一過程 III 注意 1 縱軸代表九個核心工作流 1 業(yè)務(wù)建模 深入了解使用目標(biāo)系統(tǒng)的機(jī)構(gòu)及其商業(yè)運(yùn)作 評估目標(biāo)系統(tǒng)對使用它的機(jī)構(gòu)的影響 2 需求 捕獲客戶的需求 并且使開發(fā)人員和用戶達(dá)成對需求描述的共識 3 分析與設(shè)計 把需求分析的結(jié)果轉(zhuǎn)化成分析模型和設(shè)計模型 4 實現(xiàn) 把設(shè)計模型轉(zhuǎn)換成實現(xiàn)結(jié)果 5 測試 檢查各個子系統(tǒng)的交互與集成 驗證所有需求是否都能被正確地實現(xiàn)了 識別 確認(rèn)缺陷并確保在軟件部署之前消除缺陷 6 部署 成功地生成目標(biāo)系統(tǒng)的可運(yùn)行的版本 并把軟件移交給最終用戶 7 配置與變更管理 跟蹤并維護(hù)在軟件開發(fā)過程中產(chǎn)生的所有制品的完整性和一致性 8 項目管理 提供項目管理框架 為軟件開發(fā)項目制定計劃 人員配備 執(zhí)行和監(jiān)控等方面的實用準(zhǔn)則 并為風(fēng)險管理提供框架 9 環(huán)境 向軟件開發(fā)機(jī)構(gòu)提供軟件開發(fā)環(huán)境 包括過程管理和工具支持 第1章軟件工程學(xué)概述 69 核心過程工作流程 核心支持工作流程 1 5 3 6Rational統(tǒng)一過程 IV 2 橫軸代表時間 包括四個階段 1 初始階段 建立業(yè)務(wù)模型 定義最終產(chǎn)品視圖 并且確定項目的范圍 2 精化階段 設(shè)計并確定系統(tǒng)的體系結(jié)構(gòu) 制定項目計劃 確定資源需求 3 構(gòu)建階段 開發(fā)出所有構(gòu)建和應(yīng)用程序 把它們集成為客戶需要的產(chǎn)品 并且詳盡地測試所有功能 4 移交階段 把開發(fā)出的產(chǎn)品提交給用戶使用 3 整個過程采用迭代式開發(fā) 1 每次迭代只考慮系統(tǒng)的一部分需求 針對這部分需求進(jìn)行分析 設(shè)計 實現(xiàn) 測試盒部署等工作 2 每次迭代都是在系統(tǒng)已完成部分的基礎(chǔ)上進(jìn)行的 每次給系統(tǒng)增加一些新的功能 如此循環(huán)往復(fù)地進(jìn)行下去 直至完成最終項目 3 RUP重復(fù)一系列組成軟件生命周期的循環(huán) 每次循環(huán)都經(jīng)歷一個完整的生命周期 每次循環(huán)結(jié)束都向用戶交付產(chǎn)品的一個可運(yùn)行的版本 4 每個階段又進(jìn)一步細(xì)分為一次或多次迭代過程 在生命周期中一次次地輪流訪問核心工作流程 但是 不同的迭代過程以不同的工作重點和強(qiáng)度對核心工作流程進(jìn)行訪問 第1章軟件工程學(xué)概述 70 軟件工程 第2章軟件工程過程模型 黃進(jìn) 71 1 5 4軟件過程技術(shù) 軟件工程過程采用過程管理工具來幫助組織 分析軟件過程 協(xié)調(diào) 組織工作任務(wù) 控制和監(jiān)管進(jìn)度以及管理技術(shù)質(zhì)量 這種方式稱為計算機(jī)輔助軟件工程 常用的過程技術(shù)工具包括 配置管理工具進(jìn)行配置管理和缺陷管理 自動測試工具進(jìn)行測試 統(tǒng)一建模語言UML進(jìn)行對象建模 分析與設(shè)計 Project軟件制訂和監(jiān)測項目計劃及其進(jìn)展 MSVisio軟件制訂流程圖 ER圖等 第四代技術(shù)通過開發(fā)者在較高的層次上說明軟件的某些特征 之后工具就能夠自動的根據(jù)說明生成源代碼等 軟件工程 第2章軟件工程過程模型 黃進(jìn) 72 1 5 4 1重用技術(shù) I 軟件重用是指在兩次或多次的軟件開發(fā)過程中重復(fù)使用相同或相似軟件元素的過程 軟件元素又稱為軟部件 包括 程序代碼測試用例設(shè)計文檔設(shè)計過程需求分析文檔領(lǐng)域知識 軟件工程 第2章軟件工程過程模型 黃進(jìn) 73 1 5 4 1重用技術(shù) II 知識重用使我們能夠高效率的開發(fā) 維護(hù)一個又一個的軟件項目 方法重用幫助我們有章可循的解決各類工程問題 成分重用使我們在需求分析 系統(tǒng)設(shè)計和編碼事項的過程中能夠事半功倍 它包括以下三個層次 分析結(jié)果重用在大部或局部

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論