《软件建模与设计 UML用例模式和软件体系结构》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:(美)戈马,彭鑫,吴毅坚,赵文耘
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2014
  • ISBN:9787111467595
  • 页数:426 页
图书介绍:本书介绍了关于软件应用建模和设计的知识。从UML中的用况到软件体系结构,本书展示了如何在解决现实世界问题的过程中应用COMET,介绍了针对各种体系结构的模式,包括客户端/服务器以及基于构件的软件体系结构中的客户端/服务模式,面向服务的体系结构中的代理、发现和事务模式,实时软件体系结构中的实时控制模式,软件产品线体系结构的分层模式。此外,还介绍了软件质量属性,包括可维护性、可修改性、可测试性、可追踪性、可伸缩性、可复用性、性能、可用性和安全性。

第一部分 概览 2

第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.1COMET基于用例的软件生存周期 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

第二部分 软件建模 52

第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扩展点和扩展用例示例 64

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

第三部分 软件体系结构设计 144

第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

第四部分 案例研究 282

第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