三个观点,理解架构软通动力·专属定制·实战型资深咨询顾问·实战型架构培训专家·创立ADMEMS实践体系·《软件架构设计》著者·《一线架构师》著者·中国Softcon杰出贡献专家·中国CCSE杰出贡献专家温昱三个观点,理解架构组成派决策派环境的“位置”总结:回答大师的问题理解Æ致用议程定义1•软件架构是系统的抽象–定义了元素以及它们之间的交互–忽略了纯粹属于局部的信息,元素的细节不属于架构–架构关注的元素外部可见属性指:•元素提供的服务,•需要的服务,•具备的性能特性、容错特性、对共享资源的使用等架构={结构,……}结构={元素,外部可见属性,关系}•某个软件或计算机系统的软件架构是该系统的一个或多个结构,•每个结构均由软件元素、这些元素的外部可见属性、以及这些元素之间的关系组成。——LenBass定义2RDBMS例:元素=模块连锁超市例:元素=节点理论告诉你•架构=元素+交互•架构需多角度考虑现实告诉你•程序员说,架构就是要决定需要编写哪些类、使用哪些现成框架,程序经理笑了;•程序经理说,架构就是模块的划分和接口的定义,系统分析员笑了;•分析员说,架构就是为业务领域对象的关系建模,配置管理员笑了;•配置管理员说,架构就是开发出来的、以及编译过后的软件到底是个啥结构,数据库工程师笑了;•数据库工程师说,架构规定了持久化数据的结构,其他一切都不过是对数据的操作而已,部署工程师笑了;•部署工程师说,架构规定了软件部署到硬件的策略,用户笑了;•用户说,架构就是决定一个个功能子系统如何划分,程序员又笑了;——引自《软件架构设计》一书温昱将告诉你运行架构数据架构物理架构逻辑架构开发架构•持久数据单元–文件–关系数据库–实时数据库•数据存储格式–文件格式–数据库Schema•程序单元–源文件、配置文件–程序库、框架–目标单元•程序单元组织–Project划分–Project目录结构–编译依赖关系•控制流–进程、线程–中断服务程序•控制流组织–系统启动与停机–控制流通信–加锁与同步•职责划分–逻辑层(Layer)–子系统、模块–关键类•职责间协作–接口–协作关系•物理节点―PC、服务器―单片机、单板机、专用机―软件安装、部署、烧写―系统软件选型•物理节点拓扑―连接方式、拓扑结构―物理层(Tier)―冗余考虑三个观点,理解架构组成派决策派环境的“位置”总结:回答大师的问题理解Æ致用议程RUP的定义软件架构包含了关于以下问题的重要决策:1.软件系统的组织;2.选择组成系统的结构元素和它们之间的接口,以及当这些元素相互协作时所体现的行为;3.如何组合这些元素,使它们逐渐合成为更大的子系统;4.用于指导这个系统组织的架构风格:这些元素以及它们的接口、协作和组合。软件架构不仅注重软件本身的结构和行为,还注重其他特性:使用、功能性、性能、弹性、重用、可理解性、经济和技术的限制及权衡、以及美学等。大局部全局不属于架构设计小影响程度影响范围不属于架构设计(小心陷阱)不属于架构设计(有时关心)架构设计(重点关心)定义中的合理思想延伸:架构决策的层次性系统clientserver引擎层API层SPI及服务扩展模块模块……延伸:架构决策的层次性每个节点代表一个设计决策对比•ArchitectureestablishesthecontextfordesignandimplementationCODEimplementationdesignarchitectureArchitecturaldecisionsarethemostfundamentaldecisions;changingthemwillhavesignificantrippleeffects.结论:同样的思想,不同的表述CODEimplementationdesignarchitecture三个观点,理解架构组成派决策派环境的“位置”总结:回答大师的问题理解Æ致用议程IEEE的定义•IEEE610.12-1990软件工程标准词汇中,是这样定义架构的:架构是以组件、组件之间的关系、组件与环境之间的关系为内容的某一系统的基本组织结构,以及指导上述内容设计与演化的原理(Principle)。讨论•试着“穷举”影响架构的环境因素。不存在普遍适用的解决方案解决方案问题上下文?肚子饿了不存在普遍适用的解决方案解决方案问题上下文肚子饿了不存在普遍适用的解决方案解决方案问题上下文肚子饿了ADMEMS方法推荐的BigPicture三个观点,理解架构组成派决策派环境的“位置”总结:回答大师的问题理解Æ致用议程问题什么是架构?如果你问五个不同的人,可能会得到五种不同的答案。——IvarJacobson《软件架构设计》提及的9个定义回答大师的问题•架构=元素+交互•架构=重要决策的集合•架构=受环境影响的高层设计三个观点,理解架构组成派决策派环境的“位置”总结:回答大师的问题理解Æ致用议程哦!理解层面解惑实践层面耶!致用境界跃升说时似悟对生迷境说时似悟对生迷境你的架构设计,是不是只关心模块设计稳定架构,是不是只关心接口设计架构,是不是只看《需求规格》谢谢!Q&A