更新时间:2024-10-31 GMT+08:00

Scrum项目需求管理流程介绍

Scrum是增量迭代式的软件开发方法,也是当前主流的敏捷开发过程。通过迭代冲刺的方式,持续交付,从用户需求到用户反馈实现各个迭代闭环的软件开发过程。

Scrum项目类型中,预置了敏捷实践中推荐的Epic > Feature > Story > Task的四层模型,如图1所示。

图1 Scrum项目需求分解模型

Scrum项目使用的工作项类型介绍如表 Scrum项目工作项说明所示。

表1 Scrum项目工作项说明

工作项类型

说明

举例

Epic(战略举措)

  • 通常翻译为史诗,指公司的关键战略举措,可以是重大的业务方向,也可以是重大的技术演进。

    企业通过对Epic的发现、定义、投资、管理和落地达成,使得企业的战略投资主题得以落地,并获得相应的市场地位和回报。

  • Epic的粒度比较大,需要分解为Feature,并通过Feature继续分解细化为Story来完成最终的开发和交付。
  • Epic通常持续数月(months),需要多个迭代才能完成最终的交付。

    Epic应该对所有研发人员可见,这样可以让研发人员了解交付的Story承载怎样的战略举措,让研发人员能更好的理解其工作的价值。

Epic通常和公司的经营、竞争力、市场环境紧密相关,举例如下:
  • 市场差异化:用户体验全面超越竞争对手。
  • 更好的解决方案:新增支持工业互联网的解决方案。
  • 增加收入:产品需要在下个财季增加100万付费用户。
  • 重大技术方向:产品需要全部切换为容器。

Feature(特性)

  • 通常翻译为特性,代表可以给客户带来价值的产品功能或特性。
  • Feature向上承接Epic,向下分解为Story。

    相比Epic,Feature更具体形象,客户可以直接感知,通常在产品发布时作为ReleaseNotes的一部分发布给客户。

  • Feature通常持续数个星期(weeks),需要多个迭代完成交付。

Feature应该对客户都有实际的价值,特性的描述通常需要说明对客户的价值,与产品的形态、交付模式有关,举例如下:

推荐模板:作为<用户角色> …我想要<结果>… 以便于<目的>
  • 用户A希望提供导入、导出功能,以便于用户批量整理数据,更高效。
  • 用户B希望提供超期的通知,以便于用户及时处理任务。
  • 用户C希望优化鼠标拖动的体验,以便于让用户操作更快。
  • 用户D希望增加昵称功能,让用户更个性化。

Story(用户故事)

  • 通常翻译为用户故事,User Story的简称。是从用户角度对产品需求的详细描述,更小粒度的功能。

    Story承接Feature,并放入有优先级的backlog中,持续规划、滚动调整优先级,始终让高优先级的Story更早的交付给客户。

    Story应遵循如下的INVEST原则:
    • Independent:每个用户故事应该是独立的,可独立交付给客户。
    • Negotiable:不必非常明确的阐述功能,细节应带到开发阶段跟程序员、客户来共同商议。
    • Valuable:对客户有价值。
    • Estimable: 能估计出工作量。
    • Small:要小一点,但不是越小越好,至少在一个迭代中能完成。
    • Testable:可测试。
  • Story通常持续数天(days),并应在一个迭代内完成交付。
  • Story的工作量估计可以使用人时、人天,也可以使用敏捷推荐的故事点。
    • 故事点英文名称Story Point,故事点是一种基于敏捷的估算工作量的方法。

      故事点综合了交付Story所要付出的努力、开发复杂度、风险,可以简单理解为开发所需要的成本。

    • 斐波那契数列(1,1,2,3,5,8...)是故事点比较常用的计量单位,是一种相对估算法。

      如3个故事点的Story的工作量是1个故事点的Story的3倍。

    • 目前默认提供的用户故事点是斐波那契数列。

Story符合INVEST原则,举例如下:

推荐模板:作为<用户角色>…我想要<结果>…以便于<目的>
  • 作为项目经理,希望通过过滤处理人,以便于快速查询指定人的需求。
  • 作为开发人员,希望将无用的信息进行折叠,以便于减少视觉干扰。
  • 作为测试人员,希望将测试用例和需求关联,以便于跟踪需求的验证。

Task(任务)

在迭代计划会议中,将纳入迭代的Story指派给具体成员,并分解成一个或多个Task,填写“预计工时”

Task通常为过程性的工作,举例如下:

  • 开发人员A需要在今天准备好类生产环境。
  • 开发人员B需要在本周内完成项目组的权限设定。
  • 开发人员C需要进行代码Review。

Bug(缺陷)

  • 软件特性和功能在测试验证阶段发现的问题,通过Bug单独创建、管理和跟踪,Bug通常包括不同的优先级。
  • Bug可以单独创建和跟踪。

    也可以在验证某个Story时创建,这时创建的Bug属于Story的子工作项,这样便于了解每个Story发现了多少个缺陷。

  • Bug的描述应该尽可能描述详细,包括但不限于:
    • 缺陷现象描述。建议从用户视角描述。
    • 错误码。错误码可以辅助分析定位代码问题。
    • 环境信息,是开发环境,测试环境还是现网环境。
    • 软件栈信息,包括对应的操作系统及其版本,数据库及其版本等等。
    • 缺陷是否可以复现,复现的步骤。

缺陷描述模板举例:

【故障现象描述】

【F12查看错误码】

【环境信息】

【故障复现步骤】

【故障现场定位开发人员】

【开发定位初步原因】

【Chrome抓取报文】