作为一名架构师,你设计的架构其实是要给很多人看的,包括公司领导、产品、开发、测试和运维,那么你该如何把你设计的架构展示给别人呢? 这就是Relax今天想跟大家聊的内容。大家还是不妨先花个两三分钟好好想一想这个问题。
前言:
设计软件架构图并非一件轻而易举的事情,即使是很简单的一个架构图也可能会出错。有意义且具备一致性的架构图有助于为不同的利益相关者澄清事实,并达成共识。
在大多数情况下,问题的根源并不在于是否使用了一门有效的架构描述语言(比如 UML),而在于低估了架构图的重要性,转而依赖不恰当或不具备一致性的指导性原则,或者缺乏架构思维。
在创建架构图的过程中,试着混合使用自动生成的图元和手动创建的图元,这样可以减少工作量,并且可以表达出各方面的关注点,覆盖到系统的各个层面。
系统不断地发生演化,要维护更新架构图需要花费额外的精力。我们需要知道如何有效地应对这种情况,同时能够保持架构图的一致性和健壮性。
现代的软件架构带来了更多的复杂性,这些都反映在了架构图上。
相信很多小伙伴都已经知道了,答案就是图。所以今天Relax其实聊的主要就是架构设计中的那些图。
架构设计理论上一般划分五种视图,即逻辑架构视图、开发架构视图、运行架构视图、物理架构视图和运行架构视图。5种架构视图的内容和关系可以看下面两张图:
从图中可以看到,五种视图涵盖了逻辑层次划分、接口定义、开发代码组织结构、运行性能设计、运维部署以及数据存储等方方面面。
在Relax的实际架构设计工作中,逻辑架构视图和物理架构视图考虑得最多,开发架构视图中的代码组织结构,运行架构视图的多线程高并发以及数据架构视图中的数据持久化和存储,主要是作为关键技术点进行分析的,这一点其实是跟所处行业有关。
除了上面的五种视图以外,Relax还想跟大家聊一下另外一种图,就是UML图,UML包含很多种图,Relax就不在这里一一介绍了,Relax只谈一下自己实际工作中经常用到的五种UML图—类图、构件图、部署图、用例图和序列图。
类图主要是描述一个类的结构,类是面向对象一个概念,在C语言这种面向过程的语言中,其实也可以按模块的不同功能使用类图来描述这个模块的.c文件和.h文件。
构件图也可以叫组件图,个人觉得跟上面5图中的逻辑架构视图有点像,主要就是描述系统可以划分的逻辑层次,每个层次包含哪些组件以及子系统包含哪些逻辑层次等等这些内容。
部署图其实跟上面5图中的物理架构视图有点像,描述的是系统的位置跟硬件形态。
用例图描述的是系统的输入活动以及系统的自身任务,比如用户会对系统进行什么样的配置操作等等。
序列图其实就是针对用例图的输入活动,系统中的各个组件针对这个输入如何协同工作,相关组件的一个处理流程的描述。
软件架构设计中的那些图,Relax今天就聊到这儿,由于都是理论知识,所以可能不是很好理解,不过不要着急,理论是用于指导具体实践的。