Will AI help dev and test teams—or replace them?

The development teams that create the massive video games beloved by millions of players face some of the most difficult technical problems in software development. These so-called triple-A games often require thousands of programmers and designers from all over the world working together to produce more than a million lines of code.

To tackle the challenge, game developer Ubisoft has created an in-house research initiative, Ubisoft La Forge, to focus on machine learning and artificial intelligence techniques that help developers create cleaner and more reliable code. The first project, called Commit Assistant, uses AI techniques to quickly identify bugs in code commits and alert developers so they can review the potentially problematic code.

The project was recently launched into production, said Yves Jacquier, executive director of La Forge at Ubisoft Montreal. "After we launch, we expect to decrease the number of bugs that are created, and in some cases propose a viable code modification to the developer."

In very complex systems such as triple-A games, a bug that is detected in System A is often caused by a bug in System B but still can be assigned to the System A team, "who might be less efficient to correct the bug," Jacquier explained.

Ubisoft's approach mirrors efforts across the technology landscape to increase the use of AI. Machine-learning techniques are increasingly used to automate the processing of large amounts of data to pull out key information. AI processes can turn that information into action, whether it's a move on a game board, an alert for a security event, or a warning of a software defect.

Advances in AI applied to software development are exclusively augmenting developers' capabilities, not replacing them. AI techniques are being used for better source code analysis, automated help with code production, and rapid prototyping.

Yet progress is slow, because the application of AI to software development is neither simple nor straightforward, said Gabe Hicks, chief technology officer for software consultancy Dev9.

"AI is very good at taking in predictable inputs and producing predictable outputs. That's why it is crushing gaming, because there are scores that can be used to measure success. It becomes trickier when you are talking about software quality, however."
Gabe Hicks

It is a rapidly changing landscape. Here are four ways that machine learning and artificial intelligence are changing software development.

Application Security Research Update: The State of App Sec in 2018

1. Developers will need to speak AI

AI is already being used in a variety of software contexts, including optimizing code, generating exceptions and system overrides, identifying conflicting processes, and refactoring programs. There is already a large amount of data—regarding specific code and resulting bugs—to teach systems how to identify failure, said Ubisoft's Jacquier.

But a large problem with the current systems is that they often produce false positives. Ubisoft's Commit Assistant, for example, identified 6 out of 10 software problems correctly, but had a 30% false-positive rate. Investigating the false positives and then improving the system's ability to classify potential code defects require that developers and researchers understand how the AI came to its conclusions.

"Investigating false positives represents unnecessary work. [However,] we think that this investment pays in the longer run—especially when you have large teams—and yet represents a smaller effort than testing, assigning, and correcting real bugs that are caught."
—Yves Jacquier

2. AI will not reduce the need for developers

One fear is that AI will replace developers. However, the coming singularity—the term for when a machine becomes more intelligent than its creators—is a long way off, researchers said.

Rice University has created a system to propose rapid code prototypes for specific programming tasks. Bayou is a general statistical framework that automatically synthesizes programs in a real programming language—in this case, Java—all from a simple description of the desired task to be accomplished.

Yet developers are still needed, said Vijay Murali, research scientist at Rice University and one of the researchers behind Bayou.

"I envision AI in the near future to be an assistant to developers rather than replacing them entirely," he said. AI can learn from human-written code and automate most of the "typical but tedious programming tasks," Murali added.

"However, I believe there will always be a need for developers to implement critical parts of the software that AI cannot automate."
Vijay Murali

3. Code security will benefit from AI

Because code security is extremely important, AI techniques have already been applied to securing software. Such efforts will only continue, said Dev 9's Hicks.

AI can take static code analysis to the next level, using millions of lines of code to learn correct programming patterns and then find those patterns in new code. This is especially important when integrating third-party code into a program, he said.

"Once you have written the code, every potential library that you incorporate is a potential vulnerability. Ideally, it could get to the point where the AI will notice that a library is updated and then will automatically import the new library, rebuild the code, and deploy it."
—Gabe Hicks

4. AI will make development more complex

In the short term, AI will make things more difficult, not easier. Like parents with a newborn, developers and researchers working with a young AI system will have to continue to teach it and tweak the system.

Ubisoft's false-positive rate of 30% is a good example. Each flagged piece of code has to be vetted to make sure it is a real bug, taking time. And AI systems that do not explain their "reasoning" in human-understandable terms will only make the process more involved.

"You are going to get a lot of cases where, if something changes in the model, you have a lot of man-hours of work to track it down. So—at least for a while—it is a huge integration problem."
—Gabe Hicks

However, developers will ultimately get a net benefit from AI, said Ubisoft's Jacquier.

"Those tools will accelerate the way developers program and will allow them to spend time on other tasks that require their creativity and capacity of invention, to make more robust architecture, more optimized systems, more features."
—Yves Jacquier