0% found this document useful (0 votes)
114 views

03 - Ch3 Agile Software Development

The document discusses agile software development techniques, including extreme programming (XP). It covers the principles of agile methods like incremental delivery, customer involvement, and responding to change. XP practices like test-first development, pair programming, and refactoring are explained. User stories are used to capture requirements in XP, with examples provided. The goal of agile techniques like XP is rapid and frequent delivery of working software that can easily evolve to meet changing needs.

Uploaded by

Hồ Văn Hoà
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
114 views

03 - Ch3 Agile Software Development

The document discusses agile software development techniques, including extreme programming (XP). It covers the principles of agile methods like incremental delivery, customer involvement, and responding to change. XP practices like test-first development, pair programming, and refactoring are explained. User stories are used to capture requirements in XP, with examples provided. The goal of agile techniques like XP is rapid and frequent delivery of working software that can easily evolve to meet changing needs.

Uploaded by

Hồ Văn Hoà
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 38

SOFTWARE

ENGINEERING
CO3001

CHAPTER 3 – AGILE SOFTWARE


DEVELOPMENT

WEEK 12

Adapted from https://iansommerville.com/software-engineering-book/slides/


TOPICS COVERED

 Agile methods
 Agile development techniques
 Agile project management

Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 2


RAPID SOFTWARE DEVELOPMENT

 Rapid development and delivery is now often the


most important requirement for software systems

 Businesses operate in a fast-changing requirement


 => practically impossible to have stable software
requirements
 Software has to evolve quickly to reflect changing
business needs.

 Plan-driven development (waterfall, incremental dev.) is


essential for some types of system but does not meet
these business needs.

Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 3


AGILE DEVELOPMENT  emerged in the late 1990s
 aim to radically reduce the delivery
time for working software systems

 Program specification, design and implementation


are inter-leaved
 The system = a series of versions / increments
 Stakeholders involved in version specification and
evaluation
 Frequent delivery of new versions for evaluation

 Minimal documentation – focus on working code

 Extensive tool support (e.g. automated testing tools)


used to support development.
Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 4
PLAN-DRIVEN AND AGILE DEVELOPMENT
i.e.: waterfall model, incremental development

Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 5


AGILE METHODS

Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 6


AGILE METHODS

 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

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.

Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 8


AGILE METHOD APPLICABILITY

 For a small or medium-sized product for sale.


 Virtually all software products and apps are now
developed using an agile approach

 Clear commitment from the customer to


become involved
 in the development process
 and where there are few external rules and
regulations that affect the software.

Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 9


AGILE DEVELOPMENT
TECHNIQUES

Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 10


EXTREME PROGRAMMING late 1990s

 Extreme Programming (XP) takes an ‘extreme’


approach to iterative development.
 New versions may be built several times per day;
 Increments are delivered to customers every 2 weeks;
 All tests must be run for every build and the build is only
accepted if tests run successfully.

The XP release cycle

Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 11


EXTREME PROGRAMMING PRACTICES
Principle or Description
practice
Incremental Requirements are recorded on story cards and the stories to be included in a release are
planning determined by the time available and their relative priority. The developers break these stories
into development ‘Tasks’.
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 An automated unit test framework is used to write tests for a new piece of functionality before
development 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.
Pair Developers work in pairs, checking each other’s work and providing the support to always do a
programming good job.
Collective The pairs of developers work on all areas of the system, so that no islands of expertise develop
ownership 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 system. After any such
integration integration, all the unit tests in the system must pass.
Sustainable Large amounts of overtime are not considered acceptable as the net effect is often to reduce
pace code quality and medium term productivity
On-site A representative of the end-user of the system (the customer) should be available full time for the
customer 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
Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 12
implementation.
XP AND AGILE PRINCIPLES

 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.

Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 13


INFLUENTIAL XP PRACTICES

 Extreme programming has a technical focus and is


not easy to integrate with management practice in
most organizations.
 Consequently, while agile development uses
practices from XP, the method as originally defined
is not widely used.
 Key practices
 User stories for specification
 Refactoring
 Test-first development
 Pair programming

Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 14


USER STORIES FOR REQUIREMENTS

 In XP, a customer or user is part of the XP team


and is responsible for making decisions on
requirements.
 User requirements are expressed as user stories
or scenarios.
 These are written on cards and the development
team break them down into implementation tasks.
These tasks are the basis of schedule and cost
estimates.
 The customer chooses the stories for inclusion in the
next release based on their priorities and the
schedule estimates.

Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 15


A ‘PRESCRIBING MEDICATION’ STORY

Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 16


EXAMPLES OF TASK CARDS FOR PRESCRIBING
MEDICATION

Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 17


REFACTORING

 Conventional wisdom: design for change, anticipating changes =>


reduce cost later in life cycle
 XP: constant code improvement (refactoring) to make changes
easier when they have to be implemented.

 Make possible software improvements


 even where there is no immediate need for them.
 Refactoring advantages:
 Improves the understandability of the software => reduces the
need for documentation.
 Code is well-structured and clear => changes are easier to make
 Disadvantages:
 some changes requires architecture refactoring => expensive.

Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 18


EXAMPLES OF REFACTORING

 Re-organization of a class hierarchy to remove


duplicate code.
 Tidying up and renaming attributes and
methods to make them easier to understand.
 The replacement of inline code with calls to
methods that have been included in a program
library.

Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 19


TEST-FIRST DEVELOPMENT

 Testing is central to XP and XP has developed an


approach where the program is tested after every
change has been made.

 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.

Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 20


TEST-DRIVEN DEVELOPMENT

 Writing tests before code clarifies the


requirements to be implemented.
 Tests are written as programs rather than data
so that they can be executed automatically.
The test includes a check that it has executed
correctly.
 Usually relies on a testing framework such as JUnit.
 All previous and new tests are run
automatically when new functionality is added,
thus checking that the new functionality has not
introduced errors.
Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 21
CUSTOMER INVOLVEMENT IN TESTING

 The role of the customer in the testing process is to help


develop acceptance tests for the stories that are to be
implemented in the next release of the system.
 The customer who is part of the team writes tests as
development proceeds. All new code is therefore
validated to ensure that it is what the customer needs.
 However, people adopting the customer role have
limited time available and so cannot work full-time with
the development team. They may feel that providing
the requirements was enough of a contribution and so
may be reluctant to get involved in the testing process.

Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 22


TEST CASE DESCRIPTION FOR DOSE CHECKING

Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 23


TEST AUTOMATION

 Test automation means that tests are written as


executable components before the task is
implemented
 These testing components should be stand-alone, should
simulate the submission of input to be tested and should
check that the result meets the output specification. 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 execution.
 As testing is automated, there is always a set of
tests that can be quickly and easily executed
 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.

Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 24


PROBLEMS WITH TEST-FIRST DEVELOPMENT

 Programmers prefer programming to testing and


sometimes they take short cuts when writing tests.
For example, they may write incomplete tests that
do not check for all possible exceptions that may
occur.
 Some tests can be very difficult to write
incrementally. For example, in a complex user
interface, it is often difficult to write unit tests for
the code that implements the ‘display logic’ and
workflow between screens.
 It difficult to judge the completeness of a set of
tests. Although you may have a lot of system tests,
your test set may not provide complete coverage.
Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 25
PAIR PROGRAMMING

Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 26


PAIR PROGRAMMING

 Working in pairs, developing code together.


 Serves as an informal review process
 each line of code is looked at by more than 1 person.
 It encourages refactoring as the whole team can benefit
from improving the system code.
 Pairs are created dynamically so that all team members
work with each other during the development process.
 Sharing of knowledge during pair programming
 very important as it reduces the overall risks to a project when
team members leave.
 There is some evidence that suggests that a pair working
together is more efficient than 2 programmers working
separately.

Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 27


AGILE PROJECT MANAGEMENT

Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 28


AGILE PROJECT MANAGEMENT

 Software project managers is to manage the


project so that the software is delivered on time
and within the planned budget for the project.

 Standard approach = project plan


 what should be delivered,
 when it should be delivered
 and who will work on the development of the project
deliverables.

 Agile project management?

Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 29


SCRUM

 Scrum is an agile method that focuses on


managing iterative development rather than
specific agile practices.
 There are three phases in Scrum.
 The initial phase is an outline planning phase where you
establish the general objectives for the project and
design the software architecture.
 This is followed by a series of sprint cycles, where each
cycle develops an increment of the system.
 The project closure phase wraps up the project,
completes required documentation such as system help
frames and user manuals and assesses the lessons
learned from the project.

Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 30


SCRUM TERMINOLOGY (A)
Scrum term Definition
Development A self-organizing group of software developers, which should be no
team more than 7 people. They are responsible for developing the software
and other essential project documents.
Potentially The software increment that is delivered from a sprint. The idea is that
shippable this should be ‘potentially shippable’ which means that it is in a finished
product state and no further work, such as testing, is needed to incorporate it
increment into the final product. In practice, this is not always achievable.

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.

Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 32


SCRUM SPRINT CYCLE
 Sprint: fixed length,
normally 2–4 weeks
 Product backlog: list of
work to be done on the
project

 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.

 End of the sprint:


 the work is reviewed and presented to stakeholders.

Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 33


SCRUM SPRINT CYCLE – ANOTHER VIEW
https://www.youtube.com/watch?v=XJeaPyWOCaw

Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 34


TEAMWORK IN SCRUM

 The ‘Scrum master’: a facilitator


 arranges daily meetings & tracks the backlog of work to be done,
 records decisions & measures progress against the backlog
 communicates with customers / management outside of the team.

 Short daily meetings (Scrums) for all team members


 share information,
 describe progress since the last meeting,
 problems that have arisen
 what is planned for the following day => re-plan if necessary.

Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 35


SCRUM BENEFITS

 The product is broken down into a set of


manageable and understandable chunks.
 Unstable requirements do not hold up progress.
 The whole team have visibility of everything and
consequently team communication is improved.
 Customers see on-time delivery of increments and
gain feedback on how the product works.
 Trust between customers and developers is
established and a positive culture is created in
which everyone expects the project to succeed.

Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 36


SUMMARY

 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.
Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 37
SUMMARY (CONT.)

 Scrum is an agile method that provides a


project management framework.
 It is centred round a set of sprints, which are fixed
time periods when a system increment is developed.
 Many practical development methods are a
mixture of plan-based and agile development.

Sep 2019 CHAPTER 3. AGILE SOFTWARE DEVELOPMENT 38

You might also like