SE3 - Chapter 3 - Agile Software Development
SE3 - Chapter 3 - Agile Software Development
Agile Software
Development
2
Topics covered
Agile methods
Agile development techniques
Agile project management
3
Rapid software development
4
Agile Development
❑Agile development methods emerged in the late 1990s whose aim was to
radically reduce the delivery time for working software systems
❑Program specification, design and implementation are inter-leaved.
❑The system is developed as a series of versions or increments with
stakeholders involved in version specification and evaluation.
❑Frequent delivery of new versions for evaluation.
❑Extensive tool support (e.g. automated testing tools) used to support
development.
❑Minimal documentation – focus on working code. 5
Plan-driven and Agile Development
6
Plan-driven and agile development
Plan-driven development
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.
7
Agile methods
Dissatisfaction with the overheads involved in software design methods of the 1980s and
1990s led to the creation of agile methods. These 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.
The aim of agile methods is to reduce overheads in the software process (e.g. by limiting
documentation) and to be able to respond quickly to changing requirements without
excessive rework.
8
The principles of agile methods
Principle Description
Customer involvement Customers should be closely involved throughout the development process.
Their role is provide and prioritize new system requirements and to evaluate the
iterations of the system.
Incremental delivery The software is developed in increments with the customer specifying the
requirements to be included in each increment.
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.
9
Agile development
techniques
10
Extreme programming
11
The extreme programming
release cycle
12
A ‘prescribing medication’ story
15
Examples of task cards for prescribing medication
16
Test case description for dose checking
21
Agile project management
22
Scrum
23
Scrum sprint cycle
24
Agile methods for large systems
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.
25
Key points
Agile methods are incremental development methods that focus on rapid software development,
frequent releases of the software, reducing process overheads by minimizing documentation and
producing high-quality code.
Agile development practices include
▪ User stories for system specification
▪ Frequent releases of the software,
▪ Continuous software improvement
▪ Test-first development
▪ Customer participation in the development team.
Explain why the rapid delivery and deployment of new systems is often more important
to businesses than the detailed functionality of these systems.
Explain how the principles underlying agile methods lead to the accelerated
development and deployment of software.
When would you recommend against the use of an agile method for developing a
software system?
27
TASK
Select one of the following systems then specify the software requirements :
ATM
Vending Machine
Washing Machine
AI shopping system
e-Learning platform
28
Smart health prediction system
References
29