軟件工程概述

概述

1. 軟件
  1. 軟件的概念:軟件是與計算機操做系統操做有關的程序、規程、規則、及任何與之有關的文檔及數據的完整集合(軟件=程序+數據+文檔)
  2. 軟件的特色
    • 邏輯產品
    • 不存在磨損問題,存在退化問題
    • 依賴於計算機操做系統
    • 複雜性
  3. 軟件的分類
    • 按軟件的功能分類
      • 系統軟件:操做系統、數據庫管理系統、設備驅動程序、通訊處理程序等。
      • 支撐軟件:文本編輯器、文件格式化程序、程序庫系統等。
      • 應用軟件:相似於qq這種軟件
    • 按軟件規模進行劃分:微型、小型、中型、大型、甚大型、極大型
  4. 軟件的發展
    • 程序設計階段
    • 軟件設計階段
    • 軟件工程階段
2. 軟件危機
  1. 軟件危機的含義數據庫

    指落後的軟件生產方式沒法知足迅速增加的計算機軟件需求,從而致使軟件開發與維護過程當中出現一系列嚴重問題的現象。編輯器

  2. 軟件危機的主要表現工具

    • 花費超預期
    • 不能按時完成
    • 不得不從新設計
  3. 軟件危機的主要特徵性能

    • 軟件開發週期大大超過規定日期
    • 軟件開發成本嚴重超標
    • 軟件質量難於保證
  4. 軟件危機產生的緣由學習

    • 用戶需求不明確
    • 缺少正確的理論指導
    • 軟件開發規模愈來愈大
    • 軟件複雜度愈來愈高
  5. 如何解決軟件危機?測試

    • 軟件工程就能解決
3. 軟件工程及其三要素
  1. 軟件工程的概念編碼

    軟件工程:指用工程、科學和數學的原則與方法研製、維護計算機軟件有關技術及管理方法操作系統

  2. 軟件工程三要素設計

    • 方法:分爲傳統方法和麪向對象方法
    • 工具:軟件工具爲軟件工程的方法提供了自動或半自動的軟件支持環境
    • 過程:定義瞭如下
      • 方法使用的順序
      • 要求交付的文檔資料
      • 爲保證質量和適應變化所需的管理
      • 軟件開發各個階段完成的產品的度量
  3. 軟件工程項目的基本目標3d

    • 付出較低的開發成本
    • 達到要求的軟件功能
    • 取得較好的軟件性能
    • 開發的軟件易於移植
    • 須要較低的維護費用
    • 能按時完成開發工做,及時交付使用
  4. 軟件工程的原則

    • 選取適宜的開發模型
    • 採用合適的設計方法
    • 提供高質量的工程支撐
    • 重視軟件開發過程的管理
4. 軟件生存週期
  1. 軟件生存週期概念
    軟件產品從造成概念開始,通過開發、運行(使用)和維護直到退役的全過程,稱爲軟件生存週期,包括軟件定義、開發、使用和維護三部分。

  2. 軟件生存週期的階段

    • 可行性研究和項目開發計劃:系統要解決什麼問題、是否可行

    • 需求分析

      • 需求獲取 --需求定義,系統功能的一個正確的陳述
      • 需求規約 --系統需求規格說明
        • 主要成分:系統模型(系統功能的一個精確、系統的描述)
      • 需求驗證
    • 設計:在需求的基礎上,給出系統的軟件解決方案

      • 概要設計
        • 系統的軟件體系結構
        • C/S結構
        • 以數據庫爲中心的結構
        • 管道結構
        • 面向對象的結構
      • 詳細設計
        • 針對整體設計結果,給出每一個模塊的詳細描述,把功能描述變爲精確的。結構化的過程描述
    • 實現階段:選擇可用的構件,或以一種選定的語言,對每一構件進行編碼

    • 肯定階段:貫穿軟件開發的整個過程,主要任務是軟件測試

    • 支持階段:完善性維護,糾錯性維護

    5. 軟件過程模型(軟件開發模型、軟件生存週期模型)

    軟件過程模型概念:

    描述軟件過程當中各類活動如何執行的模型

    • 瀑布模型

      • 經典的軟件開發模型,最先的軟件開發模型

      • 概念

        • 將軟件生命週期中的各項活動規定爲依線性順序鏈接的若干階段

        • 階段包括:需求分析、設計、編碼、測試、運行與維護。看起來像瀑布同樣

        • 特色

          • 各項活動嚴格按照線性方式進行
          • 以文檔做爲驅動
          • 當前活動的工做結果須要進行驗證
          • 適合於軟件需求很明確的軟件項目
        • 存在的問題

          • 軟件開發各個階段劃分固定,階段間會產生大量文檔,增長工做量
          • 線性開發增長了開發的風險
          • 沒法解決需求不明確或者變更的問題
    • 增量模型

      • 非總體開發模型,分爲漸增模型和快速原型模型

      • 概念

        • 將需求分解,劃分爲一系列增量,併爲增量排序,急需的增量先開發。

        • 每一個增量都歷經需求、設計、編碼、測試、移交幾個階段

        • 優勢

          • 按照增量持續不斷的發佈軟件新版本,能夠及時獲得用戶反饋,調整後續軟件開發的策略
          • 由於需求肯定,可先設計軟件體系結構,並在開發過程當中保持
        • 缺點

          • 增量模型規模不能大
          • 分解增量要求對需求十分了解,並有頂層的設計經驗
          • 基本服務的增量定義和實現比較困難
        • 適用於

          • 軟件需求不明確,設計方案有必定風險的項目
    • 螺旋模型

      • 將瀑布模型和增量模型結合起來,並加入了風險分析

      • 概念

        • 螺旋模型是迭代模型,從裏向外,螺旋線每一個迴路表示的軟件工程都有四個階段組成。

        • 四個階段:定義目標、風險分析、開發和驗證、規劃。

      • 優勢:邊學習、邊建模、邊開發、邊使用、邊改進。

      • 缺點:屢次迭代致使軟件體系結構變化,爲軟件理解和維護帶來困難

      • 適應於

        • 大型的軟件開發 如,電子商務,電子政務等業務軟件的開發
    • 噴泉模型

      • 以用戶需求爲動力,以對象爲驅動的模型
      • 優勢:能夠提升軟件項目開發效率,節省開發時間,適應於面向對象的軟件開發過程
      • 缺點:開發過程當中須要大量的開發人員,所以不利於項目的管理;嚴格的文檔管理,使得審覈的難度加大
    • 智能模型

      • 基於知識的軟件開發模型

      • 概念

        • 稱爲「基於知識的軟件開發模型」,把瀑布模型和專家系統結合在一塊兒,利用專家系統來幫助軟件開發人員工做

相關文章
相關標籤/搜索