颗粒度从大至小:Epic > Feature > Theme > User Story > Task > Sub-task
史诗 Epic:又称为【能力 Capability】
- 一个史诗可以是一个跨越多个迭代的大型用户故事(也可以包括多个用户故事)。这样的史诗将具有最粗颗粒度的估算(本身就很大,不能轻易分解成短篇故事的故事,较低的估算准确性),但是对于发布计划是有用的。为了完成迭代计划的目的,史诗将要被分解成颗粒度更小的故事。
范例:
- 史诗#1:作为一个图书馆用户,我应该能够搜索和借书。
- 史诗#2:作为一名图书馆管理员,我应该能够创建关于图书、借阅人和待处理请求的报告。
特征 Feature:
- 代表业务所需的高级功能。与史诗相似,特性也需要被分解成更易于管理的故事,比如可以跨越多个迭代交付的故事。有时,以产品为基础的公司可以查看功能或这些功能的集合,这些功能可以单独捆绑、运输和销售给客户
范例:
- 特征#1:允许一个用户一次借阅不超过两本书,最多保留3周。
- 特征#2:如果书没有在到期日归还,将被罚款。
- 在层次结构方面,没有规定史诗或特征是否存在父子级别,所以这两种变体都是常见的。
主题 Theme:
- 一组相关的用户故事,它们被组合在一起以评估迭代计划或发布计划,或者财务预算。主题可以基于虚拟角色(用户类型)或一些非功能性需求,如可用性、移动性、性能和可扩展性。
用户故事 User Story:
- 在迭代计划中,用户故事被用作估算、计划和实现的最小单元。
- 注意:故事只能属于一个主题
- 注意:没有所谓:“子故事”,只有“子任务”
范例:
- 故事#1:作为一个图书馆用户,我应该能够通过书的名字或它的作者搜索书籍。
- 故事#2:作为一个图书馆用户,我应该能够浏览搜索结果中的图书列表,并能够通过点击它们找到更多的细节。
- 故事#3:因为我的名下里只有不到两本书,当我点击“借”按钮时,我应该能够预订这本书并通过电子邮件得到确认。
- 故事#4:因为我借了一本书,两周过去了,当我希望在到期前3天收到图书馆的提醒,这样我就可以还书或申请续借延期。
任务 Task:
为了实现故事,开发人员必须做的所有事情都被称为任务。任务可以是一些技术性的工作,比如在数据库上创建表、构建小部件或菜单项、解析传入的XML文件、在按下一个按钮时添加业务逻辑或通过消息队列连接两个系统。