Exercise 3-7: The Unfinished Solution
This is such a common scenario that I had to include it as one of the exercises. The real problem here is that you do not really know what you are starting with, and the customer has already gone through explaining what he wants and does not want to go through the whole thing again. Stories: Validate existing code Allow user to enter message Allow user to add tags to message Send message to each contact in list Customize e-mail message for each contact based on tags in profile and e-mail message Tasks for Story 1: Validate Existing Code |
---|
Task | Estimated Time |
---|
Skim through existing code to understand classes | 20 minutes | Write tests to validate any theories about how the code works | 30 minutes | Check into source control and integrate with existing system | 5 minutes | Tasks for Story 2: Allow User to Enter Message |
---|
Task | Estimated Time |
---|
Test to disallow a blank e-mail | 10 minutes | Test to validate correct processing of non character input to the message | 20 minutes | Test for a message of maximum length (string length?) | 10 minutes | Code to pass tests | 20 minutes | User interface to allow user to type the message | 10 minutes | Connect code to user interface | 10 minutes | Check into source control and integrate with existing system | 5 minutes | Tasks for Story 3: Allow User to Add Tags to Message |
---|
Task | Estimated Time |
---|
Test that a tag in any profile can be added to the message | 15 minutes | Test that a tag that doesn't exist in any profile cannot exist in a message | 10 minutes | Test that a message can contain no tags | 15 minutes | Test that a message can contain only tagged input | 15 minutes | Code to pass tests | 20 minutes | User interface to allow user to select a tag for input | 10 minutes | Connect code to user interface | 10 minutes | Check into source control and integrate with existing system | 5 minutes | Tasks for Story 4: Send Message to Each Contact in List |
---|
Task | Estimated Time |
---|
Test that each contact in the list is sent the message | 10 minutes | Test when the contact list is empty | 10 minutes | Test when the contact list contains a maximum number of contacts (have to autogenerate contacts) | 15 minutes | Test when message is empty | 10 minutes | Code to pass tests | 20 minutes | User interface to allow user to send message (button?) | 10 minutes | Connect code to user interface | 10 minutes | Check into source control and integrate with existing system | 5 minutes | Tasks for Story 5: Customize E-mail Message for Each Contact Based on Tags in Profile and E-mail Message |
---|
Task | Estimated Time |
---|
Test that a profile with no tags is not sent a message containing only tags | 10 minutes | Test that a profile with all the tags receives the correct message | 10 minutes | Test that a known (hard-coded) profile receives the correct message from a hard-coded tagged message | 15 minutes | Test when message is empty | 10 minutes | Code to pass tests | 20 minutes | Integrate code with user interface from story 4 | 10 minutes | Check into source control and integrate with existing system | 5 minutes | |