新接手一个业务系统,我是这么熟悉的

2024-01-23 00:28
文章标签 系统 业务 熟悉 接手

本文主要是介绍新接手一个业务系统,我是这么熟悉的,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

分享是最有效的学习方式。

博客:https://blog.ktdaddy.com/

故事

接二连三地背锅让小猫的内心受到了前所未有的打击。这也是他职业生涯中的第一次。感兴趣的伙伴们如果想了解一下小猫怎么了,可以看一下“幂等事件”以及“缓存击穿事件”。

这天组长找小猫来到了一间会议室。

“在这么短的时间内发生了这么多的事故,我想也你心里也不好受,也不怪你,毕竟刚接手项目。以前项目中可能本身存在一定问题。正好轮到你头上,我希望你也不要灰心…”,组长在一边balabala。

小猫在一旁小鸡啄米似的点着头。紧张的内心缓和了许多,“听组长这语气,貌似不扣我绩效啊”,小猫心里寻思着。

“但是呢,事情是发生了,系统中估计还有其他的问题,无论是业务上的还是代码上的亦或是设计上的,然后我希望你最近可以花时间整理一下,然后输出一份项目文档分析。等到下次月会的时候一起分享一下当前系统的情况。”

小猫连连点头,心里琢磨“看来还是躲不过当众批斗这关啊,罢了罢了,可是,这样的一份文档该从哪个口子开始呢,到底该怎么写呢”

此时的小猫内心又开始不安起来。

聊聊熟悉新项目

当接手到新的系统的时候,大家是如何进行熟悉的呢?其实老猫在上一篇“缓存击穿事件”的文末就问过大家了,不晓得大家是怎么处理的,欢迎大家留言。

接下来和大家聊一下老猫对一个新系统的熟悉过程。如果大家觉得有所帮助也可以借鉴一下。主要按照以下方法:

在这里插入图片描述

尝试画一下用例图

当接受到一个新的业务系统之后,首先咱们至少需要知道当前这个系统是干什么的,所以有时候就需要抽时间找到相关的产品经理了解一下业务,此时产品经理可能会和你聊一下现有的业务现状和背景,但是有可能也会丢给你一份V0-Vn版本的产品需求方案。如果是后者记住千万得忍住,不要用显示器砸产品的脸,因为你们的合作尚未开始。咳咳,开个玩笑,言归正传。

我们先了解一下什么是用例图。

用例图简析

用例是系统中的一个功能单元,可以被描述为执行者与主体之间的一次交互行为。执行者是与系统、子系统或类发生交互作用的外部用户、进程或其他系统的理想化角色。

用途:能够列出系统中的用例和执行者,并显示哪个执行者参与了哪个用例的执行。

针对之前小猫遇到的“下单付款的业务点”,咱们来画个用例图说明一下。如下图:

在这里插入图片描述

如上图其实就是一个简单的用例图。我们需要搞清楚的是各种线条的含义。

  1. a线条表示的是关联即执行者与其参与的用例之间的通信路径。用实线表示。
  2. b线条表示包含,在基用例上插入附加的行为,并且显式地描述了该插入。
  3. c线条表示扩展,在基用例上插入附加的行为,基用例并不知道。
  4. d线条表示用例泛化,一般用例和特殊用例之间地关系,其中特殊用例继承了一般用例的特征并增加了新的特性。

这样我们就可以很清晰地了解当前的业务现状。

后端模型梳理

当梳理完当前的系统功能点以及业务形态的时候,我们就可以介入去看一下现有系统的模型了即DB数据库的表。这样我们就能知道当前设计的系统是如何对业务进行抽象的。
那么在看相关表的时候,其实我们就可以慢慢地将ER图进行绘制出来了。

什么是ER图

E-R图即全称实体-联系图(Entity Relationship Diagram),它提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。

通过其定义其实我们就知道了在ER图里面有三个比较重要的点,分别是实体类,属性,联系。当我们在整理DB表的时候其实对应的就是我们的表、表字段以及对应的表和表之间的关系。

看个例子,下面老猫绘制一下一般商城系统底层的商品逻辑。

在这里插入图片描述

解释一下每一块图的含义:

  1. 方块表示一个模型即一个表,当然这个也是ER图中的实体类。
  2. 椭圆形表示实体类包含的属性。
  3. 菱形就表示两个类之间的动作行为关系,比如上图中商品上架到货架上。日常中老师给学生上课,那么菱形中可能就是上课。
  4. 线条上的1和n就更清晰了,就是一对多,多对一,一对一的关系。

上图中其实我们就可以比较清晰地看到,在当前的这个系统中存在三个比较重要的实体概念,分别是商品、商品池、以及货架。从图中我们也可以大概地看到他们之间的关系。

当咱们梳理完ER图之后,其实上述的用例业务图如何在现有系统中的抽象大概就清楚了。

聊到这里,咱们从上帝视角去看一下,我们给当前这个系统赋予了骨架,接下来得让它的开始心脏跳动,血液奔腾起来,让整个系统赋予灵魂。
那么接下来,我们就把模型通过流程的方式串起来。

核心流程以及状态机流转

咱们直接看一下例子,其实老猫觉得流程图的梳理可能比较简单,但是难的是如何去把控整个流程中的环节。如果在绘制的时候想的比较细致,可能每一步的落库环节都会去记录。这样的话对于业务的专注度就会少一些。如果画粗了,模型的对应关系可能又把控不好。所以这个地方老猫觉得还是比较考验程序员的概括能力以及业务的理解能力的。

在这里插入图片描述

上述图中,老猫简单画了一个流程图,当然流程图中可能会存在纰漏,大家不要太过较真,在此是说明这么一个事情,咱们暂且不谈里面业务流程的准确度。
上面流程中我们看到有以下图形内容:

  1. 起始节点,咱们用圆圈表示,当然可以选择自己喜欢的颜色,没有太多标准。
  2. 流程进行流转的时候,我们用了相关的箭头线表示,涉及到核心业务操作的时候就是方块。
  3. 遇到分支节点的时候,咱们用菱形去做路由。
  4. 遇到一些异步操作的时候,老猫喜欢用虚线去表示。

上述这种流程的表示其实是比较简单的,我们不用去在意系统边界。只管绘制即可。

但是现在的开发体系咱们往往都是微服务化的,那么此时我们可能就要考虑到不同系统之间的交互流程。由此,咱们可能机会引入泳道的概念。见下图。

在这里插入图片描述

上述图中我们就可以看到各个系统应用之间的交互,每一个泳道就代表着其中的一个微服务系统。这是老猫日常熟悉业务中真实绘制的一张图,再次强调一下大家要看的是绘图的一些思路,不要太过纠结业务。

那么再细节一点,比如讨论到订单状态的一些流转的时候,此时我们为了更好的把控,会使用一些状态的流转图去梳理。

在这里插入图片描述

上述主要是阐述整个状态在流程中的流转,当然很多时候状态位比较简单的时候,咱们也可以不用画,可能当状态比较复杂多样的时候才会去考虑到画状态机。

到此,通过上面的几个步骤的梳理,其实我们已经能够对大部分的业务有个熟悉了。但是有的时候还不够,涉及一些复杂接口交互请求时序的时候,可能还是会翻车弄不清楚,那么此时咱们就要引入时序图进行梳理。

引入时序图

时序图通常为表示多个对象之间消息交互的序列。
其中时序图涉及:参与者、对象、生命线、激活、消息、片段。
当然消息中又包含:同步消息、异步消息、自关联消息、返回消息。

关于其中的解释,如下图例子。

在这里插入图片描述

上述简单绘制了下单扣减库存的时序。

在上述图中,老猫用到了其中的一种片段–抉择,其实关于片段还有很多种类,大家绘制时序的时候可以对照着去使用。

在这里插入图片描述

复杂代码的类图

完成上面这些梳理之后,这个老系统其实就已经被你搞定了,后续一些比较细节的地方,当然随着业务功能地迭代再慢慢吃透。

类图:是描述类、接口、协同以及他们之间关系的图,用来显示系统中这些概念的静态结构,类图主要由类、接口和各种关系组成。

如果老系统中存在一些屎山代码或者极端优秀的代码,你看不透里面的继承实现关系的,那么可以去绘制一下类图。这里老猫不作展开,先卖个关子,后续等咱们梳理到设计模式相关知识点的时候,咱们再慢慢聊。

写在最后

在日常开发的过程中,我们会遇到各种各样复杂的系统,老猫通过上述手段,基本就可以做一个比较好的拿捏。希望能够帮助到大家,大家如果还有其他比较好的办法,也欢迎在评论区留言。

这篇关于新接手一个业务系统,我是这么熟悉的的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/634696

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能