Accounting for Costs Incurred in the Application of Agile Software Development
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.
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.
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.
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.
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.
If you have questions about adopting agile software development approaches, please contact any of the following Deloitte professionals:
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.
Managing Director | Accounting and Reporting Services
Deloitte & Touche LLP
+1 203 761 3039
Senior Manager | Accounting and Reporting Advisory Services
Deloitte & Touche LLP
+1 212 492 3664
Manager | Accounting and Reporting Advisory Services
Deloitte & Touche LLP
+1 980 701 3270
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.
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.
See ASC 350-40-35-6.