軟件的特征
- 抽象: 不可觸摸,邏輯實體,可記錄,但看不到
- 復制成本低:不受物質材料的限制,不受物理定律或加工過程的制約,與開發成本相比,復制成本很低無折舊、受硬件制約、未完全擺脫手工工藝開發費用高
- 軟件是開發出來的,不是制造出來的
- 軟件可能被“廢棄”,但不會“用壞”
- 軟件大部分是定制的,而不是裝配的
軟件復雜度
- 計數復雜度
- 管理復雜度
IEEE對軟件的定義
軟件是計算機程序、規程以及運行計算機系統可能需要的相關文檔和數據。
- 計算機程序是計算機設備可以接受的一系列指令和說明,為計算機執行提供所需的功能和性能。
- 數據是事實、概念或指令的結構化表示,能夠被計算機設備接收、理解或處理。
- 文檔是描述程序研制過程、方法及使用的圖文材料
IEEE 對軟件工程的定義
軟件工程是:
- 將系統化的、規范的、可量化的方法應用于軟件的開發、運行和維護,即將工程化方法應用于軟件。
- 對(1)中所述方法的研究。
什么是軟件工程
- 軟件工程是一項建模活動
- 軟件工程是一項解決問題活動
- 軟件工程是一項受事物基本原理指導的活動、
什么是建模
- 對系統抽象的表示,可以了解未知的系統和領域。
為什么需要建模
- 系統太大、太小、太復雜或體驗代價太高時,需要模型。
應用域模型
從用戶角度去描述的系統
解答域模型
從開發者的角度去描述的系統,評估具體實現時不同的方案
面向對象的方法將應用域建模和解答域建模合二為一,
面向對象方法的思想:解答域模型就是從應用域模型轉化過來的。
采用UML對應用域及解答域建模,然后將其轉化為具體實現
軟件工程概念
功能性需求
系統必須支持功能的規格說明
非功能性需求
是對系統運行的一些約束,指導著系統如何去實現
軟件工程開發活動
- 需求獲取
- 分析
- 系統設計
- 對象設計
- 實現
- 測試
需求獲取
客戶和開發者定義系統目標,其結果是使用參與者和用 例來描述系統,包括功能性需求和非功能性需求
分析
將需求分析中產生的用例轉化順序圖和狀態圖