架构制图:工具与方法论( 六 )


5. 架构制图的目标
架构制图:工具与方法论
本文插图
讨论具体的制图方法和工具前 , 我们需要先树立清晰的制图目标 。 工具是人类进化的阶梯 , 但如果理解和利用不当 , 则很容易反过来被工具所限制甚至奴役 , 忘了最初发明和使用工具的初心 。 对于架构制图而言 , 已经有那么多形形色色的方法与工具 , 使用它们的初心是什么呢?我认为本质上都是想把制图这个过程从一门自由的手艺变成一项科学的工程:系统、严谨、完整、标准化 , 同时能做到可重复、可持续和高效 。
P.S:当时做 PPT 太赶 , 所以从这个章节开始的配图 , 只能被迫走极简路线了 , 还请见谅 。。。
架构制图方法与工具
经过前面几个章节的“简短”铺垫 , 相信大家对架构制图的背景知识都已经产生了足够的认知 。 本章节将会具体列举和描述一些典型的架构制图方法与工具 , 其中有常见的也有罕见的 , 重点是希望能通过各种方法的横向对比 , 加深大家对制图方法本质的理解 。
1. 方法一:UML
架构制图:工具与方法论
本文插图
UML 应该是大部分人最熟悉的制图方法了 , 最新的 UML 2.x 版本由以下两大类图组成:

  • 结构图(Structural Diagrams):通过对象、属性、操作和关系等方式 , 强调系统的静态结构 , 其中最常见的类型包括类图(Class Diagram)、组件图(Component Diagram)和部署图(Deployment Diagram);
  • 行为图(Behavioral Diagrams):通过展示对象之间的协作关系以及对象内部的状态改变 , 强调系统的动态行为 , 其中最常见的类型包括用例图(Use Case Diagram)、活动图(Activity Diagram)、时序图(Sequence Diagram)和状态机图(State Machine Diagram) 。
作为通用的“统一建模语言” , UML 总共包含了 14 种不同类型的图 , 可以全面覆盖软件设计领域各种制图需求 , 当然也包括了架构制图 。 同时 , 也正是因为 UML 把自己当成了一门语言 , 因此其各种记号(notion)和语义(sematics)都有非常严谨的定义 , 不会出现模糊或者歧义问题 。 最后 , UML 经过几十年的发展和推广 , 也早已成为世界范围内广泛使用的标准规范 , 其所带来的的隐性价值就是:在团队内使用 UML 进行沟通的成本是比较低的 , 因为可以假定绝大部分技术人员都能理解UML的含义和用法 。
然而 , UML 也非万能(虽然历史上曾一度把它当成软件设计的银弹) , 它最被人诟病的缺点就是过于复杂 。 这也不能怪 UML , 毕竟它就是要被设计为足够通用、严谨和强大的 , 这些目标都与“简单”背道而驰 , 并让它一步步演化到了今天这个复杂刻板的庞然大物模样 。 虽然上面我们自信地假定了技术人员大多都懂 UML , 但这个“懂”如果带上一个程度量词 , 我觉得平均能到 20% 就不错了 —— 绝大部分也就能认识几个常见的类图、时序图 , 估计都很难准确说出类图中各种箭头的含义 。
无论怎么说 , UML依然应该是每个程序员的制图工具箱中最常用和必备的工具之一 。 当然 , 也不应该是唯一 , 因为下面也还有些不能错过的好东西 。
2. 方法二:4+1 View Model
架构制图:工具与方法论
本文插图
“4+1”是啥?不知道没关系 , 听过“6+1”吗?对 , 就是那个小时候常看的“非常6+1”节目 。 它跟“4+1”之间的关系 , 就跟它们与邵佳一、张嘉译和沈佳宜之间的关系一样 , 除了赶巧共用了同一个后缀发音以外 , 八竿子打不着 。
所以 , “4+1”到底是指什么?让我们来 Wiki 一下:“4+1”是一种视图模型(view model) , 可以通过多种共存的视图描述软件密集型系统的架构 。 这些视图基于不同项目干系人(利益相关者)的视点(viewpoint) , 例如:终端用户、开发者、系统工程师和项目经理 。 “4+1”由 4 种基础视图和一些经过挑选的用例或场景(即额外的“+1”视图)组成 , 各自的具体含义如下:


推荐阅读