Product Requirement Description,简称PRD,是每个产品经理日常工作产出的一个重要部分。
其实PRD就是产品需求描述文档,没有什么固定的格式,只要能把需求说明白就行。这里说明白指的是,UE(如果有的话)能根据这份文档画出产品原型图,开发能根据这份文档,结合产品原型图开始撸代码,测试也能根据这份文档写测试用例。并且,假如你撤了,后续接手的人也能够通过这份文档快速上手这个产品或功能。
要把需求针对不同角色的人员描述清楚,不是一件容易的事儿。所以一般PRD文档里除了文字描述,还会包括:页面线框图、业务流程图、产品架构图,以及各种结构化的表格,目的都是为了帮助相关人更好地理解产品需求。
因此,虽然PRD没有固定的格式,但是最好包含以下这些内容,才能算是一份比较完整的PRD。
1. 修订历史
从修订历史可以看出一份PRD的编写轨迹,什么时候创建的、什么时候增加了某个功能、以及大的版本调整是在什么时候。
修订历史一般包含:版本号,修订日期,修订者,修订内容,审核人
2. 项目概述
2.1 项目背景
简单阐述需求来源,为什么要做这个产品或功能。
比如来自于用户反馈、客户要求、或者公司战略等。
2.2 专业名词定义
文档里涉及到的一些专业术语和字母缩写,提前在这里统一介绍,方便阅读人后续理解。
如:
CP:Content Provider,内容供应商
T-BOX:Telematics box,车载通信盒子
2.3 场景案例
需求其实是用户场景的抽象表达。在正式描述需求前,先说明一下这个需求的具体场景,也就是用户/客户会怎么使用。
场景一:.......
场景二:.......
2.4 预期效果目标
这部分可以从两个方面来阐述,一个是用户层面,另一个是数据层面。
用户层面指的是,这个产品/功能上线后,用户可以 比如对收藏的歌单进行排序操作;
数据层面指的是,DAU、MAU、ARPU、页面转化率等指标数据。
2.5 产品框架
适用于相对复杂一些的产品或功能模块。这里只需要站在产品的角度,把涉及到的各个前后台功能模块之间的关系梳理清楚即可。也可以叫产品架构。
2.6 总体流程
这个部分有的话就写,没有的话也可以省略。
如果流程已经被分解到各子模块当中了,就不需要硬拼出一个总体流程。
2.7 本期功能范围
如果是比较复杂的产品和功能,一般会分几期来实现。在这里列出这一期要做的功能模块。
通常用表格的形式来描述,表头包括:
子模块,功能定义,详细描述,优先级,对应的需求号
2.8 应用入口说明
描述该应用或功能的入口有几个,分别在哪里。
3. 功能说明
3.1 功能模块1
可以简单放一个线框图在这里,帮助理解。
3.2 业务规则
3.2.1 显示规则
XXXXXX
3.2.2 逻辑规则
XXXXXX
3.2.3 异常处理
异常处理指的是当发生一些异常情况时,产品的处理逻辑。比如:
网络异常时的显示内容;
数据返回失败时的显示内容;
请求超时后的处理方式;
.........
3.2.4 流程图
3.2.5 相关功能说明
该产品或功能涉及的终端,比如 平台、App、小程序等;
该产品或功能依赖的其他功能模块说明;
4. 数据埋点
只要是涉及到前端页面的功能,PRD里都应该包含相应的埋点需求。
一般前端开发通过自有或三方埋点工具来实现埋点需求,产品经理要做的就是告诉开发同学在什么地方,增加一个名称叫什么的埋点信息。
没有必要在页面上所有地方都做埋点,这是对资源的浪费。产品经理应该根据后续要跟踪的核心数据来决定需要在哪些地方做埋点。
5. 文案说明
如果是ToC类的产品,最终展示给用户的文案也很重要。
这部分可以在后期补充进来。
6. 接口文档
接口文档一般是PRD评审通过后进入开发,由开发同学输出的一份文档。
可以在PRD里放上接口文档的链接,相关人员配合一起看。
7. 非功能性说明
非功能性需求,是指软件产品为满足用户业务需求而必须具备的除功能需求以外的特性。
包括安全性、可靠性、互操作性、健壮性、稳定性等。
7.1 性能
比如产品/功能/页面的打开速度、资源加载时间等,以及每个功能对系统资源消耗的目标(CPU/RAM/Memory等)
7.2 数据生命周期
数据的存储是有成本的,为了防止服务器冗余数据过多,需要产品经理定义各数据在服务器存储的有效期限。
最后,说一下关于文档命名里版本号的问题。
一般版本号为两位,比如XXXX产品PRD_v1.2。在首次PRD评审通过前,版本号都是v0.X,评审通过后,版本号升级为v1.X。后续当有主架构或主流程调整时,升级第一位版本号,其他小的功能调整升级第二位版本号即可。