To be completed!
- 軟體系統通常包含許多獨立的程式、用來設定這些程式的組態設定檔、描述系統結構的系統說明文件、說明如何使用系統的使用說明文件,以及讓使用者知道如何下載最新產品資訊的網站等。
- 電腦科學是與電腦基本觀念和理論有關的學科;軟體工程則是著重在開發和發行有用軟體相關的實用知識
軟體工程
(software engineering) 是一門著重在軟體生產的各類知識的工程學科,範圍從最開始的系統規格制訂,到系統上線後的維護階段都包括在內。
9:41
# Ch2 Software Processes
Software Processes (軟體程序)
: 即生產軟體產品的一連串活動與相關的成果。4 個基本活動
- 軟體規格制訂 (software specification): 定義軟體的功能以及運作的限制。
- 軟體開發 (software development): 設計與撰寫軟體。
- 軟體確認 (software validation): 必須確認軟體是否符合客戶的需求。
- 軟體演進 (software evolution): 軟體必須持續修訂,以符合客戶和市場的需求變化
可分為兩大類:
Plan-driven process | Agile (敏捷) 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 共筆