1 第一单元 软件架构文档和架构视图——如何有效描述架构蓝图
1.1 软件架构的视图
1)软件架构视图的意义,软件架构师的多维思考
2)逻辑视图、开发视图、部署视图、运行视图、场景视图、数据视图、实现视图
3)怎样绘制软件架构视图
4)UML建模工具在架构视图的应用
5)典型案例分析:结合多个电信、金融行业类项目,分析真实项目软件架构视图
1.2 软件架构的文档编写
1)软件架构文档的意义
2)软件架构模板(根据实际项目情况选择合适内容)
3)软件架构文档的结构(避免出现不必要的重复和缺少关键信息)
4)软件架构文档必须包含的内容(通过多个项目,分析不同系统包含的不同内容)
5)文档的后期管理(使文档保持更新)
6)软件架构文档的评审
7)典型案例分析:结合多个电信项目案例,进行分析和评审软件架构文档
2 软件架构设计关注点(哪些因素驱动架构设计,是架构开始设计前必须知道的?)和架构最佳策略
2.1 软件架构设计关注点(软件架构师在架构设计前必须考虑的要素)
1.架构设计关注是什么
2.软件架构的驱动因素(改变传统以功能实现和新技术为驱动的策略)
3.软件质量需求对架构的影响(质量属性场景定义和新技术为驱动的策略)
4.软件功能需求对架构的影响(分析功能需求变化点和进化点)
5.软件约束条件与架构的影响(业务、运行环境、开发团队、实现技术等约束)
6.如何使功能性需求,非功能性需求和平台细节在架构中保持分离,从而改善可维护性和可扩展性
7.处理功能需求,非功能需求,平台细节,制定架构目标
8.典型案例分析:结合项目,因为分析驱动因素的错误,导致项目不能如期验收的失败案例
9.其中多个真实失败的案例,值得借鉴
2.2 软件架构最佳策略
1.重新认识系统质量属性,如何定义质量属性和相应的架构策略
2.系统架构的可扩展性设计策略
3.系统架构的可靠性设计策略
4.系统架构的高性能设计策略
5.系统架构的可维护性设计策略
6.系统架构的易用性设计策略
7.系统架构质量属性和架构模式的应用
8.通过分析案例,了解基本架构策略如何应用
9.思考这些架构策略,如何应用在自己的实际项目中
3 软件架构设计过程
3.1 软件架构设计过程
1.软件架构设计过程方法轮(步骤和相应的成果)
2.典型案例分析:结合具体项目案例进行分析,演示架构设计过程
3.2 商业架构分析
1.软件系统边界和外部系统接口的定义
2.大型软件系统的划分子系统的原则
3.子系统功能模块的分解
4.子系统间的通信接口的设计
5.如何应对系统内部紧耦合、高内聚
6.软件系统关键质量属性树和可行性分析
7.软件系统部署架构(分布式/数据分布/通信/安全)
8.软件系统部署容量评估(主机/中间件/数据库等资源容量评估)
9.典型案例分析:结合多个项目分析,分析商业架构成果
3.3 逻辑架构设计
1.应用系统的类型和架构风格
2.架构模式在实际项目的应用
3.软件架构立方体图(软件架构的分层,分区和基础服务)
4.软件架构通用机制的分析(如何处理基础设施扩展和具体有什么方法做基础设施扩展,掌握如何分离这些基础设施用例)
5.使用质量场景属性进行迭代架构设计
6.软件架构各层的架构策略(针对企业应用分层,每层的架构策略)
7.软件系统线程架构策略(结合Apache HTTP Server分析线程和进程架构)
8.典型案例分析:结合项目案例,进行分析该阶段的主要任务和相关成果
3.4 物理架构设计
1.数据架构(数据模型/数据分布/数据存储,以及核心数据流)
2.用例视图(抽取典型,有风险和客户最关心用例进行分析,结合架构进行设计)
3.实现视图(架构,设计和开发,实现原则和指南)
4.完成架构文档,对架构进行评估
5.典型案例分析:结合3G增值服务项目,分析物理架构设计
4 软件架构应用
4.1 架构设计的评估和验证
1.软件架构的验证(软件架构风险验证)
2.软件架构的验证方法和指标(基于问题检查表和质量属性树)
3.软件架构的验证注意事项
4.软件架构的评估方式
5.软件详细设计和实现时期,架构师的职责和架构的监控
6.典型案例分析:结合项目示例,分析如何进行验证架构和架构设计的后期重构技巧
4.2 架构设计重构和复用
1.软件架构重构概述
2.软件架构常见的坏症状
3.软件架构的重构手段
4.软件架构的复用
5.结合某著名公司全球架构师团队架构实例,分析架构重构和架构复用技巧
5 软件应用类型和参考架构(不同应用类型,必须采用不同架构风格)
1.联机交易类架构
2.Web应用系统/大规模高并发web2.0互联网系统
3.Client/Server系统(银行交易系统)
4.连接分析系统(移动经营分析系统)
5.大规模实时并发系统(电信计费系统)
6.Portal系统(个性化和页面集成系统)
7.EAI企业集成系统(基于大规模信息集成系统)
8.基于WAP系统(多渠道/多种手机接入系统)
9.后台批处理系统(高并发后台批处理系统/银行后台系统)
10.基于SOA架构系统
11.结合多个项目案例,分析每种应用类型的架构风格特点,主要架构挑战和相应对策
6 软件架构模式应用
1.软件架构模式概述
2.管道过滤器/事件架构/微内核/反射架构模式(其他10多种常见架构模式)
3. .net常见架构模式和J2EE架构模式
4.分布式和并发架构模式
5.典型案例分析:结合国内社保平台项目分析软件架构模式的应用经验
7 软件架构的实现——框架和设计模式
7.1 应用框架(Application framework)
1)框架 vs. 类库
2)软件架构如何以框架的方式实现
3)框架的开发过程和开发技术(通用点 vs. 扩展点)
4)一个著名框架的实现分析
5)典型案例分析:结合项目实例,开发框架
7.2 设计模式技术在软件框架设计中的应用
1)设计模式思想(封装变化)
2)设计模式在架构设计之中的综合应用
3)典型案例分析:结合项目实例,分析设计模式在架构设计时期的实际应用
8 软件架构核心策略
8.1 领域模型架构
1)领域模型架构策略
2)领域模型建模(关联,属性)
3)多个系统数据模型不一致和领域模型的同步
4)公共数据模型(CDM)
5)领域模型分析模式(模型的选择会影响最终产生系统的灵活性和可重用性)
6)根据电信计费系统和网络资源管理案例分析领域模型的架构
8.2 业务逻辑和业务流程架构
1)业务逻辑架构模式(事务脚本/领域模型/服务层模式)
2)业务流程架构策略
3)基于容器的业务逻辑架构(EJB和轻量级,以及容器提供的基础服务)
4)面向方面的业务架构和AOP技术在业务逻辑架构的应用
5)状态管理架构策略(有状态和无状态服务,以及对可扩展性的影响)
6)业务逻辑的分布式架构策略(远程或本地/同步或异步)
7)并发和同步架构模式(Half-Sync/Half-Async, Leader/Followers, Active Object, Monitor Object)
8)基于中间件的业务逻辑架构(Corba/Tuxedo/MQSeries/J2EE/.net)
9)典型案例分析:结合某银行交易系统分析业务逻辑架构
8.3 数据存取(持久性)架构
1)数据存取架构策略(对象和关系数据库的映射)
2)对象关系阻抗/ORM技术/数据映射 SQLMapper
3)缓存技术在存取层的应用/缓存数据和数据库数据一致性
4)分布式数据存取策略(读写分离/分布数据/异构数据存取)
5)数据同步和一致性策略
6)数据访问层的性能考虑
7)事务管理(本地事务和分布式事务,以及事务补偿)
8)数据锁管理(悲观锁和乐观锁)
9)典型案例分析:结合零售行业POS项目分析数据访问层的架构设计
8.4 数据结构
1)数据架构概述
2)数据建模原则和优化原则策略
3)数据分布策略(集中、归档、子集、ETL等模式)
4)数据复制和同步策略
5)数据一致性和分布式事务
6)大数据量数据库可扩展性(水平和垂直扩展,读写分离)以及单表记录过大拆分策略
7)数据库集群规划
8)分布式数据存取策略(跨多个库,可能数据库异构类型)
9)数据备份和恢复
10)数据库性能规划
11)数据安全策略
12)与遗留系统的数据库兼容性考虑
13)结合电信、金融、零售POS项目实例分析,系统数据架构设计策略
8.5 系统内部各组件或层之间通信架构
1)系统通信设计原则
2)通信机制和通信模式
3)协议选择对性能的考虑
4)同步还是异步
5)适配器策略(基于API/数据库/文件/协议等适配)
6)通信接口设计策略(统一接口/业务分类)
7)数据传输形式(DTO/XML等)
8)Extension/Explicit/Proxy/Dynamic/Batch接口模式
9)结合项目实例分析,系统内部的通信设计
8.6 系统与外部系统的接口架构
1)系统接口设计策略
2)点对点和基于EAI平台架构
3)系统接口策略(基于文件,共享数据库,同步RPC或者异步消息)
4)系统接口安全/审计/稽核等架构
5)结合某省电信BSS系统EAI项目实例分析,系统接口架构策略
8.7 系统基础服务组件架构
1)系统基础服务组件架构策略
2)系统通用服务层与业务逻辑分离
3)系统必备13种基础服务架构(异常处理/事务管理/缓存/工作流/校验/通信/安全/日志/定时触发/状态/消息通信/系统监控/配置管理)
4)业务通用服务架构实现策略
5)结合多个项目实例分析,架构师如何萃取基础服务组件和怎样设计实现
9 大型软件系统架构实践与剖析
10 软件架构师成长
1.软件架构师职责
2.软件架构师与项目经理、产品经理、需求分析师不同
3.软件架构师技能模型
4.软件架构师如何成长
5.中国特色的架构师