西蒙布朗-C4模型
关于 C4 模型的一些解释
C4 模型是来自 software architecture for developers 一书的定义,指的是 Context 上下文场景、Container 容器、Component 组件和 Classes 类(或者 Code 代码),意思指一个软件架构是由这些模型呈树形结构组成。
关注代码仍然是大多数软件开发生命周期中关注的焦点,这是有一定道理,因为代码是最终交付。但如果你不得不向别人解释关于系统是如何工作的,你会从代码开始解释吗?
确实代码并不能讲述系统的整个故事,在缺乏文档的情况下,人们通常会开始在白板上或纸上用图框和线条解释系统的主要构建块是什么,它们是如何连接的。而使用 Microsoft Visio, Rational Software Architect 或 Sparx Enterprise Architect 等专业工具又比较复杂。
更好的办法是在不同的抽象层次创建不同的图 diagram,一个简单的图 diagram 比复杂的图能够更有效表达描述。下图是 C4 模型的示意图:
类 Class: 这是面向对象世界常用, 类是我们系统最小的构建模块。
组件 Component: 一个组件可以认为是由一个或多个类组成的逻辑组,比如一个审计 audit 组件或授权服务能够用于决定资源的访问是否被允许,组件典型地由许多协同类组成微服务架构可以认为是一种组件。
容器 Container: 一个容器代表组件执行或驻留的地方,这可能是一个 Web 容器或应用服务器,也可以是富客户端应用或数据库,容器是做为系统一部分启动的,容器之间通讯是通过远程接口如 SOAP web service, RESTful interface, Java RMI, Microsoft WCF, messaging, 等进行, Docker 可以认为是一个这样的容器。
Context/ 系统 System: 一个系统是一个高层次抽象和代表,一个系统由多个单独的容器组成,比如财务系统,银行系统或网站系统等。
西蒙布朗-C4模型的更多相关文章
- 软件架构系列一:C4模型
本文要点预览:因为软件系统的分布式特点以及开发团队的分布性,了解软件架构的基础变得越来越重要.而在过度设计和毫无设计之间,我们应该把注意力放在对软件系统有重大影响的决策和权衡上.好的架构师应该是团队的 ...
- 工程能力之C4模型
概述 刚在InfoQ上看到一篇介绍C4Model的文章,觉得这个模型设计的很赞,很有指导意义,做个简单的记录. Why,为什么需要架构图? ThoughtWorks中国 文章中有几句话我觉得很有道理, ...
- C4 模型 - 可视化架构设计
前言 世界上最难的两件事是: 1. 把我的思想放进你的脑袋 2. 把你的钱放进我的口袋 第二点我们不探讨,因为这是众所周知的,不信?过来试试:) 对于第一点,对我们程序员来说,其实也是我个人一直强调的 ...
- 京东云开发者|软件架构可视化及C4模型:架构设计不仅仅是UML
软件系统架构设计的目标不在于设计本身,而在于架构设计意图的传达.图形化有助于在团队间进行高效的信息同步,但不同的图形化方式需要语义一致性和效率间实现平衡.C4模型通过不同的抽象层级来表达系统的静态结构 ...
- 自定义PlantUML和C4 Model样式
什么是PlantUml PlantUml是一个支持快速绘制的开源项目.其定义了一套完整的语言用于实现UML关系图的描述.并基于强大的graphviz图形渲染库进行UML图的生成.绘制的UML图还可以导 ...
- 如何写好B端产品的技术方案?
B端产品为企业提供协同办公的工具,帮助企业解决某类经营管理问题,核心价值在于为企业增加收入.降本提效.管控风险,企业级SaaS产品也是B端产品中的一类. B端产品有以下特点: 客户是一个群体:B端产 ...
- 使用函数式语言实践DDD
长期以来我都在实践OOP,进而通过OOP来实现DDD,特别是如何通过面向对象的技巧来建立一个领域模型.OO的一些特性在建立领域模型时显得恰如其分,能否掌握OO的技巧,对创建领域模型有着至关重要的作用. ...
- 决策树模型 ID3/C4.5/CART算法比较
决策树模型在监督学习中非常常见,可用于分类(二分类.多分类)和回归.虽然将多棵弱决策树的Bagging.Random Forest.Boosting等tree ensembel 模型更为常见,但是“完 ...
- 决策树模型比较:C4.5,CART,CHAID,QUEST
(1)C4.5算法的特点为: 输入变量(自变量):为分类型变量或连续型变量. 输出变量(目标变量):为分类型变量. 连续变量处理:N等分离散化. 树分枝类型:多分枝. 分裂指标:信息增益比率gain ...
随机推荐
- Codeforces761A Dasha and Stairs 2017-02-05 23:28 114人阅读 评论(0) 收藏
A. Dasha and Stairs time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- 使用Intel的FPGA电源设计FPGA 供电的常用反馈电阻阻值
使用Intel的FPGA电源设计FPGA 供电的常用反馈电阻阻值. 当前仅总结使用EN5339芯片的方案 Vout = Ra*0.6/Rb + 0.6 芯片手册推荐Ra取348K,则 3.3V时,取R ...
- GNOME桌面的安装
首先搭建yum仓库 http://www.cnblogs.com/jw35/p/5967677.html yum grouplist #列出yum仓库里的软件组 ...
- uva 10169 - Urn-ball Probabilities !(概率)
题目链接:uva 10169 - Urn-ball Probabilities ! 题目大意:在一个箱子中,原本有1个红球,然后任意取出(有放回)一个球,然后再往里放一个白球(每次取都要放进一个白球) ...
- 软件项目第一个Sprint评分
第一组 跑男 跑男组他们设计的是极速蜗牛小游戏,他们的界面背景图片做的挺漂亮,现在为止也实现了大部分功能, 但是我没有太听懂他们的游戏规则. 因为蜗牛出发后,每次碰到屏幕边缘后都会有确定的反弹结果,也 ...
- Android-LogUtil-工具类
LogUtil-工具类 是专门Log日志打印 和 Toast的提示,的公共方法 package common.library.utils; import android.content.Context ...
- 我的第一个博客&GuiHub简单练习
个人介绍 姓名:马瑞 性别:男 班级:网络工程143 出生年月:1995.11 兴趣爱好:玩玩电脑,看看动漫. 编程能力:完全是菜鸟. GutHub的使用体验: 第一步:注册github,这很简 ...
- 饿了么 PostgreSQL 优化之旅
1. 架构演变 在O2O外卖领域,基于位置服务的需求越来越多,这就要求DB能够存储地理位置信息,而在开源数据库中,对空间地理数据支持比较好的要数PG的插件Postgis. 饿了么在使用PG的过程中,由 ...
- SQL SERVER 查找锁信息
通过系统的存储过程 sp_who 或 sp_who2 可以查找出所有的锁信息, 但是看不出是哪个表, 什么语句 当使用 sp_who 或 sp_who2 查找锁信息的时候, 有个 spid 信息, ...
- 微信小程序二维码是无法识别二维码跳转到小程序
今天测试了一下,微信小程序圆形二维码是不能直接识别跳转到小程序: 但h5页面的那种微信公众号二维码是可以直接识别