Iterative Evolutionary Development
Iterative Evolutionary Development
Prepared by
Dr. S. Angel Deborah
Learning Objective
● To understand the importance of iterative & evolutionary development
● To understand risk -driven and client-driven planning
Outline
● Introduction
● Iterative Development
● Risk-Driven and Client-Driven Iterative Planning
● Evolutionary and Adaptive Development
● Evolutionary Requirement Analysis
● Evolutionary and Adaptive Planning
● Incremental Delivery
● Evolutionary Delivery
Introduction
Agile methodology is a project management framework that emphasizes flexibility, collaboration, and customer-centricity.
Iterative Approach: Agile breaks projects into dynamic phases called sprints. After each sprint, teams reflect and adjust their
strategy for the next one
1. Design, Prototype, and Test: Development teams create smaller features within the overall product. They design,
prototype, and test these features in cycles.
2. Quick Process: By working through the process quickly, iterative development helps limit costs due to errors and
unexpected results.
3. User Feedback: Since low-cost prototypes are created and tested, user feedback can be incorporated throughout
development to refine the product and deliver optimal results.
4. Two Approaches:
○ Requirement Focus: Address one or more sets of functional or non-functional requirements during each
cycle.
○ Solution Focus: Address individual layers of the solution (e.g., architectural layers) during each cycle.
Risk-Driven Iterative Planning
● Focus: This approach centers on identifying and mitigating project risks throughout the development process.
● Early Prioritization: In the early iterations, the development team selects the riskiest and most challenging elements
to address. For instance, if the client requests both a green color scheme for web pages and the ability to handle 5,000
simultaneous transactions, the team might prioritize the latter due to its higher risk.
● Benefits: By tackling high-risk items early, the team can surface and address potential issues before they escalate.
Client-Driven Iterative Planning
● Client-Centric: Here, the client’s perspective drives feature selection for each iteration.
● Business Value: The client chooses features based on their perceived business value. They steer the project by
requesting the features they find most valuable at the moment.
● Adaptive Planning: Unlike speculative planning at the project’s start, the client adapts their choices shortly before
each iteration begins, using fresh insights.
● Ongoing Control: The client maintains ongoing control and choice, ensuring alignment with their evolving needs.
Evolutionary and Adaptive Development
● Refinement Over Time: In evolutionary development, requirements, plans, estimates, and solutions evolve or refine
over the course of iterations.
● Not Frozen: Unlike a fully defined and “frozen” approach, evolutionary development adapts to changing needs and
insights.
● Adaptive development, implies that elements adapt in response to feedback from prior work and emphasizes the
feedback response.
Evolutionary Requirement Analysis
Definition of Requirements:
● Requirements are capabilities and conditions that the system (and the overall project) must adhere to1. Rather than
attempting to fully define and stabilize requirements upfront (as in the traditional waterfall model), evolutionary
requirements analysis takes a more iterative and skillful approach.
● The goal is to systematically find, document, organize, and track changing requirements throughout the project.
● In evolutionary methods (such as Scrum, XP, and the Unified Process), production-quality programming and testing begin
even before most requirements are fully analyzed or specified.
● Unlike the waterfall approach, where complete specifications are attempted before development starts, evolutionary methods
embrace change as a fundamental driver.
● Typically, only a portion (e.g., 10% to 20%) of the most architecturally significant, risky, and high-business-value requirements
are specified initially
Evolutionary Requirement Analysis
Process Overview:
● Evolutionary requirements analysis combines early design and programming with partial requirements analysis in
iterations.
● It allows for ongoing refinement and adjustment based on stakeholder feedback and changing needs.
● For a detailed description of how to perform iterative and evolutionary analysis and design, refer to the relevant
resources
Evolutionary and Adaptive Planning
Evolutionary and adaptive planning is an approach that acknowledges the dynamic nature of software development and
emphasizes responsiveness to change. Key aspect includes:
Cone of Uncertainty:
● Initially, there’s high uncertainty due to early requirements changes and other factors. This uncertainty gradually
decreases over time as information accumulates.
● The cone of uncertainty illustrates this phenomenon, emphasizing that estimates and schedules aren’t forever unknown
Adaptive Planning:
● Rather than detailed predictive planning, adaptive planning is encouraged. It involves creating schedules only for a
relatively short time horizon, aligning commitment with available information.
● Expectations for semi-reliable estimates (cost, effort, schedule) are deferred until a few iterations into the project
(typically 10% to 20%)
Evolutionary and Adaptive Planning
Two-Phase Contracts:
● Some iterative and evolutionary methods (like the Unified Process) recommend two contract phases:
○ Phase One: A short fixed-time and fixed-price contract completes a few iterations, producing partial software
and refining requirements.
○ Phase Two: Based on the outputs of phase one, a fixed-price contract is established, leveraging higher-quality
data for estimations
Incremental Delivery
Incremental delivery is an approach in software development where a project is broken down into smaller, manageable pieces
(increments) that are developed and delivered incrementally.
1. Benefits:
○ Early Value: Incremental delivery allows stakeholders to see tangible progress early on. Even if the entire system isn’t
complete, they can use and benefit from the delivered increments.
○ Feedback: Regular delivery of increments facilitates continuous feedback, which helps refine requirements and adapt
to changing needs.
○ Risk Mitigation: By delivering smaller pieces, risks are spread out, and issues can be addressed incrementally.
2. Challenges:
○ Integration: Ensuring that increments work together seamlessly can be challenging. Proper integration testing is
crucial.
○ Dependency Management: Managing dependencies between increments requires careful planning.
○ Scope Control: Balancing scope changes and maintaining focus on essential features is essential.
Evolutionary Delivery
Evolutionary delivery is an approach that emphasizes continuous improvement and adaptation throughout the software
development process
1. Benefits:
○ Early Value: Stakeholders receive usable features early, even if the entire system isn’t complete.
○ Adaptability: Evolutionary delivery accommodates changing requirements and priorities.
○ Risk Reduction: By addressing risks incrementally, the overall project risk is reduced.
2. Challenges:
○ Integration: Ensuring seamless integration of increments can be complex.
○ Dependency Management: Handling dependencies between evolving parts requires careful planning.
○ Scope Control: Balancing scope changes while maintaining focus is essential.
Summary
● Iterative Development
● Risk-Driven and Client-Driven Iterative Planning
● Evolutionary and Adaptive Development
● Evolutionary Requirement Analysis
● Evolutionary and Adaptive Planning
● Incremental Delivery
● Evolutionary Delivery
Check your understanding
● Why Agile ?
● What does Adaptive development emphasize?
Reference
1. Craig Larman, “Agile and Iterative Development: A Manager’s Guide”,Addison Wesley, 2004.