India is a software superpower today. This achievement rests on more than four decades of work spanning software processes, rigorous engineering and value-adding technologies, among others. In this article, we present highlights of some of these activities. This regional section also contains other articles that complement this account of exciting work in software systems stemming from India.
The Indian software industry is currently valued at approximately US$180 billion, and is projected to touch $350 billion by 2025.a It serves most regions of the world and employs four million people directly and 13 million people indirectly.
Developing and delivering software solutions at this scale across diverse domains requires constant effort to improve the processes, tools, and platforms. Therefore, almost all major software companies in India have separate teams to address long-term research and development problems.
Research groups at Indian educational institutions such as Indian Institute of Science (IISc), and some of the Indian Institutes of Technology (IITs) and Indian/International Institutes of Information Technology (IIITs) have also contributed in significant measure to this success story. Besides technology transfers arising out of industry-academia collaborations, work originating in Indian labs have consistently appeared at top-tier conference venues like ICSE, POPL, PLDI, FSE, CAV, TACAS, SAS, ACM TOPLAS, and IEEE TSE. In fact, ICSE 2014 was held in Hyderabad and POPL 2015 was held in Mumbai under the General Chairship of Pankaj Jalote and Sriram Rajamani, respectively.
India also has its flagship annual conference called Innovations in Software Engineering (ISEC), which provides a platform for sharing experiences of various research groups.
Up until the 1990s, the world of software was filled with stories of delayed and poor-quality software projects. For improving this scenario, a five-level Capability Maturity Model (CMM)b was developed by the Software Engineering Institute (SEI). CMM is a framework and model for evaluating and improving the software development process in an organization in a staged manner, and has been adopted by companies across the world. Indian software companies took a lead in deploying this model for improving software quality and productivity. In the early stages of model deployment, a large percentage of the companies at high maturity levels (CMM level 5) were from India—a situation that continues even today. Companies across the world, and countries desirous of developing their software sector, wanted to learn from the Indian experience in employing rigorous software processes using quantitative techniques for managing them. Indian companies shared their experience in conferences, workshops, seminars, as well as through books like CMM in Practice and Software Project Management in Practice (both authored by Pankaj Jalote), which were translated in various languages such as Chinese, Japanese, Korean, and French.
Software engineering is yet another pillar on which India's software success story rests. Research groups in Indian companies and universities today are exploring problems in several areas such as foundations of software engineering, quality assurance, architecture and design, security, software engineering for the cloud and mobile environments, software engineering education, and applying AI/ML in the software engineering domain. Here, we highlight a few of these prominent activities:
The Research & Innovation unit of Tata Consultancy Services (TCS) has been developing MasterCraft,c a toolset for supporting model-driven software development, for close to 17 years. MasterCraft is comprised of three major components. First, it has a set of meta-models to specify layers of a typical distributed architecture such as graphical user interfaces, services layer, and data manager layer, among others. Next, to facilitate smooth integration, MasterCraft provides component abstraction that helps view a software system as a set of interdependent components that can be specified, developed, and tested independently. Finally, MasterCraft incorporates a set of core technologies such as meta modeling, model editing, ensuring model well-formedness as well as internal consistency, and model-to-model and model-to-text transformation.
Developing and delivering software solutions at this scale across diverse domains requires constant effort to improve the processes, tools, and platforms.
MasterCraft has made a huge business impact, delivering more than 70 large business applications across the world on a multitude of technology platforms and architectures. Its use has also led to 50+ top-tier publications and 20+ patents. Much of this research also found its way into international standards at Object Management Group, and has contributed to three core standards.
A comparably significant effort at Infosys has been the development of the Infosys DevOps Platform (IDP)d that helps organizations accelerate their agile and DevOps journey in quality, at scale, and at speed. It has ready-to-use pipelines for more than 25 technologies and prebuilt integration with over 70 open source or commercial tools. IDP is built on open source resources and is available as an open source project. It has made a huge impact in software development processes across the world in terms of its adoption—more than 100 projects in 30+ organizations worldwide, with more than 5,000 Infosys engineers trained and serving various clients.
In addition to these industry-led efforts, there are several exciting software engineering projects happening in Indian academic labs as well. Automated usability evaluation of mobile applications is one such project from IIIT Hyderabad. Usability is considered one of the primary factors for end users to adopt mobile devices/applications. The IIITH group's research led to the development of a code analysis-based usability evaluation framework for mobile apps that can be used at the predesign stage to enhance productivity or at the post-design stage to check conformance to specific usability guidelines. Automated evaluation of the mobile application is done using quantitative metrics and AI/ML-based methods.
Going beyond CMM and software engineering, program analysis and formal verification are increasingly viewed as technologies that add value to enterprise and mission-critical software, both during its development and as an end product. This is particularly true for software that runs on potentially unreliable hardware and yet must provide guarantees of performance, security, functionality, and so on. Industrial and academic research groups in India have been consistently pushing the frontiers of program analysis and verification, targeting both scalability and precision. Here, we highlight a few contributions:
Precise and scalable pointer analysis is known to enhance the quality of other program analyses by uncovering the indirect manipulation of data and indirect flow of control. However, it is challenging to scale an exhaustive flow- and context-sensitive pointer analysis to large programs in languages like C and C++. Most approaches begin with scalable but imprecise methods and try to increase their precision.
The programming languages research group at IIT Bombay has taken the opposite approach in that it began with a precise method and attempts to increase its scalability without compromising on precision and soundness. This has made it possible to strike a fine balance between precision and performance in pointer analysis, beyond what could have been achieved earlier.
Yet another area that has seen important contributions from India is static assertion checking. The primary challenge here is to reason about programs with loops, especially those that manipulate data structures like arrays and lists. Verifying asynchronous and concurrent programs presents yet another set of technical challenges related to races, deadlocks, memory consistency models, and the like. Research groups at IISc, IIT Bombay, TCS, and Microsoft Research India among others, have been working on abstraction and constraint solving-based techniques to handle complex assertion checking tasks like these. Their work has been reported at leading venues like CAV, TACAS, TOPLAS, and SAS, and some of these technologies have also been inducted in industry-scale tools. In the 2019 edition of the Competition on Software Verification, one of India's entries—VeriAbs from TCS—nabbed the top position in the "ReachSafety" category of the competition.
The P# projecte from Microsoft Research India harnesses program analysis and formal verification techniques to develop a unique actor-based programming model for event-driven asynchronous applications and services. This model allows programming concurrent applications at a higher level of abstraction so the code more closely resembles its design. It is a natural fit for programming reactive distributed systems.
India has historically played a leadership role in global software development. As newer technologies get embedded in software design, the underlying processes, engineering, and technologies will inevitably need to adapt.
In addition to an efficient and lightweight runtime, P# provides the capabilities of writing detailed safety and liveness specifications. A testing engine controls the scheduling of the program, as well as all declared sources of nondeterminism (for example, failures and timeouts), to systematically explore behaviors, looking for violations of the specifications. If a bug is found, the testing engine reports a deterministic reproducible trace that can be replayed in the debugger. P# has been used by several teams in Microsoft Azure to write cloud services, who have reported dramatically increased productivity. Further, there have been nearly zero crashes reported for components designed using this model.
Sankief is yet another project from Microsoft Research India where multiple technologies, including program analysis, root-cause analysis, and data-driven machine learning techniques are being harnessed together to improve the software development process.
India has historically played a leadership role in global software development. As newer technologies like data-driven techniques get embedded in software design, the underlying processes, engineering, and technologies will inevitably need to adapt. Indian companies and researchers are already gearing up for this. While the nature of problems to solve will change over the years, the Indian software R&D community appears sufficiently well grounded and equipped to rise up to the challenge.
d. http://bit.ly/2XDNQiZ, page 12
©2019 ACM 0001-0782/19/11
Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and full citation on the first page. Copyright for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, to republish, to post on servers, or to redistribute to lists, requires prior specific permission and/or fee. Request permission to publish from [email protected] or fax (212) 869-0481.
The Digital Library is published by the Association for Computing Machinery. Copyright © 2019 ACM, Inc.
No entries found