图书目录

目    录

  

第1章  入门 1

   1.1  背景 1

   1.2  编程简史 1

   1.3  方法学 2

   1.4  关于本书 2

     1.4.1  内容概述 3

     1.4.2  案例分析 3

     1.4.3  导航 3

第Ⅰ部分  设 置 场 景

第2章  对象的概念 7

   2.1  引言 7

   2.2  什么是对象 8

   2.3  相同还是相等 10

   2.4  描述对象 12

   2.5  封装 13

   2.6  关联和聚合 13

   2.7  图和树 15

   2.8  链接和可导航性 16

   2.9  消息 17

   2.10  启动操作 19

   2.11  协作示例 19

   2.12  面向对象程序的工作原理 21

   2.13  垃圾收集 22

   2.14  类 22

   2.15  类定义的内容 24

   2.16  共享数据和共享操作 26

   2.17  类型 27

   2.18  术语 27

   2.19  重用代码 29

   2.20  小结 32

   2.21  课外阅读 32

   2.22  复习题 32

   2.23  练习1的答案 33

   2.24  复习题答案 33

第3章  继承 34

   3.1  引言 34

   3.2  设计类层次结构 35

   3.3  给类层次结构添加实现代码 36

   3.4  抽象类 38

   3.5  重定义方法 40

   3.6  实现栈类 40

     3.6.1  使用继承实现栈 41

     3.6.2  使用复合实现栈 42

     3.6.3  继承和复合 43

   3.7  多重继承 44

   3.8  使用继承的规则 47

   3.9  小结 47

   3.10  课外阅读 47

   3.11  复习题 47

   3.12  复习题答案 49

第4章  类型系统 50

   4.1  引言 50

   4.2  动态和静态类型系统 50

   4.3  多态性 51

     4.3.1  多态变量 52

     4.3.2  多态消息 53

   4.4  动态绑定 54

   4.5  多态性规则 56

   4.6  类型转换 56

   4.7  显式类型转换 57

   4.8  使用模板进行泛化 59

   4.9  小结 60

   4.10  课外阅读 60

   4.11  复习题 60

   4.12  练习2的答案 62

   4.13  练习3的答案 62

   4.14  复习题答案 62

第5章  软件开发的方法学 64

   5.1  引言 64

   5.2  软件开发中的经典阶段 65

     5.2.1  需求 65

     5.2.2  分析 66

     5.2.3  设计 66

     5.2.4  规范 66

     5.2.5  实现 66

     5.2.6  测试 66

     5.2.7  部署 67

     5.2.8  维护 67

     5.2.9  关键问题 67

   5.3  软件工程和瀑布方法学 68

   5.4  新方法学 71

     5.4.1  螺旋式方法学 71

     5.4.2  迭代式方法学 72

     5.4.3  递增式方法学 72

     5.4.4  合并方法学 73

   5.5  面向对象的方法学 74

     5.5.1  UML、RUP和XP 74

     5.5.2  开发工具的需求 75

   5.6  Ripple概述 76

     5.6.1  用例图 78

     5.6.2  类图(分析级别) 79

     5.6.3  通信图 79

     5.6.4  部署图 80

     5.6.5  类图(设计级别) 81

     5.6.6  顺序图 81

   5.7  小结 82

   5.8  课外阅读 82

   5.9  复习题 82

   5.10  复习题答案 83

第Ⅱ部分  理 解 问 题

第6章  收集需求 87

   6.1  引言 87

   6.2  系统的诞生 88

   6.3  用例 89

   6.4  业务说明 90

     6.4.1  标识业务参与者 90

     6.4.2  编写项目术语表 91

     6.4.3  标识业务用例 92

     6.4.4  在通信图中演示用例 93

     6.4.5  在活动图中演示用例 94

   6.5  开发人员的说明 95

     6.5.1  使参与者特殊化 98

     6.5.2  用例的关系 99

     6.5.3  系统用例的细节 102

     6.5.4  前提条件、后置条件和继承 104

     6.5.5  辅助需求 104

     6.5.6  用户界面草案 104

     6.5.7  系统用例的优先级 105

   6.6  小结 107

   6.7  课外阅读 107

   6.8  复习题 107

   6.9  复习题答案 109

第7章  分析问题 110

   7.1  引言 110

   7.2  为什么要进行分析 110

   7.3  分析过程概述 111

   7.4  静态分析 112

     7.4.1  确定类 112

     7.4.2  标识类的关系 112

     7.4.3  绘制类图和对象图 112

     7.4.4  绘制关系 114

     7.4.5  属性 117

     7.4.6  关联类 120

     7.4.7  有形对象和无形对象 120

     7.4.8  好的对象 124

   7.5  动态分析 124

     7.5.1  绘制用例的实现过程 124

     7.5.2  边界、控制器和实体 126

     7.5.3  通信图中的元素 127

     7.5.4  给类添加操作 128

     7.5.5  职责 129

     7.5.6  状态建模 129

   7.6  小结 130

   7.7  课外阅读 130

   7.8  复习题 131

   7.9  练习4的答案 133

   7.10  复习题答案 133

第Ⅲ部分  设计解决方案

第8章  设计系统体系结构 137

   8.1  引言 137

   8.2  设计优先级 138

   8.3  系统设计中的步骤 138

   8.4  选择联网的系统拓扑 139

     8.4.1  网络体系结构的简史 139

     8.4.2  三层体系结构 140

     8.4.3  个人计算机 142

     8.4.4  网络计算机 142

     8.4.5  互联网和万维网 143

     8.4.6  内联网 143

     8.4.7  外联网和虚拟私人网络 144

     8.4.8  客户机-服务器与

            分布式体系结构 144

     8.4.9  用UML描述网络拓扑 146

   8.5  并发设计 147

   8.6  安全设计 148

     8.6.1  数字加密和解密 148

     8.6.2  一般安全规则 149

   8.7  分解软件 150

     8.7.1  系统和子系统 150

     8.7.2  层  151

     8.7.3  Java层:应用小程序和RMI 153

     8.7.4  层中的消息流 155

   8.8  小结 158

   8.9  课外阅读 158

   8.10  复习题 158

   8.11  复习题答案 159

第9章  选择技术 160

   9.1  引言 160

   9.2  客户层技术 160

   9.3  客户层到中间层的协议 162

   9.4  中间层技术 163

   9.5  中间层到数据层的技术 164

   9.6  其他技术 165

   9.7  一般前端配置 166

     9.7.1  HTML/CGI和脚本 166

     9.7.2  HTML/CGI和服务小程序 167

     9.7.3  RMI 168

     9.7.4  CORBA 169

     9.7.5  EJB 170

   9.8  后端配置 171

   9.9  Java电子商务配置 171

   9.10  UML包 174

   9.11  小结 177

   9.12  课外阅读 177

   9.13  复习题 178

   9.14  复习题答案 178

第10章  设计子系统 179

   10.1  引言 179

   10.2  把分析的类模型映射为

         设计的类模型 180

      10.2.1  映射操作 180

      10.2.2  变量类型 180

      10.2.3  字段的可见性 180

      10.2.4  访问器 181

      10.2.5  映射类、属性和复合 181

      10.2.6  映射其他类型的关联 182

      10.2.7  通用标识符 186

   10.3  使用关系数据库实现存储 187

      10.3.1  数据库管理系统 187

      10.3.2  关系模型 188

      10.3.3  映射实体类 190

      10.3.4  映射关联 190

      10.3.5  映射对象状态 193

   10.4  最终确定用户界面 196

   10.5  设计业务服务 200

      10.5.1  使用代理和副本 201

      10.5.2  给业务服务分类 203

      10.5.3  会话标识符 204

      10.5.4  业务服务的实现 204

   10.6  使用模式、框架和库 206

   10.7  事务 206

      10.7.1  保守并发和开放并发 207

      10.7.2  使用事务和对象的

              一般规则 207

      10.7.3  上层中的事务 207

   10.8  处理多个活动 208

      10.8.1  控制多个任务 208

      10.8.2  控制多个线程 208

      10.8.3  线程安全 209

   10.9  小结 212

   10.10  课外阅读 212

   10.11  复习题 212

   10.12  复习题答案 213

第11章  可重用的设计模式 214

   11.1  引言 214

      11.1.1  模式简史 214

      11.1.2  目前的软件模式 215

   11.2  模式模板 215

   11.3  常见的设计模式 216

      11.3.1  观察器模式 216

      11.3.2  单一模式 220

      11.3.3  多重模式 223

      11.3.4  迭代器模式 224

      11.3.5  工厂方法和抽象工厂 226

      11.3.6  状态模式 227

      11.3.7  门面模式 231

      11.3.8  适配器模式 231

      11.3.9  策略模式和模板方法 233

      11.3.10  次轻量级模式 235

      11.3.11  复合模式 236

      11.3.12  代理模式 239

   11.4  使用模式 240

   11.5  发现、合并和调整模式 241

   11.6  小结 243

   11.7  课外阅读 243

第12章  指定类的接口 244

   12.1  引言 244

   12.2  规范的定义 245

   12.3  正式规范 245

   12.4  非正式规范 247

   12.5  动态检查 248

   12.6  面向对象的规范 250

      12.6.1  OCL中的正式规范 250

      12.6.2  Eiffel中的非正式规范 251

   12.7  按合同设计 252

      12.7.1  合同和继承 255

      12.7.2  减少错误检查代码 256

      12.7.3  履行合同 258

      12.7.4  应用程序防火墙 259

   12.8  Java中的非正式规范 259

      12.8.1  使用注释编写合同文档 259

      12.8.2  动态检查条件 260

      12.8.3  使用RuntimeException

              发出违反合同的信号 260

      12.8.4  外部系统 261

      12.8.5  启用和禁用动态检查 263

   12.9  小结 264

   12.10  课外阅读 264

   12.11  复习题 265

   12.12  复习题答案 265

第13章  不间断的测试 266

   13.1  引言 266

   13.2  测试术语 266

      13.2.1  黑盒子测试 267

      13.2.2  白盒子测试 268

   13.3  测试的类型 268

      13.3.1  单元测试 269

      13.3.2  完整性测试 269

      13.3.3  Alpha测试 269

      13.3.4 beta测试 270

      13.3.5  用例测试 270

      13.3.6  组件测试 270 

      13.3.7  构建测试 271

      13.3.8  负载测试 272

      13.3.9  安装测试 273

      13.3.10  接受测试 273

      13.3.11  衰退测试 273

      13.3.12  说明文档测试 274

      13.3.13  安全测试 274

      13.3.14  衡量标准 274

   13.4  测试的自动化 275

   13.5  准备测试 276

   13.6  测试策略 277

      13.6.1  开发过程中的测试 277

      13.6.2  测试阶段中的测试 278

      13.6.3  发布后的测试 278

   13.7  测试的内容 278

   13.8  测试驱动的开发 281

   13.9  使用JUnit进行测试驱动

         的开发示例 282

      13.9.1  测试Car类 283

      13.9.2  实现Car类 284

      13.9.3  重新安排测试 286

      13.9.4  为衰退测试创建测试套件 288

      13.9.5  测试Across方法 290

      13.9.6  完成Store类 290

   13.10  小结 292

   13.11  课外阅读 293

附录A  Ripple小结 294

附录B  iCoot案例分析 297

   B.1  业务需求 297

     B.1.1  顾客的任务陈述 297

     B.1.2  参与者列表 297

     B.1.3  用例列表 298

     B.1.4  用例的通信图 298

     B.1.5  用例的活动图 298

     B.1.6  用例的细节 299

   B.2  系统需求 302

     B.2.1  用户界面草图 302

     B.2.2  参与者列表 303

     B.2.3  用例列表 303

     B.2.4  用例图 304

     B.2.5  用例调查 304

     B.2.6  用例细节 305

     B.2.7  辅助需求 308

     B.2.8  用例的优先级 308

   B.3  分析 308

     B.3.1  类图 308

     B.3.2  属性 309

     B.3.3  操作列表 309

     B.3.4  预约的状态机 311

     B.3.5  用例的实现 311

   B.4  系统设计 316

     B.4.1  选择技术 316

     B.4.2  层图 317

     B.4.3  层交互策略 318

     B.4.4  包 318

     B.4.5  部署图 319

     B.4.6  安全策略 320

     B.4.7  并发策略 320

   B.5  子系统设计 320

     B.5.1  业务服务 321

     B.5.2  ServletsLayer类图 321

     B.5.3  ServletsLayer的字段列表 321

     B.5.4  ServletsLayer的消息列表 322

     B.5.5  ServerLayer类图 322

     B.5.6  ServerLayer的字段列表 323

     B.5.7  ServerLayer的消息列表 323

     B.5.8  BusinessLayer类图 324

     B.5.9  BusinessLayer的字段列表 325

     B.5.10  协议对象的类图 328

     B.5.11  数据库模式 329

     B.5.12  用户界面设计 330

     B.5.13  业务服务的实现 330

   B.6  类的规范 342

     B.6.1 服务器类的规范 342

     B.6.2  业务逻辑类的规范 344

   B.7  测试计划概述 346

     B.7.1  引言 346

     B.7.2  螺旋式递增方式的作用 346

     B.7.3  非代码制品的测试 347

     B.7.4  代码的评估 347

     B.7.5  测试驱动的开发 347

     B.7.6  断言 347

     B.7.7  测试阶段 347

     B.7.8  说明文档的测试 348

     B.7.9  构建测试 348

     B.7.10  测试建档和记录日志 348

     B.7.11  分阶段的测试活动 348

   B.8  术语表 350

附录C  UML表示法小结 356