Advertisment

Artificial Intelligence (AI): Driving the future of Software development

author-image
Ashok Pandey
New Update
Artificial Intelligence (AI): Driving the future of Software development

With increasing digital transformation, the need for custom software is also increasing. AI in software development is impacting each phase of the software lifecycle, enhancing, and automating the traditional processes, and improving productivity through speed, quality and cost.

Advertisment

The Artificial Intelligence (AI) revolution is silently brewing in the way we think about and write software. Popularly, the next wave of AI-driven software development is known as Software 2.0. You often find statements like, “AI is eating software.” We’re not sure about that, but one thing is true: AI is changing the way software is written.

Imagine the traditional flow of software development. A programmer identifies the key idea (algorithm/approach) to solve a problem and, subsequently, writes appropriate code. In this workflow, all the hard work of coming up with the approach to the problem rests firmly on the programmer’s shoulders (Good for everyone, except the poor, put-upon programmer).

But imagine a slightly different scenario. An AI algorithm is provided with examples of expected inputs and outputs. Using this information, AI determines the correct algorithm/approach that would result in different inputs being transformed into appropriate outputs. (And our programmer becomes a little less put-upon in the process, Win-win).

Advertisment

Programmers painstakingly and carefully design software systems, “instruction by instruction,” in a process that can be slow, tedious, and error-prone. But, with new developments in AI, that is all changing.

Instead of programming “instruction by instruction,” the industry is moving to a paradigm of programming “example by example.” Many examples of what we want the program to do can be collected (or not do) and labelled using a simple scheme. These examples are then fed to a machine learning algorithm that trains our algorithm. At the end of this process, a “trained model” appears that can be used as a program.

The software industry, on some level, has started to accept this idea. It is no longer a question of whether AI will change the way we write software. It is just a question of when.

Advertisment

One of the important ideas facilitating this new way of programming is neural networks. Multiple layers of neural networks are used by deep learning to extract and transform data. Each neural network layer takes its input from the previous layers and progressively refines them. The layers are trained by algorithms that minimize errors and improve accuracy. In this way, the network learns to perform a specified task, but it can be designed to perform any task if one has examples. This technique allows us to devise very complex instructions with the help of examples. This is something that even a very smart programmer would struggle to do.

AnurAg Sahay, Head of AI practice, Nagarro

Using deep learning, we can automatically create programs. But these programs look very different from the traditional programs we are used to seeing in C, Java, or Python. These deep learning programs are simply a collection of numbers. Lots of them.(Seriously. Whatever you are imagining isn’t enough. We are talking millions, if not billions, of numbers.) These numbers make up important parameters of the neural network. Using these numbers, we can reconstruct a neural network to complete any task.

Advertisment

AI programs are design specifications of neural networks. And whoever has this collection of numbers can build a neural network that can solve the specific problem it was trained to do. It is a lot to think about, but we need to get used to the idea. It is strange to think of programs that look like a collection of numbers. But that is the future of AI-driven software creation.

Software 2.0 is a paradigm shift. The idea is new, the tools are different, and the people trained on these tools are different alt. So, naturally, the process of developing software in this mode is also very different from traditional software development.

Iterations guide our process, and, in many ways, the process is designed around them. We discover business requirements in these iterations. We collect better data in these iterations. We design better neural network models in these iterations. It is an exciting time as the software industry works to formalize and simplify this process.

Advertisment

Artificial Intelligence to make software development easier

Pankaj Sachdeva

The ‘Ninety-Ninety’ rule of software development by Tom Cargill from Bell Labs states that “The first 90 percent of the code accounts for the first 10 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time.”

Advertisment

This implies that developers initially address low/medium complexity features & this builds all major features of the software.

However, the remaining 10% are highly complex features and hence require the most effort & time. AI intervention at both ends of this spectrum helps make the complete software development lifecycle much easier. It learns from data & the more we use it, the smarter it becomes.

AI is impacting the SDLC in diverse ways. Here are some of them.

Advertisment

Requirements Engineering and Management: Requirements management is the process of eliciting requirements while verifying and tracking what end-users expect of the software application. This is one of the major causes of delays, cost overruns and failed projects if done poorly. AI assistants can detect incomplete requirements and quantification, thereby speeding up the review process.

User Experience Design: Quick prototyping is an area where AI-based tools can be used effectively. Hand-drawn wireframes can be quickly converted into clickable prototypes. Many open and commercial tools are available in this space. Microsoft’s Sketch2Code is an example of using a computer vision approach to identify controls and layout from handdrawn images and generate HTML5 code.

Architecture and Design: This is exclusively done by humans, as complexities in mapping a business domain and design trade-offs pose many challenges to AI. Yet, AI assistants can aid reviews for best practices.

Radhakrishnan rajagopalan

Software Development: The application of AI in coding and unit testing is an area where interesting AI tools are emerging. These include coding assistants, automated unit tests, semantic search engines and natural language-based code generation tools, to name a few.

Testing: Testing tools have the widest adoption of AI. One example of the application of AIin testing can be seen in visual testing tools that can detect UI changes and automatically adjust test cases, minimizing build breaks. Another application is in generating automated test cases from manual test cases and test plans. A complementary area is test data generation that can be accomplished using generative adversarial networks (GANs). Opensource components, such as TGAN or CTGAN, can generate fully synthetic data from real data.

Project Management: This has been a manual activity with lots of mapping dependencies and managers struggling to arrive at the big picture. Start-ups such as Forecast are changing this through an AI-driven platform to integrate data from different enterprise applications, automate project management tasks, and bring in predictability across the project lifecycle.

Impact of Artificial Intelligence (AI)

The fact that AI has revolutionized businesses across the world is a no-brainer. For every business, particularly tech-driven ones such as Superpro, software security is a crucial aspect that cannot be overlooked.

Randy Allen

The system gathers data using the sensors and software installed on the customers’ end. AI enables us to study the data using Machine Learning (ML) to distinguish any irregularities or threats. By integrating with AI tools, development becomes faster. Software developers adopting AI can also avoid false notifications and alerts and receive authentic early warnings.

The opportunities for automating software development using AI is massive. According to Gartner research, by 2022, it is expected that at least 40% of new application development projects will use AI virtual developers on the team.

Over 70% of work that is done manually by software engineers could be automated with development automation tools that are based on AI when combined with existing development technologies. GPT-3, the largest ML model released in June 2020 presents a significant opportunity for automating development and is already seeing adoption.

While it is relatively early stages, enterprises and the development community is assessing both the efficacy in their environment as well as the impact on their business.

Here’s what our industry experts has to say about the Future Impact of AI

Ashish Gupta, Vice President - Software Development, Barco India Ashish Gupta, Barco India

Ashish Gupta, Vice President - Software Development, Barco India

AI-Assisted Software Development is already in and is helping developers to create write works flows. According to a recent Deloitte report, AI-enhanced software development could help an average developer become ten times more productive than they would be on their own. AI-powered tools automate testing to find issues and bugs.

It can also help in more accurate cost estimations and planning over all for any large software projects. One of the biggest trends in AI software development are AI-enabled coding apps with autocomplete features. AI itself is getting democratized and is applied to develop Low-Code No-Code AI and ML platforms and what it means is that you do not need to write a single line of code to produce AI/ML enabled software.

So there is lot of potential of AI-Powered Coding to change the way software is produced today. Above all, AI will allow software developers in the future to dedicate more time to knowledge building, problem-solving, creativity and eventually code better.

Ramprakash Ramamoorthy, Director of Research, ManageEngine

Ramprakash Ramamoorthy, Director of Research, ManageEngine Ramprakash Ramamoorthy, ManageEngine

With powerful AI-based forecasting techniques that consider trends and seasonal components embedded in the critical parameters that are monitored, predicting and mitigating disruptions long before they happen so end users are not impacted is possible.

AI techniques can help identify anomalies depending on the time of the day and the current application traffic. Traditional methods use static thresholds that don't work well with heavy seasonal fluctuation in the application traffic. For instance, the same static threshold for an alert that might be normal on a Monday morning at 9 am might not work on a Saturday morning at 3 am.

Balakrishna D R (Bali), Senior Vice President, Service Offering Head – ECS (Energy, Communications & Services), AI and Automation, Infosys

Balakrishna D R (Bali), Senior Vice President, Service Offering Head – ECS (Energy, Communications & Services), AI and Automation, Infosys Balakrishna D R, Infosys

While existing AI accelerators have shown promise in auto-generating / auto-completing code or documentation, the limitation of AI systems has been with respect to understanding the surrounding context. Present AI systems can comprehend a statement or function, but they cannot decipher a larger function, class, file, or project. Researchers are making efforts to understand larger surrounding contexts to predict (generate) more relevant code. This will enable humans to co-develop software with AI accelerators in pair programming mode. The AI accelerator can auto-complete statements/blocks of code that are written by humans. It can also auto-generate code from the description, which then will be manually corrected.

Padmashree Shagrithaya, Vice President, Head - AI & Analytics, India I&D, Capgemini

Padmashree Shagrithaya, Vice President, Head - AI & Analytics, India I&D, Capgemini Padmashree Shagrithaya, Capgemini

Artificial Intelligence will enable developers to build better & smarter software, that are responsive in real-time to end-users and incorporates self-supervised learnings to reduce data dependency and enhance performance. Further, Explainable AI will form an integral component of AI-based software development as it will ensure that the results of the solution can be deciphered by humans - facilitating transparent "AI Glass Box" models - where humans have the control of determining when AI results can be trusted.

Gaurav Tripathi, Founder and CEO, Superpro.ai

Gaurav Tripathi, Founder and CEO of Superpro.ai Gaurav Tripathi, Superpro.ai

AI allows software developers to build better software using technologies such as ML, Deep Learning, Data Analytics, and Natural Language Processing. AI will continue to significantly impact software development both in terms of design and creation.

Varun Goswami, Global Head - New Products COE, Newgen Software

Varun Goswami, Global Head - New Products COE, Newgen Software Varun Goswami, Newgen Software

With the enhanced use of AI in software development, software developers can leverage no-code or low code frameworks to rapidly create complex applications. AI can help in making the coding process easier and accelerating development lifecycles. Furthermore, AI can analyze the usage trend and effectively predict the changes required in an application, thereby reducing any future downtime.

Shivanand Pawar, Product Manager for Mosaic AI platform by LTI

Shivanand Pawar, Product Manager for Mosaic AI platform by LTI Shivanand Pawar, LTI

In the long term, we expect AI tools to evolve to write code for us, going beyond the current “no-code/low-code” tools we see in various specific domains. For example, Microsoft and Cambridge University have already developed an experimental tool to do this called DeepCoder.

Radhakrishnan Rajagopalan, Global Head, Customer Success, Data and Intelligence, Mindtree

Radhakrishnan Rajagopalan, Global Head, Customer Success, Data and Intelligence, Mindtree Radhakrishnan Rajagopalan, Mindtree

With increasing digital transformation, the need for custom software is also increasing. Like DevOps and Agile methodologies, AI in software development will have a significant impact on productivity improvements. It will become commonplace over the next few years to have AI assistants embedded in every aspect of the SDLC lifecycle.

Dr. Randy Allen, Vice President of Machine Learning Software, SiMa.ai

Dr. Randy Allen, Vice President of Machine Learning Software, SiMa.ai Dr. Randy Allen, SiMa.a

The main impact will be in the areas of debugging and supporting software -- the “backend” of development -- rather than in the direct development of software proper. Some programmers excel at both writing debuggable code and debugging running code. Inferring and deploying the commonalities among these programmers is a task ideally suited to AI. This will be an incredibly valuable area for AI given that the most expensive part of software development is debugging and support.

Piyush Jha, Senior Vice-President – Engineering, GlobalLogic

Piyush Jha, Senior Vice-President – Engineering, GlobalLogic Piyush Jha, GlobalLogic

In the coming future, the next shifts are going to be more dramatic and drastic. As AI engines start becoming smarter, they will start to write complex pieces of code with the added bonus of being flawless and efficient. We are already witnessing low code, no code and citizen developer framework starting to become mainstream. It is no longer a leap of faith to see AI engines write entire applications themselves.

Rajeev Tiwari, Co-founder, STEMROBO Technologies

Rajeev Tiwari, Co-founder, STEMROBO Technologies Rajeev Tiwari, STEMROBO Technologies

The Software Development of the future will be more complex requiring multiple variances, parameters, situations, behaviour analysis and multiple parameters. All this will lead to a much complex software development with advanced algos and deep learning techniques. At the same time, the Software Testing, Bug Fixing and Software Development Process will become complex and will require a great of parallel processing and data-intensive inferential decision making. All this is impossible to achieve without having AI being used to leverage Software Development. 

Suman Reddy, Managing Director and Country head, Pegasystems India

Suman Reddy, Managing Director and Country head, Pegasystems India Suman Reddy, Pegasystems India

By adopting AI in software development, traditional software development isn't going away, but it's getting a modern makeover. Software development tools with AI enhancements are an excellent example of how AI can empower rather than replace workers. Technology leaders are on a mission to help their companies build the future, and using AI to improve software development practices can help them achieve that goal. 

Ms. Pooja Sinha Juneja, Software Development Manager, Clearwater Analytics, India

Ms. Pooja Sinha Juneja, Software Development Manager, Clearwater Analytics, India Ms. Pooja Sinha Juneja, Clearwater Analytics

In the future, AI will touch upon and revolutionize many other aspects of the Software Development Life Cycle where human intervention is still a must. The future of DevOps will be AI-driven through Swifter failure forecasting, faster RCAs, anomaly detection, analyzing past performances to name a few. AI automatically fixing bugs and just not being limited to detecting them. AI will almost certainly be used to detect gaps in existing technology and notify companies when new software is necessary. 

Nikhil Mishra, Innovations Lead and Solutions Expert, ZingHR

Nikhil Mishra, Innovations Lead and Solutions Expert, ZingHR Nikhil Mishra, Innovations Lead and Solutions Expert, ZingHR

The future is already here. IMHO the very basics of tech outlay will be the first things that AI is changing. E.g., to build a product specially a SaaS one you might have to write 1000 lines of code, now all you have to do is just choose the skin of the product and get your data sets in and you have your ready app or product. In the same way, the world of software and hardware intelligence will evolve to integrate and bring both machine learning and deep learning to an autonomous AI mode to self-create, self-judge and perhaps self-decision. In all the above AI will be the key source. 

Srividya Kannan, Founder, Director, Avaali Solutions Pvt Ltd.

Srividya Kannan, Founder, Director, Avaali Solutions Pvt Ltd. Srividya Kannan, Avaali Solutions

AI could be used across the development lifecycle from needs understanding to designing and deploying including training to some extent. However, it can show maximum impact during the coding and unit testing phase to bring down the cycle time. While tasks such as test execution have already been automated using various scripted automation tools, what is being explored is to further automate using ML to create and manage tests. ML models are also being used to complete partially written codes and further training the models using the developers’ own code to auto complete codes. Also, scenario-driven API testing, test data generation and test insights and test self-healing could be good use cases. Some have gone to even look at auto ML to automate building ML models. 

Artificial intelligence (AI) is important in the design, development, and testing of software. It could help with software design, software testing, GUI testing, strategic decision-making, and automated code development, among other things.

AI-powered software can enable efficiency for developers. It can halve the number of keystrokes that developers need to type, catch bugs and vulnerabilities before the code is reviewed or tested. It can also automatically generate some of the tests required for quality assurance and help predict deployment failures before hand.

But in addition to AI as a tool to support software development as we know it today, for certain use cases, AI provides a more fundamental shift in software development. Traditionally, if there is a problem to be solved we provide a program that describes a very explicit sequence of steps to be followed, and that results into a solution that drives certain performance KPIs.

Modern-day AI machine learning and real-time decisioning systems operate differently. You only provide the problem and a way to evaluate the performance of a candidate solution, but the system will learn from feedback to generate the solution itself.

ai developer
Advertisment