学习笔记之项目开发流程
一般情况下,企业开发软件时会按照基线和定制两块并行方式执行项目开发工作。
无论什么公司,都需要遵循一套成熟的产品研发过程体系,才能做出质量较好的产品。
此外,产品研发过程体系也需要按照业务实际时间要求变化,不要拘泥于一定要按照瀑布形式,或是敏捷形式进行管理,凡事都需要找到契合自己的方式。
流程一:项目启动会
立项,设计产品。
项目启动会的目标是明确该产品开发项目的目标。
目标不是孤立存在的,目标与计划相辅相成。在执行目标的时候,考虑清楚自己的行动计划,怎么做才能更有效地完成目标,是每个人都要详情清楚的问题。
项目启动会需要说明项目目标、阶段划分、组织结构、管理流程等关键事项,并将这些内容写入PPT(最好是有固定格式和范文,让团队内部或者公司内部共同遵守规范),需要大家达成一致。对于关键角色任命,事前需要听取相关领导和项目主要干系人的意见。
流程二:需求分析
调查用户需求,并将用户需求转化为产品需求,并撰写产品需求文档(PRD)。由产品经理牵头负责,很多时候要开需求研讨会。
用户需求
用户需求由用户提出,对技术一般不描述,只描述产品目标。对于一些创新性的产品和出现用户对自身需求不清晰的情况,还需要我们对用户需求进行挖掘和自定义。
产品需求
产品需求是根据用户需求转化而来的技术实现需求,需要针对用户的产品目标进行细分,总结出具体的每一个功能点,再针对每一个功能点细分为各种不同的操作流程,对每一个操作流程进行技术化定义。
产品需求一般包括产品需求规格说明书和产品需求矩阵。产品需求矩阵一般按照子系统、功能集、执行单元的结构列出所有的功能需求,每列则对应每项功能的工作步骤以及每个步骤的工作量。
产品需求写完后,需要进行评审。在需求评审会上,产品、技术详细评审需求是否完整,产品功能的正常场景是什么?是否形成闭环?异常场景是什么?是否考虑周全?
需求评审后,开发和测试负责人,分别编写技术方案和测试用例。技术方案评审,开发负责人拉上涉及到其他系统的负责人一起讨论,技术方案评审通过后,确认工作量和交付时间,反馈给产品。
流程三:产品设计
总体设计
总体设计的目标主要是对待开发系统的架构进行分析和设计,并建立系统架构的基线,以便为之后的实施工作提高一个稳定的基础。
总体设计阶段的输出是系统架构。一个好的系统架构可以帮助我们梳理业务逻辑且抓住核心需求,设计稳定可扩展的业务系统,评估业务开发周期和开发成本,有效的规避风险。
总体设计分为三个阶段:
- 初始设计阶段。在给定的数据流图进行复审和精华的基础上,将其转化为初始的模块结构图。
- 精华设计阶段。依据模块“高内聚低耦合”的原则,精华初始的模块结构图,并设计其中的全局数据结构和每一模块的接口。
- 设计复审阶段。对前面两个阶段得到的高层软件结构进行复审,必要时还可能需要对软件结构做一些精华工作。
概要设计
概要设计的目标是描述系统的每个模块的内部设计,对总体设计和详细设计承担承上启下的作用。
概要设计阶段把软件按照一定的原则分解为模块层次,赋予每个模块一定的任务,并确定模块间调用关系和接口。
概要设计文档最重要的部分是分层数据流图、结构图、数据字典以及相应的文字说明等。
详细设计
详细设计阶段就是依据设计阶段的分解,设计每个模块内的算法、流程,为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。
详细设计这个阶段,各个模块可以分给不同的人去并行设计。设计者的工作对象是一个模块,根据概要设计赋予的局部任务和对外接口,设计并表达出模块的算法、流程、状态转换等内容。
详细设计阶段常用的描述方式有:流程图、N-S图、PAD图、伪代码等。而详细设计的目的是描述某一个模块内部的处理流程、开发方法和编码技巧。一般来说,详细设计由项目简介、模块说明(具体说明每一个模块内部的流程、功能、逻辑、消耗及未解决问题)、接口设计(包括内部接口和外部接口)、数据结构设计(包括物流结构和逻辑结构)、特殊处理等几个部分构成。软件的详细设计,最终是将软件系统的各个部分的具体设计方法、逻辑、功能采用文字方式进行表述。
流程四:开发测试
前端开发
前端开发小组根据需求分析得到的需求分析文档(PRD)和产品设计,先由UI设计师设计出前端的页面,随后再由前端开发人员根据设计出的页面分别进行安卓、IOS和Web前端的开发。
后端开发
后端开发小组根据需求分析得到的需求分析文档(PRD)先对数据库进行设计。在数据库设计完毕后,随即凭借项目指定的脚手架(系统或网站开发的最基本模板)来开始开发,对接前端,实现前端的业务逻辑和数据库的增删查改工作。
测试
测试工程师要编写测试样例,对开发出的产品进行测试。如果测试过程中出现Bug,则需求向开发人员进行反馈,修复Bug,直到经过非常多次的测试后,没有出现Bug为止。
流程五:产品上线与运维
产品发布
通过测试后,产品即可上线,可以通过产品发布会的方式发布产品。若是为企业开发应用的话,需要有实施人员去给企业的员工进行使用培训和讲解。
产品维护
产品上线后,可能会出现系统Bug等情况,这个时候就需要运维人员对服务器和产品进行维护。