Software Engg > Tools
Property Verification Tool

Property verification is the key to detect a certain class of problems found in software systems, which are impossible to detect using testing and difficult to reproduce. Validating domain specific properties of a system ensures correctness of a system before it goes into production.
            We are in process of developing a property verification tool on top of program analysis framework PRISM. As this tool will be based on PRISM framework, it will be able to serve as a property checker for all languages supported by PRISM. It will help in ensuring some crucial system-level properties are satisfied. This will in turn go a long way towards mitigating the risk for TCS customers and helping them comply with regulatory standards.

Team members: Bharti C, Vivek Singh, Raghavendra Kulkarni


As the name suggests, MC-Lite is a lightweight incarnation of MasterCraft. MC-Lite supports a metadata-driven aspect-oriented software development approach wherein business logic specified in Java is annotated with metadata as javadoc tags. A tag processor later inserts the desired code fragments at appropriate places. A “building block” abstraction supports hierarchical composition of tags thus enabling a repository of reusable artefacts.

Reflexive modeling framework

The framework supports a modeling architecture comprising of 3 levels each being defined as an instance of the one above. Thus, models at the bottom level are instances of the models (called as meta models) at the middle level which in turn are instances of the models (called as meta meta models) at the top level. Meta meta model is defined in terms of meta meta model itself. Moreover, reflexive modeling framework enables n-level modeling wherein the models in the layer below are instances of the models in the layer above, and it is possible to query / navigate along and across the two levels.

Additionally, reflexive modeling framework supports a model repository having comprehensive life cycle management support through storage management, version and configuration management, diff-n-merge of models, a generic extensible diagramming framework, and a model navigation and scripting language.


Modelmorph is a model-to-model transformation tool that implements OMG MOF QVT standard.


As the name suggests, Model2Text is a model-to-text transformation tool that implements OMG MOF Model2Text standard.

MDD for “the cloud”

In our view, cloud computing, in essence, is SaaS with the infrastructure components abstracted away. The cloud computing space can be visualized along three dimensions (which also happen to be the key stake-holders), namely, cloud infrastructure builders, cloud operators (/integrators?) and content providers ...


The Programmable Abstraction and Transformation workbench (ProAX) is developed as a vehicle to explore pattern-based program abstractions, interactively and quickly create model discovery tools, and experiment with multiple program properties (structural and flow-based) to define and search for code patterns. It has its own IDE and specification language. ProAX is the basis for a number of re-architecting and custom re-structuring tools, and explorations for re-engineering and reverse-engineering.

Team Members: Adnan Contractor, Hemanth Makkapati

ReAL-i (RPG to J2EE)

The toolset was conceived by our group and developed in conjunction with a business group. Built using ProAX, the toolset aims at analyzing business systems that are developed using RPG programming language on iSeries machines, discovering different abstractions as models from the programs, letting user make limited modifications to the models, and generating J2EE compliant code from the models so discovered. Although the toolset has been used to pilot few re-architecting exercises for customers, it has been effectively used for few Reverse Engineering projects (generating models and documentation from code) for customers.

Team Members: Adnan Contractor, Hemanth Makkapati

Reform (Revine)

Revine, the Program understanding and Reverse Engineering framework (now called Reform), was conceptualized and built by our group. The toolset provides aid to COBOL and PL/I developers to understand the software by identifying the usage and modification of data elements (data-flow), flow-graph of programs and paras, data-slices of variables and record fields, and information of other programming elements as well. Armed with this information, the analyst can create artefacts that can help to find out code impacted due to changes, an overall mental model of the code, and relationships between code and data. This toolset is used by a large number of Reverse Engineering and documentation projects that TCS is executing for its customers.

Our group also supports program representations (IR Models) for Revine and other tools that make use of Prism (program analyzer built by TRDDC.

Team Members: Ravinda Naik (for program representations)


Automatic Specification-driven Standards Enforcement Tool
Code quality is particularly important in mission- or safety-critical systems. C remains the programming language of choice for embedded systems. The nature of the language and the freedoms it permits demands that it is used with great care in safety-related situations. In April 1998, the Motor Industry Software Reliability Association (MISRA) published "Guidelines for the use of the C language in vehicle based software", which defined a less error-prone approach to using C codified in 127 rules.

TCS Embedded Code Analyzer

An embedded software application has much more demand on qualities like robustness, reliability and correctness.  Manual reviews and verification of source code, may not find all potential errors in the code. The problems gets only compounded for more complex and large software. Static program analysis techniques are often used for analyzing the correctness of safety and mission critical software.