软件产品研发流程总结

发布时间 2023-09-21 16:17:35作者: 阿玛度の博客
开发流程更完整、更有效率,产品才能脱颖而出。
 
1. 项目启动
在项目启动阶段,主要确定项目的目标、范围及其可行性,我们需要对项目的背景、干系人、决策人等等进行了解。
编制项目章程和组建项目团队,包括:产品经理、架构师、UI工程师、开发工程师、测试工程师等;
明确项目管理制度,每个阶段的成果产物及评审方式及过程,评审要有相应的《会议纪要》,从项目启动起,项目经理每周提供《项目周报》;测试阶段,测试工程师每周提供《项目测试周报》等等都属于项目管理制度。
《会议纪要》《项目周报》《项目测试周报》
 
2. 需求调研及分析
2.1 需求调研
了解相关对接系统的业务需求,比如该软件是为其它业务提供服务的平台,那一定要了解清楚相关对接方的具体需求才能设计出最佳的系统架构。又比如该软件是一个业务系统那必须要了解清楚业务方的具体需求才能达到业务满意、用户满意。
《需求调研》文档
2.2 需求分析
需求分析阶段主要对调研阶段收集到的各项需求进行细化分析,对业务需求进行去粗取精、去伪存真、准确理解,然后把它用软件工程开发语言(形式功能规约,即需求规格说明书)表达出来。需求明确后应当有PRD文档、UI/UE设计图、高保真图等产出,项目经理也应当产出一份详尽的项目计划并严格执行。
《市场需求文档MRD》(MRD:市场需求文档)《产品需求文档》《设计文档(《产品原型》)》《产品开发计划》
产品经理的三大文档——BRD、MRD、PRD
BRD(商业需求文档):项目背景(产品介绍)、市场分析、团队、产品路线、财务计划、竞争对手分析 等。
MRD(市场需求文档):目标市场分析(目标、规模、特征、趋势)、目标用户分析(用户描述、用户使用场景、用户分类统计、核心用户、用户分类分析、竞争对手分析、产品需求概况(定位、前景))。
PRD(产品需求文档):详细功能说明(功能清单、优先级、功能目的、功能详细说明)、业务流程(业务流程、用例)、业务规则、界面原型(界面流程、界面原型)、数据要求(输入输出、极限范围、数据格式等)。
 
3. 系统设计
3.1 概要设计
概要设计就是结构设计,其主要目标就是给出软件的模块结构,用软件结构图表示整个系统的架构,其中应当包含但不限于以下几部分: - 系统架构设计: 需要对系统的整体技术架构做出设计,采用何种技术框架及架构,包含技术选型如web容器的选择、高速缓存组件的选择等;是否采用分层技术,是否采用分模块设计等等一系列技术方向进行明确。
  • 业务架构设计: 考虑到系统是一个满足业务满足市场的长期存在,所以我们的系统需要应对未来业务的发展,那就需要做出相应的业务架构设计,包含系统未来的产品可扩展性、系统收缩性等相关方面的设计。
  • 网络架构设计: 针对系统的网络结构进行设计,是部署在内网还是外网,分模块的系统需明确哪些模块部署外网区、哪些模块部署DMZ区、哪些模块部署内网区,模块之间的访问关系及端口要求等。
  • 数据库设计: 针对系统的数据结构进行设计,包含是否采用分库分表技术,是否采用读写分离设计等,系统中所有的表结构设计及字段设计。
  • 接口设计: 针对系统内部接口及外部接口进行设计,包含接口通讯方式、接口字符编码、接口数据规范、接口报文规范、接口报文格式、接口字段等进行设计。
  • 安全设计: 包含数据的传输与存储安全、安全认证方式、数据的加解密签名验签方式、共计及防范方案等进行相应设计。
  • 非功能设计: 主要包含系统性能、可靠性、可用性、可扩展性、可维护性等相关设计。
《概要设计》《通讯协议》及《表结构设计》
 
3.2 详细设计
详细设计主要任务就是将软件分解成模块,是指能实现某个功能的数据和程序说明、可执行程序的程序单元。可以是一个函数、过程、子程序、一段带有程序说明的独立的程序和数据,也可以是可组合、可分解和可更换的功能单元,其中要包含具体功能的简介、功能流程、输入输出项、数据库操作、异常处理等,可以理解成好的详细设计其实就是伪代码。
《详细设计》
 
4. 编码实现
软件编码就是根据产品原型图、UI/UE设计图、设计文档转换成计算机可以接受的程序,即写成以某一程序设计语言表示的源程序清单。开发人员应当充分了解软件开发语言、工具的特性和编程风格,严格遵守开发规范进行代码编写;良好的编码风格、清晰的编码注释等都有助于提升软件产品的开发质量。
 
5. 系统测试
5.1 功能测试
对软件进行测试是保证软件质量的重要手段。开发工程师开发完成后,可以交由测试工程师测试。测试工程师测试到BUG要反馈给开发,开发进行修改;功能测试通常需要多轮反复的测试多次,直至测试通过达到软件质量要求。
5.2 用户验收测试
用户验收测试阶段,也是通常的UAT(User Acceptance Test)阶段,用户验收测试是最终用户可以检查软件是否符合业务要求的最后阶段。UAT由了解要求并了解构建软件目的的最终用户执行。此测试是在软件运行之前执行的最后一次测试。最终用户使用现实生活场景并为真实数据构建UAT测试用例,用户验收测试在最终用户在上线之前验证软件是否满足这些业务需求方面具有重要作用。
5.3 性能测试
通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试,以此可以预估出系统的最大承受能力以及推算出能否满足系统上线后的性能要求。通常包含以下几个方面:
  • 基准测试: 在给系统施加较低压力时,查看系统的运行状况并记录相关数做为基础参考
  • 负载测试: 是指对系统不断地增加压力或增加一定压力下的持续时间,直到系统的某项或多项性能指标达到安全临界值,例如某种资源已经达到饱和状态等 。
  • 压力测试: 压力测试是评估系统处于或超过预期负载时系统的运行情况,关注点在于系统在峰值负载或超出最大载荷情况下的处理能力。
  • 稳定性测试: 在给系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定。
  • 并发测试: 测试多个用户同时访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题
《测试实例(测试用例)》《测试结果报告》
 
6. 项目上线试运行
所有测试通过,并与客户或者上级达成一致后,系统进行试运行(通常指小范围运行),稳定后上线。上线包括:上线前期准备,包括要上线的代码程序包、数据库DDL、DML脚本、系统初始化参数配置等;上线部署、部署后业务验证;投产完毕后的系统运行状况监控:各业务功能是否正常运行、系统资源、数据库资源等是否在合理使用范围内。
 
7. 投产验收
整理交付物:项目需求文档、项目设计文档、安装部署手册、系统操作手册等等,并移交至相关运维部门或人员进行后期系统维护。释放项目团队,进行项目回顾总结,项目汇报,完成项目结项等工作。
《操作手册》《维护手册》