AI Augmented Software Engineering

Introduction

AI has been in existence for quite a while, and we have been hearing about the widespread adoption of AI/ML in almost all the areas. We have huge potential to exploit the AI/ML features in the SDLC lifecycle too. AI augmented software engineering is a process of developing more reliable, effective and low-cost solutions with high quality and speed through hyper automation of reusable components that uses a well modelled Machine learning approach throughout.

AI Augmented Software Engineering

AI Adoption in SDLC lifecycle

The AI adoption in software development can help throughout the SDLC in various ways such as:

  • AI based project planning and management
  • Automated requirement generation
  • AI based UX/UI designs
  • Automated Code generation
  • Natural Language Processing (NLP) for Low code solution development
  • AI based code review
  • Intelligent Defect detection and Prevention
  • AI powered DevOps

AI based project planning and management

AI tools can help the project managers in various areas staring from picking the right project management tool and methodology based on the project, identifying the potential risks and mitigation plan, prioritization and allocation of tasks, updating the project plan based on the legal, political and social regulations if any and so on and so forth. The AI based tools can also help on monitoring the project status, visual representation of the project health, notifying the stakeholders on project status etc. A few examples of AI based tools for project management are ProofHub, Trello, Teamwork etc.

Automated requirement generation

The AI models can be trained in such a way that they can come with the detailed functional and non-functional requirements or user stories based on a high level one liner requirement from the client. With a well-trained model, the requirements should be able to cover the aspects such as user base, type of application landscape, integration with other systems etc and have the requirements detailed enough to cover all these aspects. A few examples of the tools for AI based requirements management are: WriteMyPrd, Notion, aqua etc.

AI based UX/UI designs

Like in any other area, AI can contribute significantly on the UX/UI designs too. The UX/UI designers can get benefit of AI in predicting the behaviors of the system, the user interactions and human experience, the user behavior etc and designing a protype with a vision on future. Also the areas such as UX/UI testing for accessibility, user friendliness etc can get benefit of AI adoption. A few examples of the tools for AI based UX/UI design are Jasper, Fronty, Uizard, Khroma etc, though each of these tools are best suited for various activities in UX/UI designs.

Automated code generation

AI code generation tools have become a quite common among developer community. Especially for the areas where the software development tasks are reputative such as creation of User Interfaces, data models etc, the developers can utilize the AI capabilities to automatically generate the code. There are quite a few automated code generations tools available and OpenAI Codex, Amazon Codewhisper, Google Brad, GPT-Code-Clippy (GPT-CC), Copilot by Github etc are a few examples on the same.

Natural Language Processing for software development

NLP enables a software program to understand the human language as it is written or spoken and make the necessary actions to respond to it in the most appropriate way. NLP has played a major role in the development of various robotic processing systems like chatbot software, language translators, voice assist software etc. Some of the major activities in NLP for speech / voice processing are:

  • Speech / voice recognition – Speech to text that is recognizable programmatically
  • Grammatical tagging – Identify the right grammar
  • Disambiguation of words – For the words with multiple meaning, pick the most appropriate one for the context
  • Emotion analysis – To identify the emotions and sentiments of the user
  • Natural language generation – Converting to a structured and meaningful text

NLP

A few examples for NLP tools are Gensim, IBM Watson, Natural Language Toolkit (NLTK), Google cloud Natural Language API etc.

AI based code review

Code review can be made more effective and faster by the right adoption of AI tools for the same. They help to suggest the best practices and should be able to provide suggestion based on the scalability and reliability of the system in the long run. A few examples of AI based code review tools are: WhisperAI, Coderbuds, Codiga etc.

Intelligent Defect detection and Prevention

Though we have many AI powered tools for test automation, we should be able to leverage the AI capabilities for defect prevention as well. The fundamental thing in the intelligent defect management is failure analysis. An intelligent defect managements system can be built using analyzing the failures through the failure logs and stack traces, classifying the failures based on the root causes, build predictive models based on the previous failure history and train the model, review and enhance the model etc. The test automation framework usually fails due to either functional issues in the build which leads to test case failure or the issues within the test automation framework, network or other infrastructure related issues etc.

The main components of an intelligent defect management system are

  • Analysis of failure logs – Analyze the log information from the test automation framework and understand the failure reasons for each of the failed test cases
  • Remove the false failures – The test failure due to nonfunctional issues (which are not related to the behavior mentioned in the test cases) should be removed from the and not considered for analysis (such as issues with automation tool or other infrastructure issues not related to the functionality under test)
  • Classify the failures based on root cause – The root cause for the failures should be derived from the failure logs and classify the failures to the right root cause
  • Build the prediction model based on the root causes – From the previous execution history, build the prediction model and enhance the model until most of the failures and corresponding root causes are captured in the model
  • Dashboard – A decent dashboard showing the failures and the corresponding root causes, to get a quick overview on the stability of the overall system and individual components in the system
  • Pluggable to test automation frameworks – The AI based defect management module should be easily connectable to both standard and custom-built test automation frameworks and should be able to read the failure logs from the tool logs or from the Jenkins pipeline

Defect

AI Powered DevOps

As the world is focusing more on faster delivery and reduced time to market for feature releases through DevOps and CI/CD approaches, for sure AI can make it more intelligent and effective through the right steps on DevOps. Some of the major areas in DevOps where it helps are ‘Build’ phase, ‘Automated Regression testing’ etc. AI adoption helps the developers to respond more quickly to issues and failures in the entire DevOps model and helps to identify the defects pretty quickly. The DevOps pipelines such as Jekins, GitLab, Ansible etc can be integrated with various AI tools for automating the various activities in the DevOps phases.

Challenges in AI augmented software development

Quality and Quantity of the data being used: AI relies hugely on data that is being used to develop the predictive model, and if the quality of the data is not great, it can significantly impact the efficiency and accuracy of the AI models.

Integration and adaptability: Many times, we may end up with challenges on integrating the AI tools or frameworks with the tools that are being used for software development. Also, there can be some compatibility issues between different AI technologies that are adopted. The developers need to analyze this well before starting and take the right tooling accordingly.

Cost and complexity: Depending on the complexity of AI models and algorithms, the systems might require resources with relatively higher specifications and significant computational power which will result in an overall increase in the cost and complexity of the software development.

Future of AI augmented software development

As AI is increasing its presence in the software development, we may see a major shift in the activities which a programmer currently does. Though it may not replace the humans in software development, the programmers need to streamline and sharpen their skillset for effectively utilizing the AI capabilities. In the near future we can expect AI become more powerful in areas such as Automated software design, Code review and optimization, Automated code generation, AI based testing, Intelligent DevOps etc.

Author Details

Mohammed Niyas

Niyas is a Project Manager at Infosys - Digital Experience IP Platforms. He has experience in managing various Digital implementation projects, specifically on Live Enterprise implementations and Employee experience platforms. He has strong experience in complex digital project implementation where multiple stake holders are involved.

Leave a Comment

Your email address will not be published. Required fields are marked *