Skip to content

Latest commit

 

History

History
148 lines (92 loc) · 10 KB

DPR-StorySplitting.md

File metadata and controls

148 lines (92 loc) · 10 KB
Scope Phases Roles Input Output Abstraction/Refinement Level
Entire system or subsystems (contexts)
Elaboration, any iteration
Project managers, agile team members, architects
Epic or large user story
Set of smaller user stories, domain model updates
n/a (requirements)

Activity/Technique: Story Splitting

Context

A User Story that is too large for a sprint must be broken down to meet the INVEST properties (established by Bill Wake):

  • Independent: Stories should not overlap conceptually and not dictate any particular implementation order.
  • Negotiable: Stories are supposed to be "co-created by the customer and programmer during development. A good story captures the essence, not the detail."
  • Valuable: Each story must be valuable to the customer on its own.
  • Estimable: The level of detail should be "just enough to help the customer rank and schedule the story's implementation."
  • Small: "Stories typically represent at most a few person-weeks worth of work." Some teams size their stories in such a way that they can be implemented in a single iteration.
  • Testable: Customer and developers should understand a story well enough so that a test for it can be written --- or is written first, as in Behavior- and Test-Driven Development (BDD, TDD).1

Several INVESTment practices and techniques exist; one of them is story splitting.

Goal and Purpose (When to Use and When not to Use)

As an agile practitioner with requirements analysis and/or project planning responsibilities, I want to split user stories to make stories and their implementation easier to plan and execute.

Switching to a different set of stakeholder concerns and viewpoint, the same practice can be used to identify candidate components in architecture design:

As an application architect, I would like to split user stories to identify candidate components and API endpoints.

Many (but not all) splitting patterns and techniques are equally suited for this second, extended use of the practice.

Instructions (Synopsis, Definition)

Splitting patterns. Richard Lawrence describes nine splitting patterns in "Patterns for Splitting User Stories", including:

  • Data entry methods, for instance multiple actors/users and/or technical channels (Web, mobile app and so on)
  • Workflow step, from process initiation to processing activities (possibly in parallel) and data manipulations to process termination
  • Business rule variations: domain decisions to be made at runtime, conditions, and constraint checking
  • Data variations: is-a relations, categorizations and classifications, domain partitioning
  • Operations completion: create, read, update (full, partial), delete; search, find, archive; undo (compensation)
  • Investigation vs. implementation architectural spike vs. full implementation
  • Major effort
  • Simple/complex
  • Defer performance

Story Splitting Patterns by Richard Lawrence

Component identification. Each data entry split, for instance, suggests at least one presentation layer component (as a candidate).

Complex workflows call for explicit state management, to be designed architecturally and assigned as a responsibility to one or more components.

Each business rule has to be implemented and enforced somewhere (see below for a discussion of the term in this context).

Data variations and operations find their place in the Domain Model as well as the data access/data source and persistence layer of the application system under construction.

The remaining patterns are useful for planning iterations, but less relevant for component identification and architecture design (unlike their output, which might yield additional candidate components).

Other splitting criteria. Bill Wake suggested "Twenty Ways to Split Stories". Mike Cohn proposed five techniques under the moniker SPIDR, explained in this blog post by Katharina Lattenkamp: "Spikes, Paths, Interfaces, Data, Rules".

Example(s)

Let us assume this top-level story (a.k.a. epic) from a telecommunications order management scenario:

"As a Virtual Service Provider (VSP) and client 
of the PSTN (Public Switched Telephone Network) provider 'T', 
I would like to create telephony orders 
on behalf of my end customers rapidly and reliably 
so that they are satisfied and stay with me rather than switch to T or another VSP."

Applying the splitting patterns may yield a result like this:

Story Splitting at "T" (by Pattern)

The workflow steps and the business rules call for components in the business logic layer; data entry via Web browser and API requires different presentation layer capabilities.

Benefits vs. Effort (Expected Benefits, Skill Levels)

Story splitting is a very light technique. A single application of it (one pattern applied to one story) will only take a few moments. It does not require any particular, specialized skills; its positive effects should become apparent immediately: more actionable backlog items, more expressive, problem- and/or domain-specific architecture models (Component Diagrams in particular).

A very welcome effect of story splitting is that it often leads to new questions to the domain experts and sparks interesting conversations with them (for instance, about workflow steps and data variations). Hence, the Domain Model is likely to be updated as well.

Hints and Pitfalls to Avoid

One should not get carried away by dreaming up data entry and data variations, business rules nobody has asked for, and so on.

Origins and Signs of Use

The Wayback Machine (a.k.a. Internet Archive) keeps early posts about story splitting here and here.

Signs of use are difficult to call out for this activity. Backlog size and structure might indicate use.

Related Content

Performing Roles and Related Artifacts (Synopsis)

Roles:

Artifacts:

Practices and Techniques (Refinements, Guides)

Story splitting is complemented by SMART NFR Elicitation and input to Architecture Modeling. Story splitting also can be followed or accompanied by Tactic DDD.

Event storming can either trigger story capturing and splitting, or be performed when following business events and workflow steps.

Story Mapping and Example Mapping are two related, complementary practices. Split stories can be mapped more easily than larger ones. More specifically, splitting by workflow step is straightforward to use when populating the horizontal dimension in story maps; the other patterns all fit the vertical "details" dimension. Example mapping also talks about business rules, in the sense of a constraint that must be met. Any story can serve as input; the broader and complex it is, the longer and more intense clarification discussions will results. The more specific and simple a story is, the easier it will be to find the acceptance criteria for it.

More Information

The Agile Glossary has an entry for Story Splitting.

Agile for All provides a Cheat Sheet that summarizes the patterns.

Tony Heap, a business analyst, puts the splitting steps in a logical order and also touches upon API design.

Data Provenance

title: "Design Practice Repository (DPR): Practice/Technique Story Splitting"
author: Olaf Zimmermann (ZIO)
date: "04, 21, 2021"
copyright: Copyright 2020-2021 Olaf Zimmermann. All rights reserved.
license: Creative Commons Attribution 4.0 International License

Footnotes

  1. See this blog post for a collection of these two and many more "driven" methods.