日常项目技术方案脉络

开篇引砖

软件在其生命周期中,当其进入稳定期后,大部分时间都处于迭代更新维护阶段。在这漫长的三年甚至五年的存活期内,我们需要面对林林种种大大小小的需求。今天我们就聊聊在这段期间,如何快速产出一份合格的技术方案。

方案给谁看?

1、产品经理,从方案中确认系统功能是否可以覆盖产品需求,以及系统间交互是否符合前期讨论结果。

2、开发人员,通过方案,对系统改动有明确的全景影像,对具体的改动点能从中获取详细的实施方案以及明确的注意事项提醒,尽可能减少实施过程中出现方案较大的变动。

3、测试人员,通过方案了解本次系统改动点,明确测试所需覆盖面,从而产生相应的测试用例,后续再反向与开发人员确认测试用例的合理性、可行性以及全面性。

4、新进者或接盘侠,从文档中企图窥探系统演变过程。

技术方案脉络

日常项目周期基本为两周(开发->测试->发布上线),其中技术方案设计基本上必须在一到两天内完成,在这两天内需要完成的工作包括但不限于,产品方案疑难点二次沟通-->相关系统流程梳理确认-->技术方案输出落地-->技术方案评审等等。在这种技术时间极度压缩的情况下,我们常把软件工程学里面提及的概要设计和详细设计做有机结合,力求通过一份方案,既能让产品经理读懂,又能让测试产出测试用例,同时开发人员也可以根据方案快速开展系统改造工作。

为了满足以上诉求,我们必须让技术方案拥有清晰的脉络,一份合格的技术方案,我认为应包含以下几个不可或缺的内容,包括方案的背景及目标系统数据流交互概述系统功能改造点描述数据库变更详细描述前端接口交互文档、以及开发工作分工等等。下面我们逐一探讨下各个模块应该输出怎样的内容。

1、方案背景

技术方案的背景及目标应来自于产品需求,但有别于PRD的业务需求背景及目标,需要清晰的描述产品需求达成的技术路径及方法,另外,可以预估产出一些可量化的指标,类似运营操作效率可提升30%等等。

2、系统数据流交互概述

完成了方案背景的阐述,接着为读者奉上一张系统交互全景图会是是一个很好的选择,让读者能从上帝的视角对技术方案有个全面的认知。我们可以选择跨职能流程图为载体,通过图例清晰描述需求参与方(系统及组件)及其所涉及的功能点。另外通过流程交互图,也可以让业务数据的流转清晰可见。系统流程交互全景可参考下图表述:

3、系统功能改造点详述

完成了整体的概述,接下来我们就需要对各个开发功能点做详尽的描述。如何清晰的描述各个功能点,我个人觉得可以通过三个方面的内容表述,包括关于需求点的描述、涉及改动域、改动点详述(清晰描述涉及变更接口以及变动点)。如下图所示,图中所含内容应该已可以支持进入实际开发工作。

4、数据库变更详细描述

该部分应该详细记录数据库变更的内容,包括但不限于DML、DDL相关脚本。该部分内容在日常工作中,常常成为设计评审中重点评审的内容,各位评审官常纠结于库表及其字段的命名而欲罢不能。所以极尽可能的深入考虑以及详细描述,将极大可能的有助于技术方案评审工作的顺利进行。

5、前端接口交互文档

目前普遍采用前后端分离合作模式,详尽的前端接口文档,除了有助于前端提前介入开发外,更重要的是能让前后端双方开发人员更早的达成共识,更大的促进项目的推进。

交互文档可提供如下示例相关内容,包含了具体的接口入参及返回报文的详细描述,报文中所涉及字段必须清晰标注含义。

6、开发工作分工

该部分内容用于项目进度管理,需要详细列出各项分工、工作描述、相应负责人以及项目阶段标识。可参考如下示例:

总结

全文建议一份合格的技术方案,应该包含六个方面的内容:方案的背景及目标系统数据流交互概述系统功能改造点描述数据库变更详细描述前端接口交互文档、以及开发工作分。那这样子的方案是否能成为日常合格的技术方案呢?我们可以顺着方案的脉络纵向横向分别切割分析。整个技术方案所包含的内容,纵向采用总分的方式让参与者从面(整体的系统数据流交互)到点(各个功能点改动),逐步深入理解整个技术开发实施方案。同时,横向既按参与者维度清晰划分了各个参与方的工作点,不限于前后端开发人员,也从技术栈维度出发,列出各个技术点所需变更内容。个人觉得应值得各位参考尝试。

后记

在软件的完整生命周期内,每一次迭代都会产生相应的技术方案,这些方案很有可能是需求前后关联相互影响,如何让这些迭代能有序的完整记录下来,形成有序的历史脉络,目前仍未找到较好的办法。

by:江

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Banana Pi BPI-Centi-S3 使用MicroPython编程显示JPG图片

BPI-Centi-S3是我们新推出的一款板载1.9英寸彩屏的小尺寸ESP32-S3开发板! BPI-Centi-S3 banana-pi wiki BPI-Centi-S3 bpi-steam wiki 1 关键特性 ESP32-S3,Xtensa 32 bit LX72M PSRAM , 8M FLASH2.4G WIFI ,Bluetooth 5 ,Blue…

基于鲸鱼算法的极限学习机(ELM)回归预测-附代码

基于鲸鱼算法的极限学习机(ELM)回归预测 文章目录 基于鲸鱼算法的极限学习机(ELM)回归预测1.极限学习机原理概述2.ELM学习算法3.回归问题数据处理4.基于鲸鱼算法优化的ELM5.测试结果6.参考文献7.Matlab代码 摘要:本文利用鲸鱼算法对极限学习机进行优化,并…

微服务学习之面试知识相关总结(Nacos、MQ)

文章目录 壹 微服务Nacos1.1 SpringCloud常见组件1.2 Nacos的服务注册表结构1.3 Nacos如何支撑内部数十万服务注册压力1.4 Nacos避免并发读写冲突问1.5 Nacos与Eureka的区别1.6 Sentinel的限流与Gateway的限流的差别1.7 Sentinel的线程隔离与Hystix的线程隔离的差别 贰 MQ知识2…

7款神仙级非常漂亮的 Linux 操作系统UI,你都用过吗

Linux 的发行版有很多,这里罗列7个漂亮的 Linux 发行版,可以说是Linux操作系统界的颜值担当了。 1、elementary OS 网站:https://elementaryos.cn elementary OS操作系统是最漂亮的Linux发行版之一。它基于macOS外观,同时为Linu…

C# 特性(Attribute)

一、特性(Attribute)定义 特性(Attribute)是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签。您可以通过使用特性向程序添加声明性信息。 特性使用中括号…

AI智能课程第一讲:chatgpt介绍

AI应用现状 用AI艺术创作 一个小女孩打折手电筒在侏罗世纪公园找恐龙。 AI用于医疗行业 AI辅助驾驶 AI广告投放上的应用 什么是chatgpt? chatgpt相关技术的发展 为什么用chatgpt写代码会特别的快呢? 因为它集成了GitHub上所有开发者的库公用资源&…

供需两端催化口腔医疗服务市场增长 未来将呈现线上化、智能化、品质化三大趋势

一、口腔医疗服务行业概述 口腔由唇、颊、舌、腭、涎腺、牙和颌骨等部分组成。口腔疾病种类繁多,伴随人全生命周期,常见疾病有龋病、牙周疾病、牙髓病、根尖周病、牙齿缺损、错颌畸形等,多数口腔疾病的发病率高,诊疗需求大。除此…

原型设计工具即时设计、Axure、Figma、Sketch,哪个更好用?

在线网页原型图设计软件的使用与桌面端相比具备优势,因为在线网页原型图设计软件的使用全程不需要安装,而且在线网页原型图设计软件也没有任何地点上的限制,更主要的是在线网页原型图设计软件在操作系统上也没有限制,不论是现在使…

GPT模型支持下的Python-GEE遥感云大数据分析、管理与可视化技术应用

随着航空、航天、近地空间等多个遥感平台的不断发展,近年来遥感技术突飞猛进。由此,遥感数据的空间、时间、光谱分辨率不断提高,数据量也大幅增长,使其越来越具有大数据特征。对于相关研究而言,遥感大数据的出现为其提…

服务型企业如何使用飞项实现项目化管理?

服务型企业的业务模式一般都是按项目来运作的,其业务分为售前,售中和售后三个阶段,分别由不同部门和人员对客户进行个性化服务。在这个过程中需要对人、流程和知识的高效统筹管理,即项目的整体管理,因此存在着不小的挑…

git lfs简易使用教程

参考资料: https://zzz.buzz/zh/2016/04/19/the-guide-to-git-lfs/ 这篇随笔简单记录一下git lfs的使用教程,只记录最为常用的部分,并阐述原理,方便后面查阅。 首先说明一下git lfs的原理,看名称:git lfs。…

算法:(力扣)(牛客)打印螺旋矩阵题

手撕螺旋矩阵 题目思路解题 题目 描述:给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。数据范围:0 \le n,m \le 100≤n,m≤10,矩阵中任意元素都满足 |val| \le 100∣val…

如何优化语音交友app开发的搜索和匹配算法

语音交友app开发的挑战 在当今社交媒体行业中,语音交友app开发已经成为一个热门的领域。越来越多的人开始使用语音交友app来寻找新的朋友,这也为开发者们带来了许多机会。然而,这个领域也面临着一些挑战。其中一个最大的挑战是如何优化搜索和…

全志v851s uart3 设置成普通串口收发

本文转载自:https://bbs.aw-ol.com/topic/3281/ 由于UART0 被设定为系统dubug 输出(简单来说就是将ttyS0 设定为console),所以使用UART3 作为普通的串口,进行与别的设备通信。 1. 查看硬件电路图SCH_Schematic1_2022…

springboot 接口防刷(根据IP与路径限制)

接口防刷 一、全局接口防刷(通过拦截器方式)1、原理 代码示例 二、个别接口防刷(接口注解方式)1、代码示例 一、全局接口防刷(通过拦截器方式) 1、原理 代码示例 通过ip地址uri拼接用以作为访问者访问接口区分通过…

Vivado中VIO IP核的使用

Vivado中VIO IP核的使用 一、写在前面二、VIO IP核配置三、VIO联调四、写在后面 一、写在前面 Vivado中的VIO(Virtual Input/Output) IP核是一种用于调试和测试FPGA设计的IP核。它允许设计者通过使用JTAG接口读取和写入FPGA内部的寄存器,从而…

复旦大学郁喆隽:网络制造出人的“幻象”,深度思考如何可能?

“人是什么?”这是亘古以来人们反复追问的一个古老命题。从元宇宙到ChatGPT,这个人人都在讨论、理解和实践互联网的时代,对“人”的自我定义和认知产生了哪些影响?    在3月12日复旦大学-华盛顿大学EMBA项目主办的“复调艺文沙龙”上&am…

Keil生成.bin文件

1. 打开OptionsforTarget 对话框: 2 选择User: 3. 根据User页的配置还要配置Output页面,具体如下: 4. 点击OK确定,然后再重新编译则会按照上图中的配置路径生成.bin格式的文件了: Keil自带的fromelf.exe工具…

Python3 OpenCV4 计算机视觉学习手册:6~11

原文:Learning OpenCV 4 Computer Vision with Python 3 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 计算机视觉 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 当别人说你没有底线的时候&a…

Git 时间线管理

Git 时间线管理 这一部分主要讲的是 取消(undo) 变化 和在不同的时间锚点跳来跳去,以 command 为主。 设计到的commits有: checkoutrestoreresetrevert checkout checkout 的一部分作用,即切换分枝在 git 分支操作 中有提到过&#xff0…