Rapid Development Methods
Lecture 2 – Agile Approaches
What are Agile Methods?
• Agile methodologies are a family of methodologies, not a single approach to software development. • In 2001, 17 prominent figures in the field of agile development (then called "light-weight methodologies") came together at the Snowbird ski resort in Utah to discuss the unifying theme of their methodologies.
– Formed the Agile Alliance – Created the Agile Manifesto
over budget. and buggy software
.What problems need to be solved?
Agile development is a response to the problems of traditional • software development processes are too “heavyweight” • too many artifacts • too much documentation • inflexible plans • late.
Initial Proposa l
•A bullet pointed A4 Executive Summary
The Contract 2.500 modules
the University of Greenwich
The Top Level Design
The Software Program
4 Meters of A4
The Detailed Design 1.000 words
The Requirements Document 10.
Concepts. Linkers. Entities.Software Engineering
Compilers. Loaders. Activities. Roles. Builders
Problem Domain Solution Domain
the University of Greenwich
. Components. Computational models.
which typically last one to four weeks. • Each iteration is like a miniature software project of its own. called iterations. and includes all the tasks necessary to release the mini-increment of new functionality: planning.
.What makes Agile methods different? (1)
• Most agile methods attempt to minimize risk by developing software in short timeboxes. requirements.
an agile software project intends to be capable of releasing new software at the end of every iteration.What makes Agile methods different? (2)
• While an iteration may not add enough functionality to warrant releasing the product. the team reevaluates project priorities. • At the end of each iteration.
– At a minimum.What makes Agile methods different? (3)
• Agile methods emphasize face-to-face communication over written documents. • Most agile teams are located in a bullpen and include all the people necessary to finish software. technical writers. interaction designers. and managers.
." – The bullpen may also include testers. this includes programmers and their "customers.
we value the items on the left more†
† Robert C. while there is value in the items on the right. Pearson Education
.Manifesto for Agile Software Development
Individuals and interactions over Processes and tools Working software over Comprehensive documentation Customer collaboration over Contract negotiation Responding to change over Following a plan
That is. Agile Software Development. Martin. 2002.
from a couple of weeks to a couple of months. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. Continuous attention to technical excellence and good design enhances agility. then tunes and adjusts its behaviour accordingly.Principles behind the Agile Manifesto
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. and designs emerge from self-organizing teams. requirements. Give them the environment and support they need. Deliver working software frequently. even late in development.
. developers. Business people and developers must work together daily throughout the project. the team reflects on how to become more effective. At regular intervals. Build projects around motivated individuals. and users should be able to maintain a constant pace indefinitely. with a preference to the shorter timescale. The best architectures. Welcome changing requirements. Agile processes promote sustainable development. Simplicity--the art of maximizing the amount of work not done--is essential. The sponsors. and trust them to get the job done. Working software is the primary measure of progress. Agile processes harness change for the customer's competitive advantage.
What is Agile Software development
• Anything you want to attach a label “Agile” to …
• Agile Methodologies are characterised by being
– lightweight and iterative
• client side (your customers)
– quick – responsive – flexible
• server side (your programmers)
– able to adapt to change
• DSDM was developed in this country independently of the Agile Alliance in the USA.
– Not developed in the USA – Lots of other methods already out there – Does it offer anything different?
. • It is now a part of the Agile Alliance
– Considered first Agile method widely in use in Europe
• DSDM is not used widely in the States.
• Some of well-known agile software development methodologies include:
– – – – – – – Extreme Programming (XP) Scrum Adaptive Software Development (ASD) Crystal Clear and Other Crystal Methodologies DSDM Feature Driven Development Lean software development
Comparison with other methods
<--Agile--> <--Iterative--><--Waterfall--> <----|----------------|-----------------|----------> Adaptive Predictive
• An adaptive team will have difficulty describing exactly what will happen in the future. an adaptive team changes as well.
• Focus on adapting quickly to changing realities. • When the needs of a project change.
• Focus on planning the future in detail. • Predictive teams have difficulty changing direction. • A predictive team can report exactly what features and tasks are planned for the entire length of the development process. The plan is typically optimized for the original destination and changing direction can cause completed work to be thrown away and done over differently.
• Criticisms include:
– – – – level of structure and necessary documentation only works with senior-level developers incorporates insufficient software design requires too much cultural change to adopt
.Criticism of Agile methods
• Agile development is sometimes criticised as cowboy coding.
.But on the positive side….
• Agile methods recognise people power! • Agile methods recognise the need to develop with fast timescales • Agile methods recognise that requirements do change over time
• Who really knows? • Criticism of agile methods seems popular recently.. • Known to work but a change to the culture of the organisation is required • Risk needs to be carefully assessed before starting project.
SCRUM and XP