《国外计算机科学经典教材:面向对象分析与设计(UML2.0版)》详细介绍了面向对象的分析与设计,全面探讨了面向对象概念、软件开发过程、UML和多层技术。
《国外计算机科学经典教材:面向对象分析与设计(UML2.0版)》使用最常见的技术和方法,通过一个贯穿全书的案例分析,对面向对象的软件开发过程和使用面向对象技术的编程过程进行了透彻的讨论。首先阐述了面向对象软件项目的基本概念,然后基于广泛使用的方法,介绍了使用进行以测试为驱动的开发过程,最后研究了现实世界中的开发问题。
《国外计算机科学经典教材:面向对象分析与设计(UML2.0版)》特色:
·本书按照典型开发项目的步骤,整合了需求、设计、规范和测试;
·案例分析清晰地说明了如何分析抽象的问题,从而最终得出一个具体的解决方案;
·合作站点上的AQS(自动组卷系统)练习题使读者可以实践本书描述的技术。
《国外计算机科学经典教材:面向对象分析与设计(UML2.0版)》按照典型开发项目的步骤,整合了需求、设计、规范和测试,详细介绍了面向对象的分析与设计,全面探讨了面向对象概念、软件开发过程、UML和多层技术。按理分析清晰地说明了如何分析抽象的问题,从而最终得出一个具体的解决方案。无论读者是在校师生还是参加业务培训的开发人员,或者是转向面向对象技术的有经验的程序员,《国外计算机科学经典教材:面向对象分析与设计(UML2.0版)》都会对您有所帮助。
第1章 入门
1.1 背景
1.2 编程简史
1.3 方法学
1.4 关于本书
1.4.1 内容概述
1.4.2 案例分析
1.4.3 导航
第Ⅰ部分 设置场景
第2章 对象的概念
2.1 引言
2.2 什么是对象
2.3 相同还是相等
2.4 描述对象
2.5 封装
2.6 关联和聚合
2.7 图和树
2.8 链接和可导航性
2.9 消息
2.10 启动操作
2.11 协作示例
2.12 面向对象程序的工作原理
2.13 垃圾收集
2.14 类
2.15 类定义的内容
2.16 共享数据和共享操作
2.17 类型
2.18 术语
2.19 重用代码
2.20 小结
2.21 课外阅读
2.22 复习题
2.23 练习1的答案
2.24 复习题答案
第3章 继承
3.1 引言
3.2 设计类层次结构
3.3 给类层次结构添加实现代码
3.4 抽象类
3.5 重定义方法
3.6 实现栈类
3.6.1 使用继承实现栈
3.6.2 使用复合实现栈
3.6.3 继承和复合
3.7 多重继承
3.8 使用继承的规则
3.9 小结
3.10 课外阅读
3.11 复习题
3.12 复习题答案
第4章 类型系统
4.1 引言
4.2 动态和静态类型系统
4.3 多态性
4.3.1 多态变量
4.3.2 多态消息
4.4 动态绑定
4.5 多态性规则
4.6 类型转换
4.7 显式类型转换
4.8 使用模板进行泛化
4.9 小结
4.10 课外阅读
4.11 复习题
4.12 练习2的答案
4.13 练习3的答案
4.14 复习题答案
第5章 软件开发的方法学
5.1 引言
5.2 软件开发中的经典阶段
5.2.1 需求
5.2.2 分析
5.2.3 设计
5.2.4 规范
5.2.5 实现
5.2.6 测试
5.2.7 部署
5.2.8 维护
5.2.9 关键问题
5.3 软件工程和瀑布方法学
5.4 新方法学
5.4.1 螺旋式方法学
5.4.2 迭代式方法学
5.4.3 递增式方法学
5.4.4 合并方法学
5.5 面向对象的方法学
5.5.1 UML、RUP和XP
5.5.2 开发工具的需求
5.6 Ripple概述
5.6.1 用例图
5.6.2 类图(分析级别)
5.6.3 通信图
5.6.4 部署图
5.6.5 类图(设计级别)
5.6.6 顺序图
5.7 小结
5.8 课外阅读
5.9 复习题
5.10 复习题答案
第Ⅱ部分 理 解 问 题
第6章 收集需求
6.1 引言
6.2 系统的诞生
6.3 用例
6.4 业务说明
6.4.1 标识业务参与者
6.4.2 编写项目术语表
6.4.3 标识业务用例
6.4.4 在通信图中演示用例
6.4.5 在活动图中演示用例
6.5 开发人员的说明
6.5.1 使参与者特殊化
6.5.2 用例的关系
6.5.3 系统用例的细节
6.5.4 前提条件、后置条件和继承
6.5.5 辅助需求
6.5.6 用户界面草案
6.5.7 系统用例的优先级
6.6 小结
6.7 课外阅读
6.8 复习题
6.9 复习题答案
第7章 分析问题
7.1 引言
7.2 为什么要进行分析
7.3 分析过程概述
7.4 静态分析
7.4.1 确定类
7.4.2 标识类的关系
7.4.3 绘制类图和对象图
7.4.4 绘制关系
7.4.5 属性
7.4.6 关联类
7.4.7 有形对象和无形对象
7.4.8 好的对象
7.5 动态分析
7.5.1 绘制用例的实现过程
7.5.2 边界、控制器和实体
7.5.3 通信图中的元素
7.5.4 给类添加操作
7.5.5 职责
7.5.6 状态建模
7.6 小结
7.7 课外阅读
7.8 复习题
7.9 练习4的答案
7.10 复习题答案
第Ⅲ部分 设计解决方案
第8章 设计系统体系结构
8.1 引言
8.2 设计优先级
8.3 系统设计中的步骤
8.4 选择联网的系统拓扑
8.4.1 网络体系结构的简史
8.4.2 三层体系结构
8.4.3 个人计算机
8.4.4 网络计算机
8.4.5 互联网和万维网
8.4.6 内联网
8.4.7 外联网和虚拟私人网络
8.4.8 客户机-服务器与分布式体系结构
8.4.9 用UML描述网络拓扑
8.5 并发设计
8.6 安全设计
8.6.1 数字加密和解密
8.6.2 一般安全规则
8.7 分解软件
8.7.1 系统和子系统
8.7.2 层
8.7.3 Java层:应用小程序和RMI
8.7.4 层中的消息流
8.8 小结
8.9 课外阅读
8.10 复习题
8.11 复习题答案
第9章 选择技术
9.1 引言
9.2 客户层技术
9.3 客户层到中间层的协议
9.4 中间层技术
9.5 中间层到数据层的技术
9.6 其他技术
9.7 一般前端配置
9.7.1 HTML/CGI和脚本
9.7.2 HTML/CGI和服务小程序
9.7.3 RMI
9.7.4 CORBA
9.7.5 EJB
9.8 后端配置
9.9 Java电子商务配置
9.10 UML包
9.11 小结
9.12 课外阅读
9.13 复习题
9.14 复习题答案
第10章 设计子系统
10.1 引言
10.2 把分析的类模型映射为设计的类模型
10.2.1 映射操作
10.2.2 变量类型
10.2.3 字段的可见性
10.2.4 访问器
10.2.5 映射类、属性和复合
10.2.6 映射其他类型的关联
10.2.7 通用标识符
10.3 使用关系数据库实现存储
10.3.1 数据库管理系统
10.3.2 关系模型
10.3.3 映射实体类
10.3.4 映射关联
10.3.5 映射对象状态
10.4 最终确定用户界面
10.5 设计业务服务
10.5.1 使用代理和副本
10.5.2 给业务服务分类
10.5.3 会话标识符
10.5.4 业务服务的实现
10.6 使用模式、框架和库
10.7 事务
10.7.1 保守并发和开放并发
10.7.2 使用事务和对象的一般规则
10.7.3 上层中的事务
10.8 处理多个活动
10.8.1 控制多个任务
10.8.2 控制多个线程
10.8.3 线程安全
10.9 小结
10.10 课外阅读
10.11 复习题
10.12 复习题答案
第11章 可重用的设计模式
11.1 引言
11.1.1 模式简史
11.1.2 目前的软件模式
11.2 模式模板
11.3 常见的设计模式
11.3.1 观察器模式
11.3.2 单一模式
11.3.3 多重模式
11.3.4 迭代器模式
11.3.5 工厂方法和抽象工厂
11.3.6 状态模式
11.3.7 门面模式
11.3.8 适配器模式
11.3.9 策略模式和模板方法
11.3.10 次轻量级模式
11.3.11 复合模式
11.3.12 代理模式
11.4 使用模式
11.5 发现、合并和调整模式
11.6 小结
11.7 课外阅读
第12章 指定类的接口
12.1 引言
12.2 规范的定义
12.3 正式规范
12.4 非正式规范
12.5 动态检查
12.6 面向对象的规范
12.6.1 OCL中的正式规范
12.6.2 Eiffel中的非正式规范
12.7 按合同设计
12.7.1 合同和继承
12.7.2 减少错误检查代码
12.7.3 履行合同
12.7.4 应用程序防火墙
12.8 Java中的非正式规范
12.8.1 使用注释编写合同文档
12.8.2 动态检查条件
12.8.3 使用RuntimeException发出违反合同的信号
12.8.4 外部系统
12.8.5 启用和禁用动态检查
12.9 小结
12.10 课外阅读
12.11 复习题
12.12 复习题答案
第13章 不间断的测试
13.1 引言
13.2 测试术语
13.2.1 黑盒子测试
13.2.2 白盒子测试
13.3 测试的类型
13.3.1 单元测试
13.3.2 完整性测试
13.3.3 Alpha测试
13.3.4 beta测试
13.3.5 用例测试
13.3.6 组件测试
13.3.7 构建测试
13.3.8 负载测试
13.3.9 安装测试
13.3.10 接受测试
13.3.11 衰退测试
13.3.12 说明文档测试
13.3.13 安全测试
13.3.14 衡量标准
13.4 测试的自动化
13.5 准备测试
13.6 测试策略
13.6.1 开发过程中的测试
13.6.2 测试阶段中的测试
13.6.3 发布后的测试
13.7 测试的内容
13.8 测试驱动的开发
13.9 使用JUnit进行测试驱动的开发示例
13.9.1 测试Car类
13.9.2 实现Car类
13.9.3 重新安排测试
13.9.4 为衰退测试创建测试套件
13.9.5 测试Across方法
13.9.6 完成Store类
13.10 小结
13.11 课外阅读
附录A Ripple小结
附录B iCoot案例分析
B.1 业务需求
B.1.1 顾客的任务陈述
B.1.2 参与者列表
B.1.3 用例列表
B.1.4 用例的通信图
B.1.5 用例的活动图
B.1.6 用例的细节
B.2 系统需求
B.2.1 用户界面草图
B.2.2 参与者列表
B.2.3 用例列表
B.2.4 用例图
B.2.5 用例调查
B.2.6 用例细节
B.2.7 辅助需求
B.2.8 用例的优先级
B.3 分析
B.3.1 类图
B.3.2 属性
B.3.3 操作列表
B.3.4 预约的状态机
B.3.5 用例的实现
B.4 系统设计
B.4.1 选择技术
B.4.2 层图
B.4.3 层交互策略
B.4.4 包
B.4.5 部署图
B.4.6 安全策略
B.4.7 并发策略
B.5 子系统设计
B.5.1 业务服务
B.5.2 ServletsLayer类图
B.5.3 ServletsLayer的字段列表
B.5.4 ServletsLayer的消息列表
B.5.5 ServerLayer类图
B.5.6 ServerLayer的字段列表
B.5.7 ServerLayer的消息列表
B.5.8 BusinessLayer类图
B.5.9 BusinessLayer的字段列表
B.5.10 协议对象的类图
B.5.11 数据库模式
B.5.12 用户界面设计
B.5.13 业务服务的实现
B.6 类的规范
B.6.1 服务器类的规范
B.6.2 业务逻辑类的规范
B.7 测试计划概述
B.7.1 引言
B.7.2 螺旋式递增方式的作用
B.7.3 非代码制品的测试
B.7.4 代码的评估
B.7.5 测试驱动的开发
B.7.6 断言
B.7.7 测试阶段
B.7.8 说明文档的测试
B.7.9 构建测试
B.7.10 测试建档和记录日志
B.7.11 分阶段的测试活动
B.8 术语表
附录C UML表示法小结