关于我们
书单推荐
新书推荐
|
软件建模与设计:UML、用例、模式和软件体系结构
本书介绍了关于软件应用建模和设计的知识。从UML中的用况到软件体系结构,本书展示了如何在解决现实世界问题的过程中应用COMET,介绍了针对各种体系结构的模式,包括客户端/服务器以及基于构件的软件体系结构中的客户端/服务模式,面向服务的体系结构中的代理、发现和事务模式,实时软件体系结构中的实时控制模式,软件产品线体系结构的分层模式。此外,还介绍了软件质量属性,包括可维护性、可修改性、可测试性、可追踪性、可伸缩性、可复用性、性能、可用性和安全性。
Software Modeling & Design: UML, Use Cases, Patterns, & Software Architectures
出版者的话 译者序 前言 本书导读 致谢 第一部分 概览 第1章 引言 2 1.1 软件建模 2 1.2 面向对象方法与统一建模语言 2 1.3 软件体系结构设计 3 1.4 方法和表示法 3 1.5 COMET:一种基于UML的软件应用建模和设计方法 4 1.6 UML标准 4 1.7 软件体系结构的多视图 5 1.8 软件建模和设计方法的发展 5 1.9 面向对象分析和设计方法的发展 7 1.10 并发、分布式和实时设计方法 8 1.11 总结 8 练习 8 第2章 UML表示法概述 10 2.1 UML图 10 2.2 用例图 10 2.3 类和对象 11 2.4 类图 12 2.4.1 关联 12 2.4.2 聚合和组合层次 12 2.4.3 泛化和特化层次 13 2.4.4 可见性 13 2.5 交互图 13 2.5.1 通信图 13 2.5.2 顺序图 13 2.6 状态机图 14 2.7 包 15 2.8 并发通信图 16 2.9 部署图 17 2.10 UML扩展机制 17 2.10.1 构造型 18 2.10.2 标记值 18 2.10.3 约束 18 2.11 本书的约定 19 2.11.1 需求建模 19 2.11.2 分析建模 19 2.11.3 设计建模 20 2.12 总结 20 练习 20 第3章 软件生存周期模型和过程 22 3.1 软件生存周期模型 22 3.1.1 瀑布生存周期模型 22 3.1.2 瀑布模型的局限性 22 3.1.3 抛弃型原型 24 3.1.4 通过增量开发的演化式原型 24 3.1.5 抛弃型原型和增量开发的结合 24 3.1.6 螺旋模型 27 3.1.7 统一软件开发过程 27 3.2 设计验证和确认 28 3.2.1 软件质量保证 29 3.2.2 软件设计的性能分析 29 3.3 软件生存周期的活动 29 3.3.1 需求分析和规约 29 3.3.2 体系结构设计 29 3.3.3 详细设计 30 3.3.4 编码 30 3.4 软件测试 30 3.4.1 单元测试 30 3.4.2 集成测试 30 3.4.3 系统测试 30 3.4.4 验收测试 30 3.5 总结 31 练习 31 第4章 软件设计和体系结构概念 32 4.1 面向对象概念 32 4.2 信息隐藏 33 4.2.1 面向对象设计中的信息隐藏 34 4.2.2 信息隐藏示例 34 4.2.3 设计信息隐藏对象 36 4.3 继承和泛化/特化 36 4.4 并发处理 37 4.4.1 顺序应用与并发应用 38 4.4.2 并发对象 38 4.4.3 并发对象间的协作 38 4.4.4 同步问题 38 4.4.5 生产者/消费者问题 40 4.4.6 异步消息通信 40 4.4.7 带回复的同步消息通信 40 4.5 设计模式 41 4.6 软件体系结构和构件 41 4.6.1 构件和构件接口 42 4.6.2 连接器 42 4.7 软件质量属性 42 4.8 总结 42 练习 43 第5章 软件建模和设计方法概览 44 5.1 COMET基于用例的软件生存周期 44 5.1.1 需求建模 44 5.1.2 分析建模 44 5.1.3 设计建模 44 5.1.4 增量软件构建 46 5.1.5 增量软件集成 46 5.1.6 系统测试 46 5.2 COMET生存周期与其他软件过程的比较 46 5.2.1 COMET生存周期与统一软件开发过程对比 46 5.2.2 COMET生存周期与螺旋模型对比 47 5.3 需求、分析和设计建模 47 5.3.1 需求建模中的活动 47 5.3.2 分析建模中的活动 47 5.3.3 设计建模中的活动 48 5.4 设计软件体系结构 48 5.5 总结 49 练习 49 第二部分 软件建模 第6章 用例建模 52 6.1 需求建模 52 6.1.1 需求分析 52 6.1.2 需求规约 53 6.1.3 软件需求规约的质量属性 53 6.2 用例 54 6.3 参与者 55 6.3.1 参与者、角色和用户 55 6.3.2 主要和次要参与者 55 6.3.3 对参与者建模 55 6.3.4 谁是参与者 57 6.4 标识用例 57 6.5 用例模型中文档化用例 57 6.6 用例描述示例 58 6.7 用例关系 59 6.8 包含关系 59 6.8.1 包含关系和包含用例示例 60 6.8.2 结构化冗长的用例 61 6.9 扩展关系 61 6.9.1 扩展点 62 6.9.2 扩展点和扩展用例示例 62 6.10 用例组织指南 64 6.11 规定非功能性需求 64 6.12 用例包 65 6.13 活动图 65 6.14 总结 66 练习 67 第7章 静态建模 68 7.1 类之间的关联 68 7.1.1 类图描述关联 68 7.1.2 关联的多重性 69 7.1.3 三元关联 71 7.1.4 一元关联 71 7.1.5 关联类 71 7.2 组合和聚合层次 72 7.3 泛化/特化层次 73 7.4 约束 73 7.5 静态建模和UML 74 7.6 系统上下文的静态建模 75 7.7 使用UML构造型对类分类 76 7.8 外部类建模 77 7.8.1 从外部类开发软件系统上下文类图示例 78 7.8.2 参与者和外部类 78 7.8.3 从参与者开发软件系统上下文类图示例 79 7.9 实体类的静态建模 80 7.10 总结 81 练习 82 第8章 对象和类组织 83 8.1 对象和类的组织准则 83 8.2 对应用类和对象建模 83 8.3 对象和类的组织分类 84 8.4 外部类与软件边界类 85 8.5 边界类和对象 85 8.5.1 用户交互对象 85 8.5.2 代理对象 86 8.5.3 设备I/O边界对象 87 8.5.4 描述外部类和边界类 88 8.6 实体类和对象 89 8.7 控制类和对象 90 8.7.1 协调者对象 90 8.7.2 状态相关的控制对象 91 8.7.3 计时器对象 91 8.8 应用逻辑类和对象 92 8.8.1 业务逻辑对象 92 8.8.2 算法对象 92 8.8.3 服务对象 94 8.9 总结 94 练习 94 第9章 动态交互建模 96 9.1 对象交互建模 96 9.1.1 通信图 96 9.1.2 顺序图 97 9.1.3 对象交互建模的分析和设计决策 97 9.1.4 顺序图和通信图对比 98 9.1.5 用例和场景 98 9.1.6 通用和实例形式的交互图 99 9.2 交互图上的消息序列编号 99 9.2.1 交互图上的消息标签 99 9.2.2 交互图上的消息序列编号 100 9.2.3 并发和可替换的消息序列 100 9.2.4 消息序列描述 101 9.3 动态交互建模 101 9.4 无状态动态交互建模 101 9.5 无状态动态交互建模示例 102 9.5.1 查看警报示例 102 9.5.2 下单请求示例 103 9.6 总结 110 练习 110 第10章 有限状态机 112 10.1 有限状态机和状态转换 112 10.1.1 事件 112 10.1.2 状态 113 10.2 状态图示例 113 10.2.1 ATM状态图示例 113 10.2.2 微波炉状态图示例 115 10.3 事件和警戒条件 116 10.4 动作 117 10.4.1 状态转换中的动作 117 10.4.2 进入动作 119 10.4.3 退出动作 119 10.5 层次化状态图 120 10.5.1 层次化状态分解 121 10.5.2 复合状态 121 10.5.3 状态转换的聚合 121 10.5.4 正交状态图 122 10.6 开发状态图的指导原则 123 10.7 从用例开发状态图 124 10.8 从用例开发状态图示例 125 10.8.1 为每个用例开发状态图 125 10.8.2 考虑可替换序列 126 10.8.3 开发集成的状态图 126 10.8.4 开发层次化状态图 128 10.9 总结 129 练习 130 第11章 状态相关的动态交互建模 132 11.1 状态相关的动态交互建模中的步骤 132 11.2 使用交互图和状态图对交互场景建模 132 11.3 状态相关的动态交互建模示例:银行系统 133 11.3.1 确定主序列 133 11.3.2 确定可替换序列 135 11.3.3 主序列:有效PIN码 136 11.3.4 可替换序列:无效PIN码 136 11.3.5 可替换序列:第三次无效PIN码 137 11.3.6 可替换序列:被盗的或过期的卡片 137 11.3.7 所有场景通用的交互图 138 11.3.8 控制对象和状态图的编序 138 11.4 总结 140 练习 141 第三部分 软件体系结构设计 第12章 软件体系结构概览 144 12.1 软件体系结构以及基于构件的软件体系结构 144 12.1.1 基于构件的软件体系结构 144 12.1.2 体系结构构造型 145 12.2 软件体系结构的多视图 145 12.2.1 软件体系结构的结构视图 145 12.2.2 软件体系结构的动态视图 145 12.2.3 软件体系结构的部署视图 147 12.3 软件体系结构模式 147 12.3.1 抽象分层体系结构模式 148 12.3.2 调用/返回模式 150 12.3.3 异步消息通信模式 150 12.3.4 带回复的同步消息通信模式 153 12.4 描述软件体系结构模式 153 12.5 接口设计 154 12.6 设计软件体系结构 155 12.7 总结 157 练习 157 第13章 软件子系统体系结构设计 159 13.1 软件体系结构设计中的问题 159 13.2 集成通信图 160 13.3 子系统设计中的关注点分离 162 13.3.1 复合对象 162 13.3.2 地理位置 164 13.3.3 客户端和服务 164 13.3.4 用户交互 164 13.3.5 外部对象的接口 164 13.3.6 控制范围 165 13.4 子系统组织准则 166 13.4.1 客户端子系统 166 13.4.2 用户交互子系统 166 13.4.3 服务子系统 168 13.4.4 控制子系统 168 13.4.5 协调者子系统 169 13.4.6 输入/输出子系统 170 13.5 子系统间消息通信的决策 170 13.6 总结 172 练习 172 第14章 设计面向对象的软件体系结构 174 14.1 面向对象的软件体系结构的概念、体系结构和模式 174 14.2 设计信息隐藏类 174 14.3 设计类接口和操作 175 14.3.1 基于交互模型设计类操作 175 14.3.2 基于交互模型设计类操作示例 176 14.3.3 基于静态模型设计类操作 177 14.4 数据抽象类 177 14.5 状态机类 178 14.6 图形用户交互类 179 14.7 业务逻辑类 180 14.8 设计中的继承 180 14.8.1 类继承 180 14.8.2 抽象类 182 14.8.3 抽象类和子类示例 182 14.8.4 抽象超类和子类设计 184 14.9 类接口规约 185 14.10 信息隐藏类的详细设计 186 14.10.1 账户抽象超类的详细设计 187 14.10.2 支票账户子类的详细设计 187 14.10.3 储蓄账户子类的详细设计 188 14.11 多态和动态绑定 188 14.12 Java中类的实现 189 14.13 总结 190 练习 190 第15章 设计客户端/服务器软件体系结构 192 15.1 客户端/服务器体系结构的概念、体系结构和模式 192 15.2 客户端/服务软件体系结构的结构模式 192 15.2.1 多客户端/单服务体系结构模式 192 15.2.2 多客户端/多服务体系结构模式 194 15.2.3 多层客户端/服务体系结构模式 195 15.3 客户端/服务器体系结构的通信模式 195 15.3.1 带回复的同步消息通信模式 196 15.3.2 带回调的异步消息通信模式 196 15.4 客户端/服务器系统的中间件 197 15.4.1 客户端/服务器系统平台 197 15.4.2 Java远程方法调用 198 15.5 服务子系统的设计 199 15.5.1 顺序性服务的设计 199 15.5.2 顺序性服务设计示例 199 15.5.3 并发服务设计 200 15.6 包装器类的设计 202 15.6.1 数据库包装器类的设计 202 15.6.2 数据库包装器类示例 202 15.7 从静态模型到关系数据库的设计 203 15.7.1 关系数据库概念 203 15.7.2 确定主键 204 15.7.3 将关联映射到外键 204 15.7.4 将关联类映射到关联表 205 15.7.5 将整体/部分关系映射到关系数据库 206 15.7.6 将泛化/特化关系映射到关系数据库 207 15.8 总结 208 练习 208 第16章 设计面向服务的体系结构 210 16.1 面向服务的体系结构的概念、体系结构和模式 210 16.2 软件体系结构代理者模式 211 16.2.1 服务注册模式 211 16.2.2 代理者转发模式 212 16.2.3 代理者句柄模式 212 16.2.4 服务发现模式 213 16.3 面向服务的体系结构的技术支持 214 16.3.1 Web服务协议 214 16.3.2 Web服务 214 16.3.3 注册服务 214 16.3.4 代理和发现服务 215 16.4 软件体系结构事务模式 215 16.4.1 两阶段提交协议模式 216 16.4.2 复合事务模式 218 16.4.3 长事务模式 218 16.5 协商模式 219 16.6 面向服务体系结构中的服务接口设计 221 16.7 面向服务体系结构中的服务协调 222 16.8 设计面向服务的体系结构 223 16.9 服务复用 225 16.10 总结 225 练习 225 第17章 设计基于构件的软件体系结构 227 17.1 基于构件的软件体系结构的概念、体系结构和模式 227 17.2 设计基于构件的分布式软件体系结构 228 17.3 复合子系统和构件 228 17.4 使用UML建模构件 229 17.4.1 构件接口设计 229 17.4.2 供给和请求接口 230 17.4.3 连接器和交互构件 230 17.4.4 设计复合构件 231 17.5 构件组织准则 232 17.5.1 与物理数据源的邻近性 232 17.5.2 局部自治性 232 17.5.3 性能 233 17.5.4 特定硬件 233 17.5.5 I/O构件 234 17.6 组消息通信模式 234 17.6.1 广播消息通信模式 234 17.6.2 订阅/通知消息通信模式 234 17.6.3 使用订阅和通知的并发服务设计 236 17.7 应用部署 237 17.7.1 应用部署事务 237 17.7.2 应用部署示例 239 17.8 总结 239 练习 239 第18章 设计并发和实时软件体系结构 241 18.1 并发和实时软件体系结构的概念、体系结构及模式 241 18.2 实时系统的特点 241 18.3 实时软件体系结构中的控制模式 242 18.3.1 集中式控制体系结构模式 242 18.3.2 分布式控制体系结构模式 242 18.3.3 层次化控制体系结构模式 243 18.4 并发任务组织 244 18.5 I/O任务组织准则 244 18.5.1 事件驱动I/O任务 244 18.5.2 周期性I/O任务 245 18.5.3 按需驱动I/O任务 247 18.6 内部任务组织准则 248 18.6.1 周期性任务 248 18.6.2 按需驱动任务 248 18.6.3 控制任务 249 18.6.4 用户交互任务 250 18.7 开发并发任务体系结构 252 18.8 任务通信和同步 254 18.8.1 异步(松耦合)消息通信 254 18.8.2 带回复的同步(紧耦合)消息通信 254 18.8.3 不带回复的同步(紧耦合)消息通信 255 18.8.4 事件同步 255 18.8.5 信息隐藏对象上的任务交互 256 18.8.6 修正的并发通信图 257 18.9 任务接口和任务行为规约 257 18.9.1 针对银行服务任务的TIS示例 259 18.9.2 针对读卡器接口任务的TIS示例 259 18.10 Java中并发任务的实现 260 18.11 总结 260 练习 261 第19章 设计软件产品线体系结构 262 19.1 演化软件产品线工程 262 19.2 软件产品线的需求建模 263 19.2.1 软件产品线的用例建模 263 19.2.2 特征建模 264 19.3 软件产品线的分析建模 266 19.3.1 软件产品线的静态建模 266 19.3.2 软件产品线的动态交互建模 266 19.4 软件产品线的动态状态机建模 268 19.5 软件产品线的设计建模 269 19.5.1 建模基于构件的软件体系结构 269 19.5.2 软件体系结构模式 270 19.6 总结 270 练习 271 第20章 软件质量属性 272 20.1 可维护性 272 20.2 可修改性 273 20.3 可测试性 274 20.4 可追踪性 274 20.5 可扩展性 276 20.6 可复用性 276 20.7 性能 277 20.8 安全性 278 20.9 可用性 278 20.10 总结 279 练习 279 第四部分 案例研究 第21章 客户端/服务器软件体系结构案例研究:银行系统 282 21.1 问题描述 282 21.2 用例模型 282 21.2.1 “验证PIN码”用例 284 21.2.2 具体的“取款”用例 284 21.2.3 具体的“查询账户”用例 285 21.2.4 具体的“转账”用例 286 21.3 静态建模 286 21.3.1 问题域的静态建模 286 21.3.2 系统上下文的静态建模 286 21.3.3 实体类的静态建模 289 21.4 对象组织 290 21.4.1 客户端/服务器子系统组织 290 21.4.2 ATM客户端对象和类的组织:边界对象 291 21.4.3 ATM客户端对象和类的组织:用例中的对象 292 21.4.4 服务子系统中的对象组织 293 21.5 动态建模 293 21.5.1 客户端验证PIN码交互图的消息序列描述 294 21.5.2 服务器端验证PIN码交互图的消息序列描述 297 21.5.3 客户端取款交互图的消息序列描述 298 21.5.4 服务器端取款交互图的消息序列描述 299 21.6 ATM状态图 303 21.6.1 处理客户输入复合状态 304 21.6.2 处理交易复合状态 306 21.6.3 结束交易复合状态 307 21.7 银行系统的设计 308 21.8 集成通信模型 308 21.9 将系统划分为子系统 310 21.10 ATM客户端子系统的设计 310 21.10.1 设计ATM子系统并发任务体系结构 311 21.10.2 定义ATM子系统任务接口 312 21.10.3 设计ATM客户端信息隐藏类 314 21.11 银行服务子系统的设计 316 21.11.1 设计银行服务子系统并发任务体系结构 316 21.11.2 设计银行服务信息隐藏类 317 21.11.3 设计银行服务接口 318 21.12 关系数据库设计 318 21.13 银行系统的部署 320 21.14 其他设计考虑 322 21.15 详细设计 322 21.15.1 读卡器接口任务的事件顺序逻辑示例 322 21.15.2 ATM控制任务的事件顺序逻辑示例 323 21.15.3 银行服务任务的事件顺序逻辑示例 324 第22章 面向服务的体系结构案例研究:在线购物系统 326 22.1 问题描述 326 22.2 用例建模 326 22.2.1 “浏览目录”用例描述 327 22.2.2 “下单请求”用例描述 328 22.2.3 “处理配送订单”用例描述 328 22.2.4 “确认配送和给客户开账单”用例描述 329 22.2.5“查看订单”用例的活动图 331 22.3 静态建模 331 22.3.1 软件系统上下文建模 331 22.3.2 问题域的静态实体类建模 331 22.4 对象和类组织 332 22.5 动态建模 333 22.5.1 “浏览目录”用例的动态建模 333 22.5.2 “下单请求”用例的动态建模 334 22.5.3 “处理配送订单”用例的动态建模 335 22.5.4 “确认配送和给客户开账单”用例的动态建模 336 22.5.5 “查看订单”用例的动态建模 337 22.6 面向服务体系结构的代理者和包装器技术支持 338 22.7 设计建模 338 22.7.1 面向服务的体系结构概述 338 22.7.2 分层软件体系结构 338 22.7.3 体系结构通信模式 339 22.7.4 并发软件设计 339 22.7.5 服务接口设计 341 22.7.6 面向服务的软件体系结构设计 344 22.7.7 构件端口和接口设计 346 22.8 服务复用 347 第23章 基于构件的软件体系结构案例研究:应急监控系统 348 23.1 问题描述 348 23.2 用例建模 348 23.2.1 “查看监控数据”用例描述 349 23.2.2 “查看警报”用例描述 349 23.2.3 “生成监控数据”用例描述 350 23.2.4 “生成警报”用例描述 350 23.3 静态建模 351 23.4 动态建模 351 23.4.1 类和对象组织 351 23.4.2 用例的通信图 352 23.4.3 “查看警报”用例的通信图 352 23.4.4 “查看监控数据”用例的通信图 353 23.4.5 “生成警报”用例的通信图 354 23.4.6 “生成监控状态”用例的通信图 354 23.5 设计建模 355 23.5.1 集成的通信图 355 23.5.2 基于构件的分层体系结构 355 23.5.3 体系结构通信模式 357 23.5.4 基于分布式构件的软件体系结构 359 23.5.5 构件和服务接口设计 359 23.6 软件构件部署 362 第24章 实时软件体系结构案例研究:自动引导车辆系统 363 24.1 问题描述 363 24.2 用例建模 363 24.2.1 “移动到站点”用例 364 24.2.2 “发送车辆状态”用例 364 24.3 静态建模 365 24.3.1 概念静态模型 365 24.3.2 软件系统上下文建模 365 24.4 对象和类组织 366 24.5 动态状态机建模 366 24.6 动态交互建模 367 24.6.1 “移动到站点”用例的动态建模 367 24.6.2 “发送车辆状态”用例的动态建模 370 24.7 设计建模 370 24.7.1 集成通信图 370 24.7.2 基于构件的工厂自动化系统软件体系结构 370 24.7.3 自动引导车辆系统的软件体系结构 372 24.7.4 并发软件体系结构 373 24.7.5 体系结构通信模式 373 24.7.6 基于构件的软件体系结构 375 24.7.7 构件接口设计 377 附录A 软件体系结构模式分类 379 附录B 教学考虑 400 术语表 402 练习答案 412 参考文献 413 索引 420
你还可能感兴趣
我要评论
|