后端方案设计文档结构模板可参考

文章目录

  • 1 方案设计文档整体结构
  • 2 方案详细设计
    • 2.1 概要设计
    • 2.2 详细设计方案
      • 2.2.1 需求分析
      • 2.2.2 业务流程设计
      • 2.2.3 抽象类:实体对象建模
      • 2.2.4 接口设计
      • 2.2.5 存储设计

1 方案设计文档整体结构

一,现状:把项目的基本情况和背景都说清楚,让大家达成一个共识,才能进行后面的方案评审和讨论1、业务背景:业务(项目)的基本介绍2、技术背景:现有技术积淀、架构描述、系统的整体容量二,需求:技术方案一切都是围绕需求来设计,需求清楚之后才能比较好的去评审你的方案1、业务需求:业务具体要做的事情2、业务痛点3、性能需求三,方案描述:把相关可能的方案都描述清楚【可选】1、方案1概述详细说明性能目标性能评估方案优缺点2、方案23、方案对比四,线上方案:倾向的方案更为细致的描述1、架构图:指出关键设计点和设计折衷2、流程图:分业务场景把重要的业务场景的流程图3、模块划分:针对这个业务流程的各个环节来划分模块4、时序图:5、存储设计表结构设计数据库E-R关系6、接口定义:列举出接口的结构,参数,返回值等5、异常边界【重要】模块流程可能出现的异常情况处理方式6、统计、监控7、灰度、回滚策略8、容灾方案五,部署拓扑:线上部署拓扑如何,上下游是如何六,风险评估潜在风险七,阶段规划【架构演进规划】1、第一阶段2、第二阶段3、第三阶段八,工作量评估每个模块、每个接口的设计分别需要多长时间,一定要同时包括开发时间、联调时间、测试时间

2 方案详细设计

从概要设计到详细设计,从用户需求——>产品文档梳理——>功能设计——>代码开发

这是一种自上而下的设计,需要从用户视角去看系统,有什么缺失,如果有所缺失,应该主动跟进,push缺失部分的完善,而不是相互甩锅,这部分应该是谁谁谁做,不是我们做。实现合作方之间的相互push,一起把产品做好。

2.1 概要设计

包括:

  • 业务架构:从业务用户角度进行考虑,由哪些功能模块组成,https://zhuanlan.zhihu.com/p/342136194

业务架构图一(三步画出产品业务架构图) - 知乎

  • 应用架构:IT系统功能和技术实现,从应用部署服务进行考虑,从开发的角度来考虑功能模块与服务之间的关系,UI层、网关接入层、应用层、基础设施层(微服务之间的关系)

在这里插入图片描述

  • 部署架构:服务之间如何进行部署,用户、网关、网络、防火墙、存储,从用户到存储的全部过程
  • 系统迁移:上线方案,旧有系统如何进行无缝迁移

2.2 详细设计方案

实际上针对的就是业务架构进行下钻,进行更详细的设计,每一层级都基于上一层级所输出的内容,采用的是“结构化思维”

2.2.1 需求分析

这里的需求并非产品经理识别用户需求里面的用户需求,而是针对已有的产品文档输出开发的需求

对于这个服务系统,用户有哪些功能需求,分析之后输出用例图

根据所有用户的用例图,可以从中抽象出功能模块
在这里插入图片描述

2.2.2 业务流程设计

根据需求分析得出的用例图,找到用例图中的核心功能,输出序列图(时序图),有时候业务的流程会比较复杂,涉及到多种角色,这时就可以使用时序图来梳理这个业务逻辑。这样会使业务看起来非常清晰。

实际上越是复杂的功能越是需求进行绘制序列图,通过序列图来理清几个服务之间的交互关系,而这其中的【服务】就对应这应用框架中的【应用】

时序图

  • 每个步骤,增加文字解释+接口设计,文字解释给评审的相关人员看,接口设计给自己开发时使用,实际上也有了接口设计。
  • 每一步的流程交互,在重要的地方可以尽量详细,也就是详略得当,对着就可以进行开发。

绘制参考文章:

  • http://www.objie.com/article/6034b11a15c40100118fef6c
  • https://www.cnblogs.com/54chensongxia/p/13236965.html

程序员必备画图技能之——时序图- 程序员自由之路- 博客园

在线绘图工具,ER模型设计-登录时序图.xml,uml序列图,uml时序图,visio时序图,visio序列图,序列图怎么画,时序图怎么画,系统时序图-

2.2.3 抽象类:实体对象建模

根据核心功能的时序图,分析时序图中涉及有哪些关键的类,这些关键类,又有哪些关键属性,实际上是为了梳理出类与类之间的关系,对应了写代码的思路

有了关键类,则可以为后续的存储设计,数据库表设计,进行参考

英文书写,类名最好直接对应与最后的开发类名

参考文档:http://www.objie.com/article/613ab8af0763c30011fa8daf

软件开发设计文档之「类图」

2.2.4 接口设计

业务流程设计输出的时序图服务与接口设计

2.2.5 存储设计

实体对象建模输出的UML类图服务于存储设计

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

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

相关文章

MAC 本地搭建Dify环境

Dify 介绍 Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过…

Voice Conversion、DreamScene、X-SLAM、Panoptic-SLAM、DiffMap、TinySeg

本文首发于公众号:机器感知 Voice Conversion、DreamScene、X-SLAM、Panoptic-SLAM、DiffMap、TinySeg Converting Anyones Voice: End-to-End Expressive Voice Conversion with a Conditional Diffusion Model Expressive voice conversion (VC) conducts speak…

数塔问题(蛮力算法和动态规划)

题目:如下图是一个数塔,从顶部出发在每一个节点可以选择向左或者向右走,一直走到底层,要求找出一条路径,使得路径上的数字之和最大,及路径情况。(使用蛮力算法和动态规划算法分别实现) #include…

c语言从入门到函数速成(1)

温馨提醒:本篇文章适合人群:刚学c又感觉那个地方不怎么懂的同学以及以及学了一些因为自身原因停学一段时间后又继续学c的同学 好,正片开始。 主函数 学c时最先学的是我们c语言程序的主体函数,c的主函数有两种写法,这…

【Docker】★★★

docker 的网络模式 ●host模式:使用 --nethost 指定 容器与宿主机共享网络命名空间、ip和端口 ●container模式:使用 --netcontainer:NAME_or_ID 指定 新建的容器共享已有容器的网络命名空间、ip和端口 ●none模式:使用 --netnone 指定 不进行…

被问了n遍的小程序地理位置权限开通方法

小程序地理位置接口有什么功能? 在平时我们在开发小程序时,难免会需要用到用户的地理位置信息的功能,小程序开发者开放平台新规要求如果没有申请开通微信小程序地理位置接口( getLocation ),但是在代码中却使用到了相关接口&#…

macOS sonoma 14.4.1编译JDK 12

macOS sonoma 14.4.1编译JDK 12 环境参考文档开始简述问题心路历程着手解决最终解决(前面有点啰嗦了,可以直接看这里) 记录一次靠自己看代码解决问题的经历(总之就是非常开心)。 首先,先diss一下bing,我差一点就放弃了。 环境 macOS sonom…

分布式与一致性协议之Raft算法(二)

Raft算法 什么是任期 我们知道,议会选举中的领导者是有任期的,当领导者任命到期后,需要重新再次选举。Raft算法中的领导者也是有任期,每个任期由单调递增的数字(任期编号)标识。比如,节点A的任期编号是1。任期编号会…

自定义类型

引言: C语言分为:1、内置类型 2、自定义类型: 1》结构体——每个成员有自己的空间 2》枚举型——定义多个常量 3》联合体——所有成员共用一快内存空间 一、结构体: 单独写过了一篇 关于结构体的介绍以及使用 二、 枚举型&…

论文辅助笔记:Tempo之modules/prompt.py

1 get_prompt_param_cls 2 get_prompt_value 3 Prompt 类 3.1 _init_weights 3.2 forward

表空间的概述

目录 表空间的属性 表空间的类型 永久性表空间(PermanentTablespace) 临时表空间(Temp Tablespace ) 撤销表空间(Undo Tablespace) 大文件表空间(BigfileTablespace) 表空间的状态 联机状态(Online) 读写状态(Read Write) 只读状态(Read) 脱机状态(Offline) Oracle从…

Elasticsearch初步认识

Elasticsearch初步认识 ES概述基本概念正向索引和倒排索引IK分词器ik_smart最少切分ik_max_word为最细粒度划分 ES索引库基本操作对索引库操作对文档操作 ES概述 Elasticsearch,简称为 ES,是一款非常强大的开源的高扩展的分布式全文检索引擎&#xff0c…

谁能取代迈巴赫,征服互联网安全大佬周鸿祎?

‍作者 |老缅 编辑 |德新 4月18日,「周鸿祎卖车」登上了微博热搜。这位360创始人、董事长发微博称:自己做了一个艰难的决定,将把陪伴9年的迈巴赫600给卖掉。 随后,他解释道:「这是因为我需要体验新一代车的感觉。古人…

opencv图像处理详细讲

传统的计算机视觉框架: SimpleCV BoofCV Dlib JavaCV 深度学习计算机视觉框架 Caffe Tensorflow Pytorch Paddlepaddle Keras 深度视觉计算机视觉框架 OpenVINO TensorRT onnxruntime Deepface YOLO/DarkNet mmdetection Paddle-detection/seg/ocr …

重学java 29.经典接口

光阴似箭,我好像跟不上 —— 24.5.6 一、java.lang.Comparable 我们知道基本数据类型的数据(除boolean类型外)需要比较大小的话,直接使用比较运算符即可,但是引用数据类型是不能直接使用比较运算符来比较大小的。那么,如何解决这个…

ECC 号码总结

1、问题背景 在手机开发过程中,经常遇见各种紧急号码问题,在此特意总结下紧急号码相关知识。 2、紧急号码来源 在MTK RILD EccNumberSource.h中,定义了如下几种紧急号码来源。 按优先级排序介绍如下 2.1、SOURCE_NETWORK 网络下发&#xff…

本地大语言模型LLM的高效运行专家 | Ollama

Ollama简介 Ollama是一个开源的大型语言模型服务工具,它帮助用户快速在本地运行大模型。通过简单的安装指令,用户可以执行一条命令就在本地运行开源大型语言模型,如Llama 2。Ollama极大地简化了在Docker容器内部署和管理LLM的过程&#xff0…

Linux网络设置

配置网络相关设置 一般包括如下内容: 主机名 IP/netmask A B 路由:默认网关 DNS服务器 主DNS服务器 次DNS服务器 第三个DNS服务器 ping baidu 网络配置命令 ifconfig ifconfig -a #表示显示所有网卡包括没有启动的网卡 ifconfig 网卡名称 [up|down…

考研数学|基础跟张宇,强化直接1000题还是先做660?

跟宇哥用1000题的,我愿称之为卷王之王!660对基础阶段是绝佳的查漏补缺,必做! 自我介绍一下:我21年一战数学83,总分没过线,22年二战143,逆袭上岸211!660是我的心头好&…

js api part4

其他事件 页面加载事件 外部资源(如图片、外联CSS和JavaScript等)加载完毕时触发的事件 原因:有些时候需要等页面资源全部处理完了做一些事情,老代码喜欢把 script 写在 head 中,这时候直接找 dom 元素找不到。 事件…