[架构师训练营] Week01 - 学习总结

用户头像
谭方敏
关注
发布于: 2020 年 06 月 25 日

第一周上课,老师不急于教会我们具体的技能点,而是强调作为不易察觉和容易忽视的地方:比如架构是不可描述和设计的,必须要所有人员到位,大家都知晓情况的时候,才能进行设计的,并且以为架构师就是画画uml图就好了。老师在里面提到了所谓的架构设计其实把头脑中抽象的东西画出来。而不是基于某些业务自底向上地设计,换句话说,应该是自顶向下设计。

课程中提炼出了这个隐含的逻辑,开始于领域问题,结束于解决方案。这个往往比直接画uml图更加重要,架构设计不是凭空想象出来的,不是空中楼阁。

uml只是辅助我们思考的一个工具,而不是架构设计的全部。

uml 分为动态图和静态图。

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

包括协作图,序列图,活动图,状态图,我们需要关注的是序列图,活动图,状态图。

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

包括用例图,对象图,类图,组件图,包图,部署图,我们需要关注的是用例图,类图,组件图,部署图。

如果按照架构设计三阶段来分:需求分析,概要设计,详细设计来分的话,那么则是:

需求分析

         用例图-功能场景,活动图-关键流程,系统级时序图-依赖关系,状态图-状态变迁。

概要设计 组件级

          部署图,组件图,组件级时序图,组件级活动图

详细设计

         类图 类时序图,状态图-状态枚举值-状态变迁布尔值, 方法级活动图(内部逻辑)。

在各个图中需要做的是了解其中的各种元素。

通用模型元素:

可以在图中使用的概念统称为模型元素。

模型元素常用的元素符号:类,对象,节点,包和组件等

通用模型关系:

依赖          关联

泛化          聚合

实现          组合

依赖:(use a)表示一个元素以某种方式依赖于另一种元素,一个类依赖于与另一个类的定义,其中一个类将影响另外一个类。

关联:(has a)连接(connect)模型元素及链接(link)实例, 类与类之间的联结,使得一个类知道另外一个类的属性和方法。

泛化:表示一般与特殊的关系,即一般元素是特殊关系的泛化,表示类与类之间的继承关系。

实现:类对接口的实现,只继承接口,不继承接口实现

聚合:表示整体与部分的关系,不共享生命周期。

组合:表示整体与部分的关系,共享生命周期。

依赖 vs 关联

关联比依赖关系更强,关联是更强的依赖。

组合 vs 聚合

组合,生命周期一致的,整体消亡,组成部分也随之消亡, 人与身体器官。

聚合,生命周期不一致,整体消亡,组成部分可能还存在,汽车与车轮。



接下来针对这7种图进行详细说明,主要关注图的应用场景,所处阶段, 所包含元素, 以及注意事项,客户。

用例图

应用场景:

描述系统的功能需求,在宏观上给出模型的轮廓。通过对典型用例的分析,使得开发者能够有效地了解用户需求。

所处阶段:

需求分析阶段

包含元素:

角色-小人(可以是用户,也可以是外部系统);用例-椭圆(功能,动宾结构);边界-矩形(界定范围);用例之间关系-include/extend.

注意事项:

1)每张图维持10-20个用例规模,

2)use case可以自顶向下不断细化,抽象出不同层次的用例图。

3)是否细分以相关方看得懂为准。

客户:

架构师



类图

应用场景:

描述类之间的关系。

所处阶段:

详细设计阶段

包含元素:

类-类名,属性,方法;包-常规用途的组合机制;接口-一系列操作的集合;类之间的关系-通用模型元素关系。

注意事项:

尽量保证类相对独立,并且类之间关系清晰。

客户:

研发工程师。



组件图

应用场景:

描述物理组件,模块的边界之间的关系是咋样的。

所处阶段:

概要设计阶段

包含元素:

组件-配置组件(构成系统所必须的组件,是运行系统时需要配置的组件);

工作产品组件(开发过程的产物,是形成配置组件和可执行文件之前必要的工作产品,不直接参与到可执行系统中,而是用来产生系统的中间产品);执行组件代表可运行的系统最终运行产生的运行结果

接口-提供接口(称为导出接口,供给接口,是组件为其他组件提供服务的操作的集合),需求接口(引入接口,组件向其他组件请求相应服务时要遵循的接口)

关系-依赖,实现。

注意事项:

客户:

开发工程师



部署图

应用场景:

物理部署,各结点之间进行交互的通信路径称为连接,连接表示系统中的节点存在着联系,用节点之间的连接表示连接,在连接的连线上标准通信类型。

所处阶段:

概要设计阶段

包含元素:

节点-存在与运行时的代表计算机资源的物理元素,可以是硬件也可以是运行其上的软件系统。

节点实例-名称有下划线和结点类型前面有冒号,冒号前面可以有示例名称也可以没有示例名称。

节点类型-

物件-软件开发过程中的产物

连接-通信路径.

结点容器-一个节点可以包含其他节点容器。

注意事项

客户

开发工程师



序列图

应用场景:

一种交互图,主要描述对象之间的动态合作关系以及合作过程中的行为次序,常用来描述一个用例的行为。

所处阶段:

需求分析阶段(系统级),概要设计阶段(组件级),详细设计阶段(类级)。

包含元素:

角色-人物或者其它子系统。

对象-对象在交互中扮演的角色,位于时序图顶端和对象代表。

生命线-代表时序图中的对象在一段时间内的存在。每个对象或者序列图下都有一个垂直虚线。

激活期-代表时序图中的对象执行一项操作的时期。

消息-定义交互和协作中交换信息的类,用于对实体间的通信内容建模,信息用于实体间传递信息。 允许实体请求其他服务,消息类型分为同步消息(调用发送消息要同步被调用者返回),异步消息(发送者不用等被调用者返回就能继续向下执行)。

注意事项

客户

架构师,开发工程师



活动图

应用场景:

一种描述交互的方式,描述采取何种动作,做什么(对象状态改变),何时发生(动作序列), 以及在何处发生(泳道)。

所处阶段:

需求分析阶段(业务流程),概要设计阶段(子系统),详细设计阶段(方法/函数级)。

包含元素:

流程处理节点,挡板-流程分叉或者聚合,泳道-描述不同领域,完成活动的对象,并聚合一组活动。

注意事项:

客户:

架构师,开发工程师



状态图

应用场景:

描述不同状态变化迁移关系,状态因何而产生。

包括元素:

状态,状态迁移条件。

所处阶段:

需求分析阶段,详细设计阶段

注意事项:

客户:

架构师, 开发工程师。



uml是一套沟通语言,跟国人学外语一样的,在使用的时候,需要在注意表达形式的同时,注意表达内容。这样才能获得比较好的效果。





用户头像

谭方敏

关注

还未添加个人签名 2019.10.22 加入

还未添加个人简介

评论

发布
暂无评论
[架构师训练营] Week01 -学习总结