Upload
api-25957478
View
74
Download
1
Embed Size (px)
Citation preview
Incremental development is a staging and scheduling strategy in which various parts of the system are developedat different times or rates and integrated as they are completed.
Iterative development is a rework scheduling strategy in which time is set aside to revise and improve parts of the system.
Incremental development
Validateincrement
Develop systemincrement
Design systemarchitecture
Integrateincrement
Validatesystem
Define outline requirements
Assign requirements to increments
System incomplete
Finalsystem
Incremental development advantages
• Customer value can be delivered with each increment so system functionality is available earlier.
• Early increments act as a prototype to help elicit requirements for later increments.
• Lower risk of overall project failure.• The highest priority system services tend to
receive the most testing.
Spiral development
• Process is represented as a spiral rather than as a sequence of activities with backtracking.
• Each loop in the spiral represents a phase in the process.
• No fixed phases such as specification or design - loops in the spiral are chosen depending on what is required.
• Risks are explicitly assessed and resolved throughout the process.
Rational Unified Process
Agile Processes
• Dissatisfaction with the overheads involved in design methods led to the creation of agile methods. These methods:– Focus on the code rather than the design;– Are based on an iterative approach to software
development;– Are intended to deliver working software quickly and
evolve to meet changing requirements.• Agile methods are probably best suited to
small/medium-sized business systems12
14
Extreme programming
• Perhaps the best-known and most widely used agile method.
• Extreme Programming (XP) takes an ‘extreme’ approach to iterative development. – New versions may be built several times per day;– Increments are delivered to customers every 2
weeks;– All tests must be run for every build and the build
is only accepted if tests run successfully.
16
The XP release cycle
18
Select user stories for this
release
Break down stories to tasks
Plan release
Develop/integrate/test
software
Release software
Evaluate system
19
Extreme Programming Practices
Fine scale feedback
Pair programming
Planning game
Test driven development
Whole team
Continuous process
Continuous integration
Refactoring
Small releases
Shared understanding
Coding standards
Collective code ownership
Simple design
System metaphor
Programmer welfare
Sustainable pace
20
The word increment fundamentally means add onto.
The word iterate fundamentally means re-do.
Sadly, iterative development has come to mean either incremental or iterative, indiscriminately
Incremental development gives you opportunities to improve your development process.
Iterative development helps you improve your product quality.
(1) Development process(2) Feature set(3) Product quality
Use an incremental strategy to improve the first two.
Use an iterative strategy to improve the third.