一、背景
软件研发过程中,咱们常有如下的困惑:
- 有时咱们须要设计一个较大型的业务零碎,或者做一个开源我的项目,咱们该如何将这个零碎的整体性能、逻辑细节一层层形容分明呢?
- 咱们接手了一个大型简单的零碎,该如何一点点从宏观到宏观的去梳理整个性能流转的脉络呢?
通过简略绘制零碎的架构图、各模块之间的接口交互和时序图等,我能够更加直观地了解整个零碎的运作模式,所谓的磨刀不误砍柴工。
二、零碎架构图
零碎架构图往往用于软件研发的总体设计阶段,通过简略分层来展现不同档次的模块,再加上根底服务、公共服务和监控服务等,就形成了零碎层面的一个宏观的轮廓。无论是常见的 MVC 架构、还是 DDD 架构在整体零碎设计层面都是差不多的,一个残缺清晰的零碎架构图往往会有以下用处:
- 说明了零碎的各种依赖,包含底层中间件、内部零碎、监控零碎等,帮忙咱们更好的建设整个零碎的监控体系,理解零碎性能瓶颈点等
- 在业务层论述了零碎的次要功能模块,能够好且快对外介绍咱们的零碎
- 论述了零碎的整体技术架构,是微服务化的,还是单体的;有没有网关层、根底组件层等
这里有两张形象的零碎架构供参考:
三、时序图
时序图个别用于软件研发的具体设计阶段,能够用来形容 零碎间 、 微服务间 、或者是 功能模块间 的交互过程,它展现了零碎的总体调用链路,和数据流转的过程。基于时序图咱们能够做以下事件:
- 签订服务间的 SLA,帮忙咱们推动微服务治理
- 宏观上清晰的形容了性能实现的过程(业务流转、数据流转),帮助咱们在设计时思考,以防脱漏设计细节
四、程序流程图
具体设计阶段,在零碎外部,咱们须要清晰的形容业务实现的过程,包含程序逻辑、条件判断、循环逻辑等。是咱们在技术 review 阶段的重要工具,根本程序流程图设计好,代码中的可能异样和危险点也就剖析的差不多了,根本就能够间接照着流程图进行编码了。对于一些比拟重视零碎稳定性的团队,在此阶段破费的工夫,有时要比编码工夫还长😂。
五、状态流转图
有时除了关系业务解决逻辑,还要关怀对象状态的流转,这里截取了一个电商网站在下单时的订单状态流转的示例。
六、总结
本文列举了软件工程设计阶段最为常见的 5 种图,清晰的软件工程的图能够更加直观的表白出咱们的设计志愿,建设起与其余我的项目参与者沟通的桥梁;还有助于让咱们的设计思考更加紧密;另外还有助于整体我的项目文档的建设,帮忙新人疾速上手我的项目。
对于软件工程中常见的 5 中图就介绍到这里啦,咱们下期见,Peace 😘
我是简凡,一个励志用最简略的语言,形容最简单问题的新时代农民工。求点赞,求关注,如果你对此篇文章有什么纳闷,欢送在我的微信公众号中留言,我还能够为你提供以下帮忙:
- 帮忙建设本人的常识体系
- 互联网实在高并发场景实战解说
- 不定期分享 Golang、Java 相干业内的经典场景实际
我的博客:https://besthpt.github.io/
微信公众号: