L'architecture CBMS de la plate-forme RefineTM comprend 4 sous-ensembles tels que représentés sur le schéma ci-après :
> Un référentiel abstrait associé à un moteur de traitement d’arbres,Le CBMS Refinetm s’appuie sur un moteur de traitement d’arbres innovant, qui permet de stocker la totalité des informations se rapportant à un programme, notamment :
Chaque composant d’un patrimoine traité par Refinetm est représenté par un arbre abstrait attribué. Cette technologie empruntée au monde de la compilation permet de conserver absolument toute l’information des programmes sources. En outre, la structure très riche de cet arbre reflète les constructions du langage et leur hiérarchie et permet d’identifier rapidement et précisément tous les objets répondant à certains critères. Enfin, elle est enrichissable à volonté par le calcul de nouveaux attributs (p.ex. informations sémantiques ou nécessaires à la traduction).
La mise en œuvre des AST au sein d’un référentiel de stockage centralisé met à la disposition de ses utilisateurs la puissance d’une représentation issue de 20 ans de travaux dans le domaine de la compilation. Il s’agit d’une représentation garantissant à ses utilisateurs la possibilité de réaliser des analyses et des transformations avec une précision et une richesse sans égal.
Les passerelles langages permettent de charger le code source sous forme d’arbres dans le référentiel de l'architecture CBMS. MetaWare a développé des passerelles pour tout un ensemble de langages, parmi lesquels on peut citer :
COBOL ANSI 68, COBOL74, COBOL85, IBM OS/VS COBOL, COBOL II VS, COBOL DOS/VSE, COBOL BULL GCOS7, GCOS8, GCOS6, COBOL Tandem, COBOL Unisys, PL/1, C ANSI, FORTRAN, MANTIS, NATURAL, PACBASE, DELTA, ADA, Java, CODASYL, SQL, IMS-DB, VSAM BMS, FORMS, JSP STDS, WCL, CICS, IMS-DC JCL, ksh, GCL, OPC,
Chaque passerelle permet de transformer la représentation textuelle (dite concrète) des codes fournis sous une forme appropriée dite abstraite notamment indépendante de la syntaxe d’entrée. Les passerelles langage sont développées à l’aide d’un générateur d’analyseurs lexicographiques et syntaxiques inclus dans le SDK de RefineTM.
Chaque application est développée sous la forme de règles déclaratives enchaînées par un moteur d’inférences. Les règles utilisent le langage Refinetm pour interroger et manipuler le code.
Parmi les applications disponibles, on peut citer à titre d’exemple :
![]() |
![]() |
|
Ces outils de réingénierie sont développés à l’aide d’un langage spécialisé extrêmement puissant. Le compilateur associé à des outils d’aide au développement fait partie du SDK de RefineTM. |
||
![]() |
![]() |