第1章-軟件工程與軟件設計_第1頁
第1章-軟件工程與軟件設計_第2頁
第1章-軟件工程與軟件設計_第3頁
第1章-軟件工程與軟件設計_第4頁
第1章-軟件工程與軟件設計_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、軟件設計與體系結構主講教師:1第1章軟件工程與軟件設計n 1.1 軟件工程n 1.2 軟件生存周期n 1.3 軟件開發(fā)過程模型n 1.4 軟件設計n 1.5 軟件體系結構n 1.6 小結第1章軟件工程與軟件設計n以計算機為核心的信息社會n軟件是信息化的靈魂n以工程化方法和思想開發(fā)軟件n軟件設計是軟件開發(fā)過程中的核心活動之一1.1軟件工程n軟件危機:在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題n軟件設計:計算機軟件發(fā)展到一定階段,為了應對軟件危機n計算機軟件=程序+數(shù)據(jù)+文檔n計算機軟件是邏輯和智力產品,不是物理產品1.1軟件工程n 軟件的應用領域和分類系統(tǒng)軟件實時軟件嵌入式軟件科學和工

2、程計算軟件事物務理軟件人工智能軟件個人計算機軟件1.1軟件工程n軟件危機軟件危機是指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題。即包含兩方面的問題: (1)如何開發(fā)軟件 (2)如何維護軟件n軟件危機的原因軟件產品生產效率較低軟件供需失衡用戶需求不明確整個軟件開發(fā)過程缺乏正確的理論指導軟件產品的規(guī)模越來越大軟件產品開發(fā)的復雜度越來越高1.1軟件工程n 軟件工程軟件工程是指導計算機軟件開發(fā)和維護的工程學科;將系統(tǒng)的、規(guī)范的、可度量的工程化方法應用于軟件開發(fā)、運行和維護的全過程及上述方法的研究;是用工程、科學和數(shù)學的原則與方法研制、維護計算機軟件的有關技術和管理方法;n 軟件工程要素:方法

3、、工具、過程方法:為軟件開發(fā)提供了“如何做”的技術,是完成軟件工程項目的技術手段工具:人類在開發(fā)軟件的活動中智力和體力的擴展和延伸,為軟件工程方法提供自動或半自動的軟件支持環(huán)境過程:將方法和工具綜合起來以達到合理、及時地進行軟件開發(fā)的目的1.1軟件工程n 軟件工程的目標和原則在給定成本、進度的前提下,開發(fā)出具有可修改性、有效性、可靠性、可理解性、可維護性、可復用性、可適應性、可移植性、可跟蹤性并滿足用戶需求的軟件產品。抽象、信息隱藏、模塊化、局部化、一致性、完全性、可驗證性n目標可修改性有效性可靠性可理解性可維護性可復用性可適應性可移植性可追蹤性n抽象 采用分層次抽象,自頂向下、逐層細化的辦法

4、控制軟件開發(fā)過程的復雜性n信息隱蔽 將模塊設計成“黑箱”,實現(xiàn)的細節(jié)隱藏在模塊內部,不讓模塊的使用者直接訪問。這就是信息封裝,使用與實現(xiàn)分離的原則n模塊化 如 C 語言程序中的函數(shù)過程,C+ 語言程序中的類。模塊化有助于信息隱蔽和抽象,有助于表示復雜的系統(tǒng)。n局部化 要求在一個物理模塊內集中邏輯上相互關聯(lián)的計算機資源,保證模塊之間具有松散的耦合,模塊內部具有較強的內聚。這有助于控制解的復雜性n確定性 軟件開發(fā)過程中所有概念的表達應是確定的、無歧義性的、規(guī)范的。n一致性 整個軟件系統(tǒng)的各個模塊應使用一致的概念、符號和術語。程序內部接口應保持一致。軟件和硬件、操作系統(tǒng)的接口應保持一致。系統(tǒng)規(guī)格說明

5、與系統(tǒng)行為應保持一致。用于形式化規(guī)格說明的公理系統(tǒng)應保持一致n完全性 軟件系統(tǒng)不丟失任何重要成分,可以完全實現(xiàn)系統(tǒng)所要求功能的程度。為了保證系統(tǒng)的完備性,在軟件開發(fā)和運行過程中需要嚴格的技術評審。n可驗證性 開發(fā)大型的軟件系統(tǒng)需要對系統(tǒng)自頂向下、逐層分解。系統(tǒng)分解應遵循系統(tǒng)易于檢查、測試、評審的原則,以確保系統(tǒng)的正確性。軟件工程復雜問題子問題1子問題2子問題n程序1程序2程序n軟件系統(tǒng)解決原始問題 集成分解1.2 軟件生存周期nSoftware life cyclen軟件產品從形成概念開始,經過開發(fā)、使用和維護,直到最后退役的全過程稱為軟件生存周期n軟件有一個孕育、誕生、成長、成熟、衰亡的生存

6、過程。這個過程即為計算機軟件的生存周期n軟件定義-軟件開發(fā)-軟件使用和維護軟件定義(系統(tǒng)分析):可行性研究(軟件計劃)、需求分析軟件開發(fā)(系統(tǒng)設計):概要設計、詳細設計、軟件實現(xiàn) (編碼、單元測試)、軟件測試(組裝測試、確認測試)軟件使用、維護退役n可行性研究確定要開發(fā)軟件系統(tǒng)的總目標給出功能、性能、可靠性以及接口等方面的要求完成該軟件任務的可行性研究估計可利用的資源 、成本、效益、開發(fā)進度制定出完成開發(fā)任務的實施計劃,連同可行性研究報告,提交管理部門審查n需求分析對用戶提出的要求進行分析并給出詳細的定義編寫軟件需求說明書或系統(tǒng)功能說明書及初步的系統(tǒng)用戶手冊提交管理機構評審n 概要設計 把各項

7、需求轉換成軟件的體系結構。結構中每一組成部分都是意義明確的模塊,每個模塊都和某些需求相對應,編寫設計說明書,評審n 詳細設計 對每個模塊要完成的工作進行具體的描述,為源程序編寫打下基礎,編寫設計說明書,提交評審n 軟件構造把軟件設計轉換成計算機可以接受的程序代碼,即以某一種特定程序設計語言表示的“源程序清單”;程序應當是結構良好、清晰易讀的,且與設計相一致的。n 軟件測試單元測試,查找各模塊在功能和結構上存在的問題并加以糾正 集成測試,將已測試過的模塊按一定順序組裝測試確認測試,按規(guī)定的各項需求,逐項進行有效性確認測試,決定已開發(fā)的軟件是否合格,能否交付用戶使用n 使用與維護:在用戶特定的環(huán)境

8、中,在測試通過后移交用戶使用改正性維護:運行中發(fā)現(xiàn)軟件中的錯誤需要修正適應性維護:為了適應變化了的軟件工作環(huán)境,需做適當變更完善性維護:為了增強軟件的功能需做變更1.3 軟件開發(fā)過程模型n軟件開發(fā)過程模型 是跨越整個生存期的系統(tǒng)開發(fā)、運作和維護所實施的全部過程、活動和任務的結構框架 瀑布模型 原型模型 螺旋模型 統(tǒng)一軟件開發(fā)過程nW. W. Royce 1970 提出n瀑布模型,是既自頂向下結構化開發(fā)模型n優(yōu)點:奠定了軟件工程方法的基礎;流水依賴;便于分工協(xié)作;推遲現(xiàn)實;文檔易修改;有復審質量保證。n缺點:用戶需求明確困難;用戶見面晚;糾錯慢;難于克服系統(tǒng)分析員不懂專業(yè)領域的知識,用戶不懂計算

9、機的困難,成功率低。適合于系統(tǒng)要求明確的小系統(tǒng)。帶反饋的瀑布模型快速原型模型n rapid prototype modeln 根據(jù)用戶提出的軟件定義,快速的開發(fā)一個原型,在征求用戶對原型意見的過程中,再進一步修改、完善,直至達成一致。模擬軟件的人機界面開發(fā)一個原型,實現(xiàn)部分功能向用戶展示正在運行的類似軟件n 優(yōu)點:與用戶見面快;開發(fā)成功率高,適合于需求不確定的大系統(tǒng)。n 缺點:周期長,開發(fā)成本高??焖僭湍P吐菪P蚽 螺旋模型沿著螺線旋轉(一個螺旋式周期 ),在四個象限上分別表達四個方面的活動,即:n 制定計劃確定軟件目標,選定實施方案,弄清項目開發(fā)的限制,選定完成目標的策略n 風險分析分析

10、所選方案,考慮如何識別和消除風險,風險角度分析該策略n 實施工程實施軟件開發(fā),啟動一個開發(fā)階段 n 客戶評估評價前一步開發(fā)工作,提出修正建議,計劃下一輪的工作 n 特點瀑布模型+快速原型+風險分析迭代過程統(tǒng)一軟件開發(fā)過程(RUP, Rational Unified Process )是一套軟件工程過程,是一套軟件工程方法的框架,各個組織可根據(jù)自身的實際情況,以及項目規(guī)模對RUP進行裁剪和修改,以制定出合乎需要的軟件工程過程。n適合與統(tǒng)一建模語言(UML, Unified Model Language)結合起來使用n支持六大最佳軟件開發(fā)實踐迭代式開發(fā)管理需求基于構建的軟件體系結構可視化建模驗證軟

11、件質量控制變更統(tǒng)一軟件開發(fā)過程統(tǒng)一軟件開發(fā)過程n橫軸:時間軸,表示軟件開發(fā)的順序開啟階段精化階段構建階段產品化階段n縱軸:“誰”在“何時”、“如何”去做“何事”9個工作流程各個階段實施的工作流程,在不同的時間段內工作流所占工作量不同1.4 軟件設計n 對軟件如何被開發(fā)出來的一種規(guī)范化描述軟件需求分析和軟件設計受到重視編碼所占比例越來越少n 軟件設計的重要性對軟件需求的直接體現(xiàn)為軟件實現(xiàn)提供直接依據(jù)考慮軟件系統(tǒng)的各種約束條件并給出相應方案決定最終軟件系統(tǒng)的質量及早發(fā)現(xiàn)軟件設計中存在的錯誤減少軟件修復和維護的成本1.4 軟件設計n軟件設計的特征出現(xiàn)新的問題需要軟件來解決、解決問題和實施 決策的過程

12、、一系列轉換過程、滿足各種約束的 過程過程、不斷演化的過程、給出一個方案、 新思路、新想法n軟件設計的要素目標描述、設計約束、產品描述、設計原理、開發(fā)規(guī)劃、使用描述1.5 軟件體系結構n軟件設計是從軟件需求到軟件實現(xiàn)的活動,它把各種軟件需求轉換為能直接實現(xiàn)的軟件結構n軟件需求與軟件設計之間存在難以逾越的鴻溝,如何有效的將軟件需求軟化為相應的設計?n軟件需求?軟件設計軟件實現(xiàn) 軟件體系結構1.5 軟件體系結構n 軟件體系結構的定義軟件體系結構是軟件系統(tǒng)的結構,包含軟件元素、軟件元素外部可見的屬性以及這些軟件元素之間的關系;軟件體系結構是軟件系統(tǒng)的基本組織、包含構件、構件之間、構件與環(huán)境之間的關系,以及相關的設計與演化原則;軟件體系結構是程序或系統(tǒng)中組件的結構、組件之間的相互關系、設計的基本原則以及隨時間進化的指導方針;1.5 軟件體系結構軟件體系結構的發(fā)展歷程“無體系結構無體系結構”設計階段設計階段萌芽階段萌芽階段以匯編語言進行小規(guī)模應用程序開以匯編語言進行小規(guī)模應用程序開發(fā)為特征發(fā)為特征以描述系統(tǒng)的高層抽象結構為中心,以描述系統(tǒng)的高層抽象結構為中心,不關心具體的建模細節(jié),劃分了體系不關心具體的建模細節(jié),劃分了體系結構模型與傳統(tǒng)軟件結構的界限,該結構模型與傳統(tǒng)軟件結構的界限,該階段以階段以KruchtenKruchten提出的提出的“4+14+1”模型為模型為標志標志出現(xiàn)了從不

溫馨提示

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

評論

0/150

提交評論