Lecture 05 - Ch3. Agile SW Development
Lecture 05 - Ch3. Agile SW Development
Software
Development
D R. S A L M A A L Z A H RA N I
Plan-driven development is essential for some types of system but does not meet these business needs.
Agile development methods emerged in the late 1990s whose aim was to radically reduce the delivery
time for working software systems
We are uncovering better ways of developing software by doing it and helping others do it. Through
this
Working workover
software we have come to value:
Individuals and interactions Customer collaboration over Responding to change over
comprehensive
over processes and tools contract negotiation following a plan
documentation
That is, while there is value in the items on the right, we value the items on the left more.
Agile
method
where there is a clear
Custom system commitment from the
customer to become involved in
development within an the development process
organization
where there are not a lot of
external rules and regulations
that affect the software.
applicabili
ty
Because of their focus on small, tightly-
integrated teams, there are problems in
scaling agile methods to large systems
All tests must be run for every build and the build is
only accepted if tests run successfully.
The minimal useful set of functionality that provides business value is developed first.
Small releases
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 An automated unit test framework is used to write tests for a new piece of functionality
development before that functionality itself is implemented.
All developers are expected to refactor the code continuously as soon as possible code
Refactoring
improvements are found. This keeps the code simple and maintainable.
Developers work in pairs, checking each other’s work and providing the support to always do a good
Pair programming job.
The pairs of developers work on all areas of the system, so that no islands of expertise develop and all
Collective ownership 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 system must pass.
Large amounts of overtime are not considered acceptable as the net effect is often to reduce code
Sustainable pace quality and medium term productivity
A representative of the end-user of the system (the customer) should be available full time for the use
On-site customer 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.
• These are written on cards and the development team break them down into implementation tasks.
These tasks are the basis of schedule and cost estimates.
The customer chooses the stories for inclusion in the next release based on their
priorities and the schedule estimates.
XP testing features:
• Test-first development.
• Incremental test development from scenarios.
• 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.
The customer who is part of the team writes tests as development proceeds. All new code is
therefore validated to ensure that it is what the customer needs.
However, people adopting the customer role They may feel that providing the requirements was enough of
have limited time available and so cannot work a contribution and so may be reluctant to get involved in the
full-time with the development team. testing process.
Tests are written as programs rather than data so that • Usually relies on a testing
they can be executed automatically. The test includes a framework such as Junit.
check that it has executed correctly.
This helps develop common It serves as an informal review It encourages refactoring as the
ownership of code and spreads process as each line of code is whole team can benefit from this.
knowledge across the team. looked at by more than 1 person.
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.
The standard approach to project management is plan-driven. Managers draw up a plan for the project
showing what should be delivered, when it should be delivered and who will work on the development of
the project deliverables.
Agile project management requires a different approach, which is adapted to incremental development
and the particular strengths of agile methods.
The software increment that is delivered from a sprint. The idea is that this should be
‘potentially shippable’ which means that it is in a finished state and no further work, such
Potentially shippable
as testing, is needed to incorporate it into the final product. In practice, this is not always
product increment
achievable.
This is a list of ‘to do’ items which the Scrum team must tackle. They may be feature
definitions for the software, software requirements, user stories or descriptions of
Product backlog supplementary tasks that are needed, such as architecture definition or user
documentation.
An individual (or possibly a small group) whose job is to identify product features or
requirements, prioritize these for development and continuously review the product
Product owner backlog to ensure that the project continues to meet critical business needs. The Product
Owner can be a customer but might also be a product manager in a software company or
other stakeholder representative.
Scrum Terminology (b)
Scrum term Definition
A daily meeting of the Scrum team that reviews progress and prioritizes work
Scrum to be done that day. Ideally, this should be a short face-to-face meeting that
includes the whole team.
The ScrumMaster is responsible for ensuring that the Scrum process is
followed and guides the team in the effective use of Scrum. He or she is
ScrumMaster
responsible for interfacing with the rest of the company and for ensuring that
the Scrum team is not diverted by outside interference.
Sprint A development iteration. Sprints are usually 2-4 weeks long.
An estimate of how much product backlog effort that a team can cover in a
single sprint. Understanding a team’s velocity helps them estimate what can
Velocity
be covered in a sprint and provides a basis for measuring improving
performance.
Scrum Sprint Cycle
06/23/2025 CHAPTER 3 AGILE SOFTWARE DEVELOPMENT 40
The Scrum 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 to select the
features and functionality from the product backlog to be developed during the sprint.
January May
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 (Scrums) where all team members share
information, describe their progress since the last meeting, problems that have arisen and
what is planned for the following day.
This means that everyone on the team knows what is going on and, if
problems arise, can re-plan short-term work to cope with them.
• Each team has a Product Owner for their work component and Scrum Master.
Product architects
• Each team chooses a product architect and these architects collaborate to design and evolve the overall system
architecture.
Release alignment
• The dates of product releases from each team are aligned so that a demonstrable and complete system is produced.
Scrum of Scrums
• There is a daily Scrum of Scrums where representatives from each team meet to discuss progress and plan work to
be done.
It is sometimes argued that the success of these methods comes because of improved
communications which is possible when everyone is working together.
Scaling up agile methods involves changing these to cope with larger, longer projects
where there are multiple development teams, perhaps working in different locations.
Large systems are ‘brownfield systems’, that is they include and interact with a number of existing
systems. Many of the system requirements are concerned with this interaction and so don’t really
lend themselves to flexibility and incremental development.
Where several systems are integrated to create a system, a significant fraction of the development is
concerned with system configuration rather than original code development.
Large systems have a long procurement and development time. It is difficult to maintain
coherent teams who know about the system over that period as, inevitably, people move on to
other jobs and projects.
Large systems usually have a diverse set of stakeholders. It is practically impossible to involve
all of these different stakeholders in the development process.
For large systems development, it is not possible to focus only on the code of the system.
Continuous integration is practically impossible. However, it is essential to maintain frequent system builds and regular
releases of the system.
Agile methods are most appropriate for new software development rather than software maintenance.
Yet the majority of software costs in large companies come from maintaining their existing software
systems.
Agile methods are designed for small co-located team yet much software development now involves
worldwide distributed teams.
Are systems that are developed using an agile approach maintainable, given the
emphasis in the development process of minimizing formal documentation?
Two key issues:
Can agile methods be used effectively for evolving a system in response to
customer change requests?
Agile development relies on the development team knowing and understanding what has to be done.
For long-lifetime systems, this is a real problem as the original developers will not always work on the
system.
• Agile methods are most effective when the • This may not be possible for large systems that
system can be developed with a small co- require larger development teams so a plan-
located team who can communicate informally. driven approach may have to be used.
What type of system is • Systems that require a lot of analysis before implementation
being developed? need a fairly detailed design to carry out this analysis.
Is the system subject to • If a system is regulated you will probably be required to produce
external regulation? detailed documentation as part of the system safety case.
• 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.
• IDE support for visualisation and program analysis is essential if design documentation is not
available.
• This depends on having a customer who is willing and able to spend time with the development team and who can
represent all system stakeholders. Often, customer representatives have other demands on their time and cannot
Customer involvement play a full part in the software development.
• Where there are external stakeholders, such as regulators, it is difficult to represent their views to the agile team.
Prioritizing changes can be extremely difficult, especially in systems for which there are many stakeholders. Typically, each
Embrace change stakeholder gives different priorities to different changes.
Rapid iterations and short-term planning for development does not always fit in with the longer-term planning cycles of business
Incremental delivery planning and marketing. Marketing managers may need to know what product features several months in advance to prepare an
effective marketing campaign.
Maintain simplicity Under pressure from delivery schedules, team members may not have time to carry out desirable system simplifications.
Individual team members may not have suitable personalities for the intense involvement that is typical of agile methods, and
People not process therefore may not interact well with other team members.
Organizational Issues
Traditional engineering organizations have a culture of plan-based development, as this
is the norm in engineering.
Can informal agile development fit into the organizational culture of detailed
documentation?
Agile methods seem to work best when There may be cultural resistance to
team members have a relatively high agile methods, especially in those
skill level. However, within large organizations that have a long history
organizations, there are likely to be a of using conventional systems
wide range of skills and abilities. engineering processes.