03 - Ch3 Agile Software Development
03 - Ch3 Agile Software Development
ENGINEERING
CO3001
WEEK 12
Agile methods
Agile development techniques
Agile project management
Agile 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 this quickly to meet changing requirements.
Aims:
to reduce overheads in the software process (e.g. by
limiting documentation)
to respond quickly to changing requirements without
excessive rework.
Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 7
THE PRINCIPLES OF AGILE METHODS
Principle Description
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.
Incremental development
supported through small, frequent system releases.
Customer involvement
means full-time customer engagement with the team.
People not process
through pair programming, collective ownership and a
process that avoids long working hours.
Change supported
through regular system releases.
Maintaining simplicity
through constant refactoring of code.
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.
Product This is a list of ‘to do’ items which the Scrum team must tackle. They
backlog may be feature definitions for the software, software requirements, user
stories or descriptions of supplementary tasks that are needed, such as
architecture definition or user documentation.
Product owner 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 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.
Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 31
SCRUM TERMINOLOGY (B)
Scrum term Definition
Scrum A daily meeting of the Scrum team that reviews progress and
prioritizes work to be done that day. Ideally, this should be a short
face-to-face meeting that includes the whole team.
ScrumMaster 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 responsible for interfacing with the rest of the company and for
ensuring that the Scrum team is not diverted by outside interference.
The Scrum developers are adamant that the ScrumMaster should
not be thought of as a project manager. Others, however, may not
always find it easy to see the difference.
Sprint A development iteration. Sprints are usually 2-4 weeks long.
Velocity 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 be covered in a sprint and provides a basis for
measuring improving performance.
The selection: select the features and functionality from the product
backlog to be developed during the sprint.
The team organize themselves to develop the software.
During “sprint” stage:
the team is isolated from the customer and the organization
all communications through the ‘Scrum master’.
to protect the development team from external distractions.