Our first article in this two-part series addressed three areas of software development – Requirement Analysis, Design, and Engineering – that have already been influenced by AI to “automate automation” or accelerate maturity. As we continue to explore how the integration of engineering processes and AI will help shape future systems, this article will focus on three additional development aspects: Review/Testing, Operations, and Collaboration.
Review / Testing
We have come a long way since the days of traditional quality assurance, with new tools at our disposal including automated test environments, automated testing and “automated automation.” As hypothesis-driven and test-driven development has enabled experimentation, it is imperative to left-shift quality control.
In a high-performing enterprise, the onus lies on the developer to ensure all developed code causes no unexpected disruptions. AI can help these efforts by creating a predictive test-selection model that estimates the probability of each test failing for a proposed code change.
Machine-Learned (ML) algorithms such as support vector machines, which use historical and synthetic data, can build a model that abstracts the effects of introducing a change into the failed regression tests it triggers. Additional evaluation and calibration of the self-learning program sharpens the prediction accuracy even further. Wipro’s Regression Test optimizer bot works on a similar model by understanding the applications’ flow and mapping test cases to the respective affected methods in code. Another area we are exploring is using machine-learning in automated testing to emulate production-like conditions and facilitate automated checking.
Operations
DevOps and Site Reliability Engineering have led to bigger dev and smaller ops, causing more significant overlap of development over operations. The concept of AI Ops can help regain those lost efficiencies by boosting automation when developing and operationalizing IT solutions.
AI technologies such as ML can be used to analyze big data and provide more significant insights that can improve decision making regarding automated infrastructure management, environment setup and code deployment.
For example, the health of a system or enterprise can be monitored by ML that knows what to evaluate in a given dataset. Software applications can be monitored via supervised machine learning, which involves constant updates to many variables such as runtime, log files and network traffic. Software with multiple variations and trigger systems can also be calculated and monitored, with engineers alerted if variables exceed a certain threshold. All of this information can be leveraged in system design and code refinement.
One of Wipro’s partner solutions, an AI-based log analytics and anomaly detection tool, can help organizations find both known and unknown issues. This tool can be used for application or infrastructure monitoring, cloud assurance and operations, and for production testing to identify issues that developers should fix before the solution is deployed into the market.
Enterprises can also explore and leverage other Wipro (and partner) offerings in this space to keep their environments in sync while ensuring there are no unauthorized changes.
Collaboration
Engineering tools such as JIRA aide collaboration, but AI can enable the team to interact more naturally. Organizations increasingly acknowledge the need to leverage a connected workplace to improve business agility and gain operational efficiencies. This need amplifies with a global footprint. AI can use existing tools and services to promote coordination across geographies and disciplines. For example, AI technologies that support enhanced conversational interfaces can help developers better interact with voice and chat assistants. And chat-based workplace tools like Microsoft teams or Slack employ bots that often use core AI technology.
AI can also contribute to a truly agile workspace via a consensus social network mechanism. For example, Topcoder, internal Quora, StackExchange and Wikipedia environments all use AI techniques to create collaborative, collective systems in which user groups provide governance in a decentralized manner.
Another valuable resource is the RigBot offered as part of Wipro’s Digital Rig. RigBot employs conversational ops and uses an integrated Chatbots engine to automate 40% to 50% of all operational activities.
The common trait among these examples is the pursuit of more meaningful DevOps, an integrated state that transcends conventional delivery velocity and adds pervasive transformation along with an improved Developer Experience. This is a better measure of developer productivity.
The Paradigm of AI Evolution
This diagram explains where the software development process stands within the paradigm of AI evolution.
The AI maturity of enterprises ranges from a certain degree of automation to highly cognitive systems. For a more transparent comprehension, compare the state of AI to the automobile evolution.
- RPA (Robotic Process Automation) is based on partial contextualization of system information (trained with patterns) and intelligent process automation. Most organizations have established this in some form or another, with varying degrees of maturity. RPA focuses on automating manual tasks to increase the reliability and efficiency of software creation. For example, test automation reduced cycle times through parallelizing, which shortened feedback loops. The deployment automation also improved reliability using repeatable scripts. However, it’s always been humans analyzing and acting on the feedback.
- A significant notch above, where high performers operate currently, is the “Developer Assist” mode. This mode is based on rule-based expert systems and higher contextualization. This next level of sophistication covers tools that permitted machines to make decisions based on fixed rules. Auto-scaling infrastructure is a good example. Machines can now determine the required compute power to service loads being handled by an application, while humans configure the bounds and steps that the compute power can scale. Other examples of such programs include self-healing programs, AI operations and anomaly detection.
- Virtual Development will come to fruition when the program or algorithm has full contextualization of the concept, i.e. a “world view” that encompasses outcome shaping, behavior inference and design for behavior change. Here, AI will enable machines to evolve without human intervention, allowing machines to analyze data and learn from it, and empowering tools to mutate or augment rules that allow them to make increasingly complex decisions. A scenario in this state might include chatbots picking requirements that are analyzed and parsed via NLP, developed into products in a “developer-free” process, tested and then deployed automatically.
What’s Next for AI and Software Development?
With AI pervading all aspects of technology, a fundamental change is underway in the software development paradigm. Though the state of “AI creating AI” is not upon us, we are already seeing a huge growth of AutoML solutions that aim to automate pieces of the ML model training process, reducing software engineers’ workload and enabling domain experts to train production-quality models.
Wipro recommends starting small by running pilots in areas of proven productivity impact, like QE and Engineering Operation. As AI technologies mature, the top concerns and important focus areas for software developers are quality, effective analysis, robust design, reliable programming and competent testing. Building and exploring AI capabilities to create a human-centric and machine-augmented world have already begun to influence software development. This impact will only increase over time.