2-AgileDevelopment
2-AgileDevelopment
Agile
Commercial software development was process
driven – heavy in documentation, management
Changes were hard to manage and caused
challenges in design/project management
By 1990s people felt that change was too frequent
and essential, and processes too heavy and slow to
handle it
3
Principles
The champions wrote an “Agile Manifesto” (2001)
Some values articulated in it:
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
Individuals and interactions over processes and tools
It is stating that the first item is valued more (does not
mean that the second item is valueless)
Many implications
Light on documentation – more on interaction/collaboration
Light on planning (and management)
Focus on code, light on methodologies like modeling, etc
Software development viewed as an evolution
4
The Agile Manifesto
Our 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 time scale.
Business people and developers must work together daily
through 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.
5
The Agile Manifesto…
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
behavior accordingly.
6
Agile Approaches
Many methods evolved (with their own process)
Main ones:
Extreme Programming (XP)
SCRUM
Lean software development
Crystal
Feature Driven Development
…
Agile processes need a culture to succeed
We will briefly discuss one – XP. XP has many
practices; some relate to project management,
others to engineering
7
Agile (XP) – PM practices
There is a project manager, who is also the interface with
external groups
Team - Small, cross-functional (< a dozen)
Sit together in open office format
Continuity – keep team together
Shrinks with time – as experience grows, reduce team
Customer rep (or someone acting as one)
Planning game – planning is not done at the start of the
project, but for an iteration, reviewed weekly
Release Planning. Write stories to capture requirements; estimate
effort for impl. a story; sort them by value and risk; adjust as
needed
Iteration planning. At wk start – review of progress, and plan for
this iteration – stories to be implemented, broken in tasks, …
Task list. Tasks (0.5 to 3 days) for user stories to be completed in
this iteration; team members volunteer for tasks
8
PM Practices
Daily stand-up meetings. Each member updates on
work done, what is planned today, difficulties;
pairs may be formed in this meeting
40 hr week for developers
Customer involvement. Ready availability for
clarifications; a rep may be with the team
Customer acceptance tests. Are to be developed
by the customer; may be automated
9
Technical Practices…
User stories. High level requirements (not full
specs) – details developed through interaction,
priority (by customer), estimates (by developer)
Coding standards to be adopted and followed
Pair programming. Two programmers work
together at one computer, collaborating…
This has been studied very widely
Test-first programming. Also called test driven
development (TDD); for all stories at least one AT
designed early, tests added as code develops –
automated test scripts
10
Technical Practices…
Continuous integration. Code can be checked in only if
passes its unit tests, and tests of the entire code; code
checked in daily
Simple, incremental design. Initial design simple; need
not handle contingencies; Keep refining design as
system evolves
Design change may require refactoring – additional effort; is
a whole technical area
Refactoring. Change design without changing functionality
Iterative development and deployment. Usually
timeboxed iterations. Often iterations will result in
deployment
Shared code. Once checked in, anyone in team can
alter the code, i.e. collective ownership
11
Impact on Agile Use
Developers: needs strong developers; not able to
accommodate technically weak ones
Testers: Automated testing requires different types
of testers who can build scripts
Project managers. More collaborative, share
decision making, handle more change
Customers. Have to be more involved, spend more
time (a rep may be needed full time)
Executive management. Culturally different - little
documentation, weak estimation upfront, ..
12
Practice Usage (where adopted)
13
Benefits of Agile and Key Success Factors