03-SE - Agile Technology
03-SE - Agile Technology
Agile Methods
Chapter 3
Introduction to Agile
Methodology
2
3
Agile Methodology
• Agileis a software development methodology to build
software incrementally using short iterations of 1 to 4
weeks so that the development process is aligned with
the changing business needs.
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. 5
Rapid software development
• Rapiddevelopment 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.
6
Agility and the Cost of Change
7
Agility and the Cost of Change
• Conventional wisdom is that the cost of change increases nonlinearly as a project
progresses.
• It is relatively easy to accommodate a change when a team is gathering
requirements early in a project.
If there are any changes, the costs of doing this work are minimal.
• A well-designed agile process may “flatten” the cost of change curve by coupling
incremental delivery with agile practices such as continuous unit testing and pair
programming. Thus team can accommodate changes late in the software project
without dramatic cost and time impact.
8
Agile manifesto
• Weare 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
• Thatis, while there is value in the items on the right,
we value the items on the left more.
9
Agile method applicability
• Product development where a software company is
developing a small or medium-sized product for sale.
• Custom system development within an organization,
where there is a clear commitment from the
customer to become involved in the development
process and where there are not a lot of external
rules and regulations that affect the software.
• Because of their focus on small, tightly-integrated
teams, there are problems in scaling agile methods to
large systems.
10
Problems with agile methods
• It
can be difficult to keep the interest of customers 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.
• Contracts may be a problem as with other approaches
to iterative development.
11
Agile methods and software
maintenance
• Most organizations spend more on maintaining existing software
than they do on new software development. So, if agile methods
are to be successful, they have to support maintenance as well as
original development.
• Two key issues:
Are systems that are developed using an agile approach maintainable, given
the emphasis in the development process of minimizing formal
documentation?
Can agile methods be used effectively for evolving a system in response to
customer change requests?
13
Plan-driven and agile development
• Plan-driven development
A plan-driven approach to software engineering is based around
separate development stages with the outputs to be produced at
each of these stages planned in advance.
Not necessarily waterfall model – plan-driven, incremental
development is possible
Iteration occurs within activities.
• Agile development
Specification, design, implementation and testing are inter-
leaved and the outputs from the development process are decided
through a process of negotiation during the software
development process.
14
Plan-driven and agile specification
15
Technical, human, organizational
issues
• Mostprojects include elements of plan-driven and agile
processes. Deciding on the balance depends on:
Is it important to have a very detailed specification and design before
moving to implementation? If so, you probably need to use a plan-
driven approach.
Is an incremental delivery strategy, where you deliver the software to
customers and get rapid feedback from them, realistic? If so, consider
using agile methods.
How large is the system that is being developed? Agile methods are
most effective when the system can be developed with a small co-
located team who can communicate informally. This may not be
possible for large systems that require larger development teams so a
plan-driven approach may have to be used.
16
Technical, human, organizational
issues
What type of system is being developed?
Plan-driven approaches may be required for systems that require a lot of
analysis before implementation (e.g. real-time system with complex
timing requirements).
What is the expected system lifetime?
Long-lifetime systems may require more design documentation to
communicate the original intentions of the system developers to the
support team.
What technologies are available to support system
development?
Agile methods rely on good tools to keep track of an evolving design
How is the development team organized?
If the development team is distributed or if part of the development is
being outsourced, then you may need to develop design documents to
communicate across the development teams. 17
Technical, human, organizational
issues
Are there cultural or organizational issues that may affect the
system development?
Traditional engineering organizations have a culture of plan-based
development, as this is the norm in engineering.
How good are the designers and programmers in the development
team?
It is sometimes argued that agile methods require higher skill levels than
plan-based approaches in which programmers simply translate a detailed
design into code
Is the system subject to external regulation?
If a system has to be approved by an external regulator (e.g. the FAA
approve software that is critical to the operation of an aircraft) then you will
probably be required to produce detailed documentation as part of the
system safety case.
18
Extreme
Programming
19
Extreme programming
• 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.
20
Extreme programming
21
User stories example
22
User stories example
23
Extreme programming practices (a)
Principle or practice Description
Incremental planning Requirements are recorded on story cards and the stories to be
included in a release are determined by the time available and their
relative priority. The developers break these stories into development
‘Tasks’. See Figures 3.5 and 3.6.
Small releases The minimal useful set of functionality that provides business value is
developed first. Releases of the system are frequent and
incrementally add functionality to the first release.
Simple design Enough design is carried out to meet the current requirements and no
more.
Test-first development An automated unit test framework is used to write tests for a new
piece of functionality before that functionality itself is implemented.
Refactoring All developers are expected to refactor the code continuously as soon
as possible code improvements are found. This keeps the code simple
and maintainable.
24
Extreme programming practices (b)
Principle or practice Description
Pair programming Developers work in pairs, checking each other’s work and providing
the support to always do a good job.
Collective ownership The pairs of developers work on all areas of the system, so that no
islands of expertise develop and all the developers take responsibility
for all of the code. Anyone can change anything.
Continuous integration As soon as the work on a task is complete, it is integrated into the
whole system. After any such integration, all the unit tests in the
Sustainable pace Large amounts of overtime are not considered acceptable as the net
effect is often to reduce code quality and medium term productivity
On-site customer A representative of the end-user of the system (the customer) should
be available full time for the use of the XP team. In an extreme
programming process, the customer is a member of the development
team and is responsible for bringing system requirements to the team
for implementation.
25
Refactoring
• Programming team look for possible software
improvements and make these improvements even where
there is no immediate need for them.
• This improves the understandability of the software and
so reduces the need for documentation.
26
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.
27
Pair programming
• 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.
28
Advantages of pair programming
• 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.
29
Testing in XP
• 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:
30
XP- Summary
33
XP- Summary
34
A ‘prescribing medication’ story
46
The Sprint cycle
• Once these are agreed, the team organize themselves to develop
the software. During this stage the team is isolated from the
customer and the organization, with all communications
channelled through the so-called ‘Scrum master’.
• The role of the Scrum master is to protect the development team
47
Teamwork in Scrum
• The ‘Scrum master’ is a facilitator who arranges daily meetings,
tracks the backlog of work to be done, records decisions,
measures progress against the backlog and communicates with
customers and management outside of the team.
• The whole team attends short daily meetings where all team
48
Example
• Here’san example of how Scrum works: Bill meets with a
customer to discuss her company’s needs. Those needs are
the product backlog. Bill chooses the most important
tasks to work on in the next two weeks. His team meets in
a daily scrum to target work for the day ahead and
address roadblocks. At the end of the sprint, Bill delivers
the work, reviews the backlog, and sets the goal for the
next sprint. The cycle repeats until the software is
complete.
49
Agile Methodology Examples
• One real-time example of software developed using Agile methodology is the widely-used
project management tool Trello. Trello is a web-based application that allows users to
organize and manage tasks, projects, and workflows using a visual board format.
Trello was developed using Agile methodology, specifically the Scrum framework. The
development team worked in sprints, with each sprint lasting two weeks. At the beginning of
each sprint, the team would meet to plan the work to be completed and prioritize the backlog of
user stories and features.
Throughout the sprint, the team would hold daily stand-up meetings to discuss progress and any
issues that arose. At the end of each sprint, the team would hold a sprint review meeting to
demo the completed work to stakeholders and receive feedback.
Using Agile methodology allowed the development team to quickly respond to changes in user
requirements and feedback. This resulted in a product that has been widely adopted by
businesses and individuals around the world.
• Another example of software developed using Agile methodology is Spotify, the popular
music streaming service. Spotify has a large development team that works in small, cross-
functional squads using Agile methodologies. This allows the team to quickly respond to
changes in user needs and deliver new features and updates in a timely manner
50
Scrum benefits
• The product is broken down into a set of manageable and
understandable chunks.
• Unstable requirements do not hold up progress.
• The whole team have visibility of everything and consequently
52
Scaling agile methods
• Agilemethods have proved to be successful for small and
medium sized projects that can be developed by a small
co-located team.
• It
is sometimes argued that the success of these methods
55
Scaling out and scaling up
• ‘Scaling
up’ is concerned with using agile methods for
developing large software systems that cannot be
developed by a small team.
• ‘Scaling
out’ is concerned with how agile methods can be
60