作者:小傅哥 博客:https://bugstack.cn
❝沉淀、分享、成长,让自己和他人都能有所收获!😜 ❞
大家好,我是技术UP主小傅哥。
😂 现在的面试是不是为难小朋友,怎么刚一毕业的面试,就让现场手画简历项目的系统架构图。面试官说,你不是计算机专业毕业🎓的吗,这不是你的基础吗?你作为一个合格的毕业生,不就应该学习到这些吗?
为什么毕业生,画不出来这些图?
其实不只毕业生,很多工作1-3年的也画不出这些系统的架构图。主要是因为,在校的时候没有学过,市面的一些简单学习项目也都是 CRUD 的 demo 级别项目,工作了以后如果又是一些小厂,大部分就是完成功能需求而已。所以很多人压根就没有画过这些图。
但作为程序员👨🏻💻这个行业的伙伴,如果还想多职业生涯走的更长,也多赚点米,那么就需要好好的在一个大型项目中锻炼这些画图的技能。因为一图胜前言,有时候图好,前途就好!
那一个系统都会做出哪些个设计图呢?这里会包括;系统架构图
、业务拓扑图
、用户用例图
、业务流程图
、系统建模图
,之后就是细分实现功能的 UML 流程图。这里小傅哥会以此的给大家做绘制和讲解,这趟车🚗你可以学习到很多!
💐 文末提供了本次分享系统设计图对应的系统工程全套代码、文档、视频和面试官以及简历资料。
这是互联网公司C端场景,峰值流量最高的一套营销类业务系统,业务涵盖;抽奖
、活动
、积分
、返利
、兑换
,这些核心的业务流程。像是在抖音商城
、京东金融
、滴滴出行
、拼多多
,都有这样业务场景。如图;
整个系统是一个包括 前后端 + Dev-Ops
的全栈式综合编程实战项目,基于 React + SpringBoot + 分布式技术栈 + Nginx + Grafana + Docker 云服务,开发、部署、上线、监控,全体系技术运用构建。
接下来,小傅哥就给大家分别的展示出各项设计图,包括;
系统架构图
、业务拓扑图
、用户用例图
、业务流程图
、系统建模图
。
软件架构是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。软件架构会包括软件组件、组件之间的关系,组件特性以及组件间关系的特性。软件架构可以和建筑物的架构相比拟。软件架构是构建计算机软件,开发系统以及计划进行的基础,可以列出开发团队需要完成的任务。
佛瑞德·布鲁克斯
在写作《人月神话》一书时提及:软件系统的架构是有关软件系统该作什么以及不该作什么的实体观点。这些观点应和软件的实现分开。架构师的角色是“观点的看守者”,确认系统中增加的部分是符合此架构,因此可以保有概念完整性马尔文·康威
在1967年论文发表了康威定律,其中提到一个组织开发的软件,其架构会反映其组织架构。佛瑞德·布鲁克斯在写作《人月神话》一书时,就在书上时提到此例子,命名为“康威定律”。用例图(英语:use case diagram)是用户与系统交互的最简表示形式,展现了用户和与他相关的用例之间的关系。通过用例图,人们可以获知系统不同种类的用户和用例。用例图也经常和其他图表配合使用。
- 用例图是研发进入设计阶段第一个图,通过用例图了解整个系统中发生的流程行为。这个图虽然很粗,但非常适合做后续的设计指导。
系统业务拓扑图通常是指系统中各个组件和业务流程的可视化表示。这类图示有助于理解和分析系统如何运作、各组件之间的关系、数据流动的路径以及可能的瓶颈或失败节点。
如果系统是 DDD 开发的,还需要做四色建模。在使用 DDD 的标准对系统建模前,一堆人要先了解 DDD 的操作手段,这样才能让产品、研发、测试、运营等了解业务的伙伴,都能在同一个语言下完成系统建模。
系统业务功能流程图(Business Functional Flow Diagram,BFD)是一种用于描述和展示系统内业务功能及其之间关系的图形化工具。它通常用于系统分析和设计阶段,以帮助理解和沟通业务流程、功能要求以及系统的各个组件如何协同工作。
工程的分层有 MVC 三层架构、DDD 四层架构,其实 DDD 不能只是说它是架构,因为用于承载 DDD 的架构是;整洁架构、洋葱架构、六边形架构、菱形架构这些。
六边形架构,会把本身提供到外部的放到trigger,让接口调用、消息监听、任务调度,都可以统一一个入口处理。而对于需要调用外部同类的能力统一放到 infrastructure 基础设施层,包括;数据库、缓存、配置、调用其他方的接口。
querys 模块是为了提供查询设计的模块,这样一些基本简单的查询就不需要再走到 domain 领域层了。- 更多关于 DDD 的工程模型,可以在 [bugstack.cn](https://bugstack.cn) 进入《路书》中阅读9篇系统架构部分。
这是小傅哥为大家提供的一套综合锻炼编程能力的实战项目大课。全程视频手把手,一个个章节、一步步流程的带着大家从0到1,需求分析、工程设计和代码实现。
课程完成后,有可参考简历编写模板、简历面试问题汇总、项目延展性思考和分析,以及项目中的架构、设计模式在场景方案中的运用。