In the previous edition of the series, we have seen how AI transforms the software engineering lifecycle, specifically Management, Requirements gathering, Design phases. In this edition we will see how software development activities are affected by AI.
Development
AI is playing a crucial role in software development with use cases like defect prediction, Code recommendation, code auto-complete, detecting deviations from coding guidelines, obtaining insights from code, coding language translation and so on.
There are variety of ML powered Integrates Development Environments (IDE’s) now in the market such as Visual Studio Intellicode, IntelliJ IDEA, Kite, Codota, (Deep) TabNine, CodeLobster. These IDEs come with functionalities like intelligent code recommendation, autocomplete, propose sample similar code etc. Visual Studio IntelliCode can discern coding convention used in part of your code and then apply it elsewhere to maintain consistency. IntelliJ IDEA provides features like auto completion of code based on the context, intelligent code refactoring. PyCharm, a popular IDE for python, provides smart code completion, code inspections, on-the-fly error highlighting and quick-fixes, along with automated code refactoring’s and rich navigation capabilities. Pylint is a Python source code analyzer
AI enabled code-review tools can automate code reviews, automatically detect bugs and suggest code changes by understanding the intent of the code and identifying common mistakes, generate ranked list of usable code snippet and so on. DeepCode can help automate code review. It learns from thousands of high-quality open-source repositories and uses that acquired knowledge to perform the semantic analysis to tell where the developer’s intent and syntax differs and make suggestions on how a code can be improved. It can also alert about security and performance flaws. It can review Java, JavaScript, and Python code, integrates with GitHub, BitBucket and Gitlab, and can be used in real time as an extension to IDE’s.
Evosuite is an open source tool to automatically generate Unit tests for Java software and has plugins for Maven, IntelliJ and Eclipse.
Clever-Commit, a coding assistant created by Ubisoft and Mozzilla developers, takes another approach to finding errors in code. It learns from the data in defect tracking system and the code base to inform a developer that his latest commit could be buggy based on previous commit and defect data. It can even recommend solutions to the bug it detects. Embold is another code analyser which can detect issues as well as recommend solutions.
AI can also help convert translate a code written in one programming language to another. Facebook’s recently launched Transcoder takes the unsupervised learning approach to translate between C++, Java and Python code.
Low code - no code company Outsystems has created the outsystems.ai R&D group which is collaborating with Carnegie Mellon university and contributing the DeepMind research and launched an AI assistant to their Low-code offering which can predict the next step you will need to take and recommends options which are fully configured and adapted to your business logic and context.
Recently launched GPT-3 code generator technology from OpenAI can create JSX and HTML/CSS code from simple English sentences in seconds. It’s early to say if it would scale up to more complex code writing but it is still a big step towards sufficiency in automated code generation from simple sentences in natural language.
AI systems that understand code and build them is an active area of research. If it is possible to teach a machine to understand and produce code it can potentially evolve itself, which is why this is a potential path towards Artificial General Intelligence, which is the problem yet to be solved.
In the following articles we will see the AI led software engineering use cases in subsequent project lifecycles phases and also Sopra Steria’s offerings in this space.
Read more
AI led Software Engineering Use Cases: Application to Requirements & Design
In the previous edition of the series, we have seen how AI transforms the software engineering lifecycle, specifically Management phases. In this edition we will see how Requirement engineering is affected by AI.
Read more