架构师训练营第一周课程笔记及心得
学习笔记
架构师的职责,架构师需要具备的能力
职责
编写架构设计文档
开发编程框架
重构软件代码
设计系统架构
进行技术选型,解决技术应用中的问题
优化系统性能
模块分解与微服务架构重构
保障系统安全与高可用
大数据应用
技术创新
沟通管理
能力
编程能力
基础技术掌握能力
常用技术产品的理解与应用能力
性能优化与分析故障的能力
常用架构模式和框架的理解能力与应用能力
建模以及设计文档的方法和能力
业务理解与功能模块及非功能模块的拆解能力
快速学习能力
沟通与领导能力
个人思考追加:从大到小,从宏观到微观的架构分析与构建能力
架构分析方法
利用 4+1 视图建模
· 一个复杂的架构很难只用一张图呈现,所以,我们需要利用 4+1 视图集,将架构的方方面面通过视图来展示,并表达给相关方。不同的视图,从不同的维度描述架构,并且各自有各自的特点
逻辑视图:是给客户,用户,开发组织管理者看的。描述系统的功能以及提供的接口,承担的职责,和交互的形式。主要由系统,子系统,功能模块,子功能模块,接口构成。用于开发组织划分,成本/进度评估。例子:逻辑架构图
开发视图:是给开发人员,测试人员看的。描述系统如何开发实现。主要由系统的层,分区,包,框架,系统通用服务,业务通用服务,类和接口,系统平台和相关基础框架构成。用于指导开发组织设计和开发实现。例子:类图
物理视图:是给系统集成人员,运维人员看的。描述系统逻辑组件到物理节点的物理部署,节点之间的物理网络配置。由物理节点和节点间的通信方式构成。用于指导部署方和运维方的日常工作和故障处理。例子:常见的物理部署图,只展示物理元素
过程视图:是给性能优化相关人员看的。描述系统运行时线程,进程执行任务/请求的情况。又系统进程,线程以及处理队列等组成。用于性能分析优化。(个人思考:过程视图和时序图有何区别,还是说时序图是过程视图的一种)
场景视图:.也是+1 中的那个 1,是给用户,设计,开发人员看的。描述架构上最重要,最典型,最有风险的场景和非功能性需求(个人思考:类似需求方给出的具体业务流程,从举例的图上感觉图中元素还是要实现的功能,业务需求,以及功能之间的一些逻辑关系的视图?)。用于阐明架构广度,以及架构中元素的运行方式。
通过 UML 建模,来表达 4+1 视图
为什么要建模:在开发之前,需要对将要开发的系统进行建模,模型也就是对系统实现的功能和领域特征进行一个抽象的描述,以便更快开发系统,更准确的实现业务功能。系统是解决问题的,系统的设计,就是从领域问题到计算机系统的映射。为了少走弯路,用建模的方式,通过对模型的评估,来减少开发过程中,开发完成之后的返工,bug 修复,以及功能堆砌。
从什么视角去建模:一个好的系统,在动手编码之前,需要进行领域问题分析,领域建模,通过领域建模,找到最适合这个系统并且在未来也能满足需求的系统。有了这个模型,也就有了架构设计。
在项目过程的什么时候、什么地方建模:在软件开发的三个阶段:需求分析,概要设计,详细设计阶段都可以进行绘制不同的架构图。在讨论交流时,尽可能的贴近核心,减少细节,保留少的,重要的图,白板,visio,Aastash 等,通过抽象的方式,将我们的系统的宏观结构通过图形表述出来,让相关方更好的理解架构师的想法。
什么是 UML,为什么要用 UML:UML 是一种工业标准,可以用来描述一个问题领域,一个软件设计,一个已完成的软件实现;UML 被称为一种语言,是用来沟通的,通过 uml 这种语言把自己的设计沟通出去,由于统一标准,各个相关方能减少沟通成本(个人思考:语言也是用来记录的,并且通过统一的语言,来记录,规范架构设计,并且通过这种设计来与相关人员沟通,表达自己的设计思想,以及领域问题的解决方案)。
UML 建模
图的分类
静态图:通过描述类、对象和数据结构以及他们存在的关系,来描述软件要素中不变的逻辑结构。
动态图:通过描绘执行流程或者实体状态变化的方式,来展示软件实体在执行过程中的变化过程。
常用图:类图、用例图、组件图、部署图、时序图(序列图)、活动图、状态图
通用模型元素:图例讲解(详见课件,需熟记,多用就行了)
建模(UML 标准图形)
用例图:特点之一是用例具有边界,边界之内描述用例之内有哪些功能,边界之外是用例的相关对象如使用方,操作方,被操作方,用例与用例之间页有这种操作,被操作关系,用例是一种功能,用一种动作(动宾短语)描述,制作用例图,就是要我们将需要的功能描述出来,并制定功能与功能、系统与使用方、操作方被操作方的边界和关系,是需求分析阶段的一种主要模型视图;用例的关键角色(执行者:Actor):可以是一个人也可以是一个子系统,用例总是由执行者执行,使用用例图的另一个特点,可以对某个用例不停的细化。
类图:是在做详细设计的时候绘制的一张的图,是为了代码落地和代码实现的。
对象图:与类图类似,都是表达对象模型的静态结构,能够有效地建立专业领域的计算机系统对象模型。
包图:使用比较少,一般都使用类图,包图在类图上一层。
时序图:用来描述对象之间动态交互的行为,着重体现对象间消息传递的时间顺序。时序图可以在软件开发的三个阶段都使用,需求分析,概要设计,详细设计。
活动图:表达一些流程信息,活动图有一种特殊的对象,泳道,用来分割不同的活动,领域。
状态图:用来描述状态变迁的,对象是什么状态,通过什么操作或者什么行为变迁为另一种状态的描述的图形。
合作图:也叫协作图,可以通过时序图直接合成。
组件图:用来描述业务模块关系的图,分物理组件,逻辑组件,组件图是一种静态模型,我们也可以用组件的时序图来描述组件的动态关系,丰富我们架构图。
部署图:描述系统最终的部署情况是什么样子的,开发的软件,在哪些服务器上,之间的关系是什么样的,在概要设计阶段的一种图。
附:(师兄的一张分类图)
架构设计文档
如何进行架构设计文档的写作
基于 uml 模型来制作架构设计文档
参考架构设计文档模板,包括模板中的各部分内容,以及用词
附件:分享一张以前收藏的极客时间的架构师技能图谱:
版权声明: 本文为 InfoQ 作者【Airs】的原创文章。
原文链接:【http://xie.infoq.cn/article/a84e91819a4d2dc2087dfcd2a】。未经作者许可,禁止转载。
评论