This Article 
 Bibliographic References 
 Add to: 
A Logic-Based Approach to Reverse Engineering Tools Production
December 1992 (vol. 18 no. 12)
pp. 1053-1064

Difficulties arising in the use of documents produced by reverse engineering tools are analyzed. With reference to intermodular data flow analysis for Pascal software systems, an interactive and evolutionary tool is proposed. The tool is based on the production of intermodular data flow information by static analysis of code, its representation in a Prolog program dictionary, and a Prolog abstractor that allows the specific queries to be answered.

[1] H. B. Holbrook and S. M. Thebaut, "A survey of software maintenance tools that enhance program understanding,"SERC-TR-9-F, Software Engineering Research Center, Univ. Florida/Purdue Univ., 1987.
[2] H. B. Holbrook and S. M. Thebaut, "Special issue on case tools for reverse engineering,"Case outlook, vol. 2. pp. 1-15, 1988.
[3] B. Wachtel, "Case considered tricky,"Soft. Maint. News, vol. 7, 1989.
[4] G. Canfora and F. Vargiu, "Reverse-engineering and visual environments: The VAPS project," inProc. Workshop on Reverse Eng., CUEN, pp. 141-175, 1991.
[5] J. Ferrante, K. Ottenstein, and J. Warren, "The program dependence graph and its use in optimization,"ACM Trans. Program. Lang. Syst., vol. 9, no. 3, pp. 319-349, July 1987.
[6] S. Horwitz and T. Reps, "The use of program dependence graphs in software engineering," inProc. 14th Int. Conf. Software Eng., pp. 392-411, 1992.
[7] A. Maggiolo-Schettini, M. Napoli, and G. Tortora, "Web stuctures: A tool for representing and manipulating programs,"IEEE Trans. Software Eng., vol. SE-14, pp. 1597-1609, 1988.
[8] Brooks, Jr., Frederick P. 1987. "No Silver Bullet: Essence and Accidents of Software Engineering."IEEE Computer, April, pp. 10-19.
[9] P. Devanbu, R. Brachman, P. Selfridge, and B. Ballard, "LaSSIE: A knowledge-based software information system,"Commun. ACM, vol. 34, pp. 35-49, 1991.
[10] G. Forte, "Tools fair: Out of the lab, onto the shelf,"IEEE Software, vol. 9, pp. 70-79, 1992.
[11] G. Canfora and A. Cimitile, "Reverse engineering and intermodular data flow: A theoretical approach,"J. Soft. Maintenace: Res. and Pract., vol. 4, pp. 37-59, 1992.
[12] G. Canfora and A. Cimitile, "LIS : A software engineering laboratory for software maintenance," inProc. Software Eng. Symp. 1991, 1991.
[13] P. T. Devanbu, "GENOA-A customizable, language-and front-end independent code analyzer," inProc. 14th Int. Conf. on Software Eng., pp. 307-319, 1992.
[14] H. Huang, K. Sugihara, and I. Miyamoto, "A rule based tool for reverse engineering from source code to graphical model," inProc. 4th Int. Conf. on Software Eng. and Knowledge Eng., pp. 178-185, 1992.
[15] F. J. LuKey, "Understanding and debbugging programs,"Int. J. Man-Machine Studies, vol. 12, pp. 189-202, 1980.
[16] M. T. Harandi and J. Q. Ning, "Knowledge based program analysis,"IEEE Software, vol. 7, pp. 74-80, 1990.
[17] V. R. Basili and J. D. Musa, "The future of software: A management perspective,"IEEE Computer, vol. 24, pp. 74-80, 1991.
[18] P. Ciancarini and G. Levi, " What is logic programming good for software engineering?" Keynote Speech, 4th Int. Conf. on Software Eng. and Knowledge Eng., 1992.
[19] J. R. Callahan and J. M. Purtilo, "A packaging system for heterogeneous execution environments,"IEEE Trans. Software Eng., vol. 17, pp. 626-635, 1991.
[20] V. DeLeo, M. Napoli, G. Nota, and G. Tortora, "Testing programs by queries," inProc. 3rd Int. Conf. on Software Eng. and Knowledge Eng., pp. 241-248, 1991.
[21] B. Peuschel and W. Schafer, "Concept and implementation of a rule based process engine," inProc. 14th Int. Conf. on Software Eng., pp. 262-277, 1992.
[22] V. Ambriola, P. Ciancarini, and C. Montangero, "Software process enactment in OIKOS," inACM SIGSOFT Symp. on Practical Software Development Environment, vol. 15, pp. 183-192, 1990.
[23] P. Benedusi, A. Cimitile, and U. De Carlini, "Reverse engineering process, design recovery and structure charts,"J. Syst. Software, vol. 16, 1992.
[24] E. Yourdon and L. L. Constantine,Structured Design, Englewood Cliffs, NJ: Prentice-Hall, 1979.
[25] V. Weinberg,Structured Analysis, Englewood Cliffs, NJ: Prentice-Hall, 1980.
[26] P. Benedusi, A. Cimitile, and U. De Carlini, "A reverse engineering methodology to reconstruct hierarchical data flow diagrams for software maintenance," inProc. Conf. on Software Maintenance 1989, pp. 180-189, 1989.
[27] A. Cimitile, G. Di Lucca, and P. Maresca, "Maintenance and intermodular dependencies in Pascal environment," inProc. Conf. on Software Maintenance, pp. 72-83, 1990.
[28] P. Antonini, P. Benedusi, G. Cantone, and A. Cimitile, "Maintenance and reverse engineering: Low level design documents production and improvment," inProc. Conf. on Software Maintenance, pp. 91-100, 1987.
[29] M. Hecht,Flow Analysis of Computer Programs. New York: Elsevier North-Holland, 1977.
[30] A. V. Aho and J. D. Ullman,The Theory of Parsing, Translation and Computing, Vol. II: Computing. Englewood Cliffs, NJ: Prentice-Hall, 1973.
[31] J. M. Barth, "A practical interprocedural dataflow analysis algorithm,"Comm. Assoc. Computing Machinery, vol. 21, no. 9, pp. 724-726, Sept. 1978.
[32] K. D. Cooper and K. Kennedy, "Efficient computation of flow insensitive interprocedural summary information," inProc. ACM SIGPLAN Symp. Compiler Construction, June 1984, pp. 247-258.
[33] J. P. Banning, "An efficient way to find the side effects of procedure calls and the aliases of variables," inProc. 6th POPL Conf., ACM, pp. 724-736, 1979.
[34] J. Richardson and M. Ganapathy, "Interprocedural optimization: Experimental results,"Software pract. Exper., vol. 9, pp. 149-169, 1989.
[35] E. J. Chikofsky and J. H. Cross, II, "Reverse engineering and design recovery: A taxonomy,"IEEE Software, vol. 7, pp. 13-17, 1990.
[36] P. A. Hausler, M. G. Pleszkoch, R. C. Linger, and A. R. Hevner, "Using function abstraction to understand program behavior,"IEEE Software, vol. 7, pp. 55-63, 1990.
[37] A. Cimitile and U. De Carlini, "Reverse engineering: Algorithms for program graph production,"Software-Pract. and Exper., vol. 21, pp. 519-537, 1991.
[38] M. A. Linton, "ImpIementing relational views of programs," inSIGSOFT/SIGPLAN Software Engineering Symp. Practical Software Development Environments, Pittsburgh, PA, Apr. 1984, pp. 132-140, see alsoSIGSOFT Software Eng. Notes, vol. 9, no. 3, May 1984; see alsoSIGPLAN Notices, vol. 19, no. 5, May 1984.
[39] Y.F. Chen, M.Y. Nishimoto, and C.V. Ramamoorthy, "The C information abstractor system,"IEEE Trans. Software Eng., vol. 16, pp. 325-334, 1990.
[40] Van Gool, L. Wagemans, J. Vandeneende, and A. Osterlinck, "Similarity extraction and modeling," inProc. ICCV 3, 1990.
[41] M. Consens, A. Mendelzon, and A. G. Ryman, "Visualizing and querying software structures, " inProc. 14th Int. Conf. on Software Eng., pp. 138-157, 1992.
[42] A. Cimitile, "Toward reuse reengineering of old software," inProc. 4th Int. Conf. on Software Eng. and Knowledge Eng., pp. 140-149, 1992.
[43] S. Ceri, G. Gottlob, and G. Wiederhold, "Efficient database access from Prolog,"IEEE Trans. Software Eng., vol. SE-15, pp. 153-164, 1989.
[44] F. Cacace, S. Ceri, L. Tanca, and S. Crespi-Reghizzi, "Designing and prototyping data-intensive applications in the Logres and Algres programming environment,"IEEE Trans. Software Eng., vol. 18, pp. 534-546, 1992.

Index Terms:
interactive tool; query answering; reverse engineering tools; intermodular data flow analysis; Pascal software systems; evolutionary tool; static analysis; Prolog program dictionary; Prolog abstractor; logic programming; software maintenance; software tools
G. Canfora, A. Cimitile, U. de Carlini, "A Logic-Based Approach to Reverse Engineering Tools Production," IEEE Transactions on Software Engineering, vol. 18, no. 12, pp. 1053-1064, Dec. 1992, doi:10.1109/32.184760
Usage of this product signifies your acceptance of the Terms of Use.