好书推荐 好书速递 排行榜 读书文摘

软件建模与设计

软件建模与设计
作者:Hassan Gomaa
译者:彭鑫 / 吴毅坚
副标题:UML、用例、模式和软件体系结构
出版社:机械工业出版社
出版年:2014-08
ISBN:9787111467595
行业:设计
浏览数:31

内容简介

......(更多)

作者简介

......(更多)

目录

出版者的话

译者序

前言

本书导读

致谢

第一部分 概览

第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

......(更多)

读书文摘

......(更多)

猜你喜欢

点击查看