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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

溫馨提示

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

最新文檔

評論

0/150

提交評論