Questions about IRS requirements?

Watch our 3-minute intro on the R&D Audit process

Software Development – Common Activities

This section provides a list of examples of software development activities that are common to the development or improvement of a software business component:

Project planning and project management.
Project planning and project management activities typically involve obtaining estimates of the resource requirements, developing and tracking the schedule and budget, and acquiring necessary resources (e.g., people, hardware, software, money, etc.).
Developing user requirements that define the software’s functionality.
This activity is typically done by the “functional” areas within the company (e.g., financial analysts, marketing, human resources, etc.) and not by software developers. These activities specify the features desired in the new software, but tend not to address any software development uncertainties.
Developing specifications, such as functional, design or test specifications.
Estimating resource requirements.
This activity involves estimating the resource needs (e.g., staff, budget, timeframe) based upon the functionality requirements of the project. If the resource needs exceed management expectations (e.g., the project costs too much), then an iterative process of re-estimating the resources (e.g., adding staff to shorten the schedule, or dropping requirements to reduce cost, etc.) generally occurs until management approves the resources for the project.
Programming.
These activities involve the actual writing of the software programs that comprise the new or improved business component.
Tuning and benchmarking of software.
These activities involve running benchmark programs and comparing their performance and answers (i.e., program results) to the business component that was developed or improved to determine how the new or improved business component performs. These activities typically involve running existing software programs, building databases with known data in order to be able to compare results, and/or using software tools to determine where the performance bottlenecks exist in the software.
Performing software maintenance and debugging.
Software maintenance typically consists of debugging a problem, reviewing, analyzing, and understanding existing program code. Debugging may uncover errors in requirements, programming errors, misunderstandings in interfaces, unexpected system behavior, deficiencies, or defects in vendor or subcontractor products, and integration errors, etc.
Improving performance and/or scalability of an application.
Quality assurance (QA)/Testing (module, systems, integration, alpha, beta, performance, stress, regression, user acceptance, and manual testing, etc.) occurs throughout the development and maintenance processes.
Beta and subsequent testing typically is done against the entire software business component, not just the portion of the software that was modified.

Regulatory Updates:

Register here if you want automatic updates on R&D Tax Credit Law. Armor will email you whenever there is a significant change in the legislation, regulations, statues or case law pertaining to the R&D Credit:

First Name:
Last Name:
Company:
*Your Email Address:
Phone:
*Enter the security code shown: