You are on page 1of 16

Software Engineering

Module 2
Agile Software Development
> Learning Outcomes
At the end of this module, students should be able to:
1. Recall the rationale for agile software development
methods, the agile manifesto, and the differences between
agile and plan drive development;
2. Identify the key practices in extreme programming and
how these relate to the general principle of agile methods;
3. Recognize the scrum approach to agile management; and
4. Use the issues and problems of scaling agile development
methods to the development of large software systems.
Lesson 2. Plan-driven and Agile
Development
Agile approaches to software development
consider design and implementation to be
central activities in the software process. By
contrast, a plan-driven approach to software
engineering identifies separate stages in the
software process with output associates with each
stage.
In a plan –driven approach, iteration occurs
within activities with formal documents used to
communication between stages of the process.
Figure 2.2 shows the distinction between plan-
driven and agile approaches to system
specification.
A plan-driven software process can support
incremental development and delivery. It is
perfectly feasible to allocated requirement and
plan the design and development phase as a
series of increments.
An agile process is not inevitably code-focused
and it may produce some design documentation.
The agile development team may decide to
include documentation “spike”, where, instead of
producing a new version of a system, the team
produce system documentation (Ganney et al.,
2013).
To decide on the balance between a plan-
based and an agile approach you have to answer
a range of technical, human, and organizational
questions.
1. Is it important to have a very detailed
specification and design before moving to
implementation? – need to use a plan-driven
approach.
2. Is an incremental delivery strategy, where
you deliver the software to customers and get
rapid feedback from them, realistic? – consider
using agile methods.
3. 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.
4. What type of system is being developed? –
System requires a lot of analysis be for
implementation, plan-driven approach may be
best in some circumstances.
5. What is the expected system lifetime? –
Long lifetime systems may require more design
documentation the original intentions of the
system developers to support them.
6. What technologies are available to support
system development? – Agile methods often
rely on good tools to keep track on an evolving
design.
7. How is the development team organized? – If
the development team distributed or if part of the
development is being outsource, they you may need
to develop design documents to communicate across
the development teams.
8. Are there culture issues that may affect the
system development? – Traditional engineering
organizations have a culture of plan-base
development, as this is the norm in engineering.
9. How good are the designers and programmers
in the development team? – If you have a team with
relatively low skill levels, you may need to use the
best people to develop the design, with other
responsible for programming.

10. Is the system subject to external regulation? –


Then you will probably be required to produce detailed
documentation as part of the system safety case.

You might also like