that is really a generator of UserStories
. For example:
- The product will load-balance many servers.
- All communications between these servers will be crypto-secured.
- The bridges will all feed the log-server.
- The product will be easy to use
- Availability will be 99.98% (one well known company in financial information systems always specifies this number since TomGilb came by but nobody is quite sure exactly what it means, so it's still a MotherhoodStory until that's explained)
The strength of this idea is that MotherhoodStory
s are invaluable clues to real (hard) requirements - which in XP are UserStories
. The name seems to capture this nicely.
I am faced with a few MotherhoodStory
s on my current project. Can anyone give more detail on how these might be broken down into 3-week UserStory
s? In particular, some appear at first glance to be atomic MotherhoodStory
's -- the product won't really be 'deliverable' until the entire story is complete.
Particulars: We are building a distributed filesystem, with real-time constraints driven by a few key applications. Thus, as per the above example, The product will load-balance many servers
is one story. Another is Client application X will be able to play media at aggregate bandwidth Y from the filesystem
. Finally the rather large The filesystem will support the full set of filesystem APIs on platforms A, B, and C
To be fair, the filesystem API story is relatively easy to break down -- there are nicely separable features of the filesystem. So this one just has the atomic MotherhoodStory
But the Client X aggregate bandwidth Y
story is almost a FunctionalTest
specification. How do I get estimable UserStory
s out of this?
Any guidance in the OneTrueWayOfXp?
is greatly appreciated.
Sure. Just play the XpFixedPlanningGame
OK, here is an idea. You can split the bandwidth story at least in two:
- Client X can play media.
- Client X can do so at aggregate bandwidth Y.
The first one is a pretty standard UserStory
. The second one is at least testable. It can be split further like so:
- Aggregate bandwidth is at least Y/10
- Aggregate bandwidth is at least Y/5
- Aggregate bandwidth is at least Y/2
- Aggregate bandwidth is at least Y
I think the point is that each increase in bandwidth should be a rather minor optimization. [Disclaimer: I don't know where I'm talking about.]