课程介绍
这门课程适合对基于Java EE技术的企业软件系统负有总体软件架构的学员。学员还要求能深入了解企业架构师的作用,并希望在n层企业系统中使用Java EE技术。现有的架构师也可以通过学习这门课程,了解如何使用Java EE技术提高其企业系统中服务的质量。
课程基础
为了成功学习这门课程,学员必须具备以下能力
熟悉java语言和面向对象设计思想
了解Java EE基础技术,重点web技术
了解应用服务器(Tomcat,JBOSS,Weblogic,websphere任意一种)
熟悉SQL和JDBC技术
熟悉分布式架构
课程目标
1、软件架构的本质
2、软件架构的设计过程
3、软件架构模式
4、深入理解J2EE和架构模式和反模式,以及如何对架构重构
5、深入理解J2EE架构各层(表示层/业务逻辑层/数据存取层/基础服务层/实体层)如何设计和如何权衡
6、深入理解J2EE 技术
7、J2EE业务逻辑层 事务脚本 和 领域驱动设计
8、使用工程权衡技术,用高性价比的方式应对服务质量要求
9、描述架构提交物中架构和产品的作用
10、列举并描述大型企业系统中常见的问题
课程特点
结合客户的实际需求,适当增加客户感兴趣的内容,删除一些理论性强而客户又很少用到的内容。同时参考了国外主要机构的相关培训课程。
课程大纲
时间 | 授课内容 | 练习与实验 |
第一章 | 内容一:介绍基本的架构概念 1. 理解企业应用中的难题 2. 定义软件架构 3. 理解软件架构需求 4. 理解架构师的作用、责任和交付项目 5. 理解使用统一建模语言(UML)的架构模型 6. 理解架构与设计之间的差别和相似点
内容二:软件架构的视图 1. 软件架构的视图原理 2. 软件架构视图的意义, 软件架构师的多维思考 3. 逻辑视图、开发视图、部署视图、运行视图、场景视图,数据视图 ,实现视图 4. 如何和怎样绘制软件架构视图 5. UML建模工具在架构视图的应用 6. 典型案例分析:结合多个电信,金融行业项目案例,分析真实项目软件架构视图
内容三:软件架构的文档编写 1. 软件架构文档的意义 2. 软件架构模板(根据实际项目情况选择合适内容) 3. 软件架构文档的结构(避免出现不必要的重复和缺少关键信息) 4. 软件架构文档必须包含的内容(通过多个项目,分析不同系统包含系统内容不同) 5. 文档的后期管理(使文档保持更新) 6. 软件架构文档的评审 7. 典型案例分析:结合多个电信项目案例,进行分析和评审软件架构文档 典型案例分析:结合多个电信项目案例,进行分析和评审软件架构文档
内容四:检查系统架构应于开发的风险 1. 了解分布式企业系统的关键风险因素 2. 设计灵活的对象模型 3. 理解创建网络模型的指导原则 4. 验证事务/异常/性能/安全的设计 5. 规划系统容量 | 相关案例介绍及分析 |
第二章 | 内容一:J2EE分层架构模式 1. J2EE架构模式 2. 表示层的设计原则和注意事项 3. 业务逻辑层的设计原则和注意事项 4. 持久化层的设计原则和注意事项 5. 基础服务架构层设计原则和注意事项 6. 业务实体层的设计原则和注意事项
1. 描述与开发Web层相关的角色 2. 理解分离注意事项 3. 描述有关实施Web层展示问题的策略 4. 描述有关实施Web层数据问题的策略 5. 描述有关管理Web层展示、数据和逻辑问题的策略 6. 理解面向请求的和面向组件的Web层框架的优点和缺点 7. 描述有关在Web层中实施验证和授权的策略 8. 解决Web应用扩展问题 | |
第三章 | 内容一:业务逻辑层的架构 1. 理解有关使用企业应用容器服务的价值 2. 描述用于实施域模型服务的架构选项 3. 描述用于实施域模型实体的架构选项 4. 分发域模型组件 5. 理解例外处理和日志的最佳做法
内容二: Spring核心架构 1. Spring的核心 2. 依赖注入 3. 应用切面 4. Spring配置 5. 高级装配 6. 面向切面的Spring 7. 编写切点 8. 后端中的Spring 9. Spring的数据访问异常体系 10. 在Spring中使用JDBC 11. 使用对象—关系映射持久化数据 12. 在Spring中集成Hibernatc 13. 使用NoSQL数据库
内容三:基于Spring业务逻辑层的架构 14. Spring轻量级容器技术 15. Spring的Ioc/DI技术 16. Spring的数据存取技术 17. Spring AOP技术 18. Sping事务管理 19. Spring在业务逻辑层的应用 20. Spring项目经验 | |
第四单元 业务逻辑层实现策略—事务脚本和领域驱动 | 内容一:业务逻辑层实现策略与模式 1. 业务逻辑层架构模式 2. 事务脚本模式/领取驱动设计/表模块 3. 领域驱动设计的优缺点和面临的挑战 4. 如何建立软件项目的有效模型 5. 构建基于模型的语言,用来连接领域专家,开发者和代码自身。 6. 技术人员和业务人员在建模过程中的探索式交互 1. 案例分析, 通过案例演示, 领取驱动设计与传统事务脚本模式的优缺点
内容二:事务脚本模式 1. 事务脚本(Transaction Script)概述 2. 事务脚本运行机制 3. 事务脚本缺点 4. 事务脚本使用时机 5. 事务脚本实现策略 6. 事务脚本最佳实践 7. 事务脚本测试原则 8. 案例分析 内容三:领域驱动设计策略与模式 1. 领域模型(Domain Model) 2. 领域模型运行机制 3. 领域模型使用时机 4. 领域模型实现难度 5. 领域模型改造 6. 领域模型缺点 7. 领域模型案例分析 | |
第五单元 业务逻辑层软件设计复用 | 内容一:软件复用设计 1. 在详细设计之中,分析发现共同的行为的抽象和共同的机制来实现 2. 软件通用服务组件的设计 3. 复用已有的东西,比自己编写更容易。如果不容易,大家就不会去复用。 4. 软件复用的管理策略
内容二:软件通用机制的设计与实现 1. 异常的机制设计与实现 2. 系统的配置管理机制的设计与实现 3. 系统的Cache缓存机制的设计与实现 4. 异步消息和通知机制的设计与实现 5. 认证授权以及安全/加解密的机制设计与实现 6. 事务管理机制的设计与实现 7. 定时触发的机制设计与实现 8. 后台批处理机制设计与实现 9. 校验机制设计与实现 10. 通信机制设计与实现 内容三:框架(Application framework)设计 1. 应用框架概述 2. 框架vs.类库的不同 3. 在软件详细设计时如何应用框架和设计新的框架 4. 典型案例分析:结合多个项目实例,在实际项目中如何进行应用和开发框架
内容四:某电信项目案例-异常处理框架设计 7. 系统的异常处理策略 8. 设计一个通用异常处理子系统 9. 分析如何应用设计模式在该案例 10. 分析通过应用设计模式,带来了哪些好处(表现在软件的灵活性) 11. 分析如何转换为Framework 典型案例分析:该框架已经在多个大型项目之中应用
内容五:某电信项目案例的详细设计分析 1. 项目背景( 2. 使用AOP思想改造项目设计 3. AOP与软件复用 | |
第六章 | 内容二:基于SQLMapper数据存取技术-MyBatis 1. What is MyBatis? 2. Working with mapped statements 3. Executing nonquery statements 4. Using advanced query techniques 5. Transactions 6. Using Dynamic SQL 7. Improving performance with caching
内容三:J2EE架构的事务管理 1. 事务的概述 2. 本地事务和分布式事务JTA 3. 本地事务的管理的模式 4. 分布式事务管理的模式 5. 声明方式和编程方式事务管理 6. 事务,锁,并发
内容四:JMS与Spring消息 1. Spring消息 2. 异步消息简介 3. 发送消息 4. 评估异步消息的优点 5. 使用JMS发送消息 6. 在Spring中搭建消息代理 7. 创建消息驱动的POJO 8. 使用基于消息的RPC 9. 使用AMQP实现消息功能
内容六:分布式缓存与Spring NoSQL数据库访问 1. 缓存数据 2. 启用对缓存的支持 3. 配置缓存管理器 4. 为什么使用NoSQL 5. 使用memcached 6. 使用NoSQL数据库 | |
第七章 | 内容一:J2EE架构案例 1. 电信行业J2EE架构项目案例分析 2. 电力行业J2EE架构项目案例分析 3. 政府行业J2EE架构项目案例分析 4. 金融行业J2EE架构项目案例分析 5. 重点分析为何这样设计/优点/缺点/当初的考虑 |