I often come across questions about automation feasibilities around various activities of IT services such as, “Can certain activities related to definition, development, testing, or support be automated?” My answer would be, “As long as a human can perform the task, with the available information, without adding any external information from outside the context, like any additional knowledge other than what is provided as part of the procedure, it can be automated”.
Let us look at the following scenarios in various phases of IT services for automation feasibilities:
Requirements and Backlog Grooming
- A product owner or business analyst is required to prepare a product backlog, user stories, business requirements, and functional specifications for modernization or rebuild of a legacy/outdated application
- Building an application to deliver the functionality defined in Business Requirements Document / Functional Specifications Document complying to the defined architecture styles, design patterns, and frameworks to deliver the non-functional aspects as well
- Once the code build phase is complete, developers are required to create unit test cases to verify the component functionality in isolation, with/without mocked interfaces
- A developer needs to fix the vulnerabilities reported by code quality assessment tools such as Sonar
- A developer is tasked to look at COBOL or Visual Basic code, understand its functionality, domain models, design, business logic, and then rewrite the same logic in a different language, which can be successful as long as he has the understanding of the syntaxes and semantics of both the languages
- If a Business Process Management (BPM) expert needs to rewrite a business process executing on a Commercial Off The Shelf BPM stack such as PEGA or TIBCO to an open-standard stack such as Java
- An upgrade engineer is to address the incompatibility issues, to upgrade or migrate an application with respect to operating system/application server/framework
- An on-premises application needs to be remediated to migrate and integrate with native cloud services
- A monolith application is to be decomposed into microservices architecture to achieve better scalability, reliability and business agility
- A test engineer is tasked to create test cases from functional specifications
- An automation test engineer needs to create test suite for functional regression testing of a web application
Support and Maintenance
- A maintenance engineer is tasked to implement a business change request for a functional enhancement on a system in production
- A developer or a support engineer is required to fix a defect identified during quality assurance or user acceptance testing or production phases
- A production support executive is tasked to address production issues with the available runbooks, known error database and standard operating procedures
- A batch monitoring executive is needed to make data quality corrections to a feed file for a batch process
There are many more such scenarios. However, all of these could be automated either fully or partially.
Consider the scenario of a business analyst having to prepare the product backlogs / system requirements document for the modernization of a legacy application. The process can be significantly automated through tools which can reverse engineer the legacy application code, translate technical constructs into an intermediate format by eliminating unwanted noise and generate the specifications in natural English using Natural Language Processing algorithms. They can be further reviewed and enhanced by the business analysts. It saves significant amount of effort to be spent by analysts and developers for reverse engineering.
Similarly, identification of incompatibilities for upgrading an application to run on higher version of runtime / framework / server / platform, can be automated by evaluating the source code against a set of assessment rules. Application code can also be remediated to comply with the desired higher versions of the same through automated code refactoring engines.
In another scenario, fixes for functional defects identified during quality assurance / system testing phases can be derived automatically using machine learning algorithms to build a knowledge repository by analysis of adequate set of similar applications together with their corresponding set of unit test suites and subsequently implementing tools to interpret the defect localization contexts and comparing with the knowledge repository using artificial intelligence techniques and ranking algorithms.
We have implemented several similar solutions and tools as IT robots around these scenarios to automate various chores of software development and maintenance life cycle. Most of these approaches were proven successful and implemented in real-time customer projects as well. A multitude of algorithms, tools, libraries, and open-source frameworks are leveraged based on the technologies in the context of the scenarios.
Impact of Automation
Automation in IT services results in the following:
- Ability to handle scale and improve workforce productivity
- Deliver more in less time
- Consistency in quality across systems, irrespective of seniority/experience levels of the workforce
- Minimize or eliminate potential human errors
- Be a differentiator in competitive bidding for business by delivering added value to customers
On the other side,
- There is fear on the loss of business, since the IT robots reduce the resource head count required to deliver the scope of work. Billing and pricing models need to be redefined to reflect value-based pricing rather than effort-based / time & materials based pricing for mutual benefit of the customers and the service providers.
- Automation may result in redundancy of some of the skills hence continuous reskilling / upskilling would be essential
To summarize, Automation in IT services paves way for more innovation, productivity and progression. “Sky is the limit for automation of IT chores.”