迭代技术方案设计文档规范

简介: 规范在团队管理中的意义无需多言,对于开发团队来说,技术方案的设计和执行无疑是日常工作中很重要的一块。编码一定要在思考清楚之后在开始,以免把问题带入线上,或者反复修改造时间、精力的浪费。

一 背景及目标

1.1 背景

规范在团队管理中的意义无需多言,对于开发团队来说,技术方案的设计和执行无疑是日常工作中很重要的一块。编码一定要在思考清楚之后在开始,以免把问题带入线上,或者反复修改造时间、精力的浪费。

大家在日常研发过程中更多的是迭代类的需求,以中小型迭代需求为主,严格按照大规模系统设计文档模板填写内容过多,导致执行度偏低,所以决定整理一个简化后的设计文档规范,可作为技术设计时的checklist,研发同学可参考执行。

1.2 目标

通过遵守规范,各位RD同学在方案调研、技术设计时充分考虑,包括需求的理解与合理性评估、技术上实现的可行性调研、对现有系统或外部依赖的影响范围评估、各成员角色的职责划分与关注内容充分沟通、风险点预知等等,确保方案可行,减少因理解偏差、调研与沟通不充分导致的线上问题,提升个人的技术、设计、沟通等各方面的能力,培养良好的开发习惯。

1.3 适用范围

所有需求迭代的技术方案设计,都按照本规范执行。输出格式:xxx (word、wiki、pdf等,推荐使用有版本管理的工具,方便查看变更)

二 技术设计前期准备

开始做方案设计之前,一定确保两个前提条件已经完成:需求评估 和 技术调研。

2.1 需求评估

(1)确保需求的真实性、可行性、必要性,以及与产品的发展方向是否一致;伪需求、无收益需求 可在PM同学这层直接驳回

(2)与PM同学充分沟通需求内容,确保双方理解一致,没有偏差;对PM同学在需求预审阶段,存在的逻辑不完整或潜在问题,在此阶段做好完善和修改

(3)参与人:RD、PM、QA必须同时参加,PO视实际情况决定。低阶同学如果无法确认(1)的要求,可以请高阶同学一起参与需求评审,确保需求考虑充分,不会导致线上出现业务逻辑问题 或 导致反复修改

2.2 技术调研

(1)确定需求在技术上实现的可行性

(2)调研各备选方案的实现成本,对当前系统的影响,以及可能导致的潜在风险

三 文档格式

3.1 需求背景

项目/需求背景,如当前功能现状,需求的必要性、可行性,预期带来的收益;如果涉及一些专业词汇或指标时,需要给出准确的文字描述

3.2 需求理解

1、RD角度需求理解

RD角度对PM同学提出的需求的理解,不是复述,而是总结和抽象;对需求进行拆解,映射到功能层面;作为流程、接口定义的依据;

描述角度:新增了哪些功能,已有的功能做了哪些变更

2、引申需求

除了原始需求外,可能会涉及历史遗留的逻辑问题,或优化类的需求(响应耗时、实时返回调整为异步处理等),不属于PM同学所提的需求范围,但对需求的实现存在影响,需要纳入考虑。

3、内容要求

能够让参与评审的同学(PM、非该模块负责的RD、项目QA),基本明确需求影响的功能模块,预期实现的目标,和影响范围。

3.3 概要设计

需要包括:基本介绍、系统环境(涉及时包含)、数据规模、方案可行性调研结果;

设计思路和折衷

系统设计:系统架构图(简单的功能迭代不必包含,技术项目涉及架构变更时必须体现)、流程图、外部服务依赖、子模块(子系统)简要描述。

重点:体现自己的设计决策。

3.4 详细设计

3.4.1 内容结构

1、模块划分、依赖关系 (必须)

2、流程图(必须)

3、数据结构设计(必须)

(1)确认数据code、name明确,理解无歧义;

(2)确认历史数据是否存在异常(重要)!!!

(如某张业务表,字符串类型字段存储的是整数数组的结构;但如果历史数据中存在记录字符串数组),必然会影响接口的数据返回。

4、接口设计(必须)

(1)涉及与FE、外部服务交互,必须确保相关人员都已经明确了需要关注的接口和参数、返回值,接口文档格式:路径,入参(字段名称、类型、是否必填、备注说明),返回值(字段名称、类型、是否必填、备注说明);

(2)入参和返回值,必须提供demo数据;

(3)返回值约定错误码、异常信息、是否需要前端接收并展示异常消息内容

5、存储设计(依据实际情况,非必须)

6、配置项 (依据实际情况,非必须)

7、数据量及压力评估(依据实际情况,非必须)

8、上线步骤考虑(必须)

(1)上线顺序,包括web机、脚本机、sql、外部服务;

(2)是否需要清理/刷历史数据?

3.4.2 checklist

1、是否涉及表结构变更

新建/已有表增加字段,或新的业务导致新的查询场景,原表结构/索引设计无法满足要求,可能会导致慢查询

注意事项:

(1)表名、字段命名规范

(2)业务场景,常用查询条件,决定索引的设计 (索引字段、单列/联合索引、索引类型:BTREE,HASH)

(3)数据规模,决定是否需要进行拆分(分表、分库设计)

2、是否引入外部服务依赖

(1)确认外部服务是否可用,包括:功能、稳定性、响应时间指标。不只是服务接口本身耗时,还包括引入之后,对接口整体耗时的影响。通常接口的响应时间应该在1s以内,复杂业务建议5s以内。非特殊需求,耗时操作需要使用异步实现。

(2)外部服务不可用时,是否可以降级?降级时机和检测方式(监控/业务反馈)?降级方式(手动、自动)?恢复方式(手动、自动)?如果使用自动降级,是否有可能因为判断条件有误导致误降级,这种情况是否被允许?

(3)如果功能尚未完成,需要确认完成时间,决定是否可以引入,且不影响项目进度,调研阶段需要明确,并制定备用方案,以防依赖无法按时保质交付时,项目整体推迟。

3、必要的校验

请求的来源,除了系统内部的前后端交互,还会有诸如小工具、Postman(for chrome)或HttpClient(for firefox)等接口请求测试工具,设计时切记:所有的外部输入都是不可靠的,必须进行校验。

(1)输入参数必填项、类型校验

(2)用户权限校验

(3)参数准确性校验,如需要下载的备件不属于传入的交易单,可能是人为构造导致,避免越权、SQL注入

(4)涉及外部对接时,必须包含加密或验签环节

4、异常情况捕获处理、报警方式

包括但不限于:非法参数、数据库异常、网络异常、数据错误、依赖服务异常

方案中需要体现:

(1)每一种异常可能出现在流程中的位置

(2)是需要进行捕获还是直接抛出

(3)日志等级

(4)报警方式,关注成员(RD?PM?PO?)

(5)问题发生后应该怎样进行后续处理(可忽略?需要PM刷补单、数据?需要PO通知业务方修改?)

5、关于资源和成本【非必须,建议考虑】

线上资源由多个业务线共享(混布)时,避免相互影响。

(1)部署使用的机器数量,cpu负载、内存占用率、磁盘空间、硬盘IO、网络带宽,

(2)数据库、redis、HDFS等的数据量和存储空间,

(3)云服务的使用空间

6、存储采用主从结构时,考虑各个环节的线上主从延迟问题【不一定有,必须考虑】

3.5 工作量评估

开发、自测、联调、cr、showcase、测试、上线;

注意考虑项目并发,和紧急插入需求带来的风险

3.6 风险点

技术上的不确定性,潜在的人力、时间风险,存在需求通知上下游的变更等;

方案变更、上下游通知必须正式的邮件通知,并确保相关各方已经明确变更内容 和 截止时间点

相关文章
|
6月前
|
安全 项目管理
一文搞懂需求流程规范的制定方法和落地技巧
随着业务和产品的发展、团队的不断扩大,很多团队都不可避免的会遇到需求流程混乱的问题。虽然有的团队也编写了一些“需求流程规范”的文档,但最终却流于纸面,难以在团队真正落地。如何科学制定并有效落实需求管理规范呢?对此,云效产品经理陈逊进行了非常详细的直播分享,本文是他经验的文字总结。
102100 19
|
3月前
|
机器学习/深度学习 分布式计算 前端开发
构建前端防腐策略问题之前端代码会随着技术引擎的迭代而腐烂的问题如何解决
构建前端防腐策略问题之前端代码会随着技术引擎的迭代而腐烂的问题如何解决
|
5月前
|
敏捷开发 安全 测试技术
敏捷项目管理的原则、好处、工具、提示以及何时进行转换
敏捷项目管理的原则、好处、工具、提示以及何时进行转换
|
6月前
|
测试技术
快速迭代下,研发和测试如何高效配合?
快速迭代下,研发和测试如何高效配合?
|
6月前
【突破常规:让函数规范成为注目的亮点】(下)
【突破常规:让函数规范成为注目的亮点】
|
6月前
【突破常规:让函数规范成为注目的亮点】(上)
【突破常规:让函数规范成为注目的亮点】
|
6月前
|
安全 前端开发 测试技术
【测开方法论】当老功能代码命名不规范的时候...如何安全增加新功能
【测开方法论】当老功能代码命名不规范的时候...如何安全增加新功能
|
敏捷开发 数据可视化 测试技术
如何做好敏捷迭代管理?过程及工具分享
Leangoo领歌是ScrumCN(scrum.cn)旗下的一款永久免费的敏捷研发管理工具。 Leangoo领歌覆盖了敏捷研发全流程,包括小型团队敏捷开发,Scrum of Scrums大规模敏捷以及SAFe大规模敏捷框架等,提供端到端敏捷研发管理解决方案,涵盖敏捷需求管理、任务协同、缺陷管理、测试管理、进展跟踪、统计度量等。领歌上手快、实施成本低,可帮助企业快速落地敏捷,提质增效、缩短周期、加速创新,在数字时代赢得竞争。
如何做好敏捷迭代管理?过程及工具分享
|
运维 前端开发 测试技术
【最佳实践】迭代规范&Checklist
在需求评审前,提前了解上下游业务逻辑 产品提供可用于了解的账号&环境 与人沟通时 和其他团队或第三方对需求内容或接口需求时,追问是否达成一致(方式:让对方复述) 会后将会议结论同步至群内
430 0
|
项目管理 数据安全/隐私保护
【平台开发】— 7.重构-增加结果统一处理
【平台开发】— 7.重构-增加结果统一处理
【平台开发】— 7.重构-增加结果统一处理