ARTIFICIAL intelligence is making the process of designing, developing, and deploying software faster, better, and cheaper. It’s not that programmers are being replaced by robots—rather, AI-powered tools are making project managers, business analysts, software coders, and testers more productive and more effective, enabling them to produce higher-quality software faster at lower cost. AI may become a key factor in meeting rising demand for custom software.
Developing and deploying custom software is a critical element of how many companies innovate,5 with top-performing organizations developing many of their most important software solutions in-house.6 And the market for custom software development services is large: around US$47 billion in 2018 and climbing.7 But 65 years after the invention of the FORTRAN programming language, major challenges plague software development efforts—most urgently, a chronic shortage of talented developers.8 Plus, more than half of all software projects are late and over budget, with another 20 percent canceled outright, a 2017 study found.9 Last year, poor software quality cost US organizations an estimated US$319 billion.10 The application of AI in the software development process promises to mitigate some of these problems.
New AI-powered tools are having a remarkable impact on the software development process, such as reducing the number of keystrokes developers need to type by half, catching bugs even prior to code review or testing,11 and automatically generating half of the tests needed for quality assurance. To see why this is happening now, it’s important to understand another software development trend: open source.
Open-source software has lowered the cost of software development by allowing developers to reuse and build upon others’ work. Organizations large and small are using open-source software.12 A 2018 study that analyzed more than 1,100 commercial applications found that 96 percent of them used open-source components.13 The volume of open-source software available for use by any developer is enormous and growing rapidly.
AI technology is making all of this code more useful than ever before. Researchers have discovered that machine learning and natural language processing can be used to analyze source code and other data about software development, such as records of project schedules, delays, and application defects and their fixes. This makes it possible to automate some developers’ work. A new generation of AI-powered tools is thus emerging, guiding and empowering software professionals to produce better requirements documents, write more reliable code, and automatically detect bugs and security vulnerabilities.
Developers are using AI to help improve every stage of the software development process, from requirements gathering to deployment. Consider the following examples.
Project requirements. Requirements management—the process of gathering, validating, and tracking what end users need from a piece of software—is a major cause of delayed, costly, or failed projects when done poorly.14 Several vendors have introduced digital assistants that can analyze requirements documents, flag ambiguities and inconsistencies, and suggest improvements. These tools are powered by natural language processing and trained on widely referenced guidelines for writing high-quality requirements.15 These tools can detect inaccuracies or other weaknesses—such as incomplete requirements, immeasurable quantification (missing units or tolerances), compound requirements, and escape clauses—to expedite requirements review.16 Enterprises using such tools have been reportedly able to reduce requirements review time by over 50 percent.
Coding, review, bug detection, and resolution. As developers are typing, AI-powered code completion tools provide recommendations for completing lines of code.17 According to various sources, this can reduce the keystrokes required by up to half. Some tools even generate a relevance-ranked list of usable code snippets.18 Some of these tools work on the same principle as Gmail’s Smart Compose, a machine learning–powered feature that suggests words or phrases as a user is composing an email. Meanwhile, code-review tools use AI to automatically detect bugs and suggest code changes by understanding the intent of the code and identifying common mistakes and their variants.19 At Facebook, a bug detection tool predicts defects and suggests remedies that are thus far proving correct 80 percent of the time.20 This is important: The cost of fixing bugs rises considerably further down the software life cycle, as reproducing the defects in a developer’s local environment can be complex and business-critical services failure can be costly.21 Video game company Ubisoft says the use of machine learning is helping it catch 70 percent of bugs prior to testing.22
More thorough testing. Automated testing tools that run test scenarios written by quality assurance analysts have been in use for years. Now, AI has made it possible not only to run tests automatically but to automatically generate the test cases. This saves analysts time and helps ensure that more scenarios and functionality are tested. For instance, a private equity firm used an AI-powered tool to automatically generate over half of the test cases it used to validate one software project.23 These tools can also make it easier to distinguish true defects from noise and identify their root causes. A mid-sized software company found its traditional tool to be brittle—tests would break with slight changes in the user interface (UI). The firm found an AI-based testing tool to be more robust; able to adapt to UI changes by identifying elements by their functionality and not just their position on the screen. The company achieved the same test coverage as with its older testing tool in a smaller fraction of the time.24
Deployment. Sometimes software defects become apparent only after the software is deployed in the environment in which it is meant to run. But AI-powered tools are helping to predict deployment failure ahead of time by examining data such as statistics from prior code releases and application logs. This can speed up root cause analysis and recovery in case of a failure.25 In one case, machine learning–based automatic verification of deployments and rollback helped an e-commerce company attain faster application delivery and a 75 percent reduction in mean-time-to-restore from a failure in the production environment. AI can even help applications run optimally while in production.26 Another online company deployed a machine learning–based tool that analyzes numerous potential application runtime settings and automatically deploys optimal environment configurations. This helped them halve cloud costs and more than double application performance.
Project management. Firms are even using AI to improve project management. A number of startups have introduced tools that apply advanced analytics to the data from large numbers of prior software projects to predict the technical tasks, engineering resources, and timelines that new software projects will require. This can make project planning more accurate and project execution more efficient.27 As an example, the innovation team at French telco Orange deployed an AI-powered project management tool to automate the long, manual process of updating project timelines with changes in project scope or feature sets.28
A growing number of AI-based tools to support enhanced software development processes are coming to market or being made available for free. Leading technology providers have introduced AI-based software development tools, offering them as plug-ins or enhancements. Facebook is using its newly developed bug fixing and code recommendation tool for in-house projects.29 And several startups are offering their tools partially free—public code can be processed for free, while private code processing is free for a limited number of developers.30 In a Forrester survey, 37 percent of respondents said they were already using AI and machine learning for superior testing to increase software quality.31 Investors see great promise in the market for AI-powered development tools: Venture capital funding raised by startups working in this area totals over US$700 million for the 12 months ending September 2019.32 All this promises to accelerate the adoption of AI-augmented software development methods and increase the productivity and quality of software development.
The use of AI-based software development tools does have a downside. Tools trained on open-source projects could encourage developers to inadvertently propagate bugs and security risks into their code, as open-source software is not free of errors or vulnerabilities.33 And teams deploying code recommendation tools could see productivity dip before improving, as those tools may require some usage and training before reliably generating highly accurate recommendations.
Any company that undertakes a significant amount of custom software development should explore the growing number of AI-enhanced software development tools as an opportunity to increase their output’s velocity and quality. An old rule of thumb holds that the best developers can be 10 times more productive than the average.34 Anything that has the potential to boost productivity of average developers is worth exploring. Enterprises that contract out custom software development should inquire about the tools their vendors use to improve productivity and quality. And it is worth taking note of so-called low-code development environments, which enable professionals without computer science or software engineering training to develop applications.35 In recent months, these platforms have begun to include AI-enabled capabilities to make it easier and more efficient to create and test applications.36
Pundits have long predicted the end of programming. Some have forecasted that computers would eventually write their own programs; others have suggested that the task of programming computers will give way to a process of teaching computers, by means of machine learning.37 Both of these are happening, to a limited degree. But for years to come, most software will be created by people. AI-enhanced software development tools are a good example of how AI can empower, rather than replace workers. Technology leaders are on a mission to help their organizations create the future, and savvy use of AI to improve the practice of software development can support this mission.
Deloitte’s System Design and Engineering practice provides clients with teams that help develop and deliver large-scale software applications and integrated systems across development approaches: agile, traditional (SDLC), and hybrid.