1、,赢在架构,大中型软件架构设计实践体系,软件架构专家 架构咨询顾问与培训师 软件架构设计作者,温 昱,三个经典难题,一套实践体系 实践体系的三个阶段 Pre-architecture阶段 Conceptual Architecture阶段 Refined Architecture阶段 实践体系如何解决软件企业的问题 ADMEMS方法的十大理念 Q&A,议 程,架构设计,三个经典难题,需求,架构,思维过程乱不能系统有序进行思维,输出乱不能错落有致提供设计决策,输入乱不能深入全面把握需求,架构师:混乱是思维的大敌!,一套实践体系,Pre-architecture阶段:错过 = 过错Conceptu
2、al Arch阶段:大系统成败关键Refined Arch阶段:团队并行开发基础,PA阶段,需求,CA阶段,RA阶段,架构,三个经典难题,一套实践体系 实践体系的三个阶段 Pre-architecture阶段 Conceptual Architecture阶段 Refined Architecture阶段 实践体系如何解决软件企业的问题 ADMEMS方法的十大理念 Q&A,议 程,第1步:需求结构化 第2步:分析约束影响 第3步:确定关键质量 第4步:确定关键功能,4,3,2,1,确定关 键功能,确定关 键质量,分析约 束影响,全面有序理解需求,影响架构的 因素多而杂,Pre-architec
3、ture:不仅是理解需求,例如,确定关键质量时,理解力:不能“还原”,何谈“模仿”,创造力:用好Pre-architecture阶段,功 能,质 量,约 束,三个经典难题,一套实践体系 实践体系的三个阶段 Pre-architecture阶段 Conceptual Architecture阶段 Refined Architecture阶段 实践体系如何解决软件企业的问题 ADMEMS方法的十大理念 Q&A,议 程,重大需求塑造概念架构,架构决定因素关键功能 关键质量业务需求与约束,对比:RUP的用例驱动方式,Use Cases,Analysis Classes,Source Code,Exec
4、,Design Classes,两种哲学的优劣分析,驱动力,功能 质量 约束,功能 质量 约束,驱动力,概念架构针对重大需求、特色需求、高风险需求,给出高层次的解决方案,问题1:过于理想化 问题2:未来修改很大,案例:基于Web的PMSys,PMSys例:概念架构理想设计,PMSys例:得到的概念架构,4层架构及每层职责采用B/S架构 采用Java语言 ORM技术的采用 集成的考虑,细化架构,详设与编程,概念架构,愿景与需求,三个经典难题,一套实践体系 实践体系的三个阶段 Pre-architecture阶段 Conceptual Architecture阶段 Refined Architec
5、ture阶段 实践体系如何解决软件企业的问题 ADMEMS方法的十大理念 Q&A,议 程,软件架构设计中一则笑话,程序员说,架构就是要决定需要编写哪些类、使用哪些现成框架,程序经理笑了; 程序经理说,架构就是模块的划分和接口的定义,系统分析员笑了; 分析员说,架构就是为业务领域对象的关系建模,配置管理员笑了; 配置管理员说,架构就是开发出来的、以及编译过后的软件到底是个啥结构,数据库工程师笑了; 数据库工程师说,架构规定了持久化数据的结构,其他一切都不过是对数据的操作而已,部署工程师笑了; 部署工程师说,架构规定了软件部署到硬件的策略,用户笑了; 用户说,架构就是决定一个个功能子系统如何划分,
6、程序员又笑了。,RUP的4+1视图,Design View,Implementation View,Process View,Components,Classes, interfaces, collaborations,Active classes,Deployment View,Use cases,5视图:扩充了经验,补足了技巧,运行架构,数据架构,物理架构,逻辑架构,开发架构,持久数据单元文件关系数据库实时数据库数据存储格式文件格式数据库Schema,程序单元源文件、配置文件程序库、框架目标单元程序单元组织Project划分Project目录结构编译依赖关系,控制流进程、线程中断服务程序控
7、制流组织系统启动与停机控制流通信加锁与同步,职责划分逻辑层(Layer)子系统、模块关键类职责间协作接口协作关系,物理节点 PC、服务器 单片机、单板机、专用机 软件安装、部署、烧写 系统软件选型物理节点拓扑 连接方式、 拓扑结构 物理层(Tier ) 冗余考虑,三个经典难题,一套实践体系 实践体系的三个阶段 Pre-architecture阶段 Conceptual Architecture阶段 Refined Architecture阶段 实践体系如何解决软件企业的问题 ADMEMS方法的十大理念 Q&A,议 程,有奖问答,某公司拟以C语言代替C+,重写其电信计费系统,因为开发人员引入了太
8、多抽象,使“可扩展性上去了,性能下来了” 能解决问题 于事无补,因为 用C语言 有会过度设计 问题根源出在Pre-architecture阶段 架构设计中必须分析质量间相互影响,制订权衡取舍策略,内容回顾,确定关键质量时,企业内训时推荐的文档模板,1. 文档简介 1.1 文档目的 1.2 文档范围 1.3 定义、缩写词和缩略语 1.4 参考资料 2. 架构描述方式 2.1 架构视图阅读指南 2.2 图表与模型阅读指南 3. 架构设计目标 3.1 关键功能 3.2 关键质量属性 3.3 业务需求和约束因素,4. 架构设计原则 4.1 架构设计原则 4.2 备选架构设计方案及被否原因 4.3 架构
9、设计对后续工作的限制(详设,部署等) 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. 数据架构视图 持久化机制的选择 持久化存储方案 数据同步与复制策略 10. 关键质量
10、属性的设计原理,有奖问答,有奖问答,许多公司从事嵌入式领域,也需架构设计实践体系的指导,图示的架构中,有几个控制流? 1个 2个 4个 7个,内容回顾,5视图方法 之 运行架构视图,运行架构,控制流进程、线程中断服务程序控制流组织系统启动与停机控制流通信加锁与同步,有奖问答,许多公司困扰于:开发人员不按照架构进行详细设计和编程。如何让开发人员更“拥护”架构? 在架构设计中重视“开发架构视图”,让开发人员看到他最关心的“程序单元”、“源码目录结构”等概念 架构设计不可“高来高去”,能支持并行的详细设计是“架构设计进行到什么程度”的标志 应令HR对开发人员批评、教育 编程一线的程序经理参与架构设计
11、,多管齐下,在架构设计中重视“开发架构视图”编程一线的程序经理参与架构设计能支持并行的详细设计是“架构设计进行到什么程度”的标志,三个经典难题,一套实践体系 实践体系的三个阶段 Pre-architecture阶段 Conceptual Architecture阶段 Refined Architecture阶段 实践体系如何解决软件企业的问题 ADMEMS方法的十大理念 Q&A,议 程,业界趋势:方法体系是必由之路,架构与OO:必须弄清谁包含谁 多视图方法:必须贴近实践 大系统架构设计能否成功:要靠概念架构 非功能需求支持能否到位:要靠场景思维 混乱乃思维大敌:但架构设计的混乱存在于何处 需求决定了架构:但不同需求影响架构的原理有何不同 关键需求决定架构:实践 理论 架构设计:单一方法 or 方法体系 时间先后组织方法体系:架构视图 架构层次 技术选择与非功能考虑:歼灭战 or 持久战,三个经典难题,一套实践体系 实践体系的三个阶段 Pre-architecture阶段 Conceptual Architecture阶段 Refined Architecture阶段 实践体系如何解决软件企业的问题 ADMEMS方法的十大理念 Q&A,议 程,谢 谢 大 家!,如 何 获 取 本 PPT: 大会网站 发邮件至 ,手 机: 138 1800 1229,内训请垂询,