第1章 概述 1
1.1 软件工程方法学 1
1.1.1 结构化方法 1
1.1.2 面向对象方法 2
1.2 软件设计与体系结构 4
第2章 软件体系结构 6
2.1 软件体系结构的定义 6
2.2 组件与JavaBeans 7
2.2.1 组件 7
2.2.2 编写和使用JavaBeans 8
2.2.3 获取和修改JavaBeans的属性 9
2.3 软件体系结构的研究内容 10
2.4 软件体系结构风格 13
第3章 经典软件体系结构风格 15
3.1 管道/过滤器风格 15
3.1.1 原理 15
3.1.2 实例 16
3.2 数据抽象和面向对象风格 17
3.2.1 原理 17
3.2.2 实例 18
3.3 基于事件的隐式调用风格 21
3.3.1 原理 21
3.3.2 实例 22
3.4 层次风格 27
3.4.1 原理 27
3.4.2 实例 28
3.5 仓库风格 30
3.5.1 原理 30
3.5.2 实例 31
3.6 解释器风格 32
3.6.1 原理 32
3.6.2 实例 33
3.7 反馈控制环风格 35
3.7.1 原理 35
3.7.2 实例 36
第4章 分布式软件体系结构风格 38
4.1 概述 38
4.2 两层C/S体系结构风格 39
4.2.1 原理 39
4.2.2 实例 41
4.3 P2P体系结构风格 48
4.4 三层C/S体系结构风格 49
4.5 B/S体系结构风格 51
4.5.1 原理 51
4.5.2 实例 53
4.6 C/S与B/S混合软件体系结构 54
4.6.1 原理 54
4.6.2 实例 55
4.7 中间件 56
4.7.1 概念 56
4.7.2 分布式系统中的中间件 58
第5章 MVC风格与Struts框架 61
5.1 MVC风格 61
5.1.1 MVC风格概述 61
5.1.2 MVC在J2EE中的应用 62
5.1.3 实例 64
5.2 Struts框架 67
5.2.1 Struts框架概述 67
5.2.2 Struts框架的组件 69
5.2.3 实例 73
第6章 软件设计的目标 77
6.1 概述 77
6.1.1 基本概念 77
6.1.2 实例与分析 78
6.2 健壮性 78
6.2.1 概念与实例 78
6.2.2 Java异常处理机制 80
6.3 可复用性 82
6.3.1 基本概念 82
6.3.2 实例 82
6.4 可维护性 83
6.4.1 基本概念 83
6.4.2 实例 84
6.5 高效性 90
6.6 软件设计度量、软件再工程和逆向工程 91
第7章 软件设计——面向对象方法 92
7.1 问题域部分的设计 92
7.1.1 复用已有的类 92
7.1.2 增加一般类 93
7.1.3 对多重继承的调整 93
7.1.4 对多态性的调整 98
7.1.5 提高性能 100
7.1.6 其他 103
7.2 人机交互部分的设计 103
7.2.1 概述 103
7.2.2 可视化编程环境下的人机界面设计策略 103
7.2.3 界面类与问题域类间通信的设计 107
7.3 数据管理部分的设计 107
7.3.1 概述 107
7.3.2 针对关系数据库的数据存储设计 108
7.3.3 设计数据管理部分的其他方法 115
7.4 控制驱动部分的设计 115
7.4.1 概述 115
7.4.2 系统的并行/并发性 115
7.4.3 设计控制驱动部分的方法 121
第8章 并行软件设计与实现 127
8.1 并行计算 127
8.2 Java多线程机制 128
8.2.1 概述 128
8.2.2 Runnable接口与Thread类 129
8.2.3 多线程的实现 131
8.2.4 线程的同步与死锁 134
8.3 OpenMP并行软件设计 138
8.3.1 OpenMP编程基础 138
8.3.2 编译指导语句 141
8.3.3 运行时库函数 149
8.3.4 环境变量 150
8.3.5 实例 150
8.4 MPI并行软件设计 153
8.4.1 MPI消息传递接口 153
8.4.2 典型MPI实现——MPICH 154
8.4.3 MPI编程基础 157
8.4.4 MPI的点对点通信 158
8.4.5 MPI群集通信 160
8.4.6 实例 161
第9章 设计原则 163
9.1 概述 163
9.1.1 软件系统的可维护性 163
9.1.2 系统的可复用性 164
9.1.3 可维护性复用、设计原则和设计模式 165
9.2 开-闭原则 165
9.2.1 概念 165
9.2.2 实现方法 166
9.2.3 与其他设计原则的关系 166
9.2.4 实例 166
9.3 里氏代换原则 167
9.3.1 概念 167
9.3.2 Java语言与里氏代换原则 168
9.3.3 实例 168
9.4 合成/聚合复用原则 171
9.4.1 概念 171
9.4.2 合成/聚合复用与继承复用 171
9.4.3 实例 172
9.5 依赖倒转原则 173
9.5.1 倒转的含义 173
9.5.2 概念 174
9.5.3 实例 175
9.6 迪米特法则 176
9.6.1 概念 176
9.6.2 实例 178
9.7 接口隔离原则 179
9.7.1 概念 179
9.7.2 实例 180
9.8 单一职责原则 181
第10章 设计模式 182
10.1 概述 182
10.2 创建型模式 183
10.2.1 简单工厂模式 183
10.2.2 工厂方法模式 184
10.2.3 抽象工厂模式 186
10.2.4 建造者模式 188
10.2.5 原型模式 190
10.2.6 单例模式 191
10.3 结构型模式 192
10.3.1 适配器模式 192
10.3.2 桥接模式 193
10.3.3 装饰模式 195
10.3.4 组合模式 197
10.3.5 外观模式 198
10.3.6 享元模式 200
10.3.7 代理模式 202
10.4 行为型模式 204
10.4.1 策略模式 204
10.4.2 模板方法模式 205
10.4.3 状态模式 206
10.4.4 命令模式 208
10.4.5 责任链模式 209
10.4.6 备忘录模式 211
10.4.7 观察者模式 213
10.4.8 调停者模式 214
10.4.9 访问者模式 217
10.4.10 迭代器模式 219
10.4.11 解释器模式 221
参考文献 224