DSDM practice - Iterative Development Flashcards
What is Iterative Development?
Iterative development is a process in which the Evolving Solution, or a part of it, evolves from a high-level concept to something with acknowledged business value.
Each cycle of the process is intended to bring the part of the solution being worked on closer to completion and is always a collaborative process, typically involving two or more members of the Solution Development Team
What are the characteristics of an Iterative Development cycle?
- should be as short as possible
- be only as formal as necessary (eg discuss vs document)
- involve the right members of the SDT
What does each Iterative Dev cycle begin and end with?
A conversation (collaborate and communicate). It can include a demonstration of what has been delivered or be a show and tell session
What is an Iterative Development strategy defined?
During Foundations
In order to plan Iterative Dev in manageable chunks DSDM recommends…
- Requirement focus: Functional, usability, non-functional. Not all need to be considered in the same cycle
- Solution focus: focuses on the architectural solution layers such as Business Process, UI, Business Logic & Data Access
What are the three Solution Focused approaches for planned iterative development?
Horizontal approach: delivers an architectural solution layer per timebox. Advantage of this is that parts of the solution can be witnessed early
Vertical approach: parts of a functioning solution can be delivered early, but the full breath of the project may not be clear until late in the project
Combined approach: advantages are that there is an initial view of the overall solution early in the project, and incremental delivery of business value into live use is also achieved.
How do you control iterative Development?
An incremental change may reveal that the solution has evolved in a way that is not right. Under such circumstances it is important, wherever possible, to have the option to revert to the previously agreed version and undertake another cycle based on what has been learnt and on any new insight arising from the review. Configuration Management of the solution is therefore an important consideration.
How do you ensure quality in iterative development?
In DSDM quality is not negotiable. You must set acceptance criteria early, for example if you build a brick house the walls must bear the weight of the roof and the dimensions cannot be too long or short.
OR a site must be able to support X transactions a minute in order to meet customer demand
In iterative Development validation asks
Are we building the right thing
In iterative Development verification asks
Are we building the thing right
There are two classes of Verification
Static: inspect a deliverable against an acceptance criteria (eg an individual product meets a spec)
Dynamic testing: i) Positive testing ii) negative tests and iii) unhappy path tests (knock on impact if something occurs eg engine overheating)
Automated tests in iterative development help…
repeating tests during each iteration. They should be coupled with manual tests to consider other factors
In testing what is the Technical Coordinator responsbile for:
the overall quality of the solution from a technical perspective and so is responsible for “ensuring that the non-functional requirements are reasonable at the outset and subsequently met”.
In testing what is the Solution Tester responsible for?
for carrying out all types of testing except for:
Business acceptance testing: that is the responsibility of Business Ambassador(s) and Business Advisors
Unit testing of the feature: that is the responsibility of the Solution Developer
Summary
Summary
Iterative Development in a project context needs up-front thought. However this is not about big design up-front (BDUF) or detailed planning. It is more a consideration of the strategy for development. The DSDM philosophy states that projects deliver frequently so the ‘big picture’ needs to be broken down into small
manageable chunks to facilitate this frequent delivery.
The principles: focus on the business need, deliver on time, collaborate and never compromise quality must also be considered as these drive how the Solution Development Team works. How work is planned at the detailed level, ensuring the right people are involved at the right time and assuring quality as development progresses, requires the whole team to be bought in to a sensible strategy for development that they help shape during the Foundations phase. Where appropriate, this will be documented in the Development Approach Definition.
For small, simple projects delivering conceptually simple solutions, consideration of these issues may take an hour or two and be based on simple conversation and ‘round the table’ agreement. However, as a general rule, the need for a more formal and more carefully considered Iterative Development strategy increases with the size and complexity of the project organisation and the solution to be created.
Quality assurance is a key part of delivering a solution that is fit for business purpose. However, the formality and rigour of testing will depend very much on the nature of the project and the standards laid down by the organisation.