4-5 Agile
4-5 Agile
Scaling methods
Agile development methods emerged in the late 1990s with the aim is to
deliver software systems rapidly
Agile development
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
All tests must be run for every build and the build is only accepted if tests run
successfully
Principle or Description
practice
Incremental 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.
planning The developers break these stories into development “Tasks”
Small The minimal useful set of functionality that provides business value is
developed first. Releases of the system are frequent and incrementally add
releases 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 before that functionality itself is implemented
development
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
Collective The pairs of developers work on all areas of the system, so that no islands
ownership of expertise develop and all the developers take responsibility for all of the
code. Anyone can change anything
Continuous As soon as the work on a task is complete, it is integrated into the whole
integration system. After any such integration, all the unit tests in the system must pass
Sustainable Large amounts of overtime are not considered acceptable as the final result is
pace often to reduce code quality and medium term productivity
Refactoring
Test-first development
Pair programming
They are written on cards and the development team break them down
into implementation tasks.
The customer chooses the stories for inclusion in the next release
based on their priorities and the schedule estimates
If you select ‘current medication’, you’ll be asked to check the dose; if you wish to
change the dose, enter the new dose then confirm the prescription
If you choose ‘new medication’, the system assumes that you know which medication
you wish to prescribe. Type the first few letters of the drug name. You will then see a
list of possible drugs starting with these letters. Choose the required medication. You
will be asked to check that the medication you have selected is correct. Enter the dose
then confirm the prescription
If you choose ‘formulary’, you will be presented with a search box for the approved
formulary. Search for the drug required then select it. You will then be asked to check
that the medication you have selected is correct. Enter the dose then confirm the
prescription
After you have confirmed the prescription, it will be displayed for checking. Either
click ‘OK’ or “Change’. If you click ‘OK’, your prescription will be recorded on the
audit database. If you click ‘Change’, you reenter the ‘Prescribing medication’
process
Changes are easier to make because the code is well-structured and clear
The replacement of inline code with calls to methods that have been
included in a program library
Test-first development
Automated test harnesses are used to run all component tests each time
that a new release is built
Tests are written as programs rather than data so that they can be
executed automatically
All previous and new tests are run automatically when new
functionality is added, thus checking that the new functionality has not
introduced errors
The customer who is part of the team writes tests as the development
proceeds
All new code is therefore validated to ensure that it is what the customer needs
An automated test framework (e.g., Junit) is a system that makes it easy to write
executable tests and submit a set of tests for executions
Whenever any functionality is added to the system, the tests can be run and
problems that the new code has introduced can be caught immediately
Pairs are created dynamically so that all team members work with each
other during the development process
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
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 shareholder representative
ScrumMa is responsible for ensuring that the Scrum process is followed and guides the team
ster in the effective use of Scrum. S/he 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.
Velocity An estimate of how much product backlog effort that a team can cover in a
single unit.
Understanding a team’s velocity helps them estimate what can be covered in a
sprint and provides a basis for measuring improvement performance
The starting point for planning is the product backlog, which is the
list of works 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
During this stage, the team is isolated from the customer and the
organization, with all communications channeled through the so-called
‘Scum master’
The role of the Scrum master is to protect the development team from external
distractions
At the end of the sprint, the work done is reviewed and presented to
stakeholders. The next sprint cycle then begins
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
Scrum can be applied to any project that benefits from an iterative approach
‘Scaling out’ is concerned with how agile methods can be introduced across
a large organization with many years of software development experience
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 teams, yet much software
development now involves worldwide distributed teams
A contract that pays for developer time rather than functionality is required
However, this is seen as a high risk by many legal departments because what
has to be delivered cannot be guaranteed
2 key issues
Are systems that are developed using an agile approach maintainable, given the
emphasis in the development process of minimizing formal documentation?
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
Principle Practice
Customer This depends on having a customer who is willing and able to spend time
involvement with the development team and who can represent all system
stakeholders. Often, customer representatives have other demands on
their time and cannot play a full part in the software development.
Where there’re external stakeholders, such as regulators, it is
difficult to represent their views to the agile team
Incremental Rapid iterations and short-term planning for development does not
delivery always fit in with the longer-term planning cycles of business planning
and marketing. Marketing managers may need to know what product
features several months in advance to operate an effective marketing
campaign
Principle Practice
Maintain Under pressure from deliver schedules, team members may not have
simplicity time to carry out desirable system simplifications
People not Individual team members may not have suitable personalities for the
process intensive involvement that is typical of agile methods, and therefore may
not interact well with other team members
Can informal agile development fit into the organizational culture of detailed
documentation?
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
For large systems development, it is not possible to focus only on the code
of the system
Product architects
Each team chooses a product architecture 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
demonstrated 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
Large organizations often have quality procedures and standards that all
projects are expected to allow 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
Test-first development