What to expect from AI in app development tools
If an IDE or test suite could truly do it all, would you want it to? See how AI is evolving in app development tools, from assists and prompts to full-scale code generation.
Everyone is interested in AI, and everyone in app development wants to reduce their coding burden and improve code quality. So it's easy to wonder if AI can aid in application development -- and if yes, then how.
It's easy to be misled by hype, particularly with a hot concept like AI, but trends in the AI space offer clear promise to improve application development efficiency and accuracy.
Tools with AI-based app-dev features
One obvious place to start with AI in app development is the integrated development environment (IDE). AI features are a logical extension of the code automation features IDEs have offered over the years. While these AI IDE initiatives have generally disappointed programmers thus far, there are some encouraging trends. Take Microsoft's Visual Studio IntelliCode for C++, which exemplifies the possibilities of IDE integration with AI. IntelliCode can detect and learn code style formats with the aim to improve readability and maintainability. The feature can make suggestions on classes from the programmer's own sources, even their own code. Microsoft plans to add tools for code review and issue scanning as well.
Editor's note: Visual Studio IntelliCode was in preview at the time of publication.
However, IntelliCode's preview status troubles many prospective users, who worry about Microsoft withdrawing or contracting the service. Many dev projects need broader language support, which limits the current C++ preview's real-world viability. Still, IntelliCode might be one of the most hopeful AI features in the works for IDEs.
Toolmakers can also apply machine learning to repositories to detect common patterns of code and suggest them to developers. Several IDE assist tools implement AI in this fashion. This type of AI assist is usually classified as code completion, because it suggests context-appropriate things, like library references. Think of code completion as an autocomplete feature for developers.
Among the tools in this space, Codota is a mature product that supports many editors plus Java and Scala languages -- and there are plans to extend it to JavaScript and other languages in the future. Kite, a tool for Python developers, uses machine learning-based analysis of public Python repositories' syntax trees to detect use-and-behavior patterns. The tool then suggests code based on what the developer has started to write. Kite is also a form of autocomplete, according to developers, which leaves them wanting more.
Low-code platforms offer broader application of AI. Low-code users include citizen developers without formal programmer training or development teams that either lack skills or experience or need a faster route from concept to code to satisfy business requirements. Mendix is a low-code tool for mobile app development, built using machine-learning analysis of over 5 million applications. AI enhances low-code development capabilities, but only within the Mendix platform, so teams are limited to the language and runtime that Mendix supports.
It seems clear that, at some point, AI support in IDEs will integrate machine learning analysis of the users' previously developed code to detect their goal while they work. It will not just suggest a way to complete a statement, but, rather, complete segments of logic to build out a project. These AI-assist strategies will likely merge into a complete tool for app development that takes full advantage of AI.
Get testy with AI
AI can also offer app-dev teams a significant assist with QA efforts, especially attempts to recognize and work with code changes and detect issues with deployable code.
Testers could use AI to recognize changes in code and generate test data, which then exercises the change points. This capability addresses one of the most common problems in software testing: failure to test changes that introduce data conditions that weren't present when the test data was originally developed. Tools will use AI to generate test data, either through complete condition-testing analysis or through machine learning based on a training set of data.
Some testers already put AI functionality to use in change controls for GUIs for web and mobile applications. Many development platforms, even low- or no-code platforms, include an AI-run analysis of the GUI controls to generate or modify test data. Such examination ensures that QA professionals test all the possible execution paths of the software.
It's also possible to use AI-assisted test generation for functional and regression tests through platforms like Appvance, Functionize, Testim.io and Test.ai. Appvance is particularly strong with test data generation based on human data entry, while Functionize is suited to functional testing -- as the name suggests.
Another tool, Harness, promotes an as-a-service DevOps framework designed to integrate all the pieces of a CI/CD pipeline, including intelligent testing, into a single framework. The tool uses AI to analyze logs and detect abnormal conditions within them, and the vendor plans to add a neural-network-based analyzer for log events that detects both false positives and false negatives better than humans can.
Where we go from here
AI in app development will likely evolve more toward intent recognition and a sophisticated form of autocomplete in which an AI-based tool inserts logic components, references to local data elements and other code elements in the proper places for a development project. AI-based testing capabilities will evolve in commissioning new versions and components, as well as in problem recognition, orchestration and code redeployment -- all to aid CI/CD.
As the technology matures, it might facilitate a world where programmers can code basic logic simply by identifying their goals and letting AI do the rest. It's pretty clear now that this is not science fiction; it's a realistic goal.