目錄
前言
第1章 軟件工程概述
1.1 軟件概述
1.1.1 軟件的定義
1.1.2 軟件的特點
1.1.3 軟件的分類
1.1.4 軟件的發展
1.2 軟件危機
1.2.1 什么是軟件危機
1.2.2 產生的原因及解決途徑
1.3 軟件工程
1.3.1 軟件工程定義
1.3.2 軟件工程的研究內容
1.3.3 軟件工程的目標和原則
1.4 軟件開發方法
1.4.1 結構化方法
1.4.2 面向數據結構的開發方法
1.4.3 面向對象的方法
1.5 CASE工具
小結
第2章 軟件生命周期和過程模型
2.1 軟件生命周期
2.1.1 軟件定義
2.1.2 軟件開發
2.1.3 軟件運行與維護
2.2 軟件過程模型
2.2.1 瀑布模型
2.2.2 原型模型
2.2.3 螺旋模型
2.2.4 噴泉模型
2.2.5 增量模型
小結
第3章 可行性研究、流程圖
3.1 問題定義
3.2 可行性研究
3.2.1 可行性研究的任務
3.2.2 可行性研究的步驟
3.3 成本估計與效益分析
3.3.1 成本估算方法
3.3.2 效益估算
3.4 系統流程圖
3.4.1 系統流程圖的符號
3.4.2 系統流程圖舉例
3.5 制訂軟件計劃
3.5.1 確定軟件計劃
3.5.2 復審軟件計劃
小結
第4章 需求工程
4.1 需求的概念與內容
4.1.1 需求的問題
4.1.2 需求的定義和分類
4.1.3 需求的層次
4.2 需求工程
4.2.1 需求工程的定義
4.2.2 需求工程的方法
4.3 需求開發
4.3.1 需求獲取技術
4.3.2 需求建模
4.3.3 需求規格說明
4.3.4 需求評審
4.4 需求管理
4.4.1 需求變更控制
4.4.2 需求版本控制
4.4.3 需求跟蹤
4.4.4 需求狀態跟蹤
4.5 需求管理工具
小結
第5章 結構化分析方法
5.1 結構化分析方法概述
5.1.1 基本思想
5.1.2 分析過程
5.1.3 描述工具
5.2 數據流圖
5.2.1 數據流圖的結構
5.2.2 數據流與加工之間的關系
5.2.3 數據流圖的分層
5.2.4 數據流圖的繪制
5.2.5 繪圖數據流圖的注意事項
5.3 數據字典
5.3.1 數據字典的作用和內容
5.3.2 數據字典的用法及要求
5.3.3 數據字典的定義符號和編寫格式
5.4 加工邏輯說明
5.4.1 結構化關系
5.4.2 特征
5.4.3 模型
5.4.4 三種表達工具的比較
5.5 實例:供銷管理系統的需求分析
5.5.1 需求調研
5.5.2 需求建模
小結
第6章 面向對象基礎
6.1 傳統開發方法與面向對象的開發方法比較
6.1.1 結構化軟件工程方法的缺點
6.1.2 面向對象的方法的優點
6.2 面向對象的基本概念
6.3 面向對象的軟件開發過程
6.4 幾種典型的面向對象方法簡介
6.4.1 Booch的面向對象方法
6.4.2 Jacobson的面向對象方法
6.4.3 Coad-Yourdon的面向對象方法
6.4.4 James Rumbaugh的面向對象方法
6.5 統一建模語言UML
6.5.1 UML概述
6.5.2 UML的概念模型
6.5.3 UML的擴展機制
6.6 案例:基于UML的客戶服務記賬系統需求分析
6.6.1 問題描述
6.6.2 尋找參與者
6.6.3 尋找用例
6.6.4 確定參與者和用例之間的關系,繪制用例圖
6.6.5 編寫用例描述
小結
第7章 面向對象分析
7.1 面向對象分析過程
7.1.1 分析類的概念
7.1.2 分析過程
7.2 識別分析類
7.2.1 識別實體類
7.2.2 識別邊界類
7.2.3 識別控制類
7.2.4 交互原則
7.3 描述行為
7.3.1 消息與責任
7.3.2 登錄用例的順序圖
7.3.3 其他用例的順序圖
7.4 描述類
7.5 評審分析模型
小結
第8章 軟件設計基礎
8.1 軟件設計的目標和任務
8.1.1 軟件設計的目標
8.1.2 軟件設計的任務
8.2 軟件設計的概念與原則
8.2.1 模塊化與模塊獨立性
8.2.2 信息與邏輯控制
8.2.3 信息隱藏
8.3 軟件體系結構風格
8.3.1 管道-過濾器
8.3.2 倉庫體系結構
8.3.3 分層體系結構
8.3.4 MVC體系結構
8.3.5 三層C/S體系結構
8.3.6 C/S與B/S混合軟件體系結構
8.4 設計復審
小結
第9章 結構化設計方法
9.1 概要設計
9.1.1 基本概念
9.1.2 變換分析
9.1.3 事務分析
9.1.4 變換-事務混合分析
9.1.5 定義規則
9.1.6 設計優化
9.2 詳細設計
9.2.1 程序流程圖
9.2.2 繪圖
9.2.3 PAD圖
9.2.4 PDL
9.2.5 用戶界面
9.3 案例:供銷管理系統的設計
9.3.1 模塊結構設計
9.3.2 系統IPD圖
9.3.3 其他設計工作
小結
第10章 面向對象的設計
10.1 OOD概述
10.2 面向對象設計原則
10.2.1 單一職責原則
10.2.2 開放-封閉原則
10.2.3 Liskov替換原則
10.2.4 接口隔離原則
10.2.5 依賴倒置原則
10.3 系統體系結構設計
10.3.1 操作系統體系結構設計
10.3.2 硬件系統體系結構設計
10.4 系統設計
10.4.1 識別設計元素
10.4.2 數據存儲策略
10.5 詳細設計
10.5.1 方法和屬性建模
10.5.2 狀態建模
10.5.3 詳細類圖
10.6 評審設計模型
10.7 設計優化
10.7.1 確定優先級
10.7.2 提高效率的幾項技術
10.7.3 調整繼承關系
10.8 設計模式
10.8.1 設計模式的作用和研究意義
10.8.2 經典設計模式
10.8.3 設計模式的使用策略
小結
第11章 用戶界面設計
11.1 用戶界面基礎
11.1.1 交互模型和框架
11.1.2 人類工程學
11.1.3 用戶界面風格
11.2 用戶界面設計原則
11.2.1 用戶界面設計
11.2.2 減輕用戶的記憶負擔
11.2.3 保持界面一致
11.3 用戶界面設計過程
11.3.1 界面分析和建模
11.3.2 界面設計
11.3.3 界面實現和評估
小結
第12章 軟件實現
12.1 軟件實現的目標和任務
12.2 程序設計語言
12.2.1 程序設計語言的分類
12.2.2 程序設計語言的選擇
12.3 軟件編碼規范
12.3.1 頭文件規范
12.3.2 注釋規范
12.3.3 命名規范
12.3.4 排版規范
12.3.5 目錄結構規范
12.4 程序效率
12.4.1 運行速度的提高
12.4.2 存儲空間的優化
12.4.3 輸入/輸出效率的提高
12.5 軟件代碼審查
小結
第13章 軟件測試
13.1 軟件測試基礎
13.1.1 失敗的軟件案例
13.1.2 軟件缺陷概念
13.1.3 軟件測試概念
13.2 軟件測試技術
13.2.1 靜態黑盒測試
13.2.2 動態黑盒測試
13.2.3 靜態白盒測試
13.2.4 動態白盒測試
13.3 軟件測試策略
13.3.1 單元測試
13.3.2 集成測試
13.3.3 確認測試
13.3.4 系統測試
13.4 面向對象的軟件測試
13.4.1 面向對象測試類型
13.4.2 面向對象測試策略
13.4.3 面向對象測試用例設計
13.5 軟件調試
13.5.1 調試過程
13.5.2 調試方法
13.5.3 調試原則
13.6 軟件測試自動化
13.7 軟件測試管理
小結
第14章 軟件維護
14.1 軟件維護概述
14.1.1 軟件維護的產生及其目的
14.1.2 軟件維護的分類
14.1.3 維護的成本
14.2 軟件維護的特征
14.2.1 結構化維護和非結構化維護
14.2.2 維護可能存在的問題
14.2.3 影響軟件維護工作量的因素
14.3 軟件維護實施
14.3.1 軟件維護組織
14.3.2 軟件維護申請
14.3.3 維護過程
14.3.4 維護檔案記錄
14.3.5 維護評價
14.4 軟件可維護性
14.4.1 影響軟件可維護性的因素
14.4.2 軟件可維護性的度量
14.4.3 提高可維護性的策略
14.5 軟件維護的副作用
14.6 逆向工程和再工程
14.6.1 逆向工程
14.6.2 軟件再工程
小結
第15章 軟件項目管理
15.1 軟件項目管理概述
15.1.1 軟件項目的特點
15.1.2 軟件項目管理的特點和職能
15.2 人員的組織與管理
15.2.1 軟件項目組織
15.2.2 人員的配置和管理
15.3 成本的估計與控制
15.3.1 軟件開發成本估計方法
15.3.2 專家判斷法
15.3.3 成本估算模型
15.4 進度計劃
15.4.1 甘特圖法
15.4.2 工程網絡
15.4.3 項目活動工期估算的方法
15.4.4 關鍵路徑法(CPM)
15.5 軟件配置管理
15.5.1 軟件配置
15.5.2 軟件配置管理過程
15.6 風險分析與管理
15.6.1 軟件風險
15.6.2 風險識別
15.6.3 風險預測
15.6.4 風險規劃
15.7 項目管理工具
15.7.1 SourceSafe
15.7.2 CVS
15.7.3 ClearCase
15.7.4 軟件工程中的CASE工具
15.7.5 Microsoft Project 2010系列產品
小結
第16章 軟件工程新技術
16.1 XP技術
16.1.1 XP基本原則
16.1.2 XP軟件開發中的基本活動
16.1.3 XP的十二條慣例和規則
16.2 凈室軟件工程方法
16.2.1 凈室軟件工程目標
16.2.2 凈室理論基礎
16.2.3 凈室技術
16.2.4 凈室技術的發展
16.3 AOP編程
16.3.1 AOP的基本定義
16.3.2 開發步驟
16.3.3 AOP的關鍵技術
16.3.4 實現方法
16.3.5 AOP的技術優勢
16.4 軟件復用技術
16.4.1 軟件復用的分類
16.4.2 軟件復用技術
16.4.3 軟件復用的過程
16.4.4 軟件復用的發展
小結