Heavy vs Light Methods
- Predictive making it difficult to respond to change.
- Elaborate, long-term, detailed planning
- Disciplined, detailed process
- Lots of documentation produced in a bureaucratic environment
- Process oriented
- Adaptive – embrace change. n Iterative and incremental.
- Fast cycle/frequent delivery.
- Tacit knowledge – project knowledge in the participants’ heads rather than in documents.
- People oriented.
Predictive vs Adaptive
- A Predictive process attempts to plan and predict the activities and resource (people) allocations in detail over a long period of time, -the waterfall model.
- This works well until things change so their nature is to resist change.
- An adaptive process accepts change as an inevitable driver and encourages flexible adaptation
- 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 this quickly to meet changing requirements.
- Agile methods are probably best suited to small/medium-sized business systems or PC products.
What is an Agile Process?
- An agile software process addresses three key assumptions about the majority of software projects:
– It is difficult to predict in advance which software requirements will persist and which will change. In addition, how will customer priorities change as the project progresses?
– For many types of software design and construction are interleaved.
– Analysis, design, construction and testing are not as predictable (from a planning point of view) as we would like.
- An agile process must be :
- Adaptable – to changing project and technical conditions.
- Incremental – to allow adaptation to keep pace with change.
- Agile Methodologies
– XP (Extreme Programming)
– Feature-Driven Development
– DSDM (Dynamic System Development Method)
Practical work week 3.
Assignment week 4 in class.
Complete the following tasks: