Reverse engineering collaboratory: a logic-based tool for monitoring the quality of programs

Abstract Much of the research carried out by groups working at physically distributed sites is conducted over the Internet. This has given rise to the tendency to set up metalaboratories, comprising research personnel, machines and tools that are not physically present in the same geographical place. For instance, the term ‘Collaboratory’ combines the concept of ‘Collaboration’ between researchers who are located in different geographical areas, and the ‘Laboratory’ they use to carry out their work. This paper shows an application of the collaboration paradigm, in which a tool has been developed and has begun to be made available to users over Internet. This is a Prolog-Based tool for monitoring the quality of a program written in some of the most commonly used programming languages (Cobol and C). This is useful and, in many cases, indispensable during the reverse engineering phase: that is, the phase devoted to reconstructing the documentation from existing code, to check whether a program has a given level of quality, whether certain parts of it may turn out to be critical from a qualitative viewpoint if repeated maintenance interventions are carried out on it, and finally whether the program itself could be a candidate for reuse and, if so, whether it constitutes a single element of a catalog of reusable programs. The tool is set up in LPA Prolog on a Windows 3.11 platform, and is part of a larger environment dedicated to the activities of software understanding through reverse engineering. The user connects to an internet address, uses the tool (which may be remotely calibrated), and takes the desired reading before importing the measurement results.

[1]  Wojtek Kozaczynski,et al.  Automated support for legacy code understanding , 1994, CACM.

[2]  M.R.A. Eltantawi,et al.  Applications of logic programming in language analysis: Document reconstruction from existing code , 1994 .

[3]  Leon Sterling,et al.  The Art of Prolog , 1987, IEEE Expert.

[4]  Anneliese Amschler Andrews,et al.  Comprehension processes during large scale maintenance , 1994, Proceedings of 16th International Conference on Software Engineering.

[5]  Paolo Maresca,et al.  Recursive parser optimization by rewriting context-free grammars , 1997 .

[6]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[7]  Anas N. Al-Rabadi,et al.  A comparison of modified reconstructability analysis and Ashenhurst‐Curtis decomposition of Boolean functions , 2004 .

[8]  Axel T. Schreiner,et al.  Introduction to Compiler Construction with UNIX , 1985 .

[9]  James D. Myers,et al.  Collaboratories: Doing Science on the Internet , 1996, Computer.

[10]  P. Maresca,et al.  The use of metagrammars to help construct reverse engineering tools for existing software comprehension , 1995 .

[11]  M.R.A. Eltantawi,et al.  Logic programming and database schema in reverse engineering: Analysis and documentation for existing code in a multilanguage environment , 1996 .

[12]  Thomas Drake,et al.  Measuring Software Quality: A Case Study , 1996, Computer.

[13]  Peter H. Aiken,et al.  DoD legacy systems: reverse engineering data requirements , 1994, CACM.

[14]  Victor R. Basili,et al.  Identifying and qualifying reusable software components , 1991, Computer.

[15]  Jacques Cohen,et al.  Parsing and compiling using Prolog , 1987, TOPL.

[16]  Maurice H. Halstead,et al.  Elements of software science , 1977 .

[17]  Aniello Cimitile,et al.  A Logic-Based Approach to Reverse Engineering Tools Production , 1992, IEEE Trans. Software Eng..