Chapter 3: Agile Software Development
Chapter 3: Agile Software Development
1
Topics covered
Agile methods
Plan-driven and agile development
Extreme programming
Agile project management
Scaling agile methods
2
Agile Software Development
3
• The Agile software development methodology is one of the simplest
and effective processes to turn a vision for a business need into software
solutions.
• The agile software development emphasizes on four core values.
– Individual and team interactions over processes and tools
• That is, while there is value in the items on the right, we value the items
on the left more.
5
Rapid software development
• Why?
• Need to react to changes more quickly than 2 year long waterfall projects
• 2 years and then you got the design wrong anyway! Small deliveries aren't
abstract
• How?
• Goal - Deliver working software quickly
• Compromise - less functionality in a delivery, not lower quality
• Less documentation
• Focus on the code rather than the design
• Interleave
• Specification, design and implementation are inter-leaved
• Deliver small versions and get user (stakeholder) input 6
• 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.
• Agile development methods emerged in the late 1990s. All of the agile
methods that have been proposed share a number of common characteristics:
9
Plan-driven and agile specification
separate Iteration within stage
development Not
stages with necessarily
the outputs to waterfall
be produced model – plan-
at each of driven,
these stages incremental
planned in development
advance. is possible
User's full
agreement at
end, not before
code
Iteration of stage
Figure 3.1 Plan-driven and agile development
10
Problems with agile methods
• It can be difficult to keep the interest of customers / users who are involved in
the process.
• Team members may be unsuited to the intense involvement that characterizes
agile methods.
• Prioritizing changes can be difficult where there are multiple stakeholders.
• Maintaining simplicity requires extra work.
• Contracts may be a problem as with other approaches to iterative development.
• Because of their focus on small, tightly-integrated teams, there are problems in
scaling agile methods to large systems.
• Less emphasis on documentation - harder to maintain when you get a new
team for maintenance.
11
Agile methods: Extreme programming
• A popular form of Agile
• Extreme Programming (XP) takes an ‘extreme’ approach to iterative development.
• New versions may be built several times per day;
• All tests must be run for every build and the build is only accepted if tests run
successfully.
• Incremental development is supported through small, frequent releases of the system.
Requirements are based on simple customer stories or scenarios that are used as a
basis for deciding what functionality should be included in a system increment.
• Customer involvement means full-time customer engagement with the team. -
Specifications through user stories broken into tasks
• People, not process :pair programming, collective ownership and a process that avoids
long working hours. 12
• Regular system releases test-first development, refactoring to avoid code
degeneration, and continuous integration of new functionality.
• Maintaining simplicity through constant refactoring of code and by using simple
designs
• Extreme Programming is based on the following values −
• Communication: Everyone on a team works jointly at every stage of the
project.
• Simplicity: Developers strive to write simple code bringing more value to a
product, as it saves time and efforts.
• Feedback: Team members deliver software frequently, get feedback about it,
and improve a product according to the new requirements.
• Respect: Every person assigned to a project contributes to a common goal.
• Courage: Programmers objectively evaluate their own results without
making excuses and are always ready to respond to changes. 13
Figure 3.2 The XP release cycle
14
Figure.The Extreme Programming process
15
Key practices of XP include:
An example of a story card for the Mentcare system is shown in above figure.This is
a short description of a scenario for prescribing medication for a patient. 16
User stories
• To make this easier, the idea of “user stories” was developed where a user story is a
scenario of use that might be experienced by a system user.
• In XP, a customer or user is part of the XP team and is responsible for making
decisions on requirements. User requirements are expressed as user stories or
scenarios.
• Once the story cards have been developed, the development team breaks these down
into tasks (Figure 3.4) and estimates the effort and resources required for
implementing each task. This usually involves discussions with the customer to
refine the requirements. The customer then prioritizes the stories for
implementation, choosing those stories that can be used immediately to deliver
useful business support.
• The intention is to identify Useful functionality that can be implemented in about
two weeks, when the next release of the system is made available to the customer.
17
• User stories can be helpful in getting users involved in suggesting requirements
during an initial predevelopment requirements elicitation activity.
• The idea of user stories is a powerful one—people find it much easier to relate to
these stories than to a conventional requirements document or use cases.
Examples of refactoring
• Re-organization of a class hierarchy to remove duplicate code.
• Tidying up and renaming attributes and methods to make them easier to
understand.
• The replacement of inline code with calls to methods that have been included
in a program library.
20
Test-first development
22
Figure 3.5 Test case description for dose checking
23
Pair programming
• Pair programming involves programmers working in pairs, developing code together.
• 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
one person. It encourages refactoring as the whole team can benefit from improving the
system code.
• In pair programming, programmers sit together at the same computer to develop the
software. Pairs are created dynamically so that all team members work with each other
• The sharing of knowledge that happens during pair programming is very important as it
• Pair programming is not necessarily inefficient and there is some evidence that suggests
that a pair working together is more efficient than two programmers working separately.
24
Introduction to Agile Project Management
Scrum
• The most popular agile framework is called scrum.
• The Scrum approach is a general agile method but its focus is on
managing iterative development rather than specific agile practices.
• Project Manager's job: - Deliver needed system on time within budget
• There are three phases in Scrum.
• outline planning phase: where you establish the general objectives
for the project and design the software architecture.
• Sprint cycles: where each cycle develops an increment of the system.
• The project closure: wraps up the project, completes required
documentation such as system help frames and user manuals and
assesses the lessons learned from the project. 25
Figure 3.6 Scrum
26
The Sprint cycle
• Sprints are fixed length, normally 2-4 weeks.
• The starting point for planning is the product backlog, which is the list
of work to be done on the project. The selection phase involves all of the
project team who work with the customer (product owner/idea people)
to select the features and functionality to be developed during the sprint.
• During this stage the team is relatively isolated from the product owner
and the organization, with all communications channeled through
the ScrumMaster.
• The role of the ScrumMaster Master is responsible for setting up the
team, sprint meeting and removes obstacles to progress. At the end of the
sprint the work done is reviewed and presented to stakeholders (including
the product owner). 27
• Velocity is calculated during the sprint review; it provides an estimate of
how much product backlog the team can cover in a single sprint.
Understanding the team's velocity helps them estimate what can be covered
in a sprint and provides a basis for measuring and improving performance.
The next sprint cycle then begins.
29
Figure 3.8 Distributed Scrum
30
Scrum benefits
• The product is broken down into a set of manageable and understandable
chunks.
communication is improved.
• Customers see on-time delivery of increments and gain feedback on how the
product works.
31
Scaling agile methods
• Agile methods were developed for use by small programming teams that could
work together in the same room and communicate informally. They were
originally used by for the development of small and medium-sized systems and
software products.
• scaling is about: how do we take the concepts of Agility into different segments
of the organization,
• It is sometimes argued that the success of these methods comes because of
improved communications which is possible when everyone is working together.
• Two perspectives on scaling of agile methods:
• Scaling up these methods to handle the development of large systems that
are too big to be developed by a single small team.
• For large systems development, it is not possible to focus only on the code of
the system; you need to do more up-front design and system documentation.
32
• Cross-team communication mechanisms have to be designed and used,
which should involve regular phone and video conferences between team
members and frequent, short electronic meetings where teams update each
other on progress.
• Scaling out these methods from specialized development teams to more
widespread use in a large company that has many years of software
development experience.
• Large organizations often have quality procedures and standards that all
projects are expected to follow and, because of their bureaucratic nature,
these are likely to be incompatible with agile methods.
• Agile methods seem to work best when team members have a relatively
high skill level. However, within large organizations, there are likely to be a
wide range of skills and abilities.
33
Thank you 34