View
98
Download
0
Category
Preview:
Citation preview
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
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, over budget, and buggy software
© 2007 the University of Greenwich
Problem Complexity
TheRequirementsDocument
10,000 words
The Top
Level
Design
The Product4 Meters of A4
The
Software
Program
100,000
Lines
TheDetailedDesign
1,500modules
?
InitialProposal•A bullet pointed A4 Executive Summary
TheContract
2,000words
© 2007 the University of Greenwich
Software Engineering
Problem Domain
Implementation
Architectural
Modelling
Logical Modelling
Solution Domain
Application
Domain
WhatHow
Comprehension
Phenomena, Concepts,
Entities, Activities,
Roles, Assertions
Frameworks, Components,
Computational models, Testing
Invention
Compilers, Linkers,
Loaders, Builders
Realisation
What makes Agile methods
different? (1)
• Most agile methods attempt to minimize risk by developing software in short timeboxes, called iterations, which typically last one to four weeks.
• Each iteration is like a miniature software project of its own, and includes all the tasks necessary to release the mini-increment of new functionality: planning, requirements.
What makes Agile methods
different? (2)
• While an iteration may not add enough functionality to warrant releasing the product, an agile software project intends to be capable of releasing new software at the end of every iteration.
• At the end of each iteration, the team re-evaluates project priorities.
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.– At a minimum, this includes programmers and their
"customers."
– The bullpen may also include testers, interaction designers, technical writers, and managers.
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, while there is value in the items on
the right, we value the items on the left
more†
† Robert C. Martin, 2002, Agile Software Development, Pearson Education
Principles behind the Agile
ManifestoOur highest priority is to satisfy the customer
through early and continuous delivery of
valuable software.
Welcome changing requirements, even late in
development. Agile processes harness change
for the customer's competitive advantage.
Deliver working software frequently, from a
couple of weeks to a couple of months, with a
preference to the shorter timescale.
Business people and developers must work
together daily throughout the project.
Build projects around motivated individuals.
Give them the environment and support they
need, and trust them to get the job done.
The most efficient and effective method of
conveying information to and within a
development team is face-to-face conversation.
Working software is the primary measure of
progress.
Agile processes promote sustainable
development.
The sponsors, developers, and users should be
able to maintain a constant pace indefinitely.
Continuous attention to technical excellence
and good design enhances agility.
Simplicity--the art of maximizing the amount
of work not done--is essential.
The best architectures, requirements, and
designs emerge from self-organizing teams.
At regular intervals, the team reflects on how
to become more effective, then tunes and
adjusts its behaviour accordingly.
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)– empowering
– able to adapt to change
Sounds familiar?
• DSDM was developed in this country
independently of the Agile Alliance in the USA.
• 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.
– Not developed in the USA
– Lots of other methods already out there
– Does it offer anything different?
Agile Methods
• 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
Adaptive methods
• Focus on adapting quickly to changing
realities.
• When the needs of a project change, an
adaptive team changes as well.
• An adaptive team will have difficulty
describing exactly what will happen in the
future.
Predictive methods
• Focus on planning the future in detail.
• A predictive team can report exactly what features and tasks are planned for the entire length of the development process.
• Predictive teams have difficulty changing direction. The plan is typically optimized for the original destination and changing direction can cause completed work to be thrown away and done over differently.
Criticism of Agile methods
• Agile development is sometimes criticised as
cowboy coding.
• 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
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
The future?
• 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..
Extreme programming
SCRUM
SCRUM and XP
Recommended