如何画好架构图?
首先,我们应该明确一点,应该基于领域来划分架构的边界,每一篇架构图都是一个独立的领域。那么领域该如何划分呢?架构图又应该包含哪些方面呢?
术语#
领域划分、边界#
领域他不是部门,比如C端不是一个领域而是一个组织,一个组织可以有很多个领域。举个简单的例子,一个C端的订单详情页,可能需要类似导购、交易、库存、价格、商品、营销多个领域的聚合。一个领域应该是核心的业务问题域,他自身的特点应该是高内聚、边界性强、操作关联性强、有自己的独立实体。
子领域#
相对领域而言,子领域的概念可以理解为领域的子集,如交易中正向交易、逆向交易等。
模块#
子领域应该由多个模块组成,模块是用户能完成一个业务目标的最小颗粒度的完整功能,比如展示可以购买商品的列表页、购物车、下单等,也可以是一个通用的模块,比如超时取消订单、流程编排等。
架构图#
那么说完基本的领域概念和术语,接下来阐述一下架构图的几个分类和画法。
业务架构#
业务架构或者说业务领域图,他的作用是来描述功能点和业务流程,受众可以是产品、运营、技术等。
业务架构是根据不能的功能模块来组织其相互之间的关系的,一个产品中不同的功能模块之间的关系分直接关系和间接关系,只有直接关系的功能模块才会被组织到一起形成一个子系统,当有直接关系的功能模块组成一个子系统之后,解决相同问题域的子系统就形成一个功能层级。功能层级按照最接近用户实际操作的距离程度从上到下或者从左到右的划分,就形成了产品架构的分层。
系统架构#
系统架构主要用来描述系统由哪些领域和子领域的功能模块组成,一般针对开发人员、构架师、产品等角色。
如果说业务架构、产品架构是站在业务和产品的角度来看待领域和模块的关系,那么系统架构就是站在技术实现的角度按照不同的子领域的功能模块来阐述系统的组成。
#
子领域架构#
以上图举例,针对系统架构层面有正向交易、逆向交易、订单管理、履约4个子领域,如果有必要做到架构设计更详细清晰的话就需要针对子领域做更具体的设计说明。
全景图#
每个子领域需要有一个描述整个子领域负责的业务场景的视图,从该子领域的角度出发,包括模块内部的核心模块之间以及外部模块
比如下图:正向交易全景图
#
关键业务场景图#
用来阐述关键的业务主场景
比如:酒店订单场景从用户下单、支付、商家接单、排房、办理入住、离店的主要场景描述
#
关键路径流程图#
用来反馈模块之间的交互,可以用时序图来表示。
举个简化版下单流程
#
部署图#
如无太大必要,可以忽略
作者:艾小仙
出处:https://www.cnblogs.com/ilovejaney/p/13548508.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
前某大厂程序员,全网同名,分享知识,欢迎关注
转载请注明原文链接,如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“👍”哦,博主在此感谢你的支持!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端