Agile Development in The Real World
Agile Development in The Real World
BOOKSFORPROFESSIONALSBYPROFESSIONAL
S®
gile Dev
This book is a practice guide for new agile practitioners and contains
everything a new project
manager needs to know to get up to speed with agile practices quickly and
sort out the hype
and dogma of pseudo-agile practices. The author lays out the general
guidelines for running
an agile project with the assumption that the project team may be working in
a traditional
elopment in the R
Agile Development in the Real World conveys valuable insights to multiple
audiences:
has used with great success, while showing the decision points and
perspectives as the agile
project moves forward from one step to the next. This allows new agile
project managers or
agile coaches to choose between the benefi ts of agile and the benefi ts of
other methods.
• For the technical team member, this book contains templates and sample
project artifacts to
assist in learning agile techniques and to be used as exemplars for the new
practitioner’s own
Agile
project.
• For the Project Management Offi ce (PMO), the fi rst three chapters focus
on portfolio management. They explain, for the agilists’ benefi t, how
projects are selected and approved,
and why projects have an inherent “shelf-life” that results in hard deadlines
that may seem
Development
eal W
Alan Cline
ISBN 978-1-4842-1678-1
54999
Shelve in:
User level:
9 781484 216781
Intermediate–Advanced
www.apress.com
Agile Development in
Alan Cline
This work is subject to copyright. All rights are reserved by the Publisher,
whether the whole or part of the material is concerned, specifically the rights
of translation, reprinting, reuse of illustrations, recitation, broadcasting,
reproduction on microfilms or in any other physical way, and transmission or
information storage and retrieval, electronic adaptation, computer software,
or by similar or dissimilar methodology now known or hereafter developed.
Exempted from this legal reservation are brief excerpts in connection with
reviews or scholarly analysis or material supplied specifically for the
purpose of being entered and executed on a computer system, for exclusive
use by the purchaser of the work. Duplication of this publication or parts
thereof is permitted only under the provisions of the Copyright Law of the
Publisher’s location, in its current version, and permission for use must
always be obtained from Springer. Permissions for use may be obtained
through RightsLink at the Copyright Clearance Center. Violations are liable
to prosecution under the respective Copyright Law.
Trademarked names, logos, and images may appear in this book. Rather than
use a trademark symbol with every occurrence of a trademarked name, logo,
or image we use the names, logos, and images only in an editorial fashion
and to the benefit of the trademark owner, with no intention of infringement of
the trademark.
The use in this publication of trade names, trademarks, service marks, and
similar terms, even if they are not identified as such, is not to be taken as an
expression of opinion as to whether or not they are subject to proprietary
rights.
While the advice and information in this book are believed to be true and
accurate at the date of publication, neither the authors nor the editors nor the
publisher can accept any legal responsibility for any errors or omissions that
may be made. The publisher makes no warranty, express or implied, with
respect to the material contained herein.
Disclaimer: The views expressed in this book are the author’s own. All
brands and trademarks are the property of their owners.
Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201)
348-4505, e-mail
www.apress.com/source-code/.
Contents at a Glance
Acknowledgments
��������������������������������
��������������������������������
��������������������������������
��xxi
Introduction
��������������������������������
��������������������������������
��������������������������������
����������xxiii
■Part I: Getting Started
��������������������������������
��������������������������������
��������� 1
iii
■ Contents at a GlanCe
Index
��������������������������������
��������������������������������
��������������������������������
��������������������� 291
iv
Contents
Acknowledgments
��������������������������������
��������������������������������
��������������������������������
��xxi
Introduction
��������������������������������
��������������������������������
��������������������������������
����������xxiii
Progressive Elaboration
��������������������������������
��������������������������������
��������������������������������
����������������������� 12
Traditional Approach
��������������������������������
��������������������������������
��������������������������������
���������������������������� 18
■ Contents
Agile Approach
��������������������������������
��������������������������������
��������������������������������
��������������������������������
������ 19
Conclusion
��������������������������������
��������������������������������
��������������������������������
���������������������� 22
Business Alignment
��������������������������������
��������������������������������
��������������������������������
������������������������������ 26
Risk
��������������������������������
��������������������������������
��������������������������������
��������������������������������
����������������������� 26
Find a Sponsor
��������������������������������
��������������������������������
��������������������������������
��������������� 30
Project Types
��������������������������������
��������������������������������
��������������������������������
��������������������������������
�������� 31
PMI
Parallels����������������������������
��������������������������������
��������������������������������
����������������������� 38
Conclusion
��������������������������������
��������������������������������
��������������������������������
���������������������� 39
Additional Tools
��������������������������������
��������������������������������
��������������������������������
�������������� 40
Prioritization Process Using the Delphi Technique
��������������������������������
��������������������������������
��������������� 40
vi
■ Contents
Overview
��������������������������������
��������������������������������
��������������������������������
������������������������ 43
Business Abstracts
��������������������������������
��������������������������������
��������������������������������
�������������������������������
54
Scoping Metrics
��������������������������������
��������������������������������
��������������������������������
��������������������������������
���� 65
Iteration 0
��������������������������������
��������������������������������
��������������������������������
��������������������������������
������������� 67
Hardening Iteration
��������������������������������
��������������������������������
��������������������������������
�������������������������������
67
Release Iteration
��������������������������������
��������������������������������
��������������������������������
��������������������������������
��� 68
Conclusion
��������������������������������
��������������������������������
��������������������������������
���������������������� 70
Additional Tools
��������������������������������
��������������������������������
��������������������������������
�������������� 71
vii
■ Contents
What Is Iteration 0?
��������������������������������
��������������������������������
��������������������������������
�������� 75
Architecture
��������������������������������
��������������������������������
��������������������������������
�������������������� 83
Development Infrastructure
��������������������������������
��������������������������������
��������������������������� 84
Functional Requirements
��������������������������������
��������������������������������
�������������������������������
84
Impossible Projects
��������������������������������
��������������������������������
��������������������������������
������������������������������ 87
PMI
Parallels����������������������������
��������������������������������
��������������������������������
����������������������� 89
Conclusion
��������������������������������
��������������������������������
��������������������������������
���������������������� 90
■Chapter 5: Architecture: Product Foundation
��������������������������������
���������������������� 91
Introduction
��������������������������������
��������������������������������
��������������������������������
�������������������� 91
Definition
��������������������������������
��������������������������������
��������������������������������
��������������������������������
�������������� 92
Balance
��������������������������������
��������������������������������
��������������������������������
��������������������������������
����������������� 92
■ Contents
Agile Practices
��������������������������������
��������������������������������
��������������������������������
��������������������������������
������ 95
PMI
Parallels����������������������������
��������������������������������
��������������������������������
��������������������� 102
Conclusion
��������������������������������
��������������������������������
��������������������������������
�������������������� 102
Overview
��������������������������������
��������������������������������
��������������������������������
���������������������� 105
Infrastructure Environments
��������������������������������
��������������������������������
������������������������� 106
The Requirements Environment
��������������������������������
��������������������������������
��������������������������������
��������� 107
ix
■ Contents
Tools
��������������������������������
��������������������������������
��������������������������������
����������������������������� 113
Conclusion
��������������������������������
��������������������������������
��������������������������������
�������������������� 116
Overview
��������������������������������
��������������������������������
��������������������������������
���������������������� 119
Functional Requirements
��������������������������������
��������������������������������
����������������������������� 120
Requirements Hierarchy
��������������������������������
��������������������������������
��������������������������������
��������������������� 120
Requirements Elicitation
��������������������������������
��������������������������������
������������������������������ 123
Decompose Each Workflow to Use Cases into the Use Case Catalog
��������������������������������
����������������� 126
Conclusion
��������������������������������
��������������������������������
��������������������������������
�������������������� 135
Additional Tools
��������������������������������
��������������������������������
��������������������������������
������������ 135
Descriptions
��������������������������������
��������������������������������
��������������������������������
��������������������������������
�������� 136
■ Contents
PMI
Parallels����������������������������
��������������������������������
��������������������������������
��������������������� 158
Conclusion
��������������������������������
��������������������������������
��������������������������������
�������������������� 159
Software Development as Puzzle Building
��������������������������������
��������������������������������
������������������������� 160
Additional Tools
��������������������������������
��������������������������������
��������������������������������
������������ 161
xi
■ Contents
Requirements Communication
��������������������������������
��������������������������������
��������������������������������
����������� 168
Requirements Traceability
��������������������������������
��������������������������������
��������������������������������
������������������ 168
Validating Requirements
��������������������������������
��������������������������������
������������������������������ 174
Going Further
��������������������������������
��������������������������������
��������������������������������
��������������������������������
������ 177
xii
■ Contents
PMI
Parallels����������������������������
��������������������������������
��������������������������������
��������������������� 182
Conclusion
��������������������������������
��������������������������������
��������������������������������
�������������������� 183
Additional Tools
��������������������������������
��������������������������������
��������������������������������
������������ 185
ATM Project
��������������������������������
��������������������������������
��������������������������������
��������������������������������
�������� 185
Class Diagrams
��������������������������������
��������������������������������
��������������������������������
��������������������������������
��� 189
Sustainability
��������������������������������
��������������������������������
��������������������������������
��������������������������������
������ 200
Osmotic
Communication�������������������������
��������������������������������
��������������������������������
���������������������������� 202
Information Radiators and Big Visible Charts
��������������������������������
��������������������������������
��������������������� 203
Refactoring
��������������������������������
��������������������������������
��������������������������������
��������������������������������
��������� 205
xiii
■ Contents
PMI
Parallels����������������������������
��������������������������������
��������������������������������
��������������������� 215
Conclusion
��������������������������������
��������������������������������
��������������������������������
�������������������� 216
Test Cases
��������������������������������
��������������������������������
��������������������������������
�������������������� 222
Integration Tests
��������������������������������
��������������������������������
��������������������������������
��������������������������������
� 223
Regression Tests
��������������������������������
��������������������������������
��������������������������������
��������������������������������
� 225
QA Compliance Tests
��������������������������������
��������������������������������
��������������������������������
�������������������������� 226
Concurrency
��������������������������������
��������������������������������
��������������������������������
����������������� 227
Code and Run the Automated Integration Test Code (Box 11)
��������������������������������
���������������������������� 234
PMI
Parallels����������������������������
��������������������������������
��������������������������������
��������������������� 239
Conclusion
��������������������������������
��������������������������������
��������������������������������
�������������������� 240
xiv
■ Contents
Additional Tools
��������������������������������
��������������������������������
��������������������������������
������������ 241
Naming Conventions
��������������������������������
��������������������������������
��������������������������������
��������������������������� 243
Sample Integration Test Suite
��������������������������������
��������������������������������
��������������������������������
������������� 243
Daily Meetings
��������������������������������
��������������������������������
��������������������������������
��������������������������������
���� 254
Agile Perspectives
��������������������������������
��������������������������������
��������������������������������
�������� 255
Work-in-Progress Limits
��������������������������������
��������������������������������
��������������������������������
��������������������� 258
No Iterations!
��������������������������������
��������������������������������
��������������������������������
��������������������������������
������ 258
Team Velocities
��������������������������������
��������������������������������
��������������������������������
��������������������������������
��� 259
Individual Velocities
��������������������������������
��������������������������������
��������������������������������
���������������������������� 260
Group Velocities
��������������������������������
��������������������������������
��������������������������������
��������������������������������
�� 260
Putting It All
Together����������������������������
��������������������������������
��������������������������������
������������������������������ 264
xv
■ Contents
PMI
Parallels����������������������������
��������������������������������
��������������������������������
��������������������� 276
Conclusions
��������������������������������
��������������������������������
��������������������������������
������������������ 277
Additional Tools
��������������������������������
��������������������������������
��������������������������������
������������ 277
References
��������������������������������
��������������������������������
��������������������������������
������������ 285
Index
��������������������������������
��������������������������������
��������������������������������
��������������������� 291
xvi
Alan Cline has been a project manager for over 30 years, and a consultant
for 20. He has run projects in a variety of domains: aerospace,
telecommunications, finance, insurance, and software development.
government shops.
As a consultant, Cline has measured his projects’ success rate for marketing
purposes: 68% of the
projects he has completed were released with zero defects and maintained
that value well into their life spans. About 98% of his projects have
completed on time and, when cost was under his control, within 5% of the
budget. (Back in the mid-1990s, that kind of result invited mockery and
disbelief: “Zero-defect projects are simply not possible” was the complaint.)
Today, these kinds of statistics are routine for agilists.
Cline earned his M.S. in Physics and B.S. in Mathematics, both contributing
to his passionate zeal for rigor in software development and project
management.
xvii
Agile Connection, Sticky Minds, and Best Practices for Better Business
Engineer
• Scrum.org Professional Scrum Product Owner
xix
Acknowledgments
I would like to thank all the people involved in this work. Dr. Martha
Lindeman, a user interface expert and professional reviewer whose advice
helped reshape and guide the book; Mary Lynn Monge, a PM and
professional reviewer who kept me honest; Tim Armstrong, a practicing
software developer agilist who helped keep me on track, challenged me with
new agile ideas, and wrote the Emergent Design section in Chapter 10; and
Dave Campbell, who added the humorous artwork found in Chapter 1. I also
thank the kind folks at Apress, whose guidance and diligence kept the book
readable: James DeWolfe, Melissa Maldonado, Douglas Pundick, Mary
Behr, and Kim Burton. Of course, I thank my wife for supporting and
tolerating the many long hours I spent downstairs away from the family in my
man cave.
November 2015
xxi
Introduction
Software development has undergone a sea change in the last 15 years, as the
industry evolved from the traditional “heavy-weight” project processes to the
“lighter” development processes. The development pendulum has swung
from formal practices to extremely informal practices, from Big Up-Front
Design (BUFD) to the No-Up-Front-Anything of emergent design. The
agilists’ argument was that because the product cannot be fully known until
the project was completed, don’t waste time on discovery and
documenting: learn as you go, learn from conversations as you write code,
and don’t waste time learning up front.
I noticed that some recent conference speakers and technical blogs are
moving back to more upfront learning before coding. I gathered my courage
and put together what you are now reading. I don’t expect the reader to take
my word for many of the ideas enclosed, so I cite studies and evidence, from
formal academic papers to anecdotes to support the ideas proposed as to
why one practice may be better than another. The bibliography is lengthy.
There are many good books on agile principles and practices, but there are
also common omissions in those books. The biggest omission is the lack of
skills sets that are needed by the technical team members.
Many times the work is given to “the team” or “developers” and miracle
happens there.
Also, most agile books have omitted the project aspects that must occur
before the technical team
takes over. Agile was developed by developers for developers, and the
actions needed before developers get involved in the project are frequently
missing, such as project selection and chartering, sponsor scoping, initial
requirements, defining stakeholders, and establishing a working business-
technical partnership.
These things need to be done, but often are needed before the technical team
starts their work, or before the technical team is even acquired in most cases.
We need an agile book that is good on hand-holding those who are trying
agile for the first time. Most agile books recommend an agile coach to help
the technical and business team with their first agile project.
Another aspect that concerns us more for this book, is that the traditional
(predictive) approach did not incorporate the sciences of psychology,
sociology, anthropology, and team dynamics that now show up in modern
project management as clear factors of stakeholder management, cultural and
organizational influences, politics, and self-empowered and self-organizing
project teams. While the predictive process recognized that people were
important to project success, none of this knowledge was explicitly factored
into the theory or practices.
xxiii
■ IntroduCtIon
Agile is one of those things that is easier to do than to explain, like riding a
bicycle; but on the other hand, it is much more complex and can benefit from
an instructions manuals to provide specific practical guidance, and indicate
where variations may be chosen. It is paradoxical that the more one
prescribes a particular method, the less agile that method will be—but I had
to try.
Originally, I was afraid to write this book. I feared that I would receive
massive criticisms for not adhering to the agile think of any one particular
method. Then Bertrand Myer (2014) wrote his courageous and inspiring
book Agile! The Good, the Hype, and the Ugly in which he classified the
various agile practices: brilliant ideas, good ideas, ideas of hype (practices
that don’t affect the project success but “feel good”), down to practices that
he calls “ridiculous.”
There are many myths about agile practices, partly fed by the fact that there is
no one canonical agile process, and partly because there are conflicting and
varying flavors of agile. Even professional organizations do not agree on a
single agile approach: there at least seven professional certifications for
agile practitioners.
There is a lot of emotional energy and dogma about which agile flavor to use,
or which process to follow.
Like the carpenter with one hammer that sees every problem as a nail,
organizations mandate a particular flavor of agile to be the only flavor
permitted. Agile leaders sometimes think of their personally adopted agile
techniques as the only tool. Arguments about what is the right way and what
should never be done have escalated to almost religious war status.
For the most part, these books focused on the technical side, and anything
else was vague and general, kind of a “miracle happens here” kind of
approach.
For example, agile books are almost unanimous in their omission of team
skills. Agile teams are “cross-functional,” which means that everyone on the
team does everything: requirements elicitation and analysis, stakeholder
management, design, testing, coding, change management, release
management, database
analysis and design, and on and on. Who can find such a superstar developer,
not to mention being able to afford one if found? This is one of the unrealistic
ideas that this book tries to remedy, and to explain how it does work.
I hope to debunk the myths, or point to formal studies that have; to make clear
what agile is, and what agile is not, what has worked for me and others, and
what hasn’t.
Various agile and pseudo-agile practices are being used every day, and both
the number and diversity of these practices can be confusing. This confusion,
and the unusualness of agile practices, is an obstacle to quick adoption by
traditional organizations, organizations that have been doing software
development their way for perhaps decades.
This book attempts to help the new project manager get on board with agile
practices quickly, to sort out the hype and dogma of pseudo-agile practices,
and give a practical guide to new agile practitioners. It is hard to write a
book like this because agile’s inherent nature is based on values and
principles, and not procedures. The specific agile processes need to be
tailored by the team members to individuals and the problem of the project—
one style does not fit all.
xxiv
■ IntroduCtIon
This book lays out the general guidelines for running an agile project but
from the position that the project team may be working in a traditional
environment. (By traditional, I mean one that complies with the long-standing
predictive process, of which waterfall process is of PM-1.)
Many agile techniques have been proven, but like any tool, the tool depends
on the situation. There are simply some projects or situations in which agile
does not work well. The greatest threat to successful agile is that
management may not buy in on the approach because they are looking at
issues other than product development techniques. Very large projects are a
challenge to agile because strict agile does not scale well, unless the large
project team is broken down into small subteams. Fortunately, small teams
are all that is needed for most software projects. The project manager or
agile coach can help change the situation and project perspective. At least
they can learn the language and show the due diligence needed to convince
upper management to allow them to try.
Project Managers
For those who want to run an agile project, especially if they are coming
from a traditional environment, I provide a particular approach that I have
used with great success. I also show the decision points and perspectives as
the agile project moves forward from one step to the next. I wanted to allow
new agile project managers to choose between the benefits of various flavors
of agile and the benefits of other methods.
If you want to become a project manager (or an agile coach) for agile
projects, read the first two sections to understand upper management’s
perspectives. Try to follow Chapters 4 through 7 closely—a project fails at
its beginning, but the failure is not known until the end, usually when it is too
late. Skim through the role-specific chapters (Chapters 8 through 11), but
study Chapter 12, where it is all brought together from the project manager’s
point of view. It gives a good ground-level view of the agile project
manager’s responsibilities.
Upper Management
This book will explain the principles behind agile, and how agile can
address the traditional needs behind business decisions. Projects are still
selected for the same reasons, but project failure is greatly reduced and
product value is greatly increased. See how agile practices play into
portfolio management, improving ROI, and increasing spending efficiency.
Agile also provides easy-to-use tools for Earned Value Management (EVM)
for more predictable project tracking. Although the techniques are different
from what might have occurred in the organization before, the fundamental
principles of product development that aligns with the business’s goals have
not changed.
organizations that did not know how much they were actually spending on
their projects, or didn’t know how many projects they could complete in a
certain period of time. They had no capacity planning to know xxv
■ IntroduCtIon
whether they could take on more projects or not.) Also read Chapters 4
through 7 on project startup. Both upper management and traditional project
managers will recognize the similarities in those artifacts for justifying,
managing, and tracking a project.
doing. Attend a few of the team’s daily stand-up meetings. Get engaged. It
should help smooth the way and keep the project turmoil to a minimum.
Technical Team Members
If you are a technical team member who wants to follow agile techniques,
skim through Chapters 1
Many agile techniques can be used on traditional products too. Use the
templates and case studies to shorten your learning curve. Agile is easier
experienced than explained, and can be picked up easily with practice. Agile
is a set of values that must be internalized, and that is the harder part.
The first three chapters focus on portfolio management. It explains, for the
agilists’ benefit, how projects are selected and approved, and why projects
have an inherent “shelf-life” that results in hard deadlines that may seem
arbitrary. The PMO needs to understand how and why the agile team
members are more involved in project management, business goals, and even
vendor selection, than in typical traditional organizations.
It explains how a PMO can help agile projects and teams. I attempt to
establish a common understanding between the goals of business management
and those of the technical team.
There are also some agile practices that are bad ideas, and by that I mean that
there is no success data to support that idea.
Agile Transformers
For those trying to change the culture from traditional to agile values, it is
hard to instruct a culture on only facts. Any counter-cultural statement will
seem unrealistic, and the advocate can easily lose credibility. As the saying
goes, “You can’t tell a fish it’s wet—they don’t see the water.” A strong
series of successful projects speaks the loudest, so tread slowly with a pilot
project and scale upward. Be careful of using non-agile practices that call
themselves agile; it runs a high risk of ruining agile’s reputation as an
effective process.
This book does not contain a how-to guide for organizational change, but
there are tips and
recommendations about what may be done at the project level. The best
transformation will start with a pilot project and expand from there, letting
success breed success.
xxvi
■ IntroduCtIon
If you are merely trying to find how agile fits into the industry practices for
software development (agile practices are now more pervasive and
successful than traditional practices), then reading Chapters 1, 4, and 8 may
suffice. Chapter 1 shows how agile fits in with traditional project
management theory, Chapter 4 is an overview of how to get projects started
in Iteration 0: initial requirements, infrastructure, team forming, and
architecture.
There are many good courses on agile project management available, and
this book is the basis for two professional certifications (PMI-ACP and
ICAgile), as well as a source book for a capstone course taught at the Ohio
State University computer science department. Many different techniques can
be used, and some are different than are described here. Whatever specific
steps you take to augment your career in product development, this book
should be a good foundation for moving forward to your better success.
This book is broken into three sections of multiple chapters. Each section is
placed in the order one would initiate, plan, execute, monitor and control,
and close a project—the Project Management Institute’s golden braid through
project management, but from the agile perspective. Each chapter within a
section elaborates an important point of the section’s theme.
Each chapter has an explicit section called PMI Parallels that shows how the
agile techniques comply (or contrast) with the traditional principles of
project management, although quite diverse from traditional practices. The
PMI Parallels section addresses all ten of the Bodies of Knowledge defined
in the PMI’s certification guide (PMBOK, fifth edition, 2013): Integration,
Scope, Time, Cost, Quality, Human Resources, Communications, Risk,
Procurement, and Stakeholder Management. These comparisons show that
Agile
xxvii
■ IntroduCtIon
Side Notes
There are several kinds of side notes used to enhance or clarify points made
in the text. Each note is indicated with a suggestive icon, and is boxed for
emphasis.
Variants this book describes a recommended way of implementing a
particular principle or point, but it isn’t the only way. there are other ways
that may work as well. to indicate that the reader may need to decide on a
different approach according to her or her needs, a veering road icon is used.
Warnings occasionally, the text will guide the reader to a particular kind
of action, but the novice may produce an error because of an unintended or
non-intuitive consequence. the thundercloud icon is intended to dramatically
emphasize actions not to be taken, or errors that can likely occur, in the
situations described in the surrounding text. I tried to use this icon sparingly,
whenever an action taken at face value would seem to be the proper action
but would in effect be an error.
I believe in these techniques, and have proven them, or even developed them
further in my projects. Some of this book contains original ideas and
techniques. However, wherever possible I try to reference other research,
practices, and literature for the point I made. The bibliography is lengthy, and
originally my reviewers thought it too academic and not suitable for the trade
press. I muted the style but maintained the references so skeptical readers can
investigate further on their own.
xxviii
Part I
Getting Started
Chapter 1
People have been running projects for centuries, and those experiences have
led to a science of project management. When people began building
software, however, applying initial project management theory to software
development did not work out as well as expected. Later, manufacturing
practices were applied to create software engineering, which worked only
slightly better. Recently, project management theory and software engineering
practices have made an evolutionary improvement, and agile software
development is part of that improvement. The current state of project
management is the culmination of centuries of experience and theory. It is
especially important for software developers of all kinds and their
management to understand that agile is not another new fad.
There has been great controversy over the new agile practices and
traditional practices. Agile practices use a preconfigured subset of
traditional practices from the predictive theory called PM-1. Agile
practitioners have incorporated “soft-skills” explicitly into software
development practices: cultural, psychological, and sociological aspects of
people, teams, and their roles in the organization. With these additions, agile
has moved into a level of PM theory called PM-2, which describes higher
evolved practices. These PM theoretic levels have been around for some
time. (There is also a PM-3 for complex and chaotic systems, and a PM-4
perceive the project and results are equally as important as the technical
aspects of software product development. This chapter shows how practices
originating in ancient times have grown and evolved into the software
practices of today, a decidedly better way of developing software. A clearer
understanding of this evolution will allow a more precise understanding of
how and why it works better, and allow agile practitioners, agilists, to better
describe and manage the forces that drive success.
• The anatomy of a successful project is divided into three regions: (1) the
technical,
where the product is constructed; (2) the organizational project context; and
(3) the
The first two will be discussed in detail; the third is out of scope for this
book.
• Both the project and project context for a successful project depends on the
social,
with the advent of agile practices. Agile practices still rely on the traditional
Project managers who understand the concepts and values behind the
practices, and the principles
that have worked and have not worked, and why, will be able to adapt the
variety of methods to their project, culture, and teams. As with any
evolutional step, new practices have produced confusion. The role of agile
project manager and business analyst are two important cases, but an
understanding of how those roles are played inside and outside the agile
project clarify those issues.
First, let’s look at how project management has developed from ancient times
to modern times; what has changed, what worked, and what didn’t work. As
George Santayana said, “Those who cannot remember the past are
condemned to repeat it.”
Figure 1-1 comically illustrates the difference between the Persian and
Phoenician approaches. Who would have thought that taking longer to
excavate the dirt would result in completing the entire project sooner? The
Persians had not accounted for the rework from collapsing walls and dead
workers. Successful project practices often are counterintuitive and
countercultural.
The first case of a written project management record comes to use from the
Roman era. A Roman
project manager by the name of Frontinus, who built Rome’s viaducts and
irrigation systems, was the first to write down engineering project
information in 97 AD: political patronage, stakeholder management, project
policies, and technical specifications for the waterways. In Frontinus’s case,
it was a matter of politically protecting himself, since he had no experience
and was assigned to save a failing project. His contribution to 4
Despite building of the ancient great wonders of the world, like the Inca,
Mayan, and Egyptian
pyramids, or the Great Wall of China, and despite hundreds of lesser works
that were built, such as numerous merchant and war ships, city
infrastructures, and other large projects, no known project
products in the shortest amount of time. Unfortunately, the data were specific
to an industry or a profession, and nothing was joined for a general approach
to project development. Many of the practices were based on reputations of
experienced engineers and project leaders, with a “measure-twice, cut-once”
philosophy.
Although the technology improved to make the technical work easier and
more accurate, no significant improvements were made in project
management for two thousand years. What changed? First, it became
recognized as a science, with practitioner- and academic-based research.
Second, software development as an industry was invented. Software
development is a unique enterprise with unique challenges. With new levels
of PM theory, and the application of agile principles, project management
leapt forward to a science of the twenty-first century, and its practices to a
level of success never seen before.
Faced with ever-larger projects and project budgets, and the risk (and
history) of massive failures, the US
Project management for years used a predictive life cycle, also known as the
first evolutionary level of project management understanding, or PM-1.
system (product) rather than the project participants (Saynisch 2010, 5–6).
2013, 54). The system view includes feedback cycles—outputs are added
into future inputs as adjustments to the process involved need to be made—
which causes the outputs to be nonlinear.
they are not intuitive, and people are not good at predicting nonlinear results.
Ironically, the system view behind the “predictive life cycle” has
unpredictability built in. To compensate, detailed plans and rigorous
specifications with close monitoring are necessary. The controls and
documentation are many, and once that structure is in place to drive a project,
it is hard to for the PM to go against that inertia to change direction or adapt
to unforeseen circumstances. The infrastructure and artifacts needed to
control unpredictability and risk works too well, and does not handle well
the unpredictability of executing the project.
well. The assembly line is a good illustration or model of the system view:
raw materials are input, the product is consistently built along the assembly
line, and the output is sold to the customer. In the early days, this system view
was formally applied to software development. Software developers began
developing software the same way that manufacturing built products.
While keeping the system view, the theory of project management evolved
into a new conceptual model called PM-2. It includes a key principle
Saynisch calls “controllable planning”:
and control quickly (frequently) than plan in detail and control slowly
(sparingly).
Whoever plans too much detail loses time and chances.”…But applications
or practical
the fully traditional method of the predictive life cycle PM-1 (sometimes
called a software factory) to a highly reactive, or adaptive, method of PM-2
(originally called a skunkworks).
Projects up to the end of the twentieth century have rarely completed on time,
within budget, or with complete user satisfaction. Software projects have
failed to complete successfully 84% of the time. Lalonde, Bourgalt, and
Findeli (2010, 21–36) summarize the state of Project management evolution:
meet set performance standards and deliver outcomes with time and cost
objectives.
Furthermore, 53% of projects are carried out but do not meet customer
specifications.
There are several reasons for this project failure rate. One centers on how
well the system view,
The second reason that the manufacturing metaphor can fail is that people do
software development, and people are not workstations on an assembly line.
They have good days and bad days, they interact with a dynamic that parts of
an assembly line do not have. People, whether stakeholders or the
development team, are not necessarily repeatable but can adapt to situations.
They can quickly change the way they do business, but formal project
management did not recognize this as an influencing factor (or an asset) at the
time.
To combat the low for software projects, more formalism was added by the
DoD, PMI, and practitioners themselves. There were somewhat successful
attempts to have programs written by other programs from design diagrams,
things such as executable UML. Software practices were moving toward a
rigorous science known as software engineering. 1
There were great debates about whether software development was an art, a
science, or a craft. My university could not decide for years whether teaching
computer science belonged in the engineering school or the applied math
school, and there were emphatic debates on both sides of the faculty.
Software engineering advocates took the science-based approach to
formalize the system view of development. If software development was a
science, then at best, it was an immature science that could grow; or at worst,
it was not applicable enough to software development.
The groundbreaking book, The Structure of a Scientific Revolutions (Kuhn
1970) identifies key indicators for whether a science is mature or not. These
indicators do not imply that immature sciences are less valuable than mature
sciences, but they are more application oriented, which may be inherent in
the nature of the science. This should not be surprising since the existence of
software development is less than 60
years old.
community provides the vast majority of progress in the form of new tools,
languages, and procedures. Agile did not originate in academia, but from the
many agile variations being practiced, few are based on experimental results
that
indicate a new and improved way of working a project. The best we can
hope for is to
years of projects that succeeded or failed. Their conclusions are then based
more
on anecdotal evidence than experimental rigor. In this regard, agile is moving
in
in that the technology is moving faster than the research can keep up. Many
products
come and go as technologies rise and fall. The businesses are in a clamor
over the
next marketing opportunity, such as the next mobile app because competition
in
that space is fierce. For example, the explosive proliferation of mobile phone
apps
was a result of the technology of the smart phone, and not a theoretical drive
to
being solved depend on the pressures of culture and society. Basic sciences,
like
from social forces. For example, currently, a lot of interest has focused on
Internet
factor that software technologists will always be playing catch-up with the
malware
not looking at the principle of how to solve malware cases, but how they can
plug a
There is a plethora of certifications for law and medicine, but law and
medicine degrees require at least eight years of formal university schooling.
Software engineering requires at most a four-year degree.
• Software engineering does not apply lessons learned to the next project.
Until recently, project teams did not hold lesson-learned sessions as a matter
of practice, or if they
did, the lessons learned were not carried over into the next project.
Subsequent
projects were run as if they were done for the first time. Mistakes were
propagated
across projects and teams, unless a team member brought a personal goal to
the
All this is to say that software engineering is an immature science, or one that
is inherently an applied science. As an immature science, the practitioner
must realize that many things advocated in the software world may not be
based on scientific data or principle, but on someone selling something. What
can we, as software developers and project managers, rely on to guide us
toward success? What works and what is hype? We need a workable project
management practice for today’s needs in the twenty-first century.
Morris and Giraldi (2011) explain the two regions of a successful project
that must be considered and managed. Region 1 is the technical core, where
the project team designs, builds, and releases the software to operations. It is
heavily execution-oriented, and agile practices center in that region. We will
delve into that in Chapters 8 through 11.
through 7.
Both Regions 1 and Region 2 have existed traditionally, so are called PM-1
project management theory, one that is based on the traditional predictive life
cycle (Saynisch 2010). What is new is the evolutionary project management
step that has added the “soft sciences” to project management, and is applied
across both Regions 1 and 2. Saynish calls this level PM-2 project
management theory.
PM-3 covers the institutional context for defining the organization structure,
culture, and support for PM-2, and to a lesser extent, PM-1. It defines the
external environment of the organization, and is outside the scope of this
book.
Figure 1-2 shows both Regions and the layers of PM-1 and PM-2. Region 2
contains the organizational support and processes to initialize a project. A
few keys artifacts are listed as examples below Region 2. It has not changed
too much from traditional project management, but PM-2 principles can be
applied to make it more effective.
both regions. Applying the PM-2 aspects to development teams has resulted
in current agile team practices of creating self-organized and self-
empowered teams. Also, the breakdown of Region 1 and Region 2, within
the “soft sciences” wrapper, helps to clarify how the PM and BA are used in
agile projects. These characteristics are discussed in detail in later chapters.
10
With this background in place, we look at how agile got started and how it
grew out of the predictive life cycle approach. Agile does not have a
prescriptive method; rather, it has several frameworks from which agile
values and principles are applied to the team, project, and organization
specifically. Although there are many agile approaches, such as Scrum, XP,
and Crystal, there are more hybrid methods being used than any others.
Practitioners moving to agile must make the adjustment to move from
following a procedure, to working from a set of values and applying those
values to a real team.
Changes made in the product life cycle are exponentially more expensive
than changes made earlier in the cycle. For example, a change that cost $1 at
the specification phase may cost $300 or more if that same change were
made for the product in operations.
Barry Boehm (1981) showed from multiple studies that the later in the
project that the defect is found and repaired, the more it costs, and that cost
rises exponentially with the later the defect is repaired in the product
development cycle. He showed that there are two cost curves: one for large
teams and one for small teams. The larger teams have the greater cost per
defect. The cost of change depends on project size: changes to smaller
projects have a small cost increase with phase. He also showed that more
defects originate if up front requirements and design work is not done before
coding.
design activities, there will be many more requirements and design errors
in the resulting
Kent Beck wanted a development method that would solve many symptoms
of traditional project
development, but most importantly, to flatten the exponentially high cost of
defects that appeared late in the project. A lower cost of change was
important to allow his method of constant change (refactoring2 and
What if the cost of change didn’t rise over time, but rose much more slowly,
eventually
If the cost of change rose slowly over time, you would act completely
differently from how
you do under the assumption that costs rise exponentially. …The flattened
change cost
11
smaller teams, which means the cost-change curve is less because of that fact
alone. XP works on the lighter line, and not the darker line of large project
teams, which most organizations used in those days to develop software.
The 2013 Standish CHAOS report agrees that project complexity and size
affects project results more than methodology for small project teams (total
labor costs of less than $1 million). In fact, traditional and agile projects
fared roughly the same when compared after compensating for the fact that
traditional projects work mostly on large projects.
Overall, small projects have a better success rate than agile projects and
waterfall projects
when you include other types. In the last 10 years, 45% of agile projects
were less than $1
million in labor cost. In contrast, only 14% of waterfall projects were less
than $1 million in labor cost. Head to head, small, agile, and waterfall
projects have almost the same success
factor, but because the methodology produced higher quality results. It also
provided quicker business value to the customer because of its shorter
feedback cycles and higher quality. Developers found working on an XP
team less tedious and more fun. The real success with XP came from its
absorption of customer-developer relations. Beck had added social and
psychological principles to software development, the defining next step in
the evolution of software project management.
Progressive Elaboration
On the spectrum between “big upfront work,” which agile tries to avoid, and
the small repeated iterations of XP, there is a process of discovery to learn
more about what is needed to develop the product. All work done within the
project level—detailed design, coding, and testing—lie within the project,
Region 1 of PM
theory. The work done before the product development gets started—project
sponsorship, stakeholder management, architecture, and initial requirements
—are part of the organizational Region 2. This progress elaboration starts
when the project is chartered in Region 2 and continues until the project is
completed by the development team in Region 1. How much time and effort
is spent in either region distinguishes traditional from agile methods.
Figure 1-3 shows the certainty curve for a typical traditional project. Risk
decreases as scope is progressively elaborated; that is, refined into
knowledge that is more detailed. From charter to detailed requirements, the
team goes through a controlled discovery process. The uncertainty about the
product decreases as the product develops until it reaches the lowest level of
knowledge, a level of unpredictable volatility that can safely be called
“noise.” This is the level at which the programmers find themselves each
day, coding, testing, debugging, rewriting, and so forth. The noise is a result
of entropy, the amount of disorganization resulting from constant changes as
the developers write, debug, and rewrite code.
12
Chapter 1 ■ evolution of projeCt ManageMent
13
There is no upfront work with XP3; code starts very quickly after the project
is authorized. Most documents that are considered standard for traditional
projects (e.g., requirements specs) are not written.
Contrast that with the almost 40% up front work done in traditional projects
(see Figure 1-5) before code gets started.
Figure 1-5 shows a balance between some upfront work and iteration work.
Work above the horizontal line is “upfront work”—discovery work like
architecture and design before coding; work below the line is iterative work
—coding and testing during the iterations. The horizontal line can be moved
downward to represent a full traditional project, or moved upward to
represent a fully iterative project, like XP.
Where this line goes—that is, how much upfront work the team should do
before moving into
The project method chosen will affect the amount of time and rework needed.
Figure 1-6 shows a qualitative curve of the relationship between the project
method used and the effort required, all other things being equal.
14
Chapter 1 ■ evolution of projeCt ManageMent
With the waterfall approach, everything is planned upfront before any design
is started. For each
Agile methods fell into the higher evolutionary scale of project management
when it added sociology, psychology, and team dynamics. Natural selection
processes driven by business value, speed to deliver, team collaboration,
and the needs of individual team members have honed the various resulting
approaches for agile methods. The principles are the same, but agile projects
—that is, projects using agile methods and teams—exceed the results of
traditional software development projects.
15
That is, while there is value in the items on the right, we value the items on
the left more.
Kent Beck
James Grenning
Robert C. Martin
Mike Beedle
Jim Highsmith
Steve Mellor
Andrew Hunt
Ken Schwaber
Alistair Cockburn
Ron Jefferies
Jeff Sutherland
Ward Cunningham
Jon Kern
Dave Thomas
Martin Fowler
Brian Marick
With these four basic values, the Agile Manifesto contains twelve agile
principles (Agile Principles 2001).
1.
Our highest priority is to satisfy the customer through early and continuous
2.
3.
4.
Business people and developers must work together daily throughout the
project.
5.
Build projects around motivated individuals. Give them the environment and
support they need, and trust them to get the job done.
6.
7.
8.
9.
10.
Simplicity—the art of maximizing the amount of work not done—is essential.
11.
self-organizing teams.
12.
At regular intervals, the team reflects on how to become more effective, then
follow agile practices. The first book written on agile methods is called
Extreme Programming Explained (Beck 2000) because the author knew it
was very different from how software was usually developed, and that using
it would take strong cultural adjustment.
17
There are two ways to improve product development. One may improve the
quality of the product by
quality of the car built by using high-quality parts and highly skilled
mechanics and assemblers (product components). One may also improve the
quality of the car by using clean processes, statistical QC controls, lower
tolerance to defects, and so forth. Project management is all about improving
the product and the process.
Traditional Approach
Traditionally, improving quality meant verifying each and every detailed step
of the plan and the work.
• Up-front requirements and design. The end result of the business planning
activity
capabilities, and a feature catalog (although it was not called that) for the
entire
product. Design and coding would not start until the SRS was approved by
all
management stakeholders. Getting through the SRS process could take months
of
From the SRS, the PM would build a hierarchical work breakdown structure
(WBS) for the whole project, decompose it into middle-sized tasks and small
tasks
(activities), and then sequence them in the order that they would be worked
to make
a schedule. All that would occur before construction started.
18
overly long, and time-consuming. (One company had an acronym for these
all-too-
dollars were spent before the programming team had the information they
needed
coding started (wasting the time to build the requirements), or during coding
(causing rework through refactoring and changing the code and tests), or
worse, after
the code and testing was complete, resulting in the exponentially rising
change costs
shown earlier.
feedback. The specs were “tossed over the wall to IT,” built by IT without
sufficient
business context or detail, and then “tossed back over the wall” to the
customer.
The product was installed by the IT department whether it was what the
customer
wanted or not. If the product was not want the customer wanted, and the
customer
had some clout, the product was not installed (or uninstalled) and the work,
time,
place. In the worst cases, many business departments, reacting to IT’s lack of
success
and late delivery schedules, would try to develop their own technology
workforce
within the business units. The economies of scale and integration of
technology that
in-house “contractors” to fill the gaps of what the business units were
building, so the
a partnering relationship.
Agile Approach
19
planning. Only the rough requirements and design are used, then each level
is progressive elaborated into more detail as that level of detail is about to
be
intent that the customer could pass off the spec to the artist and get the
finished
every aspect of anything, so there are always changes to the product. In this
case, the
changes wouldn’t occur until the customer views the final painting. By
reviewing
later the change is made. With a partial product reviewed periodically, the
cost of
change is kept to a minimum because extensive work has not been done
between
reviews, so there is less to change. The time-boxed iterations also keep risk
and risk
• Technology support for unification. The Mona Lisa example doesn’t apply
to this topic, but agile uses a strong projectized approach to product
development. Agile
teams can sit in business units to be closer to the customer, or they can sit in
IT
departments; either way, agile teams are kept small so that the benefits of
small
teams (30 people) do not deliver significantly faster than small teams (3
people)
(Putnam Jr. 2014; Armel 2012; Putnam 2005). The increased productivity of
having
more resources is compensated because the larger teams create more rework,
and
small teams and save the expense of a large number of resources. Agile is
best when
You can see that each of these factors is closely related, which is why agile
is considered a holistic process of product development. Agile requirements
are written with use cases, small chunks of scope that define a user-system
interaction, or user stories, even smaller chunks of scope. The developer
writes each of these mini-scenarios, tests its logic with unit tests, has another
person test it more comprehensively with integration and GUI tests, and then
reviews it with the customer in a user demo. This process may occur several
times within an iteration. Often, in that cycle of review, the customer comes
up with a change to what they thought they wanted, and the build will be
revised quickly, where it is least expensive.
This holistic approach works very well to deliver a high quality product. The
cost of change is small for small projects because the scope of work is small.
Traditionally, projects have failed to complete successfully 84% of the time
(Lalonde, Bourgalt, Findeli 2010, 21–36), but with agile approaches, not
only do projects complete almost all the time, but 80% of the products are
without defect (Lalonde et al. 2010). Their paper says that the sociological
aspects of project management has improved project success.
20
Rico, Sayani, and Sone (2009) reported the researched benefits of agile
methodologies over traditional Project management evolution:
projects around the world, showed that only 37% of projects succeeded; that
is, came in on time and budget (32% in 2008 and 28% in 2004).
However, “the 2011 results represent the highest success rate in the history of
[those reports]”
(Gale, 10–11). The drastic uptick in project success was attributed partly to
economic market recovery, and partly to the new way that organizations are
approaching project management. They are installing Project Management
Offices (PMOs) to integrate fast-reacting, adaptive project management into
their organizations, and targeting projects in a way that fit agile practices
best. The latest Standish Group report (Standish 2013) shows how, for small
projects, success has risen over the last ten years. Many of these top success
factors are agile practices.
• Skilled resources are more often used on agile teams. Team members work
together,
Agile projects are now included in the Software Engineering Institute’s (SEI)
Capability Maturity
21
PMI Parallels
The Project Management Institute (PMI) has introduced in its latest edition of
the PMBOK (Project
The SEI and the International Institute for Business Analysts (IIBA) also
recognize the PMI-ACP and recommends those practices.
Conclusion
In 480 BC, King Xerxes and his advisor General Artabanus had a parting of
the ways, differing on many points of view. General Artabanus is quoted as
saying,
…the best man, in my belief, is he who lays his plans warily, with an eye
for every disaster
which might occur, and then, when the time comes, act boldly.
Certainty, surety, is beyond human grasp. But however that may be, the
usual thing is that
profit comes to those who are willing to act, not to the overcautious and
hesitant.
What do you think about planning? When is planning too much? As a project
manager, software
22
I would like to close this chapter with a quote from the brilliant astronomer
Sir Arthur Eddington, as cited by James Newman (1956). What he says about
science in his day aptly fits the current evolution of software development as
a science today:
Science [software development] has its showrooms and its workshops. The
public
the tested products are exhibited; the demand is to see what is going on in
the workshops.
You are welcome to enter; but do not judge what you see by the standard of
the showroom.
not been time to sweep away. The workers and their machines are
enveloped in murkiness.
quite know what it will be when it is completed and polished for the
showroom. But we
can look at the present designs and the novel tools that are used in its
manufacture; we can
23
Chapter 2
Management
Selecting whether a project will use traditional or agile methods does not
apply at this time. All projects start in the same way.
1.
2.
3.
Find a sponsor.
4.
6.
7.
25
Anyone can submit an idea for a project, but more is needed than an idea.
What is expected to be done for the project? What will the product look like
when it is ready to be used? These questions must be answered before a
sponsor puts any money, time, or effort into the project, or authorizes that to
happen (even a compliance project must have a sponsor).
A successful proposal, one that will entice a sponsor to back it and fund it,
must align with the business goals of the organization. All proposals and
current in-progress projects are contained in the project portfolio, and
managed by a team whose job it is to select “good” proposals that benefit the
organization.
A good project proposal is one that meets the business goals for the
organization and is feasible. The more that the person who submits the
proposal knows about the business goals of upper management, the less work
must be done to get it approved, and the more likely management will
approve it.
Before discussing how a proposal can align with the business goals, we must
talk about what typical business goals are, and how they are expressed in the
project portfolio.
Project portfolios diversify project types and goals for the same reason. The
project portfolio is a mixture of projects that achieve strategic (long-term)
objectives, tactical (short-term) objectives, operational objectives
(infrastructure support, sometimes called “keeping the headlights on”), and
compliance
(externally or internally “must do”) objectives. The mixture of project types
chosen reflects the project culture of the organization as aggressive or
conservative, risk-adverse or risk-tolerant, and so forth.
Business Alignment
Risk
26
Chapter 2 ■ the Birth of a projeCt: portfolio ManageMent
project has known and unknown risks, and at first few of those risks are
known. Although risks are sought and discovered by the project manager
(PM) as the project progresses, some project risk must be known enough for
the portfolio team to make a selection decision. Some organizations are more
tolerant of risk than others are. The nature and contingency of those risks, and
how they are handled, is specific to the organization, the portfolio team, and
the project team.
The portfolio team must justify why they are committing organizational
resources to the selected
project. The PMI dictum favors high-value, high-risk projects first, because
if something goes wrong, the project team will have more time to correct the
problem. High-value low risk projects are selected next, followed by low-
value low-risk projects; low-value high-risk projects should be discarded.
After project risks are identified at the high level, the project constraints
(scope, cost, time, and quality) can be adjusted to avoid some of the risk,
mitigate (prevent) it, transfer it (such as with insurance or certain kinds of
vendor contracts), or develop a contingency plan (“Plan B”) for a particular
risk event. Contingency plans also have budgets and schedules, so have
similarities to subprojects. If the risk is improbable enough, or has low
enough impact, the risk can be acknowledged and accepted (the organization
will live with whatever happens).
If the project is strategically aligned, and deemed to be worth the risk, then
the questions become, “How much investment in time, cost, and resources
will it take to get the results desired?” and “How much will it increase or
retain revenue?” The product is profitable whenever its revenue has
exceeded its investment (funding) and the net revenue is higher than the
maintenance or operational costs. These questions are answered
quantitatively by the project’s expected return on investment (ROI).1
A desired project should not be done if the company will have a negative
ROI, which means it will lose money. Compliance projects and operational
improvement projects are exceptions to this rule; they are accounted as the
cost of doing business. Of course, contingency plans and mitigation costs
from project risk must also be factored in, because they indicate the
probability of a cost increase.
If the project is short, say, less than nine months in duration, then typically the
ROI may be based on a payback period technique. Payback answers the
question, “How soon will the product’s revenue equal the amount of
investment made?” The payback period is the project’s fiscal breakeven
point as measured by time.
If the project is long, then the time-value of money should be taken into
account: a dollar today is not worth a dollar two years from now. For large
investments, Net Present Value (NPV) is often used. If money is borrowed
for the project, then the interest cost of the loan is accounted to the project
cost. NPV is measured in terms of percent increase, or projected dollars.
Any revenue achieved before the investment is completely paid back can be
counted into the revenue for the project as part of the ROI. Consequently,
project funding is delayed as long as possible, dispersing the funds over time
and balancing costs against partial-product revenue. Typical financial
practices will fund a project in increments to maintain this balance between
gain and loss, a practice consistent with agile’s practice of delivering
incremental business value as soon as possible.
Projects are funded based on how long it will take for the revenue to exceed
the cost, and the longer the project takes, the most costly they become. This
means that after a certain point, the project will lose money for the
organization, and should be terminated. In other words, projects have a shelf
life: there is a time when a project begins costing more than the benefits its
product or service produces.
Instead of pushing a project to completion “just to get it done,” or allowing it
to move forward out of ignorance, the “stale” project (one that has exceeded
its shelf life) should be cancelled so the organization doesn’t continue
throwing good money after bad. The PM needs to be aware that at some
point, the project will have outlived its worth, and if it isn’t completed by
that time, it should be terminated. )
1ROI is meant here in the general sense: a payback of the investment made,
and is not to be confused with the very specific calculation called ROI.
27
• Small agile teams have a lower cost of development, both for the team
itself because
it is small (there are no 75-person agile teams) and the software tools
involved. Many
software tools are low cost or free through open source. Agile teams usually
do not
• Agile projects have a higher quality, both during development and after
release.
money spent on the project is less. The product’s ROI is increased and total
cost of
The agile PM must make the new economics of software products reflect
these results to the boardroom and portfolio. There are plenty of statistics
that show significantly improved risk management, ROI, cost, delivery
speed, and quality. Rico, Sayani, and Sone’s book discusses the financial
benefits of many of the aspects of agile projects. (See also the references in
Chapter 1.)
focuses on the development of the project and not the entire life of the
product. However, the lion’s share of cost and time goes into the product
once it is in operation. Development is typically only 20% of the time and
cost of the product, with maintenance accounting for 80% of the product’s
life span, and 60% of the cost (Boehm 1981).
28
The three phases of a product’s life span, starting at release, are informally
called sunrise, zenith, and sunset. (The military calls the product life span
“lust to dust,” in that the product goes from a much-desired idea to one that is
retired.)
effort at the beginning of the product life span. The product moves to
operations
and enters its early maintenance stage.2 The sunrise period is often called the
“warranty period,” the amount of time after the product is released that some
part
periods are 30, 60, or 90 days. If no defects are discovered in a time equal to
the
• Zenith phase: During the Sunrise period, some defects may be found, but as
they are
repaired, the effort on the product decreases until it is stable and the product
is in
• Sunset phase: After a long time (sometimes ten years or longer), the
product is
phased out, and reaches its sunset period. It is eventually replaced with
something
The full product life span must be known to calculate the total cost of
building and operating the product. When the product will be retired or
phased out is usually not known, and thus frequently ignored.
A rough estimate of how long the product will survive, plus the time and cost
estimates for development, is usually sufficient to select a project at the
portfolio level.
zero-defect products.
29
build the product, cost of product release, cost of training, and cost of
maintenance and support.4 All this is the total cost of ownership (TCO) for
the product. TCO must be less than the product’s revenue and benefits, and
the longer the product is in development, the higher the TCO. This is another
factor inherent in the project’s shelf life.
For traditional projects, the ROI for the project doesn’t occur until the
product is well into the zenith stage or later. For agile projects, ROI can
occur after as little as 30 days. Project managers must keep the total cost of
the product in mind, which is usually not the first thought of the technical
team. You can be sure the sponsor, and most of the stakeholders, keep the
TCO in mind if they are contributing to the project funding.
Find a Sponsor
It is important that the management team and its infrastructure show support
to allow the assets of the organization to be used to develop the project.
Those assets include budgeted funding, revenue, staff resources, physical
assets like computers and office space, and eventually sales and marketing if
necessary.
The stakeholders will expect the project to have a sponsor, or they will not
see the project as truly viable. It is not uncommon to see projects fail as
stakeholders avoid project team meetings—they don’t want to waste time on
what they consider a failed effort.
The portfolio team usually wants answers to such questions as: Why should
our organization approve this as a project? What happens if we don’t? Will
this project accomplish something that is aligned with our company’s
mission, vision, and goals? How much time and money will it take to
accomplish? If the sponsor does not provide these answers, the portfolio
team may ask for a little investigative work before the project—
its due diligence, that partly justifies doing the project; a feasibility study is
performed to get that information.
Sometimes a sponsor won’t step forward until these data are known.
The sponsor or portfolio team decides if the proposal warrants the time and
effort of a business case, sometimes called a financial feasibility study, to
collect the data the portfolio team needs to decide if the project should
proceed. The business case is not a technical study to determine design
options, but to support the decision to add the project to the organization’s
list of projects to do, and at what priority.
30
The project proposal provides the structure and framework from which the
feasibility team can collect the initial financial data. They can add the
business case data to the proposal. After authorization, this same document is
the basis for the project charter. Since the portfolio team meets periodically
(it is rarely a day-today decision event), a proposal with a business case will
move faster through the decision process than the three-step process of
proposal, feasibility, and authorization. I recommend always submitting a
fully prepared proposal if the sponsor is available and willing to commit to
the project at the time the proposal is written.
• Some organizations will assign someone to build the business case, and
write off the
expense as the cost of doing business.
part of his or her budget to do the study, or charge the study to operating
costs.
• Often, the business case is built by the person delegated who is later
assigned as the
PM for the project. (The PM and other roles of the project have not yet been
selected,
• If a standing technical team exists, then the business case is better prepared
by both
The data to answer these questions can usually be collected within three to
ten days, depending on the complexity and size of the project.
Project Types
The portfolio team evaluates each project proposal to select the best
combination of project types (strategic, tactical, operational, compliance) to
fit or align with upper management directives. These project types are
described briefly next.
projects often have higher levels of risk than the others do. Building a new
product
of targeted business units. Installing a new set of computer databases for all
5An “operational” project can get confused with operational tasks. A project
is a “temporary endeavor that is undertaken to create a unique product,
service or result” (PMBOK 2013), and is very different from operational
tasks, which are recurring and provide continual support for the organization.
Operations and projects follow different sets of rules.
31
all personal data from the medical history database to comply with HIPPA6
laws and regulations is an example of a compliance project.
Of course, as organizations change, their directives and goals change, and the
portfolio of approved projects will change. Organizational-direction changes
contribute to imposed deadlines for a project.
A good mix of project types optimizes the portfolio to minimize risk and
maximize benefits. The
Many PMOs (and portfolio teams) cannot tell how many projects their
organization has the capacity to execute, thinking they don’t have enough
resources. Actually, they have not organized the portfolio properly, and if
they did, they would find more resources available. Improper portfolio
organization is the second largest waste of a PMO. (Trying to multitask teams
across multiple projects at the same time is the first largest waste. We will
deal with this counterintuitive principle in later chapters.)
32
For the portfolio team to approve, deny, or defer a project proposal, the
proposal needs enough data to determine business alignment, the
stakeholders who are involved, ROI, TCO, general risk factors, rough-order-
of-magnitude (ROM) estimates for cost and duration, and other information
collected to justify the project.
Selecting the right mix of projects for the organization is important. Forrester
Research (Symons et al.
2008) recommends that projects should be selected from multiple criteria for
each project type. The criteria depend on what is important to the portfolio
team and the organization, within each type, such as alignment with the
business strategies, risk to the organization and the candidate project, return
on investment, and total cost of ownership of the product. Each organization
will have its own selection criteria, but this chapter discusses a few of the
most important ones common to all portfolios.
• Does the product align with business strategy? The sponsor (or portfolio
team) has
probably already decided if the product or service, the result of executing the
project,
aligns with current business strategy. The business case will verify that
earlier
decision. If the project does not align closely enough with business strategy,
it is not
risks and costs at a high level. The budget needed is then determined by these
factors
along with the risk response. If either the investment cost or TCO is too high,
or the
ROI too long, the project is no longer a candidate. If the cost is acceptable,
but the
funding is not available now, then the project can be deferred until the next
portfolio
project in small increments during the project’s life span, and augment it by
any
• Where should the project fit into the portfolio? The portfolio is sorted by
the value
date; funding is not yet available; or the culture is not mature enough to
develop or
accept such a product. Of course, prioritization works the other way: certain
projects
are urgent, and must be moved to the top of the list. This is common for
projects that
• Are the resources available? If the project is viable, are there enough
people to work on the project now? Each project proposal in the portfolio
may list a first guess of the
project team members, how many people of what skill set (role) need to be
involved.
If they are added to the new project being proposed, how much will the other
7An important Agile rule says to never use the same core team member for
multiple concurrent projects (multitasking), but some people are not needed
full-time, such as database analysts, tech writers, or representatives from the
help desk or operations team.
33
The portfolio team queues the projects from the highest priority to the lowest
(exactly the way an agile project handles its feature backlog). The projects
are assigned (or continued) as warranted by the capacity of the organization.
A good strategy to use: fill the portfolio list with slightly more projects than
the organization has capacity to do, whether limited by people, money, or
something else. Give up on the really low-priority projects—by the time that
those projects are ready to go, business and circumstances may have
changed, and newer proposals will preempt the low-value potential projects.
It is important that the organization knows how many projects they can
support in a given time period, usually one fiscal year, so they can optimize
their resources and finances.
of this “project buffer” will ever get selected for completion—a maxim from
the agile method DSDM (Cohn 2006).
The project charter is a key document for a project, and many projects have
failed without one. It is the next step after a proposal has been approved,
which usually is tentative depending on more detail from the sponsor.
The charter does not have to be big—one or two pages is sufficient. The
charter will contain the
sponsor’s vision, mission, and roadmap for the project. The roadmap can be
monitored to act as high-level success criteria for project progress. The
project will also need an estimate of ROI to justify the funding from upper
management.
34
The project vision is the sponsor’s dream. It is why the sponsor is providing
funding, support, and how he or she expects the project result to fit into and
contribute to the organization in the future. The mission statement is the
practical implementation of the project. It is the tactical description of how
the project will accomplish its business goals.
If the sponsor is going to add money, and ensure that the project will be
completed in time to see a positive return on investment, he or she will
estimate how long the project will take. Toward that end, he or she will
define interim waypoints of completion at a high level, a series of objectives
for the project. An objective is a key event or deliverable that contributes to
the progress of the project goal consistent with the objective.
Common agile objectives include the feature backlog (a list of features from
the stakeholders), working code for a key feature, a demo of the partially
delivered product, and a key stakeholder approval meeting.
• Vision statement: The reason that the sponsor drives or supports the
project.
• List of key stakeholders: People who play a key role in the project, and can
help
35
These five (or six) elements are all that are needed for the project to move
forward to the next level of detail. They are enough to assign a project
manager, and often enough to convince the organization to back the project.
Traditional charters will contain much more information about the project up
front but agile projects will use this “barely sufficient” charter, allowing it to
grow as new information is discovered during the project.
The project charter serves the portfolio team, project manager, program
manager, and others in many ways. The following list describes some the
many uses for this key document.
key constraints of scope, cost, and schedule are listed, and if desired,
financial
from the stakeholders are provided, which help the PM manage expectations
and
keep the project goals in sight. The charter defines the scope at the highest
level, but
allows the PM to get a jump-start on the project right out of the portfolio
gate.
not required) for the PM to update project status so the business stakeholders
can
use the on-going proposal like a status report if they want more detail than a
simple
within their program,8 and find dependences between the program’s projects.
This version of the project charter is not final; as project knowledge changes,
the project progress should be periodically reviewed to see if it should
continue, or be cancelled. Unfortunately, once a project is underway, few
stakeholders review the project status to make that determination.
Some PMs will fight to save a sinking project, and sometimes will succeed;
but a better PM knows when the project will sink, and will evacuate the
stakeholders from the wreck in time. Fortunately, most agile projects finish
successfully on all counts: schedule, budget, scope, and customer
satisfaction.
36
Managers are aware that long-range estimates (say, longer than one year) are
not reliable, so increasingly, portfolio teams review the portfolio for
changing priorities, and the progress of in-flight projects and their ROIs,
typically each quarter. The frequency of portfolio review usually coincides
with the funding allocations, which can be allocated a fiscal quarter at a
time. This approach allows the organization to make quicker adjustments to
their funding spending, business strategies, and minimize the risk of bad
estimates.
The review may also be driven by how often upper management wants status.
Annual reviews of project status are not likely to be frequent enough.
If the project charter is the standard way organizations start and identify
projects within the portfolio, then the charter is updated each time before the
portfolio is reviewed. Budgets, status, milestones, financials, and other
information of each project can be updated in the project charter, and is
usually rolled up into an executive level red/yellow/green dashboard report
that communicates the status visually at a glance.
“stop throwing good money after bad.” In this case, the PM joke applies:
“What’s worse than beating a dead horse?” Answer: “Betting on it.”
Throwing more time and money onto a project that should be killed is like
betting on a dead horse.
For some reason, projects using agile methods have gained a reputation that
some have mistakenly
37
projects try to define all detail before any coding gets started; agile projects
collect
• How short are the feedback cycles between the development team and the
customers
or stakeholders before the product is revised? Agile teams try to work with
customers
PMI Parallels
The project charter, as described earlier, complies with what the PMI calls a
project charter, although traditional projects have required much more
predictive documentation and more guarantees before
proceeding. For agile projects, the charter is sufficient for the portfolio team
and PM as described.
After the portfolio team authorizes the project and the PM with the charter,
the PM of a traditional project begins to build the various management plans,
which are often voluminous. Agile projects rely on the principle of “barely
sufficient documentation,” and these subordinate plans are not built. They are
either not needed the data is not well enough known until project execution
gets under way, or because the policies are built-in to the agile practices, a
kind of preconfiguration of project management approaches.
many management plans are unnecessary because they are defined by the
agile process itself. The agile PM
will not write those plans, except for the project schedule and milestones,
which are, or should soon be, in the charter. (Later, the sponsor, PM, and
technical team will build other documents, most notably the release plan—a
schedule of iterations.) What may be called a “management plan” for agile
projects is the one- to two-page charter.
9The ten BOKs can be easily remembered by the mnemonic “I Saw Two
Crows Quietly Having Coffee and Reading Poetry Slowly,” referring to
Integration, Scope, Time, Cost, Quality, Human Resource, Communications,
Risk, Procurement, and Stakeholder Management, respectively. Special
thanks to Richard Vail of Vail Training Associates.
38
Conclusion
• Minimize risk, both during the project and after the product is released
• Maximize the project’s return-on-investment (ROI)
This chapter discussed how the portfolio team selects a project for
execution, using the project
The project proposal gives management enough information for each of them
to get project momentum
started and a leg-up on getting the product out the door. The project charter is
the melding document for a great partnership between the technical team and
the business team going forward.
Most agile books focus on the technical aspects of the project itself: Region
1 of the technical domain; but equally important is the organizational context
and culture that supports the project, Region 2.
Fortunately, both groups want the same thing: the quickest business value to
the customer with a minimum of ceremony and cost. Agile teams interpret
this as getting a product to the customer as quickly as possible with short
feedback cycles and controlled rework (refactoring). Management interprets
the goal as obtaining high ROI with low maintenance costs for a product that
benefits the organization.
At this point in the project process, a kernel of a product idea has been
defined, a sponsor to fund and support it has stepped forward, and a project
manager can be assigned to continue to drive the project, refining detail and
estimates as needed. For Region 2, there is little difference between
traditional projects and agile projects, except the expectations of the
respective members of those schools of thought.
In summary, Table 2-1 shows the key artifacts of this step in the process, and
who probably takes ownership of that task. This table identifies the general
deliverables for progressing a project from proposal to initial execution, and
could be used as a general charter structure.
Objective
Owner
Anyone
Proposer or Sponsor
Find a sponsor
Sponsor or delegate
Portfolio team
Sponsor
In the next chapter, we talk about how the project manager travels through
Region 2 to the boundaries of Region 1 and what must be accomplished
along the way.
39
Chapter 2 ■ the Birth of a projeCt: portfolio ManageMent
Additional Tools
The Delphi technique10 was developed by the RAND Corporation in the late
1960s as a forecasting methodology. Later, the US government enhanced it as
a group decision-making tool with the results of Project HINDSIGHT, which
established a factual basis for the workability of Delphi. That project
produced a tool in which a group of experts could come to some consensus
when the decisive factors were subjective, and not knowledge-based.
Delphi has worked well when prioritizing national funding for projects
among different states with conflicting goals, or if the scale of the decision-
making problem is very large:
The size of the budget for ASSIST, and the large number of proposals
submitted, generated
far more than could be considered individually. In view of this, and the
need to identify
[Hall92]
are based on opinion, and can be directly converted to a formal model, when
the data is more
knowledge-based.
The remainder of this document describes the general procedure for defining
key criteria and prioritizing items that use those criteria (for example, project
funding). It is a variation on the classic Delphi technique adapted from the
National Cancer Institute to fit the particular problems of corporate project
prioritization.
1.
common choice.
2.
the projects, or be familiar with experiential criteria that would allow them
3.
build a list of criteria that all think appropriate to the projects at hand. Input
from
4.
The panel ranks the criteria. For each criterion, the panel ranks it as 1 (very
or emotionally.
5.
Calculate the mean and deviation. For each item in the list, find the mean
value
and remove all items with a mean greater than or equal to 2.0. Place the
criteria
in rank order and show the (anonymous) results to the panel. Discuss reasons
and assumptions for items with high standard deviations, which indicate high
levels of disagreement. The panel may insert removed items back into the list
after discussion.
6.
Re-rank the criteria. Repeat the ranking process among the panelists until
the
results stabilize. The ranking results do not have to have complete agreement,
but a consensus such that the all can live with the outcome. Two passes are
often enough, but four are frequently performed for maximum benefit. In one
variation, general input is allowed after the second ranking in hopes that
more
the list.
7.
about 70% of the total number of projects. (For example, give each panelist
21
41
8.
Rank projects by constraint and preference. Each panelist ranks the projects
first
by the hard constraints. Which project is most important to that panelist?
Some
projects may be ignored. For example, if the total corporate budget is 100
million,
the panelist allocates each project a budget, up to the maximum requested for
that particular project, and such that the total of all budgets does not exceed
the $100 million. Some projects may not be allocated any funding. Next, each
panelist spreads his or her preference points among the project list as
desired.
Some projects may get ten points, others may get none, but the total may not
9.
Analyze the results and feedback to panel. Find the median ranking for each
project and distribute the projects into quartiles of 25th, 50th, and 75th
projects, with preference points, and show to the panel. Projects between the
discussed. Once the reason for the large difference in ranking is announced,
10.
Re-rank the projects until it stabilizes. After discussing why some people
(minority opinion) ranked their projects as they did, repeat the rankings.
Eventually the results will stabilize after now more than four passes: projects
will
come to a consensus. Not everyone may be persuaded to rank the same way,
but
discussion is unnecessary when the opinions stay fixed. Present the ranking
table
to the decision makers, with the various preferences as options, for their final
decision.
After the first pass using the preceding procedures to obtain a ranking,
second and subsequent passes can be use multipoint vote to set a clear
prioritization. Instead of asking the panelist to assign values 1, 2, or 3, ask
them to assign points to each item, up to a maximum of N points, where N is
70% of the total number of items in the list. (For example, if there are 50
items in the list, then every panelist assigns no more than 35
points to all items.) This approach forces some item to have zero points, and
allows the panelist to reflect higher priority items with more points.
The resulting ranking of mean and standard deviation is more granular, and
allows better discussion and stability of the prioritized list. High standard
deviations still need to be discussed for hidden assumptions.
42
Chapter 3
Project Startup
Overview
In the previous chapter, we saw how and why the portfolio team selected the
project. It ended with a project manager being assigned to move the project
forward, guided by the project charter. Before the actual product construction
gets underway, some preparatory work is necessary, which is critical to
cultivating the fertile ground for both the business and technical team and
sowing a good working partnership
between them.
In more general terms, this chapter will describe the objectives in Region 2
(organizational preparation) with the sociological and psychological aspects
that differentiate PM-2 from PM-1. It also addresses the differences between
traditional and agile upfront work and roles before the actual construction
work starts.
Iteration 0 is the pre-development work that both the business team and
technical teams must do before the actual product construction iterations
start. Whether activities should happen before or within Iteration 0 is not
clean; the tasks can be moved as needed. Generally, the acquisition of the
technical team and the technical team meeting initiates Iteration 0. This
chapter covers project startup; Iteration 0 activities are discussed in
Chapters 4 through 7.
During the project manager’s discovery trek through Region 2, he or she must
pass certain milestones (objectives or artifacts1) to maintain project
momentum. Each step informs later steps in the project. The artifacts comply
with the agile axiom barely sufficient documentation; each one is one to two
pages in length.
Each objective and artifact is achieved through a group facilitation with the
PM, business analyst (BA), stakeholders, and team members, as appropriate.
1.
2.
Develop the project abstract, a high-level view of what is, and what is not,
in the project scope, all stakeholders’ objectives, and relevant business
workflows.
3.
will be engaged, and how they will receive or provide information of certain
kinds.
1Here artifact is used as a key document that informs later parts of the
project, or members of the project. Interim or working documents are also
created, used somewhat like a scratchpad, and discarded, so are not
considered artifacts.
43
4.
Build the feature catalog, a list all the features of the product, prioritized by
business value and estimated for size; also called the product backlog.
5.
Build a preliminary release plan with the business and sponsor, defining
iteration lengths with high-level scope content, and applying release
milestones to the
calendar.
A common point of confusion is where the PM and BA fit into agile projects.
The PM and BA play the traditional role in Region 2 (project selection and
pre-development work), and they play a different role in Region 1 (technical
development during project execution). Although the roles in Region 2 are
more traditional, the relationship between the PM and stakeholders are
improved if agile values are added into Region 2 activities.
• Define and gather the stakeholders and customer SMEs to form the business
team.
(The charter only contained some of the stakeholders; the PM must discover
any
• Identify with the business team their objectives and expectations, and
reconcile
• Proceed from the charter to gather the high-level scope with the BA to build
the
The duties of the PM will change significantly when Iteration 0 starts; the PM
becomes the APM.
44
Agile Variants the Scrum agile method defines a role called product
owner (po), a single person, usually the sponsor, who represents all
requirements and needs of all stakeholders. all requirements are the
responsibility of the po, and all stakeholders must go through the po to get
their desired features into the product. the po and all project team members
work together to perform all actions—requirements, analysis, design, coding,
testing, and change management.
other agile methods, such as Xp, do not have a single person control all the
requirements, but allow the technical team to discuss requirements directly
with each of the stakeholders who wish to present their feature. the entire
team will talk with each stakeholder and work out exactly what needs to be
implemented. refinements and changes will occur at the code level as the
customers think of new features or change their minds.
If the product is small, and the sponsor wants to get directly involved, these
variants can work well.
However, there are several practical problems with this approach being
applied in Region 2.
• The technical team is not available at this point in the project. It is the PM’s
job to
define and form the team for the project. 2 Most agile books do not address
this issue, but assume the technical team already exists and focuses on
Region 1 aspects of
product development.
to work with the team. Many agile books expect daily engagement, which is
ideal but
rarely occurs. The sponsor usually has many projects and executive
responsibilities
to perform, so the sponsor will delegate a PO for large or complex projects.
It works
equally well to have multiple customer SMEs talk with the BA, and by
spreading the
work, does not take as much time from any single business individual (except
the BA).
usually on the critical path designing, coding, and unit testing. They have no
time
and cull down to their essence, then the developers can spend their time to
produce
• Once the PO is assigned, can he or she really speak for all the stakeholders
and
customers at the proper experience level needed? Many customers think not,
and
prefer to speak for themselves, and represent their own needs. Reconciling
business
nor do developers, testers, and other non-BAs. Agile books that address the
PO’s
responsibility (or the customer-developer requirements sessions) in Region 2
are
rare or nonexistent.
45
From this point forward, I will assume the BA is the stakeholder liaison for
requirements purposes, and the PM (and later, the APM) is the liaison for
stakeholder expectations and project facilitation and reporting.
During Region 2 activities, before the actual product construction starts and
the product fundamentals are identified, deeper aspects of requirements
discovery are needed, such as defining core features, examining business
flows, and defining business rules. For example, automating a large complex
payroll system is quite different from setting up a web site to track sales.
Although agile books discuss defining large-grain scope features ( epics and
themes) during Region 2, they primarily focus on Region 1 requirements,
which are stripped to single-statement “headlines” (user stories) of how a
user interacts with the system.
• Analyze the business workflows with the business team to define the
features (and
themes, epics, and use cases) within the scope of the project. It is up to the
BA to
ensure that the right product is being built, and up to the technical team that
the
• Elicit, discover, and refine the high-level requirements scope of the project:
features with the business SMEs, and helping them prioritize the feature
catalog by
Warning Some agilists may argue that detailed valid requirements are not
needed at this point because requirements cannot be known completely and
changes can be made whenever it occurs to someone to
agile projects are fairly stable in the face of frequent changes, but performing
unnecessary changes because the requirements were not done sufficiently
before implementation is what another agile method, lean, calls
46
The PM should keep in mind the maxim: Success is political, not technical.
A perfectly built doghouse is a waste of time and money if the dog won’t
sleep in it. Ensuring that the stakeholders will “sleep in their house” is
foremost the responsibility of the PM, and to a lesser extent, the BA and
technical team.
During the stakeholder kickoff meeting is also the time to identify and get
consensus on the value the stakeholders expect the project to return. Of
course, different stakeholders have different expectations, and the PM must
reconcile these differences into a single list of objectives for the project. The
context diagram (discussed later in the chapter) is essential for this task.
The end users are often overlooked as key stakeholders who contribute to the
ultimate success of the project. They should be counted as stakeholders, and
customer representatives should be invited to the business kickoff meeting
and the user demos as much as practical. If the end users are public
customers, then focus groups or equivalent techniques are used to collect
their input.
stakeholders to discern what they expect from the project. Ensure that the
sponsor
business team and technical team know how to work with each other; such
as, the
agile approach, the change management approach, what they should expect
for
define who wants what from the project (engagement grid), and how they are
informed of project information (communication plan).
Warning the project manager is held accountable for the success of the
project, and the project’s success depends on the stakeholders’ expectations
being met. For a project with a single product owner, that removes the onus
of success from the pM and puts it on the shoulders of the po. If they are not
skilled at this delicate task, stakeholder expectations may be disappointed.
even if the project technically fails (or have unnecessary problems), the pM
will still take the blame for it. I always prefer to be responsible for my own
success, which is why I don’t want “not-me” to manage stakeholder
expectations.
47
Projects where the stakeholders hand off the requirements and then disappear
for months or years are doomed from that day forward.
The purpose of the business team meeting is to gather the business partners of
the team, officially begin the project, collect expectations, and set up a
working agreement (“the ground rules”) between the business team and the
technical team. This working agreement is sometimes called “the ground
rules.” They outline how the business team will develop the product, but
there is plenty of room for adjustment, especially in a full partnership
relationship. It is not the business unit’s job to tell the technical team how to
do its job, and it is not the technical team’s job to tell the business unit how
to do its job.
• Official launch. The sponsor explains his or her mission and objectives for
the
the PM for the team, many issues that might later arise are defused. The
sponsor’s
presence gives official authority to the project and the PM as she or her
explains his
minutes long, it is one of the most important aspects of the kickoff meeting.
• Identify all stakeholders. The project charter rarely identifies all the
stakeholders,
nor does the associated business kickoff meeting. People who represent key
the external systems that will impact, or be impacted by, the new project.
Frequently,
and when, and not all stakeholders need to be engaged with the same
frequency.
Example: The helpdesk can get involved a few weeks before launch, unless
they get
member are identified, with details of how each member will contribute. The
business roles are typical and the same as for traditional projects. They are
listed
here for completeness and to clarify what is meant about a particular role. Of
course,
a role may be filled by multiple people, or one person may fill more than one
role.
Sponsor: Champions the project to higher management and peers, defines the
vision and mission statement, and provides funding.
protect their business units’ interests and ensures that the project delivers the
business workflow. SMEs enter and leave the project as they are needed, and
48
Agile project manager (APM): Many small agile projects do not have a PM,
so
the work is delegated during the iterations to an iteration coach. When a PM
is
involved, usually that person is involved in the business aspects for the
project,
iteration coach. It is common for the PM and iteration coach to be the same
person, but the skills sets are different enough that sometimes that person is
projects, the same person can work as PM outside the team, and as an APM
will move at the rate of these meetings. Describe how escalation issues will
be
handled. The PM needs to know what kind of data goes to whom, and how,
and
meetings, product demos after each iteration, status reports, change requests,
task
• Meeting Minutes. The meeting minutes are the PM’s most powerful
political tool.
Key meetings will have agendas, minutes, and action items, are distributed to
each
what they expect the product to do for them. It is necessary to help define the
project
scope, and their expectations of the result. Make it part of the meeting’s
action items,
objectives and expectations, will be the focus of the next meeting. See the
upcoming
documentation repository (the docBase) for review and archive. Tell the
group where
schedule it now and skip it later if necessary, then fight the calendar each
time a
meeting is needed.
Usually one or two hours is sufficient duration for a business meeting, and no
meeting should be longer than two hours without a break (Friedman and
Weinberg 1990, 434).
49
The sponsor’s mission statement defines the project and product scope’s
outer bound because all product features must fall within the mission
statement. The stakeholders’ expectations for the product must be verified
against the sponsor’s mission statement and their own requirements. If the
stakeholders are expecting something inconsistent with the mission statement,
those expectations need to be clarified immediately. A conversation with the
sponsor will usually resolve the disconnect quickly, or change the mission
statement, or determine that the person is actually not a stakeholder for the
project.
It is best if the technical team has a full business partnership with the
business units. The PM, technical team, and stakeholders are the embodiment
of that relationship. Some organizations have an order-taker relationship—
the business units dictate what the team will develop, and in the worst case,
micromanage how and when they will develop it. 3 The converse
relationship—that the project team will develop a product with little or no
feedback, and deliver it to the business units who must then live with the
result—is no better. That relationship is an example of the “throw it over the
wall to IT” syndrome where the stakeholders wait in silence for delivery.
These relationships don’t yield a satisfied customer or a superior product.
Consequently, these poor relationships add to the formal risk of the project,
to be noted so by the PM. If the culture expects that is how projects are
managed, then that is another stakeholder expectation that must be changed
and managed for the agile project to move forward successfully.
If a partnering relationship doesn’t exist between the business units and the
IT department, then
beginning a history of projects that are delivered with full satisfaction will
build a good relationship, one that will be built on credibility, trust, and
respect. Full project success means delivering the product with all
requirements met, on time, within budget, with zero defects, predictably.
• Never undersell or oversell the product (report status accurately, for good
or for bad)
• Always be honest with what the product will and will not do in a timely
manner
• Adopt a “no surprises” policy to the stakeholders and the project team
Most of the time, the PM facilitates group sessions so that all attending
stakeholders come to their own conclusions. Transparency is a good policy
in personal and business relations. Misleading the stakeholders never ends
well.
Key Point Many people have a misconception about the role of project
manager. Some people think pMs “control” the project, and have the right to
deny scope, cost, or schedule changes. the pM is a facilitator, and the
stakeholders often outrank the pM. If the pM takes a hard stand against the
wrong kind of stakeholder, the stakeholder can roll right over the pM and
flatten their career. the pM should provide project data to offer consequences
of stakeholders’ decisions and propose solutions, but they are never a
“project controller.”
Define Roles and Responsibilities
50
Table 3-1 shows a partial RAM for an agile project before the iterations start
(Region 2). Keep in mind that these roles are to identify skill sets, and are
not strict roles for particular people on the team. Developers and testers may
also be involved, but usually they are part of the Region 1 project team, and
not involved in the pre-work of the project. See Chapter 4 for technical team
roles.
Objective / Role
Sponsor
Stakeholder
Project Manager
Business Analyst
Project Charter
Business Abstracts
Project Abstract
Communication Plan
C
O
Feature Catalog
Table 3-1 is a CORA4 chart, because each role contributes, owns, reviews,
or approves the artifact. In agile projects, the interaction with the team is
informal. In fact, the CORA chart does not need to be explicitly written down
for agile team members.
stakeholders should be engaged and how they will work with the technical
team to maximize good working partnership. The engagement grid is an
interim document that captures sponsor and PM insights on how the
stakeholders should work together on the project. The engagement grid is a
working tool, and with the RAM, leads naturally to the communication plan.
Some stakeholders are not as engaged as they should be, and others are
engaged more than they
should. There are usually political factors involved in working properly with
the stakeholders and managing their expectations. Stakeholders can be
classified into categories:
• Critical: Clearly, they can make or break the project, such as the sponsor.
They
should take a leading role, like project champion.
• Essential: They are influential with the project, or perhaps other critical or
essential stakeholders, such as key business SMEs or customers, or friends
of the sponsor.
If their expectations are disappointed, they also can sound the death knell for
the
3There is an even worse relationship: when the business units duplicate the
information technology (IT) services and resources within their own units so
that they bypass IT. The business units hire their own software staff to act as
4The RAM is a general term, more commonly known as a RACI chart, for
Responsible, Accountable, Contributing, and Informed. I think that the
alternative CORA is more self-evident as to who does what in a role.
51
about it later, after development, such as the helpdesk. The helpdesk often is
to field questions about it. They would fill a neutral role. If the PM can get
them to
help with acceptance testing, then they would move to a supportive role,
perhaps
even essential.
Perhaps the project took money away from the stakeholder’s project that they
were
would be doing something official), and may use the grapevine to spread
false and
about the truth of the project, but about its image (or the PM’s image).
• Unaware: All stakeholders start unaware, except the sponsor. The PM must
move the
leading.
In the sample grid in Figure 3-1, stakeholder 1 is unaware of the project, and
the PM needs to move that person into a supportive role. Stakeholder 4 is too
engaged, and taking on leading tasks which they should not be doing (perhaps
a “busybody”); the PM needs to move that person back to a neutral or
supporting role.
It is critical that the sponsor monitors the progress of the project, and the
stakeholders are engaged at the proper level. They have many activities
going on around them, and it is easy to forget about a project.
A project that is out of sight is out of mind, and soon out of budget. It is easy
to lose stakeholder support in the flurry of other activities and projects that
have their close attention, either because the projects are more urgent (not
necessarily more important), or have their attention at the moment. It is
necessary that the PM
WHAT?
PROVIDER
TO WHOM?
WHEN?
HOW?
Project Charter
Sponsor
Senior Mgmt,
As revised;
e-mail; project
Technical Team
review mtg
iterations
Release Plan
APM, technical
Senior Mgmt,
As revised;
Technical Team
reviewed each
minutes; e-mail
iteration by team
Business team
Sponsor,
Senior Mgmt
Before Iteration
Business team
working agreement
stakeholders,
0 and weekly
kickoff mtg
APM, BA
meetings
minutes; e-mail
Product Backlog
Customer SME’s
Senior Mgmt,
As revised;
Requirements
and BA
Technical Team
reviewed each
Meeting; e-mail
iteration
Technical team
APM, technical
Technical Team
Iteration 0
Technical team
working agreement
team
kickoff meeting;
Iteration Backlog
BA, Technical
Technical Team
Each Iteration
Team taskboard
Team
( continued)
5If the project uses the SCRUM agile variation of a single product owner, the
PM does not need to write a communication plan because it falls to the PO to
manage the stakeholders’ expectations.
53
WHAT?
PROVIDER
TO WHOM?
WHEN?
HOW?
Daily team
Technical Team
Technical Team
Daily
Daily Standup
synchronization
meeting
Project and iteration APM, Technical
Iteration Review
status (burnup
Team
and Demo
chart, iteration
status, QA Report);
demo of working
software
Team process
Technical Team
Technical Team
changes
meeting
The portion at the top of Table 3-2 refers to Region 2 artifacts, and bottom
part of the table refers to Region 1 artifacts. The BA is considered part of the
technical team in the table.
At the business team kickoff meeting, the PM requests they write their
expectations (business abstracts) which are then conflated into a single series
of responsibilities and objectives (project abstract), high-level workflows
(context diagram), and then update the project charter accordingly, with the
sponsor’s approval.
Business Abstracts
The PM (or BA) asks each stakeholder to write a quick one or two paragraph
description of what problem the product will solve when it is delivered and
in use. They are asked to answer the following questions:
It should not be more than one page long. The one-page limit is arbitrary so
that they don’t go into too much detail, and end up designing the system,
which they are wont to do. It is also premature to collect a long list of
features at this point. I ask that it be sent by e-mail to the BA for discussion at
the next business meeting.
The business abstracts are an interim artifact used to build the project
abstract for approval. It is a high-level “definition of Done,” a result of
progressive elaboration from the mission statement and sponsor’s objectives
to a more detailed project scope, and is critical to help the PM manage
stakeholders’ expectations.
money orders, or cash; and give receipts for the amount deposited.
staff of managers and tellers does not have a withdrawal limit, but some limit
should
be defined for security purposes for the atM. a reasonable limit should be put
on the
customer, and our atM’s should talk to each other quickly enough to keep a
customer
from making multiple withdrawals from different atM locations to exceed the
limit.
between their own accounts after their authorization has been established for
the
accounts.
• Security: We need to check the security of the customer account so that only
authorized account members have access to their account—not only should
bank members have
access, but also bank members should not have access to each other’s
accounts. the
machine should verify the proper atM card as well as the proper account and
account
balance. It should not allow more money to be removed from the account than
$100
above the balance. We do not want the account number to be entered at the
atM, but
use a decoding device, such as an atM card with pIN number. physical
security is not
accounts can be accessed via the atM. Normally, account accessibility would
be
should reconcile the total dollar amounts of deposits and withdrawals with
the cash
55
We need to have the atM machines fulfill the same functions as regular
tellers. In addition, the atMs should allow us greater access to our accounts
and account-related information. We should be able to:
accounts. We should be able to deposit any items a regular teller would take
(cash,
checks, …).
that allow direct withdrawals. this would be mainly checking and savings but
should
protection.
• Transfer Money: We should be able to transfer money from any account
that allows
• Pay bills: We should be able to make loan and mortgage payments, pay or
transfer
money toward credit card balances, and make utility company payments.
• Get cash advances: We should be able to obtain cash against our available
credit card
limits.
an individual machine could be out of service but if it is just out cash then it
should say
so up front (rather than waiting for you to put in all your information) and
should also
areas. Some of the machines should be accessible without leaving your car,
those that
When all the business abstracts are collected, the PM and BA reconcile each
of them into a single project abstract. Within the collection, there will be
some objectives that are repeated, some that are unique, and a few will be
out-of-scope; sometimes, there will be objectives that are hard to determine
if they are in scope or not.
The objectives that are in scope can be listed by the number of times they are
mentioned in the business abstracts, with the assumption that the more people
who mention it, the higher priority it is for the project.
Usually the same objective in multiple business abstracts must be merged for
wording.
56
At the next business meeting, the agenda will cover whatever action items
are listed from the previous meeting, and the project abstract (containing a
preliminary context diagram). The meeting’s objective is to get a consensus
on all the responsibilities and objectives listed in the project abstract, and
resolve any that are out of scope.
A sample project abstract, a reconciliation of the ATM business abstracts, is
shown inin Table 3-3.
Project Mission
System Responsibilities
Objective 1
transaction commit.
Objective 2
Objective 3
initiate ATM software, (2) collect reconcilement report, and (3) to shut
Objective 4
than current volume, and peak volume to be 100% higher. Network should
be available 22 hours per day, 7 days a week. Hold cost per transaction,
transactions.
Objective 5
transaction reporting.
Not Included:
Loan, mortgage, utility bill payments, credit card transactions (not demand
The context diagram (or a table that contains the equivalent information) that
shows the business
the circle of the context diagram shows the boundaries for the
responsibilities of the project. Anything that is within the responsibility of
the project is inside the circle, and anything for which the project is not
responsible, is outside the circle.
An actor is a user or an external system that interacts with the new product
when it is in operation.
The context diagram shows the workflow between the new product and the
actors. These workflows are defined at a high level, and show the direction
and kinds of data (or control) that the new product provides to, or receives
from, particular actors. It does not show a sequence of interactions or
conditional interactions.
Later, the workflow can be broken down into sub-flows (use cases) during
requirements elicitation.
For example, if a database is under control of the project, then it does not
show up (it is eclipsed by, or “inside,” the circle). If the database is under
control of a database staff member outside the project, then it shows up as an
actor outside the circle. The PM (ad BA) must involve all the people that
represent the demands and interactions of all the actors.
Figure 3-2 shows an example, the ATM project context diagram. It has three
actors.
• The ATM admin, who loads the cashbox and deposit envelop bin, and starts
up the
ATM machine each day, and at the end of the day, shuts down the ATM
machines to
• The Bank Data System is a non-person external system that interacts with
the ATM
so that it can retrieve new and updated customer accounts. It also cross-
checks the
Cash
Check
Moneyorder
Account Identification
card
Customer
Receipt
Cash
Card
ATM
System
Customer Profiles
Accounts
Cash
Identification
Card
Bank
Account Updates
Cashbox Balance
Data
Deposit Envelops
Admin
Reconcilement Sheet
Systems
Card
58
The context diagram for most projects takes about 20 minutes to draw. The
same data can be shown
with a table, but the visual image is more engaging, as shown in Figure 3-2.
This bad press may be warranted in many organizations, but there are good
reasons to have particular meetings, and a few important reasons to have
them. These are the real questions: When should you have a meeting? What
should be captured during a meeting?
or conversation? Many decisions were made, and usually not everyone was
• Minutes are not written to hold someone’s feet to the fire about earlier
decisions.
If the person wants to change something, they should be able to do so with the
consensus of the other people involved. Agreements even in writing are not
written
in stone.
• Communication among the team. If decisions are made, but not everyone
on
the business team was present, it may or may not be important to the
absentees
(whether they were invited or not). However, the more decisions made
without the
without a particular person present, that person may think that the
development
team is making decisions without their input; or worse, conspiring with other
business people to work around those who did not attend. This practice, real
or
perceived, will sow distrust and lack of respect among the project team
members,
which will erode the business relationship. It could force the technical team
back to
• Minutes are your most important political tool. When you distribute
meeting
minutes, send them to all invitees—those who attended and those who did
not. Also
send them to anyone else that should see them; that is, those on the cc list.
Then,
equally important, send them to all the managers of the invitees.
• First, copies to the attendees give them a record of what was agreed, and
includes the
59
who do not want their actions to be reported to their manager. It may indicate
that the person may be trying to avoid accountability. Are they fully
committed
to the project? It may also indicate that they may be trying to provide
plausible
deniability for his or her manager. Is the manager fully committed and
working
upcoming sidebar.
The agile approach requires few meetings and even fewer meeting minutes.
However, there are a few
times that meeting and minutes are necessary. Most business meetings should
have minutes because they involve stakeholders’ expectations and involved
certain political aspects for the projects. Here are the key meetings I would
recommend to distribute meeting minutes.
working agreements and “ground rules” by which the business and technical
team
will engage, how their business partnership relationship will work. The
business
team kickoff meeting minutes confirm that all the stakeholders have approved
the
• User demo: This is the most obvious meeting in which minutes need to be
distributed. It contains the agreement of changes and defects for the product,
and
action items for what was agreed next. The team is put in a hard place if the
some
stakeholders think that something should (or should not) have been done, and
then it wasn’t. Stakeholders’ expectations are not met, and that could be fatal
to the
project.
• Team retrospective: Every two or three iterations, the technical team gets
together to
things they want to try. For example, the team may modify how they tailored
their
or add or remove a particular step they were doing (e.g., add a “late jar” to
remind
• Project retrospective: These meetings are held less frequently than team
They may discuss how to see status reports differently, or decide on different
release
schedules. These meetings are as important and the user demo meetings
because
6The technical team kickoff meeting is done as part of Iteration 0, but all
comments apply to that meeting too.
60
Within minutes, julie angrily strode into the office of the pM’s manager, the
department’s director (andy). the pM and I could see those two, and hear
julie, through the glass walls. She was shouting about how andy always gave
her projects short shrift and looked for any excuse to delay or kill them.
andy listened calmly, and then retrieved a set of papers from a basket on his
desk. he had highlighted all the relevant parts of the project meeting minutes
in the time it took before julie arrived. he showed her the bright yellow
highlighting. as he told me afterward, he said, “Look julie, Mike has not
delivered his requirements to the team, even though he has promised them for
the last three weeks. It clearly shows his commitment in these minutes.
Notice also that your name is on these minutes. You knew he wasn’t
delivering, and you let him get away with it. also notice, that your boss’s
name is on these minutes, so he knows that you were letting him get away
with it. the question now is—What are you going to do about it?”
julie went from a feet apart, hand-on-hips stance to hands at her side, head
bowed, in about 15 seconds. She left andy’s office, grabbed Mike by the
metaphorical ear, and dragged him into a conference room. By the end of the
day, the technical team had all the promised requirements and the project
moved forward, without losing even one day. julie and Mike only needed a
wake-up call about how the teams work together, a reminder about the
agreement they made a month or two earlier.
the unfortunate side of this story is that on every project I have worked,
someone on the technical team or business team needed at least one wake-up
call incident like this one.
Recommendations for Writing Minutes Easily
Another reason that minutes are disliked is because of the format and hoopla
that corporations use to write minutes. Unless you are in an organization, like
the military, government agencies, or regulated industries where intensive
record-keeping is required, minutes do not have to be onerous.
Minutes can be done quickly and succinctly. The consensus of each objective
can be collected easily during the meeting, so writing minutes is almost
automatic. Here are some tips for easily writing meeting minutes and the key
elements.
of objectives that can be augmented during the meeting with each objective’s
resolution. No one really cares who said what when, and no one needs to
follow
Robert’s antiquated Rules of Order. They only want to see what was decided
about a
particular item. The minutes can be mere augmented agendas that are
completed in
61
• Action plan and open issues: During the meeting, tasks will arise that
someone must
perform. Make a table at the bottom that shows what must be done, who will
do it
(owner), and when it will be completed. Do not leave out any of these
elements. A
task with no owner (or something generic like “team”) will not get done
because all
separate table: Both the action plan and issues list is the core of your agenda
for
the issue in the form of a specific question that can be answered to resolve
the issue.
• Purpose and invitees: Make the purpose (what everyone should achieve
when
they leave the meeting) as clear as the place, time, and duration of the
meeting. I
put a check box beside each invitee on the agenda. The agenda is displayed
with a
projector, and as people arrive, I check off the box next to the attendee. I also
have
a cc list on the agenda so that others can see who will get the minutes (and
who
showed up and who didn’t).
• Recording the agenda item resolutions: During the meeting, I type directly
into the
agenda items the resolution that was made in the meeting. Since the items are
displayed, all in the meeting can see what was written, and can change it if it
is
incorrect.
and so forth, and send them to all the invitees, and members of the cc list.
Minutes
need not take more than 10 minutes after the meeting to distribute.
Future meetings will go more smoothly as the group begins to work in this
mode.
The PM updates the project charter with the data from the project abstract.
The PM adds new stakeholders, objectives, and the context diagram. The
out-of-scope features or objectives from individual stakeholders can be
added to the charter to ensure that they don’t silently come back into scope as
expectations. The charter can be approved at the same meeting in which the
project abstract is approved.
The stakeholders and their objectives are more of interest now to the sponsor
than the details are later.
Updating the project charter is one way to keep the project community in
touch.
62
After the stakeholders have progressively refined the project scope, several
things can be added or updated in the charter.
• A modified mission statement (perhaps a stakeholder won his case with the
sponsor
• The refined roadmap; that is, an expanded or revised set of objectives with
dates
• The context diagram, which usually is not part of the initial charter. It is
extremely
It is important for the charter to stay up-to-date for the portfolio team and any
program manager over the project to have a consistent way of comparing
projects equally: “apples to apples.” Saying “This is an agile project, and the
rules don’t apply” will not work. These kinds of statements have thwarted
agile projects on traditional organizations to the point that some management
will not permit agile projects. As developers know, separation of concerns
is an important principle in software development and applies here as well.
The portfolio team does not really care how the project is done—that is the
team’s job—but agile projects can report progress and status the same as any
other project at this high level.
The feature7 catalog is a list of all the identified large-grain scope items
within the project. In agile terms, the feature catalog is called the product
backlog and is used to drive the more detailed iteration scope later.
The stakeholders, or more likely, their delegates, will further define the
product features. These features will be elicited as high-level requirements
by the BA. As features are identified, they are categorized as in-scope or out-
of-scope, depending if they align with the sponsor’s mission statement. It is
usually easier to determine if features are in scope by comparing them with
the lower-level stakeholder expectations in the Project Abstract, which has
already been confirmed to be within the project scope.
Using the agile principle of delivering to the business the greatest value first,
the stakeholders need to prioritize the feature catalog for business value, risk,
and dependencies. Prioritizing the features is accomplished similarly to the
way the projects were prioritized in the portfolio: select a multiple set of
business criteria so that all stakeholders agree that the list is in business-
value-first order (see Chapter 2).
A prioritized list tells the project team what features to implement first.
Secondly, riskier features are pushed to the top of the list over less risky
features (given equal value). Risky features are implemented first so that if
something goes wrong, there is more time to correct it and get the project
back on track.
There is little detail about the features at this point, so the typical Delphi
technique may be overkill or not worth the effort. Two other methods may be
more useful here: MoSCoW (2014) and Kano (2014).
case); Could have (desired but of lower priority); and Won’t have (explicitly
excluded or deferred feature that will not be in the current project scope).
• Kano Model: The Kano model, developed by Dr. Noriaki Kano (Kano,
Nobuhiku, Fumio, and Shinichi 1984) uses five categories with a slightly
different slant: )
Threshold: Must haves; a failed product if any of these kinds of features are
missing.
Satisfiers: Core features, satisfaction if present, and the more, the better.
if omitted. These features are like the “sizzle on the steak”: not critical, but
If there are many stakeholders, Delphi technique works fairly well across e-
mail for this. Do not use an average value between stakeholders because
usually that means the priority is not what either of the stakeholders want, but
something in-between. There must be agreement on the product backlog
among the stakeholders.
One of the common problems with getting priorities from stakeholders is that
they want to give
When using the priority card technique, give the group of stakeholders a set
of 3×5 cards on which each card contains a single feature and a summary
description. Have stakeholders as a group place the cards in a stack, highest
value at the top. A stack of cards cannot have physically more than one card
at top; it cannot have multiple number-one priorities, or multiple values for
any priority. Record the position for each card to indicate the priority of each
feature in the product backlog.
64
The relative feature size indicates how long it will take to collect detailed
requirements and implement (that is, design, code, and test) each feature.
However, detailed requirements have not yet been collected, no design is
done, and the skill level (that is, speed of development) of the resources
working on that feature, are all unknown. (The technical team is not yet in
place.) Therefore, this estimate, although better than the ROM8 estimate that
was used to charter the project, is insufficient to deliver the product
predictably.
For example, it is easier to know that a large dog eats more than a small dog,
and a medium-size dog eats some amount in-between. Given the relative
ratios of large, medium, and small dogs in a kennel, the kennel owner can
accurately estimate how much dog food to buy for all the dogs.
Similarly, the features in the catalog can be scoped for later allocation to the
time-boxed iterations.
Scoping Metrics
poorly the larger the entity being scoped, story points are assigned to
elements of
the Fibonacci series: 1, 2, 3, 5, 8, 13, and 21 (and larger); the values of, say
4 or 16, are
never used. The ever-increasing gap in the numbers reflects the lack of
accuracy in
the estimate due to its size; a value of 8 or 10 is the same within the accuracy
of the
estimate. The story points of a feature or use case or other scope amount is
done in
that way. Story points are typical for agile projects, but team members new to
this
sizes refer to only four sizes: small, medium, large, and extra-large. Only
four sizes
are used (although the team can choose others) because at the feature level
(before
a feature more closely. The metric tries to avoid being “overly-precise and
under-
accurate.”
8Rough-order-of-magnitude estimate
9“Ideal days” and “ideal hours” are actually a metric of scope, but because it
includes the word “day” or “hours,” it often causes confusion. How to handle
this issue is explained later.
65
Chapter 3 ■ projeCt Startup
• Ideal days (or ideal hours): Another popular metric is ideal days (or ideal
hours), or
the amount of time a “typical” person would take to complete the task if they
were
not interrupted, had to attend meetings, and were as fresh during the task as
when
they started. Although “time” is in the name, this metric is one of scope, and
not of
duration. Team members often can relate to this metric easier than story
points, and
feel that it is more accurate than T-shirt sizes. This metric is often using in
training or
for new teams until they get more comfortable using story points.
For the team to come to a consensus on the scope of a use case or user story,
they must have the same idea as to (1) what metric to use, and (2) what that
metric means. Let’s assume the team decides to use story points. I can use the
dog-sizing technique shown earlier, where I give a range of dog sizes, and all
other dogs fall within that range. That is the technique called triangulation.
Let’s say that an “average” user story takes one day to complete, and let’s
assign that story five story points.
Now all user stories can use the calibration point of 5 with which to compare
other user stories, in a range of 1
The BA and stakeholders break down the top-most features into smaller
levels of scope and estimate only those features that are likely to be
completed in the first few iterations. They estimate the scope in detail
corresponding to when it will be implemented: the sooner a piece of scope
will be implemented, the more detail is unwrapped; the later pieces of scope
are estimated at a larger granular level. This technique is called adaptive
planning, and is used throughout agile for all estimation activities. Features
are broken into themes (use cases) or epics. Decomposing scope to the most
detailed level, user stories, should wait until the iteration in which they are
implemented, and the technical team is involved.
Once the feature catalog, or at least the top part of it, is prioritized and size-
estimated, the sponsor and project manager can apply it to a calendar in the
preliminary release plan.
The release plan is a simple calendar schedule showing when each fixed-
length iteration starts and ends. At a minimum, the release plan will have an
Iteration 0 (start-up), a number of productive iterations (delivering business
value), and a release iteration at the end of the project. There may be other
release iterations within the release plan for multiple releases, and there may
be hardening iterations. Each iteration is labeled with the high -level scope
(a feature or two) to be accomplished in that iteration.
66
The preliminary release plan is mostly a guess, but release plans must be
reviewed periodically anyway as requirements are added, removed, or
reprioritized. The preliminary release plan is completed before the iterations
start and revised by the technical team when they come on board in Iteration
0. This double pass technique (1) communicates the scope and objectives to
the team, and (2) allows the team to improve the release plan.
Iteration 0
The first iteration of the project, one in which the technical team is acquired,
development and test environments are set up, tools put in place, architecture
defined, and the first pass of the requirements completed. This first iteration
is called Iteration 0, 10 and no real productive value will be delivered at
the end of it. This iteration cannot be skipped. The project will literally not
be able to proceed without its infrastructure and support in place.
that’s the agile way, right? Wrong. the productivity expected to be delivered
in Iteration 1 wasn’t completed until Iteration 3—at least four weeks wasted.
tasks and user stories were constantly being deferred or blocked, waiting for
infrastructure dependencies. there were more cracks for the tasks to fall
through than the highways after a San Francisco earthquake! the philosophy
of trying to do both iterations at once reminded me of the Dilbert comment
from the pointy-haired manager: “We don’t have the requirements yet, but
start coding anyway so it looks like we are doing something.”
The release plan (sometimes called iteration schedule), at this point, is a list
of say, two-week calendar intervals that are labeled Iteration 0 to Iteration N.
Each iteration is time-boxed so regardless of the scope being implemented in
those iterations, each iteration has a fixed start and end date. As the features
from the features catalog (product backlog), are known, each iteration can
take the name of the primary objective of the features going into the
respective iteration.
There should be two other kinds of iterations in the release plan within the
normal product-producing ones: one or more hardening iterations, and one
release iteration.
Hardening Iteration
A hardening iteration may be scheduled into the release plan every three or
more iterations; like team velocity, the number of hardening iterations needed
depends on the product and the team. During this time, all technical debt is
repaid: refactoring that should have been done, gaps in requirements filled
in, necessary documents completed, and any other work that resets the
project to full production quality. A hardening iteration also allows the
schedule to reset somewhat, providing a little margin on a schedule that is
not based on history yet. A hardening iteration can be shorter than a normal
iteration; usually it is one-week long.
10Scrum calls their first iteration Sprint 1 instead of Iteration 0. The process
and goals are the same, but the terminology is different.
67
Release Iteration
The last iteration that releases the final version of the product and closes the
project is a release iteration.
There may be multiple release iterations, just as there are multiple user-demo
iterations, but the last iteration closes down the project by definition.
The release iteration is performed just before the product goes to operations.
It contains activities that span individual iterations. It is the time that any last
minute defects are repaired, documentation that is needed external to the
project is written or collected (such as operations manuals, user manuals, or
technical support docs), final project-level status reports and overall test
results are compiled, and other general cleanup activities. It may also have
load testing, performance evaluations, and other system-wide activities. This
iteration can be shorter than a normal iteration.
review the release plan after each iteration to ensure that it is still on
schedule. as team velocity becomes better known, the release plan will
change to reflect the team’s historical rate of progress. after the first five
iterations, the velocity is averaged to forecast the project’s end date. It
should be very accurate and reliable, but review it each iteration anyway to
ensure that it is staying on track. any changes should be brought to the
sponsor and stakeholders at the next iteration review.
How Long Is an Iteration?
However, the iteration should not be less than one week or more than four
weeks (Leffingwell 2007).
Different agile methods, with different overhead ratios, have different time
box recommendations. The most popular iteration is two weeks in length,
which makes sense since agile methods are applied best to small projects.
Having the same amount of work each iteration fixed to the calendar also
makes it easier to pre-schedule regular events, like user demos.
68
feedback sessions, showcased by the iteration’s user demo, the team gets
feedback so that they can revise the product. If the feedback comes too late,
then they must rework that part of the product, which wastes time.
If the iterations recur too soon, time is wasted doing a lot of setup and
teardown work. There is a balance between the productive value of building
the product uninterrupted with quick feedback, and the overhead of starting
and closing an iteration.
The iteration length also depends on the size of the project. For most
projects, a two-week iteration allows enough time to develop and test a
“chunk” of business value in the form of product code. For large projects, or
those involving high levels of research, three- or four-week iterations work
well. Iterations longer than four weeks produce unnecessary rework because
the feedback cycles are not short enough; and the agile acid test (working
software within 30 days) is not met.
Iterations less than one week are not recommended. They are overwhelmed
by iteration overhead:
however, Kanban can be time-boxed for convenience for reporting and user
demos. the team velocity needs to be measured over time, and user demos
are better pre-scheduled. there is a satisfying closure when an
“iteration” plans what is being put in the build that will be demoed in two
weeks.
PMI Parallels
Scope: The PMI would say that project startup, as described in this chapter,
is in the stages of scope definition, although only the high-level scope is
defined and the lower level scope is deferred until later.
There is no hierarchical work breakdown structure, but the feature catalog
(product backlog) provides a breakdown of the work by scope and business
priority. As with the WBS, time-based tasks are used to define sequence and
schedule, which is done by agile projects during the iterations.
Time: The project schedule works almost as a template into which scope is
inserted, instead of a list of WBS tasks allocated across the calendar. The
schedule is addressed only as a high-level view of iterations, without
detailed work assigned into them. The iteration schedule is bracketing by an
Iteration 0 for setup, and an Iteration N for project release and closedown.
Quality: There are no quality standards defined yet; the technical team will
develop them during the technical meetings later.
69
Risk: No differences here: risks are identified and collected as found, and
the risk responses that go with them. The project charter may identify a few
risks, and it continues to grow as the project progresses.
The project stakeholders are brought on-board, and the project team is
oriented on the agile approach.
The critical business abstracts and project abstracts allow the scope to be
decomposed in alignment with the sponsor’s mission statement and all the
stakeholders’ expectations.
At the end of this stage, the PM should have key deliverables: a project
abstract, a prioritized and size-estimated product backlog (features catalog),
an iteration-based release plan (project schedule), and a written agreement
of the business team’s working agreement (“the engagement ground rules”)
from the business kickoff meeting, the RAM (CORA matrix), and a
communication plan.
70
Additional Tools
Meeting Information
Meeting Name
Kickoff
Coordinator
Date
Location
Time
Purpose
Expected
Outcomes
Invitees
[Name], facilitator
[Name], scribe
[Names…]
CC
Topic
Time
Presenter
0000 – 0000
2
Determine stakeholders
Determine deliverables
71
Part II
Iteration 0
Chapter 4
In the early days of agile, agilists wanted to avoid all upfront work before the
iterations of requirements, coding, and testing started: no architecture, no
initial requirements, not even getting their development environment set up.
(The emergent design fans still use this approach.) I think this is an
overreaction to the waterfall method. The pendulum of popular development
style swung from too-much-upfront work to no-upfront work.
Fortunately, that pendulum is swinging back to some upfront work that some
agilists call upfront learning. 1
Many agile approaches are distinguished by how much upfront work they
recommend. Some things,
like architectures, are very difficult and time intensive, to change. The team
must walk a balance between what is too much, and what is too little, upfront
work. This preparatory work is called “getting to ready” and is packaged
into a pre-productive iteration called Iteration 0.
The sections that contain what I consider the activities that must be
accomplished to reach that
What Is Iteration 0?
Agile projects run as a series of time-boxed iterations2 (usually two to four
weeks) in which the project team develops the detailed requirements, writes
the code, tests small units of work, and ends with a user demo and progress
report to upper management. The project flexes on the scope delivered, as
defined in the feature catalog, constrained by time and cost. Not all projects
will flex scope, but will flex cost or time.
The overview I give here will flex scope because it is the most common
approach to agile. Agile projects will 1Alistair Cockburn, one of the agilist
patriarchs, announces this idea at a recent NFJS conference in Columbus,
OH.
Meyer (2014) and Guiteri (2011) have also published on the topic.
2Lean and Kanban are two of the popular agile approaches that do not
require iterations, but work is often packaged into iterations for reporting
purposes, and for periodic and frequent user demos.
75
• All the steps in the previous chapters are completed: the project is
chartered; the
completed; and the feature catalog (product backlog) has been prioritized by
business value, risk, and dependencies.
• At least one developer and one tester are assigned as part of the technical
team.
This chapter discuss the technical team kickoff meeting and agile tailoring,
and introduces the architecture, infrastructure, and initial requirements
activities discussed in later chapters. The product architecture must be
defined to set a framework on which to base the product (see Chapter 5); the
infrastructure must be put into place so the technical team has something with
which to work (see Chapter 6); and initial detailed requirements need to be
started so that the technical team has something on which to work during the
first iteration (see Chapter 7).
The technical team revises the preliminary Release Plan. Using the detail
revealed during the progressive elaboration of Iteration 0, they refine the
project’s schedule and cost from the rough Release Plan done previously.
The next estimate with the level of accuracy for schedule completion, scope,
and costs is based on the actual performance of the team. It will be much
more accurate and precise. The team’s history will continue to be applied
and compared against the latest estimate and can change if the team’s rate of
progress changes.
These historically based estimates (actuals) will have a margin of error that
merges toward less than 10% of the final result as work results are applied.
Agile projects usually finish on the day predicted, and within the budget.
it is not possible to skip the hardware and software setup of iteration 0, but it
is possible to do it under some other name or iteration and falsely think that
time has been saved. Some teams try to prepare for the work at the same time
as they do the work of iteration 1. this is a common “time-saving tactic” that
does not work.
projects that have tried to develop code, collect requirements, and build the
infrastructure (development and testing environment) concurrently have
slowed as a result of their support procedures, tools, and architectures being
in flux or late. often, the developers have nothing to do because the
requirements aren’t ready, or their development machines and tools are not
yet available. Development cannot actually start until iteration 0 is complete.
it is like trying to drive your car without first getting into it.
3Scrum has no iteration 0, but does the same work in what it calls Sprint 1.
76
The good news is that Iteration 0 may take less than two weeks, but
depending on culture, it might take longer. The time needed to complete
Iteration 0 provides a scaling factor that can be applied to the other
iterations. The duration of Iteration 0 is mostly independent of the product,
but depends on culture and organizational factors that apply throughout all the
iteration activities. The detail of this is outside the scope of this book.
Ideally, the technical team already exists and project work is directed to the
team. However, most traditional organizations have resource managers who
assign people to the team, and the PM must negotiate to get the best people
and their time. Unfortunately, the resource managers usually assign people
with the mistaken idea of multi-tasking: more will get done if the workers are
spread across multiple projects. Agile teams are dedicated and the core team
members must be assigned full-time to the project.
Once a new team is in place, then the team members develop a working
agreement among themselves, with coaching from the APM, in the technical
team kickoff meeting. They follow up with choosing how to apply agile to
their team, project, and organization in a agile tailoring session. For new
agile teams, the APM plays a key role.
It is essential that core team members be dedicated to the project and not be
allocated to multiple projects at the same time. Multitasking not only reduces
team productivity and quality, but also deteriorates team communication and
increases the individual’s ability to be distracted more easily. All these
factors work against what is necessary for empowered team, an important
agile principle.
between different projects are covering more ground, are more productive.
The opposite is true. Projects get done sooner if the team is dedicated, and
resources are not swapped between projects. These kinds of resource
managers often complain about not having enough resources, when actually
they have created the very bottleneck they were trying to avoid. A
comprehensive report from Realization Corp (2013) contains case studies,
raw data, and proposed solutions to this problem at the organization level.
Job seekers around the world still tout their ability to multitask as a
desirable skill, and
in many organizations, multitasking is worn as a badge of honor; however,
research
77
Depending on the amount of time to shift from project (or task) to another,
and then back again, the time to complete two projects concurrently can be
40% longer than working the two projects (or tasks) sequentially (Bregman
2010). Multitasking produces other negative effects to schedule and quality,
such as 50% longer to accomplish a task, and 50% more errors (Foroughi et
al. 2014; Rosen 2008, 105–110). These data partly explain why agile
projects, centered on single project teams, are more effective than traditional
projects that have team members distributed across multiple projects and
organizational units.
Another term we can borrow from the computer industry is thrashing, which
is when the time needed to shut down a current task and start up a second task
(or restart the first task again) takes longer than the time allotted for the work
to be done on the task. In that case, no work is done; the computer spends its
entire time thrashing. This can happen to people too.
The technical team has a different set of ground rules than the business team
does. The technical team kickoff meeting is held after the business team
kickoff meeting because the business direction must be set first, the needed
technical skill sets identified, and some features and requirements need to be
ready for the technical team when they start. Once the context is in place for
the technical team, their kickoff meeting defines the iterational working team
agreement.
The following are some recommended goals for the technical team kickoff
meeting. 4
• Technical launch. The PM leads off with what is known about the project
so far: the
latest version of the charter, the objectives from the project abstract and
feature
catalog, and facilitates a consensus for defining grounds rules for the team.
The ground
rules contain the assumption that the team will follow some form of agile,
and that a
separate meeting will be held to define the details. As with the business team
kickoff
meeting, it is a good idea to have the sponsor share his or her vision of the
product.
The business-technical working relationship also benefits if the chief
customer or
stakeholder is introduced, and that person shares their goals for the product.
4I assume that the PM working in Region 2 works as the APM in the iterative
Region 1 but this is not necessarily so. The APM should work on one
project, but a Region 2 PM may work with many projects at a time, and
sometimes called a program manager.
78
• Describe the project approach. Familiarize the technical team briefly with
how an agile project affects them if they are new to it: iterative, incremental,
daily builds, repeated
• Roles and responsibilities. Agile team roles are fairly predefined, although
agile
technical team members wear many hats. These roles are not as cleanly
delineated
for agile teams as they are for traditional teams because an agile team works
together
member contributes something to the team, and has a specific role, and
perhaps
a secondary role. There are no functional silos on an agile team as on
traditional
teams. The typical roles and responsibilities that follow are actually skillsets
that one
Agile project manager (or iteration coach): Organizes and mentors team
progress reporting. For agile projects, sometimes this role is called the agile
coach, especially if the PM is filling this role when working inside the agile
team.5
user interface artifacts (e.g., screen mockups) with the business SMEs. Once
a
use case6 requirement or a set of user stories are completed at this level,
they are refined with the developers and testers.
Developer: Designs the software, writes the code for the user story, and
writes
unit tests. The developer is responsible for removing all defects and ensures
that
all code integrates seamlessly with existing code from other team members.
Tester: Writes the test cases for the requirement while the developer writes
the
code, and tests the requirement when the developer is finished. The tester
also
organizes test cases, defect reports, and final QA aspects of the build before
the
• Identify other technical team members. For large projects, others may
work part-
when documents are required by those outside the team, (e.g., operations and
spin off from the project). A user interface design expert helps ensure that
the user
analyst may help organize the data, especially if the database is being shared
with
• As with the business team, members of the technical team may be aware of
others
who should be involved on the project. The APM should investigate to see if
they
actually should and can be on the team. There may be extra funding or
resource
6A use case is comprised of a set of interactive paths, each one being a user
story. It provides context for a set of related user stories, and is similar to an
agile theme.
79
• Technical team member engagement. How much time will each member be
able to
time. Weekly meetings with stakeholders can work, but those who provide
detailed
requirements need to be available almost daily. Many organizations do not
have
• Ideally, the technical team is in place always, instead of acquiring them for
each
like an assembly line: projects requirements in and products out. See the
“Avoid the
to see project documents, the technical team will also need to select a shared
specs, and whatever else they think they can use. Almost all infrastructure
software
the organization may already be in use. If not, their cost will need to be
approved and
added to the project budget. Details about what might be in the infrastructure
are
described in Chapters 4 and 6.
• Daily meetings and two-week iterations. The technical team meets each
day for 15
minutes to discuss the tasks each has completed. Each day, each member
describes
(1) what they completed yesterday, (2) what they will complete today, and
(3)
any impediments (blockers) that they have encountered that needs more time,
a
are the standard for agile projects for good reasons, but they can be modified
in the
• Schedule an iteration tailoring session. What agile approach will the team
follow? Kanban, Scrum, XP, something else? The approach will be specific
to the
the team to tailor the iteration approach (see the next section).
According to Jeff Sutherland, the acid test for an agile team is Deliver
working software within 30 days. If this cannot be done, the project is not
agile (Schwaber and Sutherland 2012), regardless of the various agile
ceremonies that the team might have used.
The key factors to keep in mind when customizing a team for the agile
project’s success are (a)
developing very small chunks of product with very short feedback cycles
with the customers; and (b) delivering the highest value first as the product is
released into use, and thus begin to accumulate its value to the organization.
80
The project moves forward best when all the technical team members can
use what they know, learn
what they need to know, and work together as a tight-knit performing team.
The APM should facilitate a meeting in which the team leverages the
standard agile principles (Manifesto 2001) to define an agile approach
specific to the particular project and team. The APM frequently recommends
one to start.
agile approach can be revised as questions arise. Some of the technical team
may have preferences on how they do their work, and these should be
acknowledged and respected. Be sure to mention that at the end of the first
iteration, and periodically afterward (at least each third iteration), there will
be a retrospective to collect lessons learned and make changes to the
approach. If changes are large enough to ripple out to the business
stakeholders, they must agree also.
The team’s biggest decision to make when tailoring is which flavor of agile
the team prefers to use, such as Scrum, Kanban, XP, Crystal, or some other.
The choice will affect the balance between effort and planning, quality, and
amount of rework the team is willing to experience. Figure 1-7 showed the
relationship between effort and planning by agile techniques. In addition to
this, the team needs to decide the durations of their iterations, something
between two and four weeks.
Details on the various options are discussed in the following sections, but the
end result of the tailoring session is a rough procedure, with full consensus of
the technical team, for the aspects of each iteration:
• How features are moved from the product backlog to the iteration backlog.
• How much will be contained in the product demo (at full production
quality) each
iteration.
metrics?
• What task tracking devices will be used? Kanban boards, sticky notes on a
wall, Excel
spreadsheets?
• What tool to use for progress tracking? Burn-up charts, burn-down charts?
• How will coding and testing work together in the various shared codebases
and
builds?
production interplay with each other? Is support from outside the team
needed?
• What standards come into play, both external and internal to the team?
measured, and with what tools? What non-compliances will stop a build
from going
81
Chapter 4 ■ preparing the projeCt
The business and technical team should resolve, with guidance from the
APM, how much “quality” they want to instill in the product. Before first
saying, “As much as possible,” consider that the higher the quality, the more
effort that goes into the validation and verification (V&V) of the product, and
more overhead means more time and effort needed. There is a balance
between how much quality can be built in, and how much it is needed.
Software quality for an astronaut’s life support system is justified at a higher
level than a mobile phone video game.
As the granularity of the scope increases (from features to use cases to user
stories), the risk drops because more is known about that unit of scope. In
moving from features to user stories only, the curve mirrors the progressive
elaboration curve. If test-driven development (TDD) is used, the unit tests
are written as the code is written; this low-level validation removes
additional risk.
User stories alone can be fragmented, but a use case gives each user story a
context, and contains more detail. Use cases in conjunction with integrated
unit testing (TDD plus automated integration testing at the use case level)
allows more validation and lowers even more the risk of a defect. Finally, if
the team goes to the trouble of rigorously validating the use case with
requirements modeling, 7 then almost all defects can be removed from the
requirements and the risk is close to nil. Since requirements defects account
for over half 7Requirements modeling refers to building an object model of
the problem domain, and validating it with a XUML
model also helps the testers write test cases faster because they can leverage
the model for testing. See Chapter 9 .
82
Integrated unit testing (IUT) refers to integration testing at the use case level.
Uses cases define a logically related set of user stories, and provide the
context. Testing done at the user-story level increases the quality even more.
IUT is similar to acceptance test cases. Despite the thin-thread approach of
agile, testing at the use case level (integration testing) is important. Like the
wit said, “Although an airplane has over a million parts, none of them can
fly.” It is important that all pieces of the product work together properly.
The business team may (but often not) define some level of quality they want
for the product. It is up to the technical team to choose how they will achieve
that quality; that is, how and what sort of validation and verification they will
do. The team chooses what level of rigor they want for the project, and much
depends on what they are comfortable with. Many developers prefer user
stories to use cases, or business analysts may not have the time for
requirements modeling; many things factor into the choice. Choosing the
development approach is like anything else: the quality you get depends on
the time and effort spent getting that quality.
Architecture
Development Infrastructure
Many tools should be added sooner than later or else the benefits will be
less. It is hard to export results from an interim tool (or no tool) back into a
new tool. The chapter of development infrastructure gives a list of the tools
with respect to the role and environment in which they would be used:
developers, testers, business analyst, agile project manager and those that the
entire team share.
Functional Requirements
catalog until needed by the iterations. The use case catalog is only a
collection of
the name and goal of each use case, where each name is a simple phrase
summary,
or “headline,” of the use case. Each use case name in the use case catalog is
also
ordered by priority, risk, and dependency, which reflects the priority order in
the
catalog; the use case summaries can be placed at the top of the product
backlog as
• Use cases to user stories and test cases. During each iteration, select the
use cases to implement, and disaggregate them into their constituent user
stories. The number
few use cases need to be defined in Iteration 0, enough for the development
team to
start work. During iteration 0, the focus is defining the initial requirements—
building
84
• Use case validation. Rigorously validating the use cases is not used on
many agile projects, but under certain conditions, the project team (technical
and business
members) may choose to have the business analyst validate the use cases.
The
the time to validate the use cases more than compensates for the time that
rework will consume
the business units insist that they have the highest quality they can get within
the technical team prefer that they have zero-defect requirements to minimize
• Requirements Traceability Matrix (RTM). The RTM ensures that all the
scope
is accounted for and tested. Add to the RTM each feature or workflow, its
corresponding use cases, and the use cases’ corresponding test cases. This
continually throughout the iterations. (I add use cases to the RTM and not
user
stories because user stories are too fine-grained for the RTM, which is a
summary-
level artifact.)
documentation, or even defects in the test cases, the defects are collected and
repaired. A few team members meet to decide if those defects imply repairs
or
requirements changes; all changes are analyzed to determine the impact on
change impacts so that changes can be scheduled into the product. Change
Tools in the sense used here means software aides, application project
artifacts (e.g., the RTM), and techniques (e.g., use case validation). The tools
for the roles of business analyst (BA), developer, tester, and PM are listed in
Chapters 9, 10, 11, and 12, respectively. The following tools are used by the
entire team.
OpenOffice Calc. The BA adds features, the stakeholder who requested the
feature,
the tester adds the date the use case passed its tests; and the APM uses the
data for
stakeholder reporting.
the current iteration. Changes can occur that must be scheduled into future
development. The team sorts out the proposed changes for impact analysis
and
scheduling during the iteration, but the APM must reflect new scope in the
various
85
• Task tracking: Agile is known for its 3×5 card or sticky-note approach to
track tasks.
I prefer, and all of my project teams have preferred, an online Kanban board,
a
special version of task board. Each user story (or task or use case) to which
the team
along an “assembly line” of work zones on the board for construction and
testing, a
visually easy way to see what work is in progress, and leads directly to
progress status
reporting. The online boards have the advantage over the physical-card-on-
the-wall
www.trello.com.
• Progress reporting. A spreadsheet that can draw line charts from data is all
that is
charts (or burn-down charts), updated daily. A burn-up chart shows the
planned
work vs. the actual work accumulated. Fixed term projects can also show the
use cases
• New tools that might affect the project cost, and lack of tools that may affect
• Progressive elaboration has revealed enough detail that the project team
can make a
more refined project schedule and budget for the given (expected) scope.
The technical team revises the preliminary Release Plan that contains for
each iteration its start and end dates, scope size, and primary topic to be
completed with that iteration. They walk through at least the top 50% of the
product backlog and estimate the relative scope (read: story points) of each
item in the product backlog that can be completed within which iteration.
Often, the content within an iteration will change as scope is moved about
within each iteration’s time-box; sometimes the number of iterations will
change.
Traditionally, a project’s core controllable factors are scope, cost, and time,
and their ever-changing relationships. These triple constraints depend on
each other such that the third constraint results from setting the other two.
These constraints are not arbitrary factors, but derive from the physics of the
project itself. If two of the constraints are fixed, say scope and cost, then the
project will take as long (time) as scope and cost will carry it, regardless of
any managerial dictates. Because these three constraints are hard constraints,
the keys for project management, they are often referred to as the iron
triangle. If anyone changes, the other two must change to compensate.
How often has your management tried to cut corners on cost, which resulted
in a lower-quality product?
86
Chapter 4 ■ preparing the projeCt
Figure 4-2 shows, a little whimsically, an iron triangle, and gives an example
of increased scope, causing the time and cost to be insufficient, such that
quality “leaks out at the bottom and sides.”
(Putnam and Myers 1992, 26–41) but the PM in the field does not sit down
and calculate these involved equations. The PM needs a more practical
approach.
Most agile projects are given a fixed cost and schedule, but a flexible scope
requirement. Less common is fixing the scope and flexing the cost or project
duration. Although iterations are, by definition, time-boxed, and
characteristic of all agile projects, not every iteration must be the same
length. Some iterations can be larger—but not more than four weeks; and
some can be smaller—but not less than one week.
Some agile methods, such as Kanban and XP, allow iterations to have
differing lengths at different times as necessary. When iterations are not the
same duration, the APM must do a little extra work to recalibrate the team
productivity into team velocity per day or week, but it still works well.
Agilists prefer not to use the iron triangle because it refers back to traditional
predictive life cycle practices.
They have replaced scope-cost-time of the traditional iron triangle with the
agile triangle, whose corners represent value (extrinsic quality), intrinsic
quality (technical excellence), and Agile constraints (scope, cost, time).
Highsmith (2009) points out that if the key driving factors have changed, then
the project needs to change the way it is executing and measuring progress.
Since the triple constraint is included in the agile triangle, those factors must
still be considered. (Perhaps the agile triangle should be called the agile
pentagon.) Impossible Projects
For less extreme cases, if management has set time, cost, and schedule, with
no flexing of any of these three parameters permitted, the project could be
impossible to complete. The project manager’s first job is to determine if
that is the case. During the execution of the project, there will necessarily be
some flexing and counterflexing of scope, cost, or time. It may be that the
project is entirely feasible within the given parameters, but it is better to
know earlier than later if you are dealing with a doomed project, and inform
the sponsor of that as soon as possible.
87
Increasingly more projects are written under a fixed term contract, meaning
that one or two of the constraints of scope, cost, or time are fixed. This takes
most of the project risk from management, and puts it all on the vendor doing
the project. Some agilistas will not take on a fixed-term project because they
think fixing any of the constants, particularly scope, is contrary to the agile
paradigm. It is equally hard to determine the exact end date of a project (or
final cost or scope) for agile or for traditional projects.
The entire product backlog must be sized for fixed-term projects but that is
already a Scrum technique.
Agile is based on the idea that a product being developed is not well enough
known during Region 2 that doing upfront requirements, analysis, and design
are not worth the time and effort. This concept begs the question: how to
determine realistic scope, cost, and time estimates before there is enough
data to know those values? Estimating project metrics before sufficient detail
is discovered leaves only analogous or parameterized estimating. How long
did it take a team do produce a similar project? How long did it take to
produce similar components (user interface screens, database modules, etc.)
in an historically similar project?
The best solution is a blend of some advance estimating, some upfront work,
and some adjustment
Team productivity is typically measured as story points per iteration for this
very purpose. This metric is called team velocity, and is averaged over a
rolling five-iteration window. Team velocity is used to predict how much
work the team can get done in a single iteration, the team’s capacity for that
iteration. It is also used in the long term in making the end schedule
predictable and precise.
11Typical team velocity might be 14.3 story points per iteration. The decimal
figure comes from the rolling window averaging of accomplished scope
over five iterations.
88
accurate date (within a small margin) of completion for the entire project.
This approach works great for large projects, and analogous estimating
works great for smaller projects, so either way, estimating a fixed-term agile
project is doable.
It seems that doing three iterations before knowing the end of the project is
waiting too late. Actually, the project cost and duration are estimated in
Region 2 for funding, and the team velocity is used to refine the estimate.
Adjustments can be made after a couple months, as would happen on any
project, but agile revisions are more accurate because they are based on
historical actuals history, and occur sooner than if a traditional project was
adjusted when a potential failure came into sight.
PMI Parallels
Time: There are no time changes between traditional and agile except to
define a series of iterations that comprise the project schedule. At best, the
use cases that can be built during each iteration is applied into the iteration in
feature priority order and recorded in the Release Plan.
Quality: There are no quality standards defined yet, except for those the
technical team will develop during the technical meetings. The default
quality goal for successful agile projects is to let no defects
Human Resources: All roles and technical members should have been
defined and on-boarded by the end of Iteration 0, preferably those with agile
experience for the agile project. However, technical prowess is preferred
over agile experience when acquiring team members. Most of the agile
methodologies do not have roles defined as distinctly as they are for
traditional projects, probably as a reaction to avoid the siloes that cause
inefficiencies as information is handed off from one role to another. Agile
projects have team members who work together on many tasks regardless of
skill sets, but people tend to gravitate to the skills they do best.
Variant the agile Scrum methodology has only the roles of “product
owner,” “Scrum master,” and “Scrum team.” the product owner serves as
sponsor and requirements authority; the scrum master serves as the agile
coach or agile project manager (apM); the duties of the scrum team are not
defined further, although the team members as a whole are responsible for
requirements, analysis, design, coding, testing, and documentation.
eXtreme programming (Xp) has the same lack of role definition within the
technical team. Xp defines only “the customer” and “developer,” with
extended roles of “tracker” and “agile coach.” the “developer” of an Xp
team is regarded as anyone on the development team: analyst, designer,
tester, programmer, or anyone else.
89
Conclusion
Iteration 0 is a required step to prepare the project. This chapter explains the
work that needed to be done before the actual product iterations started:
acquiring the technical team; tailoring the agile approach to best fit the team,
project, and organization; defining the product software architecture; setting
up the infrastructure environment and tools, and refining the initial
requirements in “getting to ready.”
The technical team ideally is a team already in place, and projects are
passed to the agile team like car parts into a car assembly line. Guidelines
were given for facilitating the technical team kickoff meeting and facilitating
the agile tailoring session, with a special note about defining quality levels
and practices to achieve them.
For architecture, the Model-View-Presenter (MVP) approach was
recommended as a standard
90
Chapter 5
Introduction
So far, both the business teams and technical teams have been formed. Before
any productive work gets done in the actual iterations from 1 to N, the teams
can start thinking about the architectural principles underlying their product.
This effort may not involve any coding, but includes the highest level of
design.
• What software architecture is, and is not. The software architecture is the
driving
overall design for the system, and all other architectural sections (such as the
data
• The data architecture of the system, which references the Object Model and
outlines
how the persistent data corresponding to the object model will be managed
globally;
This chapter also tries to show that some up-front work is needed. Changing
architecture is time-intensive and difficult. Later sections contrast
architectural work performed in planning and development against code-first,
architect-later approaches such as the emergent design.
There are many good definitions for (and arguments over) software
architecture. For clarity, the one used in this book is one I’ve found
operationally useful from Bredemeyer (1999).
91
Definition
• The structure must support the functionality required of the system, thus
requiring
Defining the architecture is required for both traditional and agile projects.
Most agile projects focus on the low-level granularity of user stories and the
refactoring needed to change the implementation until it matches. The
difference is how much is defined before implementation it is started.
Balance
92
Chapter 5 ■ arChiteCture: produCt Foundation
I mention it here as an extreme example of what not to do. The reader will
have to find their own balance between full up-front architecture and design
and none at all.
• Logical view: Describes the components in the system (or subsystem), their
foundation for the system, how it separates concerns, the internal component
• Process view: Describes the details of the dynamics of the system such as
the
• Physical view: Describes the mapping(s) of the software onto the hardware
or
and it is not included here, but it is defined in detail during each of the
project
originate as part of requirements validation, and are used for producing high-
quality
products.
cases, and scenarios) serve as the fifth view (or the +1 view) that anchors all
the
others. The stakeholders’ original list of desired and needed features and
capabilities
are collected in the features catalog, or product backlog. Each feature and its
supporting workflows (shown in the project abstract’s context diagram) are
analyzed
to define the current use case catalog and requirements traceability matrix.
To get the requirements view, each feature is iteratively broken down into
scenarios—a short
+1 requirements view. Detailed use cases or user stories (paths through use
cases), which are annotated with nonfunctional requirements, form the basis
on which to build platform-independent models (PIMs), and later, platform-
specific design models (PSMs). These scenarios, or use cases, are captured
within a use case catalog and are detailed during each project iteration.
94
The object model is the main core of the PIM. The object model at the
analysis level for an application describes the problem domain. Object
decomposition is different from functional decomposition, but these two
views are critical for checking the consistency of the data, control flow, and
behavior of the objects. Each class of the model is defined by scope-of-
control decomposition. The major classes are defined through an inheritance
map of Components and their derived classes, and another diagram shows
the relationships between the classes. The object model may also include
UML sequence diagrams that are detailed during each iteration.
During each project iteration’s design activity, the analysis diagrams of the
problem domain are expanded into design models using implementation class
diagrams, use cases at the technology level (design cases), and sequence
diagrams to map the development view to the physical view. The result is a
set of platform-specific models (PSM) with enough detail to include in an
implementation.
During later design stages, the classes of the PIM’s object model are
extended at a more detailed
implementation level for components other than the problem domain, and
comprise the main parts of the PSM.
Agile Practices
Increasingly, the work that goes into the PIM and PSM is neglected, or
intentionally dropped, in exchange for rework or refactoring. The higher the
level of change, the more rework is needed. A small design change might be
refactored in a day or less, but an architectural change can take weeks. It is
the agile team’s decision as to how much plan-ahead they want. The penalty
is the rework needed to remove the entropy that results from constant change.
As a bare minimum, the development team should adhere to the 4+1
Component
Originally, developed by the Open System Group for Internet deployment, the
tool itself is referred to as OSGi, without any claim that the term is an
acronym.
95
At the lowest level are the classes that constitute the units of integrated state
and behavior (function).
Classes are the atoms of object-oriented systems. The classes are organized
into logically related groups that work together, known in Java as a package.
Each package comprises the software architectural components discussed in
the section on the 4+1 Component Model. Just as classes can be run
independently, as when unit tested, packages can also be designed to run with
minimal or no coupling.
It is through bundles that applications can be deployed for the most flexibility
because bundles can be deployed and run independently of each other when
designed properly. This deployable modularity allows users to add, remove,
and share models within the various libraries without affecting other areas
and users.
The OSGi framework is key to this aspect of behavior because features can
be added, updated, or revised
“on the fly” by installing and uninstalling bundles while the application is
still running; sometimes called a
Class
Package
Module
Logical
Application subsystems
Process
Development
Core classes
Design scenarios
Subsystem integration
Physical
Use case designs per
Hardware technologies
Integrated product
iteration
technologies
• Map use cases to logical or subsystem components: The use cases are
“threads”
pearl, and the use case executes through each one on its thread. Starting from
the
prioritized use case (or feature) catalog, decide which parts of the use case
thread
96
individual threads into common components that support those threads. These
scripts are written as detailed use cases. Detailed use cases start in Iteration
1 and
• Revise and repeat: Throughout the following iterations, add any newly
discovered
but rather as a living artifact that evolves with the development cycle.
Component, and Human Interface Component. Later, with the advent of the
Model-View-Presenter model, another specialized component was added for
automated testing—the CIV. Each component results from a scope-of-control
decomposition of the system that separates that component’s respective
concerns. The four components communicate through well-defined protocols
to ensure ease of maintenance and fast changeability. 3
Systems
Interface
Component
(SIC)
Data
Problem Domain
Human Interface
management
CIV
Component
Compontent (HIC)
Component
(PDC)
(DMC)
JUnit Test
Module
3Coad and Yourdon’s 4+1 Component Model should not be confused with
Kruchten’s 4+1 Architectural Views, an unfortunate naming coincidence.
97
The PDC manages and contains all business logic and objects that are
independent of any concerns outside the system. All data is used internally in
its theoretically optimal format. The PDC works at the informational and
logical level of data. The PDC verifies that the business rules are not
violated, and assumes that proper syntax and semantic data is being sent to it.
The other components (see descriptions next) must ensure that the PDC does
not receive corrupted data.
The DMC manages the persistence data and mechanisms for storage, such as
file systems, database
We replaced one database with another, and changed some interface coding.
there was no coupling between the database and non-dMC concerns that did
not go through the data interface in the dMC. the entire system swap,
including testing, took only three weeks!
98
The HIC manages all input and outputs that originate from or pass to a user,
such as screen views, printed reports, and device control. In a Graphical
User Interface (GUI) application, the HIC uses only visualizations and string
formats, and is responsible to interact with the user with the desired
technology and (mostly) the PDC. The HIC works at the syntax level of data;
that is, it ensures that the user input data is correct and consistent. The HIC is
not permitted to communicate with the DMC (and vice versa) without going
through the problem domain, which would create the less preferred two-
tiered model again. The HIC
can only talk to the CIV in order to assure the separation of concerns and a
more pluggable component.
Some of the HIC restrictions enforce the three-tiered domain model, and
some enable easier automated testing by using the CIV.
The reader should note that the HIC contains objects that support the GUI,
interface design, and
its behavior and is not the user experience (UX) itself. The user experience
is a psychological interaction between the user and the GUI to allow for a
satisfying (or dissatisfying) experience while using the product.
Sometimes the interface screen designs are called UX artifacts because they
are the visible part of the UX.
Because GUI objects are difficult to test, the HIC contains as little functional
logic as possible, relegating the GUI code of the HIC to pure aesthetic
display; the logic is contained in the CIV. This approach allows the testing
engine to “plug into” the CIV, and ensure that as much semantic and
informational logic as possible can be tested automatically. The GUI code
(about 15% to 20% of the total in my projects) can be verified easily through
periodic manual inspection. This approach complies with a “pluggable”
philosophy that allows front-end interfaces to be more easily replaced as
technologies or demands change.
Architecture Recommendations
To balance the application architectural effort with the minimalist and thin-
thread approach of agile, three recommendations are made here.
• Use the MVP model as an abstraction from which to define the design and
concrete
from input to output. Establish the “Hello World” analogue of all connectivity
needed for the simplest thing first. This is often the uninteresting use cases of
99
design context, and NFRs will change. The architect needs to work with the
team
vision of where the projects and architecture are going and what is
intended,” Albert said.
“The trick is how to do that so it’s not over engineered, but just enough so
that Agile teams
I am not a proponent of emergent design, but for the sake of fairness and
completeness, the next section describes emergent design, as contributed by a
software engineering practitioner and advocate of emergent design. Tim is a
software/hardware engineer at a communications-product defense contractor,
which is the last place I would expect to see Emergent Design practiced.
has been written, and decide the best way to develop each part and parcel of
a software solution. Now, if this is a team of experienced developers
working in a familiar domain, there is a chance that the group can come up
with a pretty good approximation of what the end product should look like.
design,” but for any serious undertaking, we need to get the design right
before we build it. If the plan isn’t laid out at the beginning, then a series of
haphazard fixes to address mistakes and problems will result in a mess of
spaghetti code grown in the garden of “code and fix.” Planned design
emerged as an alternative to the “code and fix” style of early software
development. As opposed to the “code and fix” problem that occurs if a team
or individual abandons the premise of design, planned design offers a path
(that looks nice on PowerPoint slides) toward the finished product. The path
may not ultimately be the correct one, but it is a path nonetheless.
Of course, no designer can fully appreciate all the complexities in the body
of code that will develop over the course of a project. As Moltke the Elder
once said, “No plan of operations extends with certainty beyond the first
encounter with the enemy’s main strength.” Which Mike Tyson summarized
as, “Everybody has a plan until they get punched in the face.” It is inevitable
that at some point in a project’s life, there will come some unexpected
change or problem that must be dealt with. However, the further into a
project a team gets, the more complicated and expensive it is to make a
large-scale change. How can we balance these opposite forces? This is
where emergent design comes into the picture.
When do you know the most about how the software should work? A
reasonable answer, if not the
best, is “once you are done writing it.” After a team of developers has
hashed out all the issues in a project, they can look back and see all the poor
choices that hampered their progress. It stands to reason then, that by
delaying implementation decisions until later in a project, that a software
developer will have a better understanding of the best solution, and so will
be prone to make better decisions. This is one of the principles behind
Emergent Design. By postponing major decisions until later in a project, it is
more likely that the decisions will be correct, and it is less likely that the
decisions will need to be undone later.
Emergent Design does not say that a developer can simply decide that he is
“not going to do design anymore” because he doesn’t want to. For Emergent
Design to be truly successful, the software must be flexible enough to be
altered significantly late in the development phase. Conventional wisdom
holds that the later in a project’s development a change is made, the more
expensive - time and cost - that change is.
This is the same reason that planned design can run into issues when
unanticipated difficulties arise. So, how is it possible to practice
evolutionary design then?
So, now we will consider the reasons that cost of changing software is high.
If a major change is made to software, this requires extensive regression
testing, and that is a major expense. Using automated testing brings down the
cost of these tests exponentially. By using test-driven development (TDD),
there is an existing body of tests wrapping the software and ensuring the
classes and methods still work as intended.
Automated testing, at both the unit and integration testing levels, reduces the
cost of large-scale testing.
Another way that late changes can have a high cost is by introducing
additional bugs with the changes.
While TDD gives us confidence that our code is still in the same state that it
was prior to the change, there is the possibility of concurrency issues or
some other failure that is not easily caught by tests. In this case, the
continuous integration can keep the software ready to deploy, or in our case
to re-deploy, at any given moment. In continuous integration, developers are
regularly merging code into the main branch, running tests, and building the
project. This can lower the cost of introduced bugs by allowing the
developer to move a fix into test or production very quickly.
101
combined, the end result is a code base that can be modified with low cost at
any point in the development cycle (Fowler 1999b). In the end, emergent
design is not the enemy of planned design. Every software developer writes
code first in her head and then on a screen, and in this sense, every bit of a
software project is planned before it is written. Emergent design is an
attempt to address the known shortcomings of planned design. Lowering the
cost of making changes late in the development cycle allows a software
artisan to make choices about a particular problem, when he knows the most
about it.
PMI Parallels
This chapter focused on technical aspects of software architecture, and the
different perspectives that one can take, reconciling them together through the
product requirements to come to a consistent and tight framework on which
to build the product. The PMI does not address software architecture, so
there is nothing that deviates from the PMBOK.
The big exception to the principles behind the PMBOK is contained in the
concept of Emergent Design, which advocates no up-front architecture or
design, but uses an evolutionary approach to both. This is strictly different
from the PMBOK, which teaches building a full-blown work breakdown
structure (WBS) before starting construction (Of course, agile does not
recommend using a WBS either.) Emergent design is being attempted in agile
circles, but is too new for any studies to measure it benefits or effectiveness.
Conclusion
The end result of an agile project is a code base that is “able to be modified
with low cost at any point in the development cycle,” as Tim Armstrong
writes. There is some question about how agile projects are able to save
money over traditional projects. As Boehm showed, the cost-change curve is
flatter for small teams than for larger teams, and traditional projects typically
use larger teams. Fowler added that the cost-change curve is flatter for agile
projects than non-agile projects. Agilistas argue that the flattening is because
of the practices or TDD, CI, and refactoring combined, enabled by
architectures and designs that allow fast changes. Why agile projects have a
flatter cost-change curve is still controversial, and perhaps not important
from a practical sense.
102
103
Chapter 6
Infrastructure: Supporting
the Project
Overview
The product is built by a team of differently skilled people, each using their
own specific set of tools and procedures, and working in different system
environments to accomplish their tasks. They also require a set of tools and
procedures used by the team as a whole. The project infrastructure must
include environments (hardware plus software tools) for analysis,
construction, 1 testing, managing, and sharing information.
The staging and production environments must also be considered before the
product goes into operation.
During Iteration 0, the project’s infrastructure is put in place; that is, the
combination of all the different tools, systems, and facilities needed to begin
the actual delivery of business value. The infrastructure supports the
technical team both as skilled professionals and as people. The developers
will need hardware and software for programming and unit testing, and will
need build and configuration tools. The testers will need an isolated system
for integration, system, and GUI testing; tools to track defects, and preferably,
a separate place to stage a final build before it is released. Analysts will
need spreadsheets and document tools for requirements. The agile project
manager (APM) will need task tracking and reporting tools. The training
environment is an exception in that it is not set up during Iteration 0, but
before the product goes into production.
The team as a whole will need shared tools, such as code and document
repositories. Agile teams
1I use the word construction to distinguish it from the more general word
development. “Construction” refers to the practice of writing code, unit
testing, and integrating the code into the shared codebase. “Development” is
the more general term to refer to building the product as a whole:
requirements, construction, testing, and so forth. The technical team, working
during iterations, is called the development team, and the programmers who
perform the design and construction are called developers.
105
Infrastructure Environments
Figure 6-1 shows an abstract view of the environments and how the build
moves from requirements to release. Each element is keyed to the following
numbers. Although the environments are separate in the figure, usually the
hardware and software environments are mostly the same for the team, but
are shown here for descriptive purposes, and reflect the team interactions.
pertaining to the project: requirements, code, unit tests, and related project
artifacts.
The codebase is the shared repository for all the code, tests, and builds. Both
the
docBase and the codebase are part of the same version control system shared
by
the team to ensure that all team members have the same (latest version)
artifact or
build. Stakeholders may also access certain portions of the docBase, usually
project
1.
2.
and software tools for constructing and unit testing the build. Each developer
contributes his or her part to the build, and downloads other developers’
106
3.
testing the build. Note that the build is extracted from the codebase, and only
test
cases are uploaded. Any defects found while testing the build are sent back
to the
4.
User demo: At the end of each iteration, the team holds a user demo to allow
the stakeholders to review the part of the product completed in the current
user demo will reveal defects, which are returned to the developers for
repair.
aside as ready for release. This is called the staging environment, although it
may
staging, but is should be separate, with its own user IDs, licenses, and
training data.
staged build becomes a compilation of all the builds that went before.
Eventually, the
business units decide to release the build as the first (or next) version of the
product.
production environment. The team controls the project environment until the
build
makes most use of the project environment in that he or she builds the
project-level
performance reports that originate between other team members, such as,
team
It usually contains word processors for writing use cases and stakeholder
meeting minutes; spreadsheets for the features catalog, use case catalog, and
the RTM; and graphic tools to build wireframes or screen design prototypes.
If use cases will be validated, then diagramming tools for UML diagrams are
needed.
As the analyst takes each use case designated for the iteration and elaborates
it into a detailed use case, and works with the team to produce user interface
artifacts, he or she makes them available to all in the shared repository.
There is no need to wait until all the use cases are completed before making
them available—the sooner the developers receive each use case or user
story, the sooner each can be implemented, integrated, and tested. Recall that
a single use case may contain many user stories; two or three use cases may
keep the team busy for the entire iteration.
107
The development environment contains the machines and tools that support
coding, unit testing, version control, configuration management, and various
compliance checkers. The developers need a place to store the current
codebase with unit tests. They need build tools, like the open source products
Maven or Ant, which package the build and run automated unit tests and
compliance checkers, like CheckStyle. Many of these support tools are
integrated with language compilers, unit testers, metric calculation
applications, and compliance checkers into a single integrated developer
environment (IDE) such as Eclipse.
The development environment should be set up to provide the fastest and best
services to the
developers, which is why new product releases often run on the latest, and
most powerful, technological machines. Once the product is built on these
powerful machines, it is hard to scale them back to “standard”
machines that most users have—one of the factors why customers must
upgrade to new hardware when new software becomes available.
The developers need access to the requirements environment to pull down all
requirements artifacts (use cases and user interface artifacts) from the
docBase. When the developers have completed all coding, unit tests,
regression tests, and possibly compliance checking, for each use case, then
that part of the development build is copied to the test environment and
becomes the test build. There is no need to wait until all use cases are
completed before sending it to testing—the sooner the testers receive and test
it, the sooner defects can be repaired. There are usually as many
development builds and test builds as there are use cases.
The test environment supports the testers, and contains the hardware and
software tools to verify the test build, which is a copy of the latest
development build. The test environment contains the machines and tools that
support all automated testing: regression testing, integration testing, user
acceptance testing (UAT), system capacity and stress testing, and
performance evaluation. (The test build inherently supports unit testing too,
but that is a role of the developers.) The test environment has defect tracking
and reporting tools.
After the testers verify that the test build meets requirements (with all defects
repaired), then the test build is passed to the staging environment. The build
is now marked “Ready for release.”
Too many companies think they can get away with having the testers run their
tests on the development environment. The development environment and test
environment need to be separated for several
important reasons.
Although developers and testers start with the same version of the build
when it is copied from the development environment to the test environment,
the development build soon changes as developers add, remove, delete, or
refactor the code. It also is unstable as code changes and high-impact defects
crash the system under construction. The development environment is
commonly unintentionally unstable.
The testers must test a stable version of the build in a stable environment, one
that can be ready to go to the users, and it must be immune to the many
changes that occur in the development build. Ironically, the test environment
supports system crashes (or may cause them) as part of various kinds of
testing, so the build is intentionally unstable on occasion.
108
The test environment must be more similar to the production environment that
it is to the development environment. The testing environment should be as
much of a clone of the production environment as possible. For some
performance tests, common operational applications in the production
environment are run in the testing environment to simulate the load of the
production environment during normal operations.
The testing will be less effective and waste more time if the production
environment is too different from the testing environment. There is little point
in testing a build differently than how it will be used.
Developers should not have access to the test machine, or no more than read-
only access. The testers can move the development build into the test
environment when they are ready to test. It is too easy for developers to make
a “trivial” change to the database or code directly without the required
discipline (regression testing at least) that assures the test build is still
defect-free.
Why did that developer make a change to the testing data? he didn’t want the
defects he found in the development environment to be seen by the testers or
at the user demo. By changing the data, the development defects would not
occur (he thought). unfortunately, the test data and development data were
now not the same, and caused the subsequent crash.
The staging environment supports the testers, and contains the hardware and
software tools to execute the user demo. The staging environment serves two
purposes.
First, it serves as a holding area for the fully tested build from the iteration,
and is now called the s taged build. The staged build waits until the business
units decide the product, or partial product, should be released to operations
in the production environment. Each test build that comes from the testing
environment is an updated version of a previous build, so the test build
replaces and augments the older staged build as the new releasable product.
With the advent of configuration and version control tools, and the complex
branching abilities of shared codebase tools like Git or Subversion, a
separate staging environment is not strictly needed. The staged version of the
build is usually a different configuration of the test environment, but can be
the same machine. (It can simply be a separate branch in the version control
system.) After final testing and debugging, the test build can be redefined as
the staged build version, and can reside on the test machine.
This version is augmented as more test builds are approved and added to the
staging.
109
on the plus side, an external Qa team will move the staged build to their own
environment, which may have better tools, and more skilled and
knowledgeable testers. the agile team usually tests the build for functional,
and perhaps configuration, considerations, but the Qa may test the build for
other things. the Qa team may give the staged build a more through testing at a
level not available to the agile team, such as for load or stress testing,
performance evaluations, and compliance checks.
the training environment may be part of the staging environment, and just
before product release is a good time to set it up. the training environment
should be a separate environment, isolated from the development and test
environments, with its own user IDs, licenses, and training data. although the
staged build is stable and clear of known defects, the user in training can
sometimes crash the system, either from undiscovered defects, configuration
problems between environments, or strange actions by new users.
there is no inherent reason that the training environment be part of the staging
environment, except that it is needed at this time, before a stable release goes
into production, and the staging environment is not otherwise active. the
training environment is a good last minute effort in finding unexpected
defects.
“thrown into the wild” where it is expected to survive on its own for at least
until the next release.
Release procedures are strict QA gates to ensure that this new application
does not jeopardize the existing applications, and perhaps damage the user
base and reputation for the company. There are
also strict maintenance guidelines about how long the product will be closely
monitored (often called the warranty period) before defects found are
repaired by the project team, instead of repaired by the maintenance staff as
change requests.
The business units decide when to release the staged version, based on how
much functionality
Subsequent releases to the initial release also need to factor in support calls,
revisions to help documentation or mechanisms, and other change requests.
Change requests that originate from the field (production environment) often
comprise high-priority changes to releases in progress, and may change the
development direction.
The project environment supports the agile project manager specifically, and
the project team in general.
The APM needs reporting tools and task tracking tools, which are shared
with the whole team. The project environment includes at least the following.
• Task tracking: The team selects items from the iteration backlog to
complete by
the end of the iteration. One of the most famous of the agile techniques to
track
progress is the agile wall—3×5 cards or “sticky notes” are placed on a wall
to
designate the user story or support tasks of the iteration. Each card contains a
user story or a support task, and the person currently doing the work. The
cards
show who is doing what and when. The visual status of the iteration is
apparent
at a glance by anyone, very useful for the stakeholders. See more on the
iteration
process in Chapter 8.
simulates the agile wall. The online aspect of the board means it is not
restricted
by physical location, but can be seen during any meeting anywhere with
online
access. My team members often keep the online task board on one
workstation
• Reporting: The Kanban board (or agile wall) provides tangible and
definite
status. Each task on a card is either complete or not. When the card is
compete,
a spreadsheet can automatically convert the card data into a burn-down (or if
velocity. Some online task boards can do this automatically. See more on
reporting
in Chapters 8 and 12.
to check status or information, agile teams work in a large open room most of
the
Most organizations have rules about “moving the furniture,” or defining the
agile
room: it is not permitted. Kent Beck (1999, 80) comments on putting the
product
ahead of facility constraints, which also emphasizes the value of putting the
111
All this screwing around with the furniture can get you in trouble… I say,
“Too
experiment.
An agile also room needs plenty of wall space for big visible charts
(BVCs), also
called information radiators, especially if online task boards are not being
used.
Regardless, burn-up charts and other progress devices populate the wall
space of
expect to find out, contribute information that was overheard and needed, all
to the
benefit of the team and product. Alistair Cockburn (2004) calls this process
osmotic
The team member needs to be able to see each other, to hear shouted one-
off
machine at the same time, changing off partners as they need. This is common
for
mentor and mentee relationships, but agile makes it a standard practice. One
may
argue that during routine pair programming, for a particular technical point,
one
person in the pair knows more than the other person, and so the mentor-
mentee
in Chapter 10.
• The agile room should also contain as many whiteboards as possible, and
power outlets for the various computers and work screens. Mobile phones
with
cameras have replaced the printing whiteboard. If the team is a virtual team,
then
commonplace years ago. Conference calling on a phone does not work nearly
as well
development, some from that are inherent from the principles, and some
purely
from the organizational culture. The reader may find it useful to refer to Scott
3Pair programming started for programmers, but the practice has moved to
any two people working together simultaneously at the workstation—testers,
BA and stakeholder, programmer and tester, and so forth. Pairing is the more
proper term now.
112
Tools
The topic of tools is broken out into its own section to keep the mainstream
flow of the various environments cleaner; each environment’s tools are
discussed separately, instead of in line with the environment descriptions.
Specific tools used on my projects are listed for the various associated
environments.
a tool budget by using open source tools. Products like OpenOffice4 Writer,
Draw, and Calc serve well for word processing, diagramming, and
spreadsheets, respectively, and they integrate seamlessly. (There are, of
course, the commercial equivalents.) There are plenty of shared document
repositories available, like Google Docs for stakeholders and nontechnical
documents.
Regardless of the tools used, make sure that all the formats are compatible
and standard. Building a diagram with a proprietary format that cannot be
read by other members of the team is not productive, and tends to make that
person perceived as a poor team player. Even if the formats are compatible,
the artifact must be editable by all those who need to edit it.
Business analysts work fine with the standard office tools such as
OpenOffice. If they are validating requirements, simple open source UML
editors are available, such as Violet and Green, but Draw is also sufficient
for this. I particularly like CS Odessa’s ConceptDraw Pro for diagramming.
It is not an open source product, but it is reasonably priced. Business
analysts may also need Business Process Modeling Notation (BPMN) tools
to analyze business workflows and derive use cases. Whatever the tools
used, they must be compatible with the other team members for shared
communications, and possible shared editing.
• Programming: One of the most popular IDEs for Java applications is the
open source
specially formatted comments in the code and builds the API documentation
automatically. Other languages have similar autodoc tools. (2) For general
documents, such as user manuals, charts, and graphs, the standard team tools
suffice. (3) Our team puts technical documents inside our codebase
repository in a
4www.openoffice.org
5At the time of this writing, Eclipse Mars ( August 2015) was the latest
production version. It can be found at
www.eclipse.org.
113
are needed to define what should be and should not be in the document.
Sometimes,
documenters elaborate too much. Not only is it confusing, but violates the
agile
• Unit testing: JUnit is the standard for unit testing Java applications. For
other
will run all JUnit unit tests each time it invokes the build process, thereby
providing
automated regression unit testing. Both Maven and JUnit come with the
Eclipse IDE.
• Design: Most designs for an agile team are informal. Designs can be drawn
on a
whiteboard and a picture taken with a nearby camera phone. More formal
design
tool. There are many general diagramming tools, like OpenOffice’s Draw
tool; all are
open source tools. The most important aspect is to have a single tool for a
consistent
format, so that only one tool and format is needed by the team to edit
diagrams.
• UX artifacts: Although the business analyst defines the requirements, the
developers
are often asked to build screen mockups. Open source tools like Windows
Builder
are simple enough that the BA can use it to draw their own screen mockups,
and yet
powerful enough that developers can define a screen layout using expert
knowledge
or Git. The developers update the build with new code daily, and eventually,
when
the build is ready for testing, the build is extracted (versioned) for testing,
and the
developers continue with coding, unit testing, and updating the development
build.
are used, the developers and PM have found them to be indispensable. Open
source
structure, and commenting) and high readability reduces defects, and their
subsequent rework and cost of repair. Coding standards define how to write
these
overwrite) to the same codebase, and the testers, documenters, and others
who may
not be well versed in the language but need to read that code. Coding
standards of
some form are needed. Checkstyle6 is one of the tools that automatically
checks for compliance during the build process.
Programming styles are emotional and personal, and “religious” wars have
started over minor things like on which line a brace must reside, or how
many
spaces to indent subordinate lines of code, or how long a line of code should
be
before it wraps. There are more than a few perspectives on coding standards.
6See http://checkstyle.sourceforge.net.
114
consistently readable code by using the same language style. That style is
agreed upon by the team and tried for a few iterations, revising as needed.
With
this approach, most of the developers will have to adopt a new style, which
is
Initially, the disciplined developer has to undo his or her coding frequently
and revise it later, which rarely happens. Therefore, this approach is initially
standard easier and Java code less prone to error, Google has a freely
available
set of Java standards and an application to go with it for just this purpose
(Google 2014).
Allowing diversity with formatters: Many IDEs come with formatters so that
the
developer can write in whatever style they want, invoke the built-in
formatter,
these were called “pretty printers.”) Everyone can write and read the code in
their most comfortable style. However, each time the code is reformatted, all
their code (at least daily). At first, if many files are changed frequently,
upload/
the developer will not take the time to reformat the code, and gradually get
The testers will need the standard team tools for writing their test cases,
executing the test build, writing defect reports, and updating the RTM. They
will also need tools to support their activities, such as defect trackers . The
test machine should be isolated from the development environment so that it
is not easy for the developers to change the test build. Keep in mind that
these are tools, and not specific practices. See the relevant chapters for the
practices of developers, testers, analysts, the APM, and others.
IDE to write the integration tests, and run both the integration and regression
tests.
The integration tests are written in JUnit for Java applications (or xUnit for
other
languages). They also need to access the version control system to retrieve
the latest
development build. The Eclipse IDE has a built-in SVN and Git client,
automatic
• GUI testing: I have not found any suitable open source tools for automated
GUI
so will GUI regression testing, which is laborious. There are many GUI test
tools
from the commercial sector, but even those leave much to be desired. The
effort of
running manual GUI tests is one of the prime reasons that the MVP
architecture
should be used, which minimizes the amount of code that must be manually
retested.
115
• Defect tracking: Defects are defined and added to a tracking system, such
as the open
source product Bugzilla. The tracking system should have good reporting
capabilities
because all defects are listed, sorted, and selected in various ways for
review each
week. Defect tracking reports of various search and sort criteria (number of
defects,
number of open defects, mean time to repair, etc.) are important for the APM
reports.
• Test reporting: Most of the artifacts the testers produce are test cases;
OpenOffice
works for that. The testing results can be stored and updated in any
spreadsheet,
They describe how to write complete and useful test cases. The one standard
that I
strongly push is the NEBS method. There is no software needed for this;
NEBS is a
technique, not a program, used to convert use cases to test cases (see
Chapter 11 for
details).
PMI Parallels
The PMI does not involve itself in particular tools or vendors, and therefore
does not address infrastructure configurations or tools. They do recommend
standards and documentation practices, but not as prolifically as discussed
here. Documents in agile teams are written for communication purposes, and
are not the same as big upfront detailed specifications found in the traditional
approach.
PMBOK, and is consistent with agile practices. The RTM, critical to change
management and scope tracking, is a staple artifact of both the PMI and the
Software Engineering Institute (SEI), which now recognizes agile projects as
complying with the SEI Capability Maturity Models.
Conclusion
Most organizations have predefined infrastructure that they expect the project
team to use for
116
117
Chapter 7
Initial Requirements: Defining
the Product
Overview
The previous chapters explained how the project manager collected initial
project information: project charter, mission statement, stakeholder
expectations, project abstract, and feature catalog. In this next step of
progressive elaboration, the business analyst will drill down another level
and collect the initial requirements.
Now that the business objectives are agreed by the stakeholders and business
workflows identified, the BA can begin to derive the high-level requirements
from those workflows and stakeholders. In the two-weeks (Iteration 0) that
the developers and testers are putting their parts of the infrastructure in place,
there is time for the business analyst and stakeholders to decompose the
business workflows from the project abstract context diagram, and to refine
the features from the feature catalog, into detailed use cases. It is the detailed
use cases from which the development team derives user stories— the
implementable-sized parts of requirements—during the construction
iterations.
The business analyst may also want to formally validate the detailed use
cases for high-quality products.
Formal validation ensures that the requirements, which contributes to over
half of all defects in the product, are clean before design and coding start.
When Iteration 1 starts, the developers should have the use case catalog, at
least one detailed use case (possibly validated), and the proposed user
experience mock-ups needed for the detailed use case design.
119
Every couple of years a new piece of data is published showing that the
greatest source of defects originate from the requirements and functional
design step of product development, not from coding. The programmers are
not the problem. The oldest study I have seen, and one of the most cited, is
from Alberts (1976, 230–238). Although it was done in 1976, it was still
typical of projects until about 2010. Not much has changed in requirements
results in the last 30 years!
What happened to change that? Agile and its depth-first way of collecting
requirements arrived. The agile way of collecting requirements using
progressive elaboration, thin-thread development, continual stakeholder
involvement, automated testing, refactoring, and use case validation, changed
requirements results. Agile techniques have made it possible to double the
quality of the product by removing the requirements defects, if not by
validation, then by repeated conversations with the stakeholders and
customer SMEs to refine what they wanted until they got it.
Functional Requirements
Requirements Hierarchy
The requirements, like the product itself, have a hierarchy that is revealed as
it is progressively refined or elaborated. Initially, the product is decomposed
into workflows from the context diagram of the project abstract, which in
turn are decomposed into use cases, and eventually into their constituent user
stories.
(Both detailed use cases and user stories may have UX artifacts associated
with them.)
Figure 7-1 shows the cone of scope relating project and requirements
artifacts with team members as they are produced through the requirements
hierarchy. The requirements artifacts are shown on the right side of the cone,
and the people providing those artifacts are shown on the left side. It
illustrates the widening requirements scope hierarchy before and during
iterations.
120
Chapter 7 ■ InItIal requIrements: DefInIng the proDuCt
needs of the sponsor, who is paying for the project. Anything outside his
mission
statement is out of scope. The PM should have collected this in the project
charter
previously.
features are needed for the product, and sometimes enlist the aid of business
SMEs
to help. At first, these are “desirements”: features that are like market points
on
the back of a product box when it is sold. They become requirements after
they
are vetted against the mission statement and practical considerations. They
are
prioritized by business value, risk, and other factors (see Chapter 3) and
listed as the feature catalog. Unlike an approved, and voluminous, software
specification
document, the feature catalog is only a prioritized list that can be revised as
needed
use cases, and each use case is known (at this time) only by its single-
statement goal.
Each use case summary is a name and short description of the usage
transaction.
The list of use case summaries are collected in priority order, correlated to
feature
priorities, into the use case catalog.
121
• Detailed use cases: Each use case is expanded into a detailed use case,
which
contains the conditions in which the use case applies, detailed actor-system
dialog,
and all data required into and from the system. The data is defined for default
values,
min and max field lengths, optional data elements, and other attributes. The
detailed
use case is a rigorously written one-to-two page document that drives design,
programming, and testing. Detailed use cases are collected both before, and
during,
the iteration in which they are implemented. 1 If the use case follows the
simple IEEE
830 standard-compliant use case template, they may be validated for zero
defects,
• User stories: During the iterations, further detail can be defined for each
use case.
Each use case contains a series of normal and error paths; each path through
the use
case is a user story, or a particular scenario. User stories are easier than a
use case
to implement and test. Many agile teams work directly with user stories and
skip the
use case stage. Chapter 9 discusses the pros and cons of use cases vs. user
stories, and how they relate.
• User experience (UX) artifacts: During the iterations, the detailed use case
or user
some other similar document that describes the user’s interactivity and one
aspect
of the product’s appearance. Both use case and UX artifact are part of the
functional
requirements. Some use cases have multiple screen mockups, and each is
referenced
in the detailed use case. Both user stories and UX artifacts are described in
more
There are two other concepts under the requirements hierarchy, although they
are arbitrary distinctions for convenience. They both are useful when
rearranging features or use cases in the product backlog. The terms stem from
XP and are helpful for talking about groups of user stories or use cases. It
helps to use these words when discussing how to sort through the product
backlog to extract groups of use cases.
• Epic: A large use case or very large user story. It may be that the use case
is not
broken down enough, or there is lots of work in that one use case. An epic
usually
cannot be implemented within one iteration, or is the only piece of scope that
can
transactions: deposit funds, withdraw cash, and transfer funds. The use case
inquiry
1If the detailed use case reflects design choices, they are called design
cases.
122
Chapter 7 ■ InItIal requIrements: DefInIng the proDuCt
Requirements Elicitation
That is far from the truth. Stakeholders have a concept in their head, but
usually not specifically enough to express, and definitely not enough to
specify a product. The business analyst helps the stakeholder mold that
concept into a buildable, testable, and usable set of requirements for the
developers and testers. The business analyst must ferret out the information
that is omitted, verify it, and then put it into a detailed use case, which works
as a specification.
As the story goes, each blind man feels the elephant to try to get an idea of
what an elephant is. One touches the trunk, and thinks of a snake. Another
touches the tail and thinks of a rope. The third touches the side and thinks an
elephant is a big leathery wall. When they get together, they might become the
various facets that make up an elephant. (In the worst case, they may think the
elephant is a shape-shifter.) It is the BA’s job to ensure that he or she gets a
real picture of an elephant after talking with the various “blind men”
123
Most people trying to collect requirements will schedule a meeting for the
business SME or user to ask what they want the product to do. They often
come armed with a list of typical questions, sometimes overly technical. This
is a bad technique for at least three reasons. First, the users or SMEs do not
know specifically what they want, which is partly why business abstracts
were collected earlier. Second, close-ended questions will bias the results,
and give flawed requirements. Third, it sets up the business SME to change
his or her mind more often because their first answer was not well thought
through.
Then I introduce the class to a new version of the game called “Quenty
Twestions,” because it is Twenty Questions with a twist. I break the class
into groups of four or five. They select one person as a “target person” who
will answer the questions, one to track the questions, and the others will ask
the questions. I meet privately with the target people of the various teams and
tell them to answer completely randomly.
I ask them to write down random Ys and Ns on a piece of paper before the
questioning and answer
After 10 to 15 minutes of this game, (almost always) all groups will have a
very definite object that they think the target person had in mind: a black
beetle in the Peruvian rainforest, a new computer system currently being
installed in the IT department, a young unicorn with silver hair and blue eyes.
Where do these objects originate since no information was transferred by
the person answering the questions? The objects came from the questions! As
a business analyst, do not ask questions for initial requirements. Use your
questions for clarifying or probing into missing data or operations later.
The users or business SME’s often aren’t sure how they will work with the
new system. They expect
the development team to tell them. Sometimes the users or SMEs are not
really stakeholders but were delegated to the task and may not be sure of
their role—someone else thought they would be a good source of
information. To avoid the “Quenty Twestions” syndrome, ask the users or
business SME, as a first step, to write the business abstract page, discussed
in Chapter 3.
2The word objects are used here in the object-oriented sense of analysis,
design, and programming.
124
The business analyst starts with the feature catalog and the project abstract,
which contains the context diagram (see Chapter 3), as his or her key
artifacts. He or she uses both to convert, in conjunction with the business
SMEs, to produce a list of prioritized use cases in the use case catalog. It is
important to note that the BA is not expected to convert the entire feature
catalog during Iteration 0.
1.
2.
Decompose each workflow to use cases into the use case catalog.
3.
4.
5.
6.
Each step is discussed in more detail in the sections that follow. Note that the
validation step for a detailed use case is not listed. Although that should be
done for some projects as part of validating the detailed use case, those more
technical details are described in Chapter 9 .
Associate Features to Business Workflow
Ideally, the BA is available before the business kick-off meeting, and can
help build the business workflows before or during the first business team
meeting that builds the project abstract. The project abstract contains a
context diagram that illustrates the high-level workflows of the new product
and how certain actors (stakeholders, users, and external systems) are
involved with each workflow. The BA starts with the project abstract, which
contains the context diagram and project objectives, and develops the feature
catalog. The feature catalog is merely a value-prioritized list of features from
the stakeholder of what they want the product to do.
The BA meets with the business SMEs and focuses on the first priority
feature, and they identify
the workflow associated with that feature. (Be aware that some features are
related to non-functional requirements and have no workflow.) The SME
describes the various interactions the actors have with the workflow that
expresses the feature.
A note about features. Features are rather large granule requirements, scoped
randomly as stakeholders think about what they want. Features are not
cleanly mappable to use cases and serve only as an anchor point for the
stakeholders to “know” what is in the product. Features-driven development
is reminiscent of traditional bottom-up or top-down development, instead of
thin-thread development, which agile
uses exclusively. Ideally, the BA should steer the stakeholders (and customer
SMEs) into thinking of user interactions instead of features, and deriving use
cases directly from the business workflows.
125
Decompose Each Workflow to Use Cases into the Use Case Catalog
The workflow is a functional description (inputs, process, and outputs) of
behavior at a high level, just as the use case is a functional description at a
lower level. A single workflow will contain one or more use cases.
In some cases, the agile team may choose to write user stories with the
stakeholder, and develop no use cases or requirements specification.
The BA breaks down the workflows of the one-page context diagram into
more detail. The more detail one extracts from the workflow, the easier the
constituent use cases are to see. Workflows below the level of the context
diagram can be annotated with Business Processing Modeling Notation
(BPMN) diagrams, state transition diagrams, or state charts, which were
invented to model and document the behavior of systems (Satzinger, Jackson,
and Burd 2004). Both are primary tools of the BA. The one that the BA uses
is often a personal preference. Workflows shown as state charts are
sometimes better received by the technical developers, because use cases
can also be represented with state charts. That means that a single notation
can be used for both workflow decomposition and use cases. Either way, the
BA should pick the tool that fits his or her preference and communicates best
to the team.
For example, the user’s workflow may be to log on, withdraw money, and get
their account balance.
These three use cases make up a single workflow session at the ATM
machine.
was the paradigm of choice before agile. It is still valuable. UML includes
state transition diagrams and a notation specific to UML called a sequence
diagram, which has largely replaced state charts. Sequence diagrams are not
particularly useful at the higher BPMN level, but UML Activity diagrams
work sufficiently well for that. Check out Booch (1994) for a full description
of UML and its many uses. Although developed over ten years ago, it is still
a modeling standard of the Object Management Group (OMG) and the
The decomposed workflows will show the data flow transitioning from
inside to outside the system,
and vice versa. A use case is generally limited to a single actor providing
input data, and perhaps the same or different actor receiving output data. This
heuristic helps to delineate one use case from another.
Figure 7-3 shows a mid-level workflow (within the context diagram) of the
ATM system, using a UML
Activity diagram. It represents a mid-level flow and use cases can be read
directly from the diagram—the easiest way to identify use case summaries.
The state transitions are labeled in bold as use case summaries.
3“In systems engineering, use cases are used at a higher level than within
software engineering, often representing missions or stakeholder goals. The
detailed requirements may then be captured in Systems Modeling Language
(SysML)
126
Terminated
9 Shutdown:
Cashbox Empty
Initialized
Ready to
Authorize
2 Authorize
Displayed)
7 Quit
Ready for Admin
Transaction
6 Inquiry
8 Reconcile
Admin
Ready for
Authorized
Customer
Transaction
Customer
Authorized
All use case summaries are collected in a list—the use case catalog,
prioritized roughly the same as the feature priorities. (The use-case catalog
priorities may change later, when the team helps identify technical and
implementation dependencies during the working iteration.) The use case
catalog contains only the summary goal statement of the use case, and is
associated with at least one of the features in the feature catalog. An
inconsistency between the workflow, features, and use cases is the first
indication that a feature may be out of scope, or a workflow is incomplete.
In Figure 7-3, one of the Admin workflows is the sequence of use cases 1
(Initialize), 2 (Authorize), and 9
(Shutdown). Use case 8 (Reconcile) is optional because the system state can
change with or without that use case. One of the customer workflows is use
case 2 (Authorize), one or more of use cases 3, 4, 5, or 6, and then use case 7
(Quit).
It is critical for an agile team that some of the use cases get detailed before
Iteration 1. The BA works to identify the use case summaries (scope breadth)
only as far as necessary to detail the first few use cases (scope depth). Once
the developers and testers move forward with building and testing detailed
use cases, the BA can return to the workflows and features catalog to widen
the scope with more use cases.
127
Chapter 7 ■ InItIal requIrements: DefInIng the proDuCt
Starting with the highest priority use-case summary in the use case catalog,
the BA progressively elaborates that summary into a detailed use case. The
use case is a scenario that describes how the user’s business value is
achieved with a dialog between the user and the system. The use case can be
captured in many forms, but I prefer the IBM format: The business goal of the
use case is stated, the desired actor-system dialog defined, Input and Output
sections give a concise summary of what input data is required or optional,
and what output data will always, or sometimes, be produced. See Figure 7-
5 for an example detailed use case Withdraw from Savings/Checking
Account from the ATM project.
128
Chapter 7 ■ InItIal requIrements: DefInIng the proDuCt
There will be many questions for the business SME as the detailed use case
is filled out. I have found it most helpful in my roles as BA to ask the SME to
fill out the template with me, but I type the text in, controlling the phrasing,
which is critically important in a requirements spec. If the SME is not part of
writing the use case, they must review and approve it. The SME must have
delegation authority to finalize a requirement, or much time will be wasted as
the SME repeatedly “goes back and talks to her manager.”
The detailed use case text may need to be revised after the UX artifact is
defined (designed).
129
The use case template in the “Additional Tools” section (see Figure 7-7)
contains the use case goal, actor, reference to the associated UX artifact, pre-
and post-conditions, detailed interactive transaction steps, and a summary of
the inputs and outputs. These last two sections define the default data values,
and some syntax requirements, such as field length.
Warning some agile teams skip writing use cases and go directly to user
stories. use cases contain a set of related user stories, and provide context
for those stories. a series of user stories without their enclosing use case will
allow the product scope to get fragmented, and risk conflicts within the
requirements, code, and tests. even if the agile team agrees not to rigorously
validate the use cases, the Ba should always write use cases for anything but
the simplest application.
Bertrand meyer (2014) criticizes user-story-only requirements with an
example of trying to write a square root function by giving only examples of
square roots. If an example root is missed, the square root function may not
work properly. not all possible examples can be given, so the square root
rule, or equation, must be given. he also argues that the code will be
fragmented and prone to more rework. there is a strong difference between
data points on a line, and the line itself.
The use case will be used by the stakeholders to confirm the product will do
what they want, by the tester to write test cases, and by the developer to
implement code. The use cases are also used by the operations people and
maintenance programmers. It must be modifiable because requirements
change. It is also
important if the use cases are going to be rigorously validated. In short, use
cases should meet the IEEE 830
To comply with the IEEE criteria, the analyst must verify the use case in
several ways. Fortunately, the use case template builds in most of these so
the effort is little more than writing the use case.
4Although the standard was defined in 1998, it was reviewed and reaffirmed
in 2009.
130
project abstract’s context diagram. Each use case must be matched to one of
those
workflows, or it is out of scope. The RTM can confirm that the workflows
and use
cases correlate.
• Data completeness: The workflow shows the data input, output, source,
and sink (who
or what receives the data), and the use case must indicate those data flows as
well.
• Logical completeness and correctness: The BA must ensure that there are
no logic
holes in the usability with the system, and that all the ramifications of the
stated
“do what the user meant, and not what the user said.” This kind of
requirements defect
is particularly common when user stories are written without the context of
the use
case, and the developer focuses too closely on the story during
implementation.
the spec. Use consistent formatting, unit dimensions (e.g., feet or meters), and
structure for clarity. This is a technical writing issue that becomes simple
when a use
• Ranked for importance and/or stability: The use cases are derived from
the workflow
and features, which are prioritized by importance (business value), risk, and
other
factors in the product backlog. Therefore, when the use cases are developed,
the BA
• Verifiable: A detailed use case can be verified in many different ways. Use
cases (and
the UX artifacts) can be verified with the stakeholders after they are written,
through
team review before they are implemented, with the testers that the
implementation
matches the requirements, and by the user demo that the requirements and
code
the use cases can be rigorously verified and validated using the UML
techniques
mentioned elsewhere.
lead the project astray for a long time. Inconsistent terminology is the worst
kind
of miscommunication because it causes misdirection, which may later cause
team
can cause more confusion than clarity. The BA should be aware of these
terms when
• Modifiable: Detailed use cases are short and arbitrarily numbered, and as
to other artifacts, can be easily changed without affecting the bulk of other
requirements. I like to write use cases using the ACID principle (atomic,
consistent,
isolated, and durable) that applies to any transaction. See more about this
idea next.
131
written and approved by the stakeholders, the BA must verify that the testers
and
developers must be able to use it. The requirements will drive coding, test
cases, and
later during operations, maintenance programmers and production support
people
will need to know how to revise or repair the product. The requirements are
initially
a living document used to communicate to the project team, but are later used
for
For agile projects, the testers and developers must understand the use case
enough to be able to estimate how long it will take them to test and code that
requirement. If they can’t, it usually means the BA must go back and get more
info, or rewrite it so that it can be coded and tested.5 Worse yet, the
developers or testers may make assumptions about what the unclear
requirement means, and
• Traceable: The RTM is the control and tracking collection point in which
the use case
is traced back to the feature and enclosing workflow. Later, the RTM shows
what test
cases are associated with a particular use case, and when the use case is
completed.
Some teams find it valuable to also put the object model classes into the
RTM. The
RTM is key to localizing defects and change management, all enabled by use
case
traceability.
These specification factors looks like a long and tedious list to keep track of
when writing a simple use case, but they are all contained in the use case
template. One merely needs to follow the structure of that one page form and
usually the use case meets all needs. Remember that after the use case
template is filled out and approved, it is still a focal point for team and
customer discussion and revision; but having the initial use case first will
avoid much rework at the coding and testing level.
The SME and BA have the option of drafting a proposed UX artifact during
Iteration 0, or later when the use case will be implemented, depending on
how proactive the SME is. Only a proposed UX artifact can be built because
building a UX artifact is a design step. It describes how something appears,
or how a layout is defined. The designer (or team) must be involved during
the implementation iteration to introduce what technology can bring to the
final UX artifact solution. The final artifact must be approved by at least the
SME
Figure 7-6 shows a sample UX artifact: the layout and labeled data elements
of the transaction receipt.
In this case, it is the “Deposit to Primary Checking” transaction, but it can
contain whatever transaction applies.
5Bad estimates may also mean that the team doesn’t have enough experience,
or enough experience in that domain yet.
Breaking the use case down into user stories also helps to estimate because
the scope is smaller. See Chapter 9 for more on estimating an iteration’s
scope.
132
Table 7-1 illustrates a sample of a partial RTM. The features shown are in
priority order, and are mapped to use cases, which are mapped to associated
UX artifacts. Except for UC 1, Initialize ATM, each use case has a UX
artifact, from which the user triggers the transaction (use case). Compare
with the use cases numbered in Figure 7-4.
Priority Feature
UC # User
Use Cases
UX
Admin
Login
Reconcile transactions)
Admin
Get Reconcilement
report
Admin
Terminate ATM
or savings account
account
Admin
Initialize ATM
None
133
UC 1 allows the Admin to load cash into the cashbox, start up the machine
physically, download new and updated user accounts, and initialize the log.
UC 2 must upload the transactions log and shut down properly. This
symmetry provides the minimal level of functionality, similar to the popular
Hello World programs that establish that all support and linkages are in
place.
which matches the funds in the deposits box with those reported by the
machine; and UC 2 “Terminate ATM,” which shuts down the machine and
updates the external banking system. The report will be fully functional after
all transactions are working; alternatively, the reconcilement report could
have been augmented from the log file after each transaction was
implemented.
The UC 3 “Login” use case )is listed before the customer transactions UC 4
to UC 7. UC 4 “Deposit”
is paired with UC 5 “Get Balance Inquiry” because now the customer will
have a balance to check. UC 6
After all the use cases for the first workflow/feature have been defined,
detailed, and recorded, they can be put aside for the developers when
Iteration 1 starts. The BA and business SME now move onto the next feature
and workflow. Many features will overlap workflows, so the same workflow
may be revisited over time as the prioritized features dictate. It is not
important if some of the detailed use cases are left undefined, and not
important if not all the use cases summaries are detailed when Iteration 1
starts; but it is important that the developers and testers have at least a few
use cases to work in Iteration 1.
PMI Parallels
Only a few PMI knowledge areas have relevant key differences for initial
requirements elicitation: scope, schedule (time), and stakeholder
management.
Scope: Requirements and scoping is one area that agile diverges in practice
from traditional methods, but not in principle. The principle is use
progressive elaboration to decompose scope; the practice is when that is
done. Agile scope is broken down into a prioritized list (non-hierarchical)
scope, then further decomposed into middle-sized tasks (thin-thread use
cases), and then later, just before implementation, decomposed further into
small activities (user stories or detailed use cases). In traditional projects,
this work is done in detail before design and coding start; for agile projects,
a handful of use cases are defined and implemented while further scope
decomposition is done iteratively.
6There are tools that easily convert spreadsheet lists like the RTM into
online electronic “3×5 cards” that allow the team to work in whatever format
they prefer.
134
BOKs as part of its PMP and PMI-ACP training. Agile takes into account
team dynamics and sociology much more than traditional project management
did, and it is making much of the difference.
Conclusion
This chapter described how the business analyst elicits high-level (initial)
requirements from the business SMEs, decomposing the most valuable from
the prioritized product backlog into a series of related use cases.
After a few use cases are defined and recorded in the use case catalog, the
BA elaborates each use case into a detailed use case, which complies with
the IEEE criteria for a requirements specification.
The APM collects features from the stakeholders and helps them prioritize
those features for business-value, risk, dependencies, and other factors. The
feature catalog is developed for the product as known to date. As soon as the
feature catalog is prioritized, the BA decomposes each feature, in priority
order, into one or more use case summaries in the use case catalog. (Some
agile BA’s would convert to user stories, instead).
The BA should start the initial requirements elicitation and decomposition
process in Iteration 0 so that some detailed use cases are ready for the
development team at the beginning of Iteration 1.
Additional Tools
The form below is the use case template I prefer. Its fields are explained
below the form. An example of how to use the form was given in Figure 7-5
above.
135
Descriptions
Each use case requirement conforms to all the characteristics in 4.3 of IEEE
Standard 830-1993. Specific requirements are to be cross-referenced to
earlier documents that relate. All requirements must be uniquely identifiable.
Usually, a use case should not take more than three pages.
• UC# (use case number): Enter the number, used for reference purposes, of
the
Use Case from the use case catalog, which reflects the stakeholder priority of
• Use case name: The name of the use case, as an imperative (e.g., Add
Permit to
• Actor: The actor of the system that plays a specific role and drives the use
case. Actors may also be external systems. There is rarely more than one
actor per use case.
• Pre-conditions: The starting conditions that must hold true for the Use Case
to
be applicable, and made false at the completion of the use case. If multiple
pre-
conditions are included, the author must specify if all pre-conditions are true
(logical
AND), or any one or more of the pre-conditions are true (logical OR).
Subcases may
use case that was false before the use case started. If multiple post-
conditions are
included, the author must specify if all post-conditions are true (logical
AND), or
any one or more of the post-conditions are true (logical OR). Subcases may
post-
• Invariant: The state that is maintained throughout the use case. It is true
before the
use case starts, and still true after the use case finishes. Only the relevant
informative
invariants are listed (there are an infinite number of invariants, but not all are
relevant.)
• Detailed description: The sequence of steps explaining how the use case is
to describe the interaction between the actor and the system, without
explaining
the design of the system. Refer to the [Friedman] for a list of unambiguous
words.
All conditional (IF-THEN-ELSE) situations should be explained except for
error
be included in the “Additional Tools” section and referenced here. The first
step
• Input data: A summary list of all external data needed for the use case to
be
in the detail description. All data elements must be defined as either required
or
square brackets.
• Output data: Enter a list of all data produced by the use case execution. All
data
elements listed here must be directly produced and documented in the detail
Optional data is placed within parenthesis; default values are placed within
square
brackets.
recorded here for later use. Open issues may be put here pending their
inclusion into
137
Part III
Iteration 1 to N
Chapter 8
At this point in the product development life, the project has been selected, a
sponsor is funding the project, and the business stakeholders have identified
their expectations. Within our limited knowledge at this point, the project
constraints (scope, schedule, cost, quality, and others) and the product’s
feature catalog are defined as best as can be.
Iteration 0 was completed last chapter. The developers have their computers
for coding and testing.
A shared repository, tools, and other infrastructure elements are in place. The
business analyst has a prioritized use case catalog and RTM. A release plan
of fixed iteration time boxes was developed and a user demo is scheduled in
two weeks. The project team is ready to start the first productive iteration.
This chapter describes what happens during that iteration, and during the
ones that follow.
The agile iteration approach described shortly is one of many, and is more
conservative than used in many agile projects, but is a good first pass at
using agile methods in a traditional environment. It employs a balance
between rigor, speed, and short-cycle feedback consistent with the current
agile culture, allows a clean mapping between traditional methods at the
release level, and agile tracking and tasking at the iteration level.
It is not the only agile process that can be used, but it is a combination of the
principles behind any teamwork following agile principles. The process
described exemplifies the core process of all the successful agile projects I
have run in the last 15 years as an agile project manager. However, in all
cases it has resulted in zero-defect products released periodically, within
budget, and on time. It should make a good first pass from which your team
can apply, modify, and complete a successful project.
141
requirements (see Chapter 9); developers for design, coding, and unit testing
(see Chapter 10); testers for integration, GUI, regression testing, and QA (see
Chapter 11); and the PM for team integration, monitoring, and reporting (see
Chapter 12).
There are specific skill sets that should be employed that are typically
associated with roles. In the overview that follows, the tasks are organized
around roles but keep in mind that anyone on the team may fill one or more
of the roles. Also, not everyone is as experienced in one set of skills as
another. In describing the duties of every role, this book will enable
individual team members to better perform their own role by making them
better aware of the tasks involved. During the agile practice of pairing, team
members improve their skills too.
Before we proceed, I need to make a few comments about the general role
descriptions.
Some agile teams do not consider project managers as members of the agile
team. Some agile teams
have a team member called an agile coach, who has similar skills within the
team as a traditional project manager has outside the team. Both the
traditional project manager and the agile coach role are considered here as
part of the agile project manager role.
Similarly, the tester role includes GUI tester, integration tester, test code
writer, QA manager, and other distinctions below the level of discussion for
this chapter.
Traditionally, people with different skills sets are brought together from
different functional
Warning agile thinking wants to avoid the silos and bottlenecks of role
delineation, so some agile practices teach that there are no specific roles
reserved for pM, Ba, testing, or developing: everyone on the team can do
everything.
imagine a group of people who cannot write code or tests getting together
and saying, “there are no roles.
let’s all pitch in and build this product.” the logical extension of this pseudo-
agile thinking would disband the professions of business analysis, project
management, and testing—eliminating those programs from university
curricula—and let everyone be trained as an agile developer. Moreover,
programmer training would not be needed if no special skills were needed,
and everyone could build software. i don’t think the agilistas would agree
with this scenario. (if agile developer training included the skills of Ba, pM,
tester, and developer, then perhaps it would make some sense for agile
projects of the future, but currently, that kind of omni-training doesn’t exist.)
142
Chapter 8 ■ Overview Of an agile iteratiOn
Agile teams evolve naturally to a higher skill set for all. Agile teams may
start off avoiding specific roles—all members work on the product tasks as
they can. Eventually, the team realizes that one team member does one task
better than another, and likes that task better than other tasks, and two
members work together on the same task. Eventually, the team has naturally
selected itself into the best configuration of roles for that team. This effect is
a key agile practice, and is called a self-organizing team. As the team
evolves through the stages of forming, storming, norming, and performing,
their skill set improves to an average accumulated minimum but focused on
individually-preferred roles.
Now that we have described how the agile team roles are defined, we can
move on to what they need to do during an iteration. The next step is to move
some of the prioritize features defined in Iteration 0 to what will be done
during the iteration.
The product backlog contains the prioritized features and use cases that are
to be implemented. Even if not everything is known, scope can be added,
revised, or removed. The iteration backlog contains the scenarios (typically
use cases or user stories) that will be implemented during the current
iteration. The iteration backlog contains the more detailed and higher priority
items from the top of the product backlog, and reflects the timing of
implementation.
The first batch of use cases were identified before Iteration 1 started. The
BA converted features into use cases, placing them into the use case catalog,
during Iteration 0. During Iteration 1 to N, the BA refines use cases into
detailed use cases with UX artifacts. The team breaks the use case into
comprising user stories ( disassociation) and estimates how many use cases
(or stories) they can do within the current iteration. The BA tracks the use
cases per feature in the Requirements Traceability Matrix (RTM).
Metaphor refining features into detailed use cases or user stories is like
making batches of cookies.
the stakeholders fill a huge cask with cookie batter ( product backlog), and
the Ba extracts some of it into a smaller bowl ( use case catalog), adding
walnuts, raisins, chocolate chips, or other variations ( detailed use case).
During the baking process ( iteration), the team scoops out final dough onto a
cookie sheet a few at a time ( iteration backlog) to make eatable-sized
cookies ( user story). the size of the cookie sheet (team’s capacity or team
velocity) determines how many cookies can be baked at a time. the Ba must
keep enough cookie sheet dough available while refining the dough from cask
to bowl.
143
This section describes the work of the team within the iteration process flow.
The iteration starts with the initial iteration meeting: iteration planning. The
“Box Numbers” in each heading refers to the boxes in Figures 8-1 and 8-2.
The following subsections correspond to the boxes shown in Figures 8-1 and
8-2. Each box is described for a general understanding of the flow through an
iteration. Beneath each Box description is a table that shows who facilitates
the task, what the task is, what is needed (inputs), and what the task
accomplished (outputs). Chapters 9 through 12 give a more detailed
perspective of the flow for the BA, Developer, Tester, and APM,
respectively.
Each iteration within the agile approach contains detailed requirements,
analysis, design, coding, and testing tasks. After the team has completed all
user stories, the current portion of the product, or the build, is delivered to
the user for acceptance. Each completed build should be production-ready
for the accumulated scope of the current iteration.
Agile teams focus on one or two use cases at a time, but various aspects of a
use case aren’t completed at the same time. When the BA finishes one use
case, he or she returns to the iteration backlog to work the next use case.
When the developer finishes coding one use case, he or she returns to the
next approved detailed use case. When the tester finishes writing test scripts,
he or she may return to the next approved detailed use case while waiting for
a new build to test. These parallel efforts result in two or more use cases
being worked concurrently as the people are ready to take on more work.
Sometimes one person with the requisite skill set will jump roles and help
another team member if they are behind.
To keep the overview simple, terms like story points and two-week
iterations are assumed; other
metrics could be used, such as ideal hours instead of story points, or three-
week iterations instead of two. Do not focus too heavily on the specific
terms; they are flexible.
Caveat the roles shown in the swimlane diagrams in figures 8-1 and 8-2
are matched with the traditional responsibility assignment Matrix (raM),
shown as in table 8-1. the COra matrix attempts to explain the workings of an
agile team within the traditional context with which pMs may be familiar. the
team workings are much more dynamic and interactive, but i can only explain
the processes sequentially. Please consider this overview as a teaching aid,
and not a prescriptive agile process.
roles are loose in agile, so COra should be read loosely. the owner role
means that that person should initiate the meeting, but only as facilitator at
most—there is no command-and-control leadership. contributors help build
the artifacts, and reviewers look over the artifact for correctness and
understanding; they probably have to use the artifacts for development to
proceed. Approvers can reject an artifact and are responsible for the
correctness of the artifact. Business SMes are usually approvers.
144
APM
SME
Analyst
Tester
Iteration Planning
O, A
meeting
2
cases
O, A
A
C
w/UX artifacts
O, A
O, A
scripts
O, A
Transfer build
O, A
10
O, A
11
O, A
C
integration tests
12
O, A
tests
13
Defect/change meeting
14
Approve build
A
A
15
QA reports
16
User demo
17
Stage or Release build
145
Chapter 8 ■ Overview Of an agile iteratiOn
After each use case is sized, and placed one at a time into the iteration
backlog, the team decides how many use cases from the use case catalog can
be implemented by the end of the iteration. The stakeholders’ priorities
determine which use cases are selected for a particular iteration, adjusted for
dependencies (which can be added) and risk. Each set of use cases in the
iteration backlog focuses on what the next user demo will display.
Once a handful of use cases (or stories) are sized, the team must determine
how many they will commit to completing by the end of the iteration. The
APM provides the team velocity so that the team knows how much scope
they have completed during previous iterations. The team must not
commitment to more than their average velocity from previous iterations.
(The team can always add more stories later if they finish their commitment,
but they should not promise more than they have done in the past.)
When the estimating is completed, each person self-assigns at least one card
to themselves. Each user story in the iteration backlog is written on a “card”
on the iteration task board, with the story’s size, the name of the person who
volunteered to work the first task for it.
Iteration planning sessions in later iterations will also include new items that
were added to the product backlog during the course of this iteration,
approved change requests that have been worked into the use case catalog,
and any defects that were deferred out of the iteration in which they were
found.
The team leaves with a list of all the use cases to which they committed to
show in the user demo.
BOX #
OWNER
INPUT
PROCESS
OUTPUT
APM
Selected prioritized
Iteration Planning
Committed and
(scope estimation)
prioritized list of use cases
to complete
Figure 8-1. Agile iteration flow (first half); develop detailed use case (Box
2)
146
Each use case in the use case catalog needs to be expanded into a detailed
use case. Hopefully, this was finished before the iteration started, but
sometimes not. (User stories are extracted from the detailed use cases by a
process Mike Cohn likes to call disaggregation, typically done by the
developers).
The business analyst (BA) meets with the business SME and progressively
elaborates the highest priority use case in the iteration backlog. Working
together, they expand the use case summary into a detailed use case.
Box 2 in Figure 8-1 overlaps the BA and business SME swim lanes because
both are actively involved in this step.
BOX #
OWNER
INPUT
PROCESS
OUTPUT
BA
Highest priority use case
Un-validated detailed
use case
(scope refinement)
The next step is optional, as indicated by the dotted line around Box 3 in
Figure 8-1. Use case validation of this kind should be used on complex
applications, and are probably not necessary for a simpler product, like
displaying a straightforward series of web pages.
OWNER
INPUT
PROCESS
OUTPUT
BA
Detailed use
case
(scope validation)
diagram
layouts, and their associated detailed use case for review. The testers and
developers review the requirements to ensure that they are testable: all data
included, all behavior defined, default and field lengths defined, and other
implementation details defined. The BA must revise any of the requirements
that are insufficient for the testers to use to test the use case, or insufficient
for the developers to build the use case.
2“Widget” is a general term for any of the GUI mechanisms to control the
user interface: buttons, drop-down boxes, menu configuration, check boxes,
dialog boxes, and so forth.
147
Box 4 overlaps the team and business SME’s swim lanes to show that the
technical team and the
The developer (user interface designer) refines the detailed use case with
design ideas, how it will work within the system, and how the interface will
look and feel. The user experience (UX) artifacts and design features are
stand-alone documents, but are referenced by the use case. These two tasks
—elaborating the use case with design and defining the UX—need to be done
almost concurrently.
The analysis and design review of the use case and associated UX artifact(s)
is a form of Quality Gate.
The team decides whether the use case should move forward to construction,
or be revised.
BOX #
OWNER
INPUT
PROCESS
OUTPUT
Developer
Detailed use
case
UX artifacts
(initial design)
Key Point: Concurrency after the design case is approved, the flow splits
into two parallel paths: one for testers and the other for developers. the
testers build test scripts from the design case, and the developers write code
and unit tests for the design case. Concurrency ensures that the tests are
written and tested independently, and are based on the requirements and not
the code. One forrester researcher called it parallelism, an important
improvement to agile practices (gualtieri 2011).
GUI testing ensures that the user experience is as the business requested or
better, and focuses on the appearance and behavior of the user interface. A
test script describes a particular test: pre-conditions for the test, predefined
input data, expected behavior, verification procedures, post-conditions, and
expected output data values. A GUI test script focuses on the user
experience testing. A test case, or simply a test, is an abstraction of the test
script, test execution, and target being tested.
The GUI testers write GUI test scripts from the approved design case. The
GUI tester identifies all paths of the use case (user stories), and writes tests
scripts for the user interface defined in the UX artifact. All GUI test cases are
recorded in the RTM when they are written, and associated with the use case
being tested. All GUI test cases become part of standard regression testing.
Some agile testers do not write automated scripts for GUI tests, and perhaps
it is not necessary except for complicated and large systems. However, it is
essential that the test cases are identified, so that none are inadvertently
omitted. The RTM helps the tester ensure that all tests are identified and
tracked.
GUI tests are informed by integration tests and the code, so the GUI tester
reviews the test scripts with the integration tester and developer as part of
developing GUI test cases.
148
OWNER
INPUT
PROCESS
OUTPUT
GUI Tester
artifacts and
RTM
“plug-in” to the CIV component, simulate the GUI data, and compare
responses that return from the CIV
plug-in point. The system thinks that all the test data is coming from, or going
to, the GUI.
Integration tests are informed by GUI tests and the code, so the integration
tester reviews the test scripts with the GUI tester and developer as part of
developing integration test cases.
If the validating XUML sequence diagrams are available, the integration tests
are much easier to write.
The scripts are written together in preparation for when the build is available
for testing (Box 9).
BOX #
OWNER
INPUT
PROCESS
OUTPUT
Integration
Tester
optional sequence
updated RTM
diagrams
identification)
At the same time that the testers are writing the test scripts, the developer
will implement that use case; that is, write the code and unit test for it. Code
is written one user story at a time because a use case is usually too large to
code directly. A user story is short and has a single clear objective.
Code and unit tests are informed by the GUI and integration tests. The
developer reviews the code and unit tests with the testers before writing the
code.
Next, the developer augments the unit test and code to make that test pass.
After a series of such test-code-test cycles, the user story is complete. The
developer submits the code and associated tests to the shared code base, the
team-shared repository for all code, tests, and technical documents. The
developer repeats the same cycle for other user stories in the use case until
the entire use case is complete. It is easy to submit something to the shared
code base daily.
All unit tests are added to the automated regression test suite.
4For more information and a comparison between use cases and user stories,
see Chapter 10.
149
BOX #
OWNER
INPUT
PROCESS
OUTPUT
Developer
Write code and unit tests Code and unit tests per use
w/UX artifacts
case. (Construction)
Automated regression tests consist of all integration and unit tests built and
that passed earlier for the build.
After each user story is completed, the developer runs the automated
regression tests to ensure that old code was not “broken” by the new code;
that is, did not cause new defects. If something was broken, the developer
repairs that code, old or new. The regression test will also cover all the
other developers’ code and unit tests that are downloaded each day.
After the automated regression tests pass for every user story in the use case,
the developer updates the use case as “code complete” in the RTM, and the
date it was completed. (A use case is not considered
“complete” until all tests for it have passed.) The developer uploads any
revised code and associated unit test cases to the shared codebase.
Today’s continuous improvement tools automate the build process with full
regression testing,
BOX #
OWNER
INPUT
PROCESS
OUTPUT
Developer
(Construction validation)
150
Most likely, the integration test cases have already been written and added to
the RTM because it takes less time to define the test cases than for the
developers to code the use case. The team’s daily meeting informs everyone
which use cases are available for testing, which ones are waiting on coding,
and which are not.
One of the testers downloads the build (called the development build
because it is from the development environment) onto the test environment.
The development build is called the test build once it moves to the test
environment. It is isolated from the developers. The developers can continue
to upgrade the development build with new use cases, but it doesn’t affect the
test build in the parallel environment.
• When the developers have (1) written all the code for the use case; (2)
written all the
unit tests for the use case code; (3) the development build passed all the
regression
tests 100%; and (4) the “code complete” date is recorded in the RTM for the
use case.
• When the testers have (1) written the GUI test scripts; (2) written the
integration test
scripts; and (3) both sets of test cases are recorded in the RTM for the use
case.
OWNER
INPUT
PROCESS
OUTPUT
Tester
Development build
Test build
The GUI tester runs the GUI tests against the test build. GUI testing is fairly
quick to do. Failed tests are recorded in the defect log, and passed tests are
recorded in the RTM with the date the tests passed. All GUI tests are added
to the GUI regression test suite, which for manual testing is often merely a
document binder.
BOX #
OWNER
INPUT
PROCESS
OUTPUT
10
GUI Tester
test scripts
(UX validation)
After the integration test scripts are written, the integration tester writes the
integration test code for the latest use case. The code is written from the
integration test scripts, and run against the test build. Testers should not test
against the development build, which is more volatile and can interfere with
the expected test results.
Writing the integration test code takes longer than running GUI tests, so the
GUI testers and integration testers generally do not have a conflict trying to
test at the same time.
Running the automated integration test is much faster than running GUI tests—
usually only a couple of minutes. The test build can be tested much faster than
the developers can write new production code, so the testers are usually
waiting for the next build for repairs or new functionality.
151
Failed tests are recorded in the defect log, and passed tests are recorded in
the RTM with the date the tests passed. All integration tests are added to the
regression test suite.
BOX #
OWNER
INPUT
PROCESS
OUTPUT
11
Integration tester
Test build,
scripts
(functional validation)
tests
Variant the testers may not have the ability or skills to write test code. for
example, writing automated test code in JUnit is similar to writing product
code in Java, and testers are typically not developers. a developer may write
the integration tests in JUnit instead as long as it is not the same developer
who wrote the product code under test. Under the agile paradigm, the
integration tester should learn to write in JUnit, or whatever test language is
appropriate.
• Automated regression tests (unit tests and integration tests) are run to
ensure that
nothing has changed since the last time the build was tested. Any “breakage”
(new
• GUI testing must be regression tested, but GUI tests are tedious and
sometime
performed periodically, usually every third iteration. At the very least, the
product
must be GUI regression tested before release, and given a quick sanity check
before
• RTM update verification: A tester or the APM checks through the RTM to
see if all
committed use cases have been implemented and tested, with pass dates. A
use case
is not complete until all its tests pass. Of course, this assumes that all the
tests have
been written.
defect log entries are closed as expected, and other tools are run (e.g.,
performance
or profiler tools) to ensure that all standards have been followed. Some QA
tests are
automated, and others use manual checklists. If a compliance test fails, the
tester
writes an action item to bring the build back into compliance, and mentions it
as a
152
BOX #
OWNER
INPUT
PROCESS
OUTPUT
12
Integration
Test build,
Tester
QA checklists,
regression test
verification. (Quality
passed tests
suite
Assurance)
and can be scheduled immediately for repair. A few repairs may not be able
to be
and tester and perhaps, the analyst. There are several cases: (a) Sometimes a
for clarity; (b) Sometimes the test is incorrect, must be revised, and tried
again; (c)
Sometimes the failed test, after discussion, does represent a code defect, and
then
must be repaired.
• The failed test may indicate a small change; perhaps someone on the team
suggests
business, then a change request (CR) can be written on a card, with its
impact,
knowing it is unlikely that the business will not agree with the analyst. The
CR impact
• The failed test may result in a large change; such as the business requests a
requirements change because the failed test surfaced some information the
business
had not considered. A CR must be written and its impact estimated. The
change
must be estimated and added to the CR. The CR must be approved by the
business.
Often, these large CRs cause such a significant change in scope, cost, and
schedule
that the APM must discuss the CR with the stakeholders. Large changes from
this
D&C meeting are handled the same as an external CR initiated by a
stakeholder and
5The change can be implemented, in a literal sense before approval, and the
team may take the risk that the change must be undone later if the business
does not approve it. The bigger the change, the bigger the risk of rework; and
whether the team decides to accept that risk and rework, that depends on the
team’s aversion or acceptance of the risk.
153
The team decides if a particular repair can happen in the current iteration, or
must be deferred to a later iteration; but deferrals should be the exception
and not the rule. Deferrals tend to accumulate over time and repair work
tends to escalate exponentially, so the build becomes increasingly difficult to
repair because of the snowplow effect. For details and serious side effects of
the snowplow effect (see Chapter 10).
After the meeting, the team adds any tasks that need to be done as a result to
the iteration backlog. The RTM is updated now if it was not updated earlier.
See the upcoming “Implicit Change Management Flow Within an Iteration”
section.
BOX #
OWNER
INPUT
PROCESS
OUTPUT
13
Integration
Test results,
tester and
defects list, QA
optional SME
requests, RTM
or have a change
request. (Change
Management)
The team decides if the test build is ready for the User Demo. All team
members take accountability for the build being ready. If there is more work
to do on it, the build goes back to the team, and the cycle repeats from there.
If each member of the team agrees, the test build is production-ready—all of
the integration, regression, and QA tests pass 100% and all defects
scheduled for repair are repaired—then the team moves the test build into the
staging area. The build is held in the staging area under version control until
it is ready for user demo or release, or both. (A user demo always precedes
a release). The build represents the validated partial product to be
demonstrated to the user and possibly released into production afterward.
BOX #
OWNER
INPUT
PROCESS
OUTPUT
14
APM
Iteration backlog,
Decide if build is
regression test
completed at proper
The iteration reports are built from the cards the developers and other team
members completed
throughout the iteration. There is no special work the team needs to do. See
Chapter 12 for more on the iteration reports.
Box 15 may be performed before or after the user demo, depending if there is
another opportunity to present the project status to the stakeholders. The
Iteration and QA reports are part of the regular periodic information to upper
management, and usually part of the release package. The APM writes up the
iteration and quality reports, but the team provides almost all the data, which
is why Box 15 is in the Team role swim lane. Read more about these tasks in
Chapter 12 .
154
The reports produced depend much on what upper management wants, and on
what the APM uses to
• Iteration burn-up chart: Shows the work done during the iteration and
whether the
• Project burn-up chart (or burn-down): Shows the work done for the
project so far. It is a merging of the iteration burn-up charts for the duration
of the project. It also shows
the average team velocity and by extrapolation, a forecast of the team’s
progress and
defects, and their rate of repair, for the iteration (or project if desired).
and risk factors for the key project indicators for scope, cost, schedule, and
quality.
• Updated RTM so that the business can see what features and use cases have
been
completed so far and compare with what they requested. The RTM contains
traceability from a feature, with which they are familiar, to use cases to test
cases and
test results. The RTM also shows outstanding defects and approved CRs.
(Sometimes
I use a separate change request log with the people who requested the
change, and
BOX #
OWNER
INPUT
PROCESS
OUTPUT
15
APM
for management
Reporting)
The user demo should include attendees besides the team and business
stakeholders. It should include, if they wish, the people who must use it in the
field: the helpdesk, maintenance programmers, staff and line managers, and
possibly the public. They may not always attend, but they should be invited
each time.
155
BOX #
OWNER
INPUT
PROCESS
OUTPUT
16
APM
Approved build,
questions for
stakeholders
Reporting)
If the stakeholders have approved the user demo, then the build can be moved
to staging. Staging is where the build is stored; it should no longer be
modified (except to update with future builds). Depending on the
organization, it may need to go through a formal alpha and beta test, an
independent QA inspection, or wait until the operations staff can install it
and the users have been trained to use it. The decision to release the product
is a business decision, and outside the scope of the technical team. See also
the section below Prepare the Release.
BOX # OWNER
INPUT
PROCESS
OUTPUT
17
Like most agile concepts, agile change management is harder to explain than
it is to do. Figure 8-3 recaps the change management process that is inside an
agile iteration.
Describing the flow from left to right, everything starts with the requirements,
at the arrow marked START.
approved, its summary ( use case entry) is entered into the RTM (bottom
arrow).
• The testers convert GUI and integration test cases from the use case. When
the test
cases are completed, the test IDs are entered into the RTM ( test case entry).
One use
case maps to many GUI test cases and many integration test cases.
• The developers implement the use case with unit tests and code, uploading
it into
the development build each day. When the use case code is done, the
developer
enters the use case ( code complete entry) into the RTM with the date of
completion.
• When the RTM contains entries for use cases, tests, and code, the testers
download
the test build and run all tests against the use case: GUI, integration,
regression,
and QA compliance. The testers record the pass date in the RTM only for
tests that
passed, and collect failed tests in the defect log (not shown). Only after all
the test
cases for the use case pass is the code entry marked complete with a second
date.
The use case is not complete until there are no unrepaired defects.
156
• All failed tests are taken into the defects and changes meeting. Each failed
test results
in one of four things.
repair, including writing a unit test so it doesn’t happen again. Flow returns
to
Test defect: There is a problem with the test, so it is given to the tester to
repair.
Change request (CR): A change may be needed, either suggested by the team
or the business. The CR form is filled out, and a developer provides the
impact
estimate. The PM gets stakeholder approval for the CR and its impact. If it
is approved, flow returns to the “use cases” step via connector A. If it is not
case will have an entry in the RTM that indicates it has been implemented
and passed all tests. When the build is fully complete, all use cases for the
iteration will be associated with test pass dates, code complete dates, and
code passed dates. Due to time constraints, the team or APM may defer some
repairs and CRs to later iterations.
Preparing the release is not part of the iteration flow per se because it
happens after many iterations are completed. In traditional projects, the
product release will come near the conclusion of the project, or at year’s
end. For agile projects, the product (or partial product) may be released at
the end of any iteration.
157
There are product level reports that may be required for release: number of
tests and pass rate for all tests, technical documentation to explain the
product internally, and so forth. All the supporting technical documents,
training schedules, and any other release-related documents are collected
into a release package.
How much time and effort for a release depends on how much documentation
is wanted, and how
frequently the product is being released. Often, a week is scheduled for this
last step. The more frequent the release, the smaller the release package—
another reason to have frequent releases. Some software is released
frequently enough that no special actions are taken except for the user to
download the new product from an online repository.
BOX #
OWNER
INPUT
PROCESS
OUTPUT
N/A
Team
team documents
documents. (Release)
(release package)
PMI Parallels
created, and then the activities that support that scope are defined and
sequenced with a precedence network diagram (PND). The PND is not
permitted to have any loops in it—it is a straight sequence of each task in the
scope.
Agile differs strongly from the traditional approach when defining scope and
task sequences. Agile uses loops for feedback as often as possible. There are
feedback loops for iterations to adjust the project schedule and scope,
feedback loops for tasks within an iteration for reviewing and improving task
results, and even individual tasks are reviewed with others in pairing
activities (e.g., pair programming) and the four-hour rule. (The four-hour rule
says that if a person cannot solve a particular problem within four hours, then
it is that person’s duty to bring it to at least one other person to ask for help.)
For clarity, I omitted many of the actual loops in Figure 8-1 and 8-2, but
every task involves the whole team in constant feedback communication
when discussing development progress.
Although traditional and agile projects have the same duration, agile projects
get more business value out sooner. The product “feels” quicker to the
stakeholders, a basic premise of agile, and is structured to ensure that fact
(Rico 2009). Agile project schedules are broken into iterations, which are
smaller than most traditional project phases or quality gates, so direction
changes are easier, adaptive, and more fluid.
158
In summary, Table 8-2 shows the major contrast points between traditional
and agile. Of course, there are many variations on both practices, so only key
principles can be shown.
Knowledge Area
Traditional
Agile
Integration
(iterations)
Scope
business-value priority
Time
delays
iteration-sized chunks.
Cost
Quality
expectations
Human Resources
quality
Communications
stakeholders
Risk
monitoring
closer monitoring
Procurement
Stakeholder
Conclusion
159
It is important to understand that these are principles of action, and the flow
is not intended to be a prescriptive process. Agile teams may perform
differently than that described in Figures 8-1 and 8-2, but these are the
iteration procedures I would recommend, and that I have used quite
successfully over the last 20 years. 6 Depending on how the team modifies it,
the process flow can be tuned toward more extreme agile practices (like XP)
or toward more traditional practices.
informative than those of RACI. The CORA chart shows how the different
roles are involved with the different steps (tasks) of the iteration flow
described.
We have come to the crux of the issue between different agile practices.
Some agile teams code from use cases, some from user stories. There are
more extreme approaches, such as the emergent design approach that does no
upfront work at all. (Emergent design was discussed in Chapter 5 . ) I
believe that some upfront work is needed to maintain a context for the user
stories: validated use cases instead of one-line statements of behavior. These
differences can be illustrated using a jigsaw puzzle building metaphor.
Some people like to build a jigsaw puzzle by laying out the frame, which
requires searching through the puzzle pieces to find those with straight edges,
particularly the four pieces with corners. After they build the frame, they use
the internal pieces to fit against the frame, working their way inward.
The user story teams build their puzzle differently. They pick a piece from the
box and lay it down. They continue pulling one piece at a time and placing it
at the bottom of the puzzle space. As they find a piece that connects to
another, they connect it. If they find a straight edge, they move it to the left,
right, top, or bottom of the puzzle space. As the team pulls more pieces from
the box, they move the piece relative to the rest of the known puzzle pieces.
Each time they find a new piece that fits somewhere, they attach it.
Those using emergent design principles are more extreme yet. They would
not have the picture on the puzzle box as a guide. Eventually, the puzzle may
get built, but only after moving pieces from here to there many, many times
(refactoring and re-architecting).
6Agile formally launched 14 years ago with the Agile Manifesto, but it is
based on the principles of Concurrent Engineering and Kaizen, which I
began using in the mid-1990s.
160
Which is the best approach? Agile projects, whether the teams employ use
cases or user stories, are successful, as measured by stakeholders’ needs met
and defect rates; much more successful than traditional projects. However,
the studies show (see Chapter 1) that agile gets much of its success from
small teams, team dynamics, and short feedback cycles, and not whether they
use cases or user stories. Perhaps whether one is a frame-builder or a piece-
builder is only a philosophical difference.
As a side note for comparison, I include traditional teams into this puzzle-
building metaphor.
Traditional management insists that the team defines the puzzle frame first.
The team finds the framing pieces first, then the pieces for the top of the
puzzle, then the middle pieces, then the bottom pieces—all before laying a
single piece! In too many cases, the sponsors or stakeholders change before
the puzzle is complete, and the new stakeholders switch the remaining puzzle
pieces with a different puzzle, and insist that the team merge the new puzzle
with the old.
Additional Tools
Planning
• Feature catalog: Prioritize features from the stakeholders. Add any support
tasks or
small (5), medium (8), large (13), or very large (21). These sizes inform the
number
• Release plan: Build the release plan by distributing features across all
iterations
team’s velocity. The team can take a first pass guess at 15 points per
iteration. The
release plan will have an Iteration 0, Iterations 1 to N, and a cleanup or
hardening
iteration, just before each release. Give each iteration a topic, or a theme
based on
iteration.
• Use case catalog:. Transform the features, in priority order, into use cases
and system dependencies. Add any support tasks or other dependencies that
are identified as
necessary.
• Iteration 0: Set aside the first iteration period to install the infrastructure,
finalize release preparations, and distribute the info needed for the iterations.
Prepare as
proposed UX artifacts.
• Iteration planning: The team sizes each use case in the use case catalog for
what
they are willing to commit to implement by the end of the iteration. Use story
points
with Fibonacci numbers: 1, 2, 3, 5, 8, and 13. Use cases larger than 13 points
must be
decomposed into smaller chunks of work.
161
• Iteration backlog: The PM places all committed cards onto the Kanban
board’s
TODO column in priority order. (That column shows the iteration backlog.)
Each
person selects what he or she wants to work on. Each person works on no
more than
two cards at a time—a primary and a backup in case their primary is stalled.
• Walk the board daily: Each day the team walks the board from right
(DONE) to
left (TODO) to move their card toward completion, passing it off to another
team
• Team reviews. The team holds reviews of stage gate packages for
approval. No card is allowed to move pass the team review lane unless all
agree. Team reviews are held
Analysis and design package (per use case): Detailed use case,
wireframe(s),
domain-only class and sequence diagram (optional), and UX artifacts for the
use case.
•
Test package (per use case): The testers’ perspective of the requirements,
as reflected in the GUI and integration tests, aligns with the developers’
interpretation of requirements.
Defects and change meeting: All defects on the failed tests log are resolved
into a
Build package: Code and unit tests for all features in iteration, all defects
passed 100%.
• Iteration closure: At the end of the iteration (by date), the PM adds each
point from
cards that have reached the DONE column and builds the burn-up charts for
the
iteration, and for the product so far. The PM also collects data from the team
to build
• User demo: Each iteration will produce a build (product enhancement) that
three iterations the product is shown to the stakeholders, highlighting the new
functionality since the last demo.
Special Cases
back to it. Normally, the PM assigns urgency to a card, but anyone on the
team can
do that if necessary.
• Lingering: A card that remains in the same lane for more than two days is
said
to be lingering, usually because the estimate was too low, and not because of
an
impediment. If that is the case, then the team “swarms” (described in this list)
to get
162
Chapter 8 ■ Overview Of an agile iteratiOn
• Defects and points: Defects are also features but without points, and slows
down
the team’s velocity. A use case is not completed until it is implemented and
tested
without defects, and no points for the use case can be tallied until is it
completed.
• Swarming: When an unblocked card is stopped for more than two days
(lingers),
the card owner requires some help. The entire team drops what they are
doing to
help the card owner, and move the card out of its lane. This team action is
called
swarming.
the product backlog for a later iteration. No points are tallied for the iteration
in
which it was not completed, even if almost complete. The points will be
tallied in full
(in flight). It is added to the product backlog for the next appropriate
iteration. If the
new item is urgent, it is added to the TODO column of the current iteration,
and a
card(s) of equal size is removed into the product backlog. Defects are added
to the
and added to the build, the build is considered ready for user demo, and
management).
• Moving backward: (a) A card may move backward if it fails team review.
It is placed
in the proper lane for the revisions to be made. (b) If a card lingers, the team
may
decide to move it back to the TODO lane for later (not to the Product
Backlog
because only the PM can add to that from the release plan). (c) Sometimes a
team
member moves a task prematurely and skips an associated task (e.g., team
review),
the card is moved back to the proper lane until that action is performed, and
then
can skip the lane in which the task is already completed. This kind of “lane-
jumping”
the estimation error, and show where improvement is necessary. The next
iteration
planning session will adjust for the poor estimate and team velocity.
163
Chapter 9
Requirements Thread
Chapter 8 gave an overview of the iteration process, tasks, and artifacts for
the team as a whole. This chapter contains a detailed look at the work of a
Business Analyst (BA). It shows how the BA uses inputs from other team
members and produces outputs for them. This chapter compares use cases
and user stories, and
describes a guideline for how agile BAs may do their job. It should help
other team members understand the BA on their team, and possibly allow
novice BAs working in an agile team to perform the business analysis and
requirements function better. If the team does not have a BA, then this chapter
may help others complete the requirements-centric tasks normally performed
by the BA.
The three most popular forms of agile in use throughout the world today are
Scrum, Extreme
Programming (XP), and a hybrid of the two. What do these two
methodologies say about the BA role?
Scrum (Schwaber & Beetle, 2001) defines three roles: Product Owner,
Scrum Master, and Project Team.
For Scrum Teams, the Product Owner will do most of these tasks, and the BA
will assist the PO with analytical details. In some teams, the BA acts as a
Scrum Product Owner by serving as the central point of requirements
reconciliation and liaison with the business team for product details. (The
agile project manager liaises with the business team for project details.)
Extreme Programming (XP) (Beck, 200) defines two standard roles and two
extended roles: Customer, Developer, Agile Coach, and Tracker. XP defines
a “developer” as anyone on the project development team, so a developer
may be a tester, technical documenter, or a business analyst. The customer
provides requirements directly to the developer and the developer acts as the
BA. No requirements specifications are created or written down. Without the
use of written specifications, the XP team probably does not have a person
skilled in business analysis; all requirements work is verified and validated
in conversation with the 165
Can the developer do these BA tasks? Perhaps, but even if they could,
developers are on the critical path; they are usually the bottleneck of the
team, and their time is better spent writing code and unit tests. So even if they
could, they shouldn’t. If developers could do the work of the BA, would they
want to? He or she chose the developer profession, and not the BA
profession, for a reason.
If the most popular agile methodologies in use today do not explicitly call out
for a business analyst, do we need BAs in software development? Are the
thousands of BAs obsolete before they graduate? Does the nation need
Certified Business Analysts Professionals, as certified by the IIBA
(International Institute of Business Analysis)? I emphatically think that we
do. Without more learning up front in “getting to ready”, we waste more time
in the refactoring activities. It is easy to say “let’s get coding and refactor as
we need,”
without realizing that that kind of (guess-and-check) coding wastes time and
reduces quality, which requires more refactoring, defect repair, and more
testing.
and design versus coding, testing, and packaging for delivery. This is
consonant with
findings in the agile community in general that taking extra time “getting
to ready” and
ensuring user stories are well thought out and communicated is critical to
the success of
For more on this topic, with an emphatic demand that we need more BAs on
our teams, see George
Pitagorsky (2014).
If an agile team has no designated BA, the APM is often the better choice
over the developers and
testers to fill the role because the APM and BA have similar roles regarding
stakeholder management and scope control. Having the APM fill the BA role
also frees up the developers and testers, who need as much time as they can
get, but only if the APM has the needed BA skills.
Although other roles on the agile team may be able to pick up the slack and
do some of the BA work, some responsibilities and tasks will not get done
without a BA. For example, the PM can manage scope control at the high
level, but unless the APM gets deeply involved in the details of the project,
scope creep and gold plating will occur at the detailed level. Developers
certainly will not catch subtle scope creep because they do not distinguish
between authorized and unauthorized scope increases or changes; if they 166
did, they wouldn’t be the largest source of gold plating! Acceptance criteria
(Definition of Done) can limit some of this, but the BA is the greatest ally to
finding what these criteria are from the stakeholders and customer SMEs.
Before we launch into what the BA role does within an iteration, let’s
discuss the BA role tasks in general.
The BA must manage expectations with the business almost as much, and
sometimes more, than the project manager. There is a difference in focus: the
BA focuses on the product at the level of the customer SMEs, and the PM
focuses on the project at the level of the higher stakeholders. Usually, the PM
works with executive management, and the BA spends more time with the
business SMEs (or Product Owner in the case of Scrum).
Although the stakeholder provides needs, features, and desires, the BA must
convert these into
not technical.” The team may build a perfect product, but the project will be
deemed a failure if the key stakeholders do not like it; and they will not like
it if their expectations are not met. It is critical to manage the stakeholders’
expectations, and the BA helps the PM do that.
The BA is the gatekeeper for the product scope, to ensure that the product
contains all and only what the sponsor is willing to pay for, before or after
product release. The BA must prevent gold plating and scope creep, both of
which add scope to the project without authorization, funding, or time
allotted. Both push the project off-schedule or off-budget.
Gold plating has been called “theft” by one customer because good-
intentioned developers add
features to the product, thinking it will make a better product. They see it as
adding a free feature because it didn’t take much time to add it. Unfortunately,
the stakeholders did not ask for those features and are charged for them
anyway, charged through the team’s salaries or contractor’s invoices. Gold
plating also adds time and cost for testing and debugging; there are no free
changes in a software product. All changes, documented or not, have an
impact.
167
defects—no missing data or logic and the requirement has what the business
implied, much harder than mere verification. The worst thing a business SME
can say about requirements to the BA (or to a developer) is, “You did what I
said, but not what I meant.”
Requirements Communication
Requirements drive coding and testing, but even more importantly, they
comprise a document of communication for use after the product is released.
The development team relies on the requirements to be clear, concise,
complete, modifiable, buildable, testable, and maintainable. Having a written
or documented requirements artifact is important for maintaining what the
project team agreed to earlier.
The requirements are a critical part of the history that the team leaves behind
when the product is in production and must be maintained. The requirements
document is one of the most important documents that must move into
operations with the product. That does not mean the requirements must be
highly detailed and voluminous; it merely needs to be barely sufficient, that
is, adequate, for the task at hand.
Requirements Traceability
The stakeholders define a list of features that they pass to the development
team, and trust that the team is building the final product properly. Yes, there
is continual conversation between the team and the business, but the
conversations focus at a lower level. The stakeholders also need to see the
final product for the features identified. The BA maintains a list of features,
use cases, and user experience (UX) artifacts to show that a request was
transformed into a working product.
(The testers also update the RTM with test cases and results, and sometimes
the developers add the code modules or classes that support the particular
feature.)
The requirements establish an anchor for what the stakeholders want. There
must be a definition of Done for the each requirement, which leads to a full
definition of how the product will look and behave in its final form as is
currently known at the time of requirements definition. Although agile allows
the requirement to change without a lot of ceremony, it still must be defined.
Without knowing when Done is Done, the demands on the team for what
features go into the product can change, and change, and change, especially
as one stakeholder overrides or changes what another stakeholder wants.
Agilists say that the “final” requirements are not completed until after the
Build is completed, because at that point, there is no “discovery” remaining,
and the Build is now part of history. The requirement as definition of Done is
needed so that the Build can complete, otherwise the scope of the iteration
can be redone forever.
168
The BA’s tasks are illustrated in the agile context shown in Chapter 8, and
enumerated below for clarity.
• Decompose the features and workflows into use cases with the business
SMEs
estimation)
• Expand use cases into detailed use cases with the business SME (scope
refinement)
• Validate use cases at the analysis level of the problem domain (scope
analysis
validation), if necessary
• Contribute to user interface design, screen shots, and augment the use case
with
• Approve, with the business SME, the final user interface and design as
being
• Review the GUI test results to ensure that the user interface behaves
consistent with
• Contribute to the defects and change meeting to help resolve failed test
issues
(change management)
• Approve the Build for user demo and release with the other team members
(scope
validation)
• Contribute data to the iteration and QA reports, and to the Build release
package
169
Ivar Jacobsen first developed the term use cases in 1986 (Jacobsen et al,
1992); he was one of the founders of the Rational Unified Approach, a very
popular software technique sometimes known as RUP. Kent Beck (2000),
founder of Extreme Programming, developed user stories in 2000. Beck
wanted to have something with less formality than a use case to use as a
discussion focus with a stakeholder. He thought that frequent conversations
and code refactoring would take care of the details missing from a written
use case.
Table 9-1 shows a comparison between user stories and use cases. Both user
stories and use cases serve the purpose to capture user requirements in terms
of interactions between the user and the system, but there are several
important differences between them. (“User Story”, 2014)
User Stories
Use Cases
Similarities
communications.
accomplish.
test cases.
testing procedures (acceptance criteria) for
Differences
process.
customers.
diagrams.
within an iteration.
170
• Use cases bundle user stories to provide a context for the simplistic way a
user
story identifies a requirement. The scope of the use case is the sum of the
user story
estimates.
• Validated use cases are closer to the design than user stories, and provide a
better
• User stories are easier to estimate during iteration planning. The BA could
prepare
a list of user stories for each use case, but stories are easy enough to extract
from the
use case that the team can do that in the iteration planning meeting.
• User stories work better for detailed coding, and writing unit tests and GUI
tests.
Before testing or coding, each use case must be broken down into its
constituent user
stories anyway.
One may say that another disadvantage of use cases is the time it takes to
write them up, and maintain them as code changes, but this is true of any
artifact, even the code that must be changed when the requirements change. It
takes longer to change the code than to change the use cases description,
which are usually one or two pages in length. If a technical manual is part of
the product release, then the use case and object model are invaluable. If the
maintenance programmers have no need of that, they can peruse the code as
needed.
Variant some agile developers write the user stories instead of a business
analyst. not only does this take much-needed time away from the developers,
but also developers are not trained as analysts.
171
Variant some agile teams skip writing use cases and develop directly
from user stories. i think this approach is problematic because a user story is
a very small chunk of scope without a context, like trying to develop a new
system from hundreds of maintenance requests. it results in frequent
refactoring because the context is constantly being re-evaluated.
Recommendation Write both use cases and user stories for large and
complex systems because it provides transparency to another level of
progressive elaboration between stakeholder features, and detailed coding
and unit testing. the user story is merely a path within the use case. if use
cases are used for these kinds of systems, then the XumL2 validation
techniques should be used with them. if the product is a simple web
application, or uses a straightforward user interface with obvious behavior,
then user stories work fine.
The user is whoever will interact with the system, and the action is how they
will achieve the goal. The goal is the business value from that one path of the
use case, and therefore a sub-goal of the enclosing use case goal. The
following are two examples, normal and error path, from a typical ATM use
case Withdraw Cash from Account.
• Normal: “As an account owner, I want to take money from the bank so that I
can have
• Error: “As the bank manager, I want the user to see an error message if the
cash box is out of money when they try to get cash.”
2XUML refers to eXtended UML notation. It augments standard UML
sequence diagrams with data flows, and uses a slightly more concise notation
to put more on the page. A brief tutorial on XUML validation is given in
Additional Tools.
172
an example of GWt statements for the above atm example could look like the
following:
-- error: “GiVen that the cash box has insufficient money in it for a particular
withdraw request, When i request more than the cash box has, then i see an
error message that tells me the atm is out of cash.”
some people find these more useful than use cases or the standard user story
template, and the form is closely related to the dialog recorded in a use case
description (pre-condition, user action, system response).
user stories come in different styles, like everything else. there are various
open source tools to support either kind of user story.
Both user stories and use cases should follow the INVEST mnemonic (Wake,
2003) explained in Table 9-2.
Letter
Meaning
Description
Independent
Negotiable
User stories, up until they are part of an iteration, can always be changed and
rewritten.
Valuable
A user story must deliver value to the end user.
Estimable
Scalable
(small sized)
Testable
The user story or its related description must provide the necessary
information
173
By following the INVEST mnemonic when writing stories or use cases, the
requirements, code, and tests are decoupled, meaning that a change in one
place will not cause breakage that ripples to other parts of the system or
requirements.
Validating Requirements
After the BA produces a detailed use case, he or she has an artifact
describing the behavior and goal of the use case, the data it needs, and the
data it produces. The BA does not yet know if the detailed use case is
correct; customer verification is superficial, and hidden pitfalls may exist in
the use case’s ramifications.
From experience with validating use cases, I have found that, on average,
one-third of each use case will change as a result of validation, so it is worth
the effort to validate the detailed use case. Without validation, that one-third
use case will still change, but at the later stages of coding and testing,
requiring more effort by the team.
Figure 9-1 illustrates a use case from the perspective of the user and the
system. From the user’s (or actor’s) point of view, each business workflow
is comprised of one or more use cases. Each use case defines a transaction
between actor and system. The actor passes data or control to the system,
which processes the input, and produces output back to the same or different
actor. The actor is not aware of the internals of the system, only the data that
flows in and out.
From the system perspective, each use case triggers an execution path along a
series of objects (small circles) as one object calls another. Each part of the
path is a call to another object’s method (or function) and defines an object
message from one object to another. The Additional Tools section shows the
XUML
Transactions
User
Use case
Work
Use case
{
Flow
Use case
Object Message
USER PERSPECTIVE
SYSTEM PERSPECTIVE
174
Use case validation uses three artifacts: the detailed use case (procedural
text description), a UML class diagram, and an XUML sequence diagram that
ties the first two artifacts together. When all three artifacts are consistent,
then the result is a validated object model, and the use case is correct. See
Additional Tools for a brief tutorial on validating use cases.
• Use Case: The use case indicates the data input and output, and the detailed
box:” the actor sees what happens, but doesn’t know what goes on inside.
(Design is
• UML Class Diagram: A class diagram shows a static logical view of the
supporting
classes3 of the problem domain, the same domain used by the Problem
Domain Component (PDC) described in Chapter 5. The class diagram shows
what classes contain and control which data, and the data relationships
between the classes
through a standard protocol: the methods of each class method. The other
components of the MVP architecture are design-oriented and are not used
during
requirements analysis.
• XUML Sequence Diagram: The XUML sequence diagram shows the
functional flow
of the use case through its supporting scope-of-control objects. The XUML
sequence
diagram shows the transactional flow of the use case as a sequence of object
messages with data. The methods are called in the order needed to execute
the use
case, receiving needed data, and returning data or status flags. At the analysis
level,
All three artifacts together comprise an object model for the use case. Object
models can be combined to make a cumulative object model for all the use
cases, and object models can be expanded to derive designs for all
components of the product.
When the detailed use case, class diagram, and sequence diagram all agree,
then the detailed use case is correct. Requirements correctness means that all
data and functions are defined, as used in the use case, and there are no logic
errors or data omissions.
175
Validation of a use case is not a lengthy process. It takes only a couple hours,
and is certainly worth the time. As an anonymous wit quipped, “Weeks of
programming can save you hours of planning.”
Formal object model validation does not guarantee use case completeness,
because there may be an entire business flow missing. High-level workflows
are shown on the project abstract’s context diagram, so the BA has a major
gap if these are missing. It is more likely that the missing workflows are out
of scope. It is up to the business analyst to ensure that the scope boundaries
are well-defined and all requirements are collected.
In summary, to validate the use case, the BA uses the detailed use case to
draw a UML class diagram, showing the objects that enable the use case, and
the methods and data used. The detailed use case is exercised, or simulated,
on paper with an XUML sequence diagram, which shows the function calls
and data passed to each object within the Problem Domain Component of the
system. The use case’s execution path enables the use case to produce the
user-system dialog of the detailed use case. When all three artifacts match,
the use case is considered correct .
The object model has served its purpose, and it is not necessary that the
object model be kept in sync with the code—unless the customer requires it.
In that case, there are tools that will draw object models from the code.
Warning some teams prefer to code, unit test, and refactor instead of
spending time on validation, accepting the extra work of refactoring because
they think the upfront effort is wasted when the requirements change. some
agile developers perform some kind of requirements analysis, but they rarely
do it as thoroughly or as well as professional business analysts who are
trained for it. developers focus on writing code, and requirements analysis is
given short shrift. defects tend to propagate from the requirements, and like a
self-fulfilling prophecy, the developers are justified in thinking that
validation is not worth the effort—until developers have no capacity for
adding new features in an iteration, this becomes apparent when there is
nothing new to demo!
4The International Institute for Business Analysis (IIBA), the standards body
for Certified Business Analyst Professionals (CBAPs).
176
Secondly, skipping this step of analyzing the stated requirements is why there
is so much rework to do later. It explains why the users are dissatisfied with
typical results; or why defects show up in the production version, defects that
affect the organization’s reputation, especially if the users are public or
corporate buyers of a commercial application.
Thirdly, constant code changes for any reason increase the entropy of the
system code, and add to the refactoring load. (Refactoring was invented to
reverse the entropy effects of frequent code changes, and thereby reduce
technical debt). If TDD was used, then changing the corresponding unit tests
add to the refactoring load.
Going Further
that supported the PDC. (Coad & Yourdon, 1990; Coad & Yourdon, 1991)
These classes can be further designed and validated by augmenting the use
case with design detail: a design case. The object model can be expanded by
adding implementation and design-centric classes in a straightforward way.
The MVP
architecture of Chapter 5 is a generalization of the object model expansion to
an architecture using these expansions principles.
177
Implementation Analysis
Validation can also be done on the code to ensure that the architecture and
design follows good coding practices, as defined by theory and the team
coding standards. Some tools allow such reverse engineering practices.
This section describes the work of the Business Analyst (BA) within the
iteration process flow from a detailed perspective of the analyst. The
iteration starts with the business analyst’s role in the initial iteration planning
meeting. The box numbers in each heading refer to the boxes in Figures 8-1
and 8-2 in Chapter 8.
Assuming the BA refined the work flows into use cases in Iteration 0 (as
described in Chapter 7), the BA has a partial use case catalog to start the
first iteration. The BA presents each detailed use case to the team, in priority
order, and its constituent user stories for the team to estimate for size.
Although the team should have read through the use case catalog before the
meeting, questions always arise, and the BA has best knowledge at this point
of how each use case should behave.
178
If no cards apply, the BA further refines the next use case in the product
backlog for the next iteration.
Each use case in the use case catalog needs to be expanded into a detailed
use case. Hopefully, this was finished before the iteration started, but
sometimes not.
The detailed use case describes how the business value is achieved using a
dialog between the actor5
and the software system (product) being built. The business goal of the use
case is stated, a description of the actor-system dialog, all input and output
data needed, and pre- and post-conditions (when it applies). The SME tells
what the business needs to do, and the BA elicits the data and business logic,
checks for omissions, discrepancies, and needed clarifications, and puts the
detailed use case into proper
non-ambiguous wording.
If there are no User Experience (UX) artifacts to help design with the team,
and no use cases to validate, then the BA details the next highest priority use
case from the product backlog to keep ahead of the team for the next
iteration, as discussed in Chapter 7. If the BA does not extract the user
stories from the use case now, then testers and developers will need to do it
later to write test scripts and code, respectively.
The next step is optional, as indicated by the dotted line around Box 3 in
Figure 8-1. Use case validation of this kind should be used on complex
applications, and is probably not necessary for simpler products, like
displaying a straightforward series of web pages. If the team has decided to
validate use cases to remove defects at the requirements level, and to give
the testers and developers a leg up on the Build, the BA performs the object
model validation discussed in the sections earlier in this chapter.
The BA starts with the detailed use case and builds a UML class diagram for
all those classes that probably support the use case. Earlier use cases have
already provided some classes as starter material. The BA defines (or
reuses) each class in the Problem Domain which object methods are needed,
what data is contained in, or controlled by, which PDC class, and the
relationships between the classes.
A UX artifact may define the screen layout, GUI widgets, report layout, or
formats. A UX artifact is a communications tool to allow the parties involved
to gain a visual understanding of the product’s behavior of the use case. UX
artifacts describe how the product will appear to and work with the user, and
fall into the realm of design, and hence into the realm of the developer.
The BA works with the designer to define how it would look and behave on
the computer screen, either in an application or in the browser. These two
tasks, detailing the use case and defining the User Experience (UX) artifact,
need to be done almost at the same time. The BA and SME can build a
proposed UX artifact in Iteration 0, or wait until the developer gets involved
during the iteration that the use case is being implemented.
179
Chapter 9 ■ requirements thread
However, there is arguably one exception to that rule. I have found it useful
to the analyst, developer, and the user if the UX is referenced in the use case.
It is helpful if the use case says something like, “Actor selects the book by
clicking the drop-down selection list” instead of “Actor selects the book.”
The final use case will also contain design notes useful for implementing the
use case. This design-augmented use case is dubbed a design case for
convenience.
Be aware that the more design that is in the use case, the more maintenance it
requires as
implementation details change. As the use case changes, the tester must do
more work to change the associated test cases, and there is more confusion
with the team about how the use case should actually be described. The BA
must walk the tightrope between too much design (increased maintenance
costs) and development speed; the design case is closer to the design and
implementation than a standard
Warning some business smes provide what they think are “final” screen
shots, with instructions to implement it “as is,” thinking that there is nothing
more to be said. The screen shot is not sufficient as a requirement. it
contains no business rules, no field length restrictions, no default data, no
behavior or navigational information, and cannot be implemented as is.
the Ba (or developer) will continually need to return to the business sme for
requirements questions, such as
From the sme’s point of view, he or she has already given the team all their
requirements, and will begin to develop the attitude that the agile team isn’t
very good at their job. this “dump it over the development wall” is a mindset
of traditional approaches, and only slows the development process.
the Ba has the added burden of trying to convince the sme to spend more time
on the project. it is important to set the business sme’s expectations on their
requirements role before actual product development begins. the pm should
resolve the duration and frequency of sme engagements at the business
kickoff meeting, and what each member’s role needs to be on the project.
The BA adds each approved use case and UX artifact to the Requirements
Traceability Matrix (RTM). The RTM shows the stakeholder who wanted the
feature, the use case associated with that feature, and now the UX artifact(s)
associated with the use case. Use cases will map directly to user stories, test
cases, and code, but features do not usually map cleanly to use cases. More
detail on the RTM is given in Chapter 7 . The Additional Tools section gives
an example of an RTM for the ATM Project.
180
After the approved use case is recorded in the RTM, the use case is ready for
development and testing. The use case cards are on the agile board, the
developers begin writing code and unit tests, the testers begin identifying
GUI and integration tests. The BA can return to the next use case in the
iteration backlog; or if those use cases are detailed and approved, the BA
can return to the product backlog to expand the features catalog further to add
more use cases into the backlog for the next iteration.
The BA gets involved with the use case again when attending the Defects and
Change meeting to
discuss the results of testing the use case code. The tester and developer cull
out the obvious code defects from the list of failed tests. If they both have the
same interpretation of the requirement, code module, and test case, the
developers quickly acknowledge the defect to be repaired. However, there
are always those failed tests that the developers interpret differently, and do
not think result from design or coding defects.
The BA, working from the business perspective, attends the meeting to
clarify the requirement and kind of defect involved. If the failed test
represents a coding or design defect, the BA should be able to point to the
exact place in the requirement that went wrong. If the requirement is
ambiguous or incomplete, the BA needs to repair the requirement. If the
testers have the wrong interpretation of the requirement, or an invalid test,
the testers need to repair their test. Sometimes tests are simply not
appropriate to the use case.
After the meeting, the team adds any tasks that need to be done as a result to
the iteration backlog. The RTM is updated now if it was not updated earlier.
See also the “Implicit Change Management Flow” section in Chapter 8.
Before the Build gets packaged for user demo and staged, the APM polls the
team to ensure that each member agrees that the Build is ready to go. Each
team member is responsible for the Build’s success, including the BA.
Any tasks needed to prepare the final Build must be completed as a high-
priority card on the task board, but incomplete Builds at this point should be
the exception rather than the rule.
181
The user demo meeting is important for the BA. He or she records the
changes suggested during the
demo, and may present the demo to the stakeholders and users. Changes and
discovered defects will be part of the meeting minutes, along with a
subsequent action plan. If a stakeholder or upper manager requests a change,
it should be treated as a high priority item until the impact analysis is
complete and the business SME sets a clearer priority (or does not accept the
impact and change).
Any information that comes from the business regarding the release goes
through the BA or the APM. The BA usually has little contribution to this
design-oriented task; but sometimes, he or she has key information, such as
what platforms or configurations are needed for the Build, or information
about the production environment into which the Build is being released. The
BA has the product knowledge to train the support and operational staff
(maintenance programmers, helpdesk, field supervisors, etc.) to bring them
up to speed on the new product if no one else in the organization has been
assigned to it.
PMI Parallels
All the PMI parallels mentioned in Chapter 8 are still true, but the following
highlights some specifics for the BA role.
Traditional projects usually build from features instead of use cases, but
features cannot be mapped easily as scope is refined to smaller granularity.
Consequently, traditional requirements are packaged into thick volumes of
intertwining specifications, or hundreds of short phrases in a spreadsheet or
an expensive requirements tool serving as the RTM. By contrast, agile BAs
write up detailed use cases or user stories and can easily track requirements
at that level in the RTM.
load, and reducing the amount of rework that comes with development. If the
BA uses requirements
validation, the requirements will have little or no defects, and will reduce
the exponential cost of change even more.
182
Conclusion
This chapter focused on the need, activities, and skill sets needed for a
Business Analyst in both Region 1
and Region 2. The BA elicits and analyzes the product requirements, and
helps the APM manage stakeholder expectations, one of the criteria for
success. The BA needs to stay at least one iteration ahead at detailing the use
cases from the product backlog to make them ready for the developers and
testers during the next iteration. The BA also helps with the UX design and
ensures that all requirements are met, resolving potential defects in the Build.
The CORA table (Table 9-3) summarizes the inputs, processes, and outputs
undertaken by the BA. It is indexed by the box number of the Process
Overview Diagram (Figures 8-1 and 8-2 in Chapter 8). The box numbers in
brackets represent contributions instead of ownership of the task. Compare it
with the CORA Matrix of Chapter 8.
183
BOX #
INPUT
PROCESS
OUTPUT
[1]
estimation)
available)
3
Detailed use case
validation)
diagram
[4]
(initial design)
[5]
(test identification)
[6]
sequence diagrams
RTM
identification)
[10]
validation)
[13]
RTM
management)
14
checklists, RTM
[16]
[17]
Approved Build
Production-quality Build
(release prep)
184
Additional Tools
ATM Project
Stakeholder FEATURE
UC # Use Case
UX artifact
Bank
Insert money at
Initialize
UX10. Admin
Manager
beginning of day
ATM
startup report
Customer
Authorize
N/A
SME
correct customer
account
Customer
Allow customer
3
Deposit
UX01.
SME
to deposit,
Money
Transaction
withdraw, or
Receipt
transfer money
Withdraw UX01.
Cash
Transaction
Receipt
Transfer
UX01.
Money
Transaction
Receipt
Customer
Get account
Check
UX02. Account
SME
balance
balance on Balance
account
Customer
End customers
Quit
N/A
SME
transactions
Bank
Reconcile
Reconcile
UX03.
Systems
transaction with
Reconcilement
Manager
cashbox balance
Report
remaining
Bank
N/A
Manager
ATM
shutdown
report
1.
The three stakeholders of the context diagram are shown, although in a real
RTM
Some use cases do not have UX artifacts, and some use the same. One of the
use
was later determined that the Reconcile use case would happen automatically
185
3.
The features are mapped from stakeholder to feature to use case, and later
test
cases will be added. The last column is the date that the test passed and the
use
case is considered complete. The RTM is not a test status sheet. Both GUI
tests
and integration tests, and their results, are tracked on a different test tracking
sheet. The final pass date is listed here as a summary of completed use cases
and
features.
4.
This RTM shows the classes resulting from XUML validation. Of course,
this
column is missing its validation and is not done. It also only applies to the
analysis (problem domain) class. Keeping the RTM maintained with design
I prefer to use a spreadsheet for this activity. It is sortable and more easily
manipulated than a word processer.
Overview
Use case validation is required by the IIBA for all professional business
analysts. This paper presents two simple extensions to the standard sequence
diagram notation of the Unified Modeling Language (UML) for the purpose of
use case validation and clarity. To support use case validation, data is added
to the standard UML sequence diagram flows. To support clarity, the return
data from an object’s method call is shown on the called method’s flow lines
to save space.
This paper describes the notational changes needed when comparing the
sequence diagrams with the
use case text and UML class diagrams to provide more powerful support for
use case validation. A simple example is given to illustrate how hidden
classes or misplaced data can be found through this kind of validation.
These options are available to the analyst, and it is the opinion of the author
that proper use case correctness cannot easily be accomplished otherwise.
XUML is also helpful for design and design validation using similar
principles.
Notational Extensions
The first and most obvious difference is that the square boxes showing the
lifetimes of objects are omitted from XUML. The background line behind the
box is used instead. The boxes are not useful except for cases of object
creation and destruction (memory allocation and deallocation, an
implementation action), which is irrelevant for analysis. This is especially
true for languages such as Java that have automatic garbage collection, in
which the lifeline is not known. It is sufficient to merely create the object
with the keyword new(...), which always returns the object to which it was
sent.7
7The ellipsis in the method call indicates that the parameters are not known,
or perhaps no parameters are passed.
186
Standard UML shows control flow (message passing) between two objects’
public methods as an arrow from the caller to the called object, with the
name of the method on it. If the object calls itself (private method), then the
line is a square loop back to itself, with the method on it.
Figure 9-2 shows object A calling the public method msg1() of object B, and
object B calling its own private method msg2(). Data needed by the methods
(input parameters) and data from the methods (return values) are not shown.
Figure 9-3 shows the XUML version of this transaction, augmented with
input parameters and return values. B.msg1() requires parameter x, and
returns value z; B.msg2() takes parameter y and returns value z.
The return value is shown under the method call in angle brackets instead of
showing only an
unadorned line from the called object, as with UML. Both UML and XUML
show that control flow is returned to the caller, but only XUML shows what
data is returned. If no data is returned, then the return is shown with empty
angle brackets (< >). More on how XUML uses data in the flows in the
validation section below.
msg1
msg2
Standard UML
msg1(x)
<z>
msg2(y)
<z>
Extended UML
187
It is easy to see in Figure 9-3 that B.msg1(x) returns z because it was output
from msg2(). However, object A does not need to know how object B
implements its methods. For an entire use case, messages are chained from
object to object by a sequence of method calls. During analysis, when only
the problem domain objects are used (or known), calls can be made to
implementation objects without caring about the implementation methods;
each object’s public interface is defined in terms of method signatures and
return values. The implementation methods can be defined later during
design, but the required problem domain interface (API) is defined during
analysis, and assists with the design tasks.
ULM sequence diagrams reflect time flow from left to right, and top to
bottom: messages to the left and above others are invoked sooner. Putting the
return value directly under the method call bothers some people because it is
perceived as violating that flow rule. However, if one looks at the method
call as a call to an object with encapsulated method calls, such as
implementation methods, then the rule is upheld.
For example, Figure 9-2 shows B.msg1() being called, and a second line
showing it returning later.
Single-Stroke Rule
Usually understanding the flow between called and caller objects is clear
enough from context, but in the rare case that it isn’t, a simple rule can be
used to show what is called (or returned) when. While traversing the method
calls from top left to right, whenever an arrowhead is encountered vertically
on the object lifeline, the control flow comes back; whenever a tail is
encountered, the control follows that arrow. Of course, if there are no more
method calls on the object lifeline, the control automatically returns. The
ATM
sequence diagram example in Figure 9-6- includes numbers to show how the
control flows.
Internal Methods
Figure 9B-4 shows the private method msg2(y) returning w, but R.msg3(z)
must be called to get w.
Figure 9B-5 shows the corresponding class diagram for Figure 9B-4. The
data z is assumed here to be an attribute of Q, but it may also have been
passed to Q previously.
188
msg1(y)
<w>
msg2(y)
<w>
msg3(z)
<w>
+ msg1()
- msg2()
+ msg3()
Optional Methods
Granularity
How much detail needs to be shown in the sequence diagram? All data in the
use case must be shown, unless that data flow is captured in another
sequence diagram elsewhere. In that case, the subcase data flow can simply
be referenced. The analyst must decide how much detail, but the
encapsulated method approach means that the analyst may choose which
implementation methods not to show. File I/O and internal GUI widget flows
are frequently omitted from sequence diagrams unless they are particularly
relevant.
Class Diagrams
189
parameters are not shown, and setters and getters are not shown.
The following is an easy way to compare data and methods of the class
diagram:
• Select a class for consideration, and its object in the sequence diagram.
• For each flow line tail on the object’s lifeline: Any data that is passed or
returned
in. If it is missing and is definitely needed, either add it, find the missing
calculation
method, or find what object owns that data from which it was passed.
• For each flow line arrowhead on the object’s lifeline: Any method that is
called must
looped lines indicate private methods. Of course, CRUD services are not
shown in
Use case correctness is achieved when the class diagram’s methods and
attributes match the sequence diagram’s methods and data for each path of
the use case.
A note of warning: Some people will develop the class model by building a
sequence diagram reflecting the use case. This seems to work at first, but
there is no validation between the class model and the functional use case
because one is merely a reflection of the other. This class model will tend to
contain a high number of function bags instead of proper classes, and more
rework will be required to remove use case errors later.
“Withdraw money from an ATM” example illustrates the ideas above plus a
few others. (The numbers shown in Figure 9-7 are not part of XUML, but are
entirely for clarification to show in what sequence the methods and their
values are returned.)
190
Chapter 9 ■ requirements thread
Figure 9-6. First Pass: Class diagram supporting ATM Withdraw use case
1.
There is only one cashbox in an ATM, so a cashbox abstraction class will be
a
yet, but it should have methods to dispense money and validate withdrawal
transactions.
2.
Each customer may only take from their own account, so the customer’s user
ID
(UID) and account balance must be maintained within this account. It must
have
methods to validate the request and deduct the money (withdraw). NOTE: In
this
191
3.
The ATM must coordinate the transaction and interact with the user. It is
responsible for collecting the correct command and withdraw amount, and
ensuring valid withdraw requests that result in providing the customer money
and a receipt from the proper account. It will “own” the withdraw amount,
the
UID to get the right account, and the data for the receipt. Note that, as with
UML,
small notes can be placed outside the classes to represent passive data as is
4.
The ATM Interface uses the CashBox and the Account objects to fulfill its
Figure 9-7 shows the sequence diagram for this use case. This example is for
illustrative purposes only; there is no need for the reader to evaluate whether
the design is a good one or not.
Step 1. The user enters the WITHDRAW command and the amount of money
requested into the ATM Interface. No parentheses are shown because the
Customer (person) cannot make method calls into objects. (There is probably
a
ATM
User
CashBox
Interface
Account
1 WITHDRAW,
amount
2 Cashbox.
isValid(amount)
7 <T/F>
3 isRightDenom(amount)
4 <T/F>
purposes only.
5 haveEnough(amount)
Customer
6 <T/F>
8 new(UID)
9 <Account>
10 withdraw(amount)
13 <balance/ERR>
11 haveEnough(amount)
12 <T/F>
14 Cashbox.
dispense(amount)
OK
16 < >
15 cash
18 receipt
17 printReceipt()
19 < >
192
Steps 2-6. The CashBox is a singleton, so the ATM makes a static method
call (at
least in Java) to check that the withdraw request is valid. The CashBox calls
its
a new instance of the user’s Account, passing the user ID (UID) with the
Steps 10-13. Now that the ATM Interface has access to the right account, it
asks
The Account first checks for sufficient funds with its private method
Step 14. Up until now, error conditions were ignored, and the flow walked
the
use case’s “happy path.” The optional circle is shown on the next method call
to
emphasize that money will not be dispensed unless all verifications are true.
On
ATM Interface does not have a reference to CashBox (that we know of); it
never
Steps 15-16. CashBox dispenses cash to the customer, as shown by the arrow
back to the customer. The single-stroke rule says that the flow continues from
the tail of the arrow before returning back along the CashBox.dispense()
method call.
Steps 17-19. After the CashBox method returns, the ATM Interface calls its
private
printReceipt() method. All data needed for the receipt is in the ATM
Interface
object, or was passed in, as in the case for the account balance. The receipt
is
The sequence diagram shows that the UID was needed to instantiate the
correct account. At first, many novices reasonably place the UID in the
account, but the ATM Interface wouldn’t know which account to create; it
cannot get to a piece of data in an uninstantiated object. How does the ATM
Interface get the UID?
In all likelihood, the UID is best captured from a Security class that keeps the
UID and account mappings.
During the user’s session login use case, the security agent authenticates the
user login data and returns the proper UID. Since analysis rules dictate that
only one class can own the same piece of data, it makes more sense for the
Security class to own the UID instead of the ATM Interface, which is for
coordinating.
To create an instance of the user account, the ATM Interface would have
saved the UID during the login use case and uses it now. The case of the
misplaced UID shows how these two approaches force the analyst to rethink
his or her analysis to get a consistent solution between the use case, sequence
diagram, and class diagram.
193
Notice that the CashBox’s balance and the Account’s balance were also
missing in Figure 9-6, and are now shown; otherwise those class’s methods
would have nothing to calculate against.
Figure 9-8. Second Pass: Class diagram supporting ATM Withdraw use
case
Design Extensions
194
... , where the constituent functions fn are the individual method calls to the
objects on the use case path: the output of one is the input to the next on the
path.
The use case T, which means the first method call f1, takes its inputs from
outside the system, and delivers its outputs to outside the system.8 Unless a
complete execution of the input-process-output path (usually a circuit) is
made, the use case is not complete; anything less is a partial use case.
evidenced by the conflicts between the two paradigms in its earlier years. A
programmer can write
multiple styles is one of its major strengths. The styles presented include
traditional C-style, concrete classes, abstract classes, traditional class
hierarchies, abstract classes and class
Conclusion
XUML is another option for the analyst or designer, another tool to put into
their belts. Standard UML is a fine tool, and all other rules of UML apply to
what was said here, but validating use cases for correctness requires XUML
at the analysis level because of the data flow checking. Over half of a
software product’s defects are in the requirements, so the quality of the
product can be more than doubly improved simply by using this approach to
build a consistent and unified object model.
8For each use case F(x,y...)-> z , there may be zero or more input parameters
x,y..., and output data z can be void; in all cases, control is returned to an
outside actor.
9Object methods are a special kind of function called relation functions, and
dictate how they should interact with the objects’ state and its other methods.
For more on this topic, see Conceptual Mathematics: A First Introduction
to Categories”, F. William Lawvere and Stephen Schanuel, Cambridge
University Press, 1997.
195
Chapter 10
Development Thread
Chapter 8 gave an overview of the iteration process, tasks, and artifacts for
the team as a whole. This chapter contains a detailed look at the work of a
developer within an agile iteration. It shows how the developer uses inputs
from other team members, and produces outputs to be used by them. This
chapter can be considered a heuristic for how agile developers do their job.
It should help other team members understand the developers on their team,
and possibly enable non-trained developers to perform the design,
construction, and unit testing functions better.
• Contribute to estimating the use cases or user stories for the iteration
planning
meeting.
• Understand the use case clearly enough to implement and estimate the size
of the
work, including reviewing the use case validation model (if presented).
• Develop the UX artifact design, working with the BA, and possibly the
business SME,
to define web pages, screen layouts, and the like; and provide UX
improvements
• Review the GUI and integration tests as sufficient to test all use case paths.
• Write the final code for each use story and unit test, preferably with Test-
Driven
Development (TDD), the standard agile practice for minimizing coding effort
and
defects.
• Run the automated regression tests before delivering the Build to the shared
codebase for the testers. Repair any defects found before submitting the code.
197
(Test Build).
• Contribute to the Defect and Change meetings to resolve failed tests: cull
out
obvious defects, determine root cause of others, and perform impact analysis
for any
• Approve the Build as completely ready for the user demo, or make it so.
• Contribute to the iteration closing reports and update the RTM with use
cases
implemented.
Some agile methodologies do not have a pm or Ba role, and see that role as
unnecessary. Scrum, for example, has a product owner who does the tasks of
the Ba and Business Sme, as described in this book, except that requirements
only originate from the product owner. this is fine if only one stakeholder
provides the requirements, but usually that is not the case.
Before we go into the specific developer tasks, there are aspects of agile life
that are characteristic of agile teams, particularly for the developers. It is
important to mention the various cultural and procedural idioms of an agile
team that enables agile to make a difference.
1.
2.
Sustainability
4.
5.
6.
Osmotic Communication
7.
8.
9.
Refactoring
10.
Others are illustrated in the section “A Typical Day in the Life of an Agile
Developer” at the end of this chapter.
198
Wasted time is avoided. Standing teams already are high performing teams;
projects are sent to them, like an assembly line takes car components and
creates cars.
Each resource manager may be responsible for all people of a particular role
within the corporation: project managers, developers, testers, etc. The
project leader (PM) must usually negotiate with the resource manager to
acquire the team members. If outsourcing is required, funding negotiations
are added to the burden.
Assuming that all negotiations go well, there is still a policy of how team
members are allocated. For example, there is a strong distinction between a
programmer who develops a new product, a developer; and a programmer
who maintains existing code in the production environment, a maintenance
programmer.
199
Chapter 10 ■ Development threaD
Sustainability
If the APM made the project schedule using adaptive planning (estimating
roughly on large targets far in the future and estimating in detail on small,
closer targets), and the project is broken into iterations, then the developer
need only be concerned with committing to what he or she will complete by
the end of each iteration.
eventually, the project completed, and it went to market. the product was on
the market for about one month when management redirected its mission and
the product was cancelled. about 20 percent of the developers on the project
quit the company. (later, some returned with much increased salaries.) Death
march projects kill morale and lowers productivity, and in this case, it
damaged the company. Frequent releases and sustainability would have
prevented this problem.
Since the earliest days of Extreme Programming, agile teams have re-
arranged the furniture to allow a large open area with shared table space for
team members to work together. Developers work in the open without
privacy and talk to each other in all the directions they can turn their head; no
blocking walls, no scheduled appointments, no waiting for needed
information. The open agile room enables osmotic communications and
pairing, two concepts that are discussed in their own sections below.
200
People will communicate more frequently if they see each other and are in
earshot of each other. They can spontaneously start a conversation and
resolve a problem much sooner than if they need to get up and walk down the
hall to a person’s cubicle; or worse, if they must schedule an appointment.
The agile room concept grew from the earlier consultant’s practice of a “war
room,” in which a consulting team was cloistered in a single large room for
them to do their work, isolated from employee business. Consultants had
nothing to do but complete the product. Progress charts, big visible charts,
and diagrams adorned the walls. This arrangement is similar to how agile
rooms work today.
The agile room contains all that is needed to build and test the code, with
links to the development and test environments. Today, many of the
repositories, like the shared codebase, reside in the cloud. A large TV
Rearranging the furniture was controversial in the early days of agile, and
one of the practices that made XP extreme. Kent Beck reports how his team
clandestinely moved the furniture at night. I enjoy this example of Beck’s
“managerial courage.”
All this screwing around with the furniture can get you in trouble. The
facilities management
people can get downright angry to find that someone has been moving
desks around
weeks or months to fulfill). I say, “Too bad.” I have software to write, and
if getting rid of a partition helps me write that software better, I’m going
to do it. If the organization can’t stand that much initiative, then I don’t
want to work there, anyway.” (Beck, 2000, p80)
Cubicles arranged around the perimeter of the room provide privacy for
design get-togethers, when the noise gets too distracting, or for personal
communications; but the cubicles are still close to the team. In the worse
case, the team member may move himself or herself to a private area for
deep-think or other activity that requires no distractions. Agilists call this
area the cone of silence 1 or the cave. Real privacy issues, such as
performance reviews, are best done in small conference rooms outside the
agile room.
Normally, the agile room is not used for meetings between the APM and
upper management, or for
the BA and the business SME. Upper management and the business
stakeholders are always invited to see the team in action in the agile room,
but it is not a common occurrence (it is distracting to the team). By extension,
I have seen top executives, not involved with the project, visit the team to see
what this weird new development technique called “agile” is all about. The
big visible charts on the walls, or the Kanban board on the TV, or the strange
room configuration of the agile room, attracts them.
1The cone of silence can refer to a physical location, or a mental state that
one is in when they are in deep-think mode.
201
Partners are not assigned to each other. The task is the focus, and two people
decide to work that task together, usually because each has something to
bring to the work. (I often work with a GUI expert, which I am not, and the
GUI expert likes to see my Java coding idioms.) One developer may have
several programming partners during the day.
There are also times when team members work on their own. This practice
has become more
separately or together as they need, and that flexibility is one of the values of
agile.
Since pairing has become common, studies have been conducted to find if it
is economically beneficial.
After all, as early-day managers pointed out, “We are spending two salaries
to get one piece of code.” Rico, Sayani, and Sone (2009) report the results of
30 studies on pair programming.
and 69% quality improvements. Eight of these studies had the detailed
measurement data
dollar invested, $23 was returned. This comes from a combination of high
productivity
and higher quality, which reduces the costs of software maintenance. Pair
programming is
far more efficient than traditional methods. (Rico, Sayani, Sone; p92)
Osmotic Communication
a question, others in the room can either tune in or tune out, contributing
to the discussion
“We had four people doing pair programming. The boss walked in and
asked my
partner a question. I started answering it, but gave the wrong name of a
module. Nancy,
programming with Neil, corrected me, without Neil ever noticing that she
had spoken or
202
delivery facilitate such rapid and rich feedback that the project can
operate with very little other structure. 2
This effect is almost the opposite of the cocktail party effect of selective
listening: A person has the ability to tune into one conversation and tune out
others of little interest even when sound permeates a room.
The opposite effect is called a draft: unwanted information that flows across
a team, usually unwanted because it does not affect the project or tasks at
hand. In this case, the individuals holding off-topic conversations are better
holding those discussions away from the team. Mutual respect and courtesy
among team members make that happen. The net result is that the team stays
centered on the project in the agile room, and only the work is discussed.
Distractions are at a minimum.
Agile is known for having 3x5 cards, big visible charts (BVCs), and burn-up
charts on the walls, on project web pages, and even in the hallways that
allow the team and passers-by to provide self-evident data about the project.
These devices are collectively known as information radiators because the
observer gains information about the project quickly and easily, sometimes
merely by walking by.
People want to be involved in a successful project, and displaying success
helps people feel good about themselves. Using information radiators is one
way to do that. It is a general rule of project management that the project must
stay visible to the stakeholders ( transparency), especially the sponsor.
Projects that lose visibility often lose priority among the many other things
stakeholders are doing, and eventually could lose support. As the wit says,
“Out of sight, out of mind, out of budget.”
Agile has replaced the weekly one-hour status meetings with a 15-minute
daily standup meeting. Daily standup meetings are not technically “status”
meetings, but daily planning meetings. Each team member answers three
questions each day:
Each team member learns what other team members are doing to better
interact on their respective
tasks. The meeting lasts about two minutes per person; no long rambling
progress report of “what happened when.” Daily meetings should be held as
one of the earliest events of the day so that the team has the psychological
context of getting the work done before they go home for the day.
Originally, the daily meetings were held standing up because each meeting
was not supposed to be
long enough for people to sit down, relax, and get off-target. The point is that
the meetings should be very short, and standing up discourages a team from
engaging in long discussions because they are relaxing, and treating the
meeting as break-time. While standing, the “feeling” is to get back to work. It
is not the standing up part that encourages brisk planning, but the daily
pressure to move the product forward. Some agile 2Repeated on his blog at
http://alistair.cockburn.us/Crystal+Clear+book, August 20, 2014.
203
teams do not literally stand during their daily meetings but they do use the
short three-question format. The daily planning and pressure is more
important than the standing.3 The team stays focused and more gets done
during the iteration.
Why bother with a special meeting every day? Why not gather all the
information into one hour
summaries at the end the week? There are several psychological principles
that come into play related to task effort, timing, and progress. The daily
meeting takes advantages of those principles’ benefits, and minimizes their
downsides.
• 90% Syndrome. Developers report that they are 90% finished a task for
50% of the
being 90% done in a daily meeting because only completed tasks are
reported.
the Deadline effect: The amount of energy and effort devoted to an activity
is strongly
accelerated as one approaches the deadline for completing that activity.
(Boehm,
p593). These two principles explain why many students cram for tests: they
wait until
the last minute then fill the remaining time with increased energy and effort—
and
reduce the resources needed, or when applied with the same number of
resources,
to shorten the time to complete the work (Boehm, 1981, pp45-46). By setting
a daily
deadline for each task in the daily meeting, the work progresses faster.
• Psychological Lensing. People estimate the effort and size of a task better
for tasks
that are nearer to the present time, and better for smaller tasks than larger
tasks. The
bigger the task and farther into the future the task is planned, the less accurate
will
be the estimated duration and size of that task. This principle accounts for the
errors
lensing affect. By shortening the estimate cycle for small daily tasks,
estimates are
more accurate. The daily meeting collects daily estimates of tasks that are
imminent
to finish a task each day, and the somewhat negative peer pressure of
reporting an
undone task helps enforce the completion of that task. The pressure of the
deadline,
4Music students are one of the groups that are exception to this rule because
they must practice continually; they cannot wait until the last week to perform
a one-year recital, for example.
204
tasks, and enable precise tracking of tasks completed during the iteration, and
focuses on delivering one more piece of working software of value each day.
Refactoring
alter the external behavior of the code yet improves its internal structure.
It is a disciplined way to clean up code that minimizes the chances of
introducing bugs. (preface, p xvi)
Refactoring is also used whenever the developer sees a place where it can
be improved. If a developer is adding a method to an object, and sees where
an improvement can be made, then the developer makes that improvement.
Coding is a constant battle between the forces of entropy and the forces of
clean coding. It is evident why regression testing is so important after each
chunk of code is refactored. Fowler’s book contains dozens of techniques for
refactoring code for different situations and to improve the specific
mechanics of coding. Smart Interactive Development Environments (IDEs)
for developers have refactoring patterns built-in to make the entire process
simpler and more likely for the developer to use it.
Unit tests are critical to minimizing rework and writing clean code. Ottinger
and Langr (2012) give a common definition for an agile unit test:
205
Chapter 10 ■ Development threaD
The unit being tested is usually one of the methods (functions) of an object.
Michael Feathers (2005, p14) is often quoted as defining what a unit test is
not.
Unit tests run fast. If they don’t run fast, they aren’t unit tests. Other kinds
of tests often masquerade as unit tests. A test is not a unit test if:
• It talks to a database.
to run it.
databases, fake network connects, and other stub entities to make the test pass
faster. This is exactly what must be done to support an integration test.
Some say a unit test tests a single thing: there should only be one true/false
assertion in the unit test. Others are comfortable packaging several short tests
within the same test method, as long as each internal test is independent. I
like to group my tests together if they have the same setup.
Feathers allows that the tests that violate his un-definition of a unit test
(above quote) should also be run, but should be separated from calling them
true unit tests. If they exercise less than a use case, then they are not
integration tests either. We can take guidance from Mike Hill in defining true
unit tests as microtests, and these other less-than-integration tests as, to coin
a word, macrotests.
I feel comfortable having this other lower-level setup and teardown block of
code within a test method for the microtest, but still requiring each microtest
to be independent. That means a single test method may contain a series of
independent microtests, each having their own assert statements. Some
agilists would disagree, but I find it a convenient way of balancing large tests
with many, many microtests repeating many, many identical setup and
teardown blocks of code. Macrotests are more canonical and have their
individual setups and teardowns within the test case. There are no semantic
differences between microtests and macrotests, only a way of packaging sets
of microtests in the same test method for convenience.
Unit tests are not pre-defined. They are built just before the developer writes
the code. Unit tests are very design-centric, so until detailed design is done,
unit tests cannot be written. TDD practice says that tests drive the code, so
the test exhibits the behavior when the code enables the test to pass.
206
after discussions with management, they removed the mandate, but the team
was astounded that they would ask for it in the first place. We argued that
even in their traditional waterfall culture, we could give them integration
tests after we had requirements, but not unit tests until design and coding
were done. With an agile project, which they wanted us to do, we could give
them the unit tests and integration tests at the end of each iteration, with
possible updates afterwards.
By the first release date, we had produced tens of thousands of lines of code,
and thousands of tests.
management had an outside independent Qa group re-test the code (alpha test,
as expected) but none of our tests were examined. I found out that the number
of tests was used as a rivalry comparison between project managers in the
program. “Who wrote the most tests” seemed to be more important than who
had the lowest defect rate, or the most business value per unit of time. to add
awe to amazement, the projects were not comparable: each project of the
program was creating different sized products, with very different
functionality, and was written in a different programming language!
When writing unit tests, there are several guidelines to follow for clean code.
A.
B.
C.
D.
Comment the code and tests for those who must follow.
When writing unit tests, keep in mind that they should comply with the
F.I.R.S.T rules.6
• Fast: They must be fast so that the developer runs them frequently.
• Isolated: They must not rely on other tests to execute properly. They must
do their
own setup and teardown, and not rely on what order it and other tests are run.
• Repeatable: They not only should give the same results each time, but they
should
run the same regardless of platform or environment. The tests should isolate
6Bob Martin also discusses these rules in his book Clean Code (2009,
pp132-132).
207
• Timely: Write the test just before the code is written. When the code needs
to change,
write the test for the end-state, which should fail, then write the code to make
it pass,
just as before with initial code.
the technique, stated in 2003 that TDD encourages simple designs and
inspires confidence.
There are several aspects to coding and unit testing using TDD. The typical
construction procedure is as follows.7
1.
Select a single action, a method within a class, that supports the user story
under
construction.
2.
Write the unit test with no code implemented yet, thus the test will always
fail the
first time.
3.
Write the simplest possible code to make the unit test pass.
4.
Add another piece of the unit test to exercise another aspect of the code, and
repeat. When all unit test are done, the method is completely tested, and the
5.
Submit the code and tests to the shared codebase and select another method
to
test for the user story. Repeat steps 1 to 5 until the entire user story is coded
and
unit tested.
The minimum code is written to pass the test. Agile uses the phrase YAGNI
(You Aren’t Going to Need It) to emphasize that only what is needed to pass
the test should be written. Traditionally, developers have added features and
data fields “just in case”, and according to a Strandish Group study, 64% of
the features written are never or rarely used (Johnson, 2002; Duong, 2009).
Agile practices build only the Minimal Marketable Feature with which the
developer can get to pass the test.
Tests are automated with test frameworks or test runners collectively named
xUnit, such as JUnit for Java, CppUnit for C++, PyUnit for Python, and so on.
Each test class is organized to correlate with a single (object) class, also
stored in the shared codebase.
Running a test with xUnit tools produces a red bar for a failed test, and a
green bar for a passed test, on the test runner interface. These tools are so
common they have paved the way for another slogan: Red-Green-and-Clean.
7The procedure is typical for object-oriented languages because they are the
most common development paradigms in use today. Functional languages are
coming into vogue, including certain functional constructs being added to
Java, an object-oriented language. Regardless of object-oriented or
functional languages, TDD still seems to the testing paradigm of choice.
208
The agile unit tester runs through the unit testing cycle of Red, Green, and
Clean every few minutes. The green bar is so good to see after a series of red
bars that the developer soon builds an emotional relation with the green bar.
Sometimes a visitor to the agile room can see a developer shout, “Yes!” and
pump his fist; the team knows the developer got a green bar after a long
series of red bars.
One downside of TDD is that there are many tests, and the tests must be
maintained. IBM and Microsoft (Nagappan, Maximilien, Bhat, and Williams,
2008) showed that for their TDD projects versus their control projects, the
ratio of test code to source code was 0.51—about half the shared codebase
contained test cases, but with 60% - 90% fewer defects. This research also
showed that initial development time increased 15%
-35% while the teams were ramping up on TDD technique. One of the early
TDD reports said even with the overhead of writing test cases and
refactoring them as needed, that they were able to speed their projects up by
a factor of four!
The test cases must be maintained. If the tests are written initially, but not
updated as the code is changed, then the developer gets the worst of two
worlds: time spent on useless tests, and code that is not tested and may hide
defects.
Anecdote For one of my complex projects, I measured that after about one
year, almost 40% of the code base was comprised of test cases. Yes, it does
take extra time to write and maintain those test cases, but without them, the
product begins to fragment and situations get missed. I was concerned over
this time burden of writing and maintaining the tests, so I measured it. I found
that without the tests, it took several hours longer on average to implement
and debug a use case than with them.
When writing the unit tests, look for user paths that demonstrate the Normal
situations (the “happy path”), Error situations, Boundary situations, and other
Special cases that don’t fall into the previous categories.
One of the critical Error cases is the Null Parameter test: passing null values
into method parameters to see if the method handles the error gracefully, or
crashes with a stack trace. The NEBS method is important in both unit testing
and integration testing. The rule for whether you need a Null Parameter test
or not is indicated by the rule: “If the code compiles with a null parameter,
the null parameter test is required.”
but also to any public interface that another developer would need to know to
work with that class, interface, object, method, or public data.
209
Document all public interfaces, classes, method calls, and data for use by
other developers or technical readers. Not all agile developers think
comments are necessary. Some think that comments should not be written
within code. They claim that the code should “speak for itself,” and that the
comments are easy to get out of sync with the code itself, making the
comments useless, or worse, misleading.
If the methods are small (less than 15 lines of code or so), like they should
be, lack of comments works well enough. However, for longer methods that
cannot be broken down (or take more work than the developer put in),
complex methods, or methods that have a special circumstance or algorithm,
comments are necessary.
Most modern IDEs like Eclipse will pop up Javadoc comments by merely
hovering over the entity’s name (method, class, interface, or field). If there is
no Javadoc for the entity, no information is shown, and minutes are wasted
searching for that method elsewhere; nor does Eclipse pop up the code to let
it speak for itself.9
A second point about “letting the code speak for itself:” developers are not
always the best at making their code (or comments) readable by others.
Method names like displayObjects() and calculateValue() can be obscure.
With comments, the reader has two chances of learning if they need the
method or not, and how to make it work for them.
The APM or BA brings a list of prioritized detailed use cases from the
product backlog to be estimated. The team must decide how many use cases
can be completed by the end of the iteration. The developers have the
primary responsibility of sizing each use case because the developers are
responsible for implementing it. The testers contribute their estimates for
testing, and the BA will ensure that the use case or story is understood.
When the developers leave the room, they will have an iteration backlog of
prioritized use cases or user stories, and one specific card he or she will
work on today. The developer can begin thinking about how the use case will
be implemented, and be ready to design the UX artifacts. The developer may
ask herself “What database schema is needed to support the screens?” or
“What GUI widgets would work best for selection?”
Soon after the iteration planning meeting, the BA facilitates a team meeting to
develop the user perspective and UX artifacts for a detailed use case. A UX
artifact is a communications tool to allow the parties involved to gain a
visual understanding of the product’s behavior and appearance of the use
case. UX artifacts describe how the requirements will be presented to the
user, and fall into the design realm of the developer.
This UX artifact design meeting integrates requirements and design, and lasts
about 30 minutes.
9To be fair, Eclipse has a shortcut to take the developer to the declaration of
any method on which he or she hovers.
However, the method must be in a known class path package for that to work.
210
There are many open source and commercial tools to help build screen shot
artifacts, sometimes called wireframes. They can range from very low tech
(low-fidelity), such as a drawing on a whiteboard captured with a cell phone
camera, to a high-fidelity prototyping tool that makes the wireframe more
formal, and writes some skeletal code.
The decision of low- or high-fidelity probably rests mostly on how long the
wireframe will be used, and if it is going into the technical or user
documentation. Agile usually relies on low-fidelity tools because they are
quick to get the point across. Wireframes can be as simple as a snapshot from
a mobile phone, or the result of an elaborate mockup application, like
Balsalmiq.
At the end of the UX design meeting, the business SME, BA, and developer
agree that the UX artifact establishes a Definition of Done, although it may
change by consensus during implementation and testing.
At the end of the iteration, after the UX artifact is implemented, tested, and
approved during the user demo, further changes will require an informal
Change Request (CR).
Code and unit tests are informed by the GUI and integration tests. The
developer reviews the code and unit tests with the testers before writing the
code.
For more detail, see Refactoring and Test Drive Development Unit Tests
earlier in this chapter.
Automated regression tests consist of all integration and unit tests that passed
earlier for the Build. After each user story is completed, the developer runs
the automated regression tests to ensure that old code was not “broken” by
the new code (that is, it did not cause new defects). If something was broken,
the developer repairs that code, old or new. The regression test will also
cover all the other developers’ code and unit tests that are downloaded each
day.
If all the code has passed its unit tests, then it’s time to run the automated
regression suites. The regression suite contains all the unit tests and
integration tests from all the developers that passed in earlier versions of the
Build. If a regression defect appears from running a regression test, your
code broke it, or it may have been caused by another developer’s code being
too fragile. Isolate the error, find the root cause, and pair with the other
developer if necessary. Your code cannot be uploaded until there are no
defects in the Build.
After the code is written, and all unit tests and regression tests pass, you can
add the unit tests to the automated test suite for future regression testing.
Merge your new code into the existing Build. Submit new code to the shared
database frequently, at least once each day.
211
There is a maxim in agile that all code is community code, and no one
developer “owns” it. All code and tests must be committed into a shared
codebase at least once a day, where each developer’s work is merged into a
single Build. The frequent merge ensures that work is broken down into
small parts, and potential integration conflicts are removed or kept to a
minimum. Each day, all developers download a new copy of the updated
codebase and new regression tests from the last Build. Open source tools,
like Subversion (SVN) or Git, are available to manage this process well.
The Build is available to the testers to run their tests against it after all the
user stories for a use case are implemented, tested, and in the codebase. The
developer updates the use case as “code complete” in the RTM by inserting
the date all unit tests passed, to indicate to the test team that they can run their
integration tests against it. The use case is not marked “complete” because a
use case is not complete until all integration tests and regression tests pass
too.
When the developer goes to update the RTM for use case code-complete, he
or she may already see that the test case scripts have already been added to
the RTM because it usually takes less time to define the test cases than to
implement the use case. Also, the daily team meeting informs everyone which
use cases are available for testing, which ones are waiting on coding, and
which have been tested.
The developer will be involved with his code next after the testers test the
use case, find defects, and call a Defects and Change Meeting.
uploaded to the codebase, it is now available so that the tester can download
it to the test machine, at which time it becomes a Test Build. The testers can
take the Build and run their battery of tests against it while the developers
move onto the next use case and update the next version of the Development
Build.
The developers no longer have control over the Test Build; they continue
augmenting their
Development Build. The Test Build is officially in QA (for the agile team)
and code must not be changed in the test environment. A new Development
Build will overwrite the Test Build later if changes are needed, or new use
cases are ready for testing. A successful Test Build represents the latest
Build to show the users at the upcoming user demo, and possibly staged for
release.
When is the Development Build ready to become the Test Build? When the
developers have
(1) written all the code for the use case; (2) written all the unit tests for the
use case code; (3) the Development Build passed all the regression tests
100%; and (4) the “code complete” date is recorded in the RTM for the use
case.
10The version control tool Git allows each developer to have his or her own
repository without requiring a central repository, and yet still keeps them in
sync to establish a single Build.
212
Continual Improvement
Adding defective code to the code base from one developer “poisons the
well” for everyone. Other
developers must now clean the code before they can proceed to their own
tasks. Automated Continual Improvement (CI) tools, like Jenkins, allow other
tools to be run before allowing the uploaded code to merge. Full re-
compilation, regression testing, style checking, compliance tests, and others
can be run before the new code and tests are permitted to be merged into the
code base. Errors can be caught and returned to the contributor without
poisoning the well.
Since the developer had to sit in a particular chair to upload his code,
everyone in the room could see who did it. the peer pressure (read:
embarrassment) was humorously given and received, but was a powerful
force to minimize defective code and encourage developers to check their
code before uploading it to others.
The team may defer the repairs until a later iteration, but the number of
defects, and time to repair a defect, tend to snowplow by increasing
exponentially the longer they are left in the backlog. Agilists have a phrase,
technical debt, that they use to refer to the exponential cost of catching up,
particularly with outstanding defects deferred too long.
It has long been known that defects cluster together. In general, they follow
the Pareto rule: 80% of the defects are found in 20% of the code (Han, 2003;
Ghahrai, 2008). This means that a defect not repaired can hide many more
defects that will reveal themselves (with the proper tests) after the evident
defect is fixed.
This undoubtedly contributes to the snow plow effect. Therefore, what may
seem like a repair of a few hours may reveal new defect repairs that could
take days once found.
When the meeting is over, the team will have a list of defects (of any kind)
that must be repaired, and a list of CRs that must be evaluated for impact.
The team adds any resulting tasks to the iteration backlog. The RTM is
updated now if it was not updated earlier.
See also the “Implicit Change Management Flow” section of Chapter 8. For
an example of a Defects and Change meeting, see the “A Typical Day in an
Life of an Agile Developer” section below.
11Some teams work directly from the defects log, and do not add cards, but
that approach cuts down on visibility.
213
This step is the standard “Is it ready for release?” meeting. When all tests
pass for the use cases designated for the iteration, and no CRs or repairs are
needed for the current Test Build, then the Test Build can be approved as
complete and ready to demo. If the use cases are not yet complete, but the
iteration is ending, then the Build can still be approved, but with reduced
scope.
All team members take accountability for the Build being ready. Each
developer must be certain that there is no defective code in the Build, and all
code fulfills the iteration requirements completely. All of the regression tests
pass 100%. All defects in the defect log scheduled for this iteration are
repaired.
After the team approves the Build to go in front of the stakeholders at the user
demo, do not make any changes to it! Every Test Build that is approved is
staged for the user demo, and should not be merged with subsequent Builds
until that Build is approved by the stakeholders too. The team should
continue to update the Dev Build if necessary, but keep the Test Build staged.
I cannot recall the number of times that “just one little change” has caused the
demo to fail, freeze, or crash because a last-minute change was not properly
tested afterward. Although full regression testing may have succeeded, the
user demo focuses on the GUI, and there is no quick and easy regression for
that just before the user demo.
The iteration reports are built from the cards the developers and other team
members completed
throughout the iteration. There is no special work the developer needs to do.
See Chapter 12 for more on the iteration reports.
The developer is responsible for preparing the Build for the user demo
meeting, which means setting up whatever data or configuration files are
needed, and network connections, so that the demo will go well.
If the user demo is not going to be presented in the agile room, which
sometimes is used for demonstrations, then the presenter must verify that the
Build will work satisfactorily in whatever room is being used for the demo.
Go to the room early and test it! Are the network connections working? Is
Wi-Fi available and at sufficient speed? Are any stakeholders remote, and
must be connected through some other tool like TeamViewer or
GoToMeeting?
The presenter and the APM test out the demo in the presentation room as a
matter of routine. If the presenter is a developer, then the developer walks
through the demo quickly, to ensure that it will work properly for the
customer. A demo that works only on the specialized machines in the
development
environment may not be a reliable demo because it may not reflect the actual
performance of the product when it is in production.
The product configuration is set up for each user demo, so there is not a lot
that needs to be done later when the product is released. Sometimes, the
developer needs to set up platform-specific configurations, or package
technical documents. A tester has a checklist of what needs to go with the
Release into production, and the developer assists with that list.
214
PMI Parallels
All the PMI parallels of Chapter 8 are still true, but the following highlights
some specifics for the Developer role.
After Kent Beck began agile with the practices of Extreme Programming, 12
it continued to evolve, and more and better practices emerged. PMI does not
actually prescribe how to run a software project because project management
applies to a broad range of project types. Specific practices vary widely.
Fortunately, the Software Engineering Institute (SEI) and PMI have taken
agile under its wing. They emphasize that the PM principles are still the same
but the mechanics are different.
The number of tests between agile and traditional projects should be the
same if we base it on the scope of code being the same. However, agile unit
tests are automated, especially with TDD, and are quicker and easier to
write. Therefore I think the developer writes many more unit tests than
developers on traditional projects. Unlike traditional testing that verifies
after coding, the agile developer relies on the unit tests to progress with new
code. I have no formal data on this point, but it would make an interesting
study to find the number of tests written per line of code between agile and
traditional projects for the same type of product.
Cost: Agile does not decrease cost directly, but the synergy of all the other
factors produces a higher productivity and better ROI. Cost reduction results
from the smaller teams, and the lack of rework, for agile projects.
Quality: TDD developers write unit tests before they write the code for
those tests, and TDD is characteristic of agile. TDD developers get better
code coverage and fewer defects than with traditional development methods.
All facets of the team—APM, analyst, testers, and developers—cross-check
frequently with each other and their work products to reduce the risk of
defects to almost zero. There is no need for a post-iteration QA group to
further test the Build; it is ready for release.
12Ken Schwaber and Jeff Sutherland’s SCRUM practices pre-dated XP, but
SCRUM was not called an “agile method”
215
involvement is better to have with the APM and BA. The developers are
usually on the critical path, and so they should not be distracted by work
others can do. Developers work with stakeholders at specified times: at the
user demo, with the business SMEs at the requirements analysis meetings,
and possibly at the Defects and Changes meeting.
Conclusion
This chapter focused on the activities for the developers on an agile team.
Instead of a bulleted list of activities performed by an agile developer, I
wrap it into a “typical day” scenario in the following section.
Following the “typical day” is a CORA table (Table 10-1) that summarizes
the inputs, processes, and outputs undertaken by the BA. It is indexed by the
box number of the Process Overview Diagram (Figures 8-1 and
The Agile Room: At the beginning of the day, Bob sets up his laptop on the
community table in the agile room. He shares a large flat table with two
testers and three other developers. The table is strewn with food: apples,
candy, half-filled water bottles, and at this time of day, coffee cups galore.
There is a small stuffed monkey on the table, the “code monkey,” used to
indicate whose turn it is to speak in the daily standup meetings. The table is
also strewn with paper containing written thoughts, half-finished designs, and
code snippets—a landfill of yesterday’s discussions.
Unlike the old days, when wires were layered across the table like an
electromagnetic tar pit to capture anything dropped on the table, the
computers and centrally shared codebase server are all wirelessly
connected. Unlike the old days with tons of colored 3x5 cards and sticky
notes on the wall to record the tasks as they move across the “Agile Board,”
the tasks are now on an electronic Kanban web page that everyone can
access with a flip of their browser page.
Bob downloads the current Build from the shared codebase. He tests that it is
clean…and it is. The current Development Build contains all the integration
tests (now acting as regression tests) that were uploaded previously by the
testers, Tom and Mary. The Build also contains the work Bob has been
doing, and new code and unit tests from the other developers.
Morning Coding: Bob selects a part of a user story to build. The full use
case is too large to code directly; a user story is short with a clear objective.
Bob writes a very small test, runs it against his code. JUnit pops up a bright
RED bar—Fail. Bob is not perturbed. He then writes code to get that test to
pass. JUnit pops up a bright GREEN bar--Pass! The whole process takes a
couple of minutes. Bob then augments the test case for more scope of the user
story, and writes the code to get that part to pass. After a series of such test-
code-test cycles, the user story is complete (but not the use case). Bob
removes some interim code statements he made while testing, cleans up a
few comments, and changes a variable name. He runs the test again after
refactoring, which passes. He then runs the regression test suite that came
down with the Build earlier. After a few minutes, it also passes, and Bob
uploads his new code and unit tests to the shared codebase, to be merged
with the current development Build. Just in time…the daily standup meeting
is going to start.
216
Chapter 10 ■ Development threaD
The Daily Standup Meeting: In the old days, each member of the team
would stand up every morning and tell what they had done yesterday, what
they were planning to finish today, and if they had any issue that was
obstructing their progress. Team members would move sticky notes at the last
minute from one place to another on the agile board to reflect that work’s
progress. On this new project, the team watches a Kanban board on a large
shared TV. They do not stand. They talk about the electronic cards on the K-
board, a simulation of an assembly line as the use case goes from analysis to
code to testing to Done. Bob still uses the canonical three questions to spend
a minute or two explaining his progress from yesterday, and his plans for
today. He will finish use case 11 today. No problems are foreseen.
Fred the BA asks why one of cards is still in the same position as it was
three days ago. Betty explains that she had to redo a database read function
for use case 17. Dirk volunteers to help Betty to complete use case 17 by end
of day. Betty says “Thanks!” and passes a donut to Dirk.
to work through a couple screen design issues for the current use case that
Fred is working on. Fred and Bob move off to one of the more private side
cubicles for the discussion. They work on a whiteboard sketching thoughts
for a design. After 20 minutes, Fred captures the image on the whiteboard
with his camera phone; the UX design is done and Bob returns to his coding.
“Great!” says Jim, and gets back to typing quickly on his laptop. Later, Dirk
answers the same question when Betty asks it.
Defects and Changes Meeting: After lunch, Alphonse, the APM, asks the
team to gather for a few minutes to talk about the defect list that Tom and
Mary generated that morning. They pass out a report containing 33 test items.
Most are labeled Pass, with a pass date. Several others items are labeled
Fail, with a number beside it that indicates the impact of the failure on the
system—critical, major, minor, or cosmetic.
“Whew,” thinks Bob, “no crucial show-stoppers on the list. We can handle
this.”
Within a few minutes, the developers acknowledge the failed tests that they
think are definite defects.
For one item, Mary had to pull out the use case and show what it was
suppose to do.
Strong disagreement arises over item 22. Dirk says it works “as designed”
but Mary says it doesn’t match the use case. Betty suggests, “What if we did
this…” and she explains an interpretation of the spec. Dirk says, “Sure, that
wouldn’t take me long to change—maybe 30 minutes.” Fred the BA says, “I
think I can get that past our SME with little trouble. Write it up on the CR
form, and then I’ll get the approval.” All of them get back to work after this
45-minute meeting. Betty writes up the CR form in 5 minutes, containing the
30-minute time impact, plus another 15 minutes for testing, and gives the CR
to Fred. Fred thinks that if the SME had been present at the meeting, the SME
could have approved the change immediately. Now Fred has to email it and
get it approved outside the meeting.
Pair Programming: Bob continues his testing and coding cycles for the rest
of the afternoon, but he has moved into code that was mostly Dirk’s area last
week. He asks Dirk, who is working with Betty, if he can spend a few
minutes with him. Dirk makes a few comments to Betty and rolls his chair
over next to Bob. Dirk and Bob begin pair programming.
Bob explains what he is trying to do, and they start writing test cases and
code. Bob begins to write a test for a much-used method, but Dirk explains
that he wrote a helper class that would make it easier. Bob only needs to
import the helper class and variable, and they should be all set. The helper
method is faster too.
After an hour, Bob and Dirk have completed that part of the use case. Dirk
returns to helping Betty. Bob continues with the use case on his own, and has
no real problems; all test pass. He finished use case 11 early and runs the
regression tests one last time for the day. The regression tests pass.
End of Day Uploads: Bob uploads his code for the day into the shared
codebase. As the files are copied into the shared codebase, the QA
compliance tools are triggered by the CI tool and run automatically. Bob
figuratively holds his breath. Three minutes later all goes green and the code
is merged. A new Build is ready for testers Tom and Mary whenever they
are.
217
Next Task Card: Bob checks the Kanban board to see what’s next. He sees
that Jim or Mary have already moved the defective use cases they discussed
today at the D&C meeting (that’s what the team likes to call the Defects and
Change meeting) from the testing column back to the development column. He
sees a card he could probably get finished before he leaves for the day. He
assigns himself to the card and moves it into the
“Coding” column of the Kanban board. He reviews the use case, and 20
minutes later, he knows how he will approach its implementation tomorrow.
As he closes down his laptop, Betty and Mary see him and wander over with
questions about various
tests and a GUI artifact he helped with yesterday. He answers the questions,
and leaves for the day, felling good about the work he and the team
accomplished today.
Summary of Developer Roles
Table 10-1. CORA Matrix for Developer: Summary of the Developer Role
(Brackets Indicate that the BA Contributes or Reviews the Artifact.)
BOX #
INPUT
PROCESS
OUTPUT
[1]
be completed by iteration’s
end
[2]
validation model
(Initial design)
[5]
[6]
and design
artifacts
tests
unit tests
Build broke
or regression defects to be
repaired
[9]
Development Build
Test Build
machine
[13]
estimate impacts
( continued)
218
BOX #
INPUT
PROCESS
OUTPUT
14
Iteration backlog,
Approve Build for completeness
RTM
[15]
updates
[16]
answering questions.
17
Final Build
operations
219
Chapter 11
Testing Thread
Chapter 8 gave an overview of the iteration process, tasks, and artifacts for
the team as a whole. This chapter contains a detailed look at the work of an
agile tester within an iteration. It shows how the tester uses input from other
team members, and produces output to be used by them. This chapter can be
considered a
guideline for agile testers. It should help other team members understand the
tester and QA efforts on their team, and possibly allow novice testers
working in an agile team to perform the testing and QA functions better.
There is a mindset change between traditional testing groups and agile testing
groups. Traditionally, a product was sent to an independent QA group for
testing after coding was completed. With agile, testing occurs during the
iteration, and acceptance testing occurs with the user demo, or while the
Build is in release staging. No further functional testing is needed1: there is
no QA group required afterward for any reason unless the organization
requires it. Eventually, the management will realize that the QA group is
redundant, especially since the QA group probably uses the same tests as the
agile testers. For more about agile testing approaches, see Crispin & House
(2003).
The testers receive their input from the business analyst (requirements and
UX artifacts) and from the developers (design, code, and unit tests), and
produce output back to the team (defects for repair to the BA, developer, or
tester), and the APM (test results for reporting).
There are two kinds of testers during the iteration: the GUI (Graphical User
Interface) tester and the integration tester. One person may fill both these
roles, but their tasks require slightly different skill sets. The distinction
between GUI tests, the developers’ unit tests, and integration tests are
discussed below.
The GUI tester ensures that that user interface is correct, that the product has
the right look and feel, which is a subjective term for the user’s holistic
experience when using the product. The GUI tester ensures that the user
interface (screens, reports, and anything else that the user sees) behaves as
expected, contains the right info at the right time, and navigates to the next
screen page as expected.
221
• Contribute to estimating the use cases or user stories for the iteration by
factoring in
• Review and approve the use case, UX artifacts, and design considerations
as
• Write the GUI or integration test scripts for each user story, and review
them with
the other testers. Since GUI and integration tests inform each other,
collaboration is
necessary.
• Contribute tests to the regression suite that must run before final Build
acceptance.
• (GUI tester) Execute the GUI test scripts for each user story against the Test
Build.
Record the passed tests in the RTM, and failed tests in the defect log.
• (Integration tester) Code and run the automated integration tests for each
user story
against the Test Build. Record the passed tests in the RTM, and failed tests in
the
defect log.
Build. Testers help define what is in the QA standards2. Record the passed
tests in the RTM, and failed tests in the defect log.
• Contribute to the Defects and Change meetings to present the test results
(RTM and
defect log), help determine root cause of failed tests, and ensure that failed
tests
• Contribute to the Iteration and QA reports, particularly with test results and
defect
trends.
Test Cases
Before we talk about specific GUI and integration tests, let’s talk about tests
and testing in general. Agile products are built like an onion, layering newer
functionality over previous functionality, always having a working product.
Agile practices run automated integration tests frequently, often once each
day. Agile integration tests are fast.
There are four kinds of tests run during the iteration:
• Integration tests, such as GUI and functional tests, written and run by the
testers;
222
• Regression tests, the collection of all tests rerun each time the Build is
updated;
tests on the product before accepting it into production. Sometimes they write
the test cases down before testing.
System testing and performance evaluations are run outside the iteration,
usually before a release. They are not covered in this chapter. Unit testing
was covered in Chapter 10 .
Integration Tests
An integration test applies to agile only for thin-thread testing, because agile
uses only the thin-thread development approach.3 A user story is a
transaction with the user and the system, and the integration test confirms that
the transaction behaves as expected. A GUI test is also a simulation of the
product to confirm that it behaves and appears as it should at the visual level.
Both kinds of tests simulate a thin-thread transaction, the thin thread
executability defined by the user story.
An integration test script is a text file; the test case summary is a text entry
in a spreadsheet; the actual integration test is a piece of code, typically
written in the language of the product and run in a testing framework. 4
The test coding language is usually the same as the programming language but
simpler. Sometimes it is a test script of a commercial test application. Most
languages have software tools to support test automation, such as Java’s
built-in support for JUnit. With the advent of automated testing tools that can
be written in the programming language itself, there is little need for two
languages and two skills sets.
Either a developer or a tester may write the integration test case. Some
testers do not know how to program and cannot write test code. Strictly
speaking, writing test code is a testing role because it is about writing and
running gray box test cases. Therefore, if a developer is writing an
integration test for a use case, the developer is filling the tester role.
The integration test (and tester) must be aware of the software architecture
and its API to properly flow through the system. Figure 11-1 shows the
software components for the MVP architectural model (4+1
4Test scripts as used here are textural descriptions of tests that exercise the
user story, as opposed to scripts that select and run suites of tests (like an Ant
Build script). Scripts are still important for packaging and configuring Build
issues and Continuous Improvement (CI) issues. Tools like Ant and Maven
allow Builds to be written without the heavy-duty scripting that was once
required.
5The four components are HIC (Human Interface Component), typically the
GUI, but the HIC also includes report and printed outputs; the PDC (Problem
Domain Component), which contains the business rules; the SIC (external
Systems Interface Component), which handles external systems
communications and networking; and the DMC (Data Management
Component), which handles data persistence. See Chapter 5.
223
Systems
Interface
Component
(SIC)
Data
Problem Domain
Human Interface
management
CIV
Component
Compontent(HIC)
Component
(PDC)
(DMC)
JUnit Test
Module
Integration tests are derived from the use case, a user story at a time. The
GUI test cases and the design inform the integration test. Although the
integration test simulates the GUI at the CIV, integration tests and GUI tests
are usually not the same.
Production code passes input data from the HIC (usually GUI data from the
user) to the PDC through the CIV, which validates the input data and formats
it for efficient internal use. On the output side of the transaction, the CIV
receives output data from the PDC, formats it as GUI strings, and passes it to
the HIC.
For testing, the JUnit test driver plugs into the HIC socket of the CIV. It feeds
simulated HIC data to the CIV, and receives output data from the CIV that
normally is transmitted to, and displayed by, the GUI in the HIC. In short, it
intervenes so that the HIC objects are not involved, and the results can be
caught by the Test Module and confirmed.
Implementation Java makes the CiV socket very easy to use. the public
methods in the CiV take an hiC object Interface type which can be easily
implemented by the product code and the testing code both.
the testing code implements the hiC interface as a proxy. For example, the
hiC uses an input-output panel for user transactions called class IOPanel,
which implements the IOPanelInterface. the test code implements
IOPanelInterface with IOPanelProxy. either implementations of
IOPanelInterface can “plug into”
224
There are three major differences between traditional testing and agile
testing: integration type, size, and frequency.
at the higher levels to integrate the lower level units; and thin-thread,
executing a
transaction through the product from beginning to end. Agile testing, which is
based
modules, and sub-modules, and verified that these pieces ran together
correctly.
Unlike traditional integration testing that examines large pieces of the system,
agile integration testing typically works at the lowest level scope: the object
and its
methods.6
of time to run. Consequently, they were run late in the development cycle,
usually
each time the Development Build is turned over to the testers. If integration
test
cases are not automated, they will not get run, and eventually, not built.
These differences allow automated agile testing to be run more often and
earlier, removing defects earlier in the process, and thus more economically.
However, the tests must be automated for them to have practical benefit.
Regression Tests
Regression testing involves running any test that previously passed to ensure
that new code did not break old code, and that the passed test continues to
pass as the product grows. Regression tests can contain any kind of test:
integration tests, unit tests, GUI tests, or a combination. Automated
regression tests contain all the automated tests that have passed once already.
subset of the full set of tests. With Agile’s thin-thread automated testing, all
tests (the test suite) can be fully regression tested.
The current integration tests are added to the last regression test suite and run
again. Sometimes a new test that passed will fail within the regression test
suite because the test is not as independent as the tester thought. The testing
context has caused the problem; for example, a previous test has not reset the
state properly. If the integration test fails in the regression suite, the tests
before it give a clue as to the cause, and it can be repaired. The integration
regression tests are automated, so running the entire suite should take not take
long. Agile integration testing is usually not one of those run-it-overnight
tasks because it takes too long to run during the day.
6Agile system testing, performed outside the iteration scope, works on the
larger system pieces when needed, but the continual development paradigm
rarely requires it. Performance evaluation is an exception in that it should
always be done on the system in a real environment before being moved into
production.
225
The GUI must be regression tested, but I have not found an open-source tool
that will perform complete and accurate automated GUI testing without a lot
of overhead. Unfortunately, if the regression testing must be done manually, it
is not performed every day like automated integration regression testing; time
alone becomes prohibitive. At best, GUI regression is spot-checked when a
use case is repaired, and at worst, once before a release.
another alternative is to ask the help desk personnel to run gUi tests
frequently. they must support the product after release, and i usually have not
had a problem asking them to learn the product by testing. they often enjoy
being released from the drudgery of repeated call-taking.
QA Compliance Tests
There is more to QA than integration testing. There are other checks: Did the
developers follow the agreed-upon coding style? Were all Javadoc
comments (or other developer-written documentation) completed for the
technical documentation deliverable? Is the portion of the user manual
completed and ready to go?
went into the test code with the unit tests, tags that indicated which kind of
NEBS
tests were run. The Javadoc documentation generator checks for the existence
of
these tags for us. The tags also show up automatically in the HTML output
describing
the class’s API. The QA tester can check that all unit tests are written, and
which
• Programming standards: Some tools will check that the proper coding
style was
followed. The open source programming IDE Eclipse has features built in to
warn of
bad style. Eclipse also has a formatter so that code-format standards can be
met with
the code, and can be customized to ensure that the code complies with
standards.
can be run when the code is uploaded into the shared codebase. These kinds
of
tools can be run by the developer, but the testers run them again to confirm
that all
226
have plug-ins so that the developers can run them before submitting poor or
fragile
and can be downloaded into Eclipse. The metric values are relative, and are
used for
comparison against the classes and methods in the product. If most code files
have
metric numbers in the 10-30 range, then if a code file with 800 appears, it is
likely to
should be repaired; at the very least, the code file can be documented as to
why its
make your code readable instead.” This idea, which a team may or may not
adopt,
does not apply for the Javadoc comments at the public class and public
method
level, which are used for technical documentation. Even the staunchest no-
comment
agilistas recognize that the API must be documented for others to use the
code. The
class comments are at a higher level than class methods, and are needed by
people
who are not looking at the code: maintenance programmers, new developers
trying
to get an idea of the larger picture, developers on the team who haven’t
worked in
that area of the product before, and programmers who wrote the code but can
no
should be called.
Document all public classes and methods so that those wanting to modify the
Inner classes and private methods comments are preferred but not required.
Each unit test method must have normal, error, and null test cases, with the
cases are optional, but if they are included, they must also have the
@Boundary
There are many other QA standards and metrics that could be validated,
perhaps for multi-platform
Concurrency
The approved requirements are given to the testers to convert into test cases
at the same time the requirements are given to the developers to implement
the code. The testers’ path in the iteration workflow, running concurrently
with the developers’ path, complies with a few critical rules of development
and testing. These rules apply to both unit tests and integration tests.
227
• Rule #1. Tests are built from the requirements, not from the developers’
code. When the code is done, the test cases verify that the requirements are
satisfied, not that the
required. The developer cannot see the blind spots that he or she built into
the code.
The developer can be successful enough at the unit test level, because only
the
developer is writing the unit, and the implementation at that level depends on
the
developer’s perspective.
At the use case level for integration testing, the use case is a text document
two different perspectives (in addition to the BA) that cross-check each other
so that any disagreement can be resolved. I cannot count the number of times
a developer has told me that his code was error free before testing revealed
a
Conversations with the tester and analyst prevent much of that effect, but
verbal
• Rule #3. All tests follow the NEBS technique. Each use case can be
viewed as a
collection of paths that fall within one of four categories: normal paths (no
errors),
error paths, boundary paths (pairs of cases that are just outside and just
inside the system boundary for the use case condition), and sometimes
special cases that
do not fall within the other three categories. Identifying test cases using
NEBS will
ensure that tests will cover all the functionality of the use case. These paths
align
Generally, the testers and developers play leapfrog on processing a use case.
For each user story, the testers finish their test cases first and then “wait” for
the code7 so they can test it. The developer finishes the code and then
“waits” for the tests to reveal defects for repair. The testers test again and
then wait for the developers to finish defect repair.
Actually, testers begin writing test scripts for new uses cases while they
“wait;” developers start coding the next use case while they “wait.” Testers
and developers often work two use cases in parallel as they leapfrog.
Whoever is done first pulls the next use case from the iteration backlog to be
implemented. If the developer has already pulled the next use case from the
iteration backlog, then the tester needs to catch up, and write test cases for it.
If the developer is still working on repairs or changes, then the tester pulls
the next use case to start defining its tests.
There are several aspects of an integration test case, and how they are
written and recorded. The test case summary, the test case script, and
integration test code are discussed below.
7Of course, on an agile team, no team member waits for another. Team
members work on a different card while another card is being worked on by
someone else. There is no down time on an agile team.
228
The test case summary contains a single goal and description for a test of a
single user story. It is not a separate artifact but merely an entry in the
spreadsheet, or a test tracking tool. The test entry is used to keep track of test
status. The RTM serves as the final resting place for a passed test, but it is
not the best place to keep track of the detailed test states, such as when it was
tested, what defect resulted, test dates, repair dates, and the like; the RTM is
a higher-level tracking tool. See Table 11-3 for a sample of test case
summaries for the ATM Withdraw use case.
Why write test summaries before testing? The mindset is different when
writing tests that when running tests. When the test cases are written, the
tester can focus on all the logical possibilities without being bogged down by
specific details about the test case—he or she is merely categorizing the
kinds of tests that need to be written. The NEBS method is a good guideline
for allowing the tester to be sure all the tests paths are identified.
This mindset difference is more pronounced when writing automated tests
because when the tester writes test code, he or she must focus on the details
mentioned above, but must also focus on setting up the test, defining expected
results and error conditions, and resetting the system state, all in a rigorous
non-natural (programming) language for testing. It is easy to forget some test
cases while coding and running others.
The test script 8 defines the details of preparing and executing the test case.
The script contains descriptions of the inputs, expected outputs, procedure to
set up the pre-conditions, procedure to verify the post-conditions, and results
of the test. The script elaborates on the test case summary, and is a good
communications document for developers and testers.
Scripts are more frequently built for GUI tests than for integration tests
because the integration code serves as the script. If the XUML validation
was performed on the use case, then each sequence diagram drives the test
case, and can be used in lieu of a test script too. See Tables 11-4 and 11-6
for a test script form and example, respectively.
If the test case is required to find defects, and the RTM is required to track
results, and the integration test code is required to execute automated tests,
why write a test script?
All tests must eventually be used for regression: unit, GUI, and integration
tests. The script describes what the test is doing long after the test author has
forgotten about the test and its goals. It is essential that the defect report
form has a section explaining how to reproduce the failed test. More
traditional organizations keep an archive of all tests written for later
production maintenance. Many agile teams will not write a test script but rely
on the integration test code.
Developers do not write scripts for their unit tests because they write the
code and that is sufficient for the small scope involved. The same argument
can be made for integration tests—the test code is sufficient, unless the
organization needs to keep the test forms for documentation and maintenance.
Some agile teams may start with using the script form, then after a few
iterations, work directly from the test case spreadsheet.
GUI tests are quick to write and run, but as GUI tests are run, there is an
overwhelming desire to not check the results with pre-defined expected
values. It is (erroneously) thought sufficient to see the behavior of the
interface or return value and assume it is correct with only a “sanity check,”
if the result “seems reasonable.” Sometimes the GUI tests returns something
that is only close to correct. It is too easy to get caught up in the action of the
moment and not think through all the test cases. This is another way that GUI
scripts help catch defects.
8The term “test script” used here does not refer to the scripting language
used in various automated testing tools. If an automated testing tool is being
used, the tool’s script can be used in lieu of the testing script discussed in
this section.
229
gUi and integration tests must be entered into a spreadsheet for tracking
passed and failed tests. each test case name, gUi or integration, is also
collected in the rtM for later tracking after it passes.
Variant With my agile projects, many fewer defects were found than with
traditional projects, so our teams wrote test scripts using that form only when
the test failed. this approach worked for us well, with a minimum of
documentation, despite the risk when new testers got involved and were not
sure of what (or how) something was tested previously. Whether your team
writes test scripts for all use cases, only for failed tests, or not at all, is left
to the team.
This section describes the work of the team within the iteration process flow
from a detailed perspective of the testers. The iteration starts with the
tester’s role in the iteration planning meeting. The box numbers in each
heading refer to the boxes in Figures 8-1 and 8-2.
The testers contribute to the use case estimation meeting with everyone else
to define the iteration backlog. Their efforts needed to test the use case are
part of the use case sizing. For example, if the developers think a use case is
three story points in size, the testers may up that to five because of some extra
testing needed.
Any defects that must be repaired are added at this time too. Defects added
during iteration planning are defects that escape repair in earlier iterations,
and are coming back through the product backlog. The team must select and
commit to fewer user stories in the iteration backlog because the time needed
to repair defects must be considered. The team velocity will decrease as a
result of the fewer user stories taken on in this current iteration.
Also, defects are automatically given zero story point value. The user story
that had the defect already counted as done erroneously inflated team
velocity. The zero point defect card resets the team velocity back to where it
should have been.
The testers walk away from the meeting with the same list as everyone else:
prioritized and sized use cases (or user stories) committed to be completed
by the end of the iteration, written up on cards in the iteration backlog. Each
tester will have one card from which they will start writing test cases today.
230
GUI tests are informed by integration tests and the code, so the GUI tester
reviews the test scripts with the integration tester and developer as part of
developing GUI test cases.
The GUI displays only string data and visual images, and contains only
syntactical logic and widget control, and that is what GUI tests test. To
maintain good separation of concerns, a primary design principle, and to
enable the effective use of the testing framework with the MVP architecture
(see Chapter 5), the majority of the input and output logic for validation and
reformatting is in the CIV—the component between the GUI and the main
application.
GUI tests send data from the GUI to the CIV, which validates the input data
and reformats it for the main application. When the data returns from the main
application at the end of the use case flow, the CIV
reformats the output data it receives for the GUI.
In one project where this principle was diligently followed, 85% of the code
was in the CIV or behind it, and could be tested automatically with
integration tests. The GUI contained the other 15% of the code, and was
manually tested as needed.
Can GUI tests be automated? Of course, any automation that saves time is
desirable, but good GUI
testing tools that don’t require a large amount of overhead are rare. Many of
the commercial tools we found had high startup time, high maintenance
overhead, were expensive, or all of the above. Our team was not able to find
an open source GUI testing tool that did not use up more time writing scripts
and logging than the time needed to run the GUI tests manually. By keeping
the majority of the logic out of the GUI and in the automated-test domain, we
were able to minimize our GUI testing, and subsequently, reduce our risk of
user interface defects.
For agile, an integration test is a thin-thread test. It exercises all the objects
and methods along a single path of a use case, and verifies the flow’s
expected responses. The integration test assumes that all the units (object
methods) are working correctly, and runs them in sequence: the connections
(API) between methods are being tested to ensure that they can pass off and
receive data between them correctly.
Integration testing is called gray box testing because it knows more about the
internals of the product than black box testing, but not as much as white box
testing (unit testing) . Integration tests have knowledge of each object’s API
in the CIV, but no further. They have some knowledge of the different paths
that must be executed to identify the proper test inputs and outputs, but little
else.
Integration tests do not test the GUI, but are informed by GUI test cases.
Integration tests exercise the functionality of the use case throughout the
system. They are coded and plugged into the system through the CIV
component. See Chapter 5 .
The testers write integration test scripts from the approved detailed use case,
and record them in the RTM associated with the use case being tested. All
integration tests become part of standard automated regression testing.
• Design a set of inputs for known outputs that exercise a particular user story
231
Although the test cases and scripts are developed now, they are not actually
run until the testers have the Test Build, so they can only identify tests and
record test information in the test scripts.
Integration tests are informed by GUI tests and the code, so the integration
tester reviews the test scripts with the GUI tester and developer as part of
developing integration test cases. If there are two different people writing
GUI and integration tests, then the test review is even more important. GUI
tests and integration tests inform each other, so both sets of test cases are
improved in the comparison.
If the validating XUML sequence diagrams are available, the integration tests
are much easier to write.
The scripts are written together in preparation for when the Build is
available for testing (Box 9).
Recommendation if there is one person for both gUi and integration
testing, then the gUi testing should be done first. gUi tests are easier, and less
likely to change during coding. the interfaces used by testing will be more
stable by the time the integration test scripts are written. gUi tests are also
easier to change because they do not require changes to test code, like
integration tests do.
Variant it may not be necessary to write the actual iteration test scripts if
iteration test code is written, except for complicated use cases and large
systems. the test code is sufficient. however, it is essential that the test cases
are identified, so that none are inadvertently omitted. the rtM ensures that all
tests are identified and tracked.
Once the integration and GUI test cases are defined and recorded in a
spreadsheet (for each use case or user story), the entire team reviews them.
The team ensures that all user stories (paths) are covered.
Knowing the tests also may bring out differing perspectives between tester
and developer.
The sooner the developers and testers see what each other has in mind, the
better. Developer/tester misunderstandings will show up in failed tests;
better to remove them before they enter the code, or produce defective tests.
The test review step is not strictly a quality gate, so if the meeting is delayed
or skipped, the testers can move forward and start running GUI tests and
writing integration test code as soon as they have the Test Build. However, I
have found that when this step is skipped, rework always follows, even if it
is reconciling the testing and development perspectives later.
Agile teams encourage the test review to be done in short bursts of one or
two cases at a time, which spawn many test cases. Still, the test review takes
about 20 minutes.
The tester moves the Development Build from the codebase, currently in the
development environment, to the test environment, an isolated environment
where the testers can exercise the current version. It is now the Test Build.
Developers continue working on the Development Build and produce
updated versions of it.
They no longer have access to the Test Build, or its supporting structures and
database files.
232
Some agilists may disagree with separating Test Builds from Development
Builds because the
• When the developers have (1) written all the code for the use case; (2)
written all the
unit tests for the use case code; (3) the Development Build passed all the
regression
tests 100%; and (4) the “code complete” date is recorded in the RTM for the
use case.
• When the testers have (1) written the GUI test scripts; (2) written the
integration test
scripts; and (3) both sets of test cases are recorded in the RTM for the use
case.
GUI testing is fairly quick to do, but laborious and tedious to do multiple
times for regression. GUI tests provide user inputs with expected outputs that
reflects through-system functioning.
The following section offers words of warning regarding manual GUI testing,
both its form and
psychology.
Repetition is Grueling
GUI screen and web pages mostly deal with string data, or string-based GUI
widgets. That means a lot of syntax checking must be performed for the GUI
test to be complete, and once a tester has entered lots of syntax variations for
one field, it is tedious to repeat that sequence for another input field. It is
psychologically hard to do it again for another field, and even harder for the
same screen later for regression testing. Manual GUI testing is not as
productive as good automated testing. Consider GUI testing as a detailed
check, and make sure that the users are running acceptance tests too: the more
eyes-on the better.
Anecdote One company used two outsourced testers from Japan who
came on-site. they had written a script for their gUi testing. One read the
script, the other typed in the commands (and invalid commands). they did that
for about 40 hours. after they had run through the use cases, they switched
places and did it again for the same input data and product screens! the team
lead couldn’t believe how tedious a task they had set themselves. he couldn’t
even be in the room when they were doing it. i don’t think most gUi testers
will be as disciplined at the task as these two testers.
233
he complained and resisted, thinking it was someone else’s job. i said, “OK,
let’s test it right now. enter 100.”
he did, and the program returned 212. Correct. i asked him to enter 0, and the
program returned 32. so far, so good. then i asked him to enter -40. the
program returned -40. i asked him, “is that right? that looks like your input
number. perhaps your negative sign messed something up?”
For the next hour, he debugged, reviewed code, searched for a bug. Finally
he returned back to me in chagrin, calculator finally in hand. “hey!” he said,
“-40 degrees Celsius is -40 degrees Fahrenheit!” i smiled and replied,
“Yes, but now you know it.” My friends who heard this story thought i played
an evil prank. i hope he learned a valuable lesson: Know the result of your
test case.
Record the failed tests in the defect log, and record the passed tests in the
RTM with the date the tests passed. All tests are added to the regression test
suite. If the GUI tests are not automated, the regression suite for GUI tests is
probably a test binder containing GUI test forms.
Code and Run the Automated Integration Test Code (Box 11)
All tests either pass or fail. The results are captured in the test tracking
spreadsheet for later discussion with the developers, business analyst, and
others (in the Defects and Change meeting, Box 13). The impact of a test
failure may range from a cosmetic defect to a hard crash of the system. The
impact of the failure is recorded with the failed test result and, critically
important, with a procedure describing how to reproduce the failure. If the
developer cannot work through the failed test, they cannot fix it; if the tester
can not show the failure again, the defect will get ignored, and will likely
propagate into the production environment to show up as a mysterious,
intermittent problem.
Failed tests are recorded in the defect log, and passed tests are recorded in
the RTM with the date the tests passed. All tests are added to the regression
test suite.
Track the Passed Tests in the RTM
At the time of integration testing, the RTM contains, for each use case, a set
of GUI test IDs and a set of integration test IDs (I use two different tabs on
the same spreadsheet). They map 1:N (use case to test cases) in the RTM.
For each integration test that passes, add the date that it passed to the RTM as
test “completed.”
Eventually, all defects will be repaired, and each test case ID will have an
associated pass date. Only then is the use case considered done.
234
Track the Failed Tests in the Test Results Form and the Defect Log
The test results form is a key artifact because of at least one feature: it
provides a built-in procedure for reproducing the failed test, and is one of the
biggest reasons to justify writing a test script for integration testing. The
other information can be read directly from the defect log.
When tests fail, they can fail in different ways and with different levels of
impact. The sample Test Results Form of Table 11-tk shows a scale from 0
(pass) to 6 (hard-crash). There are three levels within those six points: 1-2
for cosmetic (such as a misspelling in a message, or a wrong color widget);
3-4 for functional errors that have workarounds (such as a button missing but
the same option available from the menu); and 5-6 for when the system is
non-functional, or there are no workarounds for the failed functionality. The
two values within each level allow the tester to be a little more
discretionary. For example, the tester may feel that some cosmetic errors are
more important than others, so assigns a 2 instead of a 1. (Grading scales
other than 1-6 can be used.)
Originally, the purpose of grading the impact was for the testers to know
when to stop spending time on a bad Build and return it to the developers. If
the test points were too high, say 12 in our example scale, there was no
reason to continue testing until the Build was repaired. The Build was
bounced back to the developers as a way of saying, “This Build is not yet
ready for testing.” This was the case when the Build contained multiple use
cases, or small- to medium-sized components, and were tested once every
week or two.
Today with agile, tests are run a use case at a time, typically every day or
two. The defects are returned to the developer for a single use case. The
testing point system helps to prioritize the defect repair schedule more than to
bounce the Build.
The defect log is a summary of the failed tests, as well as tracking the
results. The test tracking spreadsheet contains the test ID, date tested, the
failed impact grade, and the date the test passed. A partial sample defect log
is shown in Table 11-1.
Test ID
Test Date
Impact
Date Passed
TC03-N01
6/7/14
6/10/14
6/12/14
TC03-N03
6/7/14
TC03-E02
6/7/14
TC03-E05
6/7/14
6/8/14
6/12/14
When the test is run again later after defect repair, a new line is made for the
date of the second test. If the test fails, another impact grade is put in the row;
if the test passes, the pass date is added to the defect log (to close it out), and
added to the RTM to acknowledge it as “Done.”
From Table 11-1, you can infer from the tests numbered TC03-xnn that this
set of tests were run for use case 03. Those that failed from the entire set
were two Normal tests (N01 and N03), and two Error tests (E02
and E05). All the other numbered tests (N02, E01, E03, and E04) must have
passed or were not run (need to check the RTM for passed tests). TC03-N01
failed twice, and passed on the third try 6/12/14, as did test E05.
The tests without pass dates (N03 and E02) are still outstanding, and are
pending retesting, either due to time or code repair.
What is important about this table is the impact grade is used to prioritize the
defect repair.
235
After the testers have completed their most recent wave of GUI and
integration testing for the Build, they add the latest integration tests that
passed to the regression test suite, update the RTM, and upload the test suites
to the shared codebase.
The uploaded test suite will contain the tests that passed and those that
failed, so the developers can run them and repair them. The Test Build now
has the new set of regression tests that the developers will download in the
morning, and merge with the current Developer Build. Of course, this
assumes that all the tests have been written. Using the NEBS method is a
good way to ensure this.9
After all defects for the Test Build have been repaired (or deferred), the
Build is ready for the user demo and possible Release. The tester runs the
regression test suite one last time, and the QA compliance tests, before
giving it the seal of approval. Any defects at this point are likely compliance
issues, and those can quickly be repaired.
• Automated Regression tests (unit tests and integration tests) are run to
ensure
that nothing has changed since the last time the Build was tested. Any
“breakage”
(new defects of old existing code) is recorded in the defect log as a
regression defect,
and the original pass date is removed (or annotated). Automated regression
testing
• GUI testing must be regression tested, but GUI tests are tedious and
sometime
performed periodically, usually every third iteration. At the very least, the
product
must be GUI regression tested before Release, and given a quick sanity check
before
• RTM Update Verification: A tester or the APM checks through the RTM to
see if all
committed use cases have been implemented and tested, with pass dates. A
use case
is not complete until all its tests pass. Of course, this assumes that all the
tests have
been written.
all defect log entries are closed as expected, and other tools are run (such as
fails, the tester writes an action item to bring the Build back into compliance,
and
236
a history of the defect in case it happens again. The defect repair is expected
in the next Build (not the next iteration) unless the team chooses to delay it
for some reason. Passed tests are recorded in the RTM with the date they
passed.
If the customer SME is a daily part of the team, then the SME attends this
meeting. Unfortunately, the SME
The BA can confirm with the SME afterward, instead of waiting to schedule
a change meeting, which can slow down the entire team.
The testers meet with the developers, analyst, and perhaps the business SME.
The team walks though the list of test results to examine which ones passed
or failed. This meeting is an informal discussion to resolve whether certain
failed tests represent defects or not. Some may represent opportunities for
change.
and can be scheduled immediately for repair. A few repairs may not be able
to be
is incorrect, must be revised, and tried again; (c) Sometimes the failed test,
after
• The failed test may indicate a small change; perhaps someone on the team
suggests
business, then a Change Request (CR) can be written on a card, with its
impact,
knowing it is unlikely that the business will not agree with the analyst. The
CR impact
• The failed test may result in a large change; such as the business requests a
requirements change because the failed test surfaced some information the
business
had not considered. A CR must be written and its impact estimated. The
change
must be estimated and added to the CR. The CR must be approved by the
business.
Often, these large CRs cause such a significant change in scope, cost, and
schedule
that the APM must discuss the CR with the stakeholders. Large changes from
this
237
After the meeting, the team adds any tasks that need to be done as a result to
the iteration backlog. The RTM is updated now if it was not updated earlier.
After there are no more failed GUI and integration tests to repair, the
regression tests have passed 100%, all compliance tests have passed, and the
RTM is up-to-date, the team gathers to approve the Build. The APM will ask
the question, “Is the Build ready to be shown to the users and stakeholders?”
Sometimes a few defects still reside in the Build going to the user demo, but
it is usually not a problem if the defects are noted and announced at the demo.
The user demo is a more forgiving setting than the production environment.
Each team member answers in turn that it is (or isn’t) ready for the demo.
If the Test Build is approved, it is staged for the user demo. It must not be
touched until after the demo.
The iteration reports are built from the cards the testers and other team
members completed throughout the iteration. See Chapter 12 for more on the
Iteration Reports.
Testers do not have a strong role in the demo meeting, but they should be on
hand to discuss defects that might be found when the stakeholders run a few
exploratory tests. Details of the user demo are discussed more in Chapter 12
.
The testers do not usually play a strong role in the product release. However,
applications that use multiple platforms need to be tested for each platform,
so while one Build is being released for one platform, the testers often use
the time to test other platforms.
238
PMI Parallels
All the PMI parallels of Chapter 8 are still true, but the following highlights
some specifics for the tester role.
The biggest differences between the roles of the testers for agile and
traditional projects is (a) the testers work concurrently with the developers
instead of waiting for the product to be nearly finished; and (b) the tests are
run in small batches, a few at a time, instead of testing a huge batch of tests
near the end of the cycle.
The following sections cover some PMI Bodies of Knowledge (BOK) that
are different between
components are built. Agile tests use the thin-thread approach that
corresponds
to executing use cases or user stories. Traditional projects may use top-down
• More agile integration tests are written because the testers have more time
to write
the tests than in traditional projects, when testing is left to the very end of the
• Testers are more actively involved in estimating the scope of the iteration
in agile
Cost: Agile projects have quicker test feedback cycles than traditional
projects, which catch defects sooner, and subsequently decrease the
exponential cost of change.
Quality: Rico, Sayani, and Sone’s (2009) studies have resolved quality
issues of agile versus traditional methods:
Teams using agile methods produce higher quality products than those
using traditional
methods. Not only do agile teams, in a timely manner, make products that
their customers
ask for and need, but they produce few defects…agile methods have proven
to result in
239
Risk: The business value shown to the customer early in the user demo
reduces the risk of releasing a poor product, and increases the chance of the
stakeholders getting what they want.
Conclusion
This chapter discussed the iteration process view from the testers’
perspective. It showed that the testers start concurrently with the developers,
from estimating use case size to resolving defects and identifying potential
changes as soon as possible. The artifacts developed in the early stages of
the iteration are used by the testers in later stages of the iteration. Agile
testing is integrated into the development process, instead of being tacked on
at the end of coding.
Table 11-2 contains a summary of the tasks of the GUI and integration testers,
derived from the CORA matrix of Chapter 8.
Table 11-2. Summary of the Tester Role. CORA Matrix for GUI and
Integration Tester (Brackets Indicate That the BA Contributes or Reviews
the Artifact)
BOX #
INPUT
PROCESS
OUTPUT
[1]
Contribute to iteration
iteration backlog
planning.
user stories to be completed
by iteration’s end.
[2]
testable
[3]
validation).
diagram
[4]
Detailed use case
(initial design).
requirements
requirements
240
BOX #
INPUT
PROCESS
OUTPUT
[8]
test suite
(construction validation).
Development Build
Test Build
Test Build.
10
11
(Integration Tester)
integration tests.
12
QA standards; regression
suite
tests) to repair
14
completeness at proper
[15]
Contribute to iteration
RTM
closing reports.
iteration report
[16]
as needed.
[17]
Additional Tools
Agile code is written one user story at a time, a thin-thread approach. The
NEBS method is a technique to transform the stories (or a collection of
stories, the use case) into test cases in accordance with thin-thread
development, and achieve test coverage of the code as much as possible.
Think of it as thin-thread testing.
The NEBS method is used for unit tests by the developers, and for integration
tests by the QA testers.
The test writers generate test cases for each user story using the NEBS
method. NEBS stands for Normal, Error, Boundary, and Special.
• Normal: Create test cases that exercises the typical or normal (“happy
path”) through
the use case with normal data that results in a successful output.
• Error. Create a test case that exercises the error path of the use case to
produce the
error message or internal system state. There are usually multiple error paths
in a
241
• Boundary: Create test cases that provide data just within the boundary of
the
applicability of the use case, and another just outside the boundary. Boundary
tests
are always produced in pairs. The first should work and the second should
fail with
a known error result. Boundary paths may not be specified in the use case,
but the
tester can find those boundary conditions in the context of the use case.
• Special. Create test cases for special situations that have not been tested
before. All
use cases have Normal, Error, and Boundary test cases, but not all will have
Special
test cases.
There is another rule about building NEBS cases. Some code paths would
require an infinite number of test cases, which obviously is not fully
testable. However, one can always define a finite subset of an infinite set for
testing. For example, to exhaustively test the square root function, there are
an infinite set of positive numbers that could be tried. No tester would
attempt to do that. However, there are only a few subsets of all positive
numbers: perfect squares, non-perfect square integers, non-integers, and
perhaps the special cases of 0 and 1. There are also a few implementation-
dependent boundary cases.
Simple Example: Say you want to test the square root function that complies
with NEBS. You would look for normal tests first, and write code to
microtest
perfect squares, such as 49, 25, and 5041. The test will fail until you write a
square
such as 48, 27, and 5040. If you wrote the code properly, it probably passes
the
first time. Next, you test non-integers: 24.6, 33.9, and 5111.21. In all cases,
the test
must compare against the expected values, which are built into the test.
You then try error conditions. For a square root function returning only real
Also, you could try the square root of the non-number “W” and would expect
to
get an error.
One error condition that should always be tried (assuming it will compile)
is the null input case. What is the squareRoot(null)? You would expect a
error condition is tried, the null input case should always be tried because
null
You could then look at boundary cases. Boundary values always come in
pairs
near the boundary: one case barely inside the boundary that will pass, and
another case barely outside the boundary that will fail. Very large and very
small
numbers at the limits of the computer hardware are obvious boundary cases.
Variables of type Float and type Double in Java can cause intermittent
problems
because of the inexactness of these types. You should also try 0.9, 1.0, and
1.1
because the square root function changes character for values less than 1.0.
The square root of these values (to four places) are .9487, 1.0000, and
1.0488,
respectively.
For one special case, you should try 1.0 because that is a number that is not
242
For another special case, you could try the square root of zero. The square
root
algorithm for it. However, what would you get for the square root of negative
negative number was input. The correct answer is, “What does the
requirement
need?”
The NEBS method is important enough that one of our large-project teams
wrote Javadoc custom tags
with which to annotate test cases to ensure @Normal, @Error, and @Null
tests were written; and @Boundary and @Special cases could be counted.
By forcing these tags onto our tests, it also encouraged tests to be good
microtests. The tests covered 99% of our non-GUI product code. We had
85% code coverage because 15% of the product was GUI code without
automated NEBS tests. The program manager said that our
product set the QA bar for the other projects in his multi-million dollar
program.
Naming Conventions
Integration tests are named after the use case, such as TC04 for use case 4.
With NEBS, the name is suffixed by N, E, B, or S, and a counting number to
further distinguish the test. So for UC04, the test tracker shows TC04-B01,
TC04-N01, TC03-N02, etc. See the “Sample Integration Test Suite” section
for an example of NEBS
Table 11-3 shows the ATM Withdraw use case, called TC04. Withdraw
Money, as per the naming convention explained in the last section.
Table 11-3. ATM Withdraw Use Case, called TC04. Withdraw Money
Goal
Give cash to customer from their account, deducting that amount. Provide a
receipt of the
Name
Expected Result
Results
NORMAL
N01
$100 in it.
N01
data.
( continued)
243
N02
N03
in it.
a buffer.
N04
another ATM.
data.
ERROR
E01
E02
checking account.
input field.)
E03
Withdraw $100 from
Error message of
insufficient funds;
$150 in it.
E04
Error message of
insufficient funds.
$80 in it.
E05
Error message of
in it.
E06
checking account.
limit = $200.
E07
Attempt to withdraw
attempting by GUI).
( continued)
244
E08
another ATM.
for 24 hours.
BOUNDARY
B01
third ATM.
a two-ATM limit.
SPECIAL
S01
same ATM.
S02
second ATM.
15
# Tests
# Passed
# Tested
Notes:
1.
The entries were originally entered in the order the tester thought of them: a
mixture of normal and error cases, peppered with boundary and special
cases
after more thought. In this example, the spreadsheet sorted them into the
sequence shown, but some testers prefer to keep them in the order of
complexity
so that they can write code from simplest to complex. The spreadsheet can
also
2.
The use case uses a numbering system named after the use case: UC04
becomes
each category.
245
3.
The test cases that deal with multiple ATMs (B01, E08, N01, N04, S01, S02)
will
these are not integration tests, but system tests, and better left for later.
However,
it is better to record them now so that the test situation is not forgotten, and
can
4.
The dates of when the tests were run, and when they passed, are recorded at
the
bottom. This spreadsheet keeps a running record of success for the use case.
Table 11-4 shows a test script form for the test authors to fill out.
Table 11-4. Test Script Form for Test Authors to Fill Out
Iteration
Test Case ID
Created By
Date
Test Inputs
Test Procedure
Expected Results
Special Instructions
The following sections explain the fields in the form in Table 11-4.
Iteration
Enter which iteration of the product this test is written for. Some tests are
written for prior iterations as a result of late repairs or regression defects.
246
Test Case ID
Enter the designated identification number of this test case. It should follow
the format
TC<UC#>-Xnn,
where
UC# is the use case number from which this test case originated;
X is one of N, E, B, or S;
or S categories.
Created By
Date
Describe a general high-level overview of this test case. What is the goal of
the user story (path)? What is the goal of this specific test? Error tests should
explain what and why the error expected will be triggered.
Test Inputs
Describe all data variables and their respective values to be input by the
tester.
Test Procedure
pre-test state).
Expected Results
Describe all of the end results you expect the tester to observe.
Special Instructions
Define any specials observations or commands for the tester to adhere to.
Also, list any notes on this specific test case here.
247
Identify any UX IDs or other documents that are relevant. The use case
number is repeated here, even though it can be read from the Test Case ID.
Note that in the case of using JUnit to integration test, the Javadoc description
of the JUnit test file can be attached or substituted after the test file has
passed. If the test file does not pass, then a Defect Report should be filled out
and returned to the lead developer (Table 11-5).
Iteration
Test Case ID
Test Date
Tested By
Result
Pass (0 points)
For example:
Cosmetic = 1-2
If the test didn’t meet the expected results, explain what you observed.
Include enough information for the failure to be reproduced
Tracking
Number
Repeat the iteration and Test Case ID at the top to keep script and results
together.
Test Date
Write in the day that this test case was executed (and passed or failed).
Tested By
248
Result
Check the appropriate box according to how the tester observed the result
compared to the expected result.
• Pass: The test matched the expected results completely and accurately.
Give a value of 0.
• High Incident/Defect: The test didn’t match the expected results at all. A
system
crash, wrong screen data, wrong data outputs, infinite waits, etc. fall under
this
severity.
The only discrepancies are visual errors or are minor. Give an integer point
value of
1 or 2, depending on severity.
If the test didn’t meet the expected results, explain what you observed.
List all observed results that didn’t match the expected results.
Tracking Number
Write the tracking number(s) of this discrepancy in the current defect tracking
system. There will be one tracking number per discrepancy. This is an
internal number usually associated with the test’s RTM entry line.
Test cases that passed retain their test cases numbering prefix of TC. For
tests that fail, the Change Management Board (CMB) will later decide if
these failed tests (“incidents”) are Defects or should spawn change requests.
Now let’s see a form that’s filled in. See Table 11-6.
249
Iteration
Test Case
TC04-N1
ID
Created By
Darth Vader
Date
2/16/00
Test Inputs
1. User Name = “yoda”
2. Password = “c3po-r2d2”
Test Procedure
1. At login screen, enter the username and password listed in Test Inputs
section.
Expected Results
Special Instructions
1. Make sure that when the menu appears that there isn’t an “infinite wait” for
a command prompt
250
Iteration
Test Case ID
TC04N01-N03
Test Date
2/25/00
Tested By
Obi-Wan Kenobi
Result
Pass (0 points)
For example:
Cosmetic = 1-2
If the test didn’t meet the expected results, explain what you observed.
1. Upon entering the user name and password, a welcome message with the
wrong message “Welcome to the Death Star Weapons Configuration Program
of the Imperial Army” appeared. This is obviously a
3. The system did bring up the main menu, but immediately after the menu
was displayed, the Windows 95 “Blue Screen of Death” appeared. This is a
high discrepancy. Give 6 points
Tracking Number
35, 37, 38
251
Note that in Table 11-6, the author put three related tests together, and gave
the test three test IDs: TC04-N01 thru TC04-N03. Note also that there are
three tracking numbers, each representing the number of three lines in the
RTM where the test is registered. Figure 11-2 shows a sample defect trend
chart from a QA report.
Figure 11-2. Sample QA Report of Release2, Iteration 34
252
Chapter 12
There are two aspects to the Agile Project Manager (APM): the work done
outside the iterations, which I have been calling the PM and is similar to the
traditional project manager; and the work done inside the iterations, which is
sometimes called an agile coach and servant leader. The PM and the APM
have a slightly different focus, and therefore involve slightly different skill
sets between Region 2 (outside the iterations) and Region 1 (inside the
iterations) of the project. (See Chapter 1 for a discussion of how the regions
differ, and how agile PM theory differs from traditional PM theory in this
regard.) Usually the person filling the PM role is the same person who fills
the APM role, but that does not necessarily have to be the case. The PM fills
a more traditional role in Region 2 than does the APM in Region 1, so a PM
that will work as an APM will need the same agile skills as the APM.
Chapter 8 contained agile process diagrams, Figures 8-1 and 8-2. Neither
has a swim lane for the APM
within the iteration because there is not a specific role that the APM plays
alone. As an agile coach, the APM
works with the team to guide, coordinate, and smooth the way from team
results to stakeholder expectations.
As a servant leader, the APM removes obstacles and distractions from the
team, ensuring that the team is free to do their best work. Sometimes that
includes helping them reach personal and career goals.
The APM writes reports for the stakeholders and upper management, but
most of the data comes from
the team. Sometimes the APM’s hardest task is to convert the agile progress
reports to a format that upper management expects and can understand,
especially if management wants those reports to be consistent with their non-
agile projects.
The duties of the APM in Region 2 have been discussed in earlier chapters:
refining the charter and preliminary release plan, working with the BA and
stakeholders to define the product backlog, acquiring the technical team, and
managing stakeholder expectations and communications. This chapter will
not discuss those responsibilities further, but will focus on the duties of the
APM.
and reports the project schedule to the stakeholders, and oversees the QA
and delivery of the Release to production. The team is responsible for getting
the Build done right, but the APM is liaison to the stakeholders. After all, the
APM will be the focal point of the stakeholders’ sturm und drang if
something goes wrong.
253
The APM set up a working team agreement during the technical team kickoff
meeting in Iteration 0, so the APM monitors the team practices to ensure that
they are following that agreement. Individual variances to the agreement are
addressed informally by reminders, or during a team retrospective.
Retrospectives are periodic forums (usually every 1 to 3 iterations) to allow
the working agreement and agile practices to change.
Monitoring the Release Plan
The APM is responsible for informing the stakeholders of any changes that
affect the project scope, cost, schedule, or quality in a significant way, and
getting those changes approved by the sponsor and upper management before
being implemented. The APM, like the PM, must monitor the progress of the
project at the project level: ensuring the release plan is on track, or revising
it as needed. The APM must know how to apply history to future iterations,
and make course corrections when needed.
Daily Meetings
The team owns the daily 15-minute meetings but the APM is responsible that
the meetings are not derailed by “rat holes:” problem-solving discussions,
specific task details (too much “in the weeds”), off-topic discussions, overly
long answers, and other distractions that take the meeting off the focus of the
three questions: (1) What did I complete yesterday?, (2) What will I
complete today?, and (3) Do I have any impediments? The best daily
meetings are those that look like they are not facilitated, and the team
members remind each other of the rules.
More specifically, the APM has the following duties within the iterations:
• Facilitate the iteration planning meeting, ensuring that the teams do not
overcommit, and that defects and change requests are properly scheduled.
• Review the detailed use cases, UX artifacts, and design with the team to
keep aware
• Facilitate the defects and changes meeting, resolving conflicts from failed
tests,
BA works with the SME and the APM works with the higher level
stakeholders.
• Facilitate the meeting in which all team members approve the Build as
ready to go
to product and the user demo. Expedite any changes to the Build that must be
done
near the end of the iteration, adjusting priorities accordingly (with team
input).
• Build the iteration reports from team knowledge, and presentation to the
Requirements Traceability Matrix (RTM), and the iteration and project burn-
up
• Get the final Build and its associated artifacts approved by the stakeholders
before it
254
Agile Perspectives
Whether the project manager is working an agile project or not, there are
certain perspectives that the PM
must have when working with upper management and the team. There is also
a perspective that the APM
must engender between the agile team and the stakeholders. Without these
perspectives, the PM receives unnecessary stress and conflict. The project
community—sponsor, stakeholders, technical team, and
other interested parties—need to know how the APM and agile team fit into
the roles they are filling in the organization.
Ironically, the APM gets the blame for failed projects, but they actually have
little control over the project.
The APM cannot do this by himself or herself, but the APM must ensure that
the team works together well, overcomes obstacles, and meets their
commitments.
Traditional PMs sometimes—and I’ll use the worst case here—act as if the
entire project was under
their control: schedules, budgets, scope, quality, risk, and the rest. Actually,
the PM is a facilitator, and has no real choice about key business decisions,
such as excluding or including certain features of the project, extending
project schedules, or risk tolerance factors. The PM should show the data
and consequences of decisions that the stakeholders make. Traditional PMs
add a lot of stress to themselves when they try to be a wall between the
stakeholders and the project, when they should actually be a gate.
Managers must allow the team to make a commitment to do what they say,
and hold them accountable
One can see why the term project manager is not often applied to agile
teams, and the word agile coach is used. “Manager” connotes a controlling
force on the team, but agile coach connotes someone who focuses on the
agile techniques, and does not have control for all aspects of the project. An
APM is a servant leader of the team, a “first among equals” as Len Lagestee
(2014) puts it, rather than a manager of people treated as mere “human
resources.”
The term project coordinator could also be used for an APM, but in the
project management world, a project coordinator is usually an administrative
person: a doer of checklists, without needing the skills for managing people,
scope, budgets, etc. It is a lower level of responsibility than a project
manager, who is responsible for success in all ten PMI Knowledge areas.
Example a Change request (Cr) is suggested by Bob, a business SMe, but
the schedule will be impacted by 15 days if it is implemented. With the
schedule in mind, the traditional pM may say, “no, that’s too long. We cannot
afford the time to add that.” It could become an argument between the SMe
and the pM, and eventually it gets escalated to the sponsor. regardless of how
the Cr was resolved, the disagreement can lead to bad feelings that taint the
relationship between the SMe and pM from that point forward.
255
a better approach would be to assume that the business SMe knows more
about the business than the pM, and the business would be better off with the
change. the pM brings the Cr to the stakeholders and asks if they want the
change. the pM takes himself or herself out of the mix, and it then becomes
the SMe’s job to convince the stakeholders that the Cr is needed and the
delay is justified.
If the Cr is approved, all stakeholders will be aware of, and have approved,
the 15 day delay—which will also prevent stakeholder complaints later. the
change can now go into the product backlog to be scheduled during an
iteration.
If the Cr is not approved, the pM will still have good relations with the SMe.
It may also improve the trust between the pM and the other stakeholders
because they will understand that changes will not be “sneaked”
Some agilists would say that agile teams have no need for a project manager,
thinking of the traditional kind of project manager, and the use of self-
empowered teams. However, at the same time, most would agree that the
team, empowered as it may be, still needs someone to coordinate the efforts
and act as a liaison to upper management and the stakeholders. 1 If the team
does not have a liaison, management will pick someone, because they don’t
want to meet with a different person each time they want to know what is
going on in the project, nor do they want a gang of technical members
reporting to them when one person will do.
11. The best architectures, requirements, and designs emerge from self-
organizing teams.
The micromanager has lost his or her group of experts who can do the job;
the team has become one person trying to build a product through remote
hands. Team buy-in and shared problem solving will be missing, morale will
fall, and the PM will create a failing agile project.
256
or they will have some temporary “free time” and will volunteer to take a
“stretch assignment” card. Stretch assignments help train the team, and the
person will feel more likely to take the card because he or she knows there is
a pairing safety net.
An APM will guide and coordinate, and the team will grow to make the
commitment to build a
successful product. In some cases, that means the APM must be hands off
enough to allow a team member, or perhaps the iteration, to fail. Failing is an
investment in better teamwork and strength of the team later, a result of the
agile mantra to “Fail first and fail fast.” An empowered team needs to know
that they are building the product, and not merely taking orders.
Too often the business people defining the product think they know how to
build it. They do have the right to make changes in scope, cost, schedule,
quality, and the other six project attributes, but they have also agreed (in the
business team kickoff meeting) to use the product development process,
which includes Change Management procedures; so the APM pushes them
back into that process. (You, as APM, got their agreement to follow the
Change Management process in the initial meetings, didn’t you?)
The APM acts like a “flak jacket” to protect the agile team from
interruptions, distractions, political fallout, and overly-eager business folk
who wish to use them as their “personal programmers.” More than once I had
to gently escort a business SME from the desk of a developer because the
SME was suggesting unofficial changes directly to the programmer.
Most team members think their duty is never tell a stakeholder “No” because
“the customer is always right.” They may think (perhaps rightly) that there is
a political or career-affecting correlation of saying No to stakeholders or
higher level managers. The technical term is CLM: career-limiting move.
I have had success by guiding team members from “Don’t say ‘No’” to saying
“We will need to work
it into the schedule. Talk to the APM.” It is the APM’s duty to smooth out
those “quick and free” changes that are rarely quick, and never free. To be
able to ride shotgun on the team and push back on a high-level manager is
tough to do, and is described in XP as managerial courage, a required trait
of any project manager.
Chicago State University (2014) defines it as: Tactfully dispenses direct and
actionable feedback; is open and direct with others without being
intimidating; deals head-on with people problems and prickly situations.
and technical team will not surprise them. Unless it is the unexpected
paycheck, no one likes surprises.
Although the stakeholders may not like learning that the project will be late,
they will accept it much more readily that learning about it so late that it
cannot be corrected. As one PM said, “Lying to the stakeholders never ends
well.”
257
Agile is famous for its 3x5 or 4x6 cards-on-the-wall system of tracking tasks
within an iteration: the agile taskboard. Tasks are written onto cards and put
in a large visible space marked with columns, and moved from column to
column as the card is completed. Cards start in an Iteration backlog column,
move through other steps of the process, and are eventually moved to the
Done column. Team members assign themselves to a card, and a card’s
owner may change as it moves.
team for which I suggested it; other methods met with mixed acceptance
depending on the team. There are a few distinctions between the typical agile
taskboard dynamics and the Kanban task board.
The Kanban board is similar to other agile taskboard techniques. The Kanban
board contains various columns that represent phases of the team’s
development process, an “assembly line” for working the cards. The actual
columns can be as simple as ToDo, Doing, and Done; or more complicated,
like Analysis, Construction, Testing, Review, and Done. There is always a
Done column.
The Kanban board is a pull system, which means that a card cannot be
pushed onto the board until there is an opening for it; in other words, when
the card progresses to the next column, and someone is ready, another card is
“pulled” onto the board; or someone takes a card in one column into the next
to start working on it. In most cases, a person may finish their part of the card
and move it to another column, and someone else will take over for that
phase of the user story. This is common practice when skillsets are
distributed across the team; that is, the team has an analyst, developer, tester,
and APM role. If the team is made of generalists, then roles and cards switch
around as they wish.
Work-in-Progress Limits
The point of a Kanban board is to track the work being done, but also to
minimize the Work in Progress (WiP). Only one card per person should be
on the board, and there is a limit, the WiP limit, as to how many story points
can be in any column at a time. The WiP limit helps ensure that the “assembly
line” does not get bloated by too many cards not being worked, which
quickly identifies bottlenecks by a bunch of cards sitting in a particular
column, waiting to move to the next column. When that symptom appears, the
team knows to take a look at what might be bottlenecking the card flow. The
team can react quicker to take corrective action.
(This in no way negates the need to have a team retrospective every one-to-
three iterations. The retrospective is used for changing the team process; the
WiP limit bottleneck is a symptom of a product problem that can often be
resolved by other team members pitching in to remove the load in the
overloaded column.)
It is easy to see the visual difference between a Kanban board and other
taskboards because Kanban boards look much sparser. Kanban boards will
only have as many cards in progress as there are team members. Other agile
task boards will have columns loaded with partially-completed cards. Agile
processes use iterations for scope and risk control: changes can occur more
frequently between iterations. With Kanban, changes are even more granular:
changes can occur between cards.
No Iterations!
258
iterations are recommended to keep the cadence of the team, and the user
demos, on schedule. An iteration backlog is made so that the team will
commit to that much scope, and they work on their build a card (or two) at a
time. Team velocity is calculated at the end of an arbitrary (two-to-four
week) pseudo-iteration instead of calculating it on some other time scale.
See the “Kanban Process Summary” section later in this chapter, and David
Anderson’s (2010) excellent book on Kanban.
What happens if a new task is found during the iteration? What if a developer
wants to upsize an existing card? As with any agile sizing, the commitment
has been stated at the beginning of the iteration that N
number of points will be delivered. If the size of the iteration must rise for
one card, then another card of equal or lesser size must be removed. Place
the card into the product backlog for the next iteration. It should be the first
card moved into the iteration backlog at the next iteration.
The open-source (usually no-cost) online Kanban boards keep track of the
story points within each
Individuals, or Groups
Team Velocities
First rule of agile story points (or any agile sizing metric): Do not use story
points to compare against other project teams. Second rule of agile story
points: Do not use story points to compare against other project teams. The
same goes for team velocity, which is based on agile sizing. Agile sizing is
subjective and relative.
If one team has a velocity of 23.2 points over five iterations and another team
has a velocity of 14.7
points over five iterations, which is the more productive team? You can’t
tell! Remember the first and second rules of agile sizing.
259
Individual Velocities
Some teams may have a member perceived by the rest of the team as not
doing as much work as they should toward the team effort. Let’s use the
technical term free rider, or slacker. There is a powerful motivation to start
tracking individual velocities so that it becomes evident there is a slacker on
the team. Don’t do it.
The cards are not individual assignments, and are moved from owner to
owner. The card completion
cohesion. Also, it is not necessary. The team knows who the slacker is, and
peer pressure works wonders against slackers. If the slacker is the rare case
where even peer pressure does not work, then more formal measures need to
be taken.
Anecdote We had a team member who constantly came in late to our daily
meetings. the team started a “late jar:” anyone later than two minutes to the
meeting had to put $1 in the jar. all agreed (it passed by peer pressure). of
course, one member was almost always putting a dollar in the jar, but was
late to meetings much less often. at the end of the project, we had a team
party with the money, and the team members ironically thanked the slacker
for the party.
I purchased a bright orange sports horn, one of those very loud pressure
klaxons meant for drowning out crowd noises in large stadiums. at the next
meeting, I apologized to the team members. I said I was sorry for interrupting
people, which means that I didn’t understand their point entirely since they
didn’t get to finish it.
as a result, I would misunderstand what they were trying to say. I told them
that I was sorry for being rude and discourteous and non-professional. I told
them that the next time I did that (and I pulled out the sports horn),
one of the team members asked me to demonstrate it. I pushed the button for
half a second, the least amount of time I could. It blew so loudly that the
person not paying attention (typical) jerked and literally fell out of his seat
onto the floor. a co-worker from outside the room, and a manager in the
hallway, came in to see what was up. In the following 18 months, the horn
was never needed once. It was the best $12 I ever spent on a project!
Group Velocities
Wouldn’t it be nice to see how many points the testers are completing, and
how many points the developers are completing, or the analysts? No, it is not
useful, and can be counter-productive. The same reason for not comparing
team velocities between project teams applies here, especially if the testers
are a separate team or an isolated or outsourced subgroup of the team. An
agile team is a holistic team working together on a common goal, and that
powerful but fragile concept can be shattered by focusing on those things that
splinter the team.
260
Project managers and upper management who like to use Earned Value
Management (EVM) can easily get EVM metrics from the agile reports.
EVM’s power comes from comparing the metrics of scope, cost, and
schedule using a common term, that of money. EVM uses Planned Value,
Earned Value, Actual Cost, Cost Variance, Schedule Variance, Schedule
Performance Index, and Cost Performance Index. These metrics compare
actual versus planned status at a particular time in the project. Most of the
EVM metrics show up visually on the burn-up chart and make EVM easier
than for traditional projects.
Here is how one may convert the agile metrics to the EVM metrics. (All
definitions in italics are from the PMI’s fifth edition Project Management
Body of Knowledge (PMBOK, 2013).
Planned Value (PV) is the authorized budget assigned to scheduled work;
in other words, the amount of money to be spent on the project. This is no
different for agile projects. For agile, we can break down the planned value
into an average budget per iteration. Planned value shows up as story points
per release (or iteration) on the burn-up chart.
PV = $250K.
The scope of projects is not known in detail at the beginning of the project,
but EV is clear for an iteration. For budgets allocated quarterly, and
assuming a cost spend per iteration, EV can be read as the number of
iterations completed to the total number of iterations planned.
done equal to PV/2 = $250K. The EV will be what work was actually done.
If the
entire project was 1,000 story points, then halfway in, we should have 500
story
points completed. However, if the team only completed 400 points, then
EV = 400/500 = 80% of the expected $250K planned, or EV = $200K.
Actual Cost (AC) is the realized cost incurred for the work performed on
an activity during a specific time period; in other words, what was spent so
far. Actual cost does not show up on the burn-up chart, but it is easy to make
a similar chart showing actual money accumulated per release.
Example: Let’s say for our example project that we actually spent $180K
halfway
Example: If we had spent $250K halfway through the project, we would have
no cost variance, and been on budget. However, we measured our actual cost
of
or CV = $70K under budget. We spent $70K less than expected for the work
completed.
261
Example: If we had completed half the work halfway through the project, we
work for each dollar planned. The team is running at 111% efficiency over
plan in
terms of cost.
Schedule Performance Index (SPI), is a measure of schedule efficiency
expressed as the ratio of earned value to planned value; in other words SPI
= EV/PV. This is the team efficiency, which corresponds to the team velocity,
in terms of dollars. If we got one dollar’s worth of progress for each dollar
spent on that progress, then we would have a SPI = EV/PV = 1.00. The SPI
shows as the slope of the work done on the burn-up chart, and is the same as
team velocity expressed in money.
but only earned 400 points for an earned value EV = $200K. Therefore, we
have
for the money. We are running at 80% efficiency in terms of schedule, which
Team velocity is scope completed per iteration, so for halfway through the
iterations. We can forecast that to complete 100 more points would take
Figure 12-1 shows how the EVM components relate to each other. The PV is
the budget, and extends to the end of the project, shown here as October 1.
The EV and AC are reported at a particular point in time. For agile, that
would be each iteration. The CV and SV are reflected by the difference
between the two curves at reporting time: SV = PV – EV and CV = EV – AC,
respectively. The slopes of the curve reflect the CPI and SPI, respectively.
262
Chapter 12 ■ projeCt ManageMent thread
Figure 12-2 shows how to read the EVM values from the burn-up chart.
263
• Planned Value shows the planned number of story points for the iteration.
In this
case, 30 points were planned, but the team accepted an additional 8 points of
work
completed, but the team rallied and completed 36 points, short of the
commitment.
At the next iteration planning meeting, the team cannot commit (or accept)
more
than 36 points.
• Schedule Planning Index (SPI) is the average story points per day
completed for the
iteration. Technically, SPI cannot be positive before actual points are done,
but this
SPI line reflects an average trend across the entire iteration. SPI is more
useful when
blending many iteration burn-up charts into a single project burn-up chart.
How are these metrics helpful? First, they allow the traditional or agile
project manager to monitor the progress of the project in terms of cost and
schedule. If the project seems to be trending away from its baselines,
corrective action is needed. The sooner the PM knows to take corrective
action, the smaller the action necessary—and the quicker it will come back
in line. In extreme cases, the project may need to be stopped to prevent good
money being spent on a bad investment.
If a project is running at 80% schedule efficiency (SPI =0.8), then it will take
20% longer to complete. Is the sponsor still happy with continuing the
project if it won’t get competed for 3 iterations (6 weeks) longer than
originally planned, assuming the rate continues as it is? At the rate of
spending, the cost efficiency CPI = 1.11 means that they will need 20% -
11% = 9% more money to extend the project, assuming the spend rate
continues as it has. Is the sponsor willing to wait 6 more weeks and spend
and extra $45K for the project?
It is better to know the answer to that question now, at reporting time, than
after the project has already consumed the time and money. Preparing the
sponsor as early as possible is best for the APM-sponsor relationship. It is
better to know three months ahead that the project is going to be late, than
three weeks ahead. The sooner project variance is known, the sooner the
project can be brought back on track with less disruption.
The full scope is not known at the beginning of a project. How can EV be
calculated? Here are the
• Planned Value: The planned value metric is the same for all projects, agile
or not.
It is the project budget. Many companies are now allocating funds each
quarter so
management can maintain better control over projects. This fits in well with
agile,
• Actual Cost: Normally, the actual cost metric is the same for all projects,
agile or
not. Sometimes the cost of the project team comes into play for team
members
can be calculated to the team for each iteration. That means the cost can
change
for different iterations, but cost changes over time for traditional projects
too. For
extrapolating future cost, agile and traditional projects are the same. Agile
products,
unlike traditional products, may accumulate revenue during the project that
offsets
264
• Earned Value: Agile projects count scope in terms of story points, ideal
days, ideal
when the budget is defined (for the full or partial budget), the scope is no
more
accurate for agile projects than traditional ones, but agile project teams
waste no
time calculating it. The trend rates and performance indices (CPI, SPI) are
even
more important for measuring progress, and ultimately, ROI before the
project is
completed (see Figure 12-2).
traditional projects, usually every month. Cost variance is the same for all
projects,
debt, organization obligations, etc.) that push into future iterations may
eventually
cause the project to add another iteration. If the feature catalog is estimated
in broad-
strokes (say, T-shirt sizes), and the team’s velocity is measured, then the
number of
(20%), for the next unknown number of iterations. The average team velocity
is
20 points per iteration, as measured over the last three iterations. That means
the
project will take another 400/20 = 20 iterations to complete at the current
rate. This
estimate is based on the first 6 weeks into the project with a 20% confidence
rate,
which is better than most traditional projects experience. (I have found that
feature
benefit is that the team velocity tends to improve with time, so it is possible
that
• Cost Performance Index: The rate at which projects spend money is not
affected by
accumulate revenue during the project that offsets some or all of the cost.
slightly higher for projects that use daily meetings. Reporting commitment
every day
puts a psychological focus on the team members to get work done every day,
and the
productivity rate is higher; see Chapter 10 . Figure 12-2 shows the iteration-
average team velocity, which would be the SPI for the iteration, but SPI
would be more
This section describes the work of the team within the iteration process flow
from a detailed perspective of the agile project manager (APM). The
iteration starts with the APM’s role in the iteration planning meeting.
The box numbers in each heading refers to the boxes in Figures 8-1 and 8-2.
There is no specific APM
swimlane in the process flow (Figures 8-1 and 8-2) because the APM is
more of a team facilitator and data tracker, and therefore is included in the
Technical Team swimlane.
During the iteration, the APM ensures that the overall project schedule is not
broken (scope creep) and tracks the team capacity, measured in units of
scope completed per iteration. This metric is called team velocity, and helps
the team set a limit of how many points they can commit to for the current
iteration.
Team velocity is a rolling average over typically five iterations and helps the
APM predict when the product backlog will be finished.
265
estimate the amount of work to which they will commit for the iteration. The
team members provide size estimates in some scope metric for each use
case. If the use case catalog is sufficiently well along, the BA can walk the
team through various detailed use cases and functionality.
At the initial iteration planning meeting (preferably during iteration 0), the
APM must resolve with the team two things: what scope metric the team will
use, and which tracking mechanism the team will use. It is not a definite and
final decision because if it doesn’t work out, the team can change their mind
in a team retrospective after giving it a try, say, at the end of the third
iteration. With that caveat said, an inexperienced team often will take my
suggestion on how to start. I suggest story points for size estimating, and an
online Kanban board for task tracking.
Normally, the APM announces the latest team velocity so that the team does
not commit to more than they have accomplished in the past. Until three
iterations are completed, the team has no experiential basis for team velocity,
so the team must estimate as best they can on how much work they can get
done within the iteration. As each iteration is completed, the team will have
a better idea for each successive estimate. It is similar to Newton’s method
for calculating the square root: take a guess, check the result, and refine the
guess.
The team leaves the meeting with a list of use cases (or user stories), their
estimated size, the order in which they will be worked on, and a team
commitment to have them all completed by the end of the iteration.
Variant In some teams, instead of a single estimate for a user story, the
team will fill out two cards for the same story. the developers record one
size for coding and unit testing on one card, and the testers record a second
size for testing. these two cards reflect the concurrency between the testers
and the developers.
For example, if the developers think a use case is of size 5 story points, and
the testers think it has testing effort of 2 story points, then the use case is
considered to have a 7 story point scope. the sum of these two estimates often
will not indicate Fibonacci numbers, but that is not important. this “shadow
card” approach helps reduce the risk of increasing the story points on a card
when the testers start to test it. Under the normal situation, the developer and
testers would probably have estimated the single code-plus-test use case to
have a scope of 8
The APM does not need to attend the analysis and design meetings, but needs
to be aware that they have been completed, and are on track. This result of
this meeting should be announced in one of the daily meetings. The APM
works with the team to start and maintain the Requirements Traceability
Matric (RTM).
266
The APM should be involved in the meeting in which the testers show the
defect list to the developers.
If a significant Change Request (CR) arises from that meeting, the APM (or
BA) needs to take the CR and the impact analysis back to the stakeholders for
approval. If the CR is approved, then the APM must schedule it with the
stakeholders into the backlog based on the stakeholders’ priority; or in urgent
situations, into the current iteration to replace one or more lower priority
cards in the current commitment.
In addition to defect repairs of any variety, a few CRs may be triggered, and
all need estimates on how long they will take. Some impacts can be
estimated in the meeting, but others require a developer to analyze and will
take longer. The APM may also be involved, depending on the impact of the
change. It could be something that can be worked into the schedule with
relatively little effort (e.g., a use case that has not yet been started) or may
require much effort (e.g., the code, tests, and requirements must be changed,
resulting in significant schedule delay).
After the meeting, the team adds any tasks that need to be done as a result to
the iteration backlog. The RTM is updated now if it was not updated earlier.
See also Chapter 8.
After all the committed use cases are done (or the iteration is out of time), the
APM holds a meeting to evaluate the Build. Although this meeting sounds
like a formality, many times what didn’t want to be said before will, and
must, be said now. The APM asks each team member in turn: “Do you
approve this Build?”
Each team member then responds “Yes” or “No” (and states the reason).
If the team agrees, when asked one by one, that there is nothing left to do on
the latest use case—coding and testing are done, and all defects are repaired
—the Build is ready for the user demo.
If anyone has a reason that it should not go to demo, then that part must be
repaired as soon as possible.
The APM often asks the question at this point, “Why is this issue coming up
now?” The Build Approval meeting should have no surprises. If the Build
needs some work—changes not yet in place, tests missing, defect not yet
repaired, or some other standard not met—the needed work is identified and
the whole team contributes to it.5
Sometimes when the iteration is close to ending, the APM may hold a Build
Approval meeting to close out loose ends. Any new work will be stopped
and defects will be repaired, so that the user demo works at production
quality, even if it has less-than-expected scope.
267
The iteration reports are built from the cards the team members completed
throughout the iteration. There is no special work the team needs to do other
than provide their pertinent data.
There are many reports that can make project progress and status visible to
those outside the team and inside the team. Team members need to see
different things than upper management, but they also need to see what upper
management sees.
The reports produced depend much on what upper management wants, and on
what the APM uses
to monitor the project. I have found the following reports valuable for end-
of-iteration reporting; each is discussed in its section following.
1.
Iteration burn-up chart showing the rate at which scope was completed
through
the iteration.
2.
Project burn-up chart showing the rate at which scope was implemented
throughout the project so far. It can be compared against the project schedule,
and milestones of the project synopsis (or charter). For fixed-term projects,
my
burn-up chart also shows the ceiling constraint that limits the product in some
3.
Defect trend chart, which is a line chart of the number of defects mapped
against
the days of the iteration. During the iteration, defects are found and repaired,
so
the line decreases from the defects at the start of the iteration to the number at
the end of the iteration. A rising defect chart indicates a project in trouble.
4.
QA report, which is a stoplight report showing each metric of scope, cost,
time, and quality. Each metric is given a red/yellow/green icon6 to visually
show quickly and easily the quantitative variance of each metric. It also
shows the variance trend. If
EVM is desired for project status, the QA report can contain the key EVM
indicators.
5.
Updated RTM so that the business can see what features and use cases have
been
completed so far and compare with what they requested. The RTM contains
traceability from a feature, with which they are familiar, to use cases to test
cases
and test results. The RTM also shows outstanding defects and approved CRs.
Sometimes I use a separate Change Request log with the people who
requested
the change, and when a CR was approved. (Some people have short
memories.)
The updated RTM, and keystones of iteration and progress, showing all
features, associated use cases, associated test cases, associated code, and
dates of passed tests, are used for internal tracking with the team, but also
show the stakeholders a detailed progress list of user stories or features
requested and completed.
The iteration progress can be seen at a glance by a line graph showing the
scope completed over time of the iteration to date. Scope units are usually
measured in story points, but can also be ideal hours or some other metric.
Time units are usually in days of the iteration, including weekends. The curve
rises toward the expected value-to-be-completed by the end of the iteration.
The average slope of the line indicates the average team velocity for the
iteration at the reporting date. Extrapolating the average slope, the trend line
indicates whether the current team velocity will complete the iteration on
time. Most spreadsheets have a graphing feature that produces all these
metrics at the press of a button.
6Some stoplight reports use blue to indicate that the metric exceeded
expectations by the standard amount, usually 10-20%. I like to show the blue
status indicator if the organization does not prohibit it; the military usually
requires it.
268
Figure 12-3 shows a burn-up chart from a real project. Note the following:
• The planned scope increased during the duration,7 perhaps due to many
reasons: a better idea and estimate of the use case; urgent CRs; or re-
estimating after seeing
how much work a use case truly is. By Iteration 11, the team was better at
estimating
use cases. In this case, the team was getting a lot done fast, so it could take
on the
increased scope.
• The actual scope is flat for the first several days, which is typical when an
iteration gets
started. The developers and testers are working on their first use case for the
iteration.
schedules. Therefore, the two flat points on the Actual curve (6/15-16/2013
and 6/21-
• The stakeholders can see at a glance that the Actual work rose quickly to
the Planned
work, even when the Planned scope increased. Our team placed this chart on
the
website so that anyone with project access could see it. The Kanban board
we used
See the “Building a Burn-up Chart” section later in this chapter to see how
card sizes and other statistics are updated into this chart, which takes less
than five minutes each day.
7Iteration scope should not increase. This is such a key idea that SCRUM
locks the iteration backlog so no changes are allowed. Other methods allow
only replacement cards of lesser or equal scope.
269
Some people prefer to use burn-down charts. The same information is used,
but instead of starting at 0 size and accumulating upward, the graph starts at
the committed iteration scope and decreases as scope is completed.
Choosing a burn-up or a burn-down chart is based on personal preference
and what the stakeholders prefer to see.
Each iteration’s burn-up chart is combined into a single chart reflecting the
progress made during the release, and shows progress against plan for the
entire project. This level of breadth is usually the view the stakeholders
would like to see, since they think in terms of project duration more than the
day-to-day iteration progress. Figure 12-4 shows a product burn-up chart,
with each time increment being two weeks, or one iteration.
For fixed-term projects, where the scope is pre-defined and cannot change, I
add a horizontal black line across the top of the burn-up chart at the value of
the project’s fixed scope. The burn-up progress cannot go above that fixed
black line, or our contract is in jeopardy. The trend line is important to show
whether the team’s progress is on track to reach that black line in time. In the
best of cases, the trend line will intercept the scope ceiling right on the last
day of the project, or for a little margin, during the last week of the project.
270
Chapter 12 ■ projeCt ManageMent thread
■ Note the actual curve mirrors the planned curve but is always below it, for
the following two reasons.
• this team went through three iterations of training at the start of the project,
then
• detailed requirements were not collected until the iteration started. a team
iteration ahead so the team can start implementing when the iteration starts.
Both remedies were discussed in (and contribute to) Chapter 3 and Chapter
9.
Figure 12-5 shows a sample defect report for the same project and iteration
as Figure 12-2. Compare this chart with the data table below it (Table 12-1).
The iteration started off with 21 defects, and 14 were repaired during the
iteration, but 7 were added. The trend line shows that the average defect
repair rate was 1.00 per day. However, with 7 more defects added, the
product is only reducing the defect rate by 7 per iteration, or at a rate of .50
defects per day. Even with no more use cases being developed, it would take
another week to clear all the defects. That load must be factored into the next
iteration planning meeting.
271
DATE
Total Defects
Found
Closed
prior
21
6/13/13
21
6/14/13
22
6/15/13
22
6/16/13
22
6/17/13
22
6/18/13
19
6/19/13
16
3
6/20/13
18
6/21/13
18
6/22/13
17
6/23/13
17
6/24/13
13
6/25/13
14
6/26/13
14
Repair Rate
1.00
14
0.50
14
In the burn-up chart, I like to use zeroes to indicate places where no cards
were completed, and no scope was added. For the defect trends, however, I
prefer to use space because this data table is sparser, and the defects found
and defects repaired are easier to see.
The QA Report doesn’t say a lot that the burn-up and defect charts don’t say,
but they summarize it in bright colors to catch the attention of a manager
scanning over dozens of report statuses. A sample QA report with
explanatory metrics is shown in Table 12-4. A summary of how those metrics
are calculated follow. Each metric has a place to identify risk to the project
from that metric’s result, and perhaps a mitigation strategy.
272
• Scope: The number of story points implemented, and not implemented, with
any
scope changes recorded. The team velocity for the canonical five-iteration
rolling
average is given.
honored. However, it is possible that the iterations are not doing as much
work as
was expected up front, so the red or yellow indicator for the schedule metric
means
more iterations may need to be inserted in the Release Plan than originally
planned.
project, cost metric shows expected amount spent vs. actual amount spent, the
cost’s
percent variance.
• Quality: The measure of defects found and repaired during the iteration.
The defect
repair rate is the ratio of repaired defects to known defects. However, as
more defects
are found, the found defects are added to the known defects, which reduces
the net
defect rate.
It strengthens the relationship and trust between the business team and the
technical team. The APM reviews with the stakeholders the state of the
project. The demo itself can be presented by anyone on the team.
The user demo unveils the work of the last iteration. The stakeholders find
out if they got what they wanted. The APM owns the status reporting part of
the meeting, but the entire team should be at the meeting. It is one of the few
times the team gets to meet with the stakeholders. The developers want to
show off their work, the analyst wants to make sure he or she did a good job
in getting to what the user needs (not necessarily said), and the testers are on
hand to discuss defects that might be found when the stakeholders run a few
exploratory tests.
Each team member works on something to prepare for the user demo. The
developers repair the last few defects and regression tests; the testers collect
their test statistics for the QA report and build a defect repair report; the
APM updates the burn-down charts. Drafts of these reports are taken to the
user demo and presented with the current Build.
The user demo attendees should include others beside the business SMEs and
the team. Invite people who must use it in the field: the help desk staff,
maintenance programmers, staff and line managers, and possibly, even the
public. They may not always come, but they should be invited each time. I am
surprised sometimes at the number of people who show up out of curiosity
about the product. Word-of-mouth from the user demos is good internal
marketing and rains kudos on the sponsor, which is always good for her or
his political capital, and eventually for the team.
273
If the iteration commitment was not achieved, the APM must be ready to
discuss the shortfall with the stakeholders at the demo. He or she must
explain why the shortfall occurred, which can be as simple as poor
estimates. It could also be caused by pre-emptive tasks from the stakeholders
(visible on the burn-up chart), or a technical blockage. The answer the APM
needs to take into the demo is how the team (or stakeholder) is going to
prevent another shortfall.
The facilitator keeps the meeting on track, ensures that time is managed
properly, and ensures that changes and defects are recorded. The APM
presents the progress reports quickly and discusses any issues that the
stakeholders need to know. A developer often facilitates for the demo portion
of the meeting, while the BA takes minutes, recording defects and proposed
changes.
Most of the development issues are resolved within the iteration, so the user
demo meeting is a good chance to talk about how successful the team was in
overcoming obstacles. I prefer to show the demo last so that we can be sure
of covering progress and issues first.
Warning there is one danger with having the whole team there. It is easy
for back-channels to get set up so that stakeholders start calling team
members to ask questions, suggest changes, and generally by-pass the analyst
or apM, the proper liaisons. these unofficial channels need to be stopped
because the whole team is no longer aware of what is happening. If the
stakeholders are making an end-run around the apM or analyst because they
are dissatisfied, the apM has a serious problem and needs to resolve that as
soon as possible.
274
Chapter 12 ■ projeCt ManageMent thread
What should the team do if not everything is according to plan? Here are a
few problems you may encounter, and suggestions on what to try.
However, skipping a demo means that the feedback the team expected will
not
be given, so there is a risk that the product will need to be reworked after
more
that the team is two weeks late in the mind of management (read: sponsor),
who
is still watching out for the bottom line and their ROI.
that the demo can be given anyway, the stakeholders will need to know that
the
demo will not be as full as expected, and why that is the case. No one likes
surprises,
especially stakeholders! Either way, the APM talks with the stakeholders and
explains
the state of the demo. Usually they are satisfied to see a partial demo, or
postpone it,
promised to the business, then the APM must be ready to explain why there is
nothing to show. Was there a major obstacle? Is there too little difference
between
the last demo and this one to warrant the time to gather the stakeholders? The
team
will need to have a recovery plan, and it is probably a good idea for the
APM to
cannot make the meeting, schedule a special meeting for him or her. It is
critical that
the sponsor stay in the loop. As said before, out of sight, out of mind, out of
budget.
If the sponsor cannot attend, check if there is some reason that the sponsor
cannot be—or doesn’t want to be—at the meeting. If he or she (or any key
stakeholder) is trying to disassociate from the project, you and the project
may be
in jeopardy. Perhaps the user demo needs to be shorter, making it easier for
the
If the project is not going well, you may find that the sponsor doesn’t show
up, or many stakeholders do not show up to even routine meetings. Be
sensitive to the reactions and interests of the stakeholders. If people are
disappearing from the project, the project may be in jeopardy of being
cancelled—the APM is usually the last to know.
Periodically, usually after each iteration, the APM steps back and views the
Build and Product Backlog as a whole. Do the features completed match the
Release Plan and expected items in the RTM? How much is completed out of
what was promised? Box 17 is similar to Box 16 except that all items in the
product backlog are considered instead of only the last iteration’s set.
275
The Release will contain all the deliverables that each demo has, but it
contains them for the
The Release process requires scheduling and coordination with groups after
the product moves
into operations, the people who must use it in the field: the help desk staff,
operations and maintenance programmers, staff and line managers, and
possibly, the public.
It is normally not the responsibility of the APM, or anyone on the agile team,
to facilitate the Release into production, perform training, or deal with the
public. The team must produce a Build that is ready to be easily integrated
and tested in the production environment, but the organizational aspects are
left to staff and line managers.
Help desk personnel need to repair and answer questions from the many new
users for the product.
They will rely on the user manual but the APM may coordinate special
training with the help desk manager for those personnel. After all, the team
made the bed that the help desk must sleep in.
PMI Parallels
All the PMI parallels of Chapter 8 are still true, but the following highlights
some specifics for the APM role: Scope: The APM manages the work and
project constraints as a traditional PM would do, especially during Region 2
activities, but it is easier when the work is broken down into somewhat-
independent iterations of scope, cost, quality, and time.
Time: The work is timeboxed, so the APM facilitates to ensure that the
defined and committed work starts on time, proceeds smoothly, and ends on
time. During Region 1 activities, the APM uses agile-specific practices and
artifacts not found in traditional project management. The APM repeats this
process with the team iteration after iteration.
Human Resources: The APM must usually negotiate harder to work an agile
team, which works best as a projectized team within the corporate
organization. There are strong conflicts of interest when agile teams work in
functional or weak matrix organizations. The APM must fight off multi-
tasking (resource-splitting) by the resource manager, which makes
coordinating an agile team more challenging. The APM must
keep the agile team members empowered, and working closely as a value-
driven team. It requires strong interpersonal communications skills and a
collaborative leadership style.
Risk : The APM must still maintain risk triggers and responses, but is helped
by the fact that risks will remain within a small iteration-sized window.
Except at the very beginning of the project (Region 2), working agile
iterations is like doing a series of small projects within the economies of
scale of a program.
Conclusions
The APM needs to work differently with the business and the team than a
traditional PM. The business and agile team work best as a business
partnership, and the APM is the liaison to that partnership. Although the
business analyst will work closely with the business SMEs for technical
details of the product, the APM
must keep the political aspects on track, and manage the expectations of all
the stakeholders. The product burn-up chart and QA report show project
progress to the stakeholders. For more financially focused organizations, the
APM can augment the iteration reports with EVM aspects easily.
The APM holds a strong coordinating role for the team as a coach and agile
mentor. He or she must
The APM coordinates the activities during the iteration, and has no specific
role swimlane shown on the iteration process flow of Figure 8-1 and 8-2.
The PMI parallels between a traditional PM and the APM reflect the key
differences between agile work done during an iteration.
Additional Tools
Table 12-2 is a summary of the tasks of the APM, derived from the CORA
matrix of Chapter 7.
Table 12-2. Summary of the Agile Project Manager Role, CORA Matrix for
<ROLE> (Brackets Indicate That the BA Contributes or Reviews the
Artifact.)
BOX # INPUT
PROCESS
OUTPUT
meeting.
[2]
implementability.
[4]
Approved UX artifact,
suggestions, design
design.
[9]
Development Build
Test Build
purposes.
[13]
needing repair
14
checklists, RTM
(quality gate).
15
RTM
reports.
burnup reports
16
demo meeting.
[17]
Stage or Release Build
staging or release
members
277
The following Kanban process summary was used on several project teams.
However, each is modified
slightly by the team and culture for the project, so this is only a
representative sampling of the work done during a Kanban iteration. See
Anderson (2010) for a fuller description.
Starting with the prioritized capability list from stakeholder capabilities, and
assuming the system architecture is defined, each iteration is tracked on the
online Kanban board.
Release Plan
Before any iterations get started (Iteration 0), the APM identifies the full
expected functionality (features)8
for the product with the stakeholders. The BA extracts the use cases for each
feature with the stakeholders (progressive elaboration). All use cases are
listed by theme, roughly equivalent to one or two iterations.
• The APM places a set of use cases in the Kanban Backlog area, proposed
for one
iteration. The team estimates each use case card, in priority order, until they
reach
the total amount of work they can accomplish for that iteration. Each use case
card
yet. For relative sizing purposes, 5 can be arbitrarily set as the average size
of a use
• During the iteration, each team member selects what they want to work on,
and
moves their desired card from one column to the next in progress. Typical
actions are:
Developers from Analysis to Construction where coding and unit testing are
done
Testers from Analysis to Testing where test scripts and testing are done
•
Testers from Testing to Team Review where use case and Build approval are
done.
APM from Team Review to Done when the team says the use case is
complete.
APM from Done to archives when the iteration reports are completed.
Each person works on no more than two cards at a time—a primary, and a
backup in case their primary is stalled.
• Each day the team walks the Board from right (Done) to left (Backlog) to
move their
card toward completion. They tell the team the cards they moved yesterday,
the
cards they expect to move today, and if they have any blocking issues.
• The team holds reviews of Builds ready for user demo for approval. No
card is
allowed to move past the Team Review lane without the team’s approval.
Team
reviews are held on the following packages when the constituent artifacts are
completed:
Analysis package (per use case): Detailed use case, wireframe(s), optional
Test package (per use case): GUI and integration test scripts.
Build package: Code and unit testing completed, GUI and integration testing
The APM adds each point from cards that reach the Done column to the
Iteration burn-up chart. The burn-up chart visually shows actual progress
If the team needs more cards before the iteration is over, the APM can move
the next few cards from the feature catalog to the Backlog lane; otherwise, a
new set of cards are added to the Backlog each iteration.
Iteration Reports
The following reports are typical of agile iterations, but not specifically of
Kanban, and are discussed in more detail elsewhere.
on a line graph of time vs. story points. The time is usually the days of the
iteration,
and the curve rises toward the expected value-to-be-completed by the end of
the
iteration. Extrapolating the average slope indicates whether the current team
velocity
reflecting the progress made during the release, and shows progress vs. plan
for the
entire release.
• Quality report: Each metric of scope, cost, schedule, and quality are
reported, and
their trend from the previous iteration. Each metric is given a red, yellow,
green,
and added to the Build, the Build is considered ready for user demo, and
possible
MMR will be attained when the Build comprises enough business value,
offset by the
profitable.
279
• High priority items: If an urgent task comes to light, one that cannot wait
until the
end of the iteration, the APM marks it as high priority, the team sizes it, and
someone
agrees to take it. The current card of the person who took on the urgent card
is then
marked as Blocked until they can get back to it. The Blocked card is not put
into
the Backlog because it needs to stay visible so stakeholders to show that the
high
• Blockers: Cards that have stopped for some reason. Blockers can result
from a
• Defects and points: Defects are also cards but without points, which will
reflect the
lower team velocity due to incomplete scope. A use case is not completed
until is has
• Swarming: When an unblocked card is stopped for more than 2 days, then
the
assignee requires some help. The entire team drops what they are doing to
help the
assignee, and move the card out of its lane. Everyone drops what they are
doing to
get that card moving again, even if it is the APM going for coffee.
deferred from previous iterations are not considered CYOs because the (a)
defect
list is always re-evaluated at the beginning of each iteration, and (b) defects
have no
• New items: Sometime a use case or task is discovered during the iteration.
It is added
to the Backlog to be moved onto the task board when someone is available.
Defects
are added to the Backlog as they are found (unless the team defers them
during the
280
Date
Planned
Actual
Added
Done
Prior
30
6/13/13
30
0
0
6/14/13
30
6/15/13
30
6/16/13
30
6/17/13
33
3
8
6/18/13
33
11
6/19/13
33
15
6/20/13
33
20
6/21/13
36
26
3
6
6/22/13
36
26
6/23/13
36
26
6/24/13
38
31
6/25/13
38
36
0
5
6/26/13
38
36
36
36
Cyo
Duration
14
Vel
2.57
• The title line shows the goal of the iteration. The title is copied from the
main project
schedule in which each iteration has a goal listed. These titles may change,
but this is
(which should remain the same unless a scope change occurred), the Actual
scope
• Each row represents the days of the iteration. In this case, the iteration is
two weeks
• The poker planning meeting determined that the team could accomplish 30
story points, and during the iteration, another 8 points were added (see last
row).
Although the team completed 36 points during the iteration, more than they
had
planned, the scope increased so that the net result was 2 points left over for
the next
release. That overage is indicated by the CYO cell. The next iteration will
start with 2
story points planned, before the poker planning meeting adds more
commitment.
281
Chapter 12 ■ projeCt ManageMent thread
• Each day the APM counts the scope on the Done column of the board. It
takes only
a couple minutes to add the Done cards into the Done column, and if any new
scope was increased (there should be a card for it in the backlog). The graph
is
• The team velocity (the Vel cell) is the Done total divided by the duration, or
36/14 =
2.57 story points per day. At the next poker planning meeting, the APM
should not
let the team commit to more than 36 points, possibly even fewer because the
scope
increased by 8 points.
• Despite the late productivity starts, the trend line shown of actual work
completed in
Figure 12-6 shows the team will get all the work done by 6/26/13.
Table 12-4 shows a sample QA report for Iteration 11. See the explanatory
notes after the table. Table 12-5
282
Chapter 12 ■ projeCt ManageMent thread
Status
Risk
SCOPE: Implemented 36
creep
95% completed
than 100%.
points per day
SCHEDULE: On schedule!
No significant delays.
DURATION: 14 days
No variance
Cost is fixed.
No variance
defects.
repaired.
Notes:
of only the committed work. This helps focus estimates to foresee additional
work that
may be coming, and prevents the estimates from being low-balled. Although
the scope
• The quality variance is based on the defects known + found during the
iteration, for
similar reasons the scope metric takes into account increased during the
iteration.
Symbol
Meaning
Trend Meaning
Ý
Progress/compliance in this area is better
283
Chapter 12 ■ projeCt ManageMent thread
■ Note the variance percentages in tables 12-6 and 12-7 are sample
numbers. the actual percentage variants are decided by upper management
shortly after the business kick-off meeting. Some organizations have standard
variance percentages for their projects predefined.
Symbol
SCOPE Metric
Symbol
COST Metric
Symbol
SCHEDULE Metric
Symbol
QUALITY Metric
20% of schedule.
requests.
Iteration late by 40% or more, or
284
References
http://www.qsm.com/blog/2012/top-performing-projects-use-small-teams.
development-methodology.
http://searchsoa.techtarget.com/feature/Where-Agile-and-enterprise-
architecture-collide?
August 4, 2014.
http://carolla.com/wp-delph.htm. 1999.
285
■ RefeRences
http://smartsimplemarketing.com/get-the-facts-how-multitasking-is-hurting-
your-business.
pp187–190.
Cohn, M. User Stories, Epics, and Themes. Mountain Goat Software blog.
October 24, 2011.
http://www.mountaingoatsoftware.com/blog/stories-epics-and-themes.
Duong, L. “Applying the ‘80-20’ Rule with the Standish Group’s Statistics on
Software Usage.” Luu Duong’s Blog. March 4, 2009.
http://luuduong.com/blog/archive/2009/03/04/applying-the-quot8020-
rulequot-with-the-standish-groups-software-usage.aspx.
Feathers, M., Working Effectively with Legacy Code. Upper Saddle River
NJ: Prentice Hall Professional Technical Reference, Pearson Education,
2005.
http://msdn.microsoft.com/en-us/architecture/ff476940.aspx.
Gale, S.F. “Failure Rates Finally Drop.” PM Network, PMI, August, 2011.
http://www.testingexcellence.com/seven-principles-of-software-testing/.
ism95/cccsa.html.
Goldratt, E., Cox, J. The Goal, third edition. Productivity and Quality
Publishing, 2004.
286
■ RefeRences
svn/trunk/javaguide.html.
blogs.forrester.com/mike_gualtieri/11-10-12-agile_software_is_
a_cop_out_heres_whats_next.
Hall, Nicholas, John Hershey, Larry Kessler, R. Craig Stotts. “A Model for
Making Project Funding Decisions at the National Cancel Institute.”
Operations Research, v40, n6, 1992, pp1040–1052.
Hill, M. “They’re Called Microtests.” GeePawHill, May 29, 2009; July 10,
2014; Mike has a long list of qualifications that define a good automated unit
test; http://anarchycreek.com/2009/05/20/
theyre-called-microtests.
2002; http//www.martinfowler.com/articles/xp2002.html.
and-balsamiq.
Kano, N., Nobuhiku S., Fumio T., Shinichi T. “Attractive quality and must-be
quality.” Journal of the Japanese Society for Quality Control (in Japanese) 14
(2): 39–48. 1984.
287
■ RefeRences
November, 1995.
http://www.illustratedagile.com.
Madu, Christian, Chu-Hua Kei, Assumpta Madu. “Setting Priorities for the IT
Industry in Taiwan - A Delphi Study.” Long Range Planning, 1991, v24, n5,
pp105–118.
Meyer, B. Agile!: The Good, the Hype and the Ugly. Switzerland: Springer
International Publishing, 2014.
method.
Ottinger, T., Langr, J. “FIRST Properties of Unit Tests.” 2012. Accessed July
9, 2014.
http://pragprog.com/magazines/2012-01/unit-tests-are-first.
2014. https://www.projecttimes.com/george-pitagorsky/everyone-needs-
project-managers-and-
business-analysts.html.
288
■ RefeRences
http://www.agileconnection.com/article/big-agile-enterprise-savior-or-
oxymoron;
Rico, D., Sayani, H., Sone, S. The Business Value of Agile Software
Methods: Maximizing ROI with Just-in-Time Processes and
Documentation. Fort Lauderdale, FL: J. Ross Publishing, 2009.
Satzinger, J., Jackson, R., Burd, S. System Analysis & Design in a Changing
World, Third edition. Boston, MA: Thomson Course Technology, 2004.
Saynisch, M. “Mastering Complexity and Changes in Projects, Economy, and
Society via Project
development).
SEI. “CMMI or Agile: Why Not Embrace Both?” Glazer, H., Dalton, J.,
Anderson, D., Konrad, M., Shrum, S.
Shalloway, A., Beaver, G., Trott, J.R. Lean- Agile Software Development:
Achieving Enterprise Agility. Pearson Education, 2010.
http://www.versionone.com/assets/img/files/CHAOSManifesto2013.pdf.
Symons, C., Peters, A., Cullen, A., Worthington, B. “The Five Essential
Metrics for Managing IT.” Forrester Research, April 4, 2008.
development.
289
■ RefeRences
http://www.infoworld.com/print/247487.
290
Index
staging, 156
team role
developer, 141
requirements
tester, 142
tester role
RTM, 168
validation, 168
verification, 167
tasks, 169
Agile development, 38
cost curves, 11
UX artifacts, 147
validation, 147
extreme programming approach, 12
stakeholders, 257
BVCs, 203
roles
approvers, 144
contributors, 144
owner, 144
reviewers, 144
refactoring, 205
291
■ index
tasks, 197–198
Agile tester
GUI, 221
validator (CIV)
Compliance projects, 32
Architectural layers
classes, 96
development view
CIV, 99
DMC, 98
HIC, 99
Delphi technique
PDC, 98
SIC, 99
Kruchten views, 96
secondary passes, 42
modularity, 96
Design
tasks, architectural thread, 96
requirements, 120
validation, 177.
components
agile, 166
Emergent design
principles, 101
responsibilities, 46
refactoring, 102
RTM, 180
TDD, 101
Scrum, 165
Encapsulation, 188
UX artifact
RTM, 180
estimation, 65–66
XP, 165
prioritization, 64
Business analyst tasks, 169
292
■ Index
Functional requirements
scope, 120–121
UX artifacts, 122
RTM, 212
shared codebase, 212
stage/release, 214
UX artifacts, 210–211
Iteration testers
tester, 221
testing, 236
H
QA and regression tests, 236, 238
planning, 230
I, J
Engineers (IEEE)
characteristics, 130
K, L
Key stakeholder, 48
Memory, 59
Multitasking, 77–78
MMR, 279
method, 209
transform
implementation-dependent boundary
cases, 242–243
QA testers, 241
Iteration process
approval, 214
293
■ index
O
project abstract, 43
Project environment
reporting, 111
Project infrastructure
docBase/codebase, 106
iteration 0, 105
institute (PMI)
Portfolio management
Delphi technique, 40
“controllable planning”, 6
finding sponsor, 30
PMI parallels, 38
PM theory (PM-2), 3
hardening iteration, 67
software engineering practices, 3
iteration 0, 67
stakeholder management, 10
length of iteration, 68
release iteration, 68
communications, 183
agile variants, 45
variant, problems, 45
TDD, 239
Project
abstract, 56–57
Project manager, 44
communication plan, 43
feature catalog, 44
types, 31–32
294
■ Index
Project preparation
planning process, 83
reestimation
iron triangle, 87
team productivity, 88
upfront work, 75
Project proposal
business goals, 26
business alignment, 26
risk, 26
Scenario-driven approach, 96
Scrum, 165
evaluation, 39
Project requirements
RTM, 85
Software architecture
use cases
application
development view, 94
validation, 85
logical view, 93
workflow, 84
physical view, 94
Project startup
process view, 94
additional tools, 71
requirements view, 94
artifact, 43
development infrastructure, 84
business analyst, 46
PIM, 95
PSM, 95
preparatory work, 43
refactoring, 93
project manager, 44
rewriting, 93
project owner, 45–46
RTM, 94
up-front architecture, 92
use cases, 94
management, 47–54
Software engineering
assembly-line process, 7
Project types
certifications, 9
operational, 31
science-based approach, 8
strategic, 31
tactical, 31
Sponsor, 30, 48
communication plan, 53
meeting objectives, 48
report, 283–284
Stakeholders’ scope
295
■ index
ATM project
catalog, 127
actor, 58
Unit tests
definition, 205
documentation
comments, 209
TDD, 208–209
Use cases
Team kickoff meeting, 48–49
advantages, 171
Technical team
ATM withdraw
transaction, 190
APM, 77
iteration 0, 89
UID, 193
multitasking, 77–78
disadvantages, 171
role of, 49
Test cases
validation, 175
agile and traditional integration testing, 225
notational extensions
frameworks/runners, 208
Tools
BPMN, 113
179–180
Traditional practices
User stories
template, 172
product development, 18
Validating requirements, BA
296
■ Index
use case
X, Y, Z
297
Document Outline
Contents at a Glance
Contents
About the Author
About the Technical Reviewers
Acknowledgments
Introduction
Part I: Getting Started
Chapter 1: Evolution of Project Management
Ancient Project Management
Formal Development of Project Management
Software Development As a Manufacturing Metaphor
Moving Toward Software Engineering
Software Engineering As an Immature Science
Project Management for the Twenty-first Century
Evolution of Agile Development
Extreme Programming: An Early Agile Method
Progressive Elaboration
Effort vs. Planning by Project Method
The Agile Manifesto: Values and Principles
Comparing Agile and Traditional Practices
High-Quality Product Development
Traditional Approach
Agile Approach
Comparing Agile vs. Traditional Results
PMI Parallels
Conclusion
Chapter 2: The Birth of a Project: Portfolio Management
Submit a Project Proposal
Align the Proposal with Existing Business Goals
Business Alignment
Risk
Return on Investment (ROI)
Product Life Span
Total Cost of Ownership (TCO)
Find a Sponsor
Build a Business Case
Prioritize the Project Portfolio
Project Types
Project Selection Criteria
Authorize the Project with a Charter
The Project Vision and Mission
Milestones and the Roadmap
The Project Charter
Review the Portfolio Periodically
Differences with Agile
PMI Parallels
Conclusion
Additional Tools
Prioritization Process Using the Delphi Technique
Background and Motivation
Delphi Prioritization Procedure
Alternate Method for Secondary Passes
Chapter 3: Project Startup
Overview
The Project Manager
The Product Owner
The Business Analyst
Manage Stakeholder Expectations
Hold a Business Team Kickoff Meeting
Clarify Stakeholder Relationships
Define Roles and Responsibilities
Stakeholder Analysis and Engagement Grid
Build a Communication Plan
Define Stakeholders’ Scope
Business Abstracts
The Project Abstract
Workflow Context Diagram
Meetings, Agendas, and Minutes
Recommendations for Writing Minutes Easily
Update the Project Charter
Define the Features Catalog (Product Backlog)
Prioritize the Feature Catalog
Estimate Relative Feature Sizes
Scoping Metrics
Estimate the Top Part of the Features Catalog
Develop a Preliminary Release Plan
Iteration 0
Hardening Iteration
Release Iteration
How Long Is an Iteration?
PMI Parallels
Conclusion
Additional Tools
Part II: Iteration 0
Chapter 4: Preparing the Project
Some Upfront Work Is Necessary
What Is Iteration 0 ?
Count from Zero
Acquiring the Technical Team
Avoid the Myth of Multitasking
Hold a Technical Team Kickoff Meeting
Tailor an Agile Iteration Approach
Quality Approach: Risk vs. Rigor
Architecture
Development Infrastructure
Functional Requirements
Project Support Tools
Reestimating the Project
The Iron Triangle
Impossible Projects
Fixed-Term Agile Projects
Forecasting from Team Productivity
PMI Parallels
Conclusion
Chapter 5: Architecture: Product Foundation
Introduction
What Is Software Architecture?
Definition
Balance
Refactoring vs. Rewriting
Application Architectural Views
Platform-Independent and Platform-Specific Design Models
(Logical View)
Platform-Independent Model ( PIM)
Platform-Specific Model (PSM)
Agile Practices
Architectural Layers (Physical View)
Software Architecture (Development View)
Problem Domain Component (PDC)
Data Management Component (DMC)
Systems Interface Component (SIC)
Human Interface Component (HIC)
Component Interface Validator (CIV)
Architecture Recommendations
Emergent Design: An Architectural Alternative
PMI Parallels
Conclusion
Chapter 6: Infrastructure: Supporting the Project
Overview
Infrastructure Environments
The Requirements Environment
The Development Environment
The Test Environment
The Test Environment Is Not the Development
Environment
The Staging Environment
The Production Environment
The Project Environment
Tools
Requirements Environment Tools
Development Environment Tools
Testing Environment Tools
PMI Parallels
Conclusion
Chapter 7: Initial Requirements: Defining the Product
Overview
High-Quality Product Development
Functional Requirements
Requirements Hierarchy
Other Useful Terms
Requirements Elicitation
Merging Different Perspectives
Quenty Twestions: Interviewing Is Not a First-Approach
Technique
Prefer Use Cases to Features
Produce Detailed Requirements
Associate Features to Business Workflow
Decompose Each Workflow to Use Cases into the Use
Case Catalog
Write the Detailed Use Case for Approval
Make the Detailed Use Case a Functional Specification
Develop the UX Artifact
Start the Requirements Traceability Matrix (RTM)
Repeat Through the Features Catalog
PMI Parallels
Conclusion
Additional Tools
Descriptions
Part III: Iteration 1 to N
Chapter 8: Overview of an Agile Iteration
The Agile Approach
Agile Team Roles
Product Backlog to Iteration Backlog
Iteration Process Overview
Iteration Planning (Box 1)
Validate Use Case with an Object Model (Box 3)
Develop UX Artifacts (Box 4)
Develop GUI Test Cases (Box 5)
Develop Integration Test Cases (Box 6)
Implement Use Case and Unit Tests (Box 7)
Run Regression Tests (Box 8)
Transfer the Build (Box 9)
Run GUI Tests (Box 10)
Code and Run Integration Tests (Box 11)
Run QA and Regression Tests (Box 12)
Defects and the Change Meeting (Box 13)
Build Approved? (Box 14)
Build Iteration and QA Reports (Box 15)
Present the User Demo (Box 16)
Stage or Release the Build (Box 17)
Implicit Change Management Flow Within an Iteration
Prepare the Release
PMI Parallels
Conclusion
Software Development as Puzzle Building
Additional Tools
Agile Iteration Development and Terminology Summary
Planning
Iteration Cadence (tracked on Kanban board)
Special Cases
Chapter 9: Requirements Thread
Is There Such as Thing as an Agile Business Analyst?
Does Scrum Use a Business Analyst?
Does Extreme Programming Use a Business Analyst?
Does an Agile Team Need a Business Analyst?
The Role of an Agile Business Analyst
Stakeholder Expectation Management
Product Scope Control
Requirements Verification and Validation
Requirements Communication
Requirements Traceability
Change Control and the Definition of Done
The Business Analyst Tasks
Use Cases and User Stories
The User Story Template
Behavior-Driven Design (BDD)
INVEST for Use Cases or User Stories
Validating Requirements
Leveraging Orthogonality for Validation
Verify for Consistency
To Validate or Not to Validate?
Going Further
Design and Design Validation
Implementation Analysis
The Business Analyst within the Agile Iteration
Iteration Planning (Box 1)
Develop the Detailed Use Case (Box 2)
Validate the Use Case with an Object Model (Box 3)
Develop the User Experience Artifact (Box 4)
Start the RTM
Repeat from Iteration Backlog
Defects and Change Meeting (Box 13)
Build Approved? (Box 14)
The User Demo (Box 16)
Stage or Release the Build (Box 17)
PMI Parallels
Conclusion
Additional Tools
ATM Project
Validating Use Cases with XUML 6
Overview
Class Diagrams
Use Case Validation
Comparing Sequence and Class Diagrams
Example: ATM Withdraw Transaction
ATM Withdraw Use Case
ATM Class Diagram
ATM Withdraw Sequence Diagram
But What About That Misplaced UID?
Other Data
Design Extensions
Use Cases in Object Systems: A Deeper Look
Conclusion
Chapter 10: Development Thread
The Agile Software Developer
Agile Developer Characteristics and Idioms
Projectized Agile Teams vs. Developer Allocation
Sustainability
The Agile Team Room
Pairing (Pair Programming)
Osmotic Communication
Information Radiators and Big Visible Charts
Daily Standup Meetings
Refactoring
Test Driven Development for Unit Tests
What Are Unit Tests?
How Small Should a Unit Test Be?
When to Define Unit Tests?
Typical Agile Unit Test Cycle
Developers within the Iteration
Iteration Planning (Box 1)
Develop the User Experience Artifact (Box 4)
Implement Use Case and Unit Tests (Box 7)
Run Regression Tests (Box 8)
Daily Builds and the Shared Codebase
Update the RTM
Upload the Development Build for Testing (Box 9)
Continual Improvement
Defects and Change Meeting (Box 13)
Approve the Build (Box 14)
Build QA & Iteration Reports (Box 15)
The User Demo (Box 16)
Stage or Release the Build (Box 17)
PMI Parallels
Conclusion
A Typical Day in the Life of an Agile Developer
Summary of Developer Roles
Chapter 11: Testing Thread
The Agile Tester
Test Cases
Integration Tests
Integration Tests and Software Architecture
Differences Between Agile and Traditional
Integration Testing
Regression Tests
Integration Regression Testing
Graphical User Interface Regression Testing
QA Compliance Tests
Concurrency
Writing Test Cases
Defining Test Case Summaries
When (and Why) to Write a Test Script
Testers in the Iteration
Iteration Planning (Box 1)
Develop GUI Test Cases (Box 5)
Write Integration Test Cases (Box 6)
Receive the Test Build (Box 9)
Run the GUI Tests (Box 10)
Repetition is Grueling
Unexpected Results Are Easy
Code and Run the Automated Integration Test Code (Box
11)
Track the Passed Tests in the RTM
Track the Failed Tests in the Test Results Form and
the Defect Log
Upload the Tests into the Regression Suite
Run QA and Regression Tests (Box 12)
Defects and Change Meeting (Box 13)
Build Approved? (Box 14)
Build the Iteration and QA Reports (Box 15)
The User Demo (Box 16)
Stage or Release the Build (Box 17)
PMI Parallels
Conclusion
Summary of Tester Roles
Additional Tools The NEBS Transform
Naming Conventions
Sample Integration Test Suite
Test Script Form Instructions
Iteration
Test Case ID
Created By
Date
Test Case Objective
Test Inputs
Test Procedure
Expected Results
Special Instructions
References and Use Cases
For testers to fill out:
Test Date
Tested By
Result
Tracking Number
Chapter 12: Project Management Thread
The Agile Project Manager
Agile Practices and Retrospectives
Monitoring the Release Plan
Daily Meetings
Agile Perspectives
The APM Perspective with Management
The APM Perspective with the Agile Team
The Agile Team and the Stakeholders
Task Tracking: The Kanban Board
Kanban: A “Pull System”
Work-in-Progress Limits
No Iterations!
Resizing Cards on the Fly
Comparing Velocities Between Teams, Individuals, or Groups
Team Velocities
Individual Velocities
Group Velocities
Agile and Earned Value Management
The Components of Earned Value Management
Putting It All Together
The Agile Project Manager in the Iteration
Iteration Planning (Box 1)
Design Approval Meeting (Box 5)
Defects and Change Meeting (Box 13)
Build Approved? (Box 14)
Build Iteration and QA Reports (Box 15)
Iteration Burn-up Chart
Project Burn-up Chart
Defect Trend Report
Quality Assurance (QA) Report
The User Demo (Box 16)
Preparing the Demo
During the Meeting
After the Meeting
Problems with the Build
Stage or Release the Build (Box 17)
PMI Parallels
Conclusions
Additional Tools
Kanban Process Summary
Release Plan
Iteration Reports
User Demo and Releasable Build
Terminology and Special Cases
Building a Burn-Up Chart (Example)
Quality Report (Example)
References:
Index