軟體工程 第一章 軟體與軟體工程

Mesonoxian發表於2024-03-13

軟體工程 第一章 軟體和軟體工程


軟體的定義

  • computer:有硬體與軟體組成
  • 硬體:看得見摸得著的電子機械裝置塊
  • 軟體:依附在硬體上面的程式,資料和檔案的結合,是指揮計算機工作的神經中樞.

第一階段:軟體:=程式(彈道計算) input:紙帶 output:紙帶
第二階段:軟體:=程式+資料
第三階段:軟體:=程式+資料+文件
第四階段:軟體:=程式+資料+文件+人工智慧

越早開始寫程式碼的人,就是越遲寫程式碼的人

文件的作用

文件=使用者文件+開發文件+測試文件

文件:起到橋樑作用

  • 使用者文件
    • 使用者手冊
    • 操作手冊
    • 維護修改建議報告
    • 軟體需求規格說明書
  • 開發文件
    • 軟體需求規格說明書
    • 資料說明數
    • 詳細設計說明書
    • 可行性研究報告
    • 專案開發計劃
  • 管理文件
    • 專案開發計劃
    • 測試計劃
    • 測試報告

軟體的特性:

  • 軟體是設計開發的,不是傳統意義上生產製造的.
  • 軟體不會磨損.
  • 大多數軟體根據實際顧客需求定製.


軟體互動週期:5~10年
環境,場景->變更

軟體的應用領域

  • 系統軟體
  • 應用軟體
  • 工程/科學軟體(數值水池)
  • 嵌入式軟體
  • 產品線軟體
  • web/移動app
  • 人工智慧軟體

軟體變更的原因:

  • 軟體需要進行適應性調整
  • 軟體必須升級以實現新的商業需求
  • 軟體必須擴充套件以具有與OS,DB協同工作的能力
  • 軟體體系結構必須進行改建以使之使用不斷演化的計算環境

webApps的特性:

  • 網路密集型
  • 併發性
  • 無法預知的負載量
  • 效能:能夠快速響應
  • 可用性:全天候訪問
  • 資料驅動
  • 內容敏感性
  • 持續演化
  • 即時性
  • 安全性
  • 美觀性

軟體工程的由來

軟體危機:計算機軟體的開發和維護過程所遇到的一系列嚴重問題.

軟體危機的主要表現:

  • 開發成本超出預算
  • 使用者對系統不滿意
  • 軟體產品指令較差
  • 軟體的可維護成都非常之低
  • 軟體通常沒有適當的文件資料
  • 軟體的成本不斷提高
  • 軟體開發生產率的提高趕不上硬體的發展

軟體系統的複雜性不斷增長,複雜性成為系統設計和開發最大的障礙.

軟體工程定義的提出:

  • 種子定義(Fritz Bauer)
  • IEEE定義

將工程化(系統化,規範化,可量化)的方法全過程(開發,執行,維護)地應用於軟體.

軟體工程三要素:過程層(process),方法層(method),工具層(tool),[質量關注點(a quality focus)]

軟體過程:工作產品構建時所執行的一系列活動,動作和任務的集合.

活動(activity):主要實現寬泛的目標.
動作(action):包括主要產品生產過程的一系列任務.
任務(task):關注小而明確的目標,能夠產生實際產品.

過程框架(process framework):

  • 工作任務
  • 工作產品
  • 里程碑和可交付成果
  • QA檢查點

普適性活動(umbrella activity)

框架包含的活動:

  • 溝通:與利益相關者溝通需求.
  • 策劃:建立軟體專案計劃,進行可行性分析.
  • 建模:橫跨軟體需求與設計.為需求與設計提供相關的模型.
    • 需求分析
    • 設計:舉例功能流程圖,業務流程(文字與模型).
  • 構建:對所做設計進行設計,包括編碼與測試.
    • 程式碼生成
    • 測試
  • 部署:根據實際生產情景進行部署.

Polya的建議:

  • 理解問題(溝通和分析)
    • 誰從問題的解決中獲益?
    • 什麼是未知的?
    • 問題可以劃分嗎?
    • 問題可以圖形化描述嗎?
  • 計劃解決方案(建模和軟體設計)
    • 以前曾經見過類似問題嗎?
    • 類似問題是否解決過?
    • 可以定義子問題嗎?
    • 能用一種可以很快實現的方式來表達解決方案嗎?
  • 實施計劃(程式碼生成)
    • 解決方案與計劃一致嗎?
    • 解決方案的每個組成部分是否可以證明正確?
  • 檢查結果的準確性(測試和質量保證)
    • 能否測試解決方案的每個部分?
    • 解決方案是否產生了與所要求資料,功能和特性一致的結果?

Hooker的原則:

  • 存在價值
  • 保持簡潔
  • 保持願景
  • 關注使用者
  • 面向未來
  • 提前計劃複用
  • 認真思考

NumericalTank

相關文章