Customer centricity is now synonymous with staying relevant. Today’s highly competitive market places greater emphasis on customer satisfaction throughout the entire lifecycle of a system or solution. Dealing with fickle customer mindsets and habits requires enterprise agility, the ability to maneuver in motion to a change in strategy while still delivering efficiently. Hence, the focus on developer productivity – a critical aspect of enterprise agility – is greater than ever before.
But the traditional measures of developer productivity have always lacked metrics of engagement or Developer experience. As a result, the term is widely substituted by “Delivery Velocity.” High performers such as Google, Amazon, Facebook, Netflix and Etsy routinely and reliably deploy code into production hundreds or even thousands of times per day. How can such “Delivery Velocity” be achieved by others?
One step is to identify patterns of commonalities in customized development processes. Another is to leverage machine-learned gaps in developer practices that can crystallize into patterns where AI and Machine-Learning (ML) solutions can augment developer productivity.
Organizations have already started incrementally investing in AI technologies to reduce development times and the cost of delivery. Insights gleaned from machine learning can help to better plan and deliver new products and services with greater velocity.
So how does software development look in the future? What is the role of AI in the evolution of Software Engineering? In short, the integration of engineering processes and AI will be play a significant role in shaping future systems. This two-part series will explore some key reasons why.
Software Development 2.0
To understand where AI technologies can be leveraged to “automate automation” or accelerate maturity, it’s helpful to map their roles in key software-development processes. This article will explore three areas – Requirement Analysis, Design, and Engineering – and share practical examples of how the future of software development is being implemented today.
UI for Requirement Analysis
A common challenge developers encounter is unclear or conflicting requirements, especially in large enterprises that require multi-criteria decision analysis. AI can help with techniques like computational or swarm intelligence and multi-objective evolutionary optimization. It can also help align stakeholders involved in building complex systems.
AI can also enhance Human-to-Computer Interaction/Interface (HCI). Natural-language processing (NLP) and intelligent bots are two AI methods to improve the HCI. AI-powered chatbots and virtual assistants can interact with stakeholders to elicit requirements, parse/translate the discussion, perform sentiment analysis and provide recommendations.
Wipro’s HOLMES Business Analyst bot works on the same model. This technology allows users to interact through voice and collects requirements or information from users, customers and stakeholders using a pre-defined questionnaire. The voice-activated bot leverages the Holmes NLP-based algorithm combined with speech-recognition capability.
Attributes like quality, security, reliability and performance should be designed into the product or service, not inspected after development. At Wipro, we have begun evaluating how to integrate ML into design strategies to improve product design from the outset. For example, Artificial Neural Networks (ANNs) can be used to predict defects and classify system characteristics that might lead to error, allowing software developers to be more proactive or take corrective action. Using AI techniques, organizations can gather data and formulate models that make decisions concerning system failure, operational readiness and success, and they can establish maintenance/service requirements that will help to refine future design cycles.
Many enterprises are automating traditional development tasks, much like cloud providers are experimenting with AI to reduce development overhead. Although virtual development may seem distant, developer-assistant programs with varying level of capabilities are currently in the market, addressing tasks such as syntax correction and suggestion to predicting code choices.
One area of AI intervention is the process of merging code into an integrated trunk. In a complex enterprise, a code change can have implications for integrated systems, points, performance and reliability. While the standard practices of branching and merging (trunk-based development) allow developers to code independently and fearlessly, a unit or systems/regression test may not be sufficient to ensure an impact-free deployment (or post-deployment), or to save the additional time and effort used for root cause analysis and fixes.
The answer lies in a heuristic change-impact analysis or “code validating automated ML algorithm” that understands the development ecosystem’s present state of integrations, network, infrastructure and apps. This program, when triggered by a logical development checkpoint, will virtually simulate the nascent code’s existence within the ecosystem and flag the potential conflicts, issues and inconsistencies. The ML program can then be retrained using test results from recently and historically submitted code changes based on linear regression and vector space-based propensity learning models.
Wipro’s (partner) offerings in this space is a change analytics solution that leverages AI to help organizations identify change-related issues during production and determine the exact change causing the issue.
Similarly, for Project Management, programs based on computational search problems and computation intelligence can assist with intelligent task assignment and complex decision analysis under high levels of uncertainty. This, in turn, can help with development activities like code refactoring, error handling and rapid prototyping.