Title: Agile Methods
1Agile Methods
2What is Agile Software Development?
- late 1990's several methodologies gained
increasing public attention. Theses methodologies
had a combination of old and new ideas and/or
transmuted old ideas. These common threads and
ideas include - Close collaboration between the programmer, team
and business experts - Face-to-face communication (considered to be more
efficient than written documentation) - Frequent delivery of new deployable business
value
3What is Agile Software Development?
- Cohesive and self-organizing teams
- Ways of crafting the code and the team such that
the inevitable requirements change did not result
in crises.
4What is Agile Software Development?
- The originators and practitioners of these
methodologies identified what these methodologies
had in common - They coined the word Agile" to name the union of
these methods - And, they developed the Manifesto for Agile
Software Development.
5The Manifesto for Agile Software Development
- Here is the statement of shared development
values that they identified - We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value - 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.
6Implementation of the Manifesto Principles
- http//www.agilemanifesto.org/principles.html
- Many new Agile projects started
- some succeeded and some failed
- There were successes in which business people and
technical people declared there love for the
project approach - This was the way they wanted software development
done - And successful projects spawned enthusiasts.
7The Agile Alliance
- The Agile Alliance was born spawned
- To satisfy the customer through early and
continuous delivery of valuable software - http//www.agilealliance.org/home
8The Agile Alliance
- The Agile Alliance exists to help more Agile
projects succeed and to help the enthusiasts
start Agile projects.
9Agile Alliance
- Emphasises
- Face-to-face communication,
- Visits to a users group and discusions with peers
about their experiences of Agile methods - http//www.agilealliance.org/userGroups/index
10History
- http//www.agilemanifesto.org/history.html
11 Agile Database Techniques
- Agile Data (AD) methodology (Data Driven)
- define strategies that apply in a wide variety of
situations so IT professionals work together
effectively on the data aspects of software
systems - This gives a one size does not fit all
methodology - And a collection of philosophies that will enable
IT professionals to work together effectively on
the data aspects of software-based systems
12Agile Modelling
- A practice-based methodology for effective
modelling and documentation of software-based
systems - A collection of values, principles, and
practices for modelling software that can be
applied on a software development project in an
effective and light-weight manner (without
overburdening planning and documentation) - It is proposed that Agile models are more
effective than traditional models because they
are just barely good enough perfection is not
necessary - Agile modelling is applicable to requirements
collection and analysis, architectural design and
detailed design
13Adaptive Software Development (ASD)
- ASD practices are driven by a belief in
continuous adaptation - Using a different philosophy and a different life
cycle-geared to accepting continuous change as
the norm - Replacing the static plan-design-build life cycle
by a dynamic Speculate-Collaborate-Learn life
cycle - Applying a life cycle dedicated to continuous
learning and oriented to change, re-evaluation,
predicting (speculating on) an uncertain future - And, enabling an intense collaboration among
developers, management, and customers
14Adaptive Software Development (ASD)
- The Speculate-Collaborate-Learn life cycle
15Speculate
- Project Initiation, to set the project's mission
- Establish the Time-Box for the entire project
- Decide on the number of Iterations through
project development and assign a time-box to each
one - Develop a theme or objective for each of the
Iterations - Developers and customers both assign features to
each Iteration
16Collaborate
- The Technical Team delivers working software
- The Project Managers facilitate collaboration and
concurrent development activities
17Learn
- There are FOUR general categories of things to
learn about at the end of each development
iteration - Resultant Quality from the customer's perspective
- Resultant Quality from a technical perspective
- The Functioning of the delivery team and the
Practices team members are utilizing - The project's Status
18An ASD life cycles Six basic characteristics
- Mission focused
- Feature based
- Iterative
- Time-boxed
- Risk driven
- Change tolerant
19The Crystal Approach
- A family of human-powered and adaptive,
Ultralight, Shrink-to-fit software development
methodologies - A "Human-powered" approach - focused on achieving
project success through enhancing the work of
those involved (other methodologies might be
process-centric, or architecture-centric, or
tool-centric, but Crystal is people-centric) - A Ultralight approach - whatever the project size
and priorities, a Crystal-family methodology for
the project will work to reduce the paperwork,
overhead and bureaucracy to the minimum that is
practical for the parameters of that project - A "Shrink-to-fit - start with something seemingly
small enough, and work to make it smaller and
better fitting - Crystal - Non-jealous, that is, allows
substitution of similar elements from other
methodologies
20Crystal
- Crystal combines a self-adapting family of
Shrink-to-fit, Human-powered software development
methodologies based on the understanding that - Every project needs a different set of policies
and conventions, or methodology - The workings of the project are sensitive to
people issues, and improve as the people issues
improve, individuals get better, and their
teamwork gets better - Better communications and frequent deliveries
communication reduce the need for intermediate
work products
21Feature-Driven Development (FDD)
- FDD starts with creation of a domain object model
in collaboration with domain experts - Using information from modelling and from
requirements activities the developers create a
features list - Then a rough plan of development is drawn up and
responsibilities are assigned - Then small dynamically formed teams develop the
features by repeatedly performing design and
build iterations that last no longer than 2 weeks
22At this point Dynamic Systems Development Method
(DSDM)
- The DSDM Lifecycle
- DSDM is more a framework than a method
- The Project Process has 7 phases, which are
repeated during the life-cycle of the project
(hence making DSDM an iterative and incremental
method)
23DSDM
- Pre-Project phase -- ensures that only the right
projects are started and that they are set up
correctly. - Feasibility Study -- assessment of whether DSDM
is the right approach for the project and a
definition of the problem, assessments of the
costs and assessment of the technical feasibility
of delivering a system.
24DSDM
- Business Study -- the prime focus of attention is
on the business processes affected and their
information needs. Using a series of facilitated
workshops to quickly gain consensus as to the
priorities of the development. - Functional Model Iteration -- refining the
business-based aspects of the system. - Design and Build Iteration -- is where the system
is engineered.
25DSDM
- Implementation -- covers the cutover from the
development environment to the operational
environment. - Post-Project -- this phase keeps the solution
operating effectively.
26Underlying Principles
- Clear definition of roles and responsibilities in
the project - Active user involvement is imperative with 4
defined business roles - The team must be empowered to make decisions
- The focus is on frequent delivery of products,
which are defined in terms of purpose and quality
and who's involved in the delivery
27- Fitness for business purpose is the essential
criterion for acceptance of deliverables - Iterative and incremental development is
necessary to converge on an accurate business
solution - All changes during development are reversible
- Requirements are baselined at a high level
- Testing is integrated throughout the life-cycle
- Collaboration and cooperation between all
stakeholders is essential - http//www.agilealliance.org/programs/roadmaps/Roa
dmap/dsdm/dsdm_index.htm
28Lean Software Development
- In the last 25 years, lean thinking has
- had a tremendous global economic impact
- transformed how many industries operate by
changing the way they think about their work and
their people. - Lean works because it produces more wealth by
- eliminating waste,
- enabling any given investment of people and
productive resources to produce more value while
providing more meaningful, fulfilling work to the
participants. - Lean Software Development applies lean thinking
to software development contexts.
29Lean
- not about what a team does practices it is
about how a team decides what to do and when to
do it. - starts at the level of principles derived from
Deming - The application of lean thinking principles is
different in each domain and it maps differently
to different software development contexts as
well. - Practices appropriate to lean manufacturing or
lean construction will not necessarily be
appropriate to software development.
30Principles (adapted to the software context) are
- Eliminate Waste - If the customer does not value
it or if it slows down rapid delivery to the
customer, it is waste. Don't do it. - Amplify Learning - Development is about discovery
and feedback. Deliver in small batches to
minimize uncertainty and permit the customer to
steer. - Decide as Late as Possible - Delay commitment.
Keep options open as long as possible to base
decisions on the best possible information.
31- Deliver as Fast as Possible - The best measure of
organizational maturity is the speed with which
it can repeatedly and consistently deliver value.
- Empower the Team - Teams should design their own
processes. Provide the training and leadership
they need. - Build Integrity In - Concurrent development
enables rich communication, the essential
ingredient for system integrity. - See the Whole - Decomposition leads to
sub-optimization. Focus on overall results.
32- Lean Software Development is not a development
methodology but rather a way to think about
whatever approach a team uses. - Lean Software Development thinking tools support
team decisions about which practices are
appropriate in their unique context. Agile
methods, including Extreme Programming, Scrum,
DSDM, and Adaptive Software Development, are all
consistent with the way Lean Software Development
applies lean thinking to developing software. - http//www.agilealliance.org/programs/roadmaps/Roa
dmap/lean/lean_index.htm
33Scrum
- Scrum - an agile, lightweight process that can be
used to manage and control software and product
development. - Wrapping existing engineering practices,
including Extreme Programming, Scrum generates
the benefits of agile development with the
advantages of a simple implementation. - Scrum significantly increases productivity while
facilitating adaptive, empirical systems
development.
34Test-Driven Development
- craft of producing automated tests for production
code, and using that process to drive design and
programming. - For every tiny bit of functionality in the
production code, you first develop a test that
specifies and validates what the code will do. - You then produce exactly as much code as will
enable that test to pass. Then you refactor
(simplify and clarify) both the production code
and the test code.
35In recipe format the steps of TDD are
- The first step is to quickly add a test,
basically just enough code to fail. - Next you run your tests, often the complete test
suite although for sake of speed you may decide
to run only a subset, to ensure that the new test
does in fact fail. - You then update your functional code to make it
pass the new tests. - The fourth step is to run your tests again. If
they fail you need to update your functional code
and retest. - Now look for and remove duplication clean up the
test code (extract common setup into the
fixture/setUp() split fixtures if they become
non-cohesive etc.)
36- The above sequence is repeated continuously
throughout the programming process. - Each cycle has a duration of minutes, if you're
not capable to fix a failing test within minutes,
then throw away the test and the code that you
wrote to satisfy the test and design a simpler
test.
37XBreed
- XBreed is the product of mixing SCRUM, XP and
Alexanderian ideas. XBreed is the result of
developing multiple applications and shared
components as fast as humanly possible.
Combining Scrum and XP is very natural - Scrum provides a solid management framework,
while XP provides a basic but complete set of
engineering practices. The result is a lean but
very mean (very effective) way to run software
projects. In addition, Scrum practiced at the
application team level, and provided a Shared
Resources Team is involved, can lead to
reusability. - http//www.agilealliance.org/programs/roadmaps/Roa
dmap/xbreed/xbreed_index.htm
38XP - eXtreme Programming
- Extreme Programming is a discipline of software
development based on values of - simplicity,
- communication,
- feedback,
- courage.
- Brings whole team together in the presence of
simple practices, with enough feedback to enable
the team to see where they are and to tune the
practices to their unique situation.
39Authors
- Mike Beedle
- Arie van Bennekum
- Alistair Cockburn
- Ward Cunningham
- Martin Fowler
- Jim Highsmith etc
- http//agilemanifesto.org/authors.html
40The new methodology
- Rapidly growing interest in agile (aka
"lightweight") methodologies. - Alternatively characterized as an antidote to
bureaucracy or a license to hack they've stirred
up interest all over the software landscape. - reasons for agile methods, focusing not so much
on their weight but on their adaptive nature and
their people-first orientation. - summary and references to the processes in this
school and consider the factors that should
influence your choice of whether to go down this
newly trodden path. - http//www.martinfowler.com/articles/newMethodolog
y.html