|
第一部分 基本概念和背景知识 第1章 关于组件化技术软件工程 3 1.1 什么是好系统 3 1.2 我们拥有好系统吗 4 1.2.1 问题 4 1.2.2 灾难性故障 5 1.2.3 一个又一个的承诺 6 1.3 好系统是什么样的 6 1.3.1 封装:低耦合 8 1.3.2 抽象:高内聚 10 1.3.3 结构及组件 11 1.3.4 基于组件的设计:可插入性 12 1.4 如何构造好的系统 12 1.5 小结 13 第2章 对象概念 15 2.1 什么是对象 15 2.1.1 举例 16 2.1.2 消息 17 2.1.3 接口 17 2.1.4 类 18 2.2 与上一章目标的关系 20 2.3 继承 22 2.4 多态性与动态绑定 23 2.5 小结 25 第3章 用例方法介绍 27 3.1 问题提出 27 3.1.1 需求澄清 27 3.1.2 用例(use case)模型 28 3.2 范围界定和迭代 30 3.3 标识类 32 3.4 类间关系 33 3.5 系统中的交互 35 PANEL 3.1 契约设计1 37 3.5.1 系统中的变化:状态图 39 3.5.2 进一步的工作 39 PANEL 3.2 持久性 40 3.6 小结 41 3.7 讨论题 41 第4章 开发过程 43 4.1 术语定义 43 4.1.1 模型与建模语言 44 4.1.2 过程与质量 45 4.2 开发过程 45 4.2.1 有统一的方法学吗 47 4.2.2 使用UML的过程 48 4.3 系统、设计、建模与图 50 4.4 小结 51
第二部分 UML语言详述 第5章 类模型基础 55 5.1 标识对象和类 55 5.1.1 好的类模型具备的条件 55 5.1.2 如何建立良好的类模型 56 5.1.3 什么样的实体是类 58 5.1.4 现实世界对象与它们的系统表示 58 5.2 关联 59 5.3 属性和操作 61 5.3.1 操作 61 5.3.2 属性 62 5.4 泛化 63 PANEL 5.1 按照约定2设计:替代性 63 5.4.1 使用英语检查是否存在泛化 65 5.4.2 实现泛化:继承 65 5.5 开发中的类模型 66 5.6 CRC卡 67 5.6.1 建立CRC卡 67 5.6.2 在开发设计中使用CRC卡技术 67 5.6.3 CRC卡的例子 68 5.6.4 重构 69 5.7 小结 69 5.8 讨论题 69 第6章 类模型的进一步讨论 71 6.1 关联的进一步讨论 71 6.1.1 聚合与组合 71 6.1.2 角色 73 6.1.3 导航性 73 6.1.4 限定关联 75 6.1.5 导出关联 76 6.1.6 约束 77 PANEL 6.1 OCL对象约束语言 79 6.1.7 关联类 79 6.2 类的进一步讨论 80 PANEL 6.2 构造型 81 6.2.1 接口 81 6.2.2 抽象类 83 PANEL 6.3 特性与标记值 83 6.3 参数化类 84 6.4 依赖 85 6.5 组件和包 85 6.6 可见性,保护性 85 6.7 小结 86 第7章 用例模型要点 87 7.1 执行者详述 89 7.2 用例详述 91 7.3 系统边界 91 7.4 用例的使用 92 7.4.1 用于需求捕获过程中的用例 92 7.4.2 开发过程中的用例 93 7.5 用例可能存在的问题 94 PANEL 7.1 用例驱动开发吗? 95 7.6 小结 95 7.7 讨论问题 96 第8章 用例模型的深入讨论 97 8.1 用例之间的关系 97 8.1.1 用例重用:《include》 97 8.1.2 组件和用例 99 8.1.3 分离出不同的行为:《extend》 101 8.2 泛化 101 8.3 执行者与类 103 8.4 小结 104 8.5 讨论问题 104 第9章 交互图要点 105 9.1 协同 106 9.2 协同图中的交互 107 9.3 顺序图 109 PANEL 9.1 消息应走向哪里?Demeter定理 110 9.4 高级特征 111 9.4.1 从对象发往对象自身的消息 111 9.4.2 隐匿行为细节 112 9.4.3 返回值 113 9.4.4 对象的生成和删除 114 9.4.5 时序 116 9.5 交互图的其他用途 117 9.5.1 说明一个类如何提供一个操作 117 9.5.2 描述一个设计模式如何工作 117 9.5.3 描述如何使用一个组件 117 9.6 小结 118 第10章 交互图高级讨论 119 10.1 类交互图 119 10.1.1 条件行为 119 10.1.2 迭代 121 10.2 并发 123 10.3 小结 126 第11章 状态图和活动图要素 127 11.1 状态图 127 11.1.1 意外消息 129 11.1.2 抽象程度 129 11.1.3 状态、转移、事件 130 11.1.4 动作 130 11.1.5 警戒门限 132 PANEL 11.1 用状态图设计类 133 11.2 活动图 134 11.3 小结 136 第12章 深入研究状态图和活动图 137 12.1 其他类型的事件 137 12.2 其他类型的动作 138
12.3 深入研究状态图 139 12.4 状态图中的并发性 140 12.5 小结 141 第13章 实现图 143 13.1 组件模型 143 PANEL13.1 总结:分类器和实例 145 13.2 配置模型 146 13.2.1 物理层 146 13.2.2 在硬件上配置软件 147 PANEL 13.2 项目中的配置模型 148 13.3 小结 148 第14章 包、子系统和模型 149 14.1 包 149 14.2 子系统 153 14.3 模型 154 14.4 小结 154
第三部分 用例学习 第15章 CS4管理 157 15.1 用例学习 157 15.1.1 类模型 160 15.1.2 动态特性 161 15.1.3 状态图 162 15.1.4 活动图 162 15.2 讨论 162 第16章 点棋盘游戏 165 16.1 研究范围和初步分析 166 16.1.1 Noughts和Crosses游戏(Tic-Tac-Toe) 166 16.1.2 Chess(国际象棋)游戏 167 16.2 交互动作 170 16.3 进一步研究框架 172 16.4 状态 174 16.5 讨论题 175 第17章 离散事件仿真 177 17.1 需求 177 17.2 类模型的轮廓 179 17.3 用例 181 17.3.1 create model小结 181 17.3.2 observe behavior小结 182 17.3.3 collect statistics小结 182 17.3.4 run a model小结 182 17.4 基于仿真过程的标准机制 182 17.5 关联和导航 183 17.6 详细的类 186 17.6.1 类Scheduler 186 17.6.2 类ActiveEntity 187 17.6.3 类PassiveEntity 188 17.6.4 类Resource 188 17.7 类Report 190 17.8 类Statistic 191 17.9 构造一个完整的仿真模型 192 17.10 有关哲学家用餐问题 192
第四部分 实践应用 第18章 重用:组件与模式 197 18.1 重用的实用性 197 18.1.1 什么可以被重用,如何重用 197 PANEL 18.1 什么是一个真正的组件?这是个有争议的问题! 198 18.1.2 为什么重用 199 18.1.3 为什么重用很困难 200 18.1.4 哪些组件是真正可重用的 201 18.1.5 如何创建自己的组件 202 18.1.6 重用在面向对象中有什么不同之处 202 18.2 设计模式 203 18.2.1 例子:Fa?ade 205 18.2.2 UML和模式 206 18.3 框架 207 18.4 小结 207 第19章 产品质量:验证、确认与测试 209 19.1 关于质量的概述 209 19.2 如何获取高质量 210 19.2.1 关注产品质量 210 19.2.2 关注过程 210 19.2.3 进一步的参考资料 210 19.3 验证 210 19.4 确认 211 19.5 测试 212 19.5.1 选择并实施测试 214 19.5.2 面向对象所特有的问题 215 19.5.3 为什么测试经常完成得很差 217 19.6 评审及检查 217 19.7 小结 219 第20章 过程质量:管理、团队与质量保证 221 20.1 管理 221 20.1.1 项目管理 222 20.1.2 评估迭代式开发的项目 223 20.1.3 基于开发的组件管理 224 20.1.4 人员管理 224 20.2 团队 225 20.3 领导能力 226 20.4 质量保证 227 20.4.1 迭代式开发项目的质量保证 228 20.4.2 整体质量管理 229 PANEL 20.1 质量保证:反面的案例 229 20.5 进一步阅读的资料 230 20.6 小结 230 20.7 讨论问题 230 参考文献 233 索引 237
|