软件项目研发流程该怎么规范
在软件项目研发管理过程中,是否经常出现这样的场景:开发人员不知道什么时候转测;项目经理拿个Excel文档群里一发,某任务前天就应该完成的,怎么现在还没开始搞;前端问这部分UI是谁在做,什么时候能做完;测试说线上这个bug又是谁改出来的,这次没转测这模块……等等。整个协作感觉一团乱麻,团队内部充满了甩锅与抱怨的氛围。软件项目的研发流程该怎么规范,让团队成员都能目标明确,步调一致,让产品迭代充满节奏感。本文基于笔者项目研发管理经验整理,希望起到抛砖引玉的作用,探讨高效团队的协作流程模式。
1. 协作流程图
基本原则:
- 所有问题可跟踪 (需求、Bug、优化)
- 所有工作透明化 (工作量、进展、Block因素)
2. 各阶段内容详解
2.1. 需求收集确认
本阶段主要是与产品经理相关的活动内容:
- 产品经理在每次版本开始之前定期收集各方需求,包括客户反馈、领导意见(对很多中小企业来说,老板就是最大的“用户”)、市场调研及技术团队需求等来源,输出需求列表
- 在版本开始之前召开版本计划会议,参与者包括项目经理、产品经理,及项目核心成员,按优先级梳理需求列表,输出下次版本的初步任务列表(之所以说初步,是因为该列表后面可能根据评审情况进行调整)
- 产品经理基于初步任务列表完成详细需求文档,组织团队成员——包括相关UI、开发、测试,召开 需求评审会议,输出评审意见及修正完成时间
- 产品经理针对需求评审会议中团队提出的意见建议,在修正完成时间内及时修正需求文档,并及时通知团队相关成员,输出确定的需求文档
注:可在需求评审会议后,进行任务的初步认领分配与时间估算,初步确定转测、上线时间节点
2.2. 设计开发
- 项目经理根据需求文档完成任务拆解,并在任务管理系统中创建对应任务单,指定经办人
- 各经办人认领任务后,根据自身任务的期限,及时与依赖方沟通,确定依赖任务的完成时间,以免影响自身任务进度,存在问题及时向项目经理反馈。
- UI设计完成后,相关开发人员与产品经理需对UI设计进行确认,如果涉及内容较多,可组织UI评审会议(由产品经理或项目经理权衡组织)
- 涉及流程的开发任务需要有必要的设计,技术相关负责人负责对设计review,没有review的设计不能开发;任务开发完成需要进行代码review
- 项目经理定期组织项目例会(紧急版本建议每天一次,较长期版本建议一周一次或两次),持续跟进任务进度与问题,并及时协调处理,以保障进度预期
- 在预定转测时间节点前一天,开发人员编写转测文档,描述本次版本调整内容(附上任务列表)及注意事项,并通知项目相关人员(钉钉群或邮件)
2.3. 测试
- 需求评审会议后,测试人员需对各功能模块编写测试用例文档,并在转测前组织测试评审会议,对各功能各环节进行复核与查漏补缺
- 一次版本任务可根据情况分批测试,并确定每轮转测的内容与时间节点;分批测试完成后,需在上线前进行集成测试,注意预留一定的时间用于问题修复
- 测试完成,需要将测试结论通报项目相关人员(钉钉群或邮件),包括遗留问题与是否达到上线要求结论
注:产品经理可在转测后对开发实现进行验收,以确定开发是否符合需求实际,以便及时进行调整
2.4. 上线
- 上线人员需在上线前编写上线方案文档,记录此次上线内容,并对此次上线操作进行推演,对所涉及的所有操作按步骤进行记录,如数据库操作,代码merge,jenkins构建等;对可能存在的问题进行备注及对应的处理方案,并提交技术相关负责人review
- 项目经理结合测试结论及其它各方面情况,决策是否上线,并将意见通知到项目相关人员(钉钉群或邮件)
- 上线人员按照上线方案文档记录的步骤,依次完成上线操作(上线操作最好至少由两人完成,一人操作,一人检视,避免出错)
- 上线完成后,测试人员与产品经理对此次上线进行线上验证,确保线上功能流程无问题
- 验证无误后,由项目经理或其他指定负责人将上线通知发布至利益相关者,包括项目团队所有成员及相关合作方,说明上线时间、上线内容、影响因素、注意事项等(即时通讯群或邮件)
2.5. 复盘
- 版本结束后,项目经理根据情况对上个周期组织复盘总结会,总结存在的问题与原因,及后续规避的办法,总结积累的经验等
以上各阶段并不是完全串行推进的,相互之间存在一些穿插,比如下一版本需求的收集整理与当前版本的开发是并行推进的,开发与测试也可以以分阶段转测的形式并行推进,等等。
3. 一些常用工具
- jira 用于项目任务管理,其中Agile插件可方便查看整体任务面板,对任务状态一目了然,需要求团队成员养成及时更新状态的习惯
- confluence 文档管理,用于各类文档的集中化维护,以上所述的如需求文档、开发设计文档、转测文档、上线文档等均可使用confluence以项目空间的形式集中化管理。
- gitlab 代码管理
- jenkins 项目部署构建工具
- nexus 搭建maven私有库
4. 总结
团队工作讲求步调与节奏,好的流程与规范可以让一个水平一般的人也能充分发挥其作用,从而让团队整体稳步前进,高效产出。而不好的流程,或根本不重视流程的团队,却往往一盘散沙,甩锅与抱怨充斥,战斗力低下。本文以相对较粗粒度对软件项目的基本流程管理做了介绍,更细节的内容可能需要团队根据内部具体情况进行相应处理与对待。