You are on page 1of 19

Software Development Process

Models (II)
Agile Methodologies
Extreme Programming
Agile Methodologies
 Agile methods are a family of software
development processes for teams facing
unpredictable or rapidly changing requirements.

 Extreme Programming (XP)


 Agile Modeling
 Adaptive Software Development (ASD)
 Crystal Clear and Other Crystal Methodologies
 Dynamic Systems Development Method (DSDM)
 Feature Driven Development
 Lean software development
 Agile Unified Process (AUP)

(For more detailed information, see The Agile Alliance).


Agile Methodologies (cont’d)
 Reject the notion that we should design for future
change
 don’t “borrow trouble”
 Manifesto for Agile Software Development:
“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”
 Seductive, but
 Beware: it is not yet widely accepted in industry, and its
own proponents admit that it is not always a good
choice
Agile Methodologies (cont’d)
 Agile methods emphasize real-time
communication, preferably face-to-face, over
written documents.
 Team: include all the people necessary to finish
software
 programmers and their customers, testers, interaction
designers, technical writers, and managers.
 Most agile methods share iterative development's
emphasis on building releasable software in short
time periods.
 Agile methods differ from iterative methods
 time period is measured in weeks rather than months
 treat their time period as strict time box.
 work is performed in a highly collaborative manner.
Agile or Plan driven?

Senior developers Junior developers


High requirements change Low requirements change
Small number of developers Large number of developers
Culture that thrives on chaos Culture that demands order

Agile home ground Plan-driven home ground


12 principles of Agile
1. "The highest priority is to satisfy the customer through
early and continuous delivery of valuable software.
2. Welcome changing requirements, even late in
development. Agile processes harness change for the
customer's competitive advantage.
3. Deliver working software frequently, from a couple of
weeks to a couple of months, with a preference to the
shorter time scale.
4. Business people and developers must work together daily
throughout the project.
5. Build projects around motivated individuals. Give them
the environment and support they need, and trust them
to get the job done.
6. The most efficient and effective method of conveying
information to and within a development team is face-to-
face conversation.
12 principles of Agile
7. Working software is the primary measure of progress.
8. Agile processes promote sustainable development. The
sponsors, developers, and users should be able to
maintain a constant pace indefinitely.
9. Continuous attention to technical excellence and good
design enhances agility.
10. Simplicity – the art of maximizing the amount of work not
done – is essential.
11. The best architectures, requirements, and designs emerge
from self-organizing teams.
12. At regular intervals, the team reflects on how to become
more effective, then tunes and adjusts its behavior
accordingly. "
Extreme Programming (XP)
 The most popular agile software
development methodology.
 Places a higher value on adaptability than
on predictability
 as all the agile methodologies do
 Target: Small to medium sized teams
(<10 members) building software with
vague or rapidly changing requirements
 Risky projects with dynamic requirements are
good candidates for XP.
 Small iterations -2 weeks
 Feedback;customer involvement;schedule slips
 Make each release work
 Make the smallest initial release that works:
Establish credibility;results
 Keep delivering working products
 Maintain test; re-run test after every change
 Keep Defect rate under control
 Customer in team; continuously refining specs
 Do the right product; address need changes
 Make your own estimates, human interaction,
constant pace; collective work
XP Practices
 The XP methodology has  Beck emphasizes that you
12 practices. can’t pick and choose:
 The Planning Game if you’re not doing them
 Small releases all, you’re not doing XP
 Metaphor
 Simple Design
 Testing
 Refactoring
 Pair programming
 Collective ownership
 Continuous integration
 40-hour week
 On-site customer
 Coding standards
12 Practices of XP
 Planning Game: Determine the next release’s
scope by working with customers
 Customer: what is desirable
 Programmer: what is possible -balancing
 Small Releases: Put a system into production
quickly (release every 1-2 weeks)

 Metaphor: Guide the development with a simple


story of how the system works
 E.g. “Desktop” is a metaphor used in OS referring office
desktop

 Simple Design
12 Practices of XP (cont’d)
 Testing: tests are written first, by both
programmers and customer: unit tests,
acceptance tests
 Tests are your goals to achieve
 Implement test first requires through understanding of the
specification
 Ambiguities and omissions are captured before implementation
 Refactoring: Restructure the system without
changing its behavior
 Simplicity: focus on current requirements and no more
 Future may change
 Maintain simplicity via frequent refactoring
 Instead of upfront design; re-architect for simplicity
12 Practices of XP (cont’d)
 Pair programming: 2 programmers at 1
machine write codes
 Two programmer working side-by-side, on the
same computer, interchanging roles back and
forth. While one programmer actively implements,
the other observes and identify defects and also
thinks strategically about the direction of the code
 Informal reviews

 Collective ownership: Anyone in the team


can modify the code; Everyone is responsible
of every bit of code
12 Practices of XP (cont’d)
 Continuous integration: Integrate and build the
system many times a day
 Keep testing while integrating=always a working
product
 40-hour a week: Work no more than 40 hours
per week
 On-site customer: Have the customer on the
team to answer questions full-time
 Resolve disputes; set short term priorities; decisions
 Coding standards:
 Improve communication by adopting coding
standards; collective ownership;maintanance
When not to try XP
 XP is very appealing to many programmers – often because
they think can get away from heavy documentation
 in fact the test-first practice creates a lot of documentation,
though in code form
 Beck himself indicates that there are situations where XP is not
appropriate. These include:
 When it is not supported by the company culture
 e.g. belief in big specifications, or overtime seen as a proxy for
commitment to company
 More than 10 or 20 programmers (now, he claims the opposite)
 Project too big for regular complete integration
 Where it inherently takes a long time to get feedback
 Where you can’t realistically test
 e.g. already in production using a $1,000,000 machine that is already
at full capacity
 When the physical environment is wrong
Extreme Programming – 5 Values
 Communication (with customer and within the team)
 "XP programmers communicate with their customers and fellow
programmers. "
 Simplicity: Keep design simple and clean
 Feedback: Get feedback by testing the software starting on
day one
 Courage: Deliver the system to the customers as early as
possible and implement changes as suggested. Feel
comfortable with refactoring or modifying or deciding to
throw code away
 "With this foundation XP programmers are able to courageously
respond to changing requirements and technology. "
 Respect: (the latest value) respect others and their work
 E.g. never commit change that break compilation

Based on http://www.extremeprogramming.org
Comparison of activities
Time

Test
Implement
Design
Analyze

Waterfall Iterative XP
Other Software Process Models
 Rational Unified Process
 Rapid Application Development
 Formal Systems Development
 Reuse Based Development
 Component Based Development
…

You might also like