Let us first define what we mean by Quality. Atern recognises that there are two elements to quality.
* Solution Quality – the solution delivers customer satisfaction. It meets the business need, and meets standards set for it at an acceptable level of maintainability.
* Process Quality – the organisational standards of quality, which may range from informal guidelines to ISO or CMMI processes and procedures.
Atern addresses both elements.
I have heard it mentioned on traditional projects that delivering the entire scope is an essential measure of quality. This is generally because traditional requirements specifications do not prioritise the requirements – it is a set. The Atern approach is to fix the project time (and therefore cost) and vary the features to be delivered in order to meet the end-date specified. Even on those projects where the user says “I don’t care when you deliver it, just give me everything I want” there is scope to deliver early by prioritising the MUST Have features. The business should therefore be prepared to accept a fit-for-purpose solution, rather than one which delivered everything requested but late and over-budget.
What is needed is to define early on (during the Foundations phase at the latest) the level of quality desired in terms of acceptance criteria for the solution as a whole. A key measure is maintainability – Is this a short-term tactical solution, do we need to deliver first and re-engineer later, or must the solution be fully-supported from day one? The answer to this question will drive the approach taken to the entire project and the acceptance criteria for all requirements. The risks inherent in this decision must be understood and managed.
Defining acceptance criteria for each requirement (user story) is essential to drive development of the solution towards the business need. Rigorous and repeatable testing ensures that the team can prove that the acceptance criteria have been met, right up until the day of final deployment.
Other practices and techniques that Atern uses to ensure a quality solution is delivered are:
* MoSCoW prioritisation – keeps the team focused on the important features
* Timeboxing – on-time delivery of each timebox ensures on-time delivery of the project as a whole
* Facilitated workshops – ensure workshops meet their objectives
* Modelling and prototyping – ensuring understanding of the requirements and the solution
* Demonstrations at the end of each timebox – provide confidence that the solution is evolving to the user’s satisfaction
* Regular review sessions at key points – the ‘inspect and adapt’ so essential to ongoing improvement
* Daily stand-ups – ensuring progress is measurable, the team are focussed on priorities and problems are identified early
* Defined roles and responsibilities – ensure the right people are involved at the right times in the right activities.
* The Foundations phase itself – ensures that sufficient up-front thinking has been undertaken to ensure that no big, expensive mistakes are made.
Some of you may notice that some of these are unique to DSDM Atern.
Atern has been recognised as an appropriate approach for ISO 9001 accreditation and is used in organisations wishing to combine agility with achieving CMMI level 3 and above. My own organisation is targeting CMMI Level 3 next year. Atern provides a documented lifecycle and practices which are completely in line with CMMI processes.
Key to implementing this effectively, though, is minimising the overhead and bureaucracy. All activities must contribute some benefit towards the end results.
The Atern lifecycle and its iterative structure provides a perfect framework for the introduction of Gateway or Checkpoint Reviews during which key questions can be asked of the project team with stakeholders providing assurance to the governors that the project is proceeding correctly. An iterative approach also provides an opportunity to measure progress objectively, something a traditional waterfall approach does not.
In summary, the fundamental principle of quality within Atern is to define up-front the level of quality desired, then engineer it into the deliverables; don’t try to bolt it on afterwards.