画架构图

首先贴一个知乎上的答案:

作者:禚娴静
链接:https://www.zhihu.com/question/27440059/answer/68649917
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

软件架构是一种无法以简单的一维方式进行说明的复杂实体。
-Paul Clements 《软件架构编档》
正如上面提到的,不同的受众,比如用户、客户、开发人员、测试人员、运维人员,需要从各自工作的角度去理解和使用架构。所以回答这个问题,需要首先了解这幅架构图画出来是给谁看,你想从那个维度去入手。
确定了这个问题之后,再来了解架构视图有哪些维度和组成要素:
1. 架构视图
最经典的当属4+1视图:
  • 逻辑视图
  • 开发视图
  • 过程视图
  • 物理视图
  • 场景视图

4+1视图提出后,业界也有其它的观点提出,诸如SEI(模块视图、组建和连接件视图、分配视图)、西门子4种视图(概念、模块、代码、执行视图)、以及RM-ODP(企业视图、信息视图、计算视图、工程师图)等。
常见的视图除了上述4+1视图外还包括:数据视图、安全视图、实现视图等。

2. 了解架构视图的四要素
  • 图示化主要元素和元素之间的关系
  • 具有明确的图例、定义和说明元素
  • 每个元素具备明确的接口和行为规范
  • 设计原理和设计决策的信息

3. 简单说一下几个视图针对的角色和维度:
逻辑视图一般针对客户、用户、业务人员、开发组织,主要从系统的功能元素、以及它们的接口、职责、交互维度入手。主要元素包括系统、子系统、功能模块、子功能模块、接口等。

开发视图一般针对开发和测试相关人员,主要描述系统如何开发实现;主要元素包括描述系统的分层、分区、框架、系统通用服务、业务通用服务、类和接口、系统平台和大基础框架。用途是知道开发设计和实现。

物理视图一般针对系统运维人员、集成人员,它是系统逻辑组件到物理节点的映射,节点与节点间的物理网络配置等,主要关注非功能性需求,诸如性能(吞吐量)、可伸缩性、可靠性,可用性等,从而得出相关的物理部署结构图。

4. 写在最后
了解这些,确定了你的受众和切入的维度后,你就可以决定你要用什么样的视图和视图组合来表达你的内容,挑选一个你得心应手的工具去实施就可以了。
在我看来,用白板和团队一起画出来是一件极美的好玩的事情。

个人观点,仅供参考。
 
 
 
不同的视图是针对不同的受众。
 
 关于画图工具有一个phodal的文章:https://github.com/phodal/articles/issues/18。
 
Graphviz是一个我比较心仪的工具,因为可以从一个文本来生成图形,但是我想要一个可以点击的node,这个还真没有:
 
浏览了phodal的选项,只剩下D3.js可以实现了。
 
 
 
原文地址:https://www.cnblogs.com/evanxyhu/p/architect-diagram.html