DiUS is betting big on this "Agile" wave. We believe it is the way of the future. So much so, we are beginning to think people need to stop using Physical Storywalls and to start using Electronic versions.
So your task is to implement a Digital Storywall.
- Projects can be created
- A project has a number of iterations
- Iterations have a number of stories
- Stories have points and a description
- Stories belong to a Swimlane, so 'Ready for Dev', 'In Dev', 'Code Review', 'QA', 'Done'
- Stories can move forwards and backwards between Swimlanes. But only one at a time, so from 'Ready for Dev' to 'In Dev' to 'Code Review'
- When stories enter and exit Swimlanes, the date and time this happens is recorded
- An iteration's total points can be reported
- An iteration's total 'Done' points can be reported
- A project's total 'Done' points can be reported
- A project's total points can be reported
- If an iteration is closed, no more stories can be added to it
- Give thought into how you can make the Swimlanes flexible so you can easily add and remove them
Here is a sample interface in Java
Project project = new Project();
Iteration iterationOne = new Iteration();
project.addIteration(iterationOne);
Story createUser = new Story("Create a user", 8);
iterationOne.add(createUser);
iterationOne.getTotalPoints();
createUser.moveToSwimlane(InDev);
Notes on implementation:
- use Java, Javascript, Groovy, Scala, Ruby or C#
- try not to spend more than 2 hours maximum. (We don't want you to lose a weekend over this!)
- don't build guis, a command line interface etc, we're more interested in your approach to solving the given task, not how shiny it looks.
- don't use any frameworks (rails, spring etc), or any external jars/gems (unless it's for testing..)
- do not change the interface
When you've finished, zip up the solution and send it to [email protected]. Happy coding :)