第1章 课程设计的项目实施和管理 1
1.1 课程设计的意义及教学目标 1
1.1.1 制定课程设计的教学目标 1
1.1.2 开展课程设计之前的预备知识和技术 5
1.2 制定课程设计计划和技术要求 11
1.2.1 项目分组和人员角色分工原则 11
1.2.2 制定待开发项目中各种形式文档的规范 14
1.2.3 课程设计中的项目选型 16
1.3 课程设计中推荐的项目示例 19
1.3.1 蓝梦教育集团教育信息化系统 19
1.3.2 正方商业集团客户关系管理系统 25
1.4 指导教师的主要职责和阶段任务分配 28
1.4.1 课程设计中指导教师的主要职责 28
1.4.2 指导教师布置项目开发各个阶段的任务 31
本章小结 37
本章练习 38
第2章 统一建模语言在项目开发中的应用 40
2.1 软件系统功能性和非功能性需求的正确描述 40
2.1.1 利用需求清单描述系统中的功能性和非功能性需求 40
2.1.2 利用UML用例图描述系统中的功能性需求 44
2.2 用例事件流和用例规约的描述方式 47
2.2.1 用例事件流和用例规约 47
2.2.2 利用UML顺序图描述用例的事件流 49
2.2.3 利用UML活动图完善对用例事件流的描述 51
2.3 软件系统设计中的概要设计 52
2.3.1 软件系统概要设计中的系统架构设计 52
2.3.2 系统概要设计中的组件设计 55
2.3.3 系统概要设计中的类结构和关系的设计 57
2.3.4 系统概要设计中实体类结构和关系的设计 60
2.4 软件系统设计中的详细设计 62
2.4.1 业务层中的业务逻辑建模及业务功能类的设计 62
2.4.2 业务流程分析、描述和设计 64
2.5 软件系统的部署和发布 66
本章小结 67
本章练习 68
第3章 达到高内聚低耦合的架构设计目标 70
3.1 面向对象的系统架构设计 70
3.1.1 面向对象的架构设计能够适应不断变化的软件系统需求 70
3.1.2 可扩展性和可重用性是面向对象架构设计的主要目标 73
3.1.3 如何保证系统架构设计结果的可扩展性和可重用性 75
3.1.4 如何能够在软件系统架构设计中重用和简化设计结果 80
3.2 面向切面的系统架构设计 81
3.2.1 面向切面架构设计是对面向对象架构设计的进一步扩展和完善 81
3.2.2 面向切面架构设计在J2EE平台中的具体实现和应用 83
3.2.3 基于面向切面思想的系统架构设计实现交易日志示例 86
3.2.4 基于面向切面思想的系统架构设计实现事务控制示例 87
3.2.5 基于面向切面思想的系统架构设计实现性能监控示例 90
3.2.6 基于面向切面思想的系统架构设计实现安全功能示例 92
3.3 面向服务的软件系统架构设计 93
3.3.1 企业信息化平台及信息化应用系统的环境是异构状态 93
3.3.2 面向服务的软件系统体系架构 95
3.3.3 面向服务架构的实现技术 99
本章小结 104
本章练习 105
第4章 进行类设计以降低类的耦合度 106
4.1 正确和合理地进行软件系统中的程序类设计 106
4.1.1 明确软件应用系统中类设计时所应该满足的基本要求 106
4.1.2 降低软件系统程序类之间耦合关系的各种实现技术 109
4.2 持久层中各个功能类的合理设计 115
4.2.1 正确设计J2EE应用系统持久层中的各个组件及关系 115
4.2.2 应用JDBC API实现应用系统持久层中的各个DAO组件 120
4.2.3 应用ORM技术实现应用系统持久层中的各个DAO组件 124
4.3 数据访问服务层中各个功能类的合理设计 128
4.3.1 利用数据访问服务层组件隔离业务处理逻辑和数据访问操作逻辑 128
4.3.2 数据访问服务层中各个数据访问服务功能类的合理设计 129
4.4 软件应用系统表示层及其内的各个组件设计 133
4.4.1 表示层组件设计的原则和需要解决的关键性问题 133
4.4.2 Web表示层主要应用MVC模式分离表示层和模型处理层 140
本章小结 141
本章练习 142
第5章 创建对象以降低类关系的耦合度 143
5.1 合理和有效地创建对象实例以降低类关系的耦合度 143
5.1.1 合理地创建对象以降低类关系的耦合度 143
5.1.2 利用GOF设计模式中的各种创建型模式松耦合地创建对象 145
5.1.3 利用Java反射技术灵活地创建对象实例 152
5.1.4 利用依赖注入技术高效地创建对象实例 155
5.2 创建和销毁应用系统中特殊类型的对象 157
5.2.1 文件IO流对象的创建和销毁 157
5.2.2 网络通信中Socket对象的创建和销毁 158
5.2.3 JDBC数据库连接对象的创建和销毁 160
5.3 合理而有效地创建对象的示例 162
5.3.1 应用策略模式分离JDBC数据库连接中的外部环境信息 162
5.3.2 应用策略模式构建数据库连接Connection对象实例 166
5.3.3 应用观察者模式重构系统中的日志处理功能实现 168
本章小结 173
本章练习 173
第6章 分离Web表示层数据处理和展现逻辑 175
6.1 应用CSS+Div及CSS+Div+JavaScript技术 175
6.1.1 采用CSS+Div分离Web表示层数据和表现 175
6.1.2 应用支持CSS+Div的可视化软件工具提高页面开发的效率 178
6.2 应用XML+XSLT技术彻底分离数据和样式 179
6.2.1 XML+XSLT技术及应用 180
6.2.2 XML+XSLT技术应用示例 181
6.3 应用Velocity模板技术分离职责 187
6.3.1 在Web表示层开发实现中应用Velocity模板技术 187
6.3.2 利用Eclipse工具开发基于Velocity模板的Web应用 189
6.3.3 Velocity与Struts框架集成技术 193
6.3.4 Velocity与Struts2框架集成技术 198
本章小结 199
本章练习 200
第7章 提高Web应用系统的响应性能 201
7.1 提高Web应用系统响应性能的主要方法 201
7.1.1 利用AJAX技术减少客户端和服务器端交互的数据量 201
7.1.2 应用Web页面静态化技术 202
7.1.3 应用模板技术实现页面静态化 203
7.1.4 应用Web页面缓存OSCache框架 204
7.1.5 应用支持持久层数据的缓存框架 205
7.1.6 优化应用系统中的数据访问实现方式 207
7.2 应用FreeMarker静态模板框架技术 208
7.2.1 FreeMarker静态模板框架技术概述 208
7.2.2 在基于标准Web技术的程序中应用FreeMarker模板 211
7.2.3 在基于Struts框架的Web程序中应用FreeMarker模板 214
7.2.4 在基于Struts2框架的Web程序中应用FreeMarker模板 218
7.3 Web应用系统的性能测试和监控工具 222
7.3.1 开源的JMeter性能测试工具 222
7.3.2 利用JProfiler工具监控应用系统的性能 226
本章小结 235
本章练习 235
第8章 实现Web页面中数据分页功能 237
8.1 Web应用系统中的数据分页技术实现 237
8.1.1 数据分页功能实现中的各个组件职责划分 237
8.1.2 每次翻页都查询一次数据库的分页功能实现方案 239
8.1.3 一次性地获得所有数据并缓存数据的分页实现方案 246
8.1.4 从数据库表中只检索页面大小数据块的分页方案 251
8.2 利用Ajax技术实现数据分页功能 253
本章小结 253
本章练习 254
第9章 编程开发多线程安全的项目代码 255
9.1 编程开发多线程安全的项目代码 255
9.1.1 多线程技术及多线程的并发问题 255
9.1.2 什么是多线程安全和不安全的代码 258
9.1.3 实现应用系统中多线程安全代码的常规方法 267
9.2 利用ThreadLocal类实现线程安全的代码 272
9.2.1 JDK中的线程局部变量ThreadLocal类 272
9.2.2 ThreadLocal与synchronized同步机制的比较 275
9.3 Java集合编程应用中的线程安全问题 276
本章小结 279
本章练习 279
第10章 高效和高质量地编程开发和实现 281
10.1 如何提高项目开发效率和编程实现速度 281
10.1.1 选择合适的开发方法及合理地组建项目团队 282
10.1.2 在分层开发中充分利用容器外开发和测试技术 285
10.1.3 充分应用IDE集成开发工具中的代码辅助生成功能 289
10.2 应用GOF设计模式优化功能实现代码 302
10.2.1 GOF设计模式是软件编程开发实践中的最佳范例 303
10.2.2 合理地应用GOF设计模式能够提升系统中的代码质量 306
本章小结 309
本章练习 310
第11章 评审和度量项目中代码的编程质量 312
11.1 项目中各个成员进行代码相互审查 312
11.1.1 代码审查是及时发现错误的比较经济可行的方法 312
11.1.2 利用Eclipse等IDE开发工具快速进行代码审查 315
11.2 应用代码质量检试工具及时发现问题 316
11.2.1 用FindBugs工具静态分析和检查代码中的错误 316
11.2.2 用CheckStyle检查Java代码的规范程度 323
11.2.3 用JDepend度量系统中各个包的依赖性 328
11.2.4 用Cobertura测量工具度量单元测试的覆盖率 331
本章小结 337
本章练习 338
第12章 保持团队协作开发的一致性 339
12.1 软件配置管理及软件版本控制 339
12.1.1 软件配置管理技术及在软件开发中的应用 339
12.1.2 软件版本控制及版本控制软件 341
12.2 利用CVS实现团队协作式项目开发 345
12.2.1 CVS服务器的安装和配置 345
12.2.2 建立和修改CVS客户端用户账号 349
12.3 Eclipse对CVS的集成支持 351
12.3.1 Eclipse对CVS客户端程序的支持 351
12.3.2 在Eclipse中创建初始项目并上传到CVS服务器中 353
12.3.3 从CVS服务器中将项目导入到客户端Eclipse工具中 357
12.3.4 将项目从Eclipse客户端提交到CVS服务器中 360
12.3.5 对CVS的特殊功能要求和操作方法 362
本章小结 367
本章练习 368
第13章 课程设计答辩和文档管理 369
13.1 组织和实施课程设计的答辩环节 369
13.2 设计和制作课程设计答辩幻灯片文件 377
13.3 评定学生的课程设计最终成绩 380
本章小结 382
本章练习 383
参考文献 384