Accounting for Costs Incurred in the Application of Agile Software Development
Background
Agile software development is an adaptive approach that emphasizes flexibility,
integrated customer involvement, and speed. Agile methods are based on iterative
and incremental development and feature requirements and solutions that evolve
through collaboration between self-organizing, cross-functional teams.
Traditional software development (the “waterfall” method or model) involves
planning out an entire project in advance. Before commencing work, the project
team understands how all parts of the solution are meant to fit together. Work
is then completed over a period of months to years in accordance with an
established project plan, and the entire solution is tested and implemented
simultaneously.
By contrast, agile development uses time-bound increments (“sprints”) for
planning and execution. Although there is typically a goal in mind, there is
usually no large-scale, established project plan as there is in a waterfall
model. Rather, teams plan smaller-scale development goals, work for two to three
weeks, evaluate progress, recalibrate, and repeat. Typically, a product is
delivered at the end of each sprint, but the goal or destination may change many
times over the course of the project as a result of lessons learned. By placing
time constraints on each sprint, teams are able to identify and address issues
in a timelier manner and continually adapt plans to better meet the overall
goal.
Using an agile development approach may have an impact on the finance and
accounting functions. In many organizations’ finance funding models, annual
budgeting is used as a key planning mechanism. Software development costs might
be estimated for the following fiscal year on the basis of the large projects to
be completed. As companies move into agile processes, these budgeting techniques
are no longer applicable given the iterative and incremental development methods
employed.
Agile development approaches can also affect how organizations determine which
costs related to software development and the implementation of cloud computing
solutions (collectively, “technology development”) should be capitalized or
deferred. Applying the accounting guidance for identifying and classifying the
capitalizable costs incurred in agile software development can require
significant judgment and diligent records of the nature of the costs incurred.
This is because under U.S. GAAP, technology development costs should be
capitalized only during the application development phase of an implementation
project, but agile development activities tend to move through the
preliminary-project, application development, and post-implementation-operation
stages of development so quickly or even simultaneously that the identification
of costs specific to application development may be difficult. Inappropriate
application of accounting guidance or insufficient records regarding the timing
and nature of development activities can lead to incorrect accounting for these
costs (e.g., failure to capitalize all appropriate costs).
Determining Capitalizable Costs
Users of either software development approach should be familiar with the
following key Codification topics and subtopics to ensure appropriate accounting
for costs incurred:
-
ASC 985-20, Software: Costs of Software to Be Sold, Leased, or Marketed.
-
ASC 350-40, Intangibles — Goodwill and Other: Internal-Use Software.
-
ASC 350-50, Intangibles — Goodwill and Other: Website Development Costs.
Software Developed to Be Sold, Leased, or Otherwise Marketed
Regarding technology developed for external use (i.e., software that will be
sold, leased, or otherwise marketed), all costs incurred to establish the
technological feasibility of the solution must be expensed as incurred as
research and development expenses. Software developed for external use
includes technology that is (1) licensed to customers (e.g., a term or
perpetual software license) or (2) embedded in products sold to customers.
Under ASC 985-20-25-2, technological feasibility is established “when the
entity has completed all planning, designing, coding, and testing activities
that are necessary to establish that the product can be produced to meet its
design specifications including functions, features, and technical
performance requirements.” This tends to occur toward the end of a
development project. Costs incurred after the establishment of technological
feasibility should be capitalized. In either case, costs incurred on routine
maintenance or bug fixes cannot be capitalized.
Internal-Use Software1
When developing internal-use software and implementing cloud computing
arrangements, entities will have to establish processes to distinguish
implementation costs incurred during the preliminary-project and
post-implementation-operation stages from those incurred during the
application development stage. This is because costs incurred during the
preliminary-project and post-implementation-operation stages must be
expensed as incurred while certain costs incurred during the application
development stage must be capitalized or deferred.
In accordance with ASC 350-40-30-1, the types of costs that should be
capitalized or deferred during the application development stage include but
are not limited to “[p]ayroll and payroll-related costs (for example, costs
of employee benefits) for employees [or third-party service providers] who
are directly associated with and who devote time to” the technology
development (“to the extent of the time spent directly on the project”). In
addition, in a manner consistent with the requirements in ASC 835-20,
applicable interest costs incurred during the application development stage
should be capitalized. By contrast, any costs associated with data
conversion (other than software acquired for such conversion) as well as any
training costs should be expensed as incurred.
While the identification of the costs to be capitalized or deferred is
consistent for internal-use software development and cloud computing
arrangements, there are differences in how the costs are classified within
an entity’s financial statements depending on whether the costs are related
to software development or cloud computing arrangements (see Deloitte’s
October 29, 2019, Accounting
Spotlight for additional information). Further, ASC
350-50 provides additional guidance on accounting for costs incurred to
develop a Web site. In a manner consistent with internal-use software
development and cloud computing arrangements, the accounting for costs
associated with Web site development depends on the project stage at which
they are incurred.
The specific nature of costs that should be capitalized or deferred and the
fact that costs should be capitalized or deferred only during certain phases
of development mean that it is critical that users of agile software
development carefully track both the nature of the costs incurred and the
technology development phase to which they are related to allow for the
appropriate accounting treatment.
Key Accounting and Reporting Challenges in an Agile Environment
Because most of the guidance relevant to the accounting for technology
development, implementation, and acquisition was issued more than 20 years ago,
it is likely that many entities have accounting policies in place to address it.
This guidance is easiest to apply when there are detailed project plans and
milestones that might have been common in traditional large-scale software
development projects that followed the waterfall method. However, agile
environments are established to eliminate these structural barriers and foster
real-time development and testing and therefore may present certain challenges
for compliance with the accounting requirements. A few such challenges are
outlined below.
Cost Tracking
All costs incurred in agile software development will need to be carefully
tracked to ensure accurate accounting records. These costs include but are
not limited to payroll and payroll-related costs, fees paid to third-party
service providers, costs incurred to obtain inputs from third parties (e.g.,
the purchase of on-premise term-based or perpetual software licenses), and
travel expenses incurred by employees that are directly related to their
work in software development.
Costs incurred will not only need to be tracked appropriately but also
categorized into the specific development phase in accordance with the
accounting guidance. Because stages of development are typically not clearly
defined in agile environments, users will need to determine the appropriate
unit of account so they can assess the achievement of accounting and
reporting milestones. Is the completion of a sprint an indication of a key
milestone? A group of sprints? An overarching program goal? This is an
important area of judgment given that each unit of account will
independently move through the phases of development.
Example
Entity A uses agile software
development across its software engineering
department to quickly meet the needs of its
customers. Under the agile model, development of
features is divided into sprints, whereby new
features and functions are individually developed,
tested, and deployed. Once the features are deemed
ready for use, they are incorporated into the
overall solution. On the basis of this model, A has
determined that, for the development of simple
features, each individual sprint is a unit of
account to be evaluated against the relevant
accounting standards for capitalization given that
each sprint moves through the key milestones laid
out by U.S. GAAP. Within each sprint, management has
determined, on the basis of detailed time and cost
tracking, that 20 percent of time and expense is
related to planning, 60 percent is related to true
application development on upgrades and
enhancements, and the remaining 20 percent is
related to maintenance within the overall sprint.
Therefore, management capitalizes 60 percent of the
costs incurred and expenses 40 percent.2
Entity A has determined that for the development of
more complex features, multiple sprints will be
used. Each sprint will develop and test a specific
element of a given feature. Once all elements are
tested and ready for use, they will be deployed
simultaneously into the overall solution. In this
case, A has determined that the group of
interconnected sprints is the unit of account for
accounting purposes. This is because the
functionality created by each sprint is
interdependent, and the intended functionality would
not be available until all of the interconnected
sprints were complete. Management must therefore
perform an analysis for the interconnected group of
sprints to determine the costs associated with each
stage of development and thus the appropriate
accounting for these costs. This may prove
challenging because each of the sprints may be at a
different stage of development.
Entities adopting agile methods should consider which unit of account is
appropriate for their development process. Because each agile development
milestone may be different (e.g., composed of different sprints with
different complexities), entities will need to have policies in place that
evaluate each effort to determine the appropriate unit of account and to
identify the stages of development for each unit.
Amortization
In accordance with U.S. GAAP, the assets established upon
capitalization of technology development costs must be amortized. Entities
should begin amortization of the capitalized or deferred costs once the
developed technology is ready for its intended use, which occurs after
substantial testing is complete. If the functionality of one module (or
sprint) depends on the functionality of another, amortization will begin
when both are ready for their intended use.3 Agile development adds complexities given its iterative nature. There
may be multiple units of account used in the determination of which costs to
capitalize, and interdependencies among sprints must be considered. Further,
there could be different amortization periods for the same technology
development project given that the project may be divided into multiple
sprints, each of which has been determined to be a separate unit of account.
This could result in additional complexities in tracking the various
amortization schedules specific to each unit of account within the same
technology development project.
Impairment and Abandonment
Identification of the appropriate unit of account is also particularly
important to the application of the accounting guidance for the impairment
or abandonment of capitalized or deferred costs. Specifically, ASC
350-40-35-1 requires that “assets” be assessed for impairment when “events
or changes in circumstances [occur] related to computer software being
developed or currently in use [that indicate] that the carrying amount may
not be recoverable.” Regarding abandonment, ASC 350-40-35-3 requires that
“[w]hen it is no longer probable that computer software being developed will
be completed and placed in service, the asset shall be reported at the lower
of the carrying amount or fair value, if any, less costs to sell.”
Impairment and abandonment events may be more common in agile methods given
that each sprint is used as an opportunity to evaluate progress and
potentially recalibrate or pivot. Therefore, the identification of the unit
of account for purposes of capitalizing or deferring costs is a critical
judgment that could affect whether and to what extent an entity recognizes
impairment or abandonment charges (e.g., at the end of a sprint determined
to be its own unit of account that was unsuccessful). In addition,
impairment or abandonment charges could exist if a sprint replaces existing
technology so that previously capitalized software has become obsolete
because it is no longer in use.
Internal Controls Over Financial Reporting Considerations
As with any new process, it is important for entities to consider the impact
on internal controls over financial reporting. Entities using agile
development processes should evaluate whether (1) the risks of material
misstatement identified in the historical technology development process are
still applicable and (2) the controls in place appropriately mitigate the
risks associated with capitalization of costs in an agile environment. For
example, processes and controls related to the tracking of technology
development costs may need to be revisited to ensure that they remain
appropriate for the iterative nature of agile development, in which project
stages are not as easily identified.
Since accounting requirements pertaining to the capitalization of technology
costs are not specific to the application development method used in the
project (i.e., waterfall or agile), entities may not need to create new
accounting policies and control procedures. However, if these policies and
procedures have not historically been applied to agile environments, new
processes or adaptations to existing processes might need to be put in
place. Entities applying agile development techniques should ensure that:
-
Cost tracking and capitalization are completed by those with the requisite knowledge of relevant activities together with personnel who have the requisite understanding of the relevant accounting requirements.
-
Personnel are trained on the importance of time tracking and classification.
-
All evidence is appropriately maintained to prove accuracy and completeness of time tracking.
Appropriate oversight and accountability will ensure that internal controls
are in place to identify and mitigate risk.
Contacts
If you have questions about adopting agile software development approaches,
please contact any of the following Deloitte professionals:
John Celi
Principal | Business Agility
Deloitte Consulting LLP
+1 617 437 3032
|
Michael B. Dorn
Manager | Business Agility
Deloitte Consulting LLP
+1 214 287 1827
|
If you have questions about related accounting considerations or need assistance
with the following matters, please contact any of the Deloitte professionals below.
-
Determining the costs required to be capitalized by implementing a consistent capitalization framework and a policy application process.
-
Developing an allocation method to track capitalizable activities of employees working on multiple projects.
-
Developing robust documentation and process controls to facilitate a smooth audit and timely responses to regulators.
-
Assessing real-time activities that represent capitalizable work through invoice tracking and reconciliation.
-
Developing a cost-tracking mechanism to enhance transparency and integrity.
-
Analyzing whether one-time and recurring costs related to payments to third parties should be capitalized or expensed.
-
Considering the write-off of impaired or abandoned assets.
Chris Chiriatti
Managing Director | Accounting and
Reporting Services
Deloitte & Touche LLP
+1 203 761 3039
|
Rachel Grandovic
Senior Manager | Accounting and
Reporting Advisory Services
Deloitte & Touche LLP
+1 212 492 3664
|
Alicia Calcutt
Manager | Accounting and Reporting
Advisory Services
Deloitte & Touche LLP
+1 980 701 3270
|
Footnotes
1
ASC 350-40-15-2A states that internal-use software is
“acquired, internally developed, or modified solely to meet the entity’s
internal needs.” This includes software intended to be used in
connection with delivering a service (e.g., software as a service
(SaaS)). In addition, implementation costs incurred for cloud computing
arrangements are within the scope of ASC 350-40. Web site development
costs are subject to the guidance in ASC 350-50.
2
This example is for
illustrative purposes only. There is significant
management judgment involved in the determination
of which costs can be capitalized, and they should
be evaluated on a case-by-case basis.
3
See ASC 350-40-35-6.