- 推荐序一:架构师真正要学会的事情
- 推荐序二
- 译者序 2.0
- 序
- 关于本书
- Part Ⅰ 什么是软件架构
- 第 1 章 什么是架构
- 第 2 章 架构的种类
- 第 3 章 软件架构是什么
- 第 4 章 敏捷软件架构是什么
- 第 5 章 架构对上设计
- 第 6 章 软件架构重要吗
- 第 7 章 问题
- Part Ⅱ 软件架构的角色
- 第 8 章 软件架构的角色
- 第 9 章 软件架构师应该编码吗
- 第 10 章 软件架构师应该是建造大师
- 第 11 章 从开发者到架构师
- 第 12 章 拓展 T
- 第 13 章 软技能
- 第 14 章 软件架构不是接力运动
- 第 15 章 软件架构要引入控制吗
- 第 16 章 小心鸿沟
- 第 17 章 未来的软件架构师在哪里
- 第 18 章 每个人都是架构师,除非他们有其他身份
- 第 19 章 软件架构咨询师
- 第 20 章 问题
- Part Ⅲ 设计软件
- 第 21 章 架构驱动力
- 第 22 章 质量属性(非功能需求)
- 第 23 章 处理非功能需求
- 第 24 章 约束
- 第 25 章 原则
- 第 26 章 技术不是实现细节
- 第 27 章 更多分层等于更高复杂度
- 第 28 章 协同设计是一把双刃剑
- 第 29 章 软件架构是对话的平台
- 第 30 章 SharePoint 项目也需要软件架构
- 第 31 章 问题
- Part Ⅳ 可视化软件
- 第 32 章 沟通障碍
- 第 33 章 对草图的需要
- 第 34 章 无效的草图
- 第 35 章 C4:语境、容器、组件和类
- 第 36 章 语境图
- 第 37 章 容器图
- 第 38 章 组件图
- 第 39 章 是否包含技术选择
- 第 40 章 你会那样编码吗
- 第 41 章 软件架构和编码
- 第 42 章 你不需要 UML 工具
- 第 43 章 有效的草图
- 第 44 章 C4 的常见问题
- 第 45 章 问题
- Part Ⅴ 为软件生成文档
- 第 46 章 代码不会讲述完整的故事
- 第 47 章 软件文档即指南
- 第 48 章 语境
- 第 49 章 功能性概览
- 第 50 章 质量属性
- 第 51 章 约束
- 第 52 章 原则
- 第 53 章 软件架构
- 第 54 章 外部接口
- 第 55 章 代码
- 第 56 章 数据
- 第 57 章 基础设施架构
- 第 58 章 部署
- 第 59 章 运营和支持
- 第 60 章 决策日志
- 第 61 章 问题
- Part Ⅵ 开发生命周期中的软件架构
- 第 62 章 敏捷和架构的冲突:神话还是现实
- 第 63 章 量化风险
- 第 64 章 风险风暴
- 第 65 章 恰如其分的预先设计
- 第 66 章 初识软件架构
- 第 67 章 问题
- Part Ⅶ 金融风险系统
- 第 68 章 金融风险系统
- Part Ⅷ 附录:技术部落 的软件指南
第 44 章 C4 的常见问题
当人们基于我的C4方法画架构图时,经常会问我下面这些问题。
语境图上的系统名称
问题:你说语境图应该包括一些必要的技术细节。那系统名称应该被包括在内吗?
回答:如果你需要包括一个众所周知的软件系统,那么我会将它的名称包括在图中。我可能还会只是为了避免任何混淆而加上一个简短的职责声明来明确那个系统是做什么的。
混合的抽象层次
问题:既然我的系统容器图看起来很简单,你会建议把容器图和组件图合到一起吗?换句话说,我能够在一张图上展所有容器中的全部组件吗?
回答:对于简单的系统,这是一个你可以尝试的选择。我发现,即使是微型系统,一张图展示容器及其组件往往也太乱了。我个人的偏好是保持容器图尽可能简单,为图中每一个容器标注一个简短的职责清单,而不是展示全部组件。这不仅会得到一张简洁的图,还能提供可以展示给运营和支持人员的很好的高层次技术图。
共享组件
问题:我的系统由一个Web服务器和一个独立应用程序组成,它们都使用一个共享的数据访问层。我应该怎么在图上展示这一点?
回答:我会把共享的数据库访问组件画在每个适当的组件图上,并用类似“这是共享组件”的注解来简单地注释。如果有疑问,问问自己将如何实际编码和部署系统。如果你的共享组件将和其他所有组件一起被部署在一个容器内,那就把它画在图上反映出来。
工具组件
问题:如果我有像日志组件这样被所有其他组件使用的东西,应该怎么在图上展示这一点?
回答:你有两个选择,然而只有一个倾向于得到更简洁的图。选项1是把日志组件画在图的中间某个位置,并与其他组件连接起来。尽管这是准确的,你的图却会很快变得混乱。选项2是把日志组件画在较偏的某个地方,简单标上“这是一个所有组件都在使用的工具组件”之类的注解。
从IT的角度勾画企业语境
问题:我喜欢C4方法,但它每次只关注一个软件系统。我们如何能够展示更多的软件系统?
回答:在现实世界中,软件系统从不孤立地存在,了解各种软件系统如何在企业的界限内结合在一起往往是很有用的。要做到这一点,我会简单地在C4图上面添加一个图,从IT的角度展示企业语境。因此C4变成了C5,额外的这张图会展示:
组织边界;
内部和外部用户;
内部和外部系统(包括一个对它们的职责和拥有数据的高层次总结)。
本质上这变成了企业级软件系统的高层次地图,每个软件系统都对应了相关的C4层级。需要说明一点,以我的经验,我领会到企业架构并不只是关于技术的,但是很多组织并没有从企业架构的观点来看它们的IT环境。事实上,缺乏整体认识的各种规模的组织之多令我震惊,特别是考虑到IT通常是它们实现业务流程和服务客户的一个关键部分。从技术的角度勾画企业语境,至少提供了一种跳出围绕IT系统形成的典型筒仓来进行思考的方法。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论