Software Process and Agile Practices Course Notes
Software Process and Agile Practices Course Notes
Agile Practices
COURSE NOTES
Table of Contents
Course Overview 4
Module 1: Introduction to Processes 5
Processes and Practices 6
The Importance of a Process 6
Life Cycles and Sub-Processes 6
Processes and Phrases 7
Tasks and Task Dependencies 8
Practices 10
Software Engineering Activities 11
Specification Activities 12
Design and Implementation Activities 13
Verification and Validation Activities 13
Project Management Activities 14
Summary of Software Engineering Activities 16
Module 2: Process Models 17
Module Overview 18
Linear Models 18
Waterfall Model 18
V-Model 20
Sawtooth Model 21
Iterative Models 22
Spiral Model 22
Parallel Models 24
Unified Process Model 24
Prototypes 28
Last Word on Prototypes 30
Continuous Delivery 31
Microsoft Daily Build 32
Last Word on Continuous Delivery 33
Process as a Tool: Choose the Right Tool for the Job! 34
Module 3: Agile Practices 35
Using Agile with Process Models 36
Agile Practices 37
Scrum 37
Three Pillars of Scrum 37
Sprints and Scrum Events 38
Scrum Roles 39
Scrum Development Team 39
Definition of “Done” 40
Extreme Programming (XP) 40
Practices 40
• Specification
• Design and Implementation
• Verification and Validation
Tasks are where the real work gets done, no matter what
process is used. Tasks are the small, manageable units of work
for the project. They are the building blocks for completing an
activity, finishing a phase, and ultimately completing a process.
Every process model will have phases; however, there are major
differences between models in terms of what activities
constitute their phases and the sequencing of the phases.
Three types of process models are:
1. Specification
• graphic designer
• programmer
• tester
• project manager
• product owner
Practices
Practices are strategies used to execute processes smoothly.
Practices contribute to the effectiveness of a development
process. For instance, a manager can follow proven
management practices for: scheduling and organizing tasks,
minimizing resource waste, and tracking completed work.
Additionally, estimating tasks, holding daily meetings,
improving communication, and doing periodic reviews of the
project are all practices that can help a process run well. A
developer can follow established development practices for:
preparing effective tests, maintaining simplicity, and
conducting technical reviews, to ensure a quality product with
low defects.
Instructor’s Note
As the software engineering activities are discussed, they will be
grouped into generalized phases to give concrete examples of
how the activities can belong to the phases of a process.
Once the core idea of the product is understood, the next steps
are to define the requirements.
• creating a process
• setting standards
• managing risks
• performing estimations
• allocating resources
• making measurements
• improving the process
Linear Models
Waterfall Model
The Waterfall model is a linear process model, which has each
phase producing an approved work product that is then used
by the next phase. It is as if the work product goes over a
waterfall into the next phase, and this continues until the end
of the process. There are modified variants of the Waterfall
model that allow flows to prior phases, but the dominant flow
is still forward and linear.
Under the Waterfall model, the client does not see the product
until close to the end of development. The developed product
V-Model
The V-model is another linear process model. It was created in
response to what was identified as a problem of the Waterfall
model; that is, it adds a more complete focus on testing the
product. The distinguishing feature—and namesake—of the V-
model are the two branches that turn a linear structure into a
“V” shape. Like the Waterfall model, the V-model begins with
analysis and the identification of requirements, which feeds
product information into the design and implementation
phases. The analysis and design phases form the left branch of
the V. The right branch represents the integration and testing
activities. As testing work proceeds up the right branch, some
level of the product (on the right side) is actively verified
against the corresponding design or requirements (on the left
side).
Summary
In both the Waterfall model and the V-model, the client does
Sawtooth Model
The Sawtooth model is also a linear process model, but unlike
the Waterfall and V models, the client is involved to review
intermediate prototypes of the product during the process. As
the process proceeds linearly, there are phases that involve the
client in the top section of the diagram and phases that involve
only the development team in the bottom section, which
creates a jagged “sawtooth” pattern.
Iterative Models
Spiral Model
The Spiral model was introduced by Barry Boehm in 1986. The
model outlined a basic process in which development teams
could design and successfully implement a software system by
revisiting phases of the process after they had been previously
completed.
Parallel Models
The Unified Process model has four phases; each phase have
distinct aims.
1. Inception phase
2. Elaboration phase
3. Construction phase
4. Transition phase
1. Illustrative
2. Exploratory
3. Throwaway
4. Incremental
5. Evolutionary
Continuous Delivery
All the developers can easily see how their work fits into the
product as a whole, and how their work affects other members
of the team.
Scrum
• transparency
• inspection
• adaptation
The product owner is the one person who is responsible for the
product. All product requirements for the developers must
come through this role. The list of requirements for the
product is gathered in a product backlog, which the product
owner is responsible for. The product owner also determines
the priorities of these requirements and ensures the
requirements are clearly defined.
Definition of “Done”
An important definition in scrum is the meaning of being
“done.” The whole scrum team must agree to that definition.
Typically, a requirement for a feature is considered done when
it is coded, tested, documented, and accepted. A sprint aims to
get the expected requirements to be truly done, or “done
done,” rather than having the required features in half-done
states or delivering software that does not work. To get a
requirement done requires communication, integration, and
synchronization by the team members. Half-done work might
arise when a member works independently on something just
to be busy, rather than helping to bring closure to each
requirement. This may mean sometimes going slow to ensure
that each requirement is truly done.
Practices
Extreme Programming (XP) is an Agile methodology consisting
of effective development practices to achieve client
satisfaction. The practices focus on constantly delivering
software, responding to change, effective teamwork, and self-
organization. These practices follow the principles outlined in
the Agile Manifesto. Besides encouraging simplicity,
communication, and feedback, XP fosters respect and courage.
Practice 6: Refactoring
Refactoring is a practice to restructure the internal design of
the code without changing its behaviour. The aim is to improve
the design in small steps, as needed, to allow new product
requirements to be added more easily, thus adapting to
change. For example, refactoring could gradually reorganize
the code to allow easier extension. A large, unwieldy module
can be decomposed into smaller, more cohesive, more
understandable pieces. Unnecessary code can be removed. As
refactoring proceeds, the unit tests are run repeatedly to
ensure that the behaviour of the code stays the same.
Drawbacks
One limitation is that XP is intended and suited for small
development teams, for example, no more than ten people. As
well, having a client available on-site with the development
team may not be possible to arrange.
• eliminate waste
• amplify learning
• decide as late as possible
• deliver at fast as possible
• empower the team
• build quality in
• see the whole
Eliminate Waste
How can software development be wasteful? Consider the
potential waste of time and effort that can arise from: unclear
requirements, process bottlenecks, product defects, and
unnecessary meetings. These are deficiency wastes.
Amplify Learning
Explore all ideas thoroughly before proceeding with actions.
Encourage Leadership
Kanban
Tracking Tasks
Kanban can track the status of tasks completed by a team. So,
for simple tasks, suitable column labels for the stages of
completion would be “To Do”, “Doing”, and “Done.” Initially, all
the required tasks are written on sticky notes and placed in the
“To Do” column. As work proceeds and a task to do enters the
“doing state,” its sticky note is pulled from the “To Do” column
to the “Doing” column. When that task is done, the sticky note
then moves from the “Doing” column to the “Done” column. For
the required tasks, the board easily shows their states at a
glance to the entire team. The team has full visibility of what
needs to be done, what is being done, and what has been
Optional Resources
• Wikipedia. Scrumban.
https://en.wikipedia.org/wiki/Scrumban
Word Definition
Client Satisfaction That the client is happy with the product provided,
so it solves their problem, addresses their needs,
and meets their expectations.