Developed in the 80s by the Kestrel Institute, a Silicon Valley software research laboratory, Refine® has emerged over the years as a widely used technology for software analysis and automated legacy modernization activities. Since its creation, Refine® technology has been adopted by organizations like: NASA, Boeing, Oracle, Hewlett Packard, AT&T, MIT, Stanford,…
Exclusive property of Metaware since 2005, Refine® Technology has been at the core of more than 200 modernization projects delivered worldwide since 1995.
The technology brings to the legacy modernization market unprecedented and unmatched transformation performance:
- 100% automation
- 10-5 precision | less than 1 defect per 100,000 line of transformed code
- Automated regression testing
The combination of eXtreme automation, eXtreme precision, and automated testing resulting in zero defect projects.
This performance is largely due to Refine® ’s innovative architecture that we refer to as CBMS | Code Base Management System by analogy with the universally known and acknowledged concept: DBMS |
Where a database management system | DBMS enables a company to store and process data, a CBMS allows the storage, handling, and transformation of source codes. Loading of the CBMS is provided by specialized gateways or parsers, one for each language to process. Once loaded into the CBMS, one or more modernization solutions can be applied to analyze and transform the source code stored in the base.
A CBMS presents many analogies with a conventional DBMS:
- A relational DBMS stores data in tabular form - a representation suited to data manipulation; a CBMS stores code in the form of Abstract Syntax Trees | AST - a representation resulting from 30 years of research in the compilation field
- A DBMS uses specific tools (aka SQL*loader) to load a database. A CBMS requires specialized language-based gateways to load the code base in AST form
- An RDBMS uses a specific language - SQL - to manipulate and query the data. A CBMS also uses a specific language, called CQML to query and manipulate the code stored in the base.
- Like a DBMS, a CBMS must be able to guarantee excellent performance, both for storing large volumes of code and for running cumbersome and complex processes; and this by drawing, in particular, on the power of the new platforms on the market
The CBMS architecture of Refine® platform comprises 4 subunits, as shown in the following diagram:
- An abstract repository combined with a tree processing engine
- Language gateways
- Modernization services
- An Internet access portal
An abstract repository
The Refine® platform is based on an innovative tree processing engine, used to store all program-related data, in particular:
- its so-called abstract representation in the form of annotated trees
- its data flow, which describes the manner in which each datum is moved through a program or application
- its process flow, which describes the program's control structure at various levels of abstraction
- the description of the use and assignment of each variable used by the program
- the existing dependency relationships between all software elements
- its quality properties
Each component processed by Refine® is represented by an Abstract Syntax Tree. This technology, taken from the compilation world, maintains absolutely all source program information. Furthermore, this tree's rich structure reflects the language's constructs and their hierarchy, allowing the rapid and accurate identification of all objects corresponding to certain criteria. Finally, it can be enriched at will by the calculation of new attributes (e.g.: semantic data, or data required for translation).
The implementation of ASTs within a centralized storage repository provides its users with the power of a representation based on 20 years' work in the compilation field. This is a representation that guarantees its users the ability to conduct analyses and transformations with an unmatched level of accuracy.
Each application is developed in the form of declarative rules linked by means of an inference engine. The rules use the Refine® language to query and manipulate the code.
Amongst the available applications, one can mention:
- A mapping and retro-documentation application
- A code inspection tool: anomalies, quality, standards, performance
- A quality measurement tool (complexity, maintainability, etc.),
- Database conversion tool
- Language translation tools
- Business rule prospecting and extraction tools
- Mainframe to JSP, XML/XSLT user interface conversion tools
- Test instrumentation tools: risk analysis and test coverage measurements, update traces, comparators
- Code agilization tools
These reengineering tools have been developed using an extremely powerful specialized language. The compiler, associated with development assistance tools, is part of the Refine® SDK.