軟件工程(二)軟件生存週期與軟件過程

軟件生存週期

一個軟件從開始立項起,到廢棄不用爲止,統稱軟件的生存週期。典型的軟件生存週期的主要活動包括:

  1. 需求分析

    明確用戶需要解決的問題,分析員根據對問題的理解提出關於系統目標與範圍的說明,從用戶視角對需求進行定義和分析,用需求模型的形式準確地表達出來

  2. 軟件分析

    在需求模型的基礎上,從開發人員視角對軟件需求模型進行分析,建立於需求模型一致,與實現無關的軟件分析模型。它既是對軟件系統邏輯模型的描述,也是下一步進行系統設計的依據

  3. 軟件設計

    將軟件分析模型轉變爲考慮具體實現技術和平臺的軟件設計模型

  4. 編碼

    編碼就是按照選定的程序設計語言和可複用軟件架構包,把設計文檔翻譯爲源程序

  5. 軟件測試

    除針對模塊 / 對象錯誤的單元測試應與編碼同時進行外,還要執行集成測試、確認測試和系統測試等步驟

  6. 運行維護

    作爲生存週期的最後一個階段,運行維護階段的任務主要是做好軟件維護,使軟件在整個生存週期內都能滿足用戶的需求,並延長其使用壽命。每次維護都應遵循規定的程序,填寫或更改相關文檔


軟件過程

軟件過程可理解爲圍繞軟件開發所進行的一系列活動,也常把軟件過程稱爲 “ 軟件開發模型 ”

傳統軟件模型

  1. 瀑布模型

    基於軟件生存週期的線性開發模型,特點是將整個過程嚴格劃分階段,與軟甲生存週期的特點是一致的,現簡述如下:

    1. 階段間的順序性:各階段的活動分步完成;前一階段活動沒有結束,後一階段活動就不能進行
    2. 階段間的依賴性:前一階段的輸出文檔是後一階段的輸入文檔,只有當前一階段有正確輸出時,後一階段才能獲得正確結果。如果某一階段出現問題,往往要追溯到它之前的一些階段,必要時可能要修改此前已經完成的文檔
    3. 推遲實現的觀點:過早地編碼容易導致返工,甚至造成災難性後果。把待開發軟件的邏輯設計與物理實現清楚的區別開來,即再需求分析和軟件設計階段只考慮系統的邏輯模型,等到編碼階段再來完成程序清單​
    4. 保證質量的觀點:每一階段必須完成規定的文檔。每一階段都要對完成的文檔進行復審​
  2. 快速原型模型

    先建立能夠反映用戶主要需求的原型,讓用戶實際觀察未來系統的概貌,以判斷哪些功能是符合需要的,哪些方面還需要改進。然後將原型反覆改進,直至建立完全符合用戶要求的新系統。原型系統只包括未來系統的主要功能及系統的重要接口,不包括系統細節

  3. 原型模型帶來的啓示

    改變了生存週期等同於過程模型的習慣性思維,使人們認識到生存週期只指出整個週期應包含哪些活動,並未規定這些活動應該發生多少次。軟件開發人員的任務就是通過對軟件過程的重新安排,使之更適合於待開發的軟件系統

軟件演化模型

遵循迭代的思想方法,使所開發的軟件在迭代中逐步達到完善

  1. 增量模型

    是瀑布模型的順序特徵與快速原型法的迭代特徵相結合的產物。把軟件看作一系列相互聯繫的增量,在開發過程的各次迭代中,每次完成其中一個增量

    例如,如果用增量模型開發一個大型文字處理軟件,第一個發佈的增量可能實現基本的文件管理、文檔編輯與生成功能;第二個增量具有更加完善的文檔編輯與生成能力;第三個增量完成拼寫檢查與文法檢查;第四個增量實現頁面佈局等高級功能,其中任一增量的開發流程均可按瀑布模型或快速原型法完成
    在這裏插入圖片描述

  2. 螺旋模型

    結合瀑布模型與快速原型模型基礎上演變而成。從總體上看,螺旋模型是一種典型的迭代模型。每迭代一次,螺旋線就前進一週。當項目按照順時針方向沿螺旋線移動時,每輪螺旋均包含計劃、風險分析、建立原型、用戶評審四種活動,按以下順序周而復始,直到實現最終產品

    1. 計劃:用於選定本輪螺旋所定目標的策略,包括確定待開發系統的目標、選擇方案、設定約束條件等
    2. 風險分析:評估本輪螺旋可能存在的問題,必要時可通過建立一個原型來確定風險的大小,據此決定是按原定目標執行,還是修改目標或終止項目。螺旋模型重視風險分析,目的是要了解、分析並設法降低和排除風險
    3. 建立原型:建立一個原型來實現本輪螺旋的目標。例如,第一圈可能產生產品的需求規格說明書,第二圈可能實現產品設計,等等
    4. 用戶評審:由用戶評價前一步的結果,同時計劃下一輪的工作

在這裏插入圖片描述

  1. 構件集成模型(主要適用於面向對象的軟件開發)

    對象技術將事務封裝成包含數據和加工該數據的方法的對象,並抽象成爲類。經過適當設計和實現的類,也可稱爲構件。構件在某一領域具有一定通用性,可以在不同計算機軟件系統中複用。將這些構件存儲起來構成一個構件庫,利用預先封裝好的構件來構造應用系統。構件集成模型融合了螺旋模型的不少特點,也支持軟件開發的迭代方法

形式化方法模型

前邊所述都屬於非形式化方法模型,旨在用工程方法生產出質量高、易維護的軟件產品,多流行與工業界。形式化方法模型以程序變換技術爲主要研究內容,多流行於學業界,本文僅做簡單介紹

  1. 轉換模型

    採用嚴格的數學方法來表示軟件需求規格說明書,然後進行一系列自動或半自動的程序變換,最終將需求規格說明書轉換爲計算機系統能接受段地目標程序系統

  2. 淨室模型

    與增量模型一樣,淨室開發把軟件看作一系列增量,每個增量是一個用形式化方式表示的 “盒” 。這種盒是在某個特定的抽象層次上對系統的一次封裝,按照約定的盒結構逐步進行開發,通過認證後即是最終的增量產品。其基本思想是力求在分析和設計階段就消除錯誤、確保正確,在無缺陷的潔淨狀態下實現對軟件的製作

在這裏插入圖片描述

統一過程和敏捷過程

除了上面介紹的七種軟件開發模型外,之後又出現了兩種與之前迥異的軟件過程模型 —— 統一過程和敏捷過程,關於它們的介紹請看

統一軟件開發過程(RUP)分析

敏捷軟件開發與極限編程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章