课程简介
针对大多数企业目前是维护遗留系统, 该课程介绍了软件架构的监控,架构的坏症状和重构方法,因为架构设计的前期不能考虑到所有的问题,设计包容一切的完美架构.
目标收益
本课程通过介绍软件架构视图和软件文档,软件架构设计过程,软件架构应用与常用的架构模式/策略/原则等诸多架构实际问题,透视软件架构是如何设计和实现的? 并且介绍应该如何应用系统架构设计为后期的详细设计和应用开发提供指导。
培训对象
软件架构师/技术总监/资深技术人员/高级软件设计师
课程内容
我们已经为几十家企业提供了内训如Adobe中国研发中心,Autodesk软件(中国)研发中心,爱立信中国研发中心(7次内训),思科中国研发中心,卓望科技,朗讯研发中心,平安科技,Visto中国研发中心,横河电机(中国)有限公司,大唐电信研发中心,美国通用电气(GE)研发中心,迈瑞研发中心,阿里巴巴研发中心,摩托罗拉成都研发中心
课程大纲
第一篇: 软件架构核心原理和设计过程 第1单元:软件架构文档和架构视图-如何有效描述架构蓝图 |
内容一:软件架构的视图 1.软件架构的视图原理 2.软件架构视图的意义, 软件架构师的多维思考 3.逻辑视图、开发视图、部署视图、运行视图、场景视图,数据视图 ,实现视图 4.如何和怎样绘制软件架构视图 5.UML建模工具在架构视图的应用 6.典型案例分析:结合多个电信,金融行业项目案例,分析真实项目软件架构视图 内容二: 软件架构的文档编写 1.软件架构文档的意义 2.软件架构模板(根据实际项目情况选择合适内容) 3.软件架构文档的结构(避免出现不必要的重复和缺少关键信息) 4.软件架构文档必须包含的内容(通过多个项目,分析不同系统包含系统内容不同) 5.文档的后期管理(使文档保持更新) 6.软件架构文档的评审 7.典型案例分析:结合多个电信项目案例,进行分析和评审软件架构文档 典型案例分析:结合多个电信项目案例,进行分析和评审软件架构文档 |
第2单元:软件架构设计关注点(哪些因素驱动架构设计,是架构开始设计之前必须知道的?)和架构最佳策略 |
内容一:软件架构设计关注点(软件架构师在架构设计之前必须考虑的要素) 1.架构设计的关注是什么 2.软件架构的驱动因素(改变传统以功能实现和新技术为驱动的策略) 3.软件质量需求对架构的影响(质量属性场景定义和对应架构策略) 4.软件功能需求对架构的影响(分析功能需求变化点和进化点) 5.软件约束条件与架构的影响(业务,运行环境,开发团队,实现技术等约束) 6.如何使功能性需求,非功能性需求和平台细节在架构中能保持分离,从而改善可维护性和可扩展性 7.处理功能需求,非功能性需求,平台细节.制定架构目标 8.典型案例分析:结合项目,因为分析驱动因素的错误,导致项目不能如期验收的失败案例 内容二:软件架构最佳策略 1.重新认识系统质量属性,如何定义质量属性和相应的架构策略 2.系统架构的可扩展性设计策略 3.系统架构的可靠性设计策略 4.系统架构的高性能设计策略 5.系统架构的可维护性设计策略 6.系统架构的易用性设计策略 7.系统架构质量属性和架构模式的应用 8.通过分析案例,了解基本架构策略如何应用 |
第3单元:软件架构设计过程 |
内容一、软件架构设计过程 1.软件架构设计过程方法论(步骤和相应的成果) 2.软件系统边界和外部系统接口的定义 3.大型软件系统的划分子系统原则 4.子系统功能模块的分解 5.子系统间的通信接口的设计 6.如何应对系统内部紧耦合、高内聚 7.软件系统关键质量属性树和可行性分析 8.软件系统部署架构(分布式/数据分布/通信/安全) 9.软件系统部署容量评估(主机/中间件/数据库等资源容量评估) 10.应用系统的类型和架构风格 11.架构模式在实际项目的应用 12.软件架构立方体图(软件架构的分层,分区和基础服务) 13.软件架构通用机制的分析(如何处理基础设施扩展和具体有什么方法做基础设施扩展, 掌握如何分离这些基础设施用例) 14.使用质量场景属性进行迭代架构设计 15.软件架构各层的架构策略(针对企业应用分层,每层的架构策略) 16.软件系统线程架构策略(结合Apache HTTP Server分析线程和进程的架构) 17.数据架构(数据模型/数据分布/数据存取,以及核心数据流) 18.用例视图(抽取典型,有分险和客户最关心用例进行分析,结合架构进行设计) 19.实现视图(架构,设计和开发,实现原则和指南) 20.完成架构文档,对架构文档进行评估 21.典型案例分析:结合3G增值服务项目,分析物理架构设计 |
第4单元:软件架构应用 |
内容一、架构设计的评估和验证 1.软件架构的验证(软件架构风险验证) 2.软件架构的验证方法和指标(基于问题检查表和质量属性树) 3.软件架构的验证注意事项 4.软件架构的评估方式 5.软件详细设计和实现时期,架构师的职责和架构的监控 6.典型案例分析:结合项目实例,分析如何进行验证架构和架构设计的后期重构技巧 内容二、架构设计重构和复用 1.软件架构重构概述 2.软件架构常见的坏症状 3.软件架构的重构手段 4.软件架构的复用 结合某著名公司全球架构师团队架构实例,分析架构重构和架构复用技巧 |
第二篇: 软件架构分层架构和每层核心策略 第5单元:软件架构核心策略 |
内容一:领域模型层架构 1.领域模型架构策略 2.领域模型建模(关联,属性) 3.多个系统数据模型不一致和领域模型的同步 4.公共数据模型(CDM) 5.领域模型分析模式(模型的选择会影响最终产生系统的灵活性和可重用性) 6.根据电信计费系统和网络资源管理案例分析领域模型的架构 内容二:业务逻辑层 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.典型案例分析:结合某银行交易系统分析业务逻辑架构 内容三:数据存取(持久性)层架构 1.数据存取架构策略(对象和关系数据库的映射) 2.对象关系阻抗/ORM技术/数据映射SQLMapper 3.缓存技术在存取层的应用/缓存数据和数据库数据一致性 4.分布式数据存取策略(读写分离/分布数据/异构数据存取) 5.数据同步和一致性策略 6.数据访问层的性能考虑 7.事务管理(本地事务和分布式事务,以及事务补偿) 8.数据锁管理(悲观锁和乐观锁) 9.典型案例分析:结合零售行业POS项目分析数据访问层的架构设计 内容四:数据架构 1.数据架构概述 2.数据建模原则和优化策略 3.数据复制和同步策略 4.数据一致性和分布式事务 5.大数据量数据库可扩展性(水平和垂直扩展,读写分离)以及单表记录过大拆分策略 6. 数据库集群规划 7.分布式数据存取策略(跨多个库, 可能数据库异构类型) 8.数据备份与恢复 9.数据库性能规划 10.数据安全策略 11.与遗留系统的数据库兼容性考虑 12.结合电信,金融,零售POS项目实例分析,系统数据架构设计策略 内容五:系统基础服务组件架构 1.系统基础服务组件架构策略 2.系统通用服务层与业务逻辑分离 3.系统必备13种基础服务架构(异常处理/事务管理/缓存/工作流/校验/通信/安全/日志/定时触发/状态/消息通信/系统监控/配置管理) 4.业务通用服务架构实现策略 结合多个项目实例分析,架构师如何萃取基础服务组件和怎样设计实现 |
第6单元:软件应用类型和参考架构(不同应用类型,必须采用不同架构风格) |
内容一:软件应用类型和参考架构 1.联机交易类架构 2.Web应用系统/大规模高并发Web2.0互联网系统 3.Client/Server系统(银行交易系统) 4.连接分析分析系统(移动经营分析系统) 5.大规模实时并发系统(电信计费系统) 6.Portal系统(个性化和页面集成系统 ) 7.EAI企业集成系统(基于大规模消息集成系统) 8.基于WAP系统(多渠道/多种手机接入系统) 9.后台批处理系统(高并发后台批处理类型 银行后台系统) 10.基于SOA架构系统 结合多个项目案例分析每种应用类型的架构风格特点,主要架构挑战和相应对策 |
第三篇:大型高可用高并发分布式系统架构设计与实践 第7单元 大型分布式架构设计最佳实践 |
内容一:大型分布式架构核心概念 1.无状态化设计; 2.冗余设计; 3.负载均衡设计; 4.分级管理设计; 5.纯异步调用(状态机等方式)设计; 6.调用合理超时设计; 7.服务降级设计; 8.幂等设计; 9.我们的实践案例; 内容二:大型分布式系统服务降级设计与实践 1.服务限流降级概念; 2.服务限流降级使用业务场景; 3.服务限流降级设计环节; 4.服务限流降级之原则篇、架构篇、框架篇、业务篇; 5.移动时代服务限流降级如何打造; 6.我们的实践案例; 内容三:大型分布式系统缓存设计与实践 1.互联网使用缓存类型有哪些?各自作用是什么? 2.分布式缓存冗余如何设计? 3.高可用架构缓存一致性如何保证? 4.高可用架构缓存高性能如何保证? 5.我们的实践案例; 6.缓存系统在大型网站架构中发挥的作用 7.单机缓存系统自研与选型 8.Memcached与Redis的异同及应用场景 9.深入剖析Redis技术 10.Redis主要数据结构剖析 11.Redis性能优化及配置优化 12.Redis复制机制与持久化机制 13.Redis缺陷与陷阱 14.分布式缓存技术剖析 15.扩展Redis集群,如何实现集群弹性伸缩,无缝扩容 16.Redis Cluster官方集群扩展方案及缺陷 业界主流Redis集群方案剖析 内容四:大型分布式系统性能优化 1.系统性能优化的模式都有哪些; 2.系统性能优化常用的步骤是什么; 3.系统性能优化的环节都能哪些; 4.我们的实践案例; 内容五:分布式系统数据库架构设计与实践 1.数据库架构设计基本概念; 2.高可用性设计与实践; 3.高并发设计与实践; 4.读性能设计与实践; 5.一致性设计与实践; 6.扩展性设计与实践; 7.我们的实践案例; 内容六:分布式系统数据库架构设计与实践 1.数据库架构设计基本概念; 2.高可用性设计与实践; |
第四篇: 架构师与架构职责 第8单元: 软件架构师成长 |
内容一、软件架构师成长 1.软件架构师职责 2.软件架构师与项目经理,产品经理,需求分析师不同 3.软件架构师技能模型 4.软件架构师如何成长 5.中国特色的架构师(目前国内很多架构师是身兼多职) |
第五篇: 案例分析 第9单元:大型软件系统架构实践与剖析 (该案例分别在以上各单元,结合主题进行介绍) |
综合软件架构实践与剖析(以实际项目案例为背景) (1)电信行业(电信97/移动BOSS/电信MBOSS/经营分析)软件架构案例研究 (2)金融行业(XXX银行企业信贷和XXX银行)软件架构案例研究 (3)政府行业(XXX社保和XXX税务)软件架构案例研究 (4)电力行业(SG168和XXX电网门户系统)软件架构案例研究 (5)大型互联网系统架构案例研究 (6)邮政行业(***邮政项目)案例研究 |
第一篇: 软件架构核心原理和设计过程 第1单元:软件架构文档和架构视图-如何有效描述架构蓝图 内容一:软件架构的视图 1.软件架构的视图原理 2.软件架构视图的意义, 软件架构师的多维思考 3.逻辑视图、开发视图、部署视图、运行视图、场景视图,数据视图 ,实现视图 4.如何和怎样绘制软件架构视图 5.UML建模工具在架构视图的应用 6.典型案例分析:结合多个电信,金融行业项目案例,分析真实项目软件架构视图 内容二: 软件架构的文档编写 1.软件架构文档的意义 2.软件架构模板(根据实际项目情况选择合适内容) 3.软件架构文档的结构(避免出现不必要的重复和缺少关键信息) 4.软件架构文档必须包含的内容(通过多个项目,分析不同系统包含系统内容不同) 5.文档的后期管理(使文档保持更新) 6.软件架构文档的评审 7.典型案例分析:结合多个电信项目案例,进行分析和评审软件架构文档 典型案例分析:结合多个电信项目案例,进行分析和评审软件架构文档 |
第2单元:软件架构设计关注点(哪些因素驱动架构设计,是架构开始设计之前必须知道的?)和架构最佳策略 内容一:软件架构设计关注点(软件架构师在架构设计之前必须考虑的要素) 1.架构设计的关注是什么 2.软件架构的驱动因素(改变传统以功能实现和新技术为驱动的策略) 3.软件质量需求对架构的影响(质量属性场景定义和对应架构策略) 4.软件功能需求对架构的影响(分析功能需求变化点和进化点) 5.软件约束条件与架构的影响(业务,运行环境,开发团队,实现技术等约束) 6.如何使功能性需求,非功能性需求和平台细节在架构中能保持分离,从而改善可维护性和可扩展性 7.处理功能需求,非功能性需求,平台细节.制定架构目标 8.典型案例分析:结合项目,因为分析驱动因素的错误,导致项目不能如期验收的失败案例 内容二:软件架构最佳策略 1.重新认识系统质量属性,如何定义质量属性和相应的架构策略 2.系统架构的可扩展性设计策略 3.系统架构的可靠性设计策略 4.系统架构的高性能设计策略 5.系统架构的可维护性设计策略 6.系统架构的易用性设计策略 7.系统架构质量属性和架构模式的应用 8.通过分析案例,了解基本架构策略如何应用 |
第3单元:软件架构设计过程 内容一、软件架构设计过程 1.软件架构设计过程方法论(步骤和相应的成果) 2.软件系统边界和外部系统接口的定义 3.大型软件系统的划分子系统原则 4.子系统功能模块的分解 5.子系统间的通信接口的设计 6.如何应对系统内部紧耦合、高内聚 7.软件系统关键质量属性树和可行性分析 8.软件系统部署架构(分布式/数据分布/通信/安全) 9.软件系统部署容量评估(主机/中间件/数据库等资源容量评估) 10.应用系统的类型和架构风格 11.架构模式在实际项目的应用 12.软件架构立方体图(软件架构的分层,分区和基础服务) 13.软件架构通用机制的分析(如何处理基础设施扩展和具体有什么方法做基础设施扩展, 掌握如何分离这些基础设施用例) 14.使用质量场景属性进行迭代架构设计 15.软件架构各层的架构策略(针对企业应用分层,每层的架构策略) 16.软件系统线程架构策略(结合Apache HTTP Server分析线程和进程的架构) 17.数据架构(数据模型/数据分布/数据存取,以及核心数据流) 18.用例视图(抽取典型,有分险和客户最关心用例进行分析,结合架构进行设计) 19.实现视图(架构,设计和开发,实现原则和指南) 20.完成架构文档,对架构文档进行评估 21.典型案例分析:结合3G增值服务项目,分析物理架构设计 |
第4单元:软件架构应用 内容一、架构设计的评估和验证 1.软件架构的验证(软件架构风险验证) 2.软件架构的验证方法和指标(基于问题检查表和质量属性树) 3.软件架构的验证注意事项 4.软件架构的评估方式 5.软件详细设计和实现时期,架构师的职责和架构的监控 6.典型案例分析:结合项目实例,分析如何进行验证架构和架构设计的后期重构技巧 内容二、架构设计重构和复用 1.软件架构重构概述 2.软件架构常见的坏症状 3.软件架构的重构手段 4.软件架构的复用 结合某著名公司全球架构师团队架构实例,分析架构重构和架构复用技巧 |
第二篇: 软件架构分层架构和每层核心策略 第5单元:软件架构核心策略 内容一:领域模型层架构 1.领域模型架构策略 2.领域模型建模(关联,属性) 3.多个系统数据模型不一致和领域模型的同步 4.公共数据模型(CDM) 5.领域模型分析模式(模型的选择会影响最终产生系统的灵活性和可重用性) 6.根据电信计费系统和网络资源管理案例分析领域模型的架构 内容二:业务逻辑层 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.典型案例分析:结合某银行交易系统分析业务逻辑架构 内容三:数据存取(持久性)层架构 1.数据存取架构策略(对象和关系数据库的映射) 2.对象关系阻抗/ORM技术/数据映射SQLMapper 3.缓存技术在存取层的应用/缓存数据和数据库数据一致性 4.分布式数据存取策略(读写分离/分布数据/异构数据存取) 5.数据同步和一致性策略 6.数据访问层的性能考虑 7.事务管理(本地事务和分布式事务,以及事务补偿) 8.数据锁管理(悲观锁和乐观锁) 9.典型案例分析:结合零售行业POS项目分析数据访问层的架构设计 内容四:数据架构 1.数据架构概述 2.数据建模原则和优化策略 3.数据复制和同步策略 4.数据一致性和分布式事务 5.大数据量数据库可扩展性(水平和垂直扩展,读写分离)以及单表记录过大拆分策略 6. 数据库集群规划 7.分布式数据存取策略(跨多个库, 可能数据库异构类型) 8.数据备份与恢复 9.数据库性能规划 10.数据安全策略 11.与遗留系统的数据库兼容性考虑 12.结合电信,金融,零售POS项目实例分析,系统数据架构设计策略 内容五:系统基础服务组件架构 1.系统基础服务组件架构策略 2.系统通用服务层与业务逻辑分离 3.系统必备13种基础服务架构(异常处理/事务管理/缓存/工作流/校验/通信/安全/日志/定时触发/状态/消息通信/系统监控/配置管理) 4.业务通用服务架构实现策略 结合多个项目实例分析,架构师如何萃取基础服务组件和怎样设计实现 |
第6单元:软件应用类型和参考架构(不同应用类型,必须采用不同架构风格) 内容一:软件应用类型和参考架构 1.联机交易类架构 2.Web应用系统/大规模高并发Web2.0互联网系统 3.Client/Server系统(银行交易系统) 4.连接分析分析系统(移动经营分析系统) 5.大规模实时并发系统(电信计费系统) 6.Portal系统(个性化和页面集成系统 ) 7.EAI企业集成系统(基于大规模消息集成系统) 8.基于WAP系统(多渠道/多种手机接入系统) 9.后台批处理系统(高并发后台批处理类型 银行后台系统) 10.基于SOA架构系统 结合多个项目案例分析每种应用类型的架构风格特点,主要架构挑战和相应对策 |
第三篇:大型高可用高并发分布式系统架构设计与实践 第7单元 大型分布式架构设计最佳实践 内容一:大型分布式架构核心概念 1.无状态化设计; 2.冗余设计; 3.负载均衡设计; 4.分级管理设计; 5.纯异步调用(状态机等方式)设计; 6.调用合理超时设计; 7.服务降级设计; 8.幂等设计; 9.我们的实践案例; 内容二:大型分布式系统服务降级设计与实践 1.服务限流降级概念; 2.服务限流降级使用业务场景; 3.服务限流降级设计环节; 4.服务限流降级之原则篇、架构篇、框架篇、业务篇; 5.移动时代服务限流降级如何打造; 6.我们的实践案例; 内容三:大型分布式系统缓存设计与实践 1.互联网使用缓存类型有哪些?各自作用是什么? 2.分布式缓存冗余如何设计? 3.高可用架构缓存一致性如何保证? 4.高可用架构缓存高性能如何保证? 5.我们的实践案例; 6.缓存系统在大型网站架构中发挥的作用 7.单机缓存系统自研与选型 8.Memcached与Redis的异同及应用场景 9.深入剖析Redis技术 10.Redis主要数据结构剖析 11.Redis性能优化及配置优化 12.Redis复制机制与持久化机制 13.Redis缺陷与陷阱 14.分布式缓存技术剖析 15.扩展Redis集群,如何实现集群弹性伸缩,无缝扩容 16.Redis Cluster官方集群扩展方案及缺陷 业界主流Redis集群方案剖析 内容四:大型分布式系统性能优化 1.系统性能优化的模式都有哪些; 2.系统性能优化常用的步骤是什么; 3.系统性能优化的环节都能哪些; 4.我们的实践案例; 内容五:分布式系统数据库架构设计与实践 1.数据库架构设计基本概念; 2.高可用性设计与实践; 3.高并发设计与实践; 4.读性能设计与实践; 5.一致性设计与实践; 6.扩展性设计与实践; 7.我们的实践案例; 内容六:分布式系统数据库架构设计与实践 1.数据库架构设计基本概念; 2.高可用性设计与实践; |
第四篇: 架构师与架构职责 第8单元: 软件架构师成长 内容一、软件架构师成长 1.软件架构师职责 2.软件架构师与项目经理,产品经理,需求分析师不同 3.软件架构师技能模型 4.软件架构师如何成长 5.中国特色的架构师(目前国内很多架构师是身兼多职) |
第五篇: 案例分析 第9单元:大型软件系统架构实践与剖析 (该案例分别在以上各单元,结合主题进行介绍) 综合软件架构实践与剖析(以实际项目案例为背景) (1)电信行业(电信97/移动BOSS/电信MBOSS/经营分析)软件架构案例研究 (2)金融行业(XXX银行企业信贷和XXX银行)软件架构案例研究 (3)政府行业(XXX社保和XXX税务)软件架构案例研究 (4)电力行业(SG168和XXX电网门户系统)软件架构案例研究 (5)大型互联网系统架构案例研究 (6)邮政行业(***邮政项目)案例研究 |