研发管理规范
- 目的
- 定义
- 工作职责
- 产品经理
- 项目经理
- 运维负责人
- 研发负责人
- 研发工程师
- 基本原则
- 研发过程描述
- 需求分析
- 分析设计
- 研发实现
- 测试验收
- 发布上线
- 线上监控
目的
- 软件研发相关管理,有效控制技术风险,提高研发和运行质量
定义
- 包括需求分析、分析设计、研发实现、测试验收、发布上线、线上监控等6个过程
工作职责
产品经理
- 负责编写产品需求文档、组织需求评审、有需求变更时更新需求文档并通知项目团队成员等
- 负责需求上线前业务验收工作
- 负责跟踪产品线上运行状况,及时跟进解决异常
项目经理
- 项目整体目标达成负责,预见风险、控制风险,确保项目按计划高质量上线
- 项目筹备到项目试运行的生命周期全过程负责
运维负责人
- 发布整体目标达成负责,确保发布按照正常节奏顺利进行,对影响发布的风险及时预警并且采取应对措施(包括不予发布或终止发布等)
研发负责人
- 软件研发质量负责,负责变更代码的code review
- 负责跟踪软件线上运行状况,及时跟进解决异常
研发工程师
- 研发工程师按要求完成产品的设计、开发、测试及线上监控活动
基本原则
- 变更设计需遵循变更三原则:可灰度、可监控、可应急
- 具备代码变更和配置项变更的灰度能力(可考虑方式:beta发布、蓝绿发布等)
- 具备业务核心指标的监控能力(必要监控项:包括业务量级、业务成功率、业务响应时间、趋势、时效等)
- 具备应急处理能力:涉及业务关键链路节点的代码及配置变更具备10分钟内回滚能力;涉及资金处理的核心数据具备业务熔断、数据捞取、差错处理能力
- 涉及到数据存储内容、存储位置变更的,必须通知数据使用方
- 所有对用户造成影响的变更(代码和配置项),需要经过验证确认才能发布
- 功能测试100%完成,有清晰合理的代码覆盖率分析
- 不能带紧急和高等级的缺陷上线,中等级缺陷不能多于两个
- 安全测试100%完成,中级及以上的安全问题上线前必须修复
- 不能直接用真实的业务数据进行测试,要经过脱敏处理后(不含涉密信息)方可使用
- 开发测试环境与实际的生产环境必须分离
研发过程描述
需求分析
- 产品需求文档(以下简称“PRD”)。产品经理编写PRD和交互稿(若有),内容至少应包含产品背景、产品功能描述、业务流程、潜在风险点和各类风险防控措施
- 产品经理需要明确对数据质量的要求,给出相应的业务规则和校验规则
- 产品经理进行业务需求风险自检,判断是否存在合规、反洗钱、风控、财务、结算、信息安全、应用安全等方面潜在风险点
- 产品经理组织跟进风险评估意见的处理,并落实在PRD中
- 产品经理组织相关人员进行需求评审,需求评审遵循评审规范
分析设计
- 需求评审通过后由研发工程师编写系分和视觉稿(若有),内容需明确需求覆盖范围、配合方、时序图、功能设计、数据库设计、性能设计、风险评估、运维支撑等内容
- 软件变更设计要符合资损防控规范
- 涉及新建系统、应用、部署单元的,需遵循应用管理规范
- 涉及新增外部接口的,需遵循《外部接口管理规范》
研发实现
- 研发工程师需遵照需求范围和分析设计,编写代码要符合编码规范
- 研发工程师完成产品功能、模块之间的自测联调,需要关注如下两点
1)涉及到非项目范围内的接口交互,必须要与对方联调拿到联调结果
2)涉及到外部机构或者银行的接口交互,必须要与对方系统进行真实联调 - 研发过程中涉及若有数据和业务规则变更,研发工程师需分析对下游的影响,并传递到下游的数据加工负责人
测试验收
- 在测试启动之前研发工程师应根据需求范围和分析设计,编写测试分析文档,明确测试方案用以指导测试要点和用例编写工作
- 由项目经理组织安排测试分析文档评审,评审过程遵循评审规范
- 研发工程师负责描述详细的测试场景,编写测试用例。测试用例需要覆盖测试分析中提到的所有场景,用例本身需要明确前置条件,主体操作步骤清晰明确可行,用例检查点必须完整清晰明确,包括但不限于页面检查、日志检查、DB数据检查等。联调测试用例与外部明确清楚范围、操作及检查点,关键检查点包括资金流、金额、金额单位、额度等
- 研发工程师向安全工程师申请做安全测试,安全工程师的测试报告里发现的高、中等级问题必须解决,若有特殊原因不能解决,必须经过测试主管审批
- 测试过程中,应做好测试记录,详细记录发现的缺陷,及时跟踪解决
发布上线
- 研发工程师编写发布计划,内容包括:发布顺序,执行时间,检查点(系统检查点、配置项等),灰度(beta)发布方案,风险分析及应对预案,应急方案,监控配置方案,资金核对方案等
- 软件发布上线分为预发验证、灰度(beta)发布、线上发布等过程
- 预发验证,由产品经理组织相关方对产品进行业务验收,给出验收结论是否通过。若不通过,研发工程师给予解决直至产品符合业务需求。研发工程师通过监控系统日志、数据等手段,确保软件正常,过程中发现的问题有记录并有处理结论。涉及风控事件接入的需联系大安全产品经理进行预发布确认
- 灰度(beta)发布后,项目经理需组织项目组成员密切观察发布结果,一旦有问题通知发布经理决定是否要执行回滚方案
线上监控
- 产品上线后必须具备可监控能力,接入监控平台,实现产品的持续监控
- 产品经理和软件负责人需要实时监控生产环境情况,及时处理异常情况