赞
踩
在做系统架构设计过程中,有很多工具,今天给大家推荐一款比较简洁具备层次化的设计模型,C4模型;希望能为大家系统设计起到一定的帮助
C4 模型是来自 software architecture for developers 一书的定义,指的是 Context 上下文场景、Container 容器、Component 组件和 Classes 类(或者 Code 代码),意思指一个软件架构是由这些模型呈树形结构组成。
确实代码并不能讲述系统的整个故事,在缺乏文档的情况下,人们通常会开始在白板上或纸上用图框和线条解释系统的主要构建块是什么,它们是如何连接的。而使用Microsoft Visio, Rational Software Architect 或 Sparx Enterprise Architect等专业工具又比较复杂。
更好的办法是在不同的抽象层次创建不同的图diagram,一个简单的图diagram比复杂的图能够更有效表达描述。
在 www.4model.com 提供了更多的信息、视频、示例图表和工具链接。如果你的团队正纠结于软件架构沟通方面的问题,那么可以看看这些资料。
C4架构图主要街道一下几个问题:1. 为哪些用户提供什么服务?2. 完成这个系统使用了哪些服务? 3. 每个服务是由哪些组件实现的?4. 实现这个组件需要完成什么?;以上4个问题分别由语境图、容器图、组件图、类图组成。
一个系统是一个高层次抽象和代表,一个系统由多个单独的容器组成,比如财务系统,银行系统或网站系统等。
主要意义在于明确我们构建的软件系统是什么,谁在使用它,如何与现有的IT系统融合
它主要从更高的层次展示了正在向自己已有的IT环境中添加了什么,技术和非技术可以当做讨论起点的一种更高层次图标,如下图例
一个容器代表组件执行或驻留的地方,这可能是一个Web容器或应用服务器,也可以是富客户端应用或数据库,容器是做为系统一部分启动的,容器之间通讯是通过远程接口如 SOAP web service, RESTful interface, Java RMI, Microsoft WCF, messaging,等进行, Docker可以认为是一个这样的容器。
主要帮助解决软件系统的整体形态,高层次的技术决策、职责在系统如何分布、容器之间如何相互交流,为实现特性,作为一个开发者应该在哪里写代码。
容器的概念包含但不限于Web服务器、应用服务器、总线、web浏览器等。图例如下:
一个容器可以认为是由一个或多个类组成的逻辑组,比如一个审计组件或授权服务能够用于决定资源的访问是否被允许,组件典型地由许多协同类组成微服务架构可以认为是一种组件。
主要用以解答此容器由哪些组件组成(按现在开发架构来看更多是微服务类同于容器),高层次上,系统通过观测各个容器/微服务之间的协作判断系统是如何工作,通过组件图知道某个容器/微服务内部结构以及内部是如何工作;组件在业界定义的颗粒度大小不一,可以结合自身业务进行程序设计,抽离不同的组件,理清各个组件之间的依赖关系,如下图所示
这是面向对象世界常用, 类是我们系统最小的构建模块.如下示例
为了能够比较好的绘制图例,我这边整理了其图元素工具箱,喜欢的朋友可以直接拷贝使用(访问地址:https://www.processon.com/view/link/5cbed72ae4b01941c8b88864)
如果你在这方面有不同方面的见解,也欢迎在下方进行留言,一起讨论
想要了解更多信息,可关注本公众号(一起学开源);或请长按以下二维码添加助手。将拉你加入社区进行交流
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。