写点什么

架构师训练营第一周课程笔记及心得

用户头像
Airs
关注
发布于: 2020 年 09 月 21 日

学习笔记


架构师的职责,架构师需要具备的能力


职责


  1. 编写架构设计文档

  2. 开发编程框架

  3. 重构软件代码

  4. 设计系统架构

  5. 进行技术选型,解决技术应用中的问题

  6. 优化系统性能

  7. 模块分解与微服务架构重构

  8. 保障系统安全与高可用

  9. 大数据应用

  10. 技术创新

  11. 沟通管理


能力


  1. 编程能力

  2. 基础技术掌握能力

  3. 常用技术产品的理解与应用能力

  4. 性能优化与分析故障的能力

  5. 常用架构模式和框架的理解能力与应用能力

  6. 建模以及设计文档的方法和能力

  7. 业务理解与功能模块及非功能模块的拆解能力

  8. 快速学习能力

  9. 沟通与领导能力

  10. 个人思考追加:从大到小,从宏观到微观的架构分析与构建能力


架构分析方法


利用 4+1 视图建模


· 一个复杂的架构很难只用一张图呈现,所以,我们需要利用 4+1 视图集,将架构的方方面面通过视图来展示,并表达给相关方。不同的视图,从不同的维度描述架构,并且各自有各自的特点


  1. 逻辑视图:是给客户,用户,开发组织管理者看的。描述系统的功能以及提供的接口,承担的职责,和交互的形式。主要由系统,子系统,功能模块,子功能模块,接口构成。用于开发组织划分,成本/进度评估。例子:逻辑架构图

  2. 开发视图:是给开发人员,测试人员看的。描述系统如何开发实现。主要由系统的层,分区,包,框架,系统通用服务,业务通用服务,类和接口,系统平台和相关基础框架构成。用于指导开发组织设计和开发实现。例子:类图

  3. 物理视图:是给系统集成人员,运维人员看的。描述系统逻辑组件到物理节点的物理部署,节点之间的物理网络配置。由物理节点和节点间的通信方式构成。用于指导部署方和运维方的日常工作和故障处理。例子:常见的物理部署图,只展示物理元素

  4. 过程视图:是给性能优化相关人员看的。描述系统运行时线程,进程执行任务/请求的情况。又系统进程,线程以及处理队列等组成。用于性能分析优化。(个人思考:过程视图和时序图有何区别,还是说时序图是过程视图的一种)

  5. 场景视图:.也是+1 中的那个 1,是给用户,设计,开发人员看的。描述架构上最重要,最典型,最有风险的场景和非功能性需求(个人思考:类似需求方给出的具体业务流程,从举例的图上感觉图中元素还是要实现的功能,业务需求,以及功能之间的一些逻辑关系的视图?)。用于阐明架构广度,以及架构中元素的运行方式。


通过 UML 建模,来表达 4+1 视图


  1. 为什么要建模:在开发之前,需要对将要开发的系统进行建模,模型也就是对系统实现的功能和领域特征进行一个抽象的描述,以便更快开发系统,更准确的实现业务功能。系统是解决问题的,系统的设计,就是从领域问题到计算机系统的映射。为了少走弯路,用建模的方式,通过对模型的评估,来减少开发过程中,开发完成之后的返工,bug 修复,以及功能堆砌

  2. 从什么视角去建模:一个好的系统,在动手编码之前,需要进行领域问题分析,领域建模,通过领域建模,找到最适合这个系统并且在未来也能满足需求的系统。有了这个模型,也就有了架构设计。

  3. 在项目过程的什么时候、什么地方建模:在软件开发的三个阶段:需求分析,概要设计,详细设计阶段都可以进行绘制不同的架构图。在讨论交流时,尽可能的贴近核心,减少细节,保留少的,重要的图,白板,visio,Aastash 等,通过抽象的方式,将我们的系统的宏观结构通过图形表述出来,让相关方更好的理解架构师的想法。

  4. 什么是 UML,为什么要用 UML:UML 是一种工业标准,可以用来描述一个问题领域,一个软件设计,一个已完成的软件实现;UML 被称为一种语言,是用来沟通的,通过 uml 这种语言把自己的设计沟通出去,由于统一标准,各个相关方能减少沟通成本(个人思考:语言也是用来记录的,并且通过统一的语言,来记录,规范架构设计,并且通过这种设计来与相关人员沟通,表达自己的设计思想,以及领域问题的解决方案)。


UML 建模


图的分类


  1. 静态图:通过描述类、对象和数据结构以及他们存在的关系,来描述软件要素中不变的逻辑结构。

  2. 动态图:通过描绘执行流程或者实体状态变化的方式,来展示软件实体在执行过程中的变化过程。

  3. 常用图:类图、用例图、组件图、部署图、时序图(序列图)、活动图、状态图


通用模型元素:图例讲解(详见课件,需熟记,多用就行了)


建模(UML 标准图形)


  1. 用例图:特点之一是用例具有边界,边界之内描述用例之内有哪些功能,边界之外是用例的相关对象如使用方,操作方,被操作方,用例与用例之间页有这种操作,被操作关系,用例是一种功能,用一种动作(动宾短语)描述,制作用例图,就是要我们将需要的功能描述出来,并制定功能与功能、系统与使用方、操作方被操作方的边界和关系,是需求分析阶段的一种主要模型视图;用例的关键角色(执行者:Actor):可以是一个人也可以是一个子系统,用例总是由执行者执行,使用用例图的另一个特点,可以对某个用例不停的细化。

  2. 类图:是在做详细设计的时候绘制的一张的图,是为了代码落地和代码实现的。

  3. 对象图:与类图类似,都是表达对象模型的静态结构,能够有效地建立专业领域的计算机系统对象模型。

  4. 包图:使用比较少,一般都使用类图,包图在类图上一层。

  5. 时序图:用来描述对象之间动态交互的行为,着重体现对象间消息传递的时间顺序。时序图可以在软件开发的三个阶段都使用,需求分析,概要设计,详细设计。

  6. 活动图:表达一些流程信息,活动图有一种特殊的对象,泳道,用来分割不同的活动,领域。

  7. 状态图:用来描述状态变迁的,对象是什么状态,通过什么操作或者什么行为变迁为另一种状态的描述的图形。

  8. 合作图:也叫协作图,可以通过时序图直接合成。

  9. 组件图:用来描述业务模块关系的图,分物理组件,逻辑组件,组件图是一种静态模型,我们也可以用组件的时序图来描述组件的动态关系,丰富我们架构图。

  10. 部署图:描述系统最终的部署情况是什么样子的,开发的软件,在哪些服务器上,之间的关系是什么样的,在概要设计阶段的一种图。


附:(师兄的一张分类图)


架构设计文档


如何进行架构设计文档的写作


  1. 基于 uml 模型来制作架构设计文档

  2. 参考架构设计文档模板,包括模板中的各部分内容,以及用词


附件:分享一张以前收藏的极客时间的架构师技能图谱:



发布于: 2020 年 09 月 21 日阅读数: 52
用户头像

Airs

关注

Emmmmmmm 2018.02.28 加入

Emmmmmmm

评论

发布
暂无评论
架构师训练营第一周课程笔记及心得