軟件工程概述

背景

軟件工程(Software Engineering)這個概念的正式提出是在 1969 年,在人們經歷過一系列軟件危機(Software Crisis)之後的 NATO 會議上。

當時人們遇到的軟件危機包括:

  1. 項目運行超過預算;
  2. 項目運行超過時間;
  3. 軟件質量低劣;
  4. 軟件通常不符合需求;
  5. 項目無法管理且代碼難以維護。

下面舉三個案例呈現當時的軟件危機。

其一是 IBM 的 OS/360 系統,當決定外部技術說明文檔的制定人員時,Fred Brooks 錯誤地給與了程序實現團隊而不是體系結構團隊,導致最後項目增加了一年的調試時間並多出了幾百萬美元的投入。

其二是美國銀行信託軟件,當時計劃預算 2 千萬,時長 9 個月;但實際上投入了 6 千萬,時長 4 年,仍未完成,最終放棄。

其三是 AECL 公司開發的 Therac-25 放射性療法機器,因競態條件偶然發射高於正常劑量的輻射,從而導致患者死亡或重傷。

定義

在軟件危機的背景之下,1969 年的 NATO 會議提出了軟件工程的概念。

軟件工程是用來建立和使用合理的工程原則,以經濟地獲取可靠的,且在真實機器上可高效工作的軟件。

隨後 IEEE 在 1993 年給出了更加綜合性的定義,即

(1) 將系統化的、規範的、可量化的方法應用到軟件的開發、運行及維護中,即將工程化方法應用於軟件;

(2) 在 (1) 中所述方法的研究。

軟件生命週期

軟件工程有兩面,一面是 “軟件”,一面是 “工程”。軟件是軟件工程中最重要的製品。我們依照軟件的生命週期,在每個時期實施不同的工程化的方法使得軟件可以按需求運作。

軟件開發過程

軟件(開發)過程一般有兩種:

  1. 瀑布模型:分析 --> 設計 --> 編碼 --> 測試。
  2. 增量模型:拆分儘量不耦合的增量構件,每個構件按照瀑布過程運作。

軟件分析方法

軟件分析方法有兩大類:

  1. 面向過程方法,包括數據流圖、實體關係圖和狀態圖;
  2. 面向對象方法,包括用例圖、類圖和狀態圖。

軟件設計方法

軟件設計方法也分爲以下兩大類:

  1. 面向過程方法,包括結構圖(HIPO)、模塊化;
  2. 面向對象方法,包括類圖中每個類的屬性和方法的確定。

軟件編碼方法

  1. 選擇一門或多門適合需求的編程語言。
  2. 質量保證: a. 可操作性;(能用) b. 可維護性;(能改) c. 可遷移性。(能遷)

軟件測試方法

軟件測試方法總體可分爲以下兩大類:

  1. 白盒測試,包括基本路徑測試和控制結構測試(包括條件測試、數據量測試和循環測試);
  2. 黑盒測試,包括窮盡測試、 隨機測試和邊界值測試。

白盒測試中的基本路徑測試涉及圖論和圈的複雜度。

文檔

軟件的文檔是一個持續的過程,軟件不死,文檔就需要不斷更新。軟件的文檔包含三大類:

  1. 用戶文檔,引導用戶正確使用軟件;
  2. 系統文檔,定義軟件本身;
  3. 技術文檔,描述軟件的安裝、維護和更新。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章