When the project comes to a close, it is often a good idea to have the team finalize and deliver the software that is build during the project. The agile process Smart defines an iteration type called Finalize
to allow team to do so. Iterations that are branded as Finalize
are very similar to iterations types Realize
, and equally apply Smart's product life cycle.
The main difference between the two is that during Finalize
iterations no new requirements or smart use cases are added to the backlog, but rather act on the remaining smart use cases on the backlog. This means that during the Plan
workshop, the customer gets to choose from the existing requirements. Although having a Finalize
iteration sounds contra-agile, it is actually a good practice for stabilizing the software. Moreover, we've noticed that agile teams feel more compfortable having just this little bit of slack at the end of a project. Most project have either zero or one Finalize
- Smart iteration cycle. Each iteration in a Smart project follows the same pragmatic iteration cycle to deliver products.
stage is executed using consecutive iterations. Finalize
serves two discrete goals:
- Stabilize. The first Finalize iteration is comparable with a regular Realize iteration. It is used to stabilize the software that is built, solve the last bugs and prepare the software for final deployment. However, Finalize iterations differ from Realize iteration in that no new smart use cases will be prioritized and implemented. Only existing smart use cases will be finalized (hence the name of this stage).
- Round up. Secondly, Finalize iterations are there to ensure that the software is available for its end users. This includes the preparation for final release or roll out and setting up user education, if so required. At this point in the lifecycle, user feedback should focus mainly on configuring and installing. By the end of the Finalize stage the lifecycle objectives should have been met and the project should be in a position to be closed out. In some cases, the end of the current life cycle may coincide with the start of another lifecycle on the same product, leading to the next generation or version of the product. For other projects, the end of the Finalize stage may coincide with a complete delivery of the artifacts to a third party who may be responsible for the Manage stage.
We advice to deliver the following products during the Finalize
- Integration test. Use the Finalize iteration(s) to perform the final integration test, and get it accepted by the customer.
- Training. Prepare training material for the different types of end users (actors in most cases). Remember not to forget (semin)internal roles such as application maintenance. Organize the first training sessions just prior or during production.
- Rollout. Roll-out to the business (eg. marketing, distribution and sales forces)
- Retrospective. Assessment of the deployment baselines against the complete vision and the acceptance criteria for the product
- Re-estimate. Perform a re-estimate to build historical (reference) data for future use
- Collect reusables. Collect candidate reusables/best practices such as : plans, guidelines, working agreements, technical compontents.
- Project Referene. Create a project reference.
- Archiving. Archive the deliverables.
- Celebrate. Celebrate the succesfull project. Celebrate with customers.