軟件工程 系列爲本學期(2020春季)軟件工程以及軟件工程實踐課程筆記整理~
研究生階段的軟件工程課程相對本科比較綜合,內容涉及本科曾經學過“軟件工程”、“軟件過程管理”、“軟件體系結構”、“人機交互”等。有些概念感覺有些熟悉,但用自己的語言表達卻又不是很順暢。想起曾經考試前在舊圖書館樓道背過的知識點,那些時光真的很美好~
一、軟件
1.軟件定義
- 提供功能和性能的指令的集合-->程序
- 使得程序能操作信息的數據結構
- 描述程序研製過程和操作的文檔
2.軟件特徵
- 抽象性:無具體形態 容易修改
- 不具有“磨損性”
- 重用技術提高軟件開發效率-->將具有相對獨立功能的模塊獨立設計,在類似或相近的系統中對模塊重用
3.軟件分類 應用領域角度
- 系統軟件-->與計算機硬件緊密相關的軟件
- 應用軟件-->爲特定領域開發的服務於特定行業的軟件 建立在系統軟件之上
二、軟件工程
1.概念:將系統化的、規範化的、可度量的方法應用於軟件的開發、運行和維護的過程,即將工程化應用於軟件中。
2.內容:軟件需求、設計、構建、測試、維護、配置管理(軟件過程全方位監控)、工程管理、工具方法、軟件質量
3.軟件工程框架
- 軟件工程的目標
在給定成本、進度的前提下
利用正確的方法研製、開發、生產
具有有效性、可靠性、可理解性、可維護性、可重用性、可適應性、可移植性、可追蹤性和可互操作性的高質量滿足用戶需求的軟件產品
使用工程化思想、計算機輔助開發和設計工具、現代化手段進行軟件過程管理
- 軟件工程的過程-->在嚴格的控制和管理下進行
迭代學習的過程
定義階段:需求 功能 約束條件
“如何做":設計、編碼集成、測試
系統維護階段:解決外部環境變化、客戶需求變化、軟件使用過程中出現的錯誤
- 軟件工程的實現原則-->遵守軟件性質中定義的過程準則
分階段生命週期嚴格管理-->在不同的軟件生命週期制定不同的管理和實現計劃
階段性評審
嚴格的產品控制-->變更控制和一致性檢查
現代程序設計技術
結果清晰可審查-->標識階段性成果的檢查標誌 內容清晰可見
開發小組人員少而精
承認不斷改進軟件工程實踐的必要性