《軟件工程與實踐》 |(一)軟件工程基礎概述 知識梳理

 

系列索引: 《軟件工程與實踐》第三版 軟件工程課程知識梳理


 

本章目錄:

系列索引: 《軟件工程與實踐》第三版 軟件工程課程知識梳理

本章目錄:

本章重難點: 

 1.1  軟件工程的發展

1.1.1 軟件危機概述

1.1.2  軟件工程的發展過程

  1.2 軟件及軟件工程概述

1.2.1 軟件的概念特點和分類

1.2.2  軟件工程的概念、特點和目標

1.2.3  軟件工程學及其內容和方法

1.2.4  軟件過程及實際開發過程

1.2.5  軟件工程基本原理及原則

1.3 軟件生存週期及任務

1.3.1  軟件生存週期的有關概念

1.3.2  軟件生存週期的階段劃分

1.3.3 軟件生存週期各階段的任務

1.4 常用軟件開發模型

1.4.1 瀑布模型概述

1.4.2 快速原型模型概述

1.4.3 增量模型概述

1.4.4 螺旋模型概述

1.4.5 噴泉模型概述

1.4.6 基於面向對象的模型

1.4.7 軟件開發模型的選定

  1.5 本章小結

 


 

 

本章重難點: 

● 瞭解軟件工程的發展和軟件危機  

● 掌握軟件工程的概念、內容和原理  

● 熟悉軟件生存週期及階段任務  

● 掌握常用的軟件開發模型  

● 掌握軟件開發準備及Visio2017應用實驗

 

 

 1.1  軟件工程的發展

1.1.1 軟件危機概述

軟件危機(Software crisis)是指20世紀60年代計算機軟件在研發、運行、維護和管理過程中,出現的一系列嚴重問題的現象。

軟件危機直接導致軟件工程的產生。

=

出現軟件危機最主要的兩個因素就是 開發成本難控制和開發計劃難落實

 

 

1.1.2  軟件工程的發展過程

軟件技術的發展 經歷了程序設計階段、程序系統階段、軟件工程階段和創新完善軟件工程4個階段

 軟件工程發展  經歷4個重要階段:

  1.傳統軟件工程       傳統軟件工程是指軟件工程產生的初期,也稱爲第一代軟件工程。

  2.對象工程        對象工程也稱爲第二代軟件工程。20世紀80年代中到90年代,以Smalltalk爲代表的面向對象的程序設計語言相繼推出,使面向對象的方法與技術得到快速發展。

  3.過程工程        過程工程也稱爲第三代軟件工程。隨着網絡等高新技術的出現及信息技術的廣泛應用,軟件規模和複雜度不斷增大,開發時間相應持續增長,開發人員的增加,致使軟件工程開發和管理的難度不斷增強。

  4.構件工程         構件工程也稱爲第四代軟件工程.90年代起,基於構件(Component)的開發方法取得重要進展,軟件系統的開發可利用已有的可複用構件組裝完成,而無需從頭開始構建,可提高效率和質量、降低成本。

 

計算機輔助軟件工程簡稱CASE(Computer Aided Software ngineering)將工具和代碼生成器進行集成,爲很多軟件系統提供了可靠的解決方案;

 

  1.2 軟件及軟件工程概述

1.2.1 軟件的概念特點和分類

軟件=程序 + 數據 + 文檔 + 服務

數據則是使程序正常處理信息的數據結構及信息表示;文檔(Document)是與程序開發、維護和使用有關的技術資料。服務主要指對各種軟件用戶的服務,包括提供軟件產品使用說明書、推銷服務及售後技術支持等

軟件分爲系統軟件、支撐軟件(開發環境)和應用軟件等。其中應用軟件常稱爲信息系統主要是指具體的應用系統。

 

軟件的主要特點

(1) 智能性。軟件是人類智能勞動的產物、代替和延伸。

(2) 抽象性。軟件屬於邏輯實體,無形性和智能性致使軟件難以認識和理解。

(3) 人工方式。軟件的開發、維護及設置管理等方面目前尚未完全脫離手工方式。

(4) 複雜性和系統性。邏輯處理和數據結構及構成等相對複雜

(5) 泛域性。軟件應用很廣泛,在信息化中可服務於各種領域、行業和層面。

(6) 複製性。軟件成本相對比較昂貴,軟件是人類創造性的可複製的特殊產品。

(7) 非損及更新性。軟件不存在物理性磨損和老化問題,但可以退化需要更新升級。

 

軟件的分類

(1) 按照軟件功能劃分-系統軟件、支撐軟件、應用軟件

(2) 按照軟件規模劃分 (微型、小型、中型、大型、超大型5種)

(3)按照軟件工作方式劃分-實時處理軟件、分時軟件、交互式軟件、批處理軟件

(4)按照軟件服務對象的範圍劃分-項目軟件、產品軟件。

(5)按照軟件運行的終端設備劃分。分爲服務器軟件、計算機軟件、手機軟件、機器人軟件和其他嵌入設備(電子化設備)軟件。

 

1.2.2  軟件工程的概念、特點和目標

軟件工程(Software Engineering)是軟件開發、運行、維護和引退的系統方法

軟件工程 = 工程原理 + 技術方法 + 管理技術

 

軟件工程學科的主要特點實踐性和發展性,其問題來源並應用於實踐最終目的高效高質量低成本 地研發軟件產品

                         具體特點多學科  多目標  多階段

                         基本特點: 系統性,工程性,綜合性,學科交叉性

 軟件工程的目的是  在規定的時間和開發經費內,開發出滿足用戶需求的、高質量的軟件產品

               其目標是  實現軟件研發與維護的優質高效和自動化

 

 

1.2.3  軟件工程學及其內容和方法

主要內容包括  軟件開發技術軟件工程管理兩個方面

 軟件工程方法學是研發、管理與維護軟件的系統方法,具有方法、工具和過程三個要素,也稱軟件工程三要素

 

軟件工程方法

 常用軟件工程方法主要分爲7種類型

(1)面向功能方法。也稱爲結構化方法,主要採用結構化技術,包括結構化分析、結構化設計和結構化編程實現,按照軟件的開發過程、結構和順序完成開發任務。

(2)面向數據方法。從目標系統輸入、輸出數據的結構,導出程序框架結構,再補充其他細節,得到完整的程序結構圖。此方法也可與其他方法結合,用於模塊的詳細設計和數據處理等。對輸入輸出數據結構明確的中小型系統很有效,如商用文件表格處理等。

(3)面向對象方法(Object-Oriented Method,OOM)將對象作爲數據和對數據的操作相結合的軟件構件,用對象分解取代了傳統方法的功能分解。基本思想是:對問題領域進行自然的分割,以更接近人類通常思維的方式建立問題領域的模型,以便對客觀的信息實體(事物)進行結構和行爲的模擬,從而使設計的軟件更直接地表現問題的求解過程。

OOM以對象作爲最基本的元素,將所有對象都劃分爲類,是分析和解決問題的核心。OOM要素是對象、類、繼承以及消息通信。                概括爲:              面向對象 = 對象 + 類 + 繼承 + 消息通信

OOM由 OOA(面向對象的分析)、OOD(面向對象設計)和OOP(面向對象的程序設計 / 實現)三部分組成。

(4)面向問題方法(PAM).也稱問題分析法。其基本思想是:以輸入輸出數據結構指導系統的問題分解,經過系統分析逐步綜合。

 (5)面向方面的開發方法.(Aspect-Oriented Programming, AOP)是面向對象系統的擴展,在現有的AOP實現技術中,可通過創建Aspect庫或者專用Aspect語言實現面向方面的編程。

(6)基於構件的開發方法.基於構件的開發(Component-Based Development, CBD)或基於構件的軟件工程(Component-Based Software Engineering, CBSE)方法是軟件開發新範型
                                                                                                                 軟件複用方式 =分析 + 結構 + 設計 + 程序 

(7)可視化方法

總結:  七大方法分別爲: 功能,數據,對象,問題,方面,構件,可視化

 

軟件研發工具

軟件工具通常由工具(主體)、工具接口和工具用戶接口三部分構成。

軟件工具軟件開發方法密切相關,是軟件開發的兩大支柱

 

軟件開發環境

 軟件開發環境(Software Development Environment)也稱爲軟件工程環境。“軟件開發環境是相關的一組軟件工具集合,支持一定的軟件開發方法或按照一定的軟件開發模型組織而成”。是包括方法、工具和管理等多種技術的綜合系統。其設計目標是簡化軟件開發過程,提高軟件開發質量和效率。

 

軟件工程管理概述

 軟件工程管理的主要內容包括: (1)組織人員。 (2)計劃管理。 (3)費用管理。 (4)軟件配置管理。

 

1.2.4  軟件過程及實際開發過程

軟件過程(software process)ISO9000定義爲:“輸入轉化爲輸出的一組彼此相關的資源和活動”。

軟件實際開發過程是最重要的軟件過程,主要包括  項目啓動、需求調研分析、設計(概要設計及詳細設計)、編碼(實現)、測試、部署、測試和結束等過程。

 

 

1.2.5  軟件工程基本原理及原則

軟件工程的基本原理

 

軟件工程的基本原則

   (1) 選取適宜的開發模型。    (2) 採用合適的設計方法。    (3) 提供高質量的工程支撐。    (4) 重視軟件工程的管理。  

 

 

1.3 軟件生存週期及任務

1.3.1  軟件生存週期的有關概念

軟件生存週期(Software life cycle)是從開始研發軟件軟件停止使用的整個過程。也稱爲軟件生命週期或軟件生存期

可以將一個軟件的生存週期劃分爲市場調研、立項、需求分析、規劃、概要設計、詳細設計、編測程序、單元測試、集成測試、運行、維護這幾個過程,前一過程的終點就是後一過程的起點。

完成階段性工作的標誌稱爲里程碑(Milestone),某些重要的里程碑又稱爲基線(Baseline)。

 

1.3.2  軟件生存週期的階段劃分

軟件生存週期 階段劃分的原則主要包括:      

(1)各階段的任務相對獨立。便於分階段計劃、逐步完成。      

(2)同一階段的工作任務性質儘量相同。有利於軟件開發和組織管理,明確開發人員的分工與職責,以便協同工作、保證質量。

 

1.3.3 軟件生存週期各階段的任務

軟件生存週期組成包括軟件策劃、軟件開發和運行維護三個時期。

軟件生存週期分爲7個階段

 

  1.4 常用軟件開發模型

1.4.1 瀑布模型概述

 瀑布模型開發適用於 軟件需求明確,開發技術成熟,工程管理較嚴格 的場合下使用

 瀑布模型(Waterfall model)將生存期的 計劃時期、開發時期和運行時期,又細分爲若干個階段:

計劃時期 可分爲問題定義、可行性研究、需求分析3個階段

開發時期 分爲概要設計、詳細設計、軟件實現、軟件測試等階段

運行時期 則需要不斷進行運行維護,需要不斷修改錯誤、排除故障,或以用戶需求、運行環境改變進行改更調整。

圖中的實線箭頭表示開發流程,每個階段順序進行,有時會返工;虛線箭頭表示維護工作的流程,根據不同情況返回到不同的階段進行維護。

 

瀑布模型開發軟件特點

(1)開發過程的順序性。        

瀑布模型開發適用於 軟件需求明確,開發技術成熟,工程管理較嚴格 的場合下使用

(2)統籌兼顧不過早編程。        

(3)嚴格要求保證質量。

瀑布模型缺陷 是將 充滿回溯且相互重疊的軟件開發 過程硬性地分爲多個階段,隨着開發軟件規模的增加, 造成的危害大增。爲了描述軟件開發過程中可能回溯 對瀑布模型進行了改進,開發各階段可能循環重複。 

 

1.4.2 快速原型模型概述

快速原型模型最適合於可以先儘快構建成一個原型的應用系統

 

1.4.3 增量模型概述

適用於軟件需求不明確、設計方案有一定風險的軟件項目

利用增量模型開發的軟件被作爲一系列的增量構件進行設計、實現、集成和測試,每個構件具有一定功能,並最終能組合成一個具有完整功能軟件的模塊

 同瀑布模型之間的本質區別爲

瀑布模型屬於整體開發模型,規定在開始下一階段工作之前,必須完成前一階段的所有細節

而增量模型屬於非整體開發模型可推遲某些階段或所有階段中細節,較早地研發出軟件。

 

增量模型的缺陷

 

1.4.4 螺旋模型概述

 螺旋模型將 瀑布模型和快速原型模型 結合,強調了其他模型所忽視的風險分析,適合於大型複雜系統

開發過程劃分爲 制定計劃、風險分析、實施工程和客戶評估四類活動。

  螺旋模型沿着螺線進行多次迭代,其迭代過程如圖所示。

 

螺旋模型的缺陷

不支持軟件重用和多項開發活動集成

 

1.4.5 噴泉模型概述

適合於利用面向對象技術的軟件開發項目

克服了瀑布模型不支持軟件重用和多項開發活動集成的侷限性。可使開發過程具有迭代性和無間隙性

 

噴泉模型是以面向對象的開發方法爲基礎,以用戶需求爲源泉,具有以下7個特點:

 

1.4.6 基於面向對象的模型

 面向對象技術強調了類的創建與封裝構件重用就是其重要技術之一。基於面向對象的模型,綜合了面向對象和原型方法及重用技術

 

1.4.7 軟件開發模型的選定

開發模型與開發方法及工具的關係

  應用軟件的開發過程主要包括:  生存週期的系統規劃、需求分析、軟件設計、實現四個階段。

  軟件的開發方法多種多樣,結構化方法面向對象的方法是常用的最基本的開發方法

 軟件的開發模型(生存週期過程模型)與開發方法、開發工具之間的 關係如圖:

 

軟件開發模型選取

 最常用的是瀑布模型和原型模型,在具體選擇模型時需要綜合考慮以下6點:

 

軟件開發模型的修定

開發模型的選定並非直接照抄照搬、一成不變,有時還需要根據實際開發目標要求進行裁剪、修改、確定和綜合運用。

 

 

  1.5 本章小結

 

 

發佈了114 篇原創文章 · 獲贊 1004 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章