Advanced Computing in the Age of AI | Friday, March 29, 2024

AI Is Eating Software Development: Automation for Overburdened Programmers 

Software is eating the world*, but now, AI is eating software development, augmenting the work of chronically understaffed programming teams, allowing developers to focus on higher-level tasks and less on scut work. And it’s only in its infancy.

In their recent paper, “AI is Helping to Make Better Software,” co-authors David Schatsky and  Sourabh Bumb of Deloitte Insights state that while custom software is critical to business competitiveness, “major challenges plague software development efforts – most urgently, a chronic shortage of talented developers.” In fact, the U.S. Bureau of Labor Statistics reported that hiring of software developers will grow 21 percent between 2018 to 2028. One consequence of the skills shortage: more than half of in-house software projects are late, over budget, with 20 percent more cancelled, according to a study by web application development company speed&function. That’s a lot of waste in a sector that International Data Corp. estimates totaled $47 billion in 2018 and predicts will reach $60 billion in 2023.

Into this breach is going AI and venture money – $700 million between September 2018-2019, according to Deloitte – with the goal not of replacing programmers with robotic process automation (RPA) but of 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.” Deloitte stated.

Schatsky told us AI-powered tools are having a “remarkable impact on the software development process, such as reducing by half the number of keystrokes developers need to type, catching bugs even prior to code review or testing and automatically generating half of the tests needed for quality assurance.”

“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 and delays and application defects and their fixes,” Schatsky said.  “This makes it possible to automate some of developers’ work. A new generation of AI-powered tools is emerging, guiding and empowering software professionals to produce better requirements documents, write more reliable code and automatically detect bugs and security vulnerabilities.”

Here’s how he described AI-assisted programming in action:

Deloitte Insight's David Schatsky

“You're sitting in front of your computer, and you're typing lines of code, AI can be running in the background making suggestions – maybe you want to call this function or insert that snippet of code,” Schatsky said. “And you see it on the testing process, automatically generating test cases. Actually, even before you get there, there's AI driven code review. So in the normal world, maybe your colleague reads the code to scrutinize it for things that you might have missed. It's almost like proofreading. But for programmers, (it’s) like automatic spell check and grammar check…, looking at the code even before you run it… Every phase of the way, AI is making it better…. This is going to grease the wheels across the board.”

The result, he said, is AI driving software quality assurance at every stage of the custom software development lifecycle. To take one step in the development process: companies using automated development tools told the Deloitte researchers that the time required for reviewing application requirements was cut by 50 percent.

“We saw that Facebook, for instance, uses an AI powered tool that can predict software defects, it can predict that something's going to be buggy and it's correct about 80 percent of the time so far,” said Schatsky. “That's huge because fixing a bug while you're still in development is much cheaper and faster than fixing it after it's already been deployed.”

But how can a machine learning application be trained to automate development tasks? Via the massive quantities of programming data that’s both publicly and privately available.

source: GitHub

“One of the triggers of progress here,” Schatsky said, “has been the application of machine learning and the fact that open source code repositories, like GitHub, are a huge source of data that can be used to train machine learning models to recognize patterns and to recommend or predict what you're going to do. That's been one of the enablers in this area…, but it's also applied to internal code repositories that companies have inside their four walls.”

Open source software in general has been a boon to custom application development, in part by lowering the cost of software development by allowing developers to reuse and build upon others’ work. The Deloitte paper cited a 2018 study of more than 1,100 commercial applications by the Synopsys Center for Open Source Research & Innovation finding that 96 percent of them used open source components. “The volume of open source software available for use by any developer is enormous and growing rapidly,” said the researchers.  “AI technology is making all of this code more useful than ever before.”

Here’s a summary of programming tasks in which AI is being applied.

Project Requirements: A common cause of delays, cost overruns and outright project failure is alignment of programming and end user needs on a given piece of software. According to Deloitte, “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.” Deloitte said these tools are reported to cut requirements review time by more than 50 percent.  Among the requirements flaws looked for: incomplete requirements, immeasurable quantification (missing units or tolerances) and escape clauses—to expedite requirements review.

Code Review and Bug Detection:  Referenced above, this is a capability in which, as developers are typing code, “AI-powered code completion tools provide recommendations for completing lines of code.” The researchers said several sources report these tools can reduce programmer keystrokes by up to 50 percent. Operating on the same principle as Gmail’s ML-driven Smart Compose, the researchers reported some of these tools generate a list of usable code snippets, ranked by relevance. In addition, code-review tools use AI to identify bugs and suggest code edits aligned with the application’s intended use and “identifying common mistakes and their variants.” Facebook’s Getafix is one of these tools. Other examples include Kite's “AI autocomplete” tool for Python programmers and Semmle, which performs "variant analysis" in search of security vulnerabilities and supports a variety of languages. 

Testing: While automated software testing has been around for years, adding AI to the equation can both automate test runs and generate test cases, saving analysts’ time while running more test scenarios. One of these is Intel Capital-backed Mesmer, which uses RPA to automate mobile app testing. Forrester Research has reported on a private equity firm using an AI-based application to automatically create more than 50 percent of the test validation cases used for one of its software projects.

Deployment: AI-powered tools are being used to predict defects that otherwise might only become known after the application has been deployed. Using statistics from prior code releases and application logs, Schatsky said, these tools can quicken root cause analysis and recovery in cases of failures. He cited a case of an e-commerce company realizing a 75 percent cut in mean time to restore from failures in the production environment.

Project Management: AI-based tools have come on the market that analyze existing software projects “to predict the technical tasks, engineering resources and timelines that new software projects will require,” making “project planning more accurate and project execution more efficient,” the researchers stated. They cite French telco company Orange using one of these tools to automatically update project timelines when there are changes in project scope and features.

“I think we're going to see these tools, as they get productized, they're going to improve in their accuracy and performance as much of AI is doing elsewhere, following the same trajectory, along with improved ease of use,” Schatsky said. “They're going to become really a standard part of software development. In some cases, there is parallel movement with low code development where people can develop applications with little or no actual writing of code, they can drag and drop (functions) and figures out how to build it. So we should see the productivity of software development going up measurably.”

* Marc Andreessen, Wall Street Journal, 

EnterpriseAI