手把手教你写设计方案,你学明白了吗?

开发 前端
对于写方案设计,数据库这块是比较重要的,尤其我们是后端开发。一般来说,你的表是如何设计的,就把ER图放出来。如果你的方案只是修改原有的一些数据库表,比如加字段、加索引等等,只需要突出就行。

背景

假设你负责一个礼物系统的开发,领导给你分配一个技术需求,给系统的送礼接口,实现幂等。于是你开始写技术方案...

目的

本文档旨在概述如何设计幂等,以确保礼物系统中的送礼接口具有幂等性。

用例图

用例图(Use Case Diagram):是软件工程中的一种行为模型,用于描述系统的功能需求和用户与系统的交互。它展示了系统中的不同用户(或角色)和系统功能之间的关系,以及各种用例(功能需求)的交互关系。

用例图一般包含这三要素:

  • 参与者:表示与系统交互的外部实体,可以是用户、另一个系统或外部设备等。它们以符号形式表示,通常是一个人的轮廓图标。
  • 用例:表示系统提供的各种功能或服务需求。每个用例都描述了一个系统的功能,它以椭圆形图标表示,并与参与者之间通过连线连接。
  • 关系:用例图通过连线(箭头)表示参与者和用例之间的关系,通常表示参与者和用例之间的交互行为。

回到幂等方案处理,我们这么写用例图:

图片图片

时序图

时序图(Sequence Diagram)是软件工程中的一种行为模型,用于描述对象之间的交互和消息传递顺序。它展示了对象之间交互方式。我们一般方案设计的实现细节,都体现在时序图。

要素解释:

  • 对象(Object):在时序图中表示系统中的各个对象或参与者,可以是类、实例、角色或系统组件等。它们用矩形框表示,并在顶部写有对象名称。
  • 生命线(Lifeline):每个对象下方有一条垂直的虚线,称为生命线,表示对象存在的时间段。生命线上方的箭头表示对象的生命周期。
  • 消息(Message):表示对象之间的通信或交互,以箭头的形式从一个对象向另一个对象传递,指示消息的传递方向。消息可以是同步消息、异步消息、返回消息等,箭头上方标注了消息的类型和内容。
  • 激活(Activation):在生命线上方,表示对象正在执行操作时的时间段,通常用竖直的方块或者压扁的椭圆形表示。

比如送礼的幂等处理逻辑,就可以体现在以下的时序图:

图片图片

流程图

流程图,通常被用来描述一个过程、系统或活动中的步骤和流程。它一般用于把一些分支体现出来,以方便更好体现设计方案。比如送礼接口的幂等方案,用流程表现如下:

送礼幂等处理流程图送礼幂等处理流程图

状态图

状态图是一种图形化的建模工具,用于描述系统中一个特定对象的各种状态以及它们之间的转换和事件触发。比如回到我们幂等处理这个方案设计,这个幂等表的状态,就可以用一个状态图来表示。

图片图片

幂等表状态图

  • INIT: 幂等表插入的时候,就是初始化状态
  • SUCCESS: 如果送礼的业务逻辑处理成功,就更新为成功状态
  • FAIL: 如果送礼的业务逻辑处理失败,幂等表就更新为失败状态

数据库设计

对于写方案设计,数据库这块是比较重要的,尤其我们是后端开发。一般来说,你的表是如何设计的,就把ER图放出来。如果你的方案只是修改原有的一些数据库表,比如加字段、加索引等等,只需要突出就行。

比如我的送礼幂等方案,我的ER图就是这样的:

图片图片

因为没有其他表跟它关联,所以这个ER图只有一个单表。

接口文档

请求方式: POST

接口名称: 送礼接口

请求参数:

图片图片


责任编辑:武晓燕 来源: 捡田螺的小男孩
相关推荐

2022-10-30 10:31:42

i2ccpuftrace

2021-01-20 10:18:48

MySQL服务器配置

2022-11-06 14:46:28

脚本windows文件

2023-03-27 08:28:57

spring代码,starter

2011-01-10 14:41:26

2011-05-03 15:59:00

黑盒打印机

2018-05-16 15:46:06

Python网络爬虫PhantomJS

2021-07-14 09:00:00

JavaFX开发应用

2009-12-24 13:52:57

网络接入控制解决方案

2018-05-16 13:50:30

Python网络爬虫Scrapy

2021-06-08 09:49:01

协程池Golang设计

2011-02-22 13:46:27

微软SQL.NET

2021-02-26 11:54:38

MyBatis 插件接口

2021-12-28 08:38:26

Linux 中断唤醒系统Linux 系统

2021-06-22 10:43:03

Webpack loader plugin

2018-05-22 16:28:46

Python网络爬虫URL去重

2021-07-09 17:27:58

ButterKnife工具APT

2022-03-08 11:17:54

函数指针回调函数C语言

2023-04-26 12:46:43

DockerSpringKubernetes

2022-01-08 20:04:20

拦截系统调用
点赞
收藏

51CTO技术栈公众号