Current Research - Software EngineeringChallenges in Software Engineering ChallengesResearch done at the Software Engineering Lab addresses the following challenges pertaining to application development, configuration, and integration:
Research InititiativesThe Software Engineering research group at the TCS Innovation Labs-TRDDC is a concerted effort towards transforming discreet software engineering activities into a standalone process-centric, tools-based Software Engineering discipline.
Customizable Standards-based MDD platform Model Driven Development (MDD) approach shifts the focus of application development to a higher level of abstraction by providing modeling notations for specifying different aspects of an application. Increased structure due to models enables their analysis thus eliminating certain errors altogether and catching some quite early in the development process. Models can be automatically translated into better-structured and high-quality code thus improving the productivity in a person-independent manner. By keeping the models independent of technology platform considerations, an application can be easily re-targeted to emerging technology platforms thus providing a better handle on meeting the ever-shrinking window of business opportunity. In essence, MDD approach hinges on i) an ability to define any modeling language to interest, ii) an ability to transform a model into another model form, and iii) an ability to transform a model to text. Object Management Group (OMG), an industry consortium comprising of leading platform vendors and consultancy organizations, has proposed Meta Object Facility (MOF), Query View and Transformations specification language (QVT) and Models to Text Transformations specification language (MTT) as standards to address the three needs. Our platform supports i) definition of a modeling language, ii) a visual notation for the modeling language, iii) automatic translation of models to a variety of SDLC artifacts in text form, and iv) configuration and version management of model and text artifacts. It also enables generation of MDD code generators from their specifications in terms of composable 'building blocks' that can be independently customized and extended. Configurability, Extensibility and Software Composition We view customizability along two dimensions, namely, configurability and extensibility. In essence, Configurability is making choices along pre-defined dimensions of variations and Extensibility is adding a new variant along an existing dimension of variation and/or adding a new dimension of variation. We will be extending the existing 'building block' abstraction (with bi-directional mapping to feature models) and building on top of Jet technology to address these needs. Modeling variability of real-life successful enterprise applications will be an important case study for this work and will also help in its migration to open platforms, if desired. The ultimate goal is to organize TCS business products as a family of product-lines and support their delivery in the form of a repository of business components and a customization toolset that end-users can use with little external help. Embedded Software Research Centre focuses on applying a combination static program analysis, formal methods and testing technologies to help develop defect free software for the embedded domain. The centre aims at scaling up the current state-of-the-art research in the three areas to analyze industry software and detect defects earlier in the software development life cycle. Current initiatives of this program are:
Model-Driven Integration of Enterprise Data Information is the key to success and yet getting the right kind of information at the right time is a challenge for many enterprises. A large enterprise typically has a large number of heterogeneous data sources - many legacy systems, third party applications, unstructured content, etc - that have evolved over time to serve different needs in different contexts, with context specific semantics and built-in assumptions. Integrating these disparate sources to get a consistent, unified view of data is a hard problem that IT departments constantly grapple with, which is only growing in complexity with ever growing data volumes. Ad hoc, point solutions only exacerbate the problem further, as businesses are growing in complexity and there is a constant need for change. A more systematic method is called for that is better able to cope with the ever changing, heterogeneous environments of modern enterprises. That is the focus of this work. Defect detection : Detection of hard to test defects using program analysis techniques There is a large class of defects which are impossible to be found out through testing or the cost involved is formidably high. While the example of first category is possibility of deadlock scenarios in concurrent systems (like in embedded domain), the example of second category is violation of some domain specific property. Program analysis techniques can e used to detect such kind of errors. Our focus is to detect both kind of errors. Even for errors which could be detected through proper testing, the process can be expedited by an order of magnitude by generating test cases with the help of program analysis techniques. Scalability with preciseness : Creating program analysis based solutions which are scalable to real life size source code and deliver precise result as well Program analysis techniques have found acclaims worldwide as a potential vehicle to solve teething problems in the area of software engineering. However, there is hard fact also that this potential is still to be realized by industry at large. The reason has been either the solutions do not scale to the real life software size or the results provided have so much impreciseness that solutions loose their credibility. Our effort is to come up with techniques and processes by which solutions created based upon program analysis can be applied to industry strength source code. At the same time results delivered are effective with almost no imprecise results. As we move toward a future where rapid application development is the need and spatially distributed stakeholders are becoming a way of life, IT solution providers continue to get plagued by problems pertinent to requirements. To meet such challenges there will be a need to devise effective collaboration techniques that address many of the common problems pertinent to requirements The requirements engineering research group at TRDDC aims to leverage the vast IT consulting experience in TCS and harness the capabilities of developing tools for software development to define solutions to requirements engineering problems. The team focuses on addressing critical requirements engineering problems such as, missing requirements, ambiguous, incomplete, and inconsistent requirements, and lack of effective communication between various stakeholders. We seek to define ideas, practices, technical capabilities, and products that enable a requirement-centric analysis, design, implementation, management and use of information systems by employing the fundamental principles in design science research. In the recent past, our focus has been on creating purposeful artifacts. We explicitly take into account the behavioral and collaboration aspects with respect to various stakeholders - organization’s managerial, technology-oriented, and execution-oriented. This understanding is used to construct a situational requirement –centric method- MAPAGILE. We have been able to use formal methods techniques to model and analyze requirements. The tools developed as a result of the research in this area have been able to improve the consistency, correctness, and completeness of requirements. TRDDC, which is one of the many labs of Tata Consultancy Services aims to leverage the vast IT consulting experience by being able to facilitate smart and efficient reuse of the organizational knowledge. Developing a collaborative requirements engineering tool that provides such a mechanism is the first step in this direction. Our current and future activities are centered on incorporating systems thinking approaches, socio-cultural tools, and devising novel ways to use newer technologies to enhance the following:
Principal focus of this work is to address the needs of the emerging trend to serve the Small and medium Businesses (SMB) market. Initially, this will involve working defining a logical architecture to support the short-term needs with a view to be able to eventually scale on demand. Customizable MDD platform should meet most of these critical development and integration needs of SMB. Even though the initial focus of SMB may be to provide back-office support to medium-sized enterprises through a hosted model, its eventual success probably hinges upon the ability to support tens-of-thousands-of-users with the desired quality of service. We realize a gap as regards the process aspects of supporting hosted services model. Our current thinking to fill this gap is to come up with a service management infrastructure that addresses h/w and s/w infrastructure, software development and integration, and CRM issues in a seamless integrated manner. Our experience has shown that most maintenance projects are concerned about how to make changes faster without introducing new defects. We are experimenting with various techniques to do a more thorough change impact analysis, methods for understanding systems at a higher level of abstraction, ability to test changes thoroughly, and ways of locally re-architecting systems to make it easier to make a known type of changes faster. This is a very rich area and that offers a lot of scope for different thinking and we hope to attract a lot of attention to this poorly understood area. The focus is to address the methods of design and development, methods of impact analysis at design and code level, and techniques to establish trace from design to code. Projects in this area cover:
Software Reverse and Re-engineering The group’s vision is to define and enable automated model-driven, re-engineering solutions that make a difference in the modernization market. Over time, every software tends to become legacy, resulting in complex dependencies between architecture elements and difficulty to match the expanding business needs, leading to high maintenance cost. Objective of this work is to provide automated solutions to migrate legacy software to modern paradigms, at both the design and code levels, while also addressing certain specific needs like scalability and performance. Technical challenges are in terms of
Software testing constitutes a major percentage of effort while making a software release. Despite all the efforts people put in the quality of the software, as well as the effectiveness of testing remains lower than expectations. We are working in this area on multiple fronts. After a reasonable success with our implementation of the equivalence portioning approach to generate test data for functional testing, we are expanding our scope to get a better understanding of what constitutes system testing. The approach we propose to adopt is to enable test designers to specify tests at a very high level without regard for the details of the system. This specification can then be combined with a description of the system to generate actual test cases, test data and verification steps to increase the confidence one has in the tests and the level of automation to dramatically reduce the efforts required. While a specification based approach would work for new systems, it does not get off the ground for systems that have been around for a long time. Often such systems have a test suite what has simply grown fat over the years or they are tested using replicas of production data. So one method is to be able to reduce the size of these tests to provide the same effectiveness or coverage, other methods would be to be able to recreate a regression test suite that one can relate to business scenarios. We collaborate with Georgia Tech on this set of problems. |