Agile Assessment Guide
Agile Assessment Guide
GUIDE
Best Practices for Agile Adoption and Implementation
Preface 1
Introduction 4
Chapter 1 Background 7
Appendix VII Background for Case Studies and Agile in Actions 236
References 247
Tables
Table 1: Description of Commonly-Used Agile Frameworks 11
Table 2: Iterative Software Challenges, as Reported by Federal
Agencies 14
Table 3: Laws, Policy, Guidance, Reports, and Entities
Established to Address Agile Challenges 20
Table 4: Recent GAO Reports Highlighting Agile Challenges 22
Table 5: Summary of Agile Adoption Best Practices 29
Table 6: Manual Coding Quality Assurance Methods 42
Figures
Figure 1: Comparison of Agile and Waterfall Methods for
Developing Software 8
Figure 2: Overview of Agile Adoption Best Practices 28
Figure 3: Relationship between the Agile Team and Customers 32
Figure 4: Agile Planning Levels 67
Figure 5: Comparison of Traditional and Agile Development
Program Management Constraints 70
Abbreviations
This is a work of the U.S. government and is not subject to copyright protection in the
United States. The published product may be reproduced and distributed in its entirety
without further permission from GAO. However, because this work may contain
copyrighted images or other material, permission from the copyright holder may be
necessary if you wish to reproduce this material separately.
1GAO, High Risk Series: An Update, GAO-15-290 (Washington, D.C.: Feb. 11, 2015).
Some examples of GAO reports showing the struggles of federal agencies in
implementing IT systems include: GAO, Software Development: Effective Practices and
Federal Challenges in Applying Agile Methods, GAO-12-681 (Washington, D.C.: July 27,
2012); Information Technology: OMB and Agencies Need to More Effectively Implement
Major Initiatives to Save Billions of Dollars, GAO-13-796T (Washington, D.C.: July 25,
2013); TSA Modernization: Use of Sound Program Management and Oversight Practices
is Needed to Avoid Repeating Past Problems, GAO-18-46 (Washington, D.C.: October 17,
2017); and FEMA Grants Modernization: Improvements Needed to Strengthen Program
Management and Cybersecurity, GAO-19-164 (Washington, D.C.: (April 9, 2019).
2CarlLevin and Howard P. ‘Buck’ McKeon National Defense Authorization Act for Fiscal
Year 2015, Pub. L. No. 113-291, div. A, tit. VIII, subtit. D, 128 Stat. 3292, 3438-50 (2014).
3Office of Management and Budget, Memorandum M15-14, Management and Oversight
of Federal Information Technology, (June 10, 2015), at 18.
The best practices in this guide are not comprehensive; that is, they are
presented as high-level concepts of software development, contracting,
and program management that highlight the aspects of Agile
development throughout a program’s life cycle and address key risks to
an organization, program, or team without prescriptive “how to” steps.
Many other publications address how to apply best practices in using an
incremental approach to software development and readers can refer to
those sources when considering a specific development topic.
4Agile frameworks are also used to develop hardware programs and manage services.
The best practices in this guide are intended to be at a high enough level to be used for
any Incremental development program, regardless what type of product or service is being
delivered. However, the focus of this guide will be how Agile frameworks are used in
software development.
5Agile is the name we use to describe incremental software development methods in this
guide, with concepts from Lean, Kanban, DevOps, or other more specific methods. For
example, Kanban may not be considered an Agile software development methodology,
but it may be considered a management method used to improve the flexibility of the
activities of knowledge workers during software development. An organization that intends
to adopt a specific Agile method should supplement guidance described later in this guide
with additional materials that specifically address the practical application of that specific
method.
If you have any questions concerning this guide, contact Tim Persons at
(202) 512-6888 or [email protected] or Carol Harris at (202) 512-4456
or [email protected]. Major contributors to this guide are listed in
appendix IX and contact points for our Offices of Congressional Relations
and Public Affairs are located at the end of this document.
Carol Harris
Director
Information Technology
and Cybersecurity Team
Developing the Guide Our approach to developing this guide was to ascertain best practices for
Agile software development from leading practitioners and to develop
standard criteria to determine the extent to which agency software
development programs meet these practices. These best practices center
6GAO, High Risk Series: Substantial Efforts Needed to Achieve Greater Progress on High
Risk Areas, GAO-19-157SP (Washington, D.C.: Mar. 6, 2019).
7The provisions apply to the agencies covered by the Chief Financial Officers Act of 1990,
31 U.S.C. § 901(b). These agencies are the Departments of Agriculture, Commerce,
Defense, Education, Energy, Health and Human Services, Homeland Security, Housing
and Urban Development, Justice, Labor, State, the Interior, the Treasury, Transportation,
and Veterans Affairs; the Environmental Protection Agency, General Services
Administration, National Aeronautics and Space Administration, Nation Science
Foundation, Nuclear Regulatory Commission, Office of Personnel Management, Small
Business Administration, Social Security Administration and the U.S. Agency for
International Development. However, FITARA has generally limited application to the
Department of Defense.
8GAO-19-157SP.
9GAO, GAO Cost Estimating and Assessment Guide: Best Practices for Developing and
Managing Program Costs, GAO-20-195G (Washington, D.C.: Mar. 12, 2020), GAO
Schedule Assessment Guide: Best Practices for Project Schedules, GAO-16-89G
(Washington, D.C.: Dec. 22, 2015) and GAO Technology Readiness Assessment Guide:
Best Practices for Evaluating the Readiness of Technology for Use in Acquisition
Programs and Projects, GAO-20-48G (Washington, D.C.: Jan 7, 2020).
The Guide’s Readers We have developed this guide to serve multiple audiences:
The Guide’s Contents This guide focuses on best practices surrounding Agile adoption,
execution, and controls. For example, chapter 3 groups commonly-
recognized best practices for Agile adoption into the areas of team
dynamics and activities, program operations, and organization
environment. Chapter 4 provides an overview of high-level program
management concepts surrounding Agile execution and control best
practices, such as requirements development and management,
acquisition strategies, and program monitoring and control. Agile
execution best practices related to requirements development and
management and the federal contracting process are discussed in more
detail in chapters 5 and 6, respectively. Program control and monitoring
best practices for cost estimating, scheduling, and earned value
management are discussed in chapter 7, and best practices for metrics
that can be used during the adoption, execution, and monitoring and
control periods of the program are discussed in chapter 8.
Acknowledgments The GAO Agile Assessment Guide team thanks the many subject matter
experts in the federal government, private industry, and academia who
helped make this guide a reality. After we discussed our initial plans for
developing this guide with GAO’s Cost Working Group and at various
technical conferences, several members expressed interest in working
with us. They formed the initial membership of our Agile working group
that convened in August 2016. This number grew as the work developed,
and the contributions of all have been invaluable. Thanks to everyone
who gave their time and expertise in meetings, provided us with
documentation and comments, and hosted us at their facilities as we
observed their Agile methods in real time. Contributors of the Agile
working group are listed in appendix VIII and GAO staff who contributed
to this guide are listed in appendix IX.
11In this guide, an iteration is a predefined, time boxed, recurring period of time in which
working software is created. Similarly, a release is defined as a planned segment of
requirements that are useable. For more information, see appendix II.
12The term ‘customer’ can mean different things depending on the perspective. For
example, often a customer refers to the end users of a system but there are also
instances where the customer and sponsor are the same individual. The definition of the
customer(s) is organizationally and contextually dependent. See appendix II for more
information on how we define this term and use it throughout the guide.
13A 1970 paper entitled “Managing the Development of Large Software Systems” by Dr.
Winston W. Royce is considered by the Software Engineering Institute and others to be
the basis for the Waterfall framework. (See Royce, Winston, “Managing the Development
of Large Software Systems. Reprinted from proceedings, IEEE WESCOM (August 1970),
pages 1-9). Although the paper never uses the term “Waterfall,” the model has sequential
phases that flow continuously from one step to the next. While the paper noted that this
model is risky because it is unknown how the system will actually work until the testing
phase and recommended iterative interaction between steps, it became the foundation for
what is known as the Waterfall approach.
Scaled Agile Framework (SAFe)b SAFe is a framework for implementing Agile at scale. The framework provides guidance for
roles, inputs, and processes that can include four configurations (essential, large solution,
portfolio, and full), tailored to each unique context. There are ten principles: 1) take an
economic view, 2) apply systems thinking, 3) assume variability, 4) build incrementally in
cycles, 5) base milestones on evaluation of working systems, 6) visualize and limit work in
progress, 7) apply cadence, 8) unlock motivation of workers, 9) decentralize decision
making, and 10) organize around value.
Hybrid frameworkc
Scrumban A combination of Scrum and Kanban, teams generally abide by Scrum roles while using
Kanban to view workload and improve flow. Scrumban can be considered the application of
Kanban to a Scrum framework to help an organization tailor its Scrum to better align with their
goals. With Scrumban, the amount of work is not limited to the sprint, but to the work in
progress limit. Meetings in Scrumban are often scheduled as needed, as opposed to a
specific schedule with sprints.
Related frameworksd
Crystal The Crystal method outlines different methodologies based on the number of people involved
and the criticality of the software. The framework that most closely resembles Agile is called
Crystal Clear. The methods rely on trust and communication. Unlike other methodologies that
dictate discipline to specific practices, Crystal allows freedom for individual preferences and
work habits.
DevOps DevOps, with its name stemming from a combination of development and operations,
emphasizes collaboration between development, IT operations, and quality assurance with
the goal of more frequent software releases. The overall DevOps values align with Agile, and
DevOps is considered an expansion of Agile implementation practices to all areas of a
product’s life cycle. One common DevOps principle is, “infrastructure as code”, meaning
operating environments are managed the same as code, with version control, automation,
and continuous testing.
Iterative Development Iterative development breaks down the work into smaller chunks known as iterations, in order
to design, develop, and test in cycles.
Lean Software Development Lean software development applies principles from lean manufacturing to software
development. There are seven key principles: 1) eliminate waste, 2) amplify learning, 3)
deliver fast, 4) decide late, 5) empower the team, 6) build integrity in, and 7) optimize the
whole product.
Source: GAO analysis of information from DHS, DOJ, VersionOne Inc., Scaled Agile Inc., Scrum.org, Booz Allen Hamilton, the DSDM Consortium, and Agile Alliance. | GAO-20-590G
a
Scaled frameworks are those that are intended to increase Agile processes so that they can be
applied to large, complex organizational structures.
b
The description of SAFe is as of May 2020 and is based on SAFe V5.0.
c
Hybrid frameworks combine principles and practices from more than one Agile framework.
d
Related frameworks are those that are very similar to Agile frameworks and often use many of the
same principles and practices. Many of these frameworks, such as DevOps, extend Agile principles
such as communication to enable additional collaboration.
17For this guide, a program can be defined in various ways for budgeting and policy
making purposes. Whether a program is defined as an activity, project, function, or policy,
it must have an identifiable purpose or set of objectives if an evaluator is to assess how
well its purpose or objectives are met. An evaluation can assess an entire program or
focus on an initiative within a program. In the case of IT systems, a single program could
be part of a project within a larger program. For that reason, this guide will use the term
program; however, that can also refer to a project.
Response
Information systems are integral to many aspects of federal government
operations. Congress has expressed long-standing interest in monitoring
and improving federal IT investments, which have often been developed
in long, sequential phases. Several agencies have tried using an Agile
approach, which calls for producing software in small, short increments.
Challenges to organization Programs using Agile software development methods require the ongoing
commitment and collaboration collaboration and commitment of a wide array of stakeholders, including
business owners, sponsors, users, developers, and cybersecurity
specialists. 19 One way Agile promotes commitment and collaboration is
by having teams work closely together, in one physical location when
possible, to facilitate continuous communication among the team
members.
However, officials from the federal agencies that GAO surveyed reported
that teams had trouble transitioning to this philosophy. Specifically, they
stated that teams were challenged in collaborating because staff were
used to working independently and in individual work spaces. For
example, some team members preferred to work alone rather than in a
team room, viewed open communication (such as posting program status
on a team room wall chart) as intrusive, or disliked showing work-in-
progress to the federal customer.
While Agile stresses frequent input and feedback from all stakeholders,
officials noted that federal employees found it difficult to commit to
keeping work products, such as schedules, updated to reflect the status
of every iteration because they were not used to the rapid pace of
development. They also said that teams initially had difficulty maintaining
an iteration’s pace because they were used to stopping their work to
address an issue rather than making a decision and moving on. Officials
also stated that federal customers were not always available to review
19Each stakeholder will likely have a competing set of priorities and objectives for a
system. For example, a sponsor responsible for funding a program may want a particular
set of features, while the actual users of the system may want a different set of priorities. It
is important to consider all of the views and opinions of stakeholders both up front in
planning a program and throughout development. Relying on a sponsor or managers to
serve as proxies for actual users presents a risk the same as relying solely on end users
or business analysts will present a risk. The product owner, discussed later in this guide,
is intended to help coordinate with and filter through these competing priorities while not
neglecting the viewpoints of a particular community.
Some agency officials stated that assigning and maintaining staff was an
issue because their organization did not have sufficient staff to dedicate
to multiple Agile teams. Staff with multiple, concurrent duties could not be
spared from their other duties to dedicate themselves to the large time
commitment required of an Agile team. Additionally, officials said that
frequent work assignment rotations were common in many federal
agencies, creating challenges as new staff needed to learn the roles and
responsibilities of those being replaced.
Challenges to preparing for When an organization using Waterfall software development migrates to
Agile adoption Agile or other iterative methods, new tools and technical environments
may need to be added to support program planning and reporting.
However, officials reported that implementing Agile tools could initially
create a challenge due to delays in buying, installing, and training staff on
the use of these new tools.
In October 2019, GAO reported that the Air Force’s Space Command and Control
(Space C2) Program was taking an Agile approach to software development to more
quickly and responsively provide capability to customers. According to Air Force
officials, Agile development was relatively new to Department of Defense (DOD)
programs. In the past, requirements were solidified in advance of development and the
software was delivered as a single completed program at the end of the development
cycle—with no continual involvement or feedback from customers or ability to modify
requirements. The Space C2 program was one of the first DOD software-intensive
programs to move away from the Waterfall approach and into an Agile framework.
However, we reported that the then-current DOD acquisition instruction did not include
guidance for Agile software programs.
GAO reported that DOD officials stated that new software guidance was in
development, and this guidance was expected to offer pathways for developing Agile
programs. DOD had also developed a draft template to assist Agile programs with
developing their acquisition strategies, though the template and associated software
guidance were in the early stages of development. In the meantime, however, Space
C2 program officials confirmed that they were operating without specific software
acquisition guidance. Space C2 officials also clarified that, while Agile software
acquisition guidance had not yet been formally published, the program office had been
actively engaged with the Office of the Under Secretary of Defense for Acquisition and
Sustainment in refining draft policy and guidance. The program office noted that its
program activities over the past year had been informed by and were consistent with
this draft guidance.
Though DOD was taking steps to ensure that the Space C2 program had a
comprehensive approach in place for managing, identifying, and mitigating challenges
associated with an Agile development approach, GAO reported that key program plans
and agency-wide guidance were still in draft form, leaving uncertainty about how
program development and oversight would ultimately proceed. Finalizing a robust
acquisition strategy containing the key elements for ongoing planning and evaluation
would better position the program for success.
GAO, Space Command and Control: Comprehensive Planning and Oversight Could
Help DOD Acquire Critical Capabilities and Address Challenges, GAO-20-146
(Washington, D.C.: October 30, 2019).
Agile programs depend on having the flexibility to add staff and resources
to complete each release and adapt it quickly, based on lessons learned
from one release to the next. One official stated that federal procurement
practices do not always support this flexibility. For example, contracts that
require Waterfall-based artifacts to evaluate contractor performance are
not needed in an Agile approach where the contractor is part of the team
and their performance is based on the delivery of an iteration. This official
added that it can be a challenge for contractor staff to meet iteration time
Challenges in executing Agile Programs using Agile methods develop software in increments that are
methods added onto the previous build; however, some agency officials reported
that their staff mistrust such iterative solutions. For example, one official
stated that federal customers expect to see a total solution; consequently,
a demonstration of the functionality provided in one iteration or even one
release was sometimes not considered good enough. The small
increment of functionality demonstrated caused staff to doubt the Agile
team’s ability to deliver the remaining requirements, creating a parallel
fear that the Agile team would not meet commitments. Officials also
stated that this mistrust hindered the federal customer’s ability to develop
a definition of “done,” which is an essential component of the process.
Challenges in evaluating Agile Agile software development methods stress evaluation of working
methods software over extensive documentation and traditional program
management milestone reporting. Officials said that this difference can
present challenges in evaluating federal programs due to the lack of
alignment between Agile and traditional evaluation practices. For
example, federal oversight bodies request status reports for Waterfall
development at development milestones and have not adjusted to Agile
Furthermore, officials stated that program status tracking in Agile did not
align with traditional methods. For example, one official stated that
tracking the level of effort using story points instead of the traditional
estimating technique based on hours was a challenge because team
members were not used to that estimation method. One official stated
that the required use of earned value management can be onerous if
there is no guidance on how to adapt earned value management to reflect
data about iteration progress or if the organization’s upper management
does not embrace an Agile mindset and tracks monthly changes in cost,
schedule, and product scope as control problems rather than as revisions
to be expected during the iterative process. Chapter 7 of this guide
discusses the application of performance management systems, such as
earned value management, to Agile programs.
Actions Taken to Address Since 2012, the federal government has taken steps to improve its
Challenges policies and processes to help federal agencies adapt their current
processes to Agile methods. Table 3 provides a summary of the laws,
policies, and guidance and the entities that have been established to help
address challenges.
Table 3: Laws, Policy, Guidance, Reports, and Entities Established to Address Agile Challenges
These reports all found that Agile adoption and execution challenges
remain in federal organizations. This may be due to significant differences
in focus; many organizations find it difficult to prepare for technical
reviews that do not account for implementation artifacts, the availability of
requirements, and/or design artifacts that are at different levels of
abstraction. On the other hand, some organizations are surprised to
discover they are already performing practices that can ease Agile
adoption, such as establishing user groups that meet frequently with
developers. In addition, while many of the policies and guidance focus on
Agile principles, there are others that address cost, schedule, or
contracting. It is important that organizations reconcile Agile principles
and government policies and guidance with cost and schedule reporting
requirements.
20For more information about internal controls, see GAO, Standards for Internal Control in
the Federal Government, GAO-14-704G (Washington, D.C.: Sept. 10, 2014).
Organizations can use the best practices described in this chapter to help
them manage and mitigate the challenges in making the transition to
Agile. 22 The practices described are organized by functional perspective:
team dynamics and activities, program operations, and organization
environment. The discussion is in general terms in order to be useful
regardless of the Agile method used. The practices highlight the aspects
of Agile adoption that address key risks to be considered and are not
meant to encompass all aspects of software development or program
management. They can be used alone, or in conjunction with information
from other publications that address similar topics.
21As with any significant process improvement effort that an organization undertakes,
change can be difficult and therefore presents risk. Management should consider the
transition to Agile a process improvement or change management effort and manage the
undertaking based on organization change management principles.
22This guide incorporates materials authored by Carnegie Mellon University with funding
and support of the Department of Defense under federal contract FA8721-05-C-00003 for
the operation of the Software Engineering Institute. Contact [email protected] for
re-use of such materials for other than US government purposes. Also, see our guide on
reducing risks when using Agile methods: GAO, Software Development: Effective
Practices and Federal Challenges in Applying Agile Methods, GAO-12-681 (Washington,
D.C.: July 27, 2012).
depending on the methodology used. Over time, teams may refine and
evolve their practices based on experience and lessons learned.
Within each Agile method, specific terms may not fully align with the
terms used in the best practices discussed in this chapter. 25 For example,
a program might use a different term from the terms used in this guide to
capture the concept of a product owner. Use of the specific terminology in
this guide is not essential, but the concepts described in each best
practice as a whole should be observable. If not, then organization
officials should be able to explain why excluding a best practice (or
elements of one) does not introduce unacceptable risk to transitioning to
Agile. Although identified across varying levels, these best practices are
highly interrelated (they all have to be aligned toward common goals) and
therefore, each support the success of other practices.
23Although not discussed in this guide, some organizations might wish to consider a
maturity or readiness model to help in prioritizing practices. Maturity models for Agile are
readily available for use independent of this guide, although we cannot attest to the
success or appropriateness of these models. In addition, the CMMI® Institute has
developed profiles for the use of CMMI in environments using selected Agile methods.
24Kanban methods deal with change somewhat differently than other Agile methods and
may not limit the cultural barriers that impede change. Kanban methods enable an
organization to improve its agility in any professional services or knowledge worker
activity, not only software development, without any significant cultural shift and without
implementing new processes. Organizations may choose to adopt other Agile methods in
a similar fashion, focusing on slow, continuous, incremental change to existing business
processes.
25See appendix II for definitions of key terms used in this guide.
The Agile team should be structured to allow for its own autonomy so that
it need not rely on outside teams to complete its work. Team members
should have cross-functional skills that allow them to be capable of
performing all of the work rather than a single specialty and collectively
the team should have all the skills necessary to perform the work and
represent the various sections of the organization that touch on software
development, such as business subject matter expertise, quality
assurance, and cybersecurity. 26 In addition, the team should be integrated
26If operating in a government setting, the Agile team, or a subset of it, may be
contractors. Contracting for Agile services can limit autonomy due to legal requirements
for performing inherently governmental functions. See, e.g., FAR § 2.101 (defining
inherently governmental function). However, whether using government employees or
contractor employees, each Agile team should consist of personnel with all of the
necessary skill sets. When defining the terms of a contract for Agile services, the program
should work closely with contracting personnel (e.g., contracting officer and contract
specialist) to promote autonomy while ensuring compliance with federal acquisition
regulations. Contracting best practices related to Agile methods are discussed in more
detail in chapter 6.
with other areas in the program office. 27 Specifically, the team can include
contract specialists, designers, analysts, developers, and testers who,
when working together, are able to decompose high-level descriptions of
features that need to be accomplished into appropriate user stories and
then work to identify logical iteration stopping points for testability. This
level of expertise on the team allows it to solve most problems. If a team
does not have the requisite skill sets, it will be reliant on other teams that
may have other responsibilities, thus delaying progress on the product.
The cross-functional team approach is thought to, among other things, advance a
collaborative culture to address critical objectives and outputs. GAO research identified
eight broad categories of leading practices associated with effective cross-functional
teams: (1) open and regular communication, (2) well-defined team goals, (3) inclusive
team environment, (4) senior management support, (5) well-defined team structure, (6)
autonomy, (7) committed cross-functional team members, and (8) an empowered
cross-functional team leader.
In February 2018, GAO reported that DOD had established a cross-functional team to
address the backlog on security clearances and developed draft guidance for cross-
functional teams that addressed six of seven required statutory elements and
incorporated five of eight leading practices that GAO identified for effective cross-
functional teams. GAO noted that DOD’s guidance for cross-functional teams was
critical to their consistent and effective implementation across the department and that
this guidance would help ensure that such teams were provided with leadership
support and resources and it further promoted collaboration across the department.
GAO found that fully incorporating leading practices would help the teams be
consistent and effective in addressing DOD’s strategic objectives.
The roles for an Agile team can vary based on the Agile methods being
applied; however, certain roles are similar in all Agile environments, such
27See GAO, IT Workforce: Key Practices Help Ensure Strong Integrated Program Teams;
Selected Departments Need to Assess Skill Gaps, GAO-17-8 (Washington, D.C.: Nov. 30,
2016), for a more in-depth discussion of an integrated program team including critical
success factors. GAO also issues a bi-annual series on cross-functional teams at the
Department of Defense. For more information see GAO, Defense Management: DOD Has
Taken Initial Steps to Formulate an Organizational Strategy, but These Efforts Are Not
Complete, GAO-17-523R (Washington, D.C.: June 23, 2017).
Team stability, where team members are dedicated to the team and do
not move in and out of the team, is important to ensure consistent
productivity. Frequently shifting resources within a team, or between
teams, can undo learning and shift team dynamics and skills, thereby
diminishing the team’s ability to meet commitments. The level of
commitment of each team member and stakeholder is based on the
needs of the program and should be discussed on a case-by-case basis.
For example, involvement of a database administrator may only be
required on a part-time basis when the team is working on user stories
that require access to, or may indirectly impact, a database. Whether a
28See the best practice entitled “Staff are appropriately trained in Agile methods” in this
chapter for further discussion of the training and technical expertise needed for a team.
Chapter 6 also elaborates on subject matter expertise necessary for the effective
contracting of Agile services.
The role of the product owner In an Agile environment, the developers work daily with stakeholders,
is defined to support Agile including the product owner. The product owner is the authoritative
methods customer representative who manages the prioritization of the
requirements (e.g., user stories) and acceptance criteria for those
requirements, communicates operational concepts, and provides
continual feedback to the developers as a representative of the
customer. 29 The product owner also defines the acceptance criteria for
stories and ultimately decides if those criteria have been met. 30 A product
owner should understand the business and strategic values of the
organization and possess subject matter expertise related to the business
need in order to draw alignment with the vision of the product. Linking the
need, vision, and product includes ensuring that prioritized requirements
are evaluated and implemented in a timely manner and that the backlog
is managed. If there is not a clearly identified product owner who is the
authoritative customer representative and responsible for managing
requirements prioritization, communicating operational concepts, and
providing continual feedback, the developers may not be sure which
requirements are priorities if they receive conflicting information. This
uncertainty can result in delays to delivering high-priority features and
deployment of the overall system. If the product owner is not a dedicated
resource, the developers may find that person unavailable to answer
questions when needed, and, if questions are not addressed in a timely
manner, the developers may make assumptions in order to continue with
its development and meet its commitments. If the team assumptions do
not match the expectations of the product owner, significant rework may
be necessary. This can slow down the development process.
The product owner role and responsibilities can be fulfilled in more than
one way. For example, some organizations may delegate these
Since the product owner represents the customer, they routinely interact
with key stakeholders to weigh the value of each requirement and
establish work priorities for the developers. 31 The developers may choose
to interact directly with key stakeholders if the Agile team deems it
warranted. However, the team should ensure that functionality is
prioritized by the product owner and not the stakeholders and that this
additional coordination does not impact development productivity.
31In this guide, we use the term ‘requirement’ to refer to a condition or capability needed
by a customer to solve a problem or achieve an objective. Requirements will be used to
refer to all development work since specific terminology (e.g., epic, capability, feature,
sub-feature) may be unique to a specific organization. See chapter 5 and appendix II for
more detail.
In 2016, GAO found the United States Citizenship and Immigration Services’ (USCIS)
Transformation program experienced many challenges due to product owners being
stretched among multiple development teams. Product owners for the primary
Transformation program system, the Electronic Immigration System (ELIS), were
responsible for more than four development teams, and, at times, up to twelve teams.
Consolidated release assessments, prior product owner testimony, and GAO
observations identified that not having a dedicated product owner presented many
difficulties for the ELIS development teams. For example, one product owner stated
that it was a challenge to accommodate more than one team and she had to stagger
her time between the teams to support sprint planning and maintain meaningful
dialogue with the team. Additionally, consolidated release assessments indicated that
product owners did not attend 21 percent of sprint planning meetings. Product owner
availability was an issue voiced by development team members and also observed by
GAO during standup meetings and sprint planning.
The more development teams a product owner is responsible for, the less time the
product owner is able to spend with each team. Consequently, this can impact product
owner effectiveness in performing his or her assigned duties. Furthermore, as we
reported in 2016, the program faced challenges in completing work within committed
time frames and product owner availability may have been a contributing factor.
According to USCIS guidance, lack of inclusion and transparency with the development
team’s decision making and processes can result in a disengaged product owner, or
one that makes decisions without adequate consideration of challenges faced by the
team.
GAO, Immigration Benefits System: U.S. Citizenship and Immigration Services Can
Improve Program Management, GAO-16-467 (Washington, D.C.: July 7, 2016).
the requirement is needed are important. While Agile programs may use
different terminology, such as product backlog items, for the purposes of
this guide we will use the term ‘user story’ throughout to describe a small
segment of work that can be completed in a single iteration and is
determined by the product owner and developers.
The Agile team constructs a general outline for developing the user
stories that comprise an iteration. The user story’s focus is on the value
delivered to the customer, often defines who the customer is, what is
being developed for that customer, and why there is a need for the
functionality. However, striking a balance between too much and not
enough detail can be challenging: each user story should provide enough
detail to allow developers to estimate the user story’s complexity, but not
so much information that there is little room for discussion between the
product owner and the developers around the intent of the user story.
Clearly establishing the components to include in the user story can help
strike this balance. Establishing a common structure for the user story
helps ensure consistency and can help prevent delays when product
owners work with multiple teams or teams are reorganized.
The product owner determines the business value of each user story in
consultation with the developers by refining the size, defining the criteria
for acceptance, and establishing when the user story will be considered to
be done. The value of a user story should be reevaluated based on the
current needs of the organization to ensure the greatest return on
investment. The practice of backlog refinement, along with a discussion of
acceptance criteria and a definition of done is covered in greater detail in
chapter 5.
INVEST
The acronym INVEST defines the characteristics of a quality user story: it should be “I”
ndependent (of all others),”N” egotiable (not a specific contract for features), “V” aluable
(or vertical), “E” stimable (to a good approximation), “S” mall (so as to fit within an
iteration), and “T” estable (in principle, even if there is not a test for it yet). If the user
story fails to meet one of these criteria, the team may want to reword it, or even consider
a rewrite.
Agile teams estimate the The developers should use relative estimation, which compares the
relative complexity of user current work with work of similar size and complexity, to determine how
stories much complexity a new user story represents. Relative estimation
enables teams to maintain a sustainable software development pace and
predict work commitments. The team should size user stories relative to
one another, assess the complexity of work based on input from the
product owner, refine user stories and estimates over time, and use prior
estimates to inform future estimates. If teams are not using relative
estimation to compare current size and work estimates to historical
completed work, the team may underestimate or overestimate the
complexity and time necessary to complete the user story.
Relative estimation
In software development, an estimate traditionally consists of a quantified evaluation of
the effort necessary to carry out a given development task; this is most often expressed
in terms of duration. Relative estimation is one of several types of estimation used by
Agile teams. It consists of estimating tasks or user stories, not separately and in
absolute units of time, but by comparison or by grouping of items of equivalent difficulty.
Relative estimation, consistent with estimation in units other than time, avoids some of
the pitfalls associated with estimating in general: seeking unwarranted precision,
confusing estimates for commitments. For example, if a team uses a complexity point
scale with the values [1, 2, 3, 5, 8, 13, 21], it should not be assumed that an 8 pt.
backlog item will require four times as long as a 2 pt. one (although, if that is the norm
the team has agreed upon, it could); rather, it will be more than a 5 pt. and less than a
13 pt. item. Also, because estimates are team- and domain-specific, there is little utility
in attempting to use them for cross-team performance or productivity.
When estimating, the team should consider potential factors that can
increase the complexity of the work. For example, a piece of functionality
that requires passing interface testing before it can be accepted might
prove challenging when the team factors in coordination and access to
other systems. Team members are providing only a best estimate based
on experience to date and will not fully know the complexity of the user
story until the work has begun. Accordingly, program management should
remember that estimates for the program are likely to change with each
iteration. Practices such as affinity estimation can help to identify factors
that affect the complexity of a user story. 32 Well-defined acceptance
criteria can also help teams estimate a user story’s complexity. Less well-
defined user stories will carry more risk and uncertainty around size
estimates. Additionally, if teams are not estimating user stories
consistently, the teams may be committing to too much work, leading to
user stories lasting longer than one iteration and team burnout.
The team continually revises the estimates of the program as they learn
more about the business priorities and as a user story increases in
priority. However, once an iteration has begun, sizing estimates should
remain unchanged so that the team can examine variances between
32Affinity
estimation is a consensus-based technique to estimate the relative effort of work.
This term is further defined in appendix II.
Requirements are prioritized in To prioritize a user story, the product owner determines the business
a backlog based on value value of each user story based on the needs of the customers,
stakeholder priorities, and factors such as its risk level, dependent
relationships, frequency of use, alignment with the vision of the product,
security requirements, expected return on investment, and learning. The
organization and program should have a shared understanding of what
value means in terms of how much a feature satisfies strategic priorities.
Identifying and measuring value, as with other Agile practices, requires
constant collaboration. Agile teams should pull work from a prioritized
backlog, providing frequent deliveries of software with immediate value to
the customer. A lack of traceability between different levels of backlogs
and program planning artifacts could lead to overlooking user stories or
features that are critical to the program due to their high value to the
customer or key dependencies that those user stories or features might
have with other aspects of the system. Further, lack of understanding or
insight into the methods used to measure value for user stories could
cause a disconnect between the customer and developers and allow
delivery of features that do not maximize the value.
features that may not be used and might contribute to schedule and cost
overruns.
MoSCoW
Many Agile methods use the acronym MoSCoW to classify user stories as “must have,”
“should have,” “could have,” or “would like to have” for prioritizing the backlog.
In June 2020, GAO reported that the Department of Homeland Security (DHS) modified
its acquisition procedures to allow for an ongoing assessment of progress, and
indirectly the value of work accomplished, via a release road map. DHS guidance
stated that the release road map is to be submitted to the Acquisition Review Board
prior to acquisition decision event 2B. During lower-level technical reviews, exit criteria
for reviews required the development team to follow the release road map and make
adjustments that supported the successful completion of requirements defined at the
acquisition decision event 2B. DHS supplemented these requirements with guidance
on constructing a road map, including a discussion on how a program can sequence its
road map for learning, risk, and economic value.
Within DHS, GAO reported that it reviewed a road map for one development module of
the U.S. Immigration and Customs Enforcement (ICE) Student and Exchange Visitor
Information System (SEVIS) program. This road map listed areas for development in
the order they were intended to be developed and identified the associated business
capabilities. The business capabilities identified in the road map aligned with the sub-
capabilities listed in the program’s operational requirements document. Examples of
business capabilities in the road map that were also sub-capabilities identified in the
operational requirements document included:
• create nonimmigrant record (including supporting forms),
• align nonimmigrant eligibility information with unique nonimmigrant,
• update nonimmigrant biographical information, and
• add/update dependent information.
GAO, Agile Software Development: DHS Has Made Progress in Implementing Leading
Practices, but Needs to take Additional Actions, GAO-20-213 (Washington, D.C.: June
1, 2020).
Agile programs employ Automation of repeatable processes allows software components that are
continuous integration added or modified to be continuously integrated into the system. With
short iterations in which to develop working software, integration should
be frequent; thus, continuous integration using automation ensures that
software handoffs between the various stages of development and testing
are performed in a reliable, dependable manner. 34 Without continuous
integration using automation, reliable, dependable software handoffs may
not occur. Each stage of the continuous integration process should
include automated tests of both functional and non-functional
requirements with the scope of automated testing tracked and monitored
based on established expectations. Without automated build and testing
tools, the program may experience challenges in delivering the product
33Patton, Jeff. “It’s All in How you Slice It.” Better Software. Retrieved July 27, 2020, from
https://www.jpattonassociates.com/wp-content/uploads/2015/01/how_you_slice_it.pdf.
34Due to the continuous integration of a code base in Agile, it is important for the program
to have a mature integrated version control system in place. This is a critical tool to enable
teams to work together and maintain configuration control over the code base.
Mechanisms are in place to Adherence to coding standards and the use of automated and manual
ensure the quality of code testing are necessary for improving the quality of code that is ultimately
being developed inserted into the continuous integration build process. Software with a
large number of defects or an inefficient structure not only affects system
performance, it forces the developers to spend critical time and effort to
repair defects. While many methods are available for assuring code
quality, there will always be some code inefficiencies or redundancies that
ultimately limit system performance. These deficiencies can stem from
time constraints, an unsustainable pace of development, undisciplined
coders, or other reasons. The accumulation of these deficiencies over
time is called “technical debt” and can present obstacles to an Agile
program if not properly managed. 35 For example, as a code base grows,
additional functions will rely on the deficient code, causing a degradation
in overall system performance. Moreover, as the interest incurred on
technical debt continues to rise, teams will devote more time to cleaning
up errors instead of producing new features.
Agile teams meet daily to In addition to repeatable technical practices, there are repeatable
review progress and discuss business practices that increase the likelihood a team will succeed when
impediments using Agile methods for its software development. Specifically, teams can
meet daily to coordinate the work, demonstrate working software to the
product owner either during or at the end of an iteration to verify it meets
customer needs, or participate in a retrospective meeting.
36This practice comes from the Scrum method and has been adopted by many other Agile
methods.
Without the daily standup meeting, team members may not be held
accountable for their work. In addition, duplication of work could occur, or
work may not get accomplished because of a lack of communication and
understanding of who is doing what for the program. Without daily
standup meetings, the team might also not identify impediments, which
may result in rework or schedule delays.
Managers can observe the daily meeting and consider actions they might
take to help remove team impediments, but the daily meeting should not
become a status update for management. If used as a status update for
management instead of focusing on progress and impediments, the
meeting could last too long. The meeting is also not a place to solve
problems or hold discussions with stakeholders. Instead, it is a place to
decide what conversations (with what participants) need to take place that
day. Teams can invite subject matter experts or other business
stakeholders to the meeting, as needed, to answer questions regarding a
specific user story they intend to work on that day.
Agile teams perform end- Teams should demonstrate the latest version of the software for the
iteration demonstrations product owner and other stakeholders at the end of each iteration, or as
functionality has been completed. These demonstrations offer an
opportunity for stakeholders to validate that teams are building the right
product, help inform the priorities for the team moving forward, and offer a
key opportunity to discover new requirements that can be translated into
user stories. During a demonstration, stakeholders review and react to
the particular portion of working software being demonstrated, rather than
to the whole system. In order for a demonstration to be useful, all
participants must be engaged and the sample software should be
depicted in a realistic setting. Teams should not spend a significant
amount of time preparing for a demonstration, as the focus of this time is
to demonstrate working software and obtain feedback. If end-iteration
demonstrations are not performed, the team may not be able to identify
portions of the software that need improvement or modifications to
provide the anticipated functionality.
Agile teams perform end- At the end of each iteration, the team should hold a retrospective meeting
iteration retrospectives to reflect on what went well and what could be improved for the next
iteration. 37 It is an effective tool to enable continuous process
improvement. The findings of the retrospective are determined and
implemented by the team. For example, although retrospectives focus on
process improvements instead of product improvements, the team can
include action items from the retrospective as user stories in the backlog
and track their implementation. If a retrospectives is not held at the end of
each iteration, the team may not reflect on or improve the efficiency and
effectiveness of its work processes, thereby impacting the timely delivery
of a high-quality product. These retrospectives differ from end-of-project
retrospectives in that they provide the opportunity to improve in the next
iteration, not the next project.
37If following the Kanban method, retrospectives should be held at an agreed-on interval
because work is not organized by iterations.
Developers and all other In addition to training, teams using Agile methods should possess the
supporting team members competencies, skills, knowledge, and process abilities needed to perform
have the appropriate technical their role. A program should consider Agile-centric skills when forming
expertise needed to perform teams. Ideally, team members, including contract specialists, developers,
their roles and testers, should be cross-functional and together possess all the skills
needed to produce working software, as discussed in the best practice,
“Team composition supports Agile methods”. If team members do not
have all the required skills, programs should ensure that each developer
has immediate access to people with specialized skills in, for example,
contracting, architecture, database administration, software development,
quality assurance, operations, information security, risk analysis, user
experience, and business systems analysis. Having qualified staff helps
ensure that the flow of development is continuous.
In June 2020, GAO reported that the Department of Homeland Security (DHS) offered
guidance for preparing acquisition strategies through its Procurement Innovation Lab.
Webinars offered by the Procurement Innovation Lab on acquisition strategies for Agile
programs discussed the need for interim delivery of software, close coordination
between contractors and program office staff, contract oversight mechanisms that were
tailored to support Agile development, and refined requirements. For example, the
“Transportation Security Administration Agile Services Procurement” webinar
discussed planning, executing, and de-briefing technical demonstrations used to select
the contract recipient, paying particular attention to the value of transparency and
modifying contract oversight mechanisms.
GAO reported that, within DHS, the U.S. Immigration and Customs Enforcement (ICE)
Student and Exchange Visitor Information System (SEVIS) program evaluated
contractor qualifications to ensure they had the necessary technical expertise.
According to the program manager, contractor qualifications were evaluated in two
stages; first, by assessing the contractor’s proposal, and second, by conducting a
technical challenge to ensure that contractors could demonstrate the technical skills in
the proposal. According to the instructions included in the request for proposals, this
technical challenge required the contractor to leverage Agile best practices to design,
develop, and demonstrate working software that addressed user stories provided by
the program. Although the instructions stated that contractors were required to follow
Agile methods, the ICE SEVIS program manager stated that the primary goal of the
technical challenge was to assess development skills rather than knowledge of Agile.
GAO, Agile Software Development: DHS Has Made Progress in Implementing Leading
Practices, but Needs to take Additional Actions, GAO-20-213 (Washington, D.C.: June
1, 2020).
Best practice:
Technical
environment enables
Agile development
System design supports Planning the design of the system is important in order to understand and
iterative delivery manage the considerations that can enable a loose coupling of
architecture components and to provide architecture to support the Agile
methods and end state for the program. An Agile program should refine
and build out the architecture over time as it learns more about the
system but also allow time to consider system requirements in order to
limit future complexity, rework, and loss of investment. If the program
does not consider the system architecture during its initial planning and
Architectural runway
Some programs use the concept of an architectural runway to ensure that the technical
infrastructure, dependencies, and interfaces are clearly understood and in place to
support implementing the near-term software in an operational environment. The
architectural runway is continually extended to meet new and evolving needs in front of
development, which avoids the need for large, upfront architectural design.
In June 2020, GAO reported that the U.S. Immigration and Customs Enforcement (ICE)
Student and Exchange Visitor Information System (SEVIS) program defined its
technical environment to include technical tools for automated testing and continuous
integration. The team process agreement for one development module GAO reviewed
identified technical tools that supported continuous integration and testing within the
project’s technical environment. This included a tool known as Jenkins for continuous
integration and tools known as MUnit and Soap UI for continuous testing. In addition,
the ICE SEVIS Modernization Test and Evaluation Master Plan discussed tools for
helping to ensure code quality, such as an automated code analytics tool to be used to
identify test coverage of code and cybersecurity code vulnerabilities.
The project also defined management support tools in the process agreement.
Specifically, it identified support tools for tracking and knowledge management, such
as JIRA and Confluence. The team process agreement stated that JIRA should be the
main knowledge management tool and that all changes, discussion, and history should
be tracked in each ticket. This process agreement also stated that JIRA should be the
team’s tracking tool with Confluence used to provide transparency.
GAO, Agile Software Development: DHS Has Made Progress in Implementing Leading
Practices, but Needs to take Additional Actions, GAO-20-213 (Washington, D.C.: June
1, 2020).
Technical and program tools To continually monitor progress, Agile program management and
support Agile technical tools may be needed to assist Agile teams with electronically
managing the Agile framework they are using to develop software. The
selected tools should be integrated into the program’s technology
environment (e.g., automated regression testing suites and continuous
integration support tools) and access should be available to all team
members and stakeholders who need the access. These electronic tools
can prevent delays in performing critical tasks. If technical and program
tools are not consistently available to those members of the team
requiring access, then the productivity of developers may suffer and result
in increased costs for development.
Best practice:
Program controls are
compatible with Agile
Critical features are defined The program strategy should identify the mission, architecture, safety-
and incorporated in critical components, and dependencies that ensure that all aspects of a
development program are considered, and these aspects should be revisited on a
regular basis. 38 Some programs define these components during an initial
iteration before any software development begins. Doing so can help the
program avoid rework and integration challenges from inadequate
software and the resulting increase in costs and time to deliver all critical
features. Without clearly identifying mission and system-critical
architecture features, the program risks developing these features after
other software is in place and facing substantial rework and integration
challenges, unnecessarily increasing the cost and time to deliver all
critical features.
38For more information on critical systems in the federal government, see GAO,
Information Technology: Agencies Need to Develop Modernization Plans for Critical
Legacy Systems, GAO-19-471 (Washington, D.C.: Jun. 11, 2019).
Non-functional requirements Although much of the focus in development is on functional needs, the
are defined and incorporated in program must also include nonfunctional requirements, such as security
development and privacy, in the program strategy. 39 As with critical dependencies,
continuous attention to technical excellence and good design requires the
developers to consider nonfunctional requirements throughout
development. This is particularly true with complex programs such as
healthcare and financial systems that process sensitive data with complex
non-functional requirements. Teams overlooking nonfunctional
requirements may develop a system that does not comply with current
federal regulations (e.g., cybersecurity or interface requirements for IT
programs), causing unnecessary risks to business operations and
resulting in the software not becoming operational until these components
have been addressed. See chapter 5 for additional discussion on defining
and capturing non-functional requirements.
Agile teams maintain a Management should strive to ensure that teams can maintain a
sustainable development pace sustainable development pace by prioritizing user stories, some of which
may be non-functional requirements, establishing an agreed-upon
definition of done for those user stories, and reaching a mutual
commitment on the work to be accomplished for each iteration. Many
teams embrace Agile methods because the software is needed quickly;
however, sound engineering and management principles are still required
when employing Agile.
39Nonfunctional requirements generally specify criteria that can be used to judge the
operation of a system rather than specific behaviors. This should be contrasted with
functional requirements that specify specific behavior or functions. Typical nonfunctional
requirements are reliability, scalability, maintainability, availability, quality, privacy,
security, and compliance with section 508 of the Rehabilitation Act of 1973, as amended
(29 U.S.C. § 794d (discussing information and data accessibility)).
40In IT, scaling is the ability of a system, network, or process to absorb a growing amount
of work or its potential to be enlarged to accommodate that growth. If the design or system
fails when the amount is increased, it does not scale.
Best practice:
Organization activities
support Agile
methods
Organization has established The organization’s life cycle activities should support the iterative and
appropriate life cycle activities incremental nature of an Agile approach. They should also allow for the
organization to tailor life cycle activities to encourage frequent
collaboration between the customer and the developers to support rapid
development. When making the transition to Agile, sponsors may need to
make structural changes at the organization level in order to support the
iterative nature of Agile. These changes include allowing programs that
are applying Agile methods to tailor life cycle activities, including technical
reviews, and associated artifacts to their cadence of delivery. These
changes may affect the organization, staffing, and interactions with other
groups, such as information assurance and operational test and
evaluation. If programs are unable to tailor life cycle activities, then the
organization’s oversight process could negatively affect the cadence
established by the Agile team, resulting in less predictable development
efforts.
The organization’s life cycle must also allow for refining detailed
requirements. The highest priority of federal IT programs is to satisfy
customers through early and continuous delivery of valuable software. In
order for the mission to succeed, federal organizations’ acquisition policy
and guidance need to allow for refining detailed requirements while
maintaining the high-level program vision and frequently delivering value
Goals and objectives are A proven method for nurturing a strong relationship among customers,
clearly aligned the developers, and the organization is to align program goals with
strategic IT objectives and to ensure that program goals clearly reflect
stakeholder needs and concerns. 41 While this alignment is important in
non-Agile settings, its urgency in an Agile environment derives from the
fact that software will be available earlier to test and interact with other
parts of the system. To effectively implement Agile processes, the
organization’s mission or strategic goals are key inputs for decision
making. If the organization’s goals are not clear or do not adequately
reflect stakeholder concerns and mission needs, then lower-level decision
41Agency plans for capital acquisitions, including plans for IT, should align with and
support advancement of these goals. Alignment to mission and goals is required for major
IT investments subject to Capital Planning and Investment Control (CPIC) reporting. See
chapter 2 for further discussion of legislation impacting Agile adoption in the federal
space.
42The best practice, “Program controls are compatible with Agile” discusses how programs
should consider and capture both critical features as well as non-functional requirements.
Both steps within the practice can help to ensure strategic alignment between the goals of
the organization and those of the program.
43The best practice, “Work is prioritized to maximize value for the customer”, discusses the
need for the team, and ultimately the program, to routinely deliver the most valuable
functionality each iteration. Ensuring alignment between the user stories delivered in an
iteration and the goals of the program and organization via an agreed-upon artifact such
as a road map that tracks feature prioritization is one way to exhibit the delivery of high
value functionality.
Finally, goals should be clear but not static. Many organizations adopt
Agile precisely because it allows for rapid response to changes in either
the external or internal environment. This rapid change makes it even
more important that an organization effectively and routinely ensures that
program goals are clearly communicated.
Sponsorship for Agile Implementing Agile requires that stakeholders and sponsors embrace and
development cascades fully understand the implications of this approach. Without high-level
throughout the organization encouragement, Agile implementation might become a paperwork
exercise, leading to a failure to complete software development. For
example, without encouragement and commitment from upper-level
management, Agile teams may not appropriately collaborate with product
owners when they are unsure about the importance of certain
functionality, causing confusion that ultimately can result in a poor
product. Thus, functionality developed using a process that does not
embrace an Agile mindset might require heavy investment in the post-
deployment correction of errors or functionality enhancements to meet
customer needs.
While having a clearly defined policy for Agile programs can be effective
in many cases, using a policy or mandate to force adherence to Agile
principles does not produce the healthy adoption of new practices. For
example, putting policies in place too early, before the appropriate
transition mechanisms are solidified, may lead to basic compliance but
without consideration for the organization’s culture and mindset change
that should occur during a successful transition.
Further, since Agile may not be appropriate for all programs, each
program should consider its rationale for the use of an Agile approach in
accordance with defined program and software goals. For example, the
following could be considered indicators that a program is ready to adopt
Agile practices, although this is not the only scheme for evaluating
program readiness for Agile: 44
44One approach for determining if Agile is best for a program is the Stacey diagram. This
diagram measures requirements agreement against technology certainty.
Sponsors understand Agile Sponsors and champions should not only be assigned to enable an Agile
development transition; they should understand and be able to differentiate between
traditional and Agile roles, Agile cadence, and processes. It is also
important that they are accountable for results. Sponsors should be
committed to supporting the specific Agile approach adopted so that
processes are applied consistently across the organization. While the
roles and responsibilities in a traditional acquisition are well documented
in regulations, policies, and training documents, in an Agile environment
they are more flexible and may not be as easily understood. One of the
biggest obstacles to an Agile transformation can be that very few people
in the organization know and understand Agile methods or that they
implement Agile based on limited experience and understanding of them.
As a result, sponsors and senior stakeholders may need training and/or
coaching regarding their new responsibilities.
Organization culture supports In addition to senior stakeholder and policy support, certain physical and
Agile development social environments should be provided by the organization to allow Agile
teams to succeed. For example, Agile environments typically call for
locating cross-functional teams in common areas where the teams can
work together and converse regularly. Designating a team space for
physically co-located teams to work with appropriate network and IT
access can be as simple as dedicating a conference room to the team for
the duration of the program. Even if the teams are physically separated,
modern communications and social media methods (such as video-
teleconferences or instant messaging chats) can be used to promote
continuous discussion. For example, some distributed teams may
establish a continuously “open” chat room where team members can talk
about their work. Whether distributed or co-located, the end goal is for all
team members, including the product owner, to be immediately
accessible to ensure questions are answered promptly and team pace is
not delayed.
After Agile has been implemented, the organization can continue to learn
and adapt from the feedback from key stakeholders and Agile teams. To
do this requires continuous inspection and adaptation to improve the
entire development process, such as in a more formal meeting, a
retrospective, or an informal set of discussions among sponsors. In
addition, ongoing demonstrations of working software can then serve as
touchpoints where an oversight body can gain added assurance that the
Agile teams are developing a system of value in line with its intentions.
Incentives and rewards are Open and explicit support by the senior stakeholders also means that
aligned to Agile development traditionally rewarded behavior is no longer the norm. This is often one of
methods the hardest concepts for senior stakeholders to consistently practice
when advocating for change. Sponsorship from senior executives takes a
step toward tangibly expressing this larger commitment and fostering an
environment of trust. To that end, an organization should also examine its
45The best practice, “Technical environment enables Agile development”, discusses the
need for a program to consider program management and technical support tools early in
program planning. As part of these deliberations, the program should think about access
to these tools and the level of transparency it might afford to stakeholders that are less
active in the day-to-day operations of the team or program.
existing incentives and rewards systems and consider the extent to which
they might interfere with or reinforce Agile behavior and make changes to
bring those systems in alignment with Agile principles.
46There are certain awards that can be provided to federal employees and other forms of
recognition available to recognize contractor employees. As a result, when awarding team
success, a distinction may have to be made between federal and contractor staff.
Best practice:
Organization
acquisition policies
and procedures
support Agile
methods
Guidance is appropriate for The organization’s Agile acquisition policy and guidance should align with
Agile acquisition strategies the planned acquisition strategies.
Before entering into any contract, the program office should analyze the
risks, benefits, and costs associated with the acquisition. In a federal
agency, this can be accomplished with acquisition planning as outlined in
the Federal Acquisition Regulation (FAR) and other agency acquisition
policy and guidance documents. For example, the Department of Defense
has established the Defense Federal Acquisition Regulation Supplement
(DFARS), which provides additional information for DOD programs as
they implement the FAR. Additionally, FITARA grants the agency Chief
Information Officer the authority to approve all information technology
contracts, either directly or as part of active participation in agency
governance. 47
47The law requires CIOs to review and approve IT contracts and OMB’s implementing
guidance states that CIOs may review and approve IT acquisition strategies and plans,
rather than individual IT contracts. 40 U.S.C. § 11319(b)(1)(C)(i).
48The U.S. Digital Services’ TechFAR handbook offers guidance on how to acquire
products and services in an Agile setting: https://playbook.cio.gov/techfar/. Guidance in
the TechFAR handbook can be supplemented by the U.S. Digital Services Playbook:
https://playbook.cio.gov/.
Best Practices
Checklist: Adoption of
Agile Methods
Team dynamics and activities 1. Team composition supports Agile methods
• Teams are self-organizing.
• The role of the product owner is defined to support Agile
methods.
2. Work is prioritized to maximize value for the customer
• Agile teams use user stories to define work.
• Agile teams estimate the relative complexity of user stories.
• Requirements are prioritized in a backlog based on value.
3. Repeatable processes are in place
• Agile programs employ continuous integration.
• Mechanisms are in place to ensure the quality of the code being
developed.
• Agile teams meet daily to review progress and discuss
impediments.
• Agile teams observe end-iteration demonstrations.
• Agile teams observe end-iteration retrospectives.
Program operations 4. Staff are appropriately trained in Agile methods
• All program staff have appropriate training since the techniques
used are different from those used for Waterfall development
programs.
• Developers and all other supporting team members have the
appropriate technical expertise needed to perform their roles.
5. Technical environment enables Agile development
• System design supports iterative delivery.
• Technical and program tools support Agile.
6. Program controls are compatible with Agile
Controls
Overview of Requirements Agile methods integrate planning, design, development, and testing using
Development and an incremental life cycle to deliver small amounts of software to
customers at frequent intervals. These frequent iterations provide
Management
program management with an effective way to measure progress
continually, reduce technical and programmatic risk, and respond to
feedback from stakeholders.
50GAO, GAO Schedule Assessment Guide: Best Practices for Project Schedules,
GAO-16-89G (Washington, D.C.: Dec. 22, 2015).
program road map. Using an Agile approach is not and should not be
viewed as an opportunity for boundless development.
The epic level describes large concepts which, when developed, will
move the program toward accomplishing the vision. An epic is useful as a
placeholder to keep track of and prioritize larger ideas.
At the iteration level, the developer designs, codes, integrates, and tests
whether the software provides working capabilities that satisfy the needs
of the selected user stories. 52 More detailed planning done at the iteration
level ensures that the Agile teams develop software that satisfies the
customer’s prioritized needs. An iteration should always be the same
amount of fixed time, typically 2-4 weeks in length, so that a cadence can
evolve.
The user story level is broken down into tasks that are the daily work of
the teams.
Terminology
Agile programs may use different terminology when referring to the same things. For
example, an epic can be referred to as a theme or high-level requirement; however, it is
important that all members of an Agile program use the same terminology to avoid
confusion.
51“Release” in the commercial community may not mean the same thing as in the
government. In government settings, the working product at the end of a release may go
to a certifier or independent test organization rather than directly to the end user.
52Agile teams may assign a specific meaning to terms such as “iteration” and “release.”
We have used the terms in this guide as they are most commonly understood by Agile
teams.
Overview of Acquisition While there are numerous frameworks available to Agile practitioners,
Strategy Development there are no standard terms for Agile processes and artifacts from the
acquisition viewpoint. Therefore, when implementing Agile methods, the
organization and the contractor must work together to define the Agile
terms and processes that will be used during the development. These
definitions will help establish common Agile terms that can aid everyone
related to the program in understanding the relationship between Agile
and program monitoring and control. Communicating this kind of
Overview of Program There are several advantages that program monitoring and control
Monitoring and Control documentation provide for an Agile program. First, since effort is
commonly used as a proxy for cost, estimating effort can determine not
only the program cost, but it can also reasonably predict how long both
near-term and long-term deliverables will take to develop. Second,
understanding capacity (or the total amount of work that Agile teams can
accomplish in one iteration) helps prioritize work and predict the cost of a
delay when “must have” features cannot be accomplished as expected.
Finally, having the Agile team commit to near-term deliverables is
important because those commitments materially affect customer
planning and business objectives while at the same time make the
developers accountable for their work.
Estimating is the key to unlocking the team’s ability to predict and commit
what deliverables can be accomplished in the near-term. Therefore, while
any cost estimate will always be based on the best information available
at a given time, Agile program cost estimates have an advantage over
traditional program cost estimates because they can be regularly updated
to reflect new information in accordance with the program’s cadence. The
regular cycle of iterations and releases provides numerous opportunities
to continuously refine the estimate based on learning what the customer
wants. Even so, it is important to bear in mind that a cost estimate is
typically created or updated before financial commitments have been
made and used to establish a performance measurement baseline. While
the estimate should be updated regularly, the original baseline is only
developed once. For example, the estimate at completion may be
revised, but the original cost estimate should rarely be changed so that
variances can be observed.
Estimating the cost and time it will take to develop software is inherently
challenging because not enough is known at the start about what exact
requirements and functionality are going to be needed. As a result,
requirements need to be iteratively fleshed out and may shift as the
program evolves. Typically, developing an accurate estimate will be
difficult until the team learns more about the program’s requirements, For
these reasons, cost and schedule estimates should always quantify the
effect of changing assumptions using risk and uncertainty analysis.
Additionally, it is important that managers and stakeholders understand
that, because an Agile program’s requirements will be iteratively
determined, collaboration between the customer and developers is
paramount.
Note that, even though Agile methods typically provide working code
more quickly, this approach is often used as an excuse to avoid
documenting traditional program management efforts like formal cost and
schedule estimates. However, formal cost and schedule estimates remain
important. The following case study provides an example of a review of
the cost and schedule for an Agile program.
In April 2019, GAO reported that the Federal Emergency Management Agency (FEMA)
Grants Management Modernization (GMM) program’s May 2017 initial life cycle cost
estimate was reliable; however, key assumptions made about the program had
changed. Thus, the initial cost estimate no longer reflected the current approach for the
program. Additionally, GAO found GMM’s program schedule was inconsistent with
leading practices. Of particular concern was that the program’s final delivery date of
September 2020 was not informed by a realistic assessment of GMM development
activities but by imposing an unsubstantiated delivery date.
Key assumptions about the GMM program changed after the May 2017 cost estimate
was approved, including a change in technical approach, an increase in the number of
system development personnel, and significant delays and complexities with data
migration. FEMA officials reported that they anticipated the cost estimate to increase as
a result, and that this increase might be high enough to breach the $251 million
threshold set in GMM’s May 2017 acquisition program baseline. The program informed
the DHS Acquisition Review Board of this anticipated breach, and, on September 12,
2018, the board declared that the program was in a cost breach status. In December
2018, program officials stated that they had completed a revised cost estimate using a
new cost estimating methodology that was developed by DHS’s Cost Analysis Division
and tailored for Agile programs, but it was still undergoing departmental approval.
We reported that establishing an updated cost estimate should help FEMA better
understand the expected costs to deliver GMM under the program’s current approach
and time frames. However, without a robust schedule to forecast whether FEMA’s
aggressive delivery goal for GMM is realistic to achieve, leadership will be limited in its
ability to make informed decisions on what additional increases in cost or reductions in
scope might be needed to deliver a complete system.
GAO has developed processes and best practices for program monitoring
and control in formal guides available on its website. A summary of the
two most relevant guides are included here.
53GAO, GAO Cost Estimating and Assessment Guide: Best Practices for Developing and
Managing Program Costs, GAO-20-195G (Washington, D.C.: Mar. 12, 2020).
54GAO, GAO Schedule Assessment Guide: Best Practices for Project Schedules,
GAO-16-89G (Washington, D.C.: Dec. 22, 2015).
Management in Agile
Sound management practices are critical for the success of any program,
including one using incremental development methods such as Agile.
These practices include establishing what the system is to do, how well it
will perform those functions, and how it will interact with other systems. 55
GAO has developed a body of work that defines the activities and best
practices used to develop and manage the requirements for a system
development program. 56 This chapter identifies how traditional
requirements development and management processes can be adapted
for Agile programs and highlights key considerations when assessing
compliance with policy and standards for requirements development and
management.
57In chapter 3 of this guide, we highlight the potential risks an organization may incur if it
does not modify the acquisition and software life cycle processes to accommodate Agile
methods.
58Requirements in Agile development can be thought of as both strategic and tactical. A
set of strategic requirements are necessary to justify a program, and one can generally
assign a work breakdown structure and some form of earned value management
measurement to achieving these goals. The tactical requirements are the lower-level
requirements capturing the features for which customers and stakeholders are looking.
execute the work. This process may occur at various levels and with
different personnel, depending on the stage of requirements
decomposition. However, the end goal of the program is to have a set of
user stories that can be discussed and further understood by the Agile
teams and the product owner on a routine basis.
In July 2016, we observed release planning for the National Nuclear Security
Administration Program Management Information Systems, Generation 2 (G2)
program. G2 used a requirements hierarchy that allows teams to plan for, manage, and
execute a project. Officials said that this was helpful for clearly defining and
communicating requirements from National Nuclear Security Administration
stakeholders and customers through the federal program manager, product owners,
and development team. According to documentation provided, the requirements
hierarchy decomposed a project down into smaller, more manageable efforts.
Specifically, there were four levels to G2’s hierarchy: road map, feature, user story, and
task, with specific periods of time associated with each level.
Officials said that the road map was the program’s strategic vision, which provided
release planning information for the current development cycle and next three cycles
(three months of work, each). The road map was used to facilitate conversations with
the program’s multiple customers to define and time box desired system features.
Features comprised level 2 of the requirements hierarchy. Requirements were
captured as uniquely numbered features in the backlog; each feature was the starting
point for estimating level of effort and requirements were approved for work at the
feature level.
Documentation provided showed that Level 3 of the requirements hierarchy was
composed of user stories. As features were entered in the backlog, they were
decomposed into user stories (e.g., requirements that can be addressed in one
iteration). Officials said that to ensure requirements traceability, as both features and
user stories are entered, a work breakdown structure (WBS) number was assigned.
Because of the widely varying scope of application requirements, a designated WBS
numbering scheme (as defined in the G2 System Requirements Specification) was
used. Tasks were level 4 of the requirements hierarchy. They were the detailed
requirements that could be completed in one day and were assigned to one person to
help maintain accountability. This four-level requirements hierarchy provided
traceability for the requirements through all the program’s planning documents, visibility
for multiple customers engaged in the program, and accountability for the development
team.
Agile values and principles provide guidance for the process an Agile
team uses to develop and manage the requirements for a program. Agile
does not provide a detailed, specific method to be used to perform these
tasks and allows the team flexibility to choose a method. For example, a
team may follow the Scrum concept of product backlogs consisting of
ordered backlog items that are represented on a task board based on
In June 2020, GAO reported that the Department of Homeland Security (DHS), in
guidance available to programs on requirements engineering, highlighted that
acceptance criteria defines the boundaries of a user story and confirms when a story
has been completed and is working as intended. Further, the definition of done
identifies all of the activities/artifacts besides working code that must be completed for
a feature or sub-epic to be ready for deployment or release, including testing,
documentation, training material development, certifications, etc.
Within DHS, the U.S. Immigration and Customs Enforcement (ICE) Student and
Exchange Visitor Information System (SEVIS) program generally followed this
guidance with most of its user stories including acceptance criteria. The program also
developed a “definition of done” for all user stories. According to the definition, a user
story was “done” when the following steps had been addressed:
• All code to meet the story’s needs was written according to the system’s
development standards.
• Unit tests were written and run successfully.
• All code was checked in and the build completed successfully.
• All database changes (if required) were complete and checked in (a functional
test could be run).
• The software had been deployed to the system test environment and passed
system tests.
• The product owner agreed that the implementation met the acceptance criteria
written in the story as appropriate.
• All documentation required to support the story was completed (test cases,
interface updates, etc.).
GAO, Agile Software Development: DHS Has Made Progress in Implementing Leading
Practices, but Needs to take Additional Actions, GAO-20-213 (Washington, D.C.: June
1, 2020).
for ready, acceptance, and done, the team may be working inefficiently
and on requirements that are not high priority.
Spike
As requirements evolve and an Agile team begins to decompose, prepare for, and
estimate user stories, there can be instances where the user story is challenging to
estimate. This might be due to design questions or a technical challenge that the team is
not experienced in working through. Derived from eXtreme Programming (XP), a spike
can serve as a placeholder user story that represents the research a team needs to
undertake in order to better understand a user story and thereby more effectively
estimate its size.
The product owner reviews and prioritizes user stories in a backlog based
on the relative value of each user story at a specific point. As part of
backlog refinement, the product owner adds detail, estimates, and orders
the user stories based on priority in the backlog. The Agile team, or at
Higher priority user stories are usually clearer and more detailed than
lower priority user stories. More precise estimates are made based on the
greater clarity and increased detail of a requirement; the lower the order,
the less detail. Figure 7 illustrates the concept of backlog prioritization.
Problems can arise if the product owner does not consider the relative
value of the work: all of the user stories can end up being developed just
prior to deployment. While there are situations where this can occur, such
as a very mature requirements decomposition process with an
experienced product owner, often this is a sign that the product owner is
not prioritizing the requirements and is developing functionality that is not
immediately necessary. This practice of developing each and every user
story can lead to problems if funding is reduced mid-iteration, mid-
release, or mid-program or other external factors impede the progress of
the development work. Further, when the product owner does not
consider the relative value of work, the team may develop functionality
that is not immediately necessary to meet customer needs. If the highest
value requirements are not completed first, the customer may be left
without necessary functionality. The best practice is to rank order
requirements with those of the highest value being completed first so that
if funding ends, the customer will still benefit from the work that has been
completed to date.
Code may not meet the requirements of the original user story even if the
quality of the code is good. Then, as part of the backlog refinement
process, the team establishes the definition of done and defines
acceptance criteria for each user story, so that the developers and
product owner have a shared understanding of what it means for a piece
of work to be considered complete. The definition of done encapsulates
both the completion of acceptance criteria and the completion of
additional activities, such as testing or compliance checks. User story
acceptance criteria is specific to just one user story and documents the
63In chapter 3 of this guide, we highlight the potential risks an organization and program
may incur if the organization does not stand up an environment for automated testing and
instead relies on manual tests.
64Section 508 of the Rehabilitation Act of 1973, as amended, 29 U.S.C. § 794d, requires
federal agencies to make their electronic information accessible to people with disabilities.
65The level of testing will depend on the product being developed and the rigor defined in
the agreed-on definition of done.
When requirements are managed well, they can be traced from the
Maintain Traceability source requirement to lower-level requirements and from those lower-
in Requirements level requirements back to the source requirement. Such traceability
helps to determine whether all source requirements have been
Decomposition completely addressed and whether all lower-level requirements can be
traced to a valid source.
In June 2020, GAO reported that the Department of Homeland Security (DHS)
guidance on requirements engineering recognized that, as a program progressed
through the acquisition and systems engineering life cycles, it was important to trace
requirements from the top-level mission needs or capabilities and/or business
requirements down to the system/sub-system, component, or configuration item level
that enabled those requirements to be met. This helped ensure continuity across
various DHS artifacts, such as the program’s mission needs statement, concept of
operations, and operational requirements document, to vendor specifications (or
applicable equivalent artifacts). This guidance recommended a series of artifacts that
an Agile program could develop to ensure this traceability.
Within DHS, GAO reported that the U.S. Immigration and Customs Enforcement (ICE)
Student and Exchange Visitor Information System (SEVIS) program generally followed
this guidance. The program developed user stories based on business capabilities and
other requirements as determined by the product owner and the business stakeholders.
The program’s operational requirements document described eight business
capabilities that represented core SEVIS functions. According to ICE SEVIS officials,
these business capabilities were addressed through user stories, and there was
traceability in the backlog from user stories to epics to business capabilities/operating
requirements.
GAO, Agile Software Development: DHS Has Made Progress in Implementing Leading
Practices, but Needs to take Additional Actions, GAO-20-213 (Washington, D.C.: June
1, 2020).
66As discussed earlier in this guide, teams applying the Kanban method will not rely on
iterations to time box development work. Instead, these teams will pull in new user stories
on a flow basis as user stories already being developed are completed.
67As the Kanban method does not use time boxed development, teams using the Kanban
method for development will not make commitments each iteration. However, teams will
still rely on a Kanban board and all work should contribute toward completing a user story
on that Kanban board.
68In chapter 7, we highlight how Agile programs estimate cost and schedule. This chapter
discusses how requirements are defined and decomposed in order to create an overall
plan for the program.
Process
Agile programs depend on using lessons learned from one release to the
next and should have flexibility to add staff and resources to adapt.
Federal procurement practices used for Waterfall programs can be
adapted to support this flexibility for Agile programs. The Federal
Acquisition Regulation (FAR) was established for the codification and
publication of uniform policies and procedures for use by all executive
branch organizations in acquiring goods and services. 69 The FAR helps
organizations ensure that contracts deliver, on a timely basis, the best
value product or service to the customer. Prior to entering into a contract
for information technology, organizations should analyze the risks,
benefits, and costs involved.
69While the FAR applies to executive branch agencies, not all agencies are subject to the
FAR. For example, the FAR does not apply to the Federal Aviation Administration
pursuant to 49 U.S.C. § 40110(d)(2)(G).
70Modular contracting was established in 41 U.S.C. § 2308 and is implemented in section
39.103 of the FAR.
The FAR also authorizes the use of simplified procedures for the
acquisition of certain commercial items that fall between specified dollar
thresholds. This is intended to maximize efficiency and economy, and to
minimize burden and administrative costs. 71 In addition, OMB and GSA
have developed guides to help organizations apply the flexibility offered
by the FAR to facilitate the use of Agile practices. For example, OMB
issued the TechFAR handbook, which highlights flexibilities in the FAR
that can be used in partnership with the “plays” from the Digital Services
Playbook. 72
71FAR §13.500.
72The U.S, Digital Services TechFAR handbook offers guidance on how to acquire
products and services in an Agile setting: https://playbook.cio.gov/techfar/. Guidance in
the TechFAR handbook can be used in partnership with the U.S. Digital Services
Playbook: https://playbook.cio.gov/.
Tailor contract
structure and inputs
to align with Agile
practices
Encourage the use of modular An organization’s contracting process must be deliberate and well
contracting executed to support regular program delivery timelines. Contracting
strategies, processes, and the culture should create a business
environment that supports small, frequent releases and responds to
change, taking into consideration programmatic risks and the scope and
purpose of a program (e.g., whether it is a large weapon system or small
web application). One technique to accomplish this is called modular
contracting. Modular contracting is when an organization’s need for a
system is satisfied by successive acquisitions of interoperable
increments. 73 It is intended to reduce program risk and to incentivize
contractor performance while meeting the government’s need for timely
access to rapidly changing technology. 74
compressed time frames by eliminating the costly lag between when the
government defines its requirements and when the contractor begins
delivering workable solutions. Achieving timely results requires the
contracting cycle to be in alignment with the technology cycle.
Enable flexibility in the Similar to writing a solicitation for a Waterfall program, schedule
contract’s requirements achievement, software quality, user acceptance, and product complexity
should all be considered when drafting a solicitation for an Agile program.
Furthermore, a contract governing an Agile development effort must
provide sufficient structure to achieve the desired mission outcomes,
while also offering flexibility for adaptation of software requirements within
the agreed-on scope of the system. Contract structure for Agile programs
must be designed to support the short development and delivery timelines
that Agile requires.
75FAR § 39.103(b)(3).
76The uniform contract format is a standardized format for structuring government
solicitations and contracts. FAR § 15.204-1 provides a list identifying the parts of the
uniform contract format.
having this level of detail early in the program’s life is typically not the
case with Agile development because the underlying detailed
requirements are unknown and not well-defined at the beginning of the
acquisition process. Therefore, instead of establishing a detailed
presentation of the technical requirements in a statement of work, section
C could use a statement of objectives, whose goal is to develop a broadly
defined statement of high-level performance objectives to provide offerors
with maximum flexibility. The statement of objectives can be used with
any performance-based contract and can include goals and desired
outcomes of the development effort, expected performance standards,
and “build iterations” for software development.
Contract structure and type The FAR provides a wide selection of contract types and structures to
provide the needed flexibility to organizations to acquire a wide variety of
goods and services. However, to ensure that the contractor does not
perform inherently governmental functions, the organization should
carefully delineate the responsibilities of the contractor in the solicitation.
It may identify the types of decisions expected to be made and ensure
that federal employees oversee and make the final decisions regarding
the disposition of the requirements. These actions should guarantee the
contractor’s work does not become so extensive or close to the final
product as to effectively preempt the government officials’ decision-
making process, discretion, or authority.
The 18F office was established in March In March 2019, we met with Air Force
2014 as an office within the U.S. General officials to discuss how they have
Services Administration (GSA) that developed contracts for Agile programs.
collaborates with other agencies to fix Air Force officials said that they have
technical problems, build products, and chartered an acquisition agency that helps
improve how government serves the establish and manage Agile programs for
public through technology. In November components within the Department of
2018 we met with 18F officials to discuss Defense that have a similar software
their experience with contracting for Agile need. Working with these components
programs. through a memorandum of understanding,
the Air Force is able to act as a hub to
According to officials, not long after its
optimize different platforms for multi-
inception, 18F noticed an increased
domain operations. The Air Force initiates
demand from partner agencies for help to
small, short term contracts (e.g., ~3
support efforts to build new digital
months) for a low cost through a broad
services. In early 2015, 18F created and
agency announcement, which helps them
tested an Agile blanket purchase
scout capabilities through many
agreement (Agile BPA), under GSA
contractors at once. They also establish
Federal Supply Schedule 70, Information
mid-term length contracts (e.g., <3 years
Technology. This Agile BPA was intended
in duration) when promising programs
to allow organizations to select
progress into a longer-term development.
developers from a pool of vendors that
Lastly, as an operational capability
use Agile methodologies and customer-
completes development, the necessary
centered design principles. Once the
contracts are put in place to ensure a
Agile BPA was established, it provided
smooth transition without a loss in
GSA with the flexibility to quickly award
productivity. An indicator that a program is
flexible contracts through a streamlined
ready to move to sustainment is when
ordering process. As part of competing
there are no new capabilities in
the Agile BPA, GSA wanted prospective
development. In addition, officials said
vendors to demonstrate their ability to use
that the Air Force typically uses an
Agile practices, GSA asked vendors to
indefinite delivery/indefinite quantity
publicly demonstrate their commitment to
contract to procure Agile development
customer-centered design and iterative
teams to fill specific software needs for
development by building open source
specific mission areas.
prototype software. In order to help other
organizations streamline their own Agile Through these three different categories
BPAs, 18F has provided examples of of contracts, officials said they identified
solicitation documentation on GitHub. 18F common factors that facilitate a successful
found that, by using an Agile BPA, 18F Agile program. For example, the contract
did not need the vendors to state that should have a scope broad enough to
they could operate in an Agile manner provide leeway for decisions. This
each competition but could instead focus flexibility allows for continuous evaluation
on the specific details for that contract of capability delivery throughout the
and avoid duplicative administrative contract’s life cycle. The Air Force also
acquisition work. found that it is important to document
relationships and responsibilities among
the interested parties and have an active
The Agile BPA, a simplified method of and engaged product owner. Officials said
filling anticipated repetitive needs for that having defined roles helps to manage
goods or services by establishing “charge expectations of stakeholders and
accounts” with qualified contractors, was empowers the product owner.
an experiment in modular contracting.
Based on lessons learned from the BPA,
18F warned against using open source
prototype software and organizations pre-
establishing vendor pools with large
durations without the ability to onboard or
off-board vendors. Without this capability,
a permanently fixed vendor pool could
yield stagnated competition with vendors
only competing for larger buys.
Both of these examples show that keys to successful contracting include ensuring that
the contract is structured so that it reflects the program and can react to updates in the
program without overly burdensome paperwork. A contract should also reflect learning
from previous contracts to further improve the contracting process.
Incorporate Agile
metrics, tools, and
lessons learned from
retrospectives during
the contract oversight
process
Contract data requirements Typically, an IT contract is structured with contract data requirements
rely on Agile metrics (referred to as a contract data requirements list) and relies heavily on
documentation and major reviews at predetermined milestones. However,
the primary deliverable for an Agile program is working code; that is, code
released to the customer that adds value to the program. Therefore,
programs that adopt Agile methods should tailor the contract’s contract
data requirements list to align with Agile metrics to reflect the different
processes and artifacts used in Agile.
There are many points throughout the Agile development life cycle that
offer the opportunity to collect data about the quality of the software
products. The quantity and type of contract data requirements established
in the contract should account for the program environment. Due to the
anticipated close and continuous work coordination between the
government and contractors, the number of formal deliveries for contract
data requirements list may be less than what is collected for a traditional
IT acquisition. To that end, mindful tailoring of the contract data
requirements list as part of the contract should be performed. If the
contract data requirements list does not account for the Agile
development program environment, the program may miss the
opportunity to collect data about the quality of its software products.
Data from Agile artifacts Programs should also collect actual data associated with the program’s
enables contract oversight releases, features, and capabilities to enable contract oversight and hold
contractors accountable for producing quality deliverables. Agile metrics
A program office and contractor can track several different Agile metrics
for requirements, cost, schedule, performance, architecture,
size/complexity, test, and risk in order to ensure that the organization is
adequately monitoring the contracted development effort. If the program
does not collect Agile metrics for technical management, program
management, and Agile methods, the government may not have the right
information for effective contract oversight and will not be able to hold the
contractors accountable for producing high quality deliverables. Table 10
provides an overview of these three metric categories that can be used
throughout the Agile development life cycle to help enable effective
contract management and oversight. Additional information regarding
best practices to establish program-specific metrics is included in chapter
8.
Beware of self-reporting
The process of choosing which metrics to use for contract oversight should include
thoughtful consideration of what information most clearly shows how the contractor’s
work adds value to the program. Some metrics can be collected via self-reporting. For
example, velocity is a measure of the rate at which the team delivers a user story. It is
not comparable from team to team, and should not be used to distinguish one team
from another. It is very easy to show an increase in velocity without adding value to the
program by inflating story point estimates. In other words, increasing velocity does not
always indicate a change in productivity.
Conduct retrospectives to In addition to including metrics in a contract for an Agile program, the
continually improve based on organization should require reviews with stakeholders to interact with the
lessons learned developers and product owner in order to better understand the goals for
the end product. The interaction can provide valuable insight to help
inform contract oversight. The following are sample questions that can be
asked at a retrospective with developers and what their answers might
imply.
1. When was the last time a program delivered working software to the
customer?
Implication: The longer the time frame from when the customer need
is identified to the delivery of working software, the greater the risks to
the program.
2. Does the program build a minimum viable product to test the riskiest
assumptions?
Implication: A minimum viable product solves the core customer
needs as soon as possible and helps to validate needs, reduce risk,
and help the program’s course correct quickly, if necessary.
3. What impediments currently facing the program can the sponsor help
remove?
Implication: Agile values leadership through empowerment rather than
power; that is, those who enable others’ success by the ability to use
their position to make others’ jobs easier and more efficient.
4. Does the program have lessons learned to share with the
organization?
Implication: Sharing this information with sponsors and throughout the
organization will help organizations identify efficiencies across
programs.
5. Do you need better clarity regarding feature prioritization?
Implication: Goals and priorities are critical in Agile planning and work
better if aligned with organizational strategic goals.
6. What is your biggest bottleneck?
Implication: A key Agile principle is to promote sustainable
development. Normalizing the workload at a system level helps
developers to meet schedules and find additional organizational
efficiencies.
7. How has the program improved since its last review?
Implication: Improvement shows that the team is reflecting on how to
become more effective and adjusts the behavior accordingly. In Agile,
it is important that teams review processes so that they can improve.
8. Is the customer satisfied with the results?
Implication: Working software is the primary measure of progress and
customer satisfaction is an indicator that the program is prioritizing
early and continuous delivery of valuable software.
9. Are iterations finished as planned or are unfinished requirements
pushed to the back of the backlog for future iterations?
Implication: Moving unfinished work to the end of the backlog should
not be done without input from the product owner as the backlog
should be maintained so that the program can ensure it is always
working on the highest priority requirements to deliver the most value
to customers.
Contract oversight reviews Contract oversight reviews should align with the program’s Agile methods
align with the program’s Agile and cadence. For example, in a Waterfall model, technical reviews are
cadence used as control gates to move from one sequential phase to the next.
These formal reviews provide traditional programs the opportunity to
discover risks so they can be mitigated before moving on to the next
phase of development. However, in an Agile program, the focus is on
completing each work unit quickly in order to provide a releasable product
in a short period of time. As a result, Agile programs tend to use technical
reviews as an opportunity to share information face-to-face and to build
team confidence. A byproduct of this approach is that problems are
discovered early, often before they become too big to control.
Generally, if reviews for the program are not tailored to align with the
program’s Agile cadence, the review structure could impede progress and
cause delays.
77How dedicated onsite contracting staff is to the Agile team is a decision for the program
office to make and depends on many factors, such as the complexity, duration, and size of
the contract. Another consideration is the availability of adequately trained staff. In order to
maximize effectiveness, the program’s acquisition personnel should have a thorough
understanding of the program’s Agile methods.
There are various roles and offices involved in the planning, managing,
and executing an Agile contract. Figure 10 depicts these roles.
Figure 10: Roles When Planning, Managing, and Executing an Agile Contract
a
Contracting personnel typically includes a warranted contract officer, who has express authority to
enter into and administer a contract on behalf of the government and a contract specialist who can
act as a business advisor to program managers; contracting personnel typically assist in planning the
acquisition of goods and services, help negotiated the terms of the contract and provide contract
management and administration services.
b
The product owner is the “voice of the customer,” and is accountable for ensuring business value is
delivered by creating customer-centric items (typically user stories), ordering them, and maintaining
them in the backlog. See appendix II: Key Terms for more about the definition of a product owner.
c
The contracting officer’s representative (COR) is a technical expert designated by the contracting
officer to perform specific technical and administrative functions. The COR may provide day-to-day
oversight of the contractor and reviews deliverables to ensure that they meet government
requirements for quality, completeness, and timeliness.
d
The program office refers to all other personnel who support the program. This can include legal
support, program monitoring and control support, and program management support. It is important
that all personnel who support the program are familiar with Agile processes.
e
As discussed in chapter 3, the development team consists of the software developers, team
facilitator, and subject matter experts who code the features for the program.
The product owner is typically associated and familiar with the business
aspects of the program office, while the COR has more technical skills.
However, it is important that the product owner and the COR both
understand the program and teams’ Agile methods and that there is one
government focal point for the team to interact with. In other words, the
product owner serves as a bridge between the COR (who generally
judges the technical quality of the contractor’s work for acceptance on
behalf of the contracting officer) and contractor, while also working to
integrate the program office and developers to ensure that the customer
receives the expected business value for the work. As long as the product
owner and the COR remain in close communication, they can continue as
separate roles. Additionally, the product owner and COR work closely to
align the program’s business and technical requirements. Typically, both
the COR and product owner should be government employees so that
they can be empowered to make day-to-day decisions for the
development effort. If the product owner is not a government employee,
the product owner may not be empowered to make day-to-day decision
for the development effort, thus causing development delays.
requirements within the scope of the program’s road map. Together, the
contracting officer, product owner, and government members of the
development team (e.g., the developers, subject matter experts, and
team facilitator) should consider the following questions as the acquisition
strategy is developed:
Awareness of the contract’s Contracting personnel must also watch for “scope creep,” where
scope requirements are added to the contract without other work being identified
as lower priority. If additional requirements are identified by the customers
after a contract has been awarded, but are still within the scope of the
contract, contracting personnel (along with other members of the Agile
team) should ensure that there is enough time on the contract to
complete the additional work or whether these requirements can
substitute for currently-identified features. This is done by examining the
statement of work or sequence of operations to ensure that new work is
within the scope of the contract and by prioritizing the work in the backlog.
If new work, outside of the contract’s scope is identified and found to be a
higher priority to accomplish goals that are outside the scope of the
current contract, then the contracting officer may issue an out-of-scope
modification to add work to the contract. 78 Contract modifications should
be infrequent if the program’s vision and high-level capabilities are broad
enough so that features resulting from breaking down requirements can
be added to the backlog within the contract’s current scope. 79
and Control
The WBS is the framework used by federal agencies to organize the work
into manageable, smaller components. It is an essential input to three
principle program controls used by federal agencies: cost estimating,
scheduling, and EVM. 80 Using the work breakdown structure, a program’s
cost estimate and schedule are developed and, if warranted, they can be
combined into one baseline used to measure program performance. A
major benefit performance management tracking provides is the
identification of cost and schedule variances from the overall baseline
plan so that program risks can be quickly discerned, tracked, and
managed. GAO has established cost, schedule, and EVM best practices
in best practices guides. 81
80A WBS breaks down product-oriented elements into a hierarchical parent/child structure
that shows how elements relate to one another as well as to the overall end product. A
WBS provides a basic framework for a variety of related activities including estimating
costs, developing schedules, identifying resources, and determining where risks may
occur. It also provides a framework to develop a schedule and cost plan that can easily
track technical accomplishments—in terms of resources spent in relation to the plan, as
well as completion of activities—enabling quick identification of cost and schedule
variances.
81GAO, GAO Cost Estimating and Assessment Guide: Best Practices for Developing and
Managing Program Costs, GAO-20-195G (Washington, D.C.: Mar 12, 2020) and GAO
Schedule Assessment Guide: Best Practices for Project Schedules, GAO-16-89G
(Washington, D.C.: Dec. 22, 2015).
With the end product in mind, the WBS creates a hierarchical structure
that shows how program elements relate to one another and the overall
program. Similarly, Agile programs break down the work into successive
levels of effort: epic, feature, and user story. Each of these Agile levels
depict what the work entails and how it relates to higher-level program
goals and the final product. 83 The levels of effort are described here.
User story: The user story is the smallest level of detail in an Agile
program and is subject to change based on customer feedback. For this
reason, a user story can be added to or deleted without altering the
overall scope of the features. A user story is weighted for complexity
using story points. It can be used as quantifiable backup data for EVM;
82A separate WBS document is not the only solution. Chapter 5 discusses how the
concept of backlog refinement is used to decompose requirements as more information
becomes known. It also describes a set of strategic requirements necessary to justify a
program that can be used to develop a WBS and some form of EVM measurement to
achieving these goals.
83As with any WBS, more detail can be added as additional information is discovered
about the program. The WBS should ultimately be based on existing Agile artifacts (e.g.,
the road map) to reinforce traceability between program monitoring and controls and Agile
planning documents.
however, a user story should only be added to the WBS after release or
iteration planning and be traceable to the prioritized backlog.
The program WBS provides a common structure for cost, schedule, and
EVM. In an outcome-based Agile environment, the WBS is hierarchical,
product-based, and contains the total program scope. Further, the WBS
should reflect high-level capabilities identified in the road map as well as
varying levels of detail at the epic and feature levels when this information
is available, typically only for near-term work. At any specific time, the
WBS should inform the necessary technical activities needed to
sufficiently complete a feature. As program requirements are
decomposed to capabilities (or epics) and features, the derivation of the
WBS should remain traceable to the program’s cost, schedule, and EVM
work, as appropriate. The program should also establish defined
completion acceptance criteria to ensure that performance measurement
is consistent and traceable. In this way, the relationship between a
program’s progress and its technical achievement can be maintained.
84GAO, GAO Cost Estimating and Assessment Guide: Best Practices for Developing and
Managing Program Costs, GAO-20-195G (Washington, D.C.: Mar. 12, 2020).
Table 11: 12-Step Cost Estimating Process and Agile Cadence Examples
12-Step estimating process step and definition Agile environment and the GAO cost estimating process
Step 1: Define the estimate’s purpose During release or initial planning, determine how any cost
The purpose of a cost estimate is determined by its intended use, estimates will be used.
which determines its scope and detail.
Step 2: Develop the estimating plan During initial planning, identify the cost estimating team that will
This step involves selecting the estimating team members and develop the estimate and any technical experts that will be
developing a schedule that includes enough time to perform all needed to support the estimating effort. The estimate plan should
steps commensurate with the estimate’s purpose. also include details about when the government program office
plans to update the estimate with Agile metrics.
Step 3: Define the program These steps (steps 3-7) should first occur during initial program
Program personnel identify the technical and programmatic planning with the development of a road map or vision and be
parameters on which the team will base the estimate. This updated as the estimate is refined at established intervals, such
information should be kept updated at all times so that it remains as after a release, in support of program milestone reviews, or
current. whenever there are updates to the road map. Agile performance
measures and artifacts such as burn up/burn down charts,
Step 4: Determine the estimating structure velocity metrics, and the product backlog can be used to update
This step defines at various levels of detail what the program the estimate accordingly.
needs to accomplish to meet its objectives. Typically, estimators It is important that the cost estimating team is integrated into
will have access to a work breakdown structure (WBS) that release planning so that team members can fully understand the
decomposes the work into a product-oriented, hierarchical changes to the plan and update the estimate to reflect those
framework supplemented by common elements like program changes that occur naturally during the Agile process (e.g.,
management, systems engineering, and systems test and additional detail is provided through a requirements
evaluation, etc. A WBS promotes accountability by clearly decomposition process).
identifying work products and enables managers to track technical
An independent cost estimate should be developed after the
accomplishments. It also outlines how program elements
initial cost estimate and then repeated at major milestone reviews
progressively subdivide into more detail as new information
for the program. Between estimates, a sufficiency review of the
becomes available.
cost estimate after major updates should be performed to assess
Step 5: Identify ground rules and assumptions the credibility of the program office estimate.
The estimating team establishes ground rules that represent a
common set of agreed to estimating standards such as what base
year the team will use to express costs, the number of expected
program quantities, and the anticipated contracting strategy. When
information is unknown, the estimating team must fill the gaps by
making assumptions so that the estimate can proceed. Because
many assumptions profoundly influence cost, management should
fully understand the conditions the estimate was structured on.
Well-supported assumptions include documentation of their
sources along with a discussion of any weaknesses or risks.
Step 6: Obtain the data
The team collects, normalizes, documents, and archives the cost,
schedule, programmatic and technical data it will use for the cost
estimate.
12-Step estimating process step and definition Agile environment and the GAO cost estimating process
Step 7: Develop the point estimate and compare it to an
independent cost estimate
The team creates a time-phased cost estimate for each WBS
element using a variety of techniques including analogy,
parametric, and engineering build up. Once each WBS element
has been estimated using the best methodology from the data
collected, the estimating team adds all WBS costs together to
determine the program’s point estimate. This “point estimate”
represents the best guess at the cost estimate, given the
underlying data and represents one potential cost among a range
of many possibilities. To validate the estimate, the team reviews it
for errors as well as any omissions and compares it to an
independent cost estimate to understand where and why there are
any differences.
Step 8: Conduct sensitivity analysis Sensitivity analysis should be performed after the initial point
The team examines the effect of changing one assumption or estimate has been developed and then updated whenever the
variable at a time while holding all other estimate inputs constant in point estimate is refined to determine if there are any changes to
order to understand which factors most affect the cost estimate so the estimate’s cost drivers and what impact those changes have
that cost drivers are evident. on the overall cost estimate.
Step 9: Conduct a risk and uncertainty analysis Risk and uncertainty analysis should be conducted to better
Using a risk and uncertainty analysis, the team quantifies the understand the risk range around the cost estimate due to
cumulative effect that uncertain data inputs, changing variations in estimating assumptions such as sizing metrics,
assumptions, and variations underlying estimating equations have velocity, number of iterations, and labor rates. This analysis
on the estimate. Based on probabilities produced from the should be repeated after major updates to the cost estimate.
analysis, the team determines a range of costs associated with the
point estimate so that management can decide how much
contingency funding it needs to mitigate potential risks.
Step 10: Document the estimate Documentation of the cost estimate should be updated regularly
The team documents its entire estimating process including what following the same cadence that the Agile program has
assumptions, data sources, and methodologies it used. The established for updating other program management documents
documentation should reflect sufficient detail so that someone such as the vision, road map, and product backlog.
unfamiliar with the program can easily recreate the estimate and
get the same result.
Step 11: Present the estimate to management for approval Management should review and sign off on the estimate and its
The team presents management with an overview of the estimate underlying ground rules and assumptions before any major
that contains enough information about the basis for the estimate program reviews (as established and required by the
including the quality of the program definition, availability and organization) so that the most recent and applicable information
reliability of the data, and key assumptions made. The is available to inform decisions. Management should review and
presentation should also include the outcome of the risk and approve the presentation to show their understanding of the
uncertainty analysis so that management can approve the documented assumptions.
estimate at a confidence level of its choice.
12-Step estimating process step and definition Agile environment and the GAO cost estimating process
Step 12: Update the estimate to reflect actual costs/changes The estimate should be updated with information taken from
The team continually replaces the original estimate with actual Agile artifacts and measures (e.g., burn up/down charts, velocity,
data and records reasons for variances and any lessons learned. actual vs. planned work, changes in requirements, program risk
The team refreshes the estimate on a regular basis using EVM assessments, etc.) at predetermined times that align with the
information and updates the estimate to reflect major changes. program’s Agile cadence. While new data is created and should
be captured in each iteration, it is recommended that the cost
estimate be updated before any major milestone decision in order
to provide the most recent information to decision makers. For
example, if the program plans to negotiate a new development
contract, the estimate should be updated to help provide
information for the contract negotiation process.
Source: GAO. | GAO-20-590G
Credible: Agile cost estimates are credible when input (e.g., the assumed
number of iterations, velocity, etc.) has been tested for sensitivity, and a
confidence level for the point estimate has been determined based on risk
and uncertainty analysis, cross checked by cost estimators using another
estimating method, and compared to an independent cost estimate with
similar results. These analyses can provide insight, whether extra
iterations or additional resources are needed to deliver the must have
features identified by stakeholders and customers.
Credible • Customer feedback from retrospective to provide insight into risks and priority of requirements.
• Retrospective and release planning executive briefings should discuss threats and opportunities, including team
size, management support to avoid distractions, availability of tools to aid Agile efforts, and external
dependencies.
• Daily standup meetings and other techniques used to mitigate threats and take advantage of opportunities for
the program.
Source: GAO. | GAO-20-590G
Since Agile programs have flexible requirements and fixed budgets for an
Considerations for iteration, some have argued that conventional performance management
developing a cost tools, such as life cycle cost estimating, are not applicable to Agile
programs. Those arguments are made because Agile programs have
estimate for an Agile structures and processes that are dynamic and iterative and spread
program planning activities throughout the program’s duration instead of
conducting extensive planning upfront, as in traditional program
development. However, as previously mentioned, reliable cost estimates
are still applicable as all federal programs must follow the federal
budgeting process. In addition, program controls provide necessary
oversight that legislators, government officials, and the public can use to
observe whether government programs are achieving their goals. The
following are three areas should be examined for Agile programs when
developing a cost estimate:
Consistent sizing While relative estimation methods, as discussed in chapter 3, are typically
used by developers throughout the estimating process, these methods
can vary from team to team on a single Agile program and do not provide
a consistent measure that can be used to develop a cost estimate. This
lack of consistency creates a challenge for cost estimators to normalize
the data received from the program’s reporting metrics (e.g., the burn
up/down charts).
In March 2019 we met with the Department of Homeland Security’s Cost Analysis
Division to discuss how they piloted a simple function point analysis methodology to
estimate Agile software development costs for acquisition programs. According to
officials, this methodology uses the correlation of transactions to functional size, which
is known to be correlated to program cost. The Simple Function Point Association, an
international non-profit association dedicated to evolving and promoting Simple
Function Point methods, has published a measurement manual, examples of counting
in simple function points, and templates to facilitate the calculation of measurements.
The Cost Analysis Division used this measurement manual as the basis for elementary
process factors.
The Cost Analysis Division used a program’s concept of operations document as the
basis for determining the number of function points. The concept of operations is to
describe the functional capabilities of a program, including a comprehensive list of
business functions and a list of all applicable stakeholders. In addition, the Cost
Analysis Division decomposed the functional capabilities into three types of
transactions: elementary processes, saves, and interfaces.
Officials described the process used to develop a simplified function point estimate:
over a period of two to three days, one Cost Analysis Division analyst will review the
concept of operations and manually count the number of action verbs (e.g., “create,”
“submit,” “maintain,” “receive,” “respond,” “withdraw,” “register,” “appeal,” “cancel”).
Each verb is associated with a number of transactions. Each type of transaction is
weighted based on difficulty to develop, with elementary processes having the lowest
weight and interfaces having the highest weight. The analyst then estimates function
points by summing the weighted value of each transaction. After the count has been
completed, a second analyst will review the number. Once finalized, the Cost Analysis
Division works with the Chief Technology Officer, Program Office, and Chief
Information Officer to validate the count.
After the function point count has been validated, the cost analysis division uses
historical data and industry standards to develop and apply a productivity factor to the
count along with other factors to account for growth, complexity, and uniqueness. The
function point count multiplied by the various factors results in a cost estimate. Lastly,
the Automated Cost Estimator tool of the ACEIT software suite is used to determine a
final risk adjusted output.
Because Agile considers high-level requirements in the long term as opposed to
knowing requirements up front, the Cost Analysis Division believed that using simple
function point analysis would give cost estimators a faster, reliable, repeatable process
for cost estimates and will allow program managers and oversight groups to track and
manage progress toward completion by tracking estimated function points.
Cost Analysis Division officials noted that the simple function point analysis
methodology still needs further research and refinement to properly calibrate the tool
they created and discover appropriate uncertainty distributions.
No matter which sizing method is chosen, actual costs can vary widely
from the estimated costs. As a result any point estimate should be
accompanied by an estimated range of probability, as identified in step 9
of the GAO 12-step estimating process listed previously in this chapter.
This is especially important for initial program estimates that are used to
develop a budget.
Expertise of the developers There is no generally recognized standard unit of measurement for any of
the common approaches to Agile estimation. That is, story points, user
stories, etc. are all subjective and dependent on the experience and skills
of the developers. As a result, cost estimators for Agile programs rely on
the composition and expertise of the developers. Therefore, to improve
the quality of the estimate, cost estimators should be integrated with the
developers and should participate in release planning sessions to
understand the relationship between the backlog and the developers’
relative estimating techniques so that they can further refine the total
program’s cost estimate.
Cost estimating benefits Cost estimating for an Agile program can be challenging, especially for
teams new to Agile development. 85 However, a reliable cost estimate can
provide benefits to an Agile program. For example, the cost estimate can
be used to support the government budgeting process and to help inform
management decisions.
85As discussed in the GAO Cost Estimating and Assessment Guide: Best Practices for
Developing and Managing Program Costs, GAO-20-195G, there are many challenges to
estimating software costs. These challenges will apply to Agile programs, especially when
deriving an initial estimate for program initiation. See the GAO Cost Guide software
appendix for more information.
These steps have been collapsed into four general characteristics for
sound schedule estimating: comprehensive, well-constructed, credible,
and controlled.
Table 14: 10-Step Schedule Estimating Best Practices and Agile Cadence Examples
Step 6: Confirming that the critical path In the schedule, critical path management • Epics and features sequenced
is valid should be performed at the epic and feature according to the road map
The schedule should have a valid critical levels, since Agile software development
path—this path defines the program’s could impact the critical path with non-Agile
earliest completion or minimum duration. software development tasks. For an Agile
The critical path should be the path of program, the critical path is managed
longest duration through the sequence of during iteration planning and daily standup
activities. meetings.
Step 7: Ensuring reasonable total float Float is tracked at the epic and feature • Burnup/down charts
The schedule should identify reasonable levels.
float (or slack), which represents an
estimate of the overall flexibility of the
program.
Step 8: Conducting a schedule risk As mentioned, even though iterations are • Iteration 0 planning
analysis time boxed, a schedule risk analysis can • Iteration planning sessions
A schedule risk analysis uses a good help provide a confidence level to the
• Retrospectives
critical path method schedule and data schedule’s end date to determine if
additional resources need to be added to • Assumptions regarding the number of
about program schedule risks to predict
deliver all must have features. To do this, iterations, story points, and velocity
the level of confidence in meeting a
program’s completion date. risk ranges should be applied to all
assumptions, including the number of
iterations needed and the team velocity
measures. Risk analysis also helps identify
threats and opportunities (e.g., team size,
management support, availability of tools,
etc.) facing the program. Additionally,
iteration planning sessions provide valuable
information on particular risks that could
impact the delivery of must have features
that can be used to inform the risk analysis.
Step 9: Updating the schedule using In Agile programs, feature development • Epics and features are included in
actual progress and logic progress is updated at the end of each program schedule
Progress updates and logic provide a iteration and the cumulative results for all of • Prioritized backlog
realistic forecast of start and completion the features and epics are displayed
• Burnup/down charts
dates for program activities. through burn up/down charts. Quantifiable
back-up data regarding the completion of • Retrospective summaries
user stories should inform feature progress.
Additionally, retrospectives are conducted
to capture lessons learned at the end of
each release to reduce future risks, improve
customer commitment, and motivate teams.
Demonstrations of working software
determine stakeholder and customer
satisfaction. Finally, daily standup meetings
are conducted to check feature
development status during iterations and
any impediments the team is encountering.
If the program requires more time to finish
the epics and features, then the schedule
should be extended to reflect this delay.
Step 10: Maintaining a baseline The road map and release plans become • Iteration planning sessions
schedule the baseline from which to measure • Prioritized backlog
A baseline schedule is the basis for schedule variances. Demonstrations of
• Releases plans and reports
managing the program scope, the time working software determine stakeholder
and customer satisfaction. Additionally, • Retrospective reports
period for accomplishing it, and the
required resources. The baseline schedule retrospectives are conducted to capture
is designated the target schedule. lessons learned at the end of each release
to reduce future risks, improve customer
commitment, and motivate teams.
Source: GAO. | GAO-20-590G
Planning for all activities While Agile emphasizes that only near-term work is planned in detail
(e.g., the next iteration), programs need to define their overall goal in a
vision and plan the releases needed to satisfy the vision. The detailed
plan is subject to change, but the vision provides a high-level view and
direction for the work to be accomplished for the entire program.
Additionally, while the team self-organizes its own work, it must be
cognizant of dependencies with other teams, related Agile and non-Agile
programs, and equipment.
using rolling wave planning. This schedule should include all government
and contractor activities. Developing an integrated master schedule for
the whole program provides a comprehensive, end-to-end view of all the
features necessary to accomplish the program’s goals. Including features
enhances the utility of the schedule as a coordination and communication
tool and allows for better performance tracking and measurement. For
example, additional information in the schedule helps to ensure that it can
serve as the summary, intermediate, and detailed schedule. Including
high-level features in the schedule is also a foundational best practice for
most other scheduling best practices, because if the schedule does not
contain planning for all the features for the duration of the program, it will
lack horizontal and vertical traceability, a valid critical path will not exist,
and the schedule’s risk analysis will not be valid.
Minimize the use of schedule A common approach in Agile software development is to develop and
constraints deliver working software in fixed-length iterations, typically 2-4 weeks in
length. Constraints may appear to provide a straightforward way to model
the fixed start and end dates of iterations; however, using constraints
reduces the utility of the schedule as a coordination tool among Agile
teams, management, and other resources. The value of this coordination
is highlighted by several effective practices for applying Agile methods on
federal IT programs, such as effectively involving experts and other
resources, addressing requirements related to security and progress
monitoring, and identifying and addressing impediments at the
organization level as well as within the program. 86
Additionally, removing constraints from the schedule end dates allows the
schedule to supplement the duration planning information included in
other Agile tools for tracking. By managing teams to observe what work is
scheduled to occur after milestones are set during early Agile planning,
program managers can make key decisions (e.g., whether more
resources are needed to complete the work in the set time frame or if
those requirements can be completed after the Agile deadline).
Assign resources Because Agile emphasizes stable and self-organizing teams, one might
think that resources (e.g., the developers) do not need to be explicitly
assigned and managed. However, many activities require interfacing with
resources outside of the program, such as activities involving subject
matter experts and non-labor resources. Agile emphasizes working at a
sustainable pace, including resources in the schedule can help ensure
this occurs by providing insight into developers’ availability and when
additional equipment is needed.
Conduct a schedule risk Agile self-organizing teams and iterative processes can be viewed as
analysis ways to mitigate risk in complex software programs. Accordingly, some
might argue that conducting a schedule risk analysis is unnecessary.
However, all programs face risk and uncertainty and the likelihood and
consequences of each risk should be examined. For Agile programs,
effective practices include developing initial plans at a high level and
updating frequently as more is learned about the program. Further, the
potential impact of some issues, such as technical debt or team size,
should be considered earlier rather than later.
should also be considered in terms of fixed time boxes aligned with the
program’s cadence (e.g., number of iterations) and what desired scope
(e.g., user stories in the prioritized backlog) may be affected or re-
prioritized. Lastly, the schedule risk analysis should consider the risks that
are most likely to delay a program. For an Agile program, this could
include risks affecting team performance, such as team size or the
availability and feasibility of tools and practices necessary to achieve the
team’s goals. For example, a commonly accepted Agile practice is the
use of continuous integration to automatically run unit and integration
tests every time code is checked in. This greatly increases the speed of
testing and provides instant feedback on code quality, so if the team
plans to use continuous integration but is not provided the resources to
implement it, the program would likely not be able to meet all the
requirements in the time allotted.
Develop and use a schedule A central tenet of Agile is to welcome change. As a result, teams practice
baseline rolling wave planning, in which only near-term work is planned in detail.
However, welcoming change does not mean that software is developed
and delivered in an undisciplined or ad hoc manner. Agile’s priority to
deliver software in iterations, typically in time boxed iterations of 2-4
weeks, is guided by the program’s vision, which establishes a high-level
definition of the cost, schedule, and scope goals for the program and
provides a basis for specifying expected outcomes for each iteration.
These critical features identify the program’s schedule baseline and thus
allows product owners to reprioritize work in accordance with the vision at
the end of each iteration.
In creating the baseline using the rolling wave planning process, updates
should contain enough detail to enable a collaborative agreement
between product owners and developers without making schedule
updates overly frequent or cumbersome. As the schedule is updated,
changes should be documented in progress records and the schedule
narrative. For example, this could include using data from the completed
backlog and burn up/down charts. Schedule trends should be used to
identify deviations from the baseline and to understand the need for
changes. Developing and using a schedule baseline provides a good
basis for measuring and understanding progress and maintaining
accountability.
There are other methods besides EVM that can be used to track
performance for Agile programs; however, effective performance
management practices should still be in place, regardless of the
development paradigm. For example, volume 1 of the DOD section 809
Report states that the program manager should approve the appropriate
program monitoring and control methods, which may include EVM. 87 The
report states that these methods should provide faith in the quality of the
data and, at a minimum, track schedule, cost, and estimate at completion.
It adds that program managers should select the appropriate resources
for their toolkit based on program characteristics. For example, an Agile
programs should use real-time tools designed to track and monitor Agile
software development. In other words, for EVM to work with Agile,
program office staff must tailor EVM to integrate into the overall program
management approach.
87Section 809 Panel, Report of the Advisory Panel on Streamlining and Codifying
Acquisition Regulations, Volume 1 of 3, section 4: “Earned Value Management for
Software Programs Using Agile”, (Arlington, VA: January 2018).
The GAO Cost Guide also describes key benefits of using EVM. These
include improving insight into program performance, reducing cycle time
to product delivery, focusing management attention on the most critical
issues, fostering accountability, and providing objective information for
measuring progress. While Agile approaches should reduce program
technical risks through early delivery, EVM can provide additional insight
into the relationship between scope, cost, and schedule and this
integrated data can be used to better inform management decisions.
88DOD Instruction 5000.02T, table 9 (Jan. 7, 2015, incorporating change 6, Jan. 23, 2020).
Activity 7: Execute the work plan and record all costs The level at which effort is converted into cost in the performance
measurement baseline should be defined and traceable to Agile metrics
captured by the program. These metrics can vary from program to
program, but some common ones to consider tracking are the iteration
burn down chart, cycle time, and cumulative flow diagram.
Activity 8: Analyze EVM performance data and record Variances should be determined at the work package level within each
variances from the performance measurement baseline control account based on quantifiable backup data that supports each
associated feature. For example, an iteration burn up chart can show
what work that was planned was not accomplished during the iteration.
Further, release retrospectives can highlight impediments that occurred
during a release and highlight whether feature development is on track
according to the road map developed at the beginning of the release.
Activity 9: Forecast estimates-at-complete using EVM Metrics generated from Agile tools can typically be used to forecast
estimates-at-complete. Adding the completed work and the remaining
work divided by an efficiency factor yields an estimate-at-complete. The
efficiency factor is calculated by dividing the completed work by the
effort used to perform that work.
Activity 10: Conduct an integrated cost-schedule risk Similar to a cost risk/uncertainty analysis and schedule risk analysis, an
analysis integrated cost-schedule risk analysis can be completed by developing
risk distributions around Agile-specific metrics to provide a range around
the program’s cost and schedule related to the total number of
requirements in the prioritized backlog.
Activity 11: Compare estimates-at-complete from EVM These two steps should be performed for Agile programs as they are for
(step 9) with estimates-at-complete from risk analysis (step other programs.
10)
Activity 12: Take management action to respond to risks
Activity 13: Update the performance measurement Activities in the product backlog and road map at the feature level should
baseline as changes occur have an assigned budget that is under baseline control. Changes to the
backlog at this level should be documented and should occur in
accordance with baseline change processes. Any changes that occur
can be documented and reviewed by management in release
retrospective notes.
Source: GAO analysis of data from DOD, National Defense Industrial Association’s Integrated Program Management Division, and GAO. | GAO-20-590G
In February 2018, we met with The National Nuclear Security Administration’s (NNSA)
Generation 2 (G2) to discuss how they meet the Office of Management and Budget’s
(OMB) Capital Planning and Investment Control (CPIC) reporting requirements for
major IT Investments. Officials said that they worked closely with OMB and NNSA
senior management to meet the program’s CPIC reporting requirements to align the
program’s Agile methods. For example, officials said that G2 defines “project” as a
program increment (e.g., 14 weeks comprised of seven two-week iterations).
However, because CPIC’s project reporting structure did not align with G2’s Agile
cadence or contractors’ cost reporting requirements, officials said that reporting cost
and schedule variances for CPIC reports posed a challenge to G2. As a result, the
program developed a repeatable and transparent way to proportion their cost and Agile
cadence to the CPIC reporting structure. To determine the prorated project cost of a
program increment within a month, G2 calculates the number of days for the program
increment in a month compared to the total days and proportion it has to the actual
effort charged for the whole program. Since the activities are time boxed with variable
scope, there is no schedule variance.
Officials said that, although this allows G2 to follow CPIC reporting requirements,
resulting variances may be misleading and require further explanation. For example,
G2 provided the following rationale for a cost variance in its August 2019 CPIC monthly
report: “Project/activity PI12 completed on schedule and finished with a positive 3%
financial variance as previously projected.”
CPIC reporting also requires a documented risk register. Officials said that, while G2
addresses high-level risks through a traditional risk register, the program primarily
addresses risk through activities (e.g., release planning and retrospectives) as part of
using the Agile methodology. For CPIC reporting, risk actions are typically reported at a
high level, tying updates to formal risk reviews for each program increment in the
reporting period.
the program will be over budget and a negative schedule variance if the
program is behind schedule.
Figure 12: Traditional and Agile Earned Value Management Tracking Methods
Tracking work breakdown One of the major concerns with applying EVM to Agile programs is the
structure detail level of detail tracked in the work breakdown structure. As previously
discussed, the WBS used for EVM, like the one for the integrated master
schedule, should not track Agile data at the level of iterations or user
stories, but should be monitored at a higher level, including features and
epics. Given the dynamic nature of Agile, tracking at too low a level will
not yield valuable data because of the frequent changes made. However,
the Agile data at the iteration level (e.g., the prioritized backlog) should be
available for use as quantifiable backup data for the work tracked in the
EVM system. 89 Figure 13 shows a hierarchy of Agile products, time boxed
elements, the relationships among them, how they relate to the EVM
system, and the different levels where EVM data are tracked along with
where Agile metrics can be used to provide quantifiable backup data.
89Quantifiable backup data is information that is used to gauge the progress of a capability
based on the technical completion of each feature, which, in turn, is based on the
accomplishment of the feature’s acceptance criteria.
a
One or more sized epics define the scope for the control accounts.
b
One or more features define the scope for the work packages.
c
A feature consists of multiple user stories. Multiple features are implemented in each release.
d
A user story is a small, well-defined system function that can be developed within one iteration.
Multiple user stories are implemented in each iteration.
Measuring earned value One way to establish EVM measures is to use the percent complete 90
method at the feature level. For example, at the feature level, percent
complete is calculated based on the number of associated user stories
that have been completed and some measure of the user story’s weight,
using the 0/100 method 91 to determine if a user story has been
completed. On completion, the full credit is taken for the user story. This
measure can be based on the number of story points. Figure 14 illustrates
this method of measuring earned value at the feature level.
Calculating variances Since lower-level Agile requirements (captured in the prioritized backlog)
are updated frequently, calculating variances between completed work
and planned work can be difficult. However, every program (including
90In the percent complete method, performance is equal to the percent a task is complete.
Percent complete should be based on underlying quantifiable measures as much as
possible and be measured by the status of the resource-loaded schedule.
91In the 0/100 method, no performance is taken until a task has been finished. This aligns
with the Agile concept of user stories; only user stories that are 100% complete are
counted at the end of each iteration.
𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 𝑤𝑤𝑤𝑤𝑤𝑤𝑤𝑤
𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 = 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 𝑤𝑤𝑤𝑤𝑤𝑤𝑤𝑤 +
𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒 𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖
𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟 𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒
𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒 = 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒 +
𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒 𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖
For a feature, effort could be measured in story points and the efficiency
index calculated as the ratio of total hours expended to total story points
for completed iterations for that feature. Estimated total effort for larger
elements, such as epics, could be calculated similarly, using story points
and hours expended; however, this requires the estimation of story points
to be consistent across the features that make up the epic. If different
teams have different story point estimation schemes, then the estimate-
at-complete will not be as accurate. In that case, it may be preferable to
use feature-level data to calculate estimated total effort for the epic that
comprises those features. A program level estimate-at-complete could be
composed of the sum of epic-level estimates at completion. Alternatively,
the program-level estimate-at-complete could also be calculated as
follows, where the velocity is the completed weighted user story value
across the program’s development teams divided by the total length of
iterations completed to date.
The remaining effort is the work remaining in the prioritized backlog and is
measured in story points. This formulation assumes that the development
teams have attained a stable velocity that will remain consistent through
the end of the program. These estimated effort equations can be easily
converted to estimated costs by replacing the completed effort with actual
costs to date and replacing the remaining effort with the budgeted costs
for the remaining backlog. That is, multiplying the effort hours by the
average labor rate will convert effort to cost.
Controlling baseline changes As mentioned previously, in order to have the ability to measure program
performance, there must be a baseline to measure against. Accordingly,
a process should be established to manage baseline changes. The goal
of this process is to preserve the integrity of the performance baseline
and to ensure it reflects the most current plan so that credible
performance measurement can occur. This process creates reliable data
for management to rely on for making program decisions. Initially, it may
seem that a formal change process interferes with the flexibility of an
Agile program to reprioritize the backlog from iteration to iteration.
However, a properly designed change process will not restrict the Agile
process while also maintaining a credible baseline.
• If a feature was originally planned for the current release and then
moved to a future release, then the associated baseline change action
would be to re-plan the feature into the future release and the
associated user stories would be returned to the backlog.
• If a feature is worked on during the current release, but not finished,
then the unfinished user stories are moved to the next release. In
most cases, this move does not constitute a baseline change;
however, failure to finish the feature within the planned release will
create a schedule variance and could possibly create a cost variance.
• If a feature is worked on during the current release, but the product
owner removes scope from the feature or associated epic, this would
Detailed best practice checklists are found in the companion guides; the
Best Practices GAO Cost Estimating and Assessment Guide (GAO-20-195G) and the
Checklist: Agile and GAO Schedule Assessment Guide (GAO-16-89G).
Program Monitoring
and Control
Organizations can use the following best practices to help them develop
meaningful metrics. 94
Each software development program should select and tailor its metrics
Identify key metrics according to the program’s chosen Agile framework. Additionally, different
based on the types of software development will need a tailored approach. For
example, customizing commercial software requires a different approach
program’s Agile than developing custom software for specialized hardware. Metrics
framework should also be transparent. For example, the program has a clearly
stated goal or objective with a metric that clearly conveys to the Agile
team what data to gather and to the customer what the metric means.
95See, for example, Information Security: Concerted Effort Needed to Improve Federal
Performance Measures, GAO-09-617 (Washington, D.C.; Sept. 14, 2009).
In July 2016, GAO reported that the U.S. Citizenship and Immigration Services
(USCIS) Electronic Immigration System (ELIS), the case management component of
the Transformation Program, partially met the key Agile practice of monitoring and
reporting on program performance through the collection of reliable metrics. GAO
found some metrics were reliable and addressed their intended purpose. For example,
the program provided evidence of collecting reliable metrics associated with code
quality. However, other metrics were either unreliable or were not collected. For
example, the program did not monitor internal USCIS user satisfaction with USCIS
ELIS. Therefore, it could not measure the level of satisfaction of adjudicators or others
using the system to facilitate the processing of applications.
GAO reported that USCIS ELIS calculated production defect/incident metrics,
automated code scanning results, code issue counts, and code development metrics to
gauge the quality of code delivered during a sprint. These metrics were included as
part of a monthly status report and used for high-level planning. The results of
measurements associated with these metrics identified underlying challenges the
program was facing with product quality. For example, production metrics showed that
the rate in which issues (e.g., defects, incidents, bugs) were found exceeded the rate
the issues could be closed. Such metrics may indicate a quality issue somewhere in
the development process; however, the use of the metrics allows the program to
identify such concerns and take steps to address them.
GAO also determined that USCIS ELIS did not measure internal user satisfaction.
Officials from the Quality Assurance Team (USCIS staff responsible for the collection of
program metrics) stated that they monitored issues raised by adjudicators and
adjudicator representatives during program reviews and retrospectives. Further, the
Chief of the Capability Delivery Division stated that the operational test agent obtained
internal user feedback on USCIS ELIS. However, the Chief of the Office of
Transformation Coordination explained that incident management (e.g., reporting
defects or issues by the field and service centers) and operational test agent reports
were not proven to be a useful tool for obtaining internal user feedback. As such, the
Chief stated that the Office of Transformation Coordination was developing a method
for capturing internal user satisfaction. Program officials did not elaborate on the steps
the program was planning to take to collect internal user satisfaction or provide a time
frame for collecting such metrics. By not establishing metrics to obtain user feedback,
GAO reported that the program limited its understanding of the value being delivered
with each software release.
GAO, Immigration Benefits System: U.S. Citizenship and Immigration Services Can
Improve Program Management, GAO-16-467 (Washington, D.C.: July 15, 2016).
except for the completed tasks, which should be getting taller. Figure 16
contains an example of a cumulative flow diagram. It shows five phases:
ready to start, in progress, in testing, ready for approval, and remaining to
be done. This example shows that there is no bottleneck as work ready to
deploy expands over time.
Lead time measures the time required for a feature in the backlog to
move into production. Cycle time reports the time after work starts on a
story before its goes into production. Development teams strive for lead
and cycle times to be short.
Early in the process, the Agile team should establish and validate the
Establish and validate appropriate metrics to ensure they are in place to use to monitor and
metrics early and evaluate the team from the beginning. These metrics should be aligned
with incentives for the team and be monitored at the organization,
align with incentives program, and team levels. Incentives will help ensure that the teams are
appropriately rewarded for achieving the desired goals. 97 If metrics are
not aligned with incentives, then the teams may not feel appropriately
rewarded for achieving program goals.
96GAO, Managing for Results: Enhancing Agency Use of Performance Information for
Management Decision Making, GAO-05-927 (Washington, D.C.: Sept. 9, 2005);
Information Security: Concerted Effort Needed to Improve Federal Performance
Measures, GAO-09-617 (Washington, D.C.: Sept. 14, 2009); and Managing for Results:
Government-wide Actions Needed to Improve Agencies’ Use of Performance Information
in Decision Making, GAO-18-609SP (Washington, D.C.: Sept. 5, 2018).
97As mentioned in chapter 3, incentives may differ between government and contractor
staff due to contract requirements and forms of recognition available.
98A further elaboration of this metric may consider user stories or story points committed
versus user stories or story points accepted.
In October 2014, GAO met with Agile Transformation, a consulting company that offers
tools and coaching to Agile programs, to discuss the AgilityHealth® platform, which is a
tool for continuous measurement and growth platform used to provide companies
visibility into the performance and health of their program teams, product lines, and
portfolios. According to those interviewed, the assessments help evaluate maturity,
performance, and delivery of outcomes on an individual, team, program, or
organization level. One way to collect and review this data is through a “health radar”.
Each radar provides a comprehensive picture of a program and team over time and
can indicate whether an Agile implementation is progressing as planned.
Documentation provided shows that the radars are shaped like a wheel and delineate
metrics into three levels: key areas are labeled on the outer most edge and then are
divided into drivers in the second level and each driver is then divided into success
metrics. For example, one driver may be “Manage changing business priorities,” with
the following associated metrics: existence of single backlogs to manage work for each
portfolio/program/team; business customer engagement and ownership of managing
their backlog ranking; and continuous backlog refinement processes that manage the
addition, removal, re-ranking, slicing, or renaming of user stories. Each metric is
associated with a set of questions based on a maturity scale to be answered by Agile
team members. The result is an AgilityHealth radar score for that objective. The Agile
Transformation Program Office said that the assessment is typically performed at a
release retrospective, perhaps once a quarter. The meetings are facilitated by a
certified AgilityHealth facilitator, who explains the questions associated with each
metric and helps ensure the assessment is objective.
Agile Transformation said that teams can use the TeamHealth Assessment to review
its strengths, improvements, and impediments and then build a growth plan with the
most important areas it wants to improve in the next quarter. They showed us their
secure portal where these results are benchmarked against the results of other teams
and industry for comparison. AgilityHealth’s assessments are one tool that can be used
to provide Agile programs a consistent way to measure health and performance of
teams, product lines, and portfolios, and a holistic view for how the program is
performing.
used to evaluate the program and help ensure that the necessary tools
are in place to support automation and Agile program management and
reporting.
Testing is an area where automated tools are critical for providing instant
feedback to developers. Automated testing can support unit and
regression testing, as well as static code analysis. An automated
approach to code testing can reveal defects early in the development
process. Our prior work has emphasized the importance of monitoring
and using data from automated testing to inform program decision
making. 99 An absence of automated testing or an over-reliance on manual
testing can be an indicator of an organization that is still maturing in the
adoption of Agile practices. (See chapter 3.)
Data obtained from automated tools will not be sufficient to inform all
aspects of program performance. For example, data related to team
dynamics and other organization behaviors will also need to be captured
In July 2016, GAO reported that the U.S. Citizenship and Immigration Services
(USCIS) Electronic Immigration System (ELIS), the case management component of
the Transformation Program, lacked traceability between its reporting and planning
metrics which miscommunicated performance to management. USCIS ELIS was
reporting the scope of each release in the form of sub-features to be delivered within
each release. The program identified the planned number of sub-features to be
developed in each release and updated this number to reflect the actual number of
sub-features developed. Based on review of the backlogs for releases 6.1, 6.2, and
7.1, GAO found the program had not fully documented if it was delivering the sub-
features it had intended to deliver in each release. The backlogs provided to GAO in
March 2016 included a field termed “traceability,” which mapped a user story to a
supporting sub-feature and/or feature. According to this field:
• Six of the nine sub-features were not developed or were not clearly traceable
to the backlog for release 6.1.
• The one sub-feature associated with release 6.2 was not developed or was
not clearly traceable to the backlog.
• Nineteen of the 28 sub-features were not developed or were not clearly
traceable to the backlog for release 7.1.
GAO reported that, in a written response, the Business Integration Division of the
Office of Transformation Coordination recognized issues in traceability of user stories
to sub-features. This division stated that the process that was used to verify the
number of sub-features implemented against planned was based on verbal
confirmation from the product owner. The division subsequently determined that this
process was not effective since it relied solely on the review of the user stories and was
not as exact and reliable as expected. As a result, the division stated that there could
be sub-features that were reported as implemented by the product owner but that
would not show any associated user stories because they were not directly mapped to
the sub-feature in the software management tool. The lack of traceability between
scope metrics reported by the program and the release backlogs indicated a level of
unreliability in reporting on scope. The continual need for additional effort after delivery
of a sub-feature raised additional concerns regarding the extent to which the program
had effectively forecasted future work in its cost and schedule projections. The division
noted that requirements traceability is critical to avoid scope creep and to demonstrate
that the user stories implemented addressed mission needs.
GAO, Immigration Benefits System: U.S. Citizenship and Immigration Services Can
Improve Program Management, GAO-16-467 (Washington, D.C.: July 15, 2016).
100Another Agile tool—the burn down chart—represents the remaining work (on the
vertical axis) over time (on the horizontal axis).
The group met at GAO headquarters, both in person and via telephone,
three times a year. The meetings were open to all with interest and
technical expertise in Agile (e.g., developers), as well as program
managers and organization executives. Meeting members were from
government organizations, private companies, independent consultant
groups, trade industry groups, and academia from around the world.
1See, for example, Booz Allen Hamilton, Agile Playbook, Version 2.0 (Washington, D.C.:
June 2016); California Department of Technology, California Project Management Office,
Understanding Agile, Version 1.0 (California: Dec. 5, 2016); National Association of State
Chief Information Officers and Accenture, Agile IT Delivery: Imperatives for Government
Success (Washington, D.C.: 2017); Office of Management and Budget, U.S. Digital
Services, Playbook (version pulled on Dec. 22, 2017); TechFAR: Handbook for Procuring
Digital Services Using Agile Processes (version pulled on Mar. 8, 2018); Project
Management Institute, Inc. Agile Practice Guide, 2017; and Software Engineering
Institute, The Readiness & Fit Analysis: Is Your Organization Ready for Agile? (Pittsburgh,
PA: Apr. 2014). A complete list of references is included at the end of this guide.
Consistent with our methodology for best practice guides, this public
exposure draft is released for 12 months for input and feedback from all
who are interested. Please click on this link https://tell.gao.gov/agileguide
to provide us with comments on the Guide.
The terms and definitions provided in this appendix are intended for this
guide. These terms can be both contextually and organizationally
dependent.
Burn-up chart: A visual tool displaying progress via a simple line chart
representing work accomplished (vertical axis) over time (horizontal axis).
Burn-up charts are also typically used at the release and iteration levels.
They are related to the burn-down chart except they display
accomplished work instead of remaining work.
Could have: Refers to those features that are not critical for the program.
While these features have a higher priority than nice to have features,
they do not need to be delivered as part of the core capabilities. (See
also: should have, must have, and nice to have.)
Epic: A large user story that can span an entire release or multiple
releases. An epic is progressively refined into features and then into
smaller user stories that are at the appropriate level for daily work tasks
and are captured in the backlog. It is useful as a placeholder to keep track
of and prioritize larger ideas.
Function point: A unit of measure for functional size that looks at the
logical view of the software code accounting for external inputs, external
outputs, external inquiries, external interface files, and internal logical
files.
Kanban: The term “Kanban” is Japanese and derived from roots that
translate to “visual board”. Kanban’s focus is to optimize the throughput of
work by visualizing the flow of work through the process, limiting work in
progress, and explicitly identifying policies for the flow of work. Kanban
has distinct differences from other popular Agile methodologies, primarily
the fact that it is not based on time boxed iterations, but rather allows for
continuous prioritization and delivery of work.
Kanban board: Unlike a task board, the Kanban board is not reset at the
beginning of each iteration; its columns represent the different processing
states of a unit of value, which is generally (but not necessarily) equated
with a user story; each column may have associated with it a work-in-
progress limit. The priority is to clear current work-in-progress, and team
members will “swarm” to help those working on the item blocking the flow
of the work.
Must haves: Those features that are critical for a program; these are the
features that must be delivered as part of the requirements. In addition to
must have features, there are also should have, could have, and nice to
have features.
Nice to have: Those features that are not critical for the program’s
success. These are the features that are developed if there is enough
time or money to develop them.
to think ahead while the other thinks about the work at hand, and it
supports cross-training. The concept can also be extended to pair
designing and pair unit testing to provide real-time peer reviews. Pair
programming is a fundamental part of XP.
Road map: A high level plan that outlines a set of releases and the
associated features. The road map is intended to be continuously revised
as the plan evolves. It can also be used in Waterfall development
programs, but typically a different term would be used. (See related terms
in appendix III.)
Should have: Those features that are not critical for a program and do
not need to be delivered as part of the requirements. However, these
features are higher priority than the could have or nice to have features
and could significantly improve the capability of the program.
Story board: A wall chart (or digital equivalent) with markers (cards,
sticky notes, etc.) used to track user stories’ progress for each iteration.
For example, the board may be divided into “to do”, “in progress”, “done”,
etc. and the movement of the markers across the board indicates a
particular user story’s progress. One goal of the story board may also be
to recognize the order and the dependencies of the user stories in
representing end-to-end functionality for the customer.
Story point: A unit of measure for expressing the overall size of a user
story, feature, or other piece of work in the backlog. The number of story
points associated with a user story represents the complexity of the user
story relative to other user stories in the backlog. There is no set formula
for estimating the size of a user story, rather, a story point estimate is an
amalgamation of the amount of effort involved in developing the feature,
the complexity of developing it, and the risk inherent in it.
Theme: A group of user stories that share a common attribute, and for
convenience they are grouped together and may span programs. A
theme may be broken down into sub-themes, which are more likely to be
product-specific. They can be used to drive strategic alignment and
communicate a direction.
Velocity: Velocity measures the amount of work a team can deliver each
iteration. Commonly, this is measured as story points accomplished per
iteration. For example, if a team completed 100 story points during an
iteration, the velocity for the team would be 100. Velocity is a team-
specific abstract metric and should not be compared across teams as a
measure of relative productivity.
Vision: The highest level of Agile planning, the purpose for the program
that is strategic in nature. The vision represents a shared understanding
of the mission and objectives, capability gaps, expected behavior, and
final outcomes to be addressed. The vision should be consistent over the
life of the program unless business needs change significantly.
Effects
Chapter 3: Agile
Adoption Best
Practices
• Are all team roles defined and filled with the appropriate
expertise?
2. The role of the product owner is defined to support Agile methods
• Has a product owner been identified? Is there one person who
serves as the product owner per team?
• Is the product owner responsible for working with one team or
multiple teams? If multiple, will this impact their availability to each
team?
• Is the product owner empowered with the ability to prioritize work
in the backlog?
• Is the product owner responsible for defining acceptance criteria
and deciding whether those criteria have been met?
• How does the product owner engage stakeholders and the
developers to ensure work priorities align with stakeholder
requirements?
• Is the product owner available to the team when needed? Are
there guidelines about product owner response rates?
• Does the product owner continually interact with the team to
discuss the success of the team throughout the process?
• Is the product owner empowered to approve completed work?
Likely effects if criteria are 1. If the teams are not self-organizing or self-managing, the teams will
not fully met likely be inefficient, causing program cost and schedule slips.
2. If a team does not have the requisite skill sets, it will likely be reliant
on other teams that may have other responsibilities, thus delaying
progress on the product.
3. Frequently shifting resources within a team, or between teams, can
undo learning and shift team dynamics and skills, thereby diminishing
the team’s ability to meet commitments.
4. If there is not a clearly identified product owner who is the
authoritative customer representative, who manages requirements
prioritization, communicates operational concepts, and provides
continual feedback, the developers may not be sure which features
are priorities if they receive conflicting information, resulting in delays
to delivering high priority features and deployment of the overall
system.
5. If the product owner is not a dedicated resource, the developers may
find that person unavailable to answer questions when needed. If
• Does the team consider potential factors that can increase the
complexity of the work when sizing the work?
• What techniques does the team use, such as affinity estimation, to
help identify the factors that could affect the complexity of a user
story?
• Who is involved in estimating and at what level does estimating
take place?
• Does the size estimation use prior estimates to inform future
estimates?
• Is the size estimate refined over time?
• Is acceptance criteria well-defined and consistent for user stories?
• Does the team ‘lock’ sizing estimates once an iteration begins so
the team can examine variances between estimated and actual
work accomplished?
• Is there a method in place to evaluate the success of these
estimates?
• Have the teams been meeting their commitments for each
iteration/release?
3. Requirements are prioritized in a backlog based on value
• Is the product owner considering value when prioritizing the
backlog?
• Is there a shared understanding of value among the team,
program, and organization?
• Is the team working from a prioritized backlog to provide frequent
software deliveries?
• What approaches are used to prioritize the backlog: the must-
have, should-have, could-have, would like to have, MoSCoW,
etc.?
• Is the value of the work accomplished tracked and monitored?
• Does the program track feature usage statistics or customer
satisfaction? Is the team assessing value expected versus value
delivered?
• Does the product owner reevaluate requirements frequently to
reprioritize as necessary?
Likely effects if criteria are 1. Establishing a common structure for the user story helps ensure
not fully met consistency across teams and can help prevent delays when product
owners work with multiple teams or teams are reorganized.
2. If teams are not using relative estimation to compare current size and
work estimates to historical completed work, the team may
underestimate, or overestimate the complexity and time necessary to
complete the user story.
3. Well-defined acceptance criteria can help teams estimate a user
story’s complexity. Less well-defined user stories will carry more risk
and uncertainty around size estimates.
4. If teams are not estimating user stories consistently, the teams may
be committing to too much work, leading to user stories lasting more
than one iteration and team burnout.
5. A lack of traceability between different levels of backlogs and program
planning artifacts could lead to overlooking user stories or features
that are critical to the program due to their high value to the customer
or key dependencies that those user stories or features might have
with other aspects of the system.
6. A lack of understanding or insight into the methods used to measure
value for user stories could cause a disconnect between the customer
and developers and allow delivery of features that do not maximize
value.
7. Without clearly prioritizing work, the developers could work on
features that are not “must haves” to the customer, resulting in the
delivery of features that may not be used and might contribute to
schedule and cost overruns.
Best practice:
Repeatable
processes are in
place
Key considerations and 1. Agile program employs continuous integration
questions • How frequently is the software integrated?
• How does the team ensure that software handoffs between the
various stages of development and testing are performed in a
reliable, dependable manner?
Likely effects if criteria are 1. Without continuous integration using automation, reliable, dependable
not fully met software handoffs may not occur.
2. Without automated build and testing tools, the program may
experience challenges in delivering the product on time and may have
a limited assurance of product quality.
3. The accumulation of deficiencies over time, technical debt, can
present obstacles to an Agile program if not properly managed. For
example, as a code base grows, additional functions will rely on the
deficient code, causing a degradation in overall system performance.
Moreover, as the interest incurred on technical debt continues to rise,
teams will devote more time to cleaning up errors instead of producing
new features.
4. Without the daily standup meetings, team members may not be held
accountable for their work, duplication of work could occur, or work
may not get accomplished because of a lack of communication and
understanding of who is doing what for the program.
5. Without daily standup meetings, the team might also not identify
impediments which may result in rework or schedule delays.
6. If used as a status update by management instead of focusing on
progress and impediments, the meetings could last too long.
7. If end-iteration demonstrations are not performed, the team may not
be able to identify portions of the software that need improvement or
modifications to provide the anticipated functionality.
8. If retrospective meetings are not held at the end of each iteration, the
team may not reflect on or improve the efficiency and effectiveness of
its work processes, thereby impacting the timely delivery of a high-
quality product.
Likely effects if criteria are 1. Without training, there might be a lack of common understanding in
not fully met the program about the Agile methods to be used.
2. Without effective training based on a strategic human capital analysis,
the program will be challenged in helping to ensure that the required
capabilities and mission value will be delivered in a timely and cost-
effective manner.
3. An Agile team needs to have all the appropriate technical expertise, or
it could be delayed in completing its work while waiting on input from
an expert outside of the team.
4. If individual team members are not proficient in the skills necessary to
complete the work, then the quality of the product being developed
may suffer, requiring substantial re-work.
Best practice:
Technical
environment enables
Agile development
Key considerations and 1. System design supports iterative delivery
questions • How has the program established an architecture that allows for
incremental delivery and loose coupling?
• How does the design architecture support delivery of iterations
that can be seamlessly inserted into the operational environment?
• How does the program manage staff assignments distributed
across multiple locations to facilitate iterative delivery and loosely
coupled architecture?
• How does the program manage frequent testing and reviews to
ensure that newly-developed components are properly integrated
with existing components?
2. Technical and program tools support Agile
• What tools are being used to support Agile software
development?
• Are tools used organization-wide, program-specific, team-specific,
or a combination?
• Do both government and contractor personnel, involved in the
Agile development effort, have access to the same data?
• How is the program working to ensure that both government and
contractor personnel have access to the same data?
• How is the program setting up internal controls to restrict access
rights for Agile-support tools to ensure the proper access across
government and contractor personnel?
• How is program management working to align their program
management tools with Agile principles and practices?
• How frequently is software integrated and tested?
• How are automated tools used to support integration and testing
of software?
• Are the tools integrated into the program’s technology
environment (e.g., automated regression testing suites and
Likely effects if criteria are 1. Not allowing time up front to consider system requirements can
not fully met increase future complexity, re-work, and unnecessary investment.
2. If the program does not consider the system architecture during its
initial planning and instead relies on building out the architecture as
code is developed, the architecture may not support the needs of the
system when fully operational and may require a complete technical
refresh.
3. If software design and architecture are not loosely coupled, changes
to individual pieces of the system may require a significant amount of
testing of the entire system, slowing the pace of development and
delivery of the product.
4. If technical and program tools are not consistently available to those
members of the team requiring access, then the productivity of
developers may suffer and result in increased costs for development.
5. Without automated tools, the program risks inconsistent
implementation of processes across teams, which may negatively
affect product delivery and understanding of the program’s progress.
6. Large programs not using automated tracking tools could miss key
dependencies between user stories and features.
Best practice:
Program controls are
compatible with Agile
Key considerations and 1. Critical features are defined and incorporated in development
questions • Has the program identified mission, architectural, and safety-
critical components and dependencies?
• How often does the program revisit these components to validate
their importance?
• At what point in a program’s life cycle are these components
defined? During an initial iteration before any software
development begins?
• How does the program strategy account for mission and safety
criticality along with dependencies? Is the strategy adequate or is
the program increasing its risk?
Likely effects if criteria are 1. Without clearly identifying mission and system critical architecture
not fully met features, the program risks developing these features after other
software is in place and facing substantial rework and integration
challenges and unnecessarily increasing the cost and time to deliver
all critical features.
2. If critical business requirements are not prioritized appropriately,
software may not provide the required functionality.
3. Lack of communication between the product owners and developers
regarding features’ priorities risks the development of noncritical
software in place of critical software and lower customer satisfaction
with the completed product.
4. Teams overlooking nonfunctional requirements may develop a system
that does not comply with current federal standards (e.g.,
cybersecurity standards for IT programs), causing unnecessary risks
Best practice:
Organization activities
support Agile
methods
Key considerations and 1. Organization has established appropriate life-cycle activities
questions • Is there a documented process for acquisition?
• Is there a documented process for software development?
• Are programs allowed to deviate from the documented processes
if pursuing Agile software development? If so, under what
conditions?
• Do organization acquisition policy and guidance allow for
changing requirements?
• Do organization acquisition policy and guidance allow for
frequently delivered software in small deployments?
• Do organization activities support technical reviews occurring
throughout development that are tailored to the cadence of Agile
software development?
• Do the program’s structure and support mechanisms foster a
strong relationship between customers and the developers?
• How is success being measured for Agile programs including any
benefits such as shortened timeframes and higher quality software
being delivered?
• How is the organization encouraging more frequent collaboration
between the customer and developers, and more frequent delivery
of incremental software?
• Has the organization developed policies and procedures allowing
requirements to change throughout the program’s life cycle?
Likely effects if criteria are 1. If programs are unable to tailor life cycle activities, then the
not fully met organization’s oversight process could negatively affect the cadence
established by the Agile team, resulting in less predictable
development efforts.
Best practice:
Organization culture
supports Agile
methods
Key considerations and 1. Sponsorship for Agile development cascades throughout the
questions organization
• Who is/are the sponsor(s) for Agile software development?
• Do sponsors have sufficient authority to manage execution of
the transition within the overall goals established for the
transition group?
• Are the responsibility and accountability defined for each
sponsor and level of management in transitioning to Agile?
• Do all sponsors within the organization and IT agree on and
accept the goals and definition of success for the transition to
Agile?
Likely effects if criteria are 1. Without high-level encouragement, Agile implementation might
not fully met become a paperwork exercise, leading to a failure to complete
software development.
2. Without encouragement and commitment from upper-level
management, Agile teams may not appropriately collaborate with
business owners when they are unsure about the importance of
certain functionality, causing confusion that ultimately can result in a
poor product. Thus, functionality developed using a process that does
not embrace an Agile mindset might require heavy investment in the
post deployment correction of errors or functionality enhancements to
meet customer needs.
3. Without sponsorship from senior stakeholders and the presence of an
Agile champion, or multiple champions, the organization may not
embrace the transition to Agile, which can lead to inconsistent Agile
practices and lackluster results.
4. While having a clearly defined policy for Agile programs can be
effective in many cases, using a policy or mandate to force adherence
Best practice:
Organization
acquisition policies
and procedures
support Agile
methods
Key considerations and 1. Guidance is appropriate for Agile acquisition strategies
questions • Does the organizational acquisition policy and guidance require
the contract structure and acquisition strategy to be aligned to
support Agile methods of software development?
• What policy and guidance does the program use to analyze the
risks, benefits, and costs before entering into any contract?
• Are contracts structured to allow for the implementation of Agile
principles, frequent interim deliverables, product demonstrations,
changing requirements, etc.?
• Do the contract structure and acquisition strategy allow for interim
demonstration and delivery between official releases?
• Does the contract specify delivery cadence and how product
demonstrations will be used to solicit customer feedback?
• Does the contract structure allow the government team, in
coordination with the product owner, enough flexibility to adjust
feature priority and delivery schedule as the program evolves?
• What mechanisms are in place in the contract and acquisition
strategy to allow for close collaboration between the developers
and stakeholders in order for everyone to agree on what features
have the highest priority?
• Does the contract language reflect Agile principles such as
enabling incremental and frequent progress reviews at key points?
• Do contract oversight mechanisms align with Agile practices?
• From a contract oversight perspective, are the expectations of
reviewers and oversight personnel set appropriately to ensure
Agile principles can be effectively employed?
Likely effects if criteria are 1. If an acquisition strategy and contract structure do not allow for interim
not fully met delivery and product demonstrations, then the organization may lose
opportunities to obtain information and face challenges in adjusting
requirements to meet changing customer needs. This may negatively
impact continuous delivery of software.
2. If the organization does not adjust its oversight process to account for
Agile methods, then the contractors’ productivity may decrease.
Chapter 5: Agile
Requirements
Management Best
Practices
Likely effects if criteria are 1. If there is not a strong commitment to ongoing elicitation and
not fully met refinement of requirements, the delivered software may not meet the
changing needs of the customer or address the evolving technical
landscape.
2. If the product owner does not capture feedback from reviews for
consideration, there is no historical record of proposed requirements
or modifications for reference. The lack of a documented change
control process could hinder the decision maker’s insight into the true
value of delivered features.
3. Agile tends to emphasize customer-facing requirements. However,
when the focus on customer functionality becomes exclusive, the
underlying system (or non-functional) requirements can go unnoticed.
Likely effects if criteria are 1. If Agile programs do not learn to discover and refine requirements
not fully met throughout the development process, a program may miss an
opportunity to incorporate newly discovered requirements or eliminate
requirements previously thought to be essential, which could create a
disconnect between deployed software and the customer’s needs.
2. Without ensuring full prioritization of current and future features and
user stories, a program could be at risk of delivering functionality that
is not aligned with the greatest needs of the customers.
Likely effects if criteria are 1. Without having clear criteria and an established definition of done
not fully met allows uncertainty into the development process.
2. Without clear definitions for ready, acceptance, and done, the team
may be working inefficiently and on requirements that are not high
priority.
Best practice:
Balance customer
needs and constraints
Key considerations and 1. What process does the product owner use to calculate the value of
questions work and ensure user stories are being developed based on relative
value? For instance, does the product owner value high-risk work
early in a release to mitigate risk, or determine value based on
resource availability, etc.?
2. How does the product owner balance customer needs and constraints
when determining the value of work?
3. What additional information is collected in the backlog documentation
to articulate relative value, details about the work, estimates for time,
and priority ranking?
4. How do the product owner and team work together to refine the
backlog priority?
5. How are customer suggestions considered in the backlog review and
refinement?
Likely effects if criteria are 1. If the product owner does not consider the relative value of the work,
not fully met all of the user stories can end up being developed just prior to
deployment. Often this is a sign that the product owner is not
prioritizing the requirements and is developing functionality that is not
immediately necessary.
2. The practice of developing each and every user story can lead to
problems if funding is reduced mid-iteration, mid-release, or mid-
program, or other external factors impede the progress of the
development work.
3. If the product owner does not consider the relative value of work, the
team may develop functionality that is not immediately necessary to
meet customer needs.
4. If the highest value requirements are not completed first, the customer
may be left without necessary functionality.
Likely effects if criteria are 1. If customers are not involved in the review and acceptance process
not fully met for software functionality, the software may not meet the intended
purpose required by the customer.
Best practice:
Manage and refine
requirements
Key considerations and 1. How does the Agile program manage refining requirements?
questions 2. What process does the product owner use to manage requirements
and maximize the value of software delivered?
Likely effects if criteria are 1. If the requirements refinement process is too inflexible, it becomes a
not fully met change prevention process and user needs will not be adequately
incorporated into the program, making it less useful to customers than
intended.
2. If the refinement process is too flexible, then boundless development
can occur and the organization may not receive the full value that it
requires.
Best practice:
Maintain traceability
in requirements
decomposition
Key considerations and 1. How does the program maintain traceability from source requirements
questions to lower level requirements and then from those lower level
requirements back to the source requirements?
2. Is a traceability matrix or road map used to trace requirements?
3. If automated tools are used, are discrete fields included to trace high
level requirements to user stories?
Likely effects if criteria are 1. Without tracing a user story back to high level requirements, a
not fully met program cannot justify whether it is meeting the commitments made to
various oversight bodies, and in turn, cannot establish that the work is
contributing to the goals of the program and thereby providing value.
Likely effects if criteria are 1. If work performed is not associated with the user story commitments
not fully met for an iteration, there may be a misalignment between the
requirements and work, and it can present a risk for the program.
2. If the schedule of programs and phases and the scope of each
program are defined and committed to in advance, there should be
alignment between the user stories being developed and the scope of
a specific program.
Likely effects if criteria are 1. If each program is not separable, then the government may need to
not fully met acquire future programs, which could be costly and burdensome.
2. If performance standards are not measurable and structured to enable
performance assessments, the government may not be able to
assess the expected accomplishments.
3. To follow the FAR and ensure that the contractor doesn’t perform
inherently governmental functions, the organization should carefully
delineate responsibilities in the contract to ensure that the government
clearly has decision making authority regarding the final product.
4. If the contract does not provide sufficient structure to achieve the
desired mission outcomes, while offering flexibility for adaption of
software requirements within the agreed-on scope of the system, it
may not support an Agile development approach. A lack of structure
and flexibility increases the likelihood of disruption and delays.
Best practice:
Incorporate Agile
metrics, tools, and
lessons learned from
retrospectives during
the contract oversight
process
Key considerations and 1. Contract data requirements rely on Agile metrics
questions • Do the contract data requirements list align with Agile metrics to
reflect the different processes and artifacts used in Agile?
• Do the quantity and type of contract data requirements
established in the contract account for the program environment?
2. Data from Agile artifacts enables contract oversight
• Does the program collect data from the program’s releases,
features, and capabilities to enable contract oversight to hold
contractors accountable for producing quality deliverables?
• Do the work elements collected allow the program to measure
whether a user story is “done”?
• Does the program collect metrics throughout the Agile
development life cycle to monitor the contracted development
effort?
3. Conduct retrospectives to continually improve based on lessons
learned
Likely effects if criteria are 1. If the contract data requirements list does not account for the Agile
not fully met development program environment, the program may miss the
opportunity to collect data about the quality of its software products.
2. If the program does not collect Agile metrics for technical
management, program management, and Agile methods, the
government may not have the right information for effective contract
oversight and will not be able to hold contractors accountable for
producing high quality deliverables.
3. If reviews for the program are not tailored to align with the program’s
Agile cadence, the review structure could impede progress and cause
delays.
Best practice:
Integrate the program
office and the
developers
Key considerations and 1. Train program office, acquisition, and contracting personnel
questions • Do the acquisition team and developers have a common
understanding of Agile techniques so that an acquisition strategy
can be properly structured to establish a development cadence?
• Is there a close partnership between the developers, program
managers, customers, and contractors?
• Does the program have a dedicated onsite contracting team
trained in Agile implementation?
Likely effects if criteria are 1. Without properly trained program office personnel, including
not fully met contracting personnel, staff may not have the skills to assist the
program in making business decisions and trade-offs that come with
the implementation of an Agile effort.
2. Without a dedicated onsite contracting team, who are trained in Agile
implementation and are able to assess the impact Agile cadences
have on the program’s acquisition strategy, the program may suffer
delays due to a lack of close partnership between the program and
the developers.
3. If management does not foster an environment of trust, the product
owner may not feel empowered to make decisions.
4. Roles must be clearly defined and carried out in order to prevent
bottlenecks and ensure that rapid feedback channels are clearly
established from the start of development.
5. Typically, both the COR and product owner should be government
employees so that they can be empowered to make day-to-day
decisions for the development effort. If the product owner is not a
government employee, the product owner may not be empowered to
make day-to-day decisions for the development effort, causing
development delays.
6. If the contracting officer and the program office do not understand the
distinction between contract and functional requirements, then all
compliance and security requirements may not be included.
7. Lack of authority and involvement by the product owner can result in
bottlenecks in the contracting process.
Detailed best practice checklists are found in the companion guides; the
Chapter 7: Agile and GAO Cost Guide (GAO-20-195G) and the GAO Schedule Guide
Program Controls (GAO-16-89G).
Chapter 8: Agile
Metrics Best
Practices
Likely effects if criteria are 1. Without meaningful, clear, and actionable metrics, management may
not fully met not have the information needed to evaluate program performance.
2. If a program is not aligning metrics with customer questions, it may
not have the data needed to evaluate program performance.
3. Not establishing metrics to obtain user feedback limits a program’s
understanding of the value delivered with each software release.
Likely effects if criteria are 1. If the metrics do not allow traceability from the road map through the
not fully met releases and backlog, the organization may not have the right
information to make decisions about prioritization and potential re-
planning.
2. If the organization does not adopt an organized structure to collect
performance information at each level of the organization, the metrics
may not align with management goals.
3. If Agile metrics are tailored to reflect developers’ progress and
achievements to internal and external customers, it can facilitate
feedback and communication between both entities.
Best practice:
Establish and validate
metrics early and
align with incentives
Key considerations and 1. Are metrics established at the start of the program?
questions 2. Are metrics aligned with incentives?
3. Are metrics monitored at the organization, program, and team levels?
4. Are reward and incentive structures based on team
accomplishments?
5. How is the Agile team determining the value of each metric in
relationship to the cost of collecting the supporting data?
6. Are metrics collected to measure the flow of work over time, such as
features delivered in each iteration?
7. Is the team collecting metrics associated with product quality, such as
the number of defects identified after a product deploys?
8. Is the team capturing metrics that measure adherence to Agile
software development best practices?
Likely effects if criteria are 1. If metrics are not aligned with incentives, then the teams may not feel
not fully met appropriately rewarded for achieving program goals.
2. If the effort to collect data to support a metric is too extensive, the
metric may not deliver enough value to justify its collection.
Best practice:
Establish
management
commitment
Key considerations and 1. Has management established procedures to collect metrics
questions consistently over time?
2. Is management monitoring the performance metrics, and using them
to inform corrective actions?
Likely effects if criteria are 1. If management does not demonstrate a commitment to use
not fully met performance metrics, others may not embrace metrics as useful.
2. If forced to report Waterfall development-based metrics, such
reporting will not only impede Agile adoption and execution, but also
will not provide accurate insight into the software development
process.
3. If program officials do not establish performance thresholds and
targets, oversight bodies may lack information to ensure the program
is meeting acceptable performance levels.
7. Are contracts formulated in such a way that they allow flexibility for
implementation and provide meaningful information to decision
makers? For example, are metrics such as software size,
development effort, schedule, staffing, progress, etc. collected?
8. How are product quality and customer satisfaction monitored
throughout the development cycle?
9. How are changing priorities monitored throughout the development
cycle?
10. How are metrics considered in the requirements when formulating the
contract?
11. How does the program collect metrics to gain insight into the costs
associated with delaying work or missing a milestone?
12. How does the program estimate the cost of technical debt and the
time and effort necessary to repay the debt?
13. How does the program measure and monitor the frequency of
releases, the product delivery, and program progress? For instance,
burn-up, and burn-down charts may be used to communicate
progress.
14. Does the program use automated tools to capture metrics?
15. How does the program evaluate data for its completeness,
comprehensiveness, and correctness to ensure that it is suitable for
its intended purpose?
16. Does the program use automated tools for testing?
17. Is the program collecting necessary data that cannot be captured
using automated tools, such as data related to team dynamics or
other organizational behaviors?
Likely effects if criteria are 1. If the metric review schedule does not match the cadence of the
not fully met development process, then management may not be able to provide
timely feedback to take necessary corrective actions in order to
maximize the value of delivered software.
2. If contracts are not formulated to capture the requirements to align
with Agile processes, the decision makers may not have the
meaningful information they need to manage development.
3. Without collecting metrics for overall program performance,
organizations will not have a good understanding of the cost and time
required to achieve a valuable product.
Best practice:
Communicate
performance
information frequently
and efficiently
Key considerations and 1. How are metrics used to track Agile programs daily?
questions 2. How is performance information communicated frequently and
efficiently?
3. What tools are used to facilitate access to and dissemination of
performance metrics?
4. Does the program have access to automated tools and dashboards to
provide real-time input into oversight and decision making?
5. Does management have tools that allows it to view data consistently
across programs?
Likely effects if criteria are 1. If metrics are not relevant, reliable, and timely, they cannot help
not fully met mitigate Agile adoption and program execution risks.
2. Without tools to facilitate frequent information dissemination, decision
makers may not have access to performance information and may not
be able to take action in a timely manner to make improvements or
corrective actions.
3. Miscommunicating performance information prevents staff and
stakeholders from making necessary improvements or corrective
actions in a timely manner can, contribute to program execution risks.
4. Without automated tools, management may not have access to data
that allows it to assess all programs consistently and quickly.
DevOps
Overview DevOps methods combine both development and operations. Prior to
DevOps, a typical Agile team would have been responsible for the
software from requirement to deployment, with an operations team being
responsible for the support of the software after the deployment. DevOps
reduces the barrier between development and operations by combining
them, thus delivering software quickly and ensuring its high quality by
using the same team. The rationale is that, if the developers are also
responsible for support, they may have more of an incentive to create
reliable code.
Principle Description
Automation of processes DevOps teams try to release software as frequently as possible, which requires automated
testing and development (continuous integration and continuous delivery).
Standardized environment Many issues of interoperability arise when new code does not work in the operations
environment. Since the DevOps team develops the software and troubleshoots bugs in the
operations environment, the developers become more familiar with this environment.
Standardizing the environment helps with these interoperability issues.
Microservices In order to push frequent releases, the DevOps team uses an architecture comprised of
microservices: small, decoupled components that ideally work independently of the other
software components.
Monitoring Since DevOps teams are responsible for support and operations, the teams should be
monitoring the operational software. The frequent releases can help the team isolate and
pinpoint which software update has an issue.
Source: GAO analysis of Booz Allen Hamilton information. | GAO-20-590G
2This is in accordance with the third principle in the Agile Manifesto, “Deliver working
software frequently, from a couple of weeks to a couple of months, with a preference to
the shorter timescale.” © 2001-2020 Agile Manifesto authors https://agilemanifesto.org.
Disciplined Agile
Overview The Disciplined Agile (DA) framework scales Agile methods with the
intent of addressing the full IT product delivery process from program
initiation to deployment into production. DA is a hybrid process that
adopts and tailors strategies from a number of frameworks. Specifically,
DA adopts strategies from Scrum, Extreme Programming (XP), Agile
Modeling (AM), Agile Unified Process (AUP), and Kanban. DAD is goal-
driven, emphasizing the delivery life cycle and how a product can provide
a solution (rather than being simply an independent product).
Role Responsibilities
Stakeholder Provides requirements, either as part of the team or through a team representative, in order to inform user
stories. Also responsible for ensuring that developed products satisfy all appropriate requirements following
iterations and tests, thus preparing the products for release. Stakeholders include four distinct sub-groups:
customers (who actually use the system), principals (decision makers who pay for the system), partners
(who make the system work in the environment with other existing systems), and insiders (developers).
Product owner Clarifies details and maintains list of work items that the team needs to implement. Represents work of Agile
team to stakeholder community.
Team member Performs analysis, testing, evaluation, design, programming, planning, estimation, and many more activities
throughout the program.
Team lead Facilitates communication and empowers team members to self-optimize their processes. Ensures that the
team has the resources needed.
Architecture owner Makes system architecture decisions for the team and ensures that the solution is integrated and tested on
a regular basis. The individual in the team lead role on smaller Agile teams may also fill the role of
architecture owner.
Source: GAO analysis of DOJ and FAA information. | GAO-20-590G
Principle Description
People first DA defines primary roles for a specific team, as described in table 20
A hybrid framework DA uses strategies and principles from many different methods, such as Scrum, XP, Kanban,
and more.
A full delivery life cycle The process supports the full life cycle, from planning to release. A DA program can choose from
four different life cycles and tailor each to support their program.
Goal driven DA emphasizes that a program is flexible, easy to scale, and lays out general goals and various
solutions including any pros/cons. The program uses this information to pick the solution that
works best.
Enterprise aware A DA team works within an organization, follows the organization’s guidance, and leverages
existing assets.
Source: GAO analysis of DOJ and FAA information. | GAO-20-590G
Dynamic Systems
Development Method
Overview Created in 1994, the Dynamic Systems Development Method (DSDM)
brings control and quality to software development by focusing on
transparency and communication. The framework, which can be used to
scale Agile for larger programs with multiple teams, is intended to be
used for management of the full life cycle of a program.
Structure DSDM has a defined 4-phase process that covers the entire life cycle of a
program: feasibility, foundations, evolutionary development, and
deployment. The team is sorted by areas of interest: business, technical,
and management. The roles to support these areas of interest are
categorized into program, development, and supporting roles. Each
specific role has defined responsibilities within the DSDM process. For
example, the technical coordinator provides technical leadership at the
program level.
Principle Description
Focus on the business need The team understands the business needs and priorities. There is continuous business
commitment throughout development.
Deliver on time Teams time box their work in iterations, allowing them to always deliver on time while flexing
the scope of features. With iterations, the team should be able to have a predictable
delivery.
Collaborate The entire team—including stakeholders and business representatives—collaborate for
better understanding and shared ownership of a program. This is supported by empowering
team members to make decisions in areas they represent.
Never compromise quality The level of quality is agreed on before development starts with acceptance criteria. Testing
is integrated throughout development, done early and continuously.
Build incrementally from firm Understand the business problem and plan the proposed solution. Teams should design an
foundations overarching solution first in order to lay a firm foundation and build the solution from this
foundation, with increments providing for feedback and routine re-assessment of the
program.
Develop iteratively Iterative development allows for timely feedback through frequent demonstrations and
reviews.
Communicate continuously and clearly DSDM encourages informal, face-to-face communication and daily standups. Additional
modelling, prototyping, and workshops can increase communication throughout the team.
Demonstrate control In order to demonstrate control, the program manager should measure and report plans and
progress. The program manager should be assessing the program according to the
business needs.
Source: GAO analysis of DSDM Consortium information. | GAO-20-590G
eXtreme
Programming
Overview eXtreme Programming (XP) advocates frequent releases in short,
iterative development cycles. This approach promotes team productivity
and introduces checkpoints where various customer/stakeholder
requirements can be introduced, refined, and adopted. Kent Beck
originally developed XP while working for Chrysler Corporation in 1996;
Structure XP does not prescribe formal roles and responsibilities to teams; instead,
it relies on teams that are self-organized, cross-functional, and include the
customer. XP has several best practices, including: small releases,
simple design, and pair programming, among others.
Activity Description
Planning Involves writing user stories, release planning, and dividing programs into small iterations.
Managing Teams operate in an open work space at a sustainable pace, participate in standup meetings, and continually
measure their velocity.
Designing Teams focus on keeping the design simple, only adding functionality when needed, and refactoring, among
other things.
Coding In XP, all code is produced using pair programming, meaning two developers create the code together, with
the intent to increase the quality of the code. In addition, unit tests are written first, standards are used for all
code, and new code is integrated often. XP also practices the idea of collective ownership, meaning all team
members have a responsibility for the code base and can make changes to improve it.
Testing All code should have a unit test, and the code must pass all unit tests before it is released. Acceptance tests
are run frequently and all test results are published.
Source: GAO analysis of DOJ and Agile Alliance information. | GAO-20-590G
Principles Table 24 shows the five key values embraced by XP to guide how team
members, program managers, and stakeholders interact and collaborate
to ensure product quality. When employed by teams, these values
(communication, simplicity, feedback, courage, and respect) can help
3Kent Beck and Cynthia Andres, eXtreme Programming Explained: Embrace Change
(Boston: Addison‐Wesley Professional, 2004).
Value Explanation
Communication System requirements are effectively communicated from the customer to the team. XP builds rapidly and
passes along institutional knowledge among members of the development team in an effort to give one
another consistent information. XP advocates sharing among customers and designers to improve the design
and construct the system.
Simplicity XP emphasizes starting with the simplest possible solution and building functionality on it later. To achieve
this goal, XP strives to do only what is asked for, and nothing more, in order to maximize value. Simplicity in
code also contributes to reduced maintenance, as the code can be easily understood by the maintainers.
Feedback Teams obtain system feedback through periodic integration and unit testing that is intended to catch
problems before the product is released. Teams help ensure that the software meets customer needs by
conducting acceptance testing and incorporating feedback.
Courage Programmers are encouraged to throw away portions of low quality code they have worked on to ensure what
they deliver high quality. Improved code can lead to better results and remove impediments to effective
development. XP programmers are also urged to accurately report progress, develop reasonable estimates,
and adapt to changes when they happen.
Respect Team members are expected to be respectful to one another and to value the expertise of their customers,
who participate in the development effort. Program managers and executives respect team members’
responsibility and appropriate authority over their own work.
Source: GAO analysis of DOJ and Agile Alliance information. | GAO-20-590G
Kanban
Overview Kanban seeks to alleviate the bottlenecks in Waterfall development by
limiting “in-progress” work in order to efficiently and effectively design and
deliver products to customers. Limiting work-in-progress prevents a team
from committing to too much work. Since new work should not be started
until the current work has been completed, bottlenecks blocking the
completion of work should become more visible in the process. This
framework focuses on the flow of work and was inspired by lean
manufacturing. Kanban is still used in manufacturing, as well as other
applications; this section focuses on Kanban for software development.
Structure There are no prescribed roles in Kanban, allowing for maximum team
flexibility so that members can work on each other’s artifacts easily.
Teams use a Kanban board to keep track of their work, which can be
either physical or virtual. A Kanban board maintains a clear, visual
representation of the work through various stages of development. An
example of a typical board is shown in figure 18.
A Kanban board displays work using sticky notes. The numbers at the top
of each column are the limits on the number of work items allowed per
column. As a task is completed, the related notes are physically moved to
the next stage so that completed and remaining work can be seen.
Having a board to review provides a summary of where the team needs
to focus its efforts.
Principles Kanban is based on three basic principles: visualize what you do today
(workflows), limit the amount of work-in-progress, and focus on flow
(backlog prioritization). These Kanban principles are intended to be
responsive to changes that often occur during a demonstration. Having a
short cycle time helps ensure that customers provide feedback to the
team on a regular basis, resulting in delivery of desired software features
faster than traditional methods. In addition, Kanban promotes having user
stories that are all similar in size in order to limit in-process work so that it
is both manageable and predictable.
Lean Software
Development
Overview Lean software development combines lean manufacturing and IT
principles to streamline software development. Although there is no single
lean software development process, the structure, principles, and
practices further explained in table 25 stem from the book Lean Software
Development by Mary and Tom Poppendieck. 4
Lean and Agile are related philosophies. More specifically, Lean can be
characterized as related to, but not a subset of, Agile. Many of the lean
practices and principles can be mapped to Agile methods, such as speed
and customer engagement.
Principles Lean software development is organized around seven key principles that
are aligned closely with those found in Lean manufacturing, as shown in
table 25.
Principle Description
Eliminate waste Recognize waste, create nothing but value, and keep the code simple.
Amplify learning Try different ideas, maintain a culture of constant improvement, and teach problem-solving
methods.
Deliver fast Deliver solutions in small iterations, focus on cycle time, release early and often, and follow the
just-in-time ideology.
Defer commitment Make irreversible decisions at the last responsible moment (when the customer better realizes
their need), break dependencies between components, and maintain options for as long as
possible.
Empower the team Train team leaders and supervisors, move responsibility and decision making to the lowest
possible level, and instill a “find good people and let them do their own job” approach.
Build integrity in Synchronize effort, automate testing and routines, and refactor to avoid code duplication.
Optimize the whole Focus on value to the customer, deliver a complete product with input from all stakeholders, and
find and eliminate all defects.
Source: GAO analysis of DOJ and Addison-Wesley Professional information. | GAO-20-590G
Scaled Agile
Framework
Overview The Scaled Agile Framework (SAFe) is a governance model used to align
and collaborate product delivery for modest-to-large numbers of Agile
software development teams. The framework provides guidance for roles,
inputs, and processes for teams, programs, large solutions, and
portfolios. It is also intended to provide a scalable and flexible governance
framework that defines roles, artifacts, and processes for Agile software
development across all levels of an organization.
Structure There are four different configurations of SAFe: essential, large solution,
portfolio, and full. These configurations allow for different scales of teams
to adopt SAFe, depending on the size and complexity of the product.
These levels allow teams to perform iterative processes using Agile
frameworks such as Scrum, XP, Lean, or others to develop features to be
used by a larger program that conforms to the overarching portfolio vision
within an enterprise. SAFe uses many of the same tools as other Agile
methods, such as backlogs, development teams, and time boxed
iterations.
Role Responsibilities
Scrum master Facilitates meetings, removes impediments, and maintains the team’s focus.
Product owner Owns the team backlog and prioritizes work. Also acts as the customer for developer questions and
collaborates with Product Management to plan and deliver solutions.
Development team Has three to nine individual contributors, covering all the roles needed to build an increment of value for
an iteration.
Release Train Engineer Facilitates program-level execution, removes impediments, performs risk and dependency management,
and fosters continuous improvement.
Product management Responsible for identifying items to be added to the program backlog, prioritizing the backlog, and
interfacing with product owners to confirm alignment between the software components and enterprise
goals. Also responsible for the vision, road map, and new features in the program backlog.
System architect/engineer Focuses on stakeholder needs and ensuring that the solution is designed to cater to these needs while
delivering functionality across various features, components, and the larger solution.
Business owners Responsible for the business outcomes of the product.
Source: GAO analysis of DOJ, FAA, and Scaled Agile Inc. information. | GAO-20-590G
Principles SAFe 5 has ten framework principles, outlined in table 27, that can be
tailored to suit a program’s requirements.
Principle Description
Take an economic view Decisions are made within the proper economic context. Strategies for incremental delivery are
developed and communicated. A framework is created that takes into account risk, different types
of cost, and decentralized decision making.
Apply systems thinking Systems thinking solutions development takes a holistic view, incorporating both the system and
the environment, taking into account people, management, and processes.
Assume variability; preserve Variability is neither good nor bad in SAFe. Multiple options should be considered, and these
options options should be maintained for as long as possible. Learning should be encouraged, even if it
results in mistakes.
Build incrementally with fast, Develop the system incrementally in order to determine technical feasibility, establish usability,
integrated learning cycles and gain customer feedback, among other benefits. Value is delivered at each increment, and
uncertainty is reduced as more is learned.
Base milestones on objective Milestones with SAFe are based on demonstrating working software. These milestones allow
evaluation of working systems stakeholders to frequently evaluate the software.
Visualize and limit work in Limiting work-in-progress helps ensure that teams are not overloaded with work, while visualizing
progress, reduce batch size, and work-in-progress allows for easy identification of bottlenecks. Another way to limit work-in-
manage queue length progress is to decrease batch size (batch being the requirements, design, code, tests, etc.), so
more work can flow through the process. This is typically accomplished by increasing automation
and infrastructure.
Principle Description
Apply cadence, synchronize with Cadence provides a rhythmic pattern and a consistent routine to development. Synchronization
cross-domain planning allows the teams to align with a common goal and is enabled by events like release planning,
where all stakeholders participate in planning the next increment.
Unlock the intrinsic motivation of Since knowledge workers understand more about the technical aspects of their work than their
knowledge workers manager, the manager’s role is to motivate teams rather than direct their work. Motivation should
stem from innovation and engagement rather than threats, intimidation, or fear. Managers provide
workers with a larger vision, which guides them to autonomously perform daily tasks. Managers
support teams during disagreements (where appropriate) by helping them to negotiate and
problem solve, among other things.
Decentralize decision-making Strategy decisions that are infrequent, long lasting, and provide significant economies of scale can
be centralized while all other decisions can be decentralized in order to reduce delays.
Organize around value The organization’s structure with SAFe should be driven by value flow instead of traditional silos.
This allows the organization to more quickly adapt to changes in the value flow.
Source: GAO analysis of DOJ, FAA, and Scaled Agile Inc. information. | GAO-20-590G
Scrum
Overview Scrum, the most widely used framework for Agile software development,
seeks to address complex problems while delivering high-value products
frequently and effectively. Originating from a 1986 text by Hirotaka
Takeuchi and Ikujiro Nonaka titled, “The New New Product Development
Game,” the method was first referred to as “Scrum” by Ken Schwaber and
Jeff Sutherland in the early 1990s to emphasize a holistic approach using
multiple, overlapping phases. 6 Schwaber and Sutherland authored the
Scrum Guide, which details the methodology. 7 Scrum relies heavily on
the concept of “Scrum teams” that are responsible for producing working
software in increments often referred to as a “sprint.” Each sprint is a
short, time boxed iteration that is intended to provide distinct, consistent,
and incremental progress of prioritized software features.
Structure The Scrum framework is centered on Scrum teams where members fill
specific roles and responsibilities. These members are responsible for
various tasks, including developing Agile artifacts. Each team contains
members that fit into one of these three main roles, as shown in table 28.
6Takeuchi,Hirotaka and Ikujiro Nonaka. “The New New Product Development Game.”
Harvard Business Review 64, no. 1 (January–February 1986).
7Ken Schwaber and Jeff Sutherland, The Scrum Guide:™ The Definitive Guide to Scrum:
The Rules of the Game (Creative Commons, 2017).
Role Responsibility
Product owner Represents stakeholders.
Development team The group that carries out software coding, implementation, testing, and development.
Scrum master Responsible for making sure Scrum theory, practices, and rules are adhered to by the
development team.
Source: GAO analysis of DOJ, Booz Allen Hamilton, and The Scrum Guide information. | GAO-20-590G
During sprint planning meetings, the team determines the type of work to
be done, prepares the sprint backlog (ordered list of tasks to be
accomplished during the sprint), and communicates expected
responsibilities between team members. Teams meet daily during each
sprint for a brief status update. Each sprint is intended to produce, among
other things, completed increments of software features that are
ultimately built into the final product solution.
The sprint backlog is a subset of the most important features from the
overall product backlog. Teams decompose these requirements into user
stories that describe what the customer wants. The software developed
during the sprint should satisfy those needs in order for a user story to be
considered complete.
Principles Scrum is founded on three pillars that uphold the process. Table 29
outlines the three pillars.
Principle Description
Transparency A common standard and understanding must be shared in order for the process to be visible. For
example, the definition of done documents a common definition between developers and product owners.
Inspection Artifacts are frequently inspected to detect any issues, but this inspection should not get in the way of
work.
Adaptation Adjustments should be made as soon as possible. Recurring events like sprint planning meetings and
retrospectives provide additional refinements and updates.
Source: GAO analysis of DOJ, Booz Allen Hamilton, and The Scrum Guide information. | GAO-20-590G
Scrumban
Overview Scrumban combines both Scrum and Kanban, typically by using the
Scrum team structure with Kanban process principles. Scrumban is seen
as being more flexible than Scrum, but more structured than Kanban.
The adaptive and iterative nature of Agile places less emphasis on the
Myth 1: Agile does need for documentation when compared to Waterfall development
not require any methods, but that does not mean that no documentation is required. A
Waterfall development results in detailed documentation at the end of
documentation each phase and the program requirements are not expected to change
much over time. However, elements of the program continuously evolve
as additional information becomes available and customer needs are
further defined. As a result, Agile programs use an appropriate level of
documentation at the end of pre-defined time boxed periods in the Agile
development cadence (e.g., the iteration, release, or other major
milestone as defined by the program). In addition, in some cases, an
Agile approach might replace more formal documentation with information
embedded in program tools.
As with any approach, planning is a vital aspect that will greatly diminish
Myth 2: Agile does the effectiveness of a successful implementation if not done
not require planning appropriately. Waterfall development conducts extensive planning
upfront, while Agile spreads planning activities (e.g., what specific
functionality will be delivered when) more evenly throughout the program
life cycle. High-level planning is completed at the beginning of an Agile
program and is continuously elaborated on throughout the program as
new information becomes available. Continuous planning allows a
program to start much more quickly and make adjustment to the
customers’ needs as new information becomes available.
For any program, it is almost always better off if its participants are co-
Myth 4: Agile works located. Frequent human interaction is a necessary element of Agile, but
only in co-located it is also necessary when employing Waterfall development methods.
Furthermore, a lack of co-location can be a serious impediment if a
environments program is poorly managed. However, distributed programs can still
succeed. As is true for any program type, distribution calls for careful
management and awareness what needs to be executed differently when
some team members are not in the same location. For example, there are
many tools available that allow for close communication between team
members who are distributed throughout various locations.
For Agile programs of all sizes, but especially for the large and complex
programs, continuous integration of developed components on a daily, if
not more frequent, basis is a critical success factor. More specifically,
teams need to check in and test newly-developed code against the larger
solution within a production-like environment. In an Agile program with
typically short development iterations, parallel development efforts, and
frequent delivery of functionality, teams must integrate their work often to
detect and resolve errors as quickly as possible, with the ultimate goal of
being able to deploy at any time. If teams delay integration to just-prior-to-
release, they will likely run out of time to adequately perform testing,
address defects, and prepare the infrastructure. Teams should ensure
that they have the right automated build and test tools, and the
appropriate processes in place to support continuous integration.
Case studies used in this guide were taken from GAO reports and
Case studies highlight problems and successes typically associated with Agile
practices. These particular examples were chosen to augment key points
and lessons learned that are discussed in the guide. Agile in action
examples feature practices adopted by programs and organizations we
interviewed that we believe illustrate Agile key practices executed in an
exemplary or innovative way. The difference between a case study and
an Agile in action example is that the Agile in action examples are not
based on published GAO reports, but rather on our research, interviews,
and by self-reporting entities.
The material in the guide’s 15 case studies was drawn from the eight
GAO reports described in this appendix. The material in the guide’s five
Agile in action examples were drawn from six site visits GAO made to
various organizations. Table 30 shows the relationship between published
GAO reports and case studies and the chapters in which the reports are
cited. The table is arranged by the order in which the case study appears
in the guide. Following the table, paragraphs describe the reports used
(listed in the same order as listed in the table).
Table 30 shows the relationship between the case studies, GAO report,
and the chapters in which the organizations are cited. The table is
arranged by the order in which the case studies appear in the guide.
Following the table, paragraphs describe the organizations visited.
Table 30: Case Studies Drawn from GAO Reports Used In this Guide
Since the early 1980s, the Air Force has been working to modernize and
consolidate its space command and control systems. The past three
programs to attempt this have ended up significantly behind schedule and
over budget. They also left key capabilities undelivered.
This report describes the status of DOD’s newest efforts to develop space
command and control capabilities and identifies challenges the Air Force
faces in bringing them to fruition.
GAO reported its findings on October 30, 2019 in Space Command and
Control: Comprehensive Planning and Oversight Could Help DOD
Acquire Critical Capabilities and Address Challenges, GAO-20-146.
In May 2015, GAO reported that USCIS expected the program to cost up
to $3.1 billion and be fully operational by March 2019. This includes more
than $475 million that was invested in the initial version of the program’s
key case management component, USCIS’s Electronic Immigration
System (USCIS ELIS), which has since been decommissioned. This
report evaluates the extent to which the program is using information
technology program management leading practices.
Case Study 4, 5, 6, 10, 12: From Agile Software Development: DHS Has
Made Progress in Implementing Leading Practices, but Needs to take
Additional Actions, GAO-20-213, June 1, 2020.
GAO found that DHS has addressed four of nine leading practices for
adoption Agile software development. For example, the department has
modified its acquisition policies to support Agile development methods.
However, it needs to take additional steps to, among other things, ensure
all staff are appropriately trained and establish expectations for tracking
software code quality. By fully addressing leading practices, DHS can
reduce the risk of continued problems in developing and acquiring
current, as well as, future IT systems.
We were asked to review the TIM program’s new strategy. This report
determined, among other things, the extent to which TSA implemented
selected key practices for transitioning to Agile software development for
the program. We found the program only fully implemented two of six
leading practices necessary to ensure successful Agile adoption.
Specifically, the Department of Homeland Security (DHS) and TSA
leadership fully committed to adopt Agile and TSA provided Agile training.
Nonetheless, the program had not defined key roles and responsibilities,
prioritized system requirements, or implemented automated capabilities
that are essential to ensuring effective adoption of Agile.
Case Study 7: From DOD Space Acquisitions: Including Users Early and
Often in Software Development Could Benefit Programs, GAO-19-136,
March 18, 2019.
Over the next 5 years, DOD plans to spend over $65 billion on its space
system acquisitions portfolio, including many systems that rely on
software for key capabilities. However, software-intensive space systems
have had a history of significant schedule delays and billions of dollars in
cost growth.
GAO reported its findings on March 18, 2019 in DOD Space Acquisitions:
Including Users Early and Often in Software Development Could Benefit
Programs, GAO-19-136.
GAO was asked to review the GMM program. We found GMM’s initial
May 2017 cost estimate no longer reflected current assumptions about
the program. FEMA officials stated in December 2018 that they had
completed a revised cost estimate, but it was undergoing departmental
approval. We also found GMM’s program schedule was inconsistent with
leading practices; of particular concern was that the program’s final
delivery date of September 2020 was not informed by a realistic
assessment of GMM development activities, and rather was determined
by imposing an unsubstantiated delivery date.
and cost goals and current program baselines trace to key acquisition
documents.
Traceability, which is called for in DHS policy and GAO scheduling best
practices, helps ensure that program goals are aligned with program
execution plans, and that a program’s various stakeholders have an
accurate and consistent understanding of those plans and goals.
Agile in action examples were developed through various site visits made
Agile in Actions by GAO during the course of developing this guide. While they are not
based on a previously published GAO report, they were developed by
interviewing agency officials, reviewing documentation, and site visits to
observe Agile being used. To verify that the information presented in
these examples was complete, accurate, and up-to-date, we provided
each organization with a draft version of our summary analysis.
The list in this appendix names the knowledgeable specialists, with their
organizations, who helped us develop this guide. The list includes the
names of those who made significant contributions to the Agile Guide.
They attended and participated in numerous working group meetings,
provided text or graphics, submitted comments, and hosted research site
visits.
Organization Specialist
Agile Infusion, LLC Bob Schatz
Agile Transformation, Inc. Sally Elata
Artemis Consulting Rohit Gupta
Boeing Jonathan Kiser
Jerry Starling
California Department of Technology Jeffery Porcar
Crystal Taylor
Census Bureau Linda Flores-Baez
CGI Federal Laura Bier
Ed Canoles
ClearPlan, LLC Robin Pulverenti
David Consulting Group Mike Harris
Department of Defense Lawrence Asch
Harry Culclasure
Department of Education Trey Wiesenburg
Department of Energy Ty Deschamp
Kim Hobson
Tim Wynn
Department of Homeland Security Katherine Mann
Department of Justice Anthony Burley
Excella Consulting Patrick McConnell
Dane Weber
General Services Administration Zachary Cohn
Kendrick Daniel
Ashley Owens
Humphrey’s and Associates Denise Jarvie
IBM Myke Traver
Independent Consultant Wendy Hilton
Intel Sam Caldwell
Leo Monford
Internal Revenue Service Jerome Frese
Organization Specialist
International Council on Systems Phyllis Marbach
Engineering (INCOSE)
Leidos Phil Magrogan
Macro Solutions Todd Hager
MITRE Hassib Amiryar
Tony Curington
National Archives and Records Sherli Nambiar
Administration
National Defense Industrial Association Joe Fischetti
(NDIA)
National Geospatial-Intelligence Agency James Barclay
Northrop Grumman Eugene Nkomba
National Science Foundation Manik Naik
Office of Management and Budget Jim Wade
Project Management Institute (PMI), Madrid Mario Coquillant
Chapter
Prometheus Consulting Harold Affo
Scaled Agile team Steve Mayner
Software Engineering Institute Suzanne Miller
Sway Digital and Data Eric Christoph
TekNirvana Tarak Modi
TeraThink Corporation Michael Staab
Treasury Department Matthew Kennedy
United States Air Force Michael You
United States Patent and Trade Office Carol Eakins
Victoria Figaro
Kris Hillstrom
John Owens
Vergys, LLC Greg Mantel
Vidya, LLC Neil Chaudhuri
Source: GAO. I GAO-20-590G
Acknowledgments
Barclay, Jim, and Jon Ruark. “Top 10 Agile Questions to Ask as a Senior
Manager”. National Geospatial-Intelligence Agency: July 25, 2016.
Booz Allen Hamilton. version 2.0. McLean, Virginia: Booz Allen Hamilton,
June 2016. Booz Allen Agile Playbook,
Craddock, Andrew, and others. “The DSDM Agile Project Framework for
Scrum.” DSDM Consortium. (2012.)
Derby, Esther. “Why Not Velocity as an Agile Metric?” (October 18, 2011.)
Retrieved February 26, 2018, from
https://www.estherderby.com/why-not-velocity-as-an-agile-metric/.
——. “Agile Acquisitions 101: The Means Behind the Magic.” April 22,
2015.
Foote, Steve, Justin F. Brunelle, and Tim Rice. Building Agile Programs.
MITRE’s Software Engineering Technical Center: November 28, 2018.
——. IRS Needs to Improve Its Processes for Prioritizing and Reporting
Performance of Investments. GAO-16-545. Washington, D.C.: June 29,
2016.
——. Veterans Affairs Can Further Improve Its Development Process for
Its New Education Benefits System. GAO-11-115. Washington, D.C.:
December 1, 2010.
Kanban Tool. “Cumulative Flow Diagram.” Get to know one of the most
insightful Kanban metrics. Retrieved December 31, 2019, from
https://kanbantool.com/cumulative-flow-diagram.
Lapham, Mary Ann, and others. “RFP Patterns and Techniques for
Successful Agile Contracting.” Pittsburg, Pennsylvania; Carnegie Mellon
University, Software Engineering Institute, (November 2016.)
List, Doc. “How to Get Started With Story Points Via Affinity Estimation
(And Cheat Sheet).” (June 2, 2016.) Retrieved May 5, 2020, from
https://agilevelocity.com/blogget-started-story-points-via-affinity-estimatio
n-cheat-sheet/.
Magennis, Troy. Moneyball for Software Projects: Agile Metrics for the
Metrically Challenged. Agile Alliance, 2014.
Measey, Peter. “The Top 10 Myths about Agile Development.” June 2015.
Retrieved March 27, 2018, from
http://www.computerweekly.com/opinion/The-top-10-myths-about-agile-d
evelopment.
——. “Is Your Organization Ready for Agile?–Part 5.” SEI Insights.
Carnegie Mellon University. (June 23, 2014.) Retrieved July 15, 2016,
from
https://insights.sei.cmu.edu/sei_blog/2014/06/is-your-organization-ready-f
or-agile.html.
——. “Is Your Organizaion Ready for Agile?–Part 6.” SEI Insights.
Carnegie Mellon University. (January 11, 2015.) Retrieved July 15, 2016,
from
https://insights.sei.cmu.edu/sei_blog/2015/01/is-your-organization-ready-f
or-agile-3.html.
——. “Is Your Organization Ready for Agile?–Part 7.” SEI Insights.
Carnegie Mellon University. (April 25, 2016.) Retrieved July 15, 2016,
from
https://insights.sei.cmu.edu/sei_blog/2016/04/is-your-organization-ready-f
or-agile-4.html.
Niven, Paul, R. and Ben Lamorte. Objectives and Key Results: Driving
Focus, Alignment and Engagement with OKRs. Hoboken, New Jersey:
Wiley, John & Sons, Inc., 2016.
Norton, Michael. Agile Metrics: Velocity is Not the Goal. Agile Alliance,
2013.
Palmquist, Steven M., and others. “Parallel Worlds: Agile and Waterfall
Differences and Similarities.” Pittsburg, Pennsylvania: Carnegie Mellon
University, Software Engineering Institute. (October 2013.)
Schwaber, Ken, and Jeff Sutherland. “The Definitive Guide to Scrum: The
Rules of the Game.” The Scrum Guide. Mountain View, California:
Creative Commons. (November 2017.)
Scott, Tony, and Anne E. Rung. Federal Source Code Policy: Achieving
Efficiency, Transparency, and Innovation through Reusable and Open
Source Software. Office of Management and Budget. Washington, D.C.:
August 8, 2016.
Sidky, Admed. Dr. Agile Training Videos. Retrieved March 1, 2017, from
http://www.dragile.com/videos.php#.
The U.S. Digital Service. “Digital Services Playbook.” Retrieved July 25,
2016, from https://playbook.cio.gov/.
(100782)
Page 259 GAO-20-590G GAO Agile Assessment Guide
The Government Accountability Office, the audit, evaluation, and investigative
GAO’s Mission arm of Congress, exists to support Congress in meeting its constitutional
responsibilities and to help improve the performance and accountability of the
federal government for the American people. GAO examines the use of public
funds; evaluates federal programs and policies; and provides analyses,
recommendations, and other assistance to help Congress make informed
oversight, policy, and funding decisions. GAO’s commitment to good government
is reflected in its core values of accountability, integrity, and reliability.
The fastest and easiest way to obtain copies of GAO documents at no cost is
Obtaining Copies of through our website. Each weekday afternoon, GAO posts on its website newly
GAO Reports and released reports, testimony, and correspondence. You can also subscribe to
GAO’s email updates to receive notification of newly posted products.
Testimony
Order by Phone The price of each GAO publication reflects GAO’s actual cost of production and
distribution and depends on the number of pages in the publication and whether
the publication is printed in color or black and white. Pricing and ordering
information is posted on GAO’s website, https://www.gao.gov/ordering.htm.
Place orders by calling (202) 512-6000, toll free (866) 801-7077, or
TDD (202) 512-2537.
Orders may be paid for using American Express, Discover Card, MasterCard,
Visa, check, or money order. Call for additional information.
Contact FraudNet:
To Report Fraud,
Website: https://www.gao.gov/fraudnet/fraudnet.htm
Waste, and Abuse in
Automated answering system: (800) 424-5454 or (202) 512-7700
Federal Programs
Orice Williams Brown, Managing Director, [email protected], (202) 512-4400,
Congressional U.S. Government Accountability Office, 441 G Street NW, Room 7125,
Relations Washington, DC 20548