1. Chapter 3 Agile software development
1
Chapter 3 – Agile Software
Development
2. Topics covered
Chapter 3 Agile software development
2
Agile Development
Extreme Programming (XP) Methodology
Pair Programming
3. Rapid software development
Chapter 3 Agile software development
3
Rapid development and delivery is now often the
most important requirement for software systems
Businesses operate in a fast –changing requirement and it is
practically impossible to produce a set of stable software
requirements
Software has to evolve quickly to reflect changing business needs.
Rapid software development
Specification, design and implementation are inter-leaved
System is developed as a series of versions with stakeholders
involved in version evaluation
User interfaces are often developed using an IDE and graphical
toolset.
4. What is Agile Development?
Chapter 3 Agile software development
4
Agile is an emerging software development
methodology
Programming-centric
Few rules and practices
Easy to follow
Eliminate much of modeling and documentation
tasks – saves time
Emphasize simple, iterative application development
5. Agile methods
Chapter 3 Agile software development
5
Dissatisfaction with the overheads involved in software
design methods of the 1980s and 1990s led to the creation
of agile methods. These methods:
Focus on the code rather than the design
Are based on an iterative approach to software development
Are intended to deliver working software quickly and evolve
quickly to meet changing requirements.
The aim of agile methods is to reduce overheads in the
software process (e.g. by limiting documentation) and to be
able to respond quickly to changing requirements without
excessive rework.
6. Agile manifesto
Chapter 3 Agile software development
6
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.
7. The principles of agile methods
Chapter 3 Agile software development
7
Principle Description
Customer involvement Customers should be closely involved throughout the
development process. Their role is provide and prioritize new
system requirements and to evaluate the iterations of the
system.
Incremental delivery The software is developed in increments with the customer
specifying the requirements to be included in each increment.
People not process The skills of the development team should be recognized and
exploited. Team members should be left to develop their own
ways of working without prescriptive processes.
Embrace change Expect the system requirements to change and so design the
system to accommodate these changes.
Maintain simplicity Focus on simplicity in both the software being developed and
in the development process. Wherever possible, actively work
to eliminate complexity from the system.
8. Extreme Programming
Chapter 3 Agile software development
8
Perhaps the best-known and most widely used agile
method.
Extreme Programming (XP) takes an ‘extreme’
approach to iterative development.
New versions may be built several times per day;
Increments are delivered to customers every 2 weeks;
All tests must be run for every build and the build is only
accepted if tests run successfully.
9. Extreme Programming (cont.)
Chapter 3 Agile software development
9
Extreme Programming is founded on four core
values:
Communication
Simplicity
Feedback
Courage
Developers must provide rapid feedback to the end
users on a continuous basis
XP requires developers to follow the KISS principle
10. Extreme Programming (cont.)
Chapter 3 Agile software development
10
Developers must make incremental changes to grow
the system – must embrace change
Developers must have a quality first mentality
Three key principles used by XP to create successful
systems:
Continuous testing
Coding performed by pairs of developers
Close interactions with end users
11. Extreme Programming (cont.)
Chapter 3 Agile software development
11
XP project begins with user stories that describe
what the system needs to do
Programmers code in small, simple modules and test
to meet those needs
Users are required to be available to clear up
questions and issues
Standards are very important to minimize confusion
XP projects deliver results sooner than even the RAD
approaches
12. Problems with XP
Chapter 3 Agile software development
12
For large projects, applying XP is not easy
XP is only recommended for small groups of developers—no
more than 10 developers
Project members need to work well and co-operate as part of a
team
XP requires a great deal of discipline – otherwise projects will
become unfocused and chaotic
Maintaining large systems built with XP is difficult – lack of
analysis and design documentation, only code documentation
On-site customer availability not always possible
13. Testing in XP
Chapter 3 Agile software development
13
Testing is central to XP and XP has developed an
approach where the program is tested after every
change has been made.
XP testing features:
Test-first development.
User involvement in test development and validation.
Automated test harnesses are used to run all component tests
each time that a new release is built.
14. Test-first development
Chapter 3 Agile software development
14
Writing tests before code clarifies the requirements
to be implemented.
Tests are written as programs rather than data so
that they can be executed automatically. The test
includes a check that it has executed correctly.
Usually relies on a testing framework such as Junit.
All previous and new tests are run automatically
when new functionality is added, thus checking that
the new functionality has not introduced errors.
15. Pair programming
Chapter 3 Agile software development
15
In XP, programmers work in pairs, sitting together to
develop code.
This helps develop common ownership of code and spreads
knowledge across the team.
It serves as an informal review process as each line of code
is looked at by more than 1 person.
It encourages refactoring as the whole team can benefit
from this.
Measurements suggest that development productivity with
pair programming is similar to that of two people working
independently.
16. Pair programming (cont.)
Chapter 3 Agile software development
16
In pair programming, programmers sit together at
the same workstation to develop the software.
Pairs are created dynamically so that all team
members work with each other during the
development process.
The sharing of knowledge that happens during pair
programming is very important as it reduces the
overall risks to a project when team members leave.
Pair programming is not necessarily inefficient and
there is evidence that a pair working together is more
efficient than 2 programmers working separately.
17. Advantages of pair programming
Chapter 3 Agile software development
17
It supports the idea of collective ownership and
responsibility for the system.
Individuals are not held responsible for problems with the
code. Instead, the team has collective responsibility for
resolving these problems.
It acts as an informal review process because each
line of code is looked at by at least two people.
It helps support refactoring, which is a process of
software improvement.
Where pair programming and collective ownership are used,
others benefit immediately from the refactoring so they are
likely to support the process.
18. References
Cornell University, USA
http://www.cs.cornell.edu/courses/cs501/2000fa/slides.html
Picture collect from: Ivan Marsic, Rutgers
University
Ian Sommerville, Software Engineering, 9th
edition, Pearson, 2011
Roger s. pressman, Software Engineering a
practitioners approach, 7th ed
Windows XP = experience. But here XP = Extreme Programming
Suppose, a Skeleton code/framework of forum based web. Then all forum based webpage order will follow this framework
communication between software engineers and other stakeholders
simplicity: XP restricts developers to design only for immediate need
KISS = keep it simple & stupid (simple code in stupid way, not smart)
Earn = X*45% + ( (X/y *.034)^1/2 ) )% 4
Write this code in separate lines