Lecture 4 - Agile Software Development
Lecture 4 - Agile Software Development
1
Chapter Outline
• Agile methods
• Plan-driven and agile development
• Agile development techniques
• Agile project management
2
Rapid Software Development
3
Fundamentals of Rapid Software Development
❑ Plan-driven development
▪ A plan-driven approach is based around separate development stages with
the outputs to be produced at each of these stages planned in advance.
▪ iteration occurs within activities with formal documents used to
communicate between stages of the process.
▪ Good for safety-critical systems
❑ Agile development
▪ The software development approach based on iterative development
where specification, design, implementation and testing are interleaved.
▪ Good for fast moving business environment
▪ May include a documentation ‘spike’, where, instead of producing a new
version of a system, the team produces system documentation
5
Plan-driven Vs Agile development
6
Agile Methods
7
Agile Methods
8
The Principles of Agile Methods
Principle Description
Customer involvement Customers should be closely involved throughout the development
process. Their role is to provide and prioritize new system
requirements and to evaluate the iterations of the system.
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
Agile Methods
11
Extreme Programming (XP)
❑ Emphasizes on values such as Communication, Simplicity,
Feedback, Courage and Respect, and prioritizes customer
satisfaction over everything else
❑ The approach was developed by pushing recognized good practices,
such as iterative development, to ‘extreme’ levels.
• For example: in XP, several new versions of a system may be developed by
different programmers, integrated and tested in a day
❑ Extreme Programming (XP) takes an ‘extreme’ approach to iterative
development.
▪ Requirements are expressed as scenarios (called user stories)
▪ Stories are implemented directly as a series of tasks;
▪ Programmers develop tests for each task before writing the code.
▪ All tests must be successfully executed when new code is integrated into the
system
12
The XP Release Cycle
13
The Extreme Programming Process
14
The Extreme Programming Process
✧ Exploration
▪ The customers write out the story cards
▪ Project team familiarize themselves with the tools, technology
▪ Takes between a few weeks to a few months
15
The Extreme Programming Process
✧ Productionizing phase
▪ Requires extra testing and checking
▪ New changes may still be found
▪ The iterations may need to be quickened
▪ The postponed ideas and suggestions are documented for later
implementation during, e.g., the maintenance phase.
✧ Death phase
▪ When the customer no longer have any stories to be implemented.
▪ System satisfies customer needs
▪ Necessary documentation of the system is finally written
▪ Death may also occur if the system is not delivering the desired
outcomes, or if it becomes too expensive for further development
16
Extreme Programming Practices (a)
Principle or practice Description
Incremental planning 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. The developers break these stories into development ‘Tasks’.
See Figures 3.5 and 3.6.
Small releases The minimal useful set of functionality that provides business value is
developed first. 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 development An automated unit test framework is used to write tests for a new piece
of functionality before that functionality itself is implemented.
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.
17
Extreme programming practices (b)
Pair programming Developers work in pairs, checking each other’s work and providing
the support to always do a good job.
Collective ownership The pairs of developers work on all areas of the system, so that no
islands of expertise develop and all 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.
Sustainable pace Large amounts of overtime are not considered acceptable as the net
effect is often to reduce code quality and medium term productivity
On-site customer A representative of the end-user of the system (the customer) should be
available full time for the use 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.
18
Key Practices in XP
❖ Key practices
User stories for requirements
Refactoring
Test-first development
Pair programming
19
User stories for requirements
20
A ‘prescribing medication’ story
21
Examples of task cards for prescribing
medication
22
Refactoring
✧ Incremental development tends to degrade the software structure, so changes to the
software become harder to implement
▪ code is often duplicated
▪ parts of the software are reused in inappropriate ways
▪ overall structure degrades as code is added to the system
✧ Refactoring is the process of restructuring code, while not changing its original
functionality yet improves its internal structure.
✧ The goal of refactoring is to improve internal code by making many small changes
without altering the code's external behavior.
✧ When carried out manually, refactoring is applied directly to the source code and is
generally a labor-intensive, ad hoc, and potentially error-prone process.
✧ Program development environments, such as Eclipse (Carlson, 2005), include tools for
refactoring which simplify the process of finding dependencies between code sections
and making global code modifications
23
Benefits of Refactoring
24
Examples of Refactoring
25
Testing in XP
✧ XP testing features:
▪ Test-first development.
▪ Incremental test development from scenarios.
▪ User involvement in test development and validation.
▪ Use of automated testing frameworks
26
Test-first Development
27
Incremental test development from scenarios
28
Customer Involvement
29
Test case description for dose checking
30
Test Automation
32
Pair Programming
33
Advantages of Pair Programming
34
Agile Project Management
35
Agile Project Management
37
Scrum
38
Scrum Process
39
Pre-game
Development team A self-organizing group of software developers, which should be no more than 7
people. They are responsible for developing the software and other essential
project documents.
Potentially shippable The software increment that is delivered from a sprint. The idea is that this
product increment should be ‘potentially shippable’ which means that it is in a finished state and
no further work, such as testing, is needed to incorporate it into the final
product. In practice, this is not always achievable.
Product backlog 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 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.
46
Scrum Terminology (b)
ScrumMaster The ScrumMaster is responsible for ensuring that the Scrum process is
followed and guides the team in the effective use of Scrum
47
Scrum sprint cycle
48
The Scrum sprint cycle
49
The Sprint Cycle
❑ During this stage the team is isolated from the customer and the
organization, with all communications channelled through the
so-called ‘Scrum 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.
50
Scrum Benefits
51