Can machine learning be used to accelerate the development of traditional software development lifecycle? As artificial intelligence and other techniques get increasingly deployed as key components of modern software systems, the hybridisation of AI and ML and the resultant software is inevitable. According to a research paper from the University of Gothenburg, AI and ML technologies are increasingly being componentised and can be more easily used and reused, even by non-experts. Recent breakthroughs in software engineering have helped AI capabilities to be effectively reused via RESTful APIs as automated cloud solutions.
The ML Impact
AI will play a key role in the design, creation and testing of software. According to a 2016 Forrester Research survey, AI can also help in code generation. The survey further revealed that if an AI software system is given a business requirement in natural language, it can write the code to implement it — or even come up with its own idea and write a program for it. For example, Microsoft’s Intellisense has been integrated with Visual Studio to enhance the developer experience. In fact, a 2017 State of Testing Survey revealed that testers will spend more time and their resources on testing mobile and hybrid applications, with the time spent on actual development shrinking.
Examples Of AI Integration In The Software Development Cycle
Google bugspot tool w3C: As the blog points out, 50 percent of the code changes every month. And as Google’s code base and teams increase in size, it becomes more unlikely that the submitter and reviewer will even be aware that they’re changing a hot spot. The Bug prediction tool uses ML algorithms and statistical analysis to find out whether a piece of code is flawed or not and whether it falls in the confidence range. Source-based metrics that could be used for prediction are how many lines of code, how many dependencies are required and whether those dependencies are cyclic, the Google Engineering blog indicates.
Stack Overflow AutoComplete: Code Complete by Emil Schutte is a good case in point where the developer leveraged Stack Exchange data to crank out fully functional code based on the intentions inferred from existing code.
Deep Code: Then there is AI programming tool developed by a Zurich based startup DeepCode which is being positioned as a new AI code assistant. The tool learns from a corpus of 250,000 rules, from the public and private GitHub repositories, thereby telling programmers how to fix their code. In simpler terms, it does a thorough code review. It is a good tool to find bugs in code and helps developers deliver clean and reliable code.
Areas Where AI Will Play A Pivotal Role
Bug fixing: This is one of the biggest areas being revolutionised with AI technologies. Given the huge volume of data that needs to be tested and human error due to overlooked bugs, software testing tools such as bugspots show us that programs can leverage AI algorithms to auto-correct themselves with minimum intervention of a human programmer.
Code Optimization: Compilers fix old code without needing the original source, that too in a short period of time. Compilers are programs that process high-level programming language and convert it into machine language or instructions that can be performed by machines. For example, the Helium software developed by Adobe and MIT Computer Science and Artificial Intelligence Laboratory automated the task of fixing old code, without requiring the original source. It thereby made the next generation of code faster. This task which would take an engineer up to three months or more, was reduced to mere days. The Helium software was used to optimise the performance of Photoshop filters by up to 75 percent.
Testing: AI-driven testing has been around for some time and there is a slew of open source tools that use AI for generating test cases and perform regression testing. For example, Appvance, pegged as an AI-driven software test automation tool uses AI for performance and load testing and to generate test cases based on user behaviour. Meanwhile, Testim.io deploys machine learning to accelerate authoring, execution, and maintenance of automated tests. As one user points out, the tool becomes smarter when more tests are run. Then there is Functionize the machine learning based testing platform which uses ML for functional testing for web and mobile applications, thereby reducing the time to manage test infrastructures.