Projects get executed in stages, according to the Stage Delivery Model followed by System Canada.

Each Stage starts with Detailed Design. The entire team decides on Class Structure/File List/ Data access etc. for that Stage. It also identifies specific QA role and points of hand-over..

Programming starts on the lines of design, according to coding discipline decisions already taken. Regular code reviews and walk-throughs ensure excellence in quality. Each Stage is required to have a minimum of 2 code reviews.

Programmers are required to unit-test their code. The team might decide to have an active QA role (with parallel, live testing) or a post-development testing strategy (with intermittent releases). On principle, each Stage's bugs are removed as soon as they are found. Defect removal and defect occurrence statistics are maintained and circulated.

The QA Lead declares Stage Closure when Acceptance for that Stage has been reached.

The Stage closes with a Post-mortem. This meeting is meant to identify issues, deviations, potential problems and study impact on subsequent stages. It also throws light on new aspects of the project, being unraveled as Stages progress.