架构师训练营 1 期第 1 周:架构方法 - 总结
一、架构师能力模型
针对市场主流厂商架构师JD的描述要点,及常见面试问题,提炼出作为架构师需要具备的主要能力
编程能力
基础技术掌握能力
常用技术产品的理解和应用能力
性能优化和分析故障的能力
常用架构模式和框架的理解与应用能力
建模以及设计文档的方法和能力
业务理解与功能模块及非功能模块拆解能力
快速学习能力
沟通与领导能力
二、软件架构的定义和作用
软件架构的定义(维基百科)
软件架构是有关软件整理结构与组件的抽象描述,用于指导大型软件系统各方面的设计
软件结构的作用分析
每个系统都有其架构,架构包括架构元素和元素间的关系
每个系统都有多个相关方,相关方不同,其对系统的关注点也不同
架构可以通过架构文档来表达,架构文档中包含了多个不同视角的架构视图
架构师通过架构文档中的架构视图,针对不同的相关方,以不同的视角,为不同的相关方呈现不同的视图,并展示他们想要的关注点,从而辅助相关方对系统推进进行决策(如老板,相关业务部门),对系统落地进行指导(如研发团队)
三、架构视图与表达方法
我们可以从不同的视角分别描述同一个架构设计,最后把这个多个视角的设计综合到一起,就是这个系统的完整架构设计。“4+1视图模型”为我们提供了一个可以全面描述系统架构的参考视角。该模型中不同架构视图承载不同的架构设计决策,支持不同的目标和用途。
场景视图:关注最终用户需求,为整个技术架构提供上下文环境。
逻辑视图:关注最终用户的功能,主要是设计对象模型,对整体系统的抽象表达。
开发视图:从程序实现人员的角度透视系统,描述软件开发环境中的静态组织结构。与逻辑视图存在一定的对应关系。
进程视图:关注系统动态运行时,捕捉设计的并发和同步特征,主要是进程及相关的并发、同步、通信等问题。
物理视图:从系统工程师的角度解读系统,关注软件的物理拓扑结构,描述了软件到硬件的映射,反映了部署特征。
UML统一建模语言为我们绘制不同视角的架构视图提供的表达方法和参考规范,便于我们以大家可以理解的语言进行架构设计的沟通交流。
UML模型图,分为静态图和动态图两类。
静态图:用例图,组件图,包图,类图,对象图,部署图
动态图:协作图,序列图,活动图,状态图
实际系统设计中常用的七种模型图包括:用例图,组件图,类图,部署图,序列图(交互时序),活动图(处理流程),状态图。这些模型图会应用在系统设计的不同阶段,进行逐层细化设计和系统分析,解决各阶段面对的问题。
需求分析
用例图 - 描述系统功能
时序图 - 子系统级的时序图,主要是描述与外部系统之间交互时序
活动图 - 描述业务功能和处理流程
状态图 - 描述复杂业务状态及变迁
概要设计
部署图 - 描述系统整体蓝图
组件图 - 描述部署图中不同服务器中部署的组件或功能模块,及其关联关系
类图 - 描述组件图中包含的类,及其关联关系,主要通过领域模型分析,分析出核心的领域模型对象及其交互合作关系
时序图,活动图:针对这些在部署图,组件图,类图中逐层细化描述的对象,描述其在运行期的动态的交互方式
详细设计
类图 - 开发阶段需要关注的类
时序图,活动图:描述类及其方法在运行期的动态交互方式
状态图:描述类对象重要的状态及变迁
四、架构设计文档
这里提供了一个架构设计文档模板大纲,辅助架构师将系统架构设计意图逐层的表达清楚,并指导架构落地
设计概述
功能概述
非功能约束
系统部署图与整体设计
系统部署图
场景A子系统时序图
场景B子系统活动图
子系统1设计
子系统1组件图
场景A组件序列图
场景B组件活动图
组件1设计
组件1类图
场景A类序列图
对象1状态图
组件2设计
子系统2设计
版权声明: 本文为 InfoQ 作者【piercebn】的原创文章。
原文链接:【http://xie.infoq.cn/article/5d322e7d197d2c668fa1fe3ba】。文章转载请联系作者。
评论