軟體工程-需求分析與系統設計

📢 本文由 gemini-2.5-flash 翻譯

軟體工程系列文章二

軟體生命週期

  1. 可行性分析與專案開發計畫
  2. 需求分析
  3. 概要設計
  4. 詳細設計
  5. 編碼
  6. 測試
  7. 維護

軟體需求

在進行需求擷取之前,首先要明確需要擷取什麼,也就是需求包含哪些內容。軟體需求是指使用者對目標軟體系統在功能、行為、效能、設計限制等方面的期望

  1. 功能需求。考量系統要做什麼,在何時做,在何時以及如何修改或升級。
  2. 效能需求。考量軟體開發的技術性指標。例如,儲存容量限制、執行速度、回應時間及吞吐量。
  3. 使用者或人的因素。考量使用者的類型。例如,各種使用者對使用電腦的熟練程度,需要接受的訓練,使用者理解、使用系統的難度,使用者錯誤操作系統的可能性等。
  4. 環境需求。考量未來軟體應用的環境,包括硬體和軟體。對硬體設備的需求包括機型、週邊設備、介面、地點、分佈、濕度、磁場干擾等;對軟體的需求包括作業系統、網路、資料庫等。
  5. 介面需求。考量來自其他系統的輸入,到其他系統的輸出,對資料格式的特殊規定,對資料儲存介質的規定。
  6. 文件需求。考量需要哪些文件,文件針對哪些讀者。
  7. 資料需求。考量輸入、輸出資料的格式,接收、傳送資料的頻率,資料的準確性和精度,資料流量,資料需保持的時間。
  8. 資源使用需求。考量軟體執行時所需要的資料、其他軟體、記憶體空間等資源;軟體開發、維護所需的人力、支援軟體、開發設備等。
  9. 安全保密要求。考量是否需要對存取系統或系統資訊加以控制,隔離使用者資料的方法,使用者程式如何與其他程式和作業系統隔離以及系統備份要求等。
  10. 可靠性要求。考量系統的可靠性要求,系統是否必須偵測和隔離錯誤;出錯後,重啟系統允許的時間。
  11. 軟體成本消耗與開發進度需求。考量開發是否有規定的時間表,軟/硬體投資有無限制等。
  12. 其他非功能性要求。如採用某種開發模式,確定品質控制標準、里程碑和審查、驗收標準、各種品質要求的優先順序等,以及可維護性方面的要求。

系統設計

系統設計的主要目的就是為系統指定藍圖,在各種技術和實施方法中權衡利弊,精心設計,合理地使用各種資源,最終勾勒出新系統的詳細設計方案。

概要設計

開發人員把確定的各項功能需求轉換成所需的系統架構。

1. 設計軟體系統整體結構

其基本任務是採用某種設計方法,將一個複雜的系統按功能劃分為模組;確定每個模組的功能;確定模組之間的呼叫關係;確定模組之間的介面,即模組之間傳遞的資訊;評估模組結構的品質。

軟體系統整體結構的設計是概要設計關鍵的一步,直接影響到下一個階段詳細設計與編碼的工作。軟體系統的品質及一些整體特性都在軟體系統整體結構的設計中決定。

2. 資料結構及資料庫設計

(1) 資料結構的設計

逐步細化的方法也適用於資料結構的設計。在需求分析階段,已經透過資料字典對資料的組成、操作限制和資料之間的關係等方面進行了描述,確定了資料的結構特性,在概要設計階段要加以細化,詳細設計階段則規定具體的實現細節。在概要設計階段,宜使用抽象的資料類型。

(2) 資料庫的設計

資料庫的設計是指資料儲存文件的設計,主要進行以下幾方面設計:

  1. 概念設計。在資料分析的基礎上,採用由下而上的方法從使用者角度進行視圖設計,一般用 E-R 模型來表述資料模型。E-R 模型既是設計資料庫的基礎,也是設計資料結構的基礎。
  2. 邏輯設計。E-R 模型是獨立於資料庫管理系統 (DBMS) 的,要結合具體的 DBMS 特徵來建立資料庫的邏輯結構。
  3. 實體設計。對於不同的 DBMS,實體環境不同,提供的儲存結構與存取方法各不相同。實體設計就是設計資料模式的一些實體細節,如資料項儲存要求、存取方法和索引的建立等。

3. 編寫概要設計文件

文件主要有概要設計說明書、資料庫設計說明書、使用者手冊以及修訂測試計畫。

4. 審查

對設計部分是否完整地實現了需求中規定的功能、效能等要求,設計方法的可行性,關鍵的處理及內外部介面定義的正確性、有效性、各部分之間的一致性等都一一進行審查。

詳細設計

  1. 對每個模組進行詳細的演算法設計,用某種圖形、表格和語言等工具將每個模組處理過程的詳細演算法描述出來。
  2. 對模組內的資料結構進行設計。
  3. 對資料庫進行實體設計,即確定資料庫的實體結構。
  4. 其他設計。根據軟體系統的類型,還可能要進行以下設計:
    1. 程式碼設計。為了提高資料的輸入、分類、儲存和檢索等操作,節省記憶體空間,對資料庫中某些資料項的值要進行程式碼設計。
    2. 輸入/輸出格式設計。
    3. 使用者介面設計。
  5. 編寫詳細設計說明書。
  6. 審查。對處理過程的演算法和資料庫的實體結構都要審查。

系統設計的結果是一系列的系統設計文件,這些文件是實體實現一個資訊系統 (包括硬體設備和編寫軟體程式) 的重要基礎。

This post is licensed under CC BY-NC-SA 4.0 by the author.