Mockups and simulated data can be a boon in Agile development. Mockups help eliminate dependencies within teams and help with faster development.
Mockup is a practice of using a dummy or placeholder object temporarily that replicates the functionality of what a real object will eventually achieve. Simulated data is hard coded data that can be read from flat files or returned from interfaces until the actual data is available.
Let me take few scenarios and show how Mockups can help in Agile development.
Scenario 1:
Quality Assurance (QA) engineers in a Scrum Team are looking to automate integration tests for the new feature being developed in iteration. However the new feature will only be complete by the end of the iteration and that leaves very little time for QA to develop their tests. The QA and Dev engineers decide at the planning meeting about defining all mockup interfaces in the first few days of the iteration. This will give a head start for the QA engineers to write their integration tests while the actual implementation is still underway.
This is the example of how Mockup interface might look:
Ref: “Ship It, A Practical Guide to Successful Software Projects”
Bool Login(string username, string password){
return true;
}
QA can start using the above interface to write their integration tests. At some point in the iteration, as decided in the planning meeting, development will actually implement the function and it might look something like this
Bool Login(string username, string password){
Bool login = false;
String realpassword = getpassword(username);
If (realpassword.equal(password)){
login = true;
}
return login;
}
For QA the actual implementation of the above interface by development does not cause any changes to the automated test. Thus mockups can help QA and development to do parallel development in Agile development.
Scenario 2:
Consider 5 global scrum teams, working on different layers of the product, trying to build a common end to end use case in a given iteration. This would normally result in various dependencies between teams trying to achieve the final use case. One way to resolve these dependencies are to make these layers talk to each other. Have these teams get together early in the iteration and pre-define the mockup interfaces just as in the previous example. This will allow each team to work on their piece of functionality independently. In this scenario, if for some reason a scrum team is unable to do actual implementation of the mocked interface, it will not cause major disruptions to other teams.
Scenario 3:
A Product Manager is interested in seeing what the final product might look like. Based on the current velocity, the scrum team is at least 5 iterations away before the final UI is ready. Using Mockups and Simulated data the scrum teams can quickly put a UI together, that would help give the Product Manager a bird's eye view of what the product might look in advance. This will also help the scrum teams get some early feedback and ensure that the use case is aligned with the Product Manager's vision.
Our teams use Mockups and Simulated data with Agile development and we were able to reduce intra-team and inter-team dependencies and do fast track development.
I would be interested to hear other strategies….