To be completed!

  • 軟體系統通常包含許多獨立的程式、用來設定這些程式的組態設定檔、描述系統結構的系統說明文件、說明如何使用系統的使用說明文件,以及讓使用者知道如何下載最新產品資訊的網站等。
  • 電腦科學是與電腦基本觀念和理論有關的學科;軟體工程則是著重在開發和發行有用軟體相關的實用知識
  • 軟體工程 (software engineering) 是一門著重在軟體生產的各類知識的工程學科,範圍從最開始的系統規格制訂,到系統上線後的維護階段都包括在內。

9:41

# Ch2 Software Processes

  • Software Processes (軟體程序) : 即生產軟體產品的一連串活動與相關的成果。

  • 4 個基本活動

    1. 軟體規格制訂 (software specification): 定義軟體的功能以及運作的限制。
    2. 軟體開發 (software development): 設計與撰寫軟體。
    3. 軟體確認 (software validation): 必須確認軟體是否符合客戶的需求。
    4. 軟體演進 (software evolution): 軟體必須持續修訂,以符合客戶和市場的需求變化
  • 可分為兩大類:

Plan-driven processAgile (敏捷) process
定義事先規劃好所有 process activities規劃是漸進且易於改變的
舉例飛機裡的即時軟體電子商務系統

# Software process models

  • Software Process Model (軟體程序模型) : 是以某個特定觀點呈現之軟體程序的簡化描述。(An abstract representation of a process)

  • 可能會包含軟體程序的部分活動、軟體產品以及與軟體工程有關的人。

  • 大部分的軟體程序模型,都是根據下列其中一種軟體開發模式而來:

模式名稱定義程序分類其它
Waterfall model (瀑布式)分開規格開發,每個階段在確認簽結 (sign-off) 後,開發動作就會進入到下一階段。plan-driven通常用於大型的系統
Incremental (漸進的) development規格開發驗證 是交錯的,根據客戶的意見做調整,產生滿足客戶需求的系統。plan-driven or agile或稱反覆式開發 (Iterative development)
Integration and configuration (整合和配置)系統由現有的可配置組件組裝而成plan-driven or agile或稱元件式軟體工程 (component-based software engineering, CBSE)
  • 沒有對錯,只有適不適合

  • 軟體工程方法 :是開發軟體的一些結構性方法,它們的目的是要以合乎成本效益的方式生產出高品質的軟體產品。eg:「統一塑模語言」(Unified Modeling Language, UML)

  • CASE (Computer-Aided Software Engineering, 電腦輔助軟體工程) : 包含許多不同種類而且範圍廣泛的程式,這些程式是用來支援軟體程序中的各項活動。

  • 好軟體的必要特性:

特性說明
可維護性 (maintainability)完成後的軟體必須能夠針對客戶的需求改變進行軟體的演進與維護
可信賴度 (dependability)軟體的可信賴度包括可靠性、防護性及安全性。系統發生故障時,可信任的軟體不應該會造成實體或經濟上的損失
效率 (efficiency)效率包含了回應速度、處理時間、記憶體的使用率等因素
可用性 (usability)軟體必須能夠讓使用者容易上手,因此它必須有適當的使用者介面與說明文件
  • ACM、IEEE 等組織,都有發行專業人員應該遵守的行為準則或道德規範

  • 軟體危機的影響可以是金錢上的損失、時間上的浪費、客戶滿意度下降,甚至對組織的信譽造成傷害。為了避免軟體危機,軟體開發團隊需要嚴謹的計劃、有效的項目管理、清晰的需求定義以及適當的技術解決方案。

# Process activities

# Coping with change

# Process improvement

資料流程圖

# Reference

  • All slides
  • 碁峰資訊 - 2009 - 軟體工程
  • ntu 共筆