軟件工程概述

軟件危機

軟件危機包含兩方面問題:如何開發軟件、如何維護規模越來越大的軟件。

軟件危機的原因:與軟件本身特點有關、開發和維護不正確。

開發和維護不正確具體表現爲:忽視軟件需求分析的重要性,認爲軟件開發就是寫程序,輕視軟件維護等。

軟件開發的過程:定義問題、進行可行性研究、需求分析、開發和測試、維護。

軟件產品的組成:程序、文檔和數據。

軟件工程

軟件工程的目標

  1. 提高軟件的可維護性
  2. 減少軟件維護的代價。

軟件工程方法學

  1. 傳統方法學:將軟件生命週期的全過程一次劃分爲若干個階段,順序地完成每個階段的任務。
  2. 面向對象方法學:既使用對象又使用類和繼承等機制,而且對象之間僅能通過傳遞消息實現彼此通信。

軟件生命週期

軟件生命週期由三個階段組成

  1. 系統分析: 問題定義、可行性研究、需求分析。

  2. 軟件開發:總體設計、詳細設計、編碼和單元測試、綜合測試。

  3. 運行維護

軟件生命週期每個階段的基本任務

  1. 問題定義:“做什麼項目?”。通過對客戶的調查,系統分析師扼要地寫出關於問題性質、工程目標和工程規模的書面報告,得到客戶的確認。

  2. 可行性研究:“值不值得做?”系統分析師在較高的抽象層次上進行研究,不是具體解決問題,而是研究問題的範圍,是否有解決方案,客戶確認是否繼續工程。

  3. 需求分析:“項目需要哪些功能?”仍然不是具體地解決問題,系統分析師確定目標系統必須具備哪些功能,形成需求規格說明書,得到客戶的確認。

  4. 總體設計:“大體上怎麼實現?”軟件工程師設計出幾種可能的方案,再利用適當的表達工具分析每種方案的優缺點,推薦一個最佳方案,指定出實現最佳方案的詳細計劃。得到客戶的確認。

  5. 詳細設計:“具體怎麼實現?”軟件工程師設計出具每個模塊並確定實現模塊功能所需要的算法和數據結構,形成詳細的規格說明,交給程序員,使程序員根據它們寫出實際代碼。

  6. 編碼和單元測試:程序員根據軟件工程師提供的詳細規格說明書寫出正確的容易理解、維護的程序模塊,並仔細測試每個模塊。

  7. 綜合測試:測試工程師通過集成測試和驗收測試使軟件達到預定的要求。

  8. 軟件維護:通過改正性維護、適應性維護、完善性維護、預防性維護等維護活動時系統持久地滿足用戶的需要。

軟件過程

軟件過程的定義

軟件過程是爲了獲得高質量軟件所需要完成的一系列任務的框架,它規定了各項任務的工作步驟,即先後順序。

軟件過程的三層含義

  1. 個體含義,即指軟件產品或系統在生存週期中的某一類活動的集合,如軟件開發過程,軟件管理過程等
  2. 整體含義,即指軟件產品或系統在所有上述含義下的軟件過程的總體
  3. 工程含義,即指解決軟件過程的工程,它應用軟件工程的原則、方法來構造軟件過程模型,並結合軟件產品的具體要求進行實例化,以及在用戶環境下的運作,以此進一步提高軟件生產率,降低成本

軟件過程模型

軟件過程模型是軟件開發全部過程、活動和任務的結構框架也稱軟件開發模型,或軟件生存週期模型。

典型的軟件過程模型

瀑布模型(waterfall model)
演化模型(evolutionary model)

適用於對軟件需求缺乏準確認識的情況,典型的演化模型有增量模型(incremental model)、原型模型(prototyping model)、螺旋模型(spiral model)

噴泉模型(water fountain model)
基於構件的開發模型(component-based development model)
形式方法模型(formal methods model)

瀑布模型(waterfall model)
圖片名稱
特徵

    接受上一階段的結果作爲本階段的輸入
    利用這一輸入實施本階段應完成的活動
    對本階段的工作進行評審
    將本階段的結果作爲輸出,傳遞給下一階段
 缺點

    缺乏靈活性,難以適應需求不明確或需求經常變化的軟件開發
    開發早期存在的問題往往要到交付使用時才發現,維護代價大

增量模型(incremental model)
圖片名稱
特徵

    增量模型融合了瀑布模型的基本成分(重複地應用)和演化模型的迭代特徵
    增量模型強調每一個增量都發佈一個可運行的產品

使用場景

    需求經常變化的軟件開發
    市場急需而開發人員和資金不能在設定的市場期限之前實現一個完善的產品的軟件開發
    增量模型能有計劃地管理技術風險,如早期增量版本中避免採用尚未成熟的技術

原型模型(prototyping model)
圖片名稱
特徵

    一個原型不必滿足目標軟件的所有約束,其目的是能快速、低成本地構建原型。
    原型方法從軟件工程師與客戶的交流開始,其目的是定義軟件的總體目標,標識需求。
    被開發的原型應交付給客戶試用,並收集客戶的反饋意見,這些反饋意見可在下一輪迭代中對原型進行改進。在前一個原型需要改進,或者需要擴展其範圍的時候,進入下一輪原型的迭代開發

使用場景

    需要儘快交付和對軟件需求缺乏準確認識的項目

螺旋模型(spiral model)

圖片名稱

特徵

    是瀑布模型和演化模型的結合,並增加了風險分析
    螺旋模型沿着螺線旋轉,在四個象限上分別表達四個方面的活動,即:
    制定計劃:確定軟件目標,選定實施方案,弄清項目開發的限制條件
    風險分析:評價所選的方案,識別風險,消除風險
    工程實施:實施軟件開發,驗證工作產品
    客戶評估:評價開發工作,提出修正建議

使用場景

    螺旋模型主要適用於內部開發的大規模需要風險評估的軟件項目。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章