1、,Effective Arch Design,软件架构设计交流,培训简介 架构杂谈 ADMEMS方法体系 Pre-Architecture阶段 Conceptual-Architecture阶段 Refined-Architecture阶段 持续关注非功能需求 ADMEMS方法最佳实践 一些启发,议 程,培训简介,培训名称: 软件架构最佳实践与工程化方法,软件架构专家 架构咨询顾问与培训师 软件架构设计,一线架构师实践指南作者,温 昱,答疑邮箱:,培训简介 架构杂谈 ADMEMS方法体系 Pre-Architecture阶段 Conceptual-Architecture阶段 Refined-
2、Architecture阶段 持续关注非功能需求 ADMEMS方法最佳实践 一些启发,议 程,架构杂谈,软件架构设计=概要设计 系统分析=需求捕获+需求分析+架构设计企业架构=业务架构+数据架构+应用架构+技术架构,需求分析师,架构师,需求分析师,架构师,软件架构概念,架构概念的两个核心思想 架构=元素+交互 架构=重要决策集合 Len Bass的架构定义 某个软件或计算机系统的软件架构是该系统的一个或多个结构,每个结构均由软件元素、这些元素的外部可见属性、以及这些元素之间的关系组成。,软件架构在不断发展,但它仍然是一个尚不成熟的学科。 Len Bass,软件构架实践(第二版),培训简介 架构
3、杂谈 ADMEMS方法体系 Pre-Architecture阶段 Conceptual Architecture阶段 Refined Architecture阶段 持续关注非功能需求 ADMEMS方法最佳实践 一些启发,议 程,架构设计,三个经典难题,需求,架构,思维过程乱不能系统有序进行思维,输出乱不能错落有致提供设计决策,输入乱不能深入全面把握需求,架构师:混乱是思维的大敌!,一套实践体系,Pre-architecture阶段:错过 = 过错Conceptual Arch阶段:大系统成败关键Refined Arch阶段:团队并行开发基础,PA阶段,需求,CA阶段,RA阶段,架构,ADMEM
4、S的四点核心主张,方法体系是大趋势 Architecture Design Method has been Extended to Method System 质疑驱动的架构设计 多阶段方法 内置最佳实践的方法,培训简介 架构杂谈 ADMEMS方法体系 Pre-Architecture阶段 Conceptual Architecture阶段 Refined Architecture阶段 持续关注非功能需求 ADMEMS方法最佳实践 一些启发,议 程,Pre-architecture:不仅是理解需求,第1步:需求结构化 第2步:分析约束影响 第3步:确定关键质量 第4步:确定关键功能,确定关键功
5、能,确定关键质量,持续关注业 务需求和约束,全面有序理解需求,影响架构的因素 :多而杂,对比:经典的需求分类方式,需求是有结构的,工具:ADMEMS矩阵,功能,质量,约束,ADMEMS对策:约束4大类型,理解力:不能“还原”,何谈“模仿”,创造力:用好Pre-architecture阶段,功 能,质 量,约 束,培训简介 架构杂谈 ADMEMS方法体系 Pre-Architecture阶段 Conceptual Architecture阶段 Refined Architecture阶段 持续关注非功能需求 ADMEMS方法最佳实践 一些启发,议 程,重大需求塑造概念架构,架构决定因素关键功能
6、关键质量业务需求与约束,概念架构设计方法,第一步:基于关键功能,进行初步设计 运用鲁棒图(边界对象+控制对象+实体对象),通过为功能规划职责协作链来发现职责 第二步:综合初步设计,确定高层分割 结合架构模式,进行分层 第三步:考虑非功能需求,做出相应决策 “目标-场景-决策”表,概念性架构设计过程,概念性架构设计过程,概念性架构设计过程,概念性架构设计过程,培训简介 架构杂谈 ADMEMS方法体系 Pre-Architecture阶段 Conceptual Architecture阶段 Refined Architecture阶段 持续关注非功能需求 ADMEMS方法最佳实践 一些启发,议 程
7、,RUP的4+1视图,Design View,Implementation View,Process View,Components,Classes, interfaces, collaborations,Active classes,Deployment View,Use cases,架构设计的5视图,运行架构,数据架构,物理架构,逻辑架构,开发架构,持久数据单元文件关系数据库实时数据库数据存储格式文件格式数据库Schema,程序单元源文件、配置文件程序库、框架目标单元程序单元组织Project划分Project目录结构编译依赖关系,控制流进程、线程中断服务程序控制流组织系统启动与停机控制流
8、通信加锁与同步,职责划分逻辑层(Layer)子系统、模块关键类职责间协作接口协作关系,物理节点 PC、服务器 单片机、单板机、专用机 软件安装、部署、烧写 系统软件选型物理节点拓扑 连接方式、 拓扑结构 物理层(Tier ) 冗余考虑,架构设计的5视图,逻辑架构视图,三种手段:高层元素模块 手段:分层的细化 手段:分区的引入 手段:机制的提取,职责划分:4大通用原则,架构本身考虑,人的因素考虑,逻辑架构:迭代的设计思路,结构方面的切分,行为方面的约定,逻辑架构设计经验要点,划分子系统:分层的细化 划分子系统:分区的引入 划分子系统:机制的提取协作决定接口循序渐进的螺旋思维 序列图的优点 与 协
9、作图的问题 包-接口图:从结构到行为的桥,开发架构设计,开发架构:并行开发的必要基础 将“逻辑职责”映射为程序单元 开发技术选型 “程序单元”间关系,运行架构设计,运行架构:系统的“运行时” 结构 引入控制流 确定控制流关系 处理附加问题,物理架构设计,物理架构:物理节点及部署机构 物理拓扑 软件到硬件的映射 思维要点,数据架构的难点:数据分布,数据分布式存储的6种策略 独立Schema(separate schema) 集中(centralized) 分区(partitioned) 复制(replicated) 子集(subset) 重组(reorganized),议 程,培训简介 架构杂谈
10、 ADMEMS方法体系 Pre-Architecture阶段 Conceptual Architecture阶段 Refined Architecture阶段 持续关注非功能需求 ADMEMS方法最佳实践 一些启发,确定关键质量时,不再拍脑袋:从场景到决策,场 景,非功能需求 性能、持续可用性、 安全性、可扩展性,设计决策,需求,设计,笼统,明确,思维工具:目标-场景-决策表,理性设计是关键,议 程,培训简介 架构杂谈 ADMEMS方法体系 Pre-Architecture阶段 Conceptual Architecture阶段 Refined Architecture阶段 持续关注非功能需求
11、 ADMEMS方法最佳实践 一些启发,划分子系统:分层的细化 划分子系统:分区的引入 划分子系统:机制的提取协作决定接口 序列图的优点 与 协作图的问题 包-接口图:从结构到行为的桥 灰盒包图:描述关键子系统循序渐进的螺旋思维 设计模式:包内结构 设计模式:包间协作,架构设计的10条经验,业界趋势:方法体系是必由之路,架构与OO:必须弄清谁包含谁 多视图方法:必须贴近实践 大系统架构设计能否成功:要靠概念架构 非功能需求支持能否到位:要靠场景思维 混乱乃思维大敌:但架构设计的混乱存在于何处 需求决定了架构:但不同需求影响架构的原理有何不同 关键需求决定架构:实践 理论 架构设计:单一方法 or
12、 方法体系 时间先后组织方法体系:架构视图 架构层次 技术选择与非功能考虑:歼灭战 or 持久战,目标,场景,决策,需求层次-需 求方面矩阵,目标-场景-决策表,经验库,5顶视图帽,激活,提供设计针对性,明确化,多角度 法则,连贯性 法则,上下文 法则,架构方法的核心是思维方法,企业内训时推荐的文档模板,1. 文档简介 1.1 文档目的 1.2 文档范围 1.3 定义、缩写词和缩略语 1.4 参考资料 2. 架构描述方式 2.1 架构视图阅读指南 2.2 图表与模型阅读指南 3. 架构设计目标 3.1 关键功能 3.2 关键质量属性 3.3 业务需求和约束因素,4. 架构设计原则 4.1 架构
13、设计原则 4.2 备选架构设计方案及被否原因 4.3 架构设计对后续工作的限制(详设,部署等) 5. 逻辑架构视图 5.1 职责划分与职责确定 5.2 接口设计与协作机制 5.3 重要设计包,企业内训时推荐的文档模板,6. 开发架构视图 6.1 Project划分 6.2 Project 1 project目录结构指导 程序单元组织 框架与应用之间的关系(可选) 6.3 Project n 7. 运行架构视图 7.1 控制流组织 7.2 控制流的创建、销毁、通信 7.3 加锁设计,8. 物理架构视图 8.1 物理拓扑 8.2 软件到硬件的映射 8.3 优化部署 9. 数据架构视图 持久化机制的
14、选择 持久化存储方案 数据同步与复制策略 10. 关键质量属性的设计原理,议 程,培训简介 架构杂谈 ADMEMS方法体系 Pre-Architecture阶段 Conceptual Architecture阶段 Refined Architecture阶段 持续关注非功能需求 ADMEMS方法最佳实践 一些启发,一些启发,无论是培训还是阅读书籍都只是开始,实践才能将知识变为能力 经历不等于经验,只有通过思考和总结才能将经历变成经验,吸收新技能,沉淀成经验,一些启发,申报系统改造思路 申报数据分析 出运数据有申报、保费和收汇三类操作。 申报和保费操作一般当月完成,月底结账,具有明显的按月操作特性。 申报冲账和收汇可能当月也可能跨月完成。,一些启发,申报系统改造思路 改造方案: 按照“垂直分区”数据分布策略,将出运表分为收汇、申报和保费三张表。 按照“子集”数据分布策略,将出运数据分为当期和历史两个表 当期可以是当月,这样冲账需要操作历史表 当期也可以是过去一年,这样所有操作都发生在当期表上,一些启发,产品定义系统设计思路 目标:通过参数化配置方法实现保险产品 手段:采用框架思想来设计产品定义系统,Q&A,谢谢!,