【架构治理工具】在代码存储库中记录软件架构

Markdown 是一种标准的简单语法,用于创建具有专业外观的文档。它比 HTML 更简单,无需专门的编写编辑器即可进行管理。Git配置管理工具也支持markdown格式。在 Git 环境中,markdown 一般用于项目的简单介绍和构建说明。(自述文件)。本文介绍了如何将 Markdown 格式与模板一起用于架构文档。

5cc6bec57acc656352c9952d16770374.png

带有 Markdown 的架构文档


与代码一起管理软件的架构设计和设计决策将为项目提供极大的便利。当我们的设计与代码一起保存在配置管理环境中时,我们可以一起进行设计变更和代码变更。当新工程师开始项目并将代码拉到他的计算机上时,他有机会看到系统的架构。


准备 Markdown 文档 IDE


您可以使用 Visual Studio Code 和类似的 IDE 与您的代码一起准备 markdown 文档。(市场上有 markdown 编辑器,但使用 IDE 来做会更实用)。您可以在 Visual Studio Code 中使用“Markdown Preview Enhanced”插件。使用这个插件,你可以在 VS Code (Preview) 中直观地看到 markdown 文档。您还可以使用相同的工具生成 HTML、World 或 PDF 文档。

dc4195cf97c12d05500832e487073926.png

MD Document Preparation with VS Code

UML 和 C4 图


您可以将使用 Plant UML 脚本语言绘制的 UML 和 C4 图放入 Markdown 文档中。这样,您可以将整个设计(包括绘图)保存在一个地方。您放入 Markdown 文档中的 UML 和 C4 图可以在预览窗口中看到。(带有一个名为“PlantUML”的插件)。此外,当您导出 pdf 或 html 时,您将能够将这些图表视为图形。GIT 工具具有可视化显示在此 PlantUML 中编写的设计脚本的功能。通过这种方式,可以看到带有 Bitbucket 的设计(具有适当的版本和配置)。此功能在开源 Github 站点上尚不可用。

570a4ff0bbf2e251106bebe384c0ee3f.png

  • Adding a C4 Component Diagram to a Markdown document

如果git服务器不支持可视化,可以先从plantuml服务器站点制作一张png或svg的图,然后将相关的图发送到Git服务器。然后你可以在markdown文档中将此图作为绘图链接。您可以在使用其他工具制作的图纸中使用此方法。

Arch 42 模板


Arc 42 是架构文档的模板。通过正确完成此 Arc42 模板,您将在一个地方拥有软件架构和设计的关键设计决策。

  1.  — 简介和目标

  2.  — 约束

  3.  - 背景和范围

  4.  — 解决方案策略

  5.  - 构建块视图

  6.  — 运行时视图

  7.  — 部署视图

  8.  — 交叉切割概念

  9.  — 架构决策

  10.  - 质量属性

  11.  — 风险和技术债务

您可以在 Arch42 网站上访问 markdown 模板。相关网站上有一个草稿作为单个文件或作为每个部分的单独文件。


您可以在此模板中使用 C4 模型和 UML 图。例如,我们可以使用第 3 章中的 C4 范围图,第 5 章中的容器图和组件图。第 6 章中可以使用 C4 动态图或 UML 序列图。部署图可以使用 C4 或 UML 符号在第 7 章。
对于第 10 章,我们可以使用为架构权衡分析方法 (ATAM) 准备的表格。在这种情况下,您可以访问和使用我准备的降价表草稿。

d01e8037b667c95d8039f3cdbf73d556.png

结论


建议使用 Arch 42 模板以 Markdown 格式准备软件架构文档,并在代码中包含 Git 结构中的 C4 模型和 UML 图。该解决方案提供了高质量、可管理、版本控制和可追溯的架构文档。

本文 :https://architect.pub/documenting-software-architecture-code-repository
讨论:知识星球【首席架构师圈】或者加微信小号【ca_cto】或者加QQ群【792862318】
公众号
 
【jiagoushipro】
【超级架构师】
精彩图文详解架构方法论,架构实践,技术原理,技术趋势。
我们在等你,赶快扫描关注吧。
微信小号
 
【ca_cea】
50000人社区,讨论:企业架构,云计算,大数据,数据科学,物联网,人工智能,安全,全栈开发,DevOps,数字化.
 

QQ群
 
【285069459】深度交流企业架构,业务架构,应用架构,数据架构,技术架构,集成架构,安全架构。以及大数据,云计算,物联网,人工智能等各种新兴技术。
加QQ群,有珍贵的报告和干货资料分享。

视频号【超级架构师】
1分钟快速了解架构相关的基本概念,模型,方法,经验。
每天1分钟,架构心中熟。

知识星球【首席架构师圈】向大咖提问,近距离接触,或者获得私密资料分享。 

喜马拉雅【超级架构师】路上或者车上了解最新黑科技资讯,架构心得。【智能时刻,架构君和你聊黑科技】
知识星球认识更多朋友,职场和技术闲聊。知识星球【职场和技术】
领英Harryhttps://www.linkedin.com/in/architect-harry/
领英群组领英架构群组https://www.linkedin.com/groups/14209750/
微博‍‍【超级架构师】智能时刻‍
哔哩哔哩【超级架构师】

抖音【cea_cio】超级架构师

快手【cea_cio_cto】超级架构师

小红书【cea_csa_cto】超级架构师 

网站CIO(首席信息官)https://cio.ceo
网站CIO,CTO和CDOhttps://cioctocdo.com
网站架构师实战分享https://architect.pub   
网站程序员云开发分享https://pgmr.cloud
网站首席架构师社区https://jiagoushi.pro
网站应用开发和开发平台https://apaas.dev
网站开发信息网https://xinxi.dev
网站超级架构师https://jiagou.dev
网站企业技术培训https://peixun.dev
网站程序员宝典https://pgmr.pub    
网站开发者闲谈https://blog.developer.chat
网站CPO宝典https://cpo.work
网站首席安全官https://cso.pub    ‍
网站CIO酷https://cio.cool
网站CDO信息https://cdo.fyi
网站CXO信息https://cxo.pub

谢谢大家关注,转发,点赞和点在看。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/3322.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue 项目中使用WebSocket 消息推送

一、功能需求 1.这是我在后台管理项目中使用到的,主要的作用是搞一个消息提醒的功能。 2.主要有右上角的提示和有下角的消息弹框。 3.主要实现的功能是如果用户有未读的消息,那么首次登录就弹框,如果用户关闭了页面,那么再次刷新…

valgrind检测内存泄漏、越界访问、野指针访问实验

前言 本次测试包括&#xff0c;检测无误的代码&#xff0c;检测内存泄漏&#xff0c;检测访问越界&#xff0c;检测野指针&#xff0c;检测访问已经释放(已经被free)的内存。 一 安装valgrind sudo apt install valgrind 二 无错误 #include <stdio.h> #include <…

GitHub+PicGo制作个人图床

目录 一、前言 二、新建Github仓库 ​编辑 三、生成token 四、配置PicGo 五、上传图片 六、新版的PicGo出了很多新功能大家可以探索一下。​编辑 一、前言 PicGo是一个用于快速上传图片并获取图片 URL 链接的工具:Releases Molunerfinn/PicGo GitHub GitHub是一个在…

pytorch动态调整学习率torch.optim.lr_scheduler import MultiStepLR

from torch.optim.lr_scheduler import MultiStepLR 简单来说&#xff0c;就是分阶段调整学习率&#xff0e; 用法&#xff1a; model ANet(classes5) #加载模型 optimizer optim.SGD(params model.parameters(), lr0.05) #优化方法使用SGD#在指定的epoch值&#x…

“因构建 而可见”,亚马逊云科技中国峰会助力企业数字化转型升级

过去十年&#xff0c;数字化转型的浪潮携带着机遇和挑战席卷而来&#xff0c;几乎每个企业都在做数字化转型&#xff0c;开始向大数据、人工智能等新技术寻求生产力的突破。但随着数字化转型深入&#xff0c;很多企业开始感受到数字化投入的成本压力&#xff0c;加之新技术正带…

使用npm install -g @vue/cli 命令安装最新的脚手架与Vue版本不匹配的问题

使用npm install -g vue/cli 命令安装最新的脚手架 创建项目时不要选择Vue版本&#xff0c;让它默认选择&#xff08;默认选择 Vue2&#xff09;否则会出现 vue版本和脚手架版本vue-cli 不兼容的问题&#xff08;怪哉&#xff09; 脚手架兼容vue2 不兼容vue3 &#xff1f; 不理…

DAY34——贪心part3

1. class Solution {public int largestSumAfterKNegations(int[] nums, int K) {// 将数组按照绝对值大小从大到小排序&#xff0c;注意要按照绝对值的大小nums IntStream.of(nums).boxed().sorted((o1, o2) -> Math.abs(o2) - Math.abs(o1)).mapToInt(Integer::intValue)…

机器学习——概率与统计

参考资料&#xff1a; 《机器学习》周志华https://zhuanlan.zhihu.com/p/27056207 1 马尔可夫链 1.1 定义 直观含义&#xff1a;在已知现在的条件下&#xff0c;过去与未来相互独立。 1.2 马尔可夫模型 根据定义&#xff0c;A 必为方阵 其中&#xff0c; p i j ( n ) P {…

MaskFormer:将语义分割和实例分割作为同一任务进行训练

目标检测和实例分割是计算机视觉的基本任务&#xff0c;在从自动驾驶到医学成像的无数应用中发挥着关键作用。目标检测的传统方法中通常利用边界框技术进行对象定位&#xff0c;然后利用逐像素分类为这些本地化实例分配类。但是当处理同一类的重叠对象时&#xff0c;或者在每个…

信号链噪声分析11

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 提示&#xff1a;这里可以添加技术概要 如今的射频(RF)系统变得越来越复杂。高度的复杂性要求所有系统指标&#xff08;例如严格的 链接和噪声预算&#xff09;达到最佳性能。确保整个信号链的正确设计至关重要。而信…

sql内外连接图示

student表数据&#xff1a; idname34name22golitter66kerwin123yh12golemon score表数据&#xff1a; idscore34802298663345100 内连接 1、内连接:俗称左右拼接连接&#xff1b; 2、内连接特点&#xff1a;满足连接条件的才会出现在结果里面&#xff1b; SELECT 查询字段…

Spring 事务和事务传播机制

✏️作者&#xff1a;银河罐头 &#x1f4cb;系列专栏&#xff1a;JavaEE &#x1f332;“种一棵树最好的时间是十年前&#xff0c;其次是现在” 目录 Spring 中事务的实现Spring 编程式事务Spring 声明式事务Transactional 作⽤范围Transactional 参数说明Spring 事务隔离级别…