|
Apr
26 |
Topic: Agile Coaching
Last year I was involved in rescuing the delivery of an Educational Loan Servicing system for a couple of state education departments (the trials and tribulations in another blog). Like a number of projects in the Financial, Insurance, and Investment Banking industry, this project involved a significant number of back-end batch processes. There were a few problems that the teams faced when attempting to discover the stories:
Let’s tackle these two separately.
Determining ActorsA number of people think of users solely as people. The problem with equating users with people is that the resulting stories are often too big to fit in an iteration and are better classified as epics. The problem of decomposing epics into smaller stories that are defined from a user’s (person) perspective and that provide business value frequently gets teams wrapped around the axle. The trick is to realize that it is OK to have users who are not people. We can use the RUP concept of an actor to our advantage here. An “actor” is anything with behavior, including the System Under Discussion (SuD) when it calls upon the services of other systems. Actors are roles played not only by people, but by organizations, software, and machines. — Craig Larman Craig differentiates between three types of actors:
Actors can be identified by asking questions like:
Identifying the actors and determining their goals allows us to better decompose the stories. Defining StoriesThe loan servicing system involved the creation, transformation, and transfer of a number of file types. These file types had multiple record types within them. The data was exchanged between schools, loan providers, loan guarantors, loan servicers, endorsers, and employers not to mention the students and their parents. These files were often batched for processing, though the desire was to move to “real-time” processing sometime in the future. The team initially created stories for each step of the loan origination process, like so:
The way the team approached the work caused a number of issues:
A better approach would have been to decompose the epics in a manner that ensured that the resulting stories would adhere to the INVEST criteria (Independent, Negotiable, Valuable, Estimable, Sized appropriately, Testable). Split by File TypeFor example, an epic like “As a loan originator, I want to receive a correctly formatted Stafford Loan application so that I can process the loan request.” could be decomposed by the types of files that contain the loan information:
The backlog would have similar stories for creating other types of Loans: Federal Parent Loan for Undergraduate Student (PLUS loans), GRAD-PLUS loans, etc. Split by Type of Information within the FileThe stories mentioned above are too big to process in an iteration and need to be split further. An option is to do this by the type of formatting of the records in the file.
The backlog would have similar stories for creating Stafford Loans from other file types: CL5, CRC, CAM. Split by Data FiltersDifferent Actors have different expectations of what data (transactions) is in the file. Some want data for the past week, some for the past 24 hours, some from specific sources, etc. To account for this, we can split based on time periods selected.
Split by SchedulingStories can be created based on schedules. For example, real-time processing versus end-of-day processing.
“Post-Office” stories that deal with routing and file transfers could be another batch of stories. Order of StoriesEven with this splitting-up of stories it is critical that the team select stories wisely. Remember that you want to: deliver quick increments of value and exercise the system end-to-end as soon as possible. Stories selected should attempt to build threads through the system; don’t tackle all the file generation stories, then all the validation stories, then all the dissemination stories. Instead, choose a file type and record type and try to build that one through. Don’t worry about alternatives initially; just get the happy-path done quickly. Implement the alternate paths next to make the functionality robust. What Not to DoDo not split along process lines.
This doesn’t work very well as none of the five items produces value by themselves. Don’t split across architectural lines either.
The items by themselves don’t provide value and like waterfall projects, integration is pushed to the end instead of attempting it earlier. Helpful Tools and Additional InformationIrrespective of how the stories were created, the teams in this case very quickly realized that use of a tool like Fitnesse was crucial. It allowed the teams to mock up files and records that they could develop against and use for automated functional testing.
Good places to get additional information are Craig Larman’s, “Applying UML and Patterns” for a discussion on actors and their goals and Mike Cohn’s, “User Stories Applied” for guidance on writing good user stories. Fitnesse related information can be obtained from Rick Mugridge and Ward Cunningham’s “Fit for Developing Software: Framework for Integrated Tests” and from http://www.fitnesse.org/ and http://fitnesse.info/start.
Trackback URL: http://www.bigvisible.com/asingh/determining-actors-and-defining-back-end-stories/trackback/
|
||||||
Alex – just wanted to say thank you for this nice diversion on stories with some useful examples. I don’t find enough “real examples” of using User Stories in the community and I appreciate your efforts!
It would be nice to see a detailed follow-up on acceptance test(s) definition in this same context


