Being able to deliver potentially shippable software increments at the end of each iteration is a good start that clearly requires discipline. The Disciplined Agile Delivery (DAD) process framework goes one step further and advises you to explicitly produce a potentially consumable solution every iteration, something that requires even greater discipline. Every construction iteration which your team executes requires the discipline to address:
- Working software that is “done”. Your software should be tested to the best of your ability. Ideally this includes pre-production integration testing and acceptance testing of the functionality delivered to date. The software should not only fulfill the functional requirements but appropriate non-functional requirements (NFRs) as well. Some of this testing may require the help of an independent test team, particularly at scale.
- Continuous documentation. Deliverable documentation, such as operations and support, system overview, and end user documentation are part of your overall solution. Evolving this documentation in sync with the software requires greater discipline than simply leaving this documentation to the end of the lifecycle.
- Consumability. Your solution should be more than potentially shippable, it should also be consumable. This requires investing some effort in user experience (UX) design throughout the lifecycle, particularly early in the project.
- Organizational change. The business processes around using your system, and potentially even the organizational structure of the stakeholders involved with it, may need to evolve. The implication is that your team needs the discipline to recognize and explore these issues throughout the project so that your stakeholders are prepared to receive your solution.
- Operations and support issues. Your solution should be consumable by all stakeholders, not just end users. Your operations and support staff should be able to work with the solution efficiently. To understand these needs your team needs the discipline to work closely with operations and support staff throughout the lifecycle, an important aspect of your overall DevOps strategy.