內容簡介
《軟體建模與設計:UML、用例、模式和軟體體系結構》介紹了關於軟體套用建模和設計的知識。從UML中的用況到軟體體系結構,本書展示了如何在解決現實世界問題的過程中套用COMET,介紹了針對各種體系結構的模式,包括客戶端/伺服器以及基於構件的軟體體系結構中的客戶端/服務模式,面向服務的體系結構中的代理、發現和事務模式,實時軟體體系結構中的實時控制模式,軟體產品線體系結構的分層模式。此外,還介紹了軟體質量屬性,包括可維護性、可修改性、可測試性、可追蹤性、可伸縮性、可復用性、性能、可用性和安全性。
圖書目錄
第一部分 概覽
第1章 引言
1.1 軟體建模
1.2 面向對象方法與統一建模語言
1.3 軟體體系結構設計
1.4 方法和表示法
1.5 COMET:一種基於UML的軟體套用建模和設計方法
1.6 UML標準
1.7 軟體體系結構的多視圖
1.8 軟體建模和設計方法的發展
1.9 面向對象分析和設計方法的發展
1.10 並發、分散式和實時設計方法
1.11 總結
練習
第2章 UML表示法概述
2.1 UML圖
2.2 用例圖
2.3 類和對象
2.4 類圖
2.4.1 關聯
2.4.2 聚合和組合層次
2.4.3 泛化和特化層次
2.4.4 可見性
2.5 互動圖
2.5.1 通信圖
2.5.2 順序圖
2.6 狀態機圖
2.7 包
2.8 並發通信圖
2.9 部署圖
2.10 UML擴展機制
2.10.1 構造型
2.10.2 標記值
2.10.3 約束
2.11 本書的約定
2.11.1 需求建模
2.11.2 分析建模
2.11.3 設計建模
2.12 總結
練習
第3章 軟體生存周期模型和過程
3.1 軟體生存周期模型
3.1.1 瀑布生存周期模型
3.1.2 瀑布模型的局限性
3.1.3 拋棄型原型
3.1.4 通過增量開發的演化式原型
3.1.5 拋棄型原型和增量開發的結合
3.1.6 螺旋模型
3.1.7 統一軟體開發過程
3.2 設計驗證和確認
3.2.1 軟體質量保證
3.2.2 軟體設計的性能分析
3.3 軟體生存周期的活動
3.3.1 需求分析和規約
3.3.2 體系結構設計
3.3.3 詳細設計
3.3.4 編碼
3.4 軟體測試
3.4.1 單元測試
3.4.2 集成測試
3.4.3 系統測試
3.4.4 驗收測試
3.5 總結
練習
第4章 軟體設計和體系結構概念
4.1 面向對象概念
4.2 信息隱藏
4.2.1 面向對象設計中的信息隱藏
4.2.2 信息隱藏示例
4.2.3 設計信息隱藏對象
4.3 繼承和泛化/特化
4.4 並發處理
4.4.1 順序套用與並發套用
4.4.2 並發對象
4.4.3 並發對象間的協作
4.4.4 同步問題
4.4.5 生產者/消費者問題
4.4.6 異步訊息通信
4.4.7 帶回復的同步訊息通信
4.5 設計模式
4.6 軟體體系結構和構件
4.6.1 構件和構件接口
4.6.2 連線器
4.7 軟體質量屬性
4.8 總結
練習
第5章 軟體建模和設計方法概覽
5.1 COMET基於用例的軟體生存周期
5.1.1 需求建模
5.1.2 分析建模
5.1.3 設計建模
5.1.4 增量軟體構建
5.1.5 增量軟體集成
5.1.6 系統測試
5.2 COMET生存周期與其他軟體過程的比較
5.2.1 COMET生存周期與統一軟體開發過程對比
5.2.2 COMET生存周期與螺旋模型對比
5.3 需求、分析和設計建模
5.3.1 需求建模中的活動
5.3.2 分析建模中的活動
5.3.3 設計建模中的活動
5.4 設計軟體體系結構
5.5 總結
練習
第二部分 軟體建模
第6章 用例建模
6.1 需求建模
6.1.1 需求分析
6.1.2 需求規約
6.1.3 軟體需求規約的質量屬性
6.2 用例
6.3 參與者
6.3.1 參與者、角色和用戶
6.3.2 主要和次要參與者
6.3.3 對參與者建模
6.3.4 誰是參與者
6.4 標識用例
6.5 用例模型中文檔化用例
6.6 用例描述示例
6.7 用例關係
6.8 包含關係
6.8.1 包含關係和包含用例示例
6.8.2 結構化冗長的用例
6.9 擴展關係
6.9.1 擴展點
6.9.2 擴展點和擴展用例示例
6.10 用例組織指南
6.11 規定非功能性需求
6.12 用例包
6.13 活動圖
6.14 總結
練習
第7章 靜態建模
7.1 類之間的關聯
7.1.1 類圖描述關聯
7.1.2 關聯的多重性
7.1.3 三元關聯
7.1.4 一元關聯
7.1.5 關聯類
7.2 組合和聚合層次
7.3 泛化/特化層次
7.4 約束
7.5 靜態建模和UML
7.6 系統上下文的靜態建模
7.7 使用UML構造型對類分類
7.8 外部類建模
7.8.1 從外部類開發軟體系統上下文類圖示例
7.8.2 參與者和外部類
7.8.3 從參與者開發軟體系統上下文類圖示例
7.9 實體類的靜態建模
7.10 總結
練習
第8章 對象和類組織
8.1 對象和類的組織準則
8.2 對套用類和對象建模
8.3 對象和類的組織分類
8.4 外部類與軟體邊界類
8.5 邊界類和對象
8.5.1 用戶互動對象
8.5.2 代理對象
8.5.3 設備I/O邊界對象
8.5.4 描述外部類和邊界類
8.6 實體類和對象
8.7 控制類和對象
8.7.1 協調者對象
8.7.2 狀態相關的控制對象
8.7.3 計時器對象
8.8 套用邏輯類和對象
8.8.1 業務邏輯對象
8.8.2 算法對象
8.8.3 服務對象
8.9 總結
練習
第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 並發和可替換的訊息序列
9.2.4 訊息序列描述
9.3 動態互動建模
9.4 無狀態動態互動建模
9.5 無狀態動態互動建模示例
9.5.1 查看警報示例
9.5.2 下單請求示例
9.6 總結
練習
第10章 有限狀態機
10.1 有限狀態機和狀態轉換
10.1.1 事件
10.1.2 狀態
10.2 狀態圖示例
10.2.1 ATM狀態圖示例
10.2.2 微波爐狀態圖示例
10.3 事件和警戒條件
10.4 動作
10.4.1 狀態轉換中的動作
10.4.2 進入動作
10.4.3 退出動作
10.5 層次化狀態圖
10.5.1 層次化狀態分解
10.5.2 複合狀態
10.5.3 狀態轉換的聚合
10.5.4 正交狀態圖
10.6 開發狀態圖的指導原則
10.7 從用例開發狀態圖
10.8 從用例開發狀態圖示例
10.8.1 為每個用例開發狀態圖
10.8.2 考慮可替換序列
10.8.3 開發集成的狀態圖
10.8.4 開發層次化狀態圖
10.9 總結
練習
第11章 狀態相關的動態互動建模
11.1 狀態相關的動態互動建模中的步驟
11.2 使用互動圖和狀態圖對互動場景建模
11.3 狀態相關的動態互動建模示例:銀行系統
11.3.1 確定主序列
11.3.2 確定可替換序列
11.3.3 主序列:有效PIN碼
11.3.4 可替換序列:無效PIN碼
11.3.5 可替換序列:第三次無效PIN碼
11.3.6 可替換序列:被盜的或過期的卡片
11.3.7 所有場景通用的互動圖
11.3.8 控制對象和狀態圖的編序
11.4 總結
練習
第三部分 軟體體系結構設計
第12章 軟體體系結構概覽
12.1 軟體體系結構以及基於構件的軟體體系結構
12.1.1 基於構件的軟體體系結構
12.1.2 體系結構構造型
12.2 軟體體系結構的多視圖
12.2.1 軟體體系結構的結構視圖
12.2.2 軟體體系結構的動態視圖
12.2.3 軟體體系結構的部署視圖
12.3 軟體體系結構模式
12.3.1 抽象分層體系結構模式
12.3.2 調用/返回模式
12.3.3 異步訊息通信模式
12.3.4 帶回復的同步訊息通信模式
12.4 描述軟體體系結構模式
12.5 接口設計
12.6 設計軟體體系結構
12.7 總結
練習
第13章 軟體子系統體系結構設計
13.1 軟體體系結構設計中的問題
13.2 集成通信圖
13.3 子系統設計中的關注點分離
13.3.1 複合對象
13.3.2 地理位置
13.3.3 客戶端和服務
13.3.4 用戶互動
13.3.5 外部對象的接口
13.3.6 控制範圍
13.4 子系統組織準則
13.4.1 客戶端子系統
13.4.2 用戶互動子系統
13.4.3 服務子系統
13.4.4 控制子系統
13.4.5 協調者子系統
13.4.6 輸入/輸出子系統
13.5 子系統間訊息通信的決策
13.6 總結
練習
第14章 設計面向對象的軟體體系結構
14.1 面向對象的軟體體系結構的概念、體系結構和模式
14.2 設計信息隱藏類
14.3 設計類接口和操作
14.3.1 基於互動模型設計類操作
14.3.2 基於互動模型設計類操作示例
14.3.3 基於靜態模型設計類操作
14.4 數據抽象類
14.5 狀態機類
14.6 圖形用戶互動類
14.7 業務邏輯類
14.8 設計中的繼承
14.8.1 類繼承
14.8.2 抽象類
14.8.3 抽象類和子類示例
14.8.4 抽象超類和子類設計
14.9 類接口規約
14.10 信息隱藏類的詳細設計
14.10.1 賬戶抽象超類的詳細設計
14.10.2 支票賬戶子類的詳細設計
14.10.3 儲蓄賬戶子類的詳細設計
14.11 多態和動態綁定
14.12 Java中類的實現
14.13 總結
練習
第15章 設計客戶端/伺服器軟體體系結構
15.1 客戶端/伺服器體系結構的概念、體系結構和模式
15.2 客戶端/服務軟體體系結構的結構模式
15.2.1 多客戶端/單服務體系結構模式
15.2.2 多客戶端/多服務體系結構模式
15.2.3 多層客戶端/服務體系結構模式
15.3 客戶端/伺服器體系結構的通信模式
15.3.1 帶回復的同步訊息通信模式
15.3.2 帶回調的異步訊息通信模式
15.4 客戶端/伺服器系統的中間件
15.4.1 客戶端/伺服器系統平台
15.4.2 Java遠程方法調用
15.5 服務子系統的設計
15.5.1 順序性服務的設計
15.5.2 順序性服務設計示例
15.5.3 並發服務設計
15.6 包裝器類的設計
15.6.1 資料庫包裝器類的設計
15.6.2 資料庫包裝器類示例
15.7 從靜態模型到關係資料庫的設計
15.7.1 關係資料庫概念
15.7.2 確定主鍵
15.7.3 將關聯映射到外鍵
15.7.4 將關聯類映射到關聯表
15.7.5 將整體/部分關係映射到關係資料庫
15.7.6 將泛化/特化關係映射到關係資料庫
15.8 總結
練習
第16章 設計面向服務的體系結構
16.1 面向服務的體系結構的概念、體系結構和模式
16.2 軟體體系結構代理者模式
16.2.1 服務註冊模式
16.2.2 代理者轉發模式
16.2.3 代理者句柄模式
16.2.4 服務發現模式
16.3 面向服務的體系結構的技術支持
16.3.1 Web服務協定
16.3.2 Web服務
16.3.3 註冊服務
16.3.4 代理和發現服務
16.4 軟體體系結構事務模式
16.4.1 兩階段提交協定模式
16.4.2 複合事務模式
16.4.3 長事務模式
16.5 協商模式
16.6 面向服務體系結構中的服務接口設計
16.7 面向服務體系結構中的服務協調
16.8 設計面向服務的體系結構
16.9 服務復用
16.10 總結
練習
第17章 設計基於構件的軟體體系結構
17.1 基於構件的軟體體系結構的概念、體系結構和模式
17.2 設計基於構件的分散式軟體體系結構
17.3 複合子系統和構件
17.4 使用UML建模構件
17.4.1 構件接口設計
17.4.2 供給和請求接口
17.4.3 連線器和互動構件
17.4.4 設計複合構件
17.5 構件組織準則
17.5.1 與物理數據源的鄰近性
17.5.2 局部自治性
17.5.3 性能
17.5.4 特定硬體
17.5.5 I/O構件
17.6 組訊息通信模式
17.6.1 廣播訊息通信模式
17.6.2 訂閱/通知訊息通信模式
17.6.3 使用訂閱和通知的並發服務設計
17.7 套用部署
17.7.1 套用部署事務
17.7.2 套用部署示例
17.8 總結
練習
第18章 設計並發和實時軟體體系結構
18.1 並發和實時軟體體系結構的概念、體系結構及模式
18.2 實時系統的特點
18.3 實時軟體體系結構中的控制模式
18.3.1 集中式控制體系結構模式
18.3.2 分散式控制體系結構模式
18.3.3 層次化控制體系結構模式
18.4 並發任務組織
18.5 I/O任務組織準則
18.5.1 事件驅動I/O任務
18.5.2 周期性I/O任務
18.5.3 按需驅動I/O任務
18.6 內部任務組織準則
18.6.1 周期性任務
18.6.2 按需驅動任務
18.6.3 控制任務
18.6.4 用戶互動任務
18.7 開發並發任務體系結構
18.8 任務通信和同步
18.8.1 異步(松耦合)訊息通信
18.8.2 帶回復的同步(緊耦合)訊息通信
18.8.3 不帶回復的同步(緊耦合)訊息通信
18.8.4 事件同步
18.8.5 信息隱藏對象上的任務互動
18.8.6 修正的並發通信圖
18.9 任務接口和任務行為規約
18.9.1 針對銀行服務任務的TIS示例
18.9.2 針對讀卡器接口任務的TIS示例
18.10 Java中並發任務的實現
18.11 總結
練習
第19章 設計軟體產品線體系結構
19.1 演化軟體產品線工程
19.2 軟體產品線的需求建模
19.2.1 軟體產品線的用例建模
19.2.2 特徵建模
19.3 軟體產品線的分析建模
19.3.1 軟體產品線的靜態建模
19.3.2 軟體產品線的動態互動建模
19.4 軟體產品線的動態狀態機建模
19.5 軟體產品線的設計建模
19.5.1 建模基於構件的軟體體系結構
19.5.2 軟體體系結構模式
19.6 總結
練習
第20章 軟體質量屬性
20.1 可維護性
20.2 可修改性
20.3 可測試性
20.4 可追蹤性
20.5 可擴展性
20.6 可復用性
20.7 性能
20.8 安全性
20.9 可用性
20.10 總結
練習
第四部分 案例研究
第21章 客戶端/伺服器軟體體系結構案例研究:銀行系統
21.1 問題描述
21.2 用例模型
21.2.1 “驗證PIN碼”用例
21.2.2 具體的“取款”用例
21.2.3 具體的“查詢賬戶”用例
21.2.4 具體的“轉賬”用例
21.3 靜態建模
21.3.1 問題域的靜態建模
21.3.2 系統上下文的靜態建模
21.3.3 實體類的靜態建模
21.4 對象組織
21.4.1 客戶端/伺服器子系統組織
21.4.2 ATM客戶端對象和類的組織:邊界對象
21.4.3 ATM客戶端對象和類的組織:用例中的對象
21.4.4 服務子系統中的對象組織
21.5 動態建模
21.5.1 客戶端驗證PIN碼互動圖的訊息序列描述
21.5.2 伺服器端驗證PIN碼互動圖的訊息序列描述
21.5.3 客戶端取款互動圖的訊息序列描述
21.5.4 伺服器端取款互動圖的訊息序列描述
21.6 ATM狀態圖
21.6.1 處理客戶輸入複合狀態
21.6.2 處理交易複合狀態
21.6.3 結束交易複合狀態
21.7 銀行系統的設計
21.8 集成通信模型
21.9 將系統劃分為子系統
21.10 ATM客戶端子系統的設計
21.10.1 設計ATM子系統並發任務體系結構
21.10.2 定義ATM子系統任務接口
21.10.3 設計ATM客戶端信息隱藏類
21.11 銀行服務子系統的設計
21.11.1 設計銀行服務子系統並發任務體系結構
21.11.2 設計銀行服務信息隱藏類
21.11.3 設計銀行服務接口
21.12 關係資料庫設計
21.13 銀行系統的部署
21.14 其他設計考慮
21.15 詳細設計
21.15.1 讀卡器接口任務的事件順序邏輯示例
21.15.2 ATM控制任務的事件順序邏輯示例
21.15.3 銀行服務任務的事件順序邏輯示例
第22章 面向服務的體系結構案例研究:線上購物系統
22.1 問題描述
22.2 用例建模
22.2.1 “瀏覽目錄”用例描述
22.2.2 “下單請求”用例描述
22.2.3 “處理配送訂單”用例描述
22.2.4 “確認配送和給客戶開賬單”用例描述
22.2.5“查看訂單”用例的活動圖
22.3 靜態建模
22.3.1 軟體系統上下文建模
22.3.2 問題域的靜態實體類建模
22.4 對象和類組織
22.5 動態建模
22.5.1 “瀏覽目錄”用例的動態建模
22.5.2 “下單請求”用例的動態建模
22.5.3 “處理配送訂單”用例的動態建模
22.5.4 “確認配送和給客戶開賬單”用例的動態建模
22.5.5 “查看訂單”用例的動態建模
22.6 面向服務體系結構的代理者和包裝器技術支持
22.7 設計建模
22.7.1 面向服務的體系結構概述
22.7.2 分層軟體體系結構
22.7.3 體系結構通信模式
22.7.4 並發軟體設計
22.7.5 服務接口設計
22.7.6 面向服務的軟體體系結構設計
22.7.7 構件連線埠和接口設計
22.8 服務復用
第23章 基於構件的軟體體系結構案例研究:應急監控系統
23.1 問題描述
23.2 用例建模
23.2.1 “查看監控數據”用例描述
23.2.2 “查看警報”用例描述
23.2.3 “生成監控數據”用例描述
23.2.4 “生成警報”用例描述
23.3 靜態建模
23.4 動態建模
23.4.1 類和對象組織
23.4.2 用例的通信圖
23.4.3 “查看警報”用例的通信圖
23.4.4 “查看監控數據”用例的通信圖
23.4.5 “生成警報”用例的通信圖
23.4.6 “生成監控狀態”用例的通信圖
23.5 設計建模
23.5.1 集成的通信圖
23.5.2 基於構件的分層體系結構
23.5.3 體系結構通信模式
23.5.4 基於分散式構件的軟體體系結構
23.5.5 構件和服務接口設計
23.6 軟體構件部署
第24章 實時軟體體系結構案例研究:自動引導車輛系統
24.1 問題描述
24.2 用例建模
24.2.1 “移動到站點”用例
24.2.2 “傳送車輛狀態”用例
24.3 靜態建模
24.3.1 概念靜態模型
24.3.2 軟體系統上下文建模
24.4 對象和類組織
24.5 動態狀態機建模
24.6 動態互動建模
24.6.1 “移動到站點”用例的動態建模
24.6.2 “傳送車輛狀態”用例的動態建模
24.7 設計建模
24.7.1 集成通信圖
24.7.2 基於構件的工廠自動化系統軟體體系結構
24.7.3 自動引導車輛系統的軟體體系結構
24.7.4 並發軟體體系結構
24.7.5 體系結構通信模式
24.7.6 基於構件的軟體體系結構
24.7.7 構件接口設計
附錄A 軟體體系結構模式分類
附錄B 教學考慮
術語表
練習答案
參考文獻
索引