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