很多小伙伴会问,要开发一个软件到底有哪些流程,今天的文章就是对我最近工作实战过程中关于0-1软件开发流程的一些总结,主要以第一人称口语化的方式进行复盘,尽量避免理论堆砌,希望您看完可以有所收获。
注意:以下说提到的各个阶段,在项目执行前产品经理/项目经理 (介绍一下,我是产品兼顾项目管理,所以本文会涉及项目管理的内容)要明确各个阶段的目标、制定计划、及时沟通反馈,并确保各个时期所有成员对项目目标理解一致。
总的项目流程:项目背景分析、需求分析、产品设计、开发管理、测试、试运营、上线跟踪、迭代反馈与售后。
一、前期调研&需求分析
这个时期的主要任务是:明确该产品开发项目的目标以及需求收集&分析。
在实际项目中我会去和客户演示沟通,在客户签单之后就开始做规划,进行正式的项目立项。
ps:如果公司人员比较多可能还需要召开项目启动会,项目启动会需要说明项目目标、项目阶段划分、组织结构、管理流程等关键事项,并将这些内容写入 PPT(最好是有固定格式和范文)需要大家达成一致。对于关键角色任命,事前也需要听取相关领导和项目主要干系人的意见。
然后明确项目的业务背景、业务目标和业务范围,产出项目背景分析报告一类的文档,然后去和客户进行沟通进行需求调研,把客户公司那边的业务架构、业务流程、工作细节梳理清楚,搞清楚这个项目业务目标人群和参与人群,将客户需求列出来汇总整理录入到excel中,绘制出对应的图之后制作产品的信息结构图。
在搜集好需求之后,产品需要对搜集的需求进行分析,划分优先级(一般是按高中低、四象限、功能模块划分),整理出来需求清单或者差异化需求清单,分析完之后通过功能确认清单向需求提出者审核。
ps:产品需求一般包含产品需求规格说明书和产品需求矩阵,产品需求写完后会召开需求评审会在需求评审会上,产品、技术详细评审需求是否完整,产品功能的正常场景是什么?是否形成闭环?异常场景是什么?是否考虑周全?
需求评审后,开发和测试分别编写技术方案和测试用例。技术方案中必须要有业务流程图和时序图,业务流程图是为了梳理开发对业务的理解,是否和需求一致。时序图是了梳理本次需求涉及的系统交互。技术方案评审通过后,确认工作量和交付时间,制作项目开发技术表反馈给产品/项目经理。
测试用例图
这个时候我会根据开发的文件分解任务进度制作进度管理&WBS。
二、产品设计
在这个阶段原型图经过反复推敲修正后,UI 设计师会进行UI界面相关的配色设计、将功能具象化处理、交互设计、以及各种机型、系统的适配。UI 设计师经过多次和我沟(争)通(论)修改后,定稿高保真设计图,然后会召开原型方案评审会,把方案给老板/客户过审一次,最后审核通过开始对接研发人员进行产品开发。
三、开发
研发动工之后我也会开始项目推进,也就正式进入了正式的项目管理的流程,这个阶段我们用的就是敏捷管理的方式(好奇的话可以看-实用干货总结|敏捷管理流程与细节梳理)。
我作为产品经理会在不同的阶段进行验收,在还没有测试之前也就是0-1的时候,和开发人员核对进度让他们作出一份开发时间表,根据时间表每周或每三天找他们核对,如果出现解决不了、延期或者有技术难点的我会记录下来找对应的人解决掉,防止出现消极怠工的情况。
各个类型的项目在开发阶段,流程上会有些不同,但是大致上都是前端工程师按照确认好的UI设计图进行前端开发/APP端开发;后台工程师按照需求内容进行数据库设计/按照后台原型进行后台开发,按照前端需求开发数据API接口;与前端工程师进行联合调试,最终交付功能完备APP产品。
四、测试(内测一、内测二、SIT测试、UAT测试、UAT优化)
在内测一的时候,主要是研发人员先自己测试,内测一完成后,会找测试人员进入测试二阶段,ps:有问题就会打回去重做,我会持续关注项目中遇到的问题记录好并找到相应的解决方式。
确认验收内测二没问题就会进入到SIt测试,也就是在软件系统集成过程中所进行的测试(即把所有的东西在集成环境中让测试工程师测试),其主要目的是检查软件单位之间的接口是否正确,没问题就进入下一个UAT测试阶段。
进入UAT之前基本都是闭门造车,而这个环节也该见公婆了,我需要在给客户在真实的环境下做演示,所以SIT环节就特别重要,一定要把细节都检查到,保证给用户那里测试的时候没有任何问题,哪怕是域名都不能有问题。
如果是c端主要是找到我们的种子用户进测试,b端是找我们客户演示,让用户在真实的环境中体验产品并收集他们的反馈,把反馈的问题都记录下来汇总,这个根据项目的大小会持续一个月到两个月不等的时间进行验收(客户什么时候签字什么时候才算验收)用户验收也是敏捷管理的核心,主要是让用户提意见我们优化修改迭代。
五、上线(试运行、正式上线)
UAT也没问题就进入上线阶段,做b端项目的时候是先试运营上线,我们会将客户现有的业务和我们系统双向起轨一起运行,试运营过程一般会先让一个部门使用,然后推到多个部门,最后全公司使用。
这个过程中我们需要给用户做培训,现有的业务会淘汰一部分,慢慢所有的线下的业务流程会过渡到我们的系统中,直到客户习惯使用我们的系统。
正式上线之后还会对客户进行回访(b端),调研客户满意度,看是否需要售后或者其他问题。
复盘过程中为了便于理解基本都是口语化的文字难免有所遗漏,于是我做了一张表,来描述软件开发过程中,各个阶段同事的具体执行任务和相应成果,建议保存。
注意:如果出现项目较多扎堆的情况,可以合理地设计时间计划以及科学的设置里程碑而不是来个需求做一个,此外,产品研发过程体系也需要按照业务实际时间要求变化,不要拘泥于一定要按照瀑布方式,或是敏捷方式进行管理,凡事都需要找到契合自己的方式。鞋合不合脚,只有脚知道。