: " To spče main: "| tain and enhance the billions of lines of existing programmers need powerful | reverse-engineer- ing tools that, can | both derive pro- ' cess models and |. data models ' from existing — code, and kipe rebuild these ap- MARTIN a more ode distributed- processing . environment. Reverse-engineering is a software tech- nology that has as its goal the migration of old systems into a cleanly engineered form that can be enhanced easily. The re- ality is that true reverse-engineering tools that convert existing data definitions and procedural code into high-level specifica-. tions are not yet available. ' plications within % For instance, computer-aided software engineering (CASE) tools are oriented toward the specification and implemen- tation of new applications, and thus fali d short of providing much assistance in' the support and improvement of exist-. ing application code. čiti. There s a lot of confusion in the field. | about what is meant by reverse-engi- neering. To clear up the confusion, con- sider the three categories of tools that support various components of reverse- . engineering: e Restructuring Engines. These tools automatically convert unstructured source code (such as COBOL) into struc-'. | tured code. The goal is to reduce mainte- .. nance costs, improve guality, extend the life of old systems and enable program ': enhancements to be made in much less '': time. The process automatically creates a structured version of the original '' source code without changing its func- tionality. ' Re-engineering Tools. These MS an: '. alyze the source code to identify its structure and detect data redundancies, non-standard names and unused code, /'! i? Documentation is produced that lists" cross-reference tables, structure charts and relationships between files, records and fields. An analyst can interact with / the tool to resolve inconsistencies and restructure process or data definitions. The standardized definitions can then be i stored in the repository. of a CASE Vie s for further analysis. o 9 ReverseEngineerinc The term ' re- erse-engi eering" should be reserved iz t or toda that are capable of synthesiz- ing unstructured data definitions and processing definitions up to the level of pure specifications, independent of envi- ronment. These specifications can then. be used in a [orward-engineering process o o pleenent the application in the. e or a different environmen using . standard CASE technigues. Retneike | of specifications from rlelia PRE defi- nitions and process code is an extraordi- č narily difficult task, which has been - solved, to date, only on the data side. ' Most. CASE tools čhat clalm reverse ; ji application code, ' engineering sli tem Val support, ; re-engineering functions. They don't syn-' thesize low-level data and process defini- tions up to the level of environment: ';. independent specifications: " The figure illustrates the funcilona" | performed by a true reverse-engineering tool. Reverse-engineering of data func: tions are shown on the left of the figure; reverse-engineering of process functions are shown on the right. H As shown, conversion of data defini- tions into specifications is done at three. levels: capture of physical data defini- tions in the program; development of a ' schema description contained in a data- structure diagram; and conversion of the . vetšloti of date defini tloris into an inter: : £" mediate form called a data-structure di- "agram. The data in the old program is likely to be unnormalized. The data- structure diagrams need to be normal- ized and the normalized structure made to conform to a data model. The data model is a pure specifica- tion, typically expressed in the form of an entity-relationship diagram. At this point, the data definitions from the program have been converted into a data model, at the specification ' level. From that data model, new data. structures can be created for the same database-management, environment or a different environment. '" The Stages of Reverse and Forward Engineering Goal Is To Convert Data Definitions and Program Code Into Pure Specifieations, Then Forward-Engineer to New Designs a — 8 (lite speciticatlons] Data structure diagrams | Redesigned data definitions | definitions j ? ua F . " sj I s J LJ k P ) ; Ra 4 ki ' di. 4 u j ri j a ME a s V p J i ki č su J ji K ide ž. 4 oe. na rab K." H ka UE n. : ui zad zdi TOPEL ie ds eeiN . repi gan ia stni kisi Keeiebei ema s dY ZASE Repository (stores data ang grocess models Process -— Models ij Procedure structure diagrams JA |Unstructured code