工业自动化
如何画系统架构图

发布于:2023-10-04 16:37:14  来源:工业自动化  点击量:14次

  系统架构图是为了抽象的表示软件系统的整体轮廓和各个组件之间的相互关系和约束边界以及软件系统的物理部署和软件系统的演进方向的整体视图。

  一图胜千言。要让干系人理解、遵循架构决策就需要把架构信息传递出去。架构图就是一个很好的载体。那么画架构图是为了

  场景视图用于描述系统的参与者与功能用例间的关系,反映系统的最终需求和交互设计,通常由用例图表示。

  逻辑视图用于描述系统软件功能拆解后的组件关系,组件约束和边界,反映系统整体组成与系统如何构建的过程,通常由UML的组件图和类图来表示。

  物理视图用于描述系统软件到物理硬件的映射关系,反映出系统的组件是如何部署到一组可计算机器节点上,用于指导软件系统的部署实施过程。

  处理流程视图用于描述系统软件组件之间的通信时序,数据的输入输出,反映系统的功能流程与数据流程,通常由时序图和流程图表示。

  开发视图用于描述系统的模块划分和组成,以及细化到内部包的组成设计,服务于研发人员,反映系统开发实施过程。

  5 种架构视图从不同角度表示一个软件系统的不同特征组合到一起作为架构蓝图描述系统架构。

  上面的分类是前人的经验总结图也是从网上摘来的那么这些图画的好不好呢是不是我们要依葫芦画瓢去画这样一些图先不去管这些图好不好我们通过对这些图的分类以及作用思考了一下总结下来我们大家都认为在画出一个好的架构图之前 首先应该要明确其受众再想清楚要给他们传递什么信息 所以不要为了画一个物理视图去画物理视图为了画一个逻辑视图去画逻辑视图而应该根据受众的不同传递的信息的不同用图准确地表达出来最后的图可能就是在这样一些分类里。那么画出的图好不好的一个直接标准就是受众有没有准确接收到想传递的信息。明确这两点之后从受众角度来说一个好的架构图是不需要解释的它应该是自描述的并且要具备一致性和足够的准确性能够与代码相呼应。

  为什么适用方框而不是圆形它有什么特殊的含义吗

  架构是一项复杂的工作只使用单个图表来表示架构非常容易导致莫名其妙的语义混乱。

  C4 模型使用容器应用程序、数据存储、微服务等、组件和代码来描述一个软件系统的静态结构。这几种图非常容易画也给出了画图要点但最关键的是我们大家都认为它精确指出了每种图可能的受众以及意义。

  这是一个想象的待建设的互联网银行系统它使用外部的大型机银行系统存取客户账户、交易信息通过外部电邮系统给客户发邮件。能够正常的看到格外的简单、清晰相信不需要解释都看的明白里面包含了需要建设的系统本身系统的客户和这个系统有交互的周边系统。

  这样一个简单的图能告诉我们要构建的系统是什么它的用户是谁谁会用它它要如何融入已有的IT环境。这个图的受众可以是开发团队的内部人员、外部的技术或非技术人员。即

  中间是自己的系统周围是用户和其它与之相互作用的系统。这个图的关键就是梳理清楚待建设系统的用户和高层次的依赖梳理清楚了画下来只需要几分钟时间。

  上图中除了用户和外围系统要建设的系统包括一个基于java\spring mvc的web应用提供系统的功能入口基于xamarin架构的手机app提供手机端的功能入口一个基于java的api应用提供服务一个mysql数据库用于存储各个应用之间的交互都在箭头线上写明了。

  看这张图的时候不会去关注到图中是直角方框还是圆角方框不会关注是实线箭头还是虚线c;甚至箭头的指向也没有引起太多注意。

  我们有许多的画图方式都对框、线的含义做了定义这就需要画图的人和看图的人都清晰的理解这些定义才能读全图里的信息而现实是这往往是非常高的一个要求所以很多图只能看个大概的含义。

  这个图的受众可以是团队内部或外部的研发人员也可以是运维人员。用途可以罗列为

  用一个框图来表示内部可能包括名称、技术选择、职责以及这些框图之间的交互如果涉及外部系统最好明确边界

  这个图主要是给内部研发人员看的怎么去做代码的组织和构建。其用途有

  这个图很显然是给技术人员看的很常见就不详细的介绍了。

  前面写了两篇软件架构设计的文章今天Relax想跟大家聊一聊如何通过具体的工具去画出软件架构设计中的那些图那么今天主要给大家伙儿一起来分享的是一个好用的架构设计画图工具——Enterprise Architect后面都简称EA。 前面说了Relax平时…

  本文试图回答以下问题 如何标准化软件架构设计如何把软件架构设计拆解成一个个小任务渐进完成辅助敏捷开发如何共享软件架构设计内容让小组成员都能更新而不只是存在于架构师的PPT里&am…

  有粉丝想学画架构图却苦于找不到合适的画图的工具。如果有条件还是买visioWeb应用processOn也不错不过今天推荐另一个免费的工具draw.io。先上几张图让大家都看看效果 说实线c;问我的人太多了我真的没法一…

  什么是软件架构 前言软体设计师中有一些技术水平较高、经验较为丰富的人他们要承担软件系统的架构设计也就是需要设计系统的元件如何划分、元件之间如何发生相互作用以及系统中逻辑的、物理的、系统的重要决定的作出。在很多…

  导读技术传播的价值不仅仅体现在通过商业化产品和开源项目来缩短我们构建应用的路径加速业务的上线c;也体现在优秀工程师在工作效率提升、产品性能优化和使用者真实的体验改善等经验方面的分享以提高我们的专业能力。 …

  关键要点 通过创建和维护架构图来提供准确且有价值的内容并非易事。大多数情况下,我们要么创建了太多的文档,要么太少,或者不相关,因为我们没能准确地定位文档的受益人及其实际的需求。我们常犯的最大的一个错误是为系统中具有高波动性的部分创建详细的架构图。除非是自动生…

  经济学定义 人的欲望是无止境的而资源有限这是一个矛盾。 经济学是研究个人和社会如何最优利用由自然和前人提供的有限资源的学问。 经济学的范围 Microeconomics 微观经济学 研究各个行业的运作的以及企业和个人的决策行为的经济学分支。Macroeco…

  发布一企业技术架构图供各位参考。 该技术架构图是本人根据多年企业技术架构经验而制定是企业技术的总架构图希望对CTO们有所借鉴。 简单说明 1.中间件基础运行环境是经过统一规划的以WebLogic、JBOSS为主的集群环境 …