第八章——軟體工程基礎知識

燕子去了發表於2024-05-09

第八章——軟體工程基礎知識

8.1 軟體工程概述

8.1.1 軟體生存週期

同任何事物一樣,軟體也有一個孕育、誕生、成長、成熟、衰亡的生存過程,我們稱其為計算機軟體的生存週期。通常,軟體生存週期包括可行性分析、專案開發計劃、需求分析、設計(概要設計和詳細設計)、編碼、測試、維護等活動。

  1. 可行性分析:由軟體開發方與需求方共同討論,主要確定軟體的開發目標及其可行性
  2. 需求分析:在確定軟體開發可行的情況下,對軟體需要實現的各個功能進行詳細分析。主要解染“做什麼”的問題。
  3. 概要設計:主要根據需求分析的結果,對整個軟體系統進行設計,如系統框架設計、資料庫設計等
  4. 詳細設計:是對每個模組完成的功能進行具體描述,要把功能轉變為精確的、結構化的過程
  5. 程式編碼:將軟體設計的結果轉換成計算機可執行的程式程式碼。在程式編碼時,必須要制定統一、符合標準的編寫規範,以保證程式的可讀性、易維護性,提高程式的執行效率。
  6. 軟體測試:在軟體設計完成後要經過嚴密的測試,以發現軟體在整個設計過程中存在的問題並加以糾正。
  7. 維護:在軟體開發完成並投入使用後,由於各種原因,軟體會不能繼續適應使用者的要求。延續軟體的使用壽命,就要對軟體進行維護,包括糾錯性維護和改進性維護兩個方面。

8.1.2 能力成熟度模型(CMM)

軟體能力成熟度模型(CMM)將軟體組織的過程能力分成5個成熟度級別:初始級、可重複級、已定義級、已管理級和最佳化級。按照成熟度級別由低到高,軟體開發生產精度越來越高,每單位工程的生產週期越來越短。

  1. 初始級:軟體過程是無序的,有時甚至是混亂的對過程幾乎沒有定義,成功取決於個人努力。
  2. 可重複級:建立了基本的專案管理過程來跟蹤費用.進度和功能特性,制定了必要的過程紀律,能重複早先類似應用專案取得的成功
  3. 已定義級:已將軟體管理和工程兩方面的過程文件化、標準化,並綜合成該組織的標準軟體過程。所有專案均使用經批准、剪裁的標準軟體過程來開發和維護軟體
  4. 已管理級:收集對軟體過程和產品質量的詳細度量,對軟體過程和產品都有定量的理解和控制。
  5. 最佳化級:過程的量化反饋和先進的新思想、新技術促使過程不斷改進。

8.1.3 能力成熟度模型(CMMI)

  • 階段式模型:結構類似於CMM,它關注組織的成熟度。有5個成熟度等級。

    • 初始的:過程不可預測且缺乏控制。
    • 已管理的:過程為專案服務。
    • 已定義的:過程為組織服務
    • 定量管理的:過程已度量和控制。
    • 最佳化的:集中於過程改進。
  • 連續式模型:關注每個過程域的能力,一個組織對不同的過程域可以達到不同的過程域能力等級。CMMI中包括6個過程域能力等級,等級號為0~5。

    • CL0(未完成的):過程域未執行或未得到CL1中定義的所有目標。
    • CL1(已執行的):其共性目標是過程將可標識的輸入工作產品轉換成可標識的輸出工作產品,以實現支援過程域的特定目標。
    • CL2(已管理的):其共性目標集中於已管理的過程的制度化。根據組織級政策規定過程的運作將使用哪個過程,專案遵循已文件化的計劃和過程描述,所有正在工作的人都有權使用足夠的資源,所有工作任務和工作產品都被監控、控制和評審。
    • CL3(已定義級的):其共性目標集中於已定義的過程的制度化。過程是按照組織的剪裁指南從組織的標準過程集中剪裁得到的,還必須收集過程資產和過程的度量,並用於將來對過程的改進。
    • CL4(定量管理的):其共性目標集中於可定量管理的過程的制度化。使用測量和質量保證來控制和改進過程域,建立和使用關於質量和過程執行的定量目標作為管理準則。
    • CL5(最佳化的):使用量化(統計學)手段改變和最佳化過程域,以滿足客戶要求的改變和持續改進計劃中的過程域的功效。

8.1.4 統一過程模型

統一過程(UP)模型是一種“用例和風險驅動,以架構為中心,迭代並且增量”的開發過程,由UML方法和工具支援。迭代的意思是將整個軟體開發專案劃分為許多個小的“袖珍專案”,每個“袖珍專案”都包含正常軟體專案的所有元素:計劃、分析和設計、構造、整合和測試,以及內部和外部發布。

統一過程包括4個階段:初始階段、精化階段、構建階段、移交階段。

  • 初始階段一生命週期目標
  • 精化階段一生命週期架構
  • 構建階段一初始運作功能
  • 移交階段一產品釋出

image

8.2 軟體開發模型

  • 瀑布模型:迭代模型/迭代開發方法
  • 演化模型:快速應用開發
  • 增量模型:構件組裝模型/基於構件的開發方法,
  • 螺旋模型:統一過程/統一開發方法
  • 快速原型模型:敏捷開發方法
  • V模型:基於架構的開發方法
  • 噴泉模型:模型驅動的開發方法
  • 基於構件的開發模型:本質上是演化模型,以迭代方式構件軟體

https://www.bilibili.com/video/BV1Qc411G7fB?p=18&vd_source=1a563cd2b3f3fdeb2a16cbbf18022d2f

軟體開發方法

需求分析

系統設計

系統測試

軟體開發專案管理

軟體質量

軟體度量

相關文章