Abstract
Lockheed Martin InVision provides software renovation and sustainment services, including analyzing systems for “interesting features,” transforming systems to new environments, and recasting systems to new architectures and languages. We seek an optimal blend of effort by automating the straightforward parts of a reengineering task under human control. We achieve this automation through a judicious combination of artificial intelligence and compiler-compiler techniques. This paper describes the InVision tool set and reengineering process and presents some examples of the applications of this technology.
Similar content being viewed by others
References
Andrews, K., Del Vigna, P., and Molloy, M. 1996. Macro and file structure preservation in source-to-source translation. Software—Practice and Experience, 26(3):281–292.
Bennett, K., Bull, T., and Yang, H. 1992. A transformation system for maintenance—Turning theory into practice. Proc. 1992 IEEE Conference on Software Maintenance, pp. 146–155.
Biggerstaff, T., Mitbander, B.G., and Webster, D.E. 1994. Program understanding and the concept assignment problem. Communications of the ACM, 37(5):72–83.
Chen, Y.F., Nishimoto, M.Y., and Ramamoorthy, C.V. 1990. The C information abstraction system. IEEE Transactions on Software Engineering, 16(3):324–334.
Choi, S.C. and Scacchi, W. 1990. Extracting and restructuring the design of large systems. IEEE Software 7(1):66–71.
Chu, W.C. and Patel, S. 1992. Software restructuring by enforcing localization and information hiding. Proc. 1992 IEEE Conf. on Software Maintenance, pp. 165–173.
Cohn, R.A., Kossiakoff, A., and Noble, J.C. 1991. CMS-2 to Ada Translation Tools, Technical Report FS-91-148, Fleet Systems Department, The John Hopkins University, Applied Physics Laboratory.
Cross, J.H. and Hendrix, T.D. 1995. Using generalized markup and SGML for reverse engineering graphical representations of software. Proc. Second Working Conference on Reverse Engineering, pp. 3–6.
Devanbu, P.T. 1992. GENOA—A customizable, language-and front-end independent code analyzer. Proc. Fourteenth International Conference on Software Engineering, pp. 307–319.
Edwards, H.M. and Munro, M. 1993. RECAST: Reverse engineering from COBOL to SSADM specifications. Proc. Fifteenth International Conference on Software Engineering, pp. 499–508.
Edwards, H.M. and Munro, M. 1995. Deriving a logical data model for a system using the RECAST method, Proc. Second Working Conference on Reverse Engineering, pp. 126–135.
Filman, R.E. 1995. Applying AI to software renovation. Working Notes Third Workshop on AI and Software Engineering, IJCAI-95:28–37.
Filman, R.E., Chavez, L.A., and Patel, S. 1994. The truth is in the code, but it takes a human to understand it: The Lockheed PRISM software reengineering effort. Proc. Sixth Annual Software Technology Conference, CD-ROM recs., pp. 1499–1783.
Gall, H. and Klösch, R. 1995. Finding objects in procedural programs: An alternative approach. Proc. Second Working Conference on Reverse Engineering, pp. 208–216.
Grass, J.E. 1992. Object-oriented design archaeology with CIA++. Computing Systems: The Journal of the USENIX Association, 5(1):5–67.
Gray, R., Bickmore, T., and Williams, S. 1995. Reengineering COBOL systems to Ada. Proc. Seventh Annual Software Technology Conference.
Hainaut, J.L., Chandelon, M., Tonneau, C., and Joris, M. 1993. Contribution to a theory of database reverse engineering. Proc. First Working Conference on Reverse Engineering, pp. 161–170.
Hainaut, J.-L., Englebert, V., Henrard, J., Hick, J.-M., and Roland, D. 1995. Requirements for information system reverse engineering support. Proc. Second Working Conference on Reverse Engineering, pp. 136–145.
Hutchens, D.H. and Basili, V.R. 1985. System structure analysis: Clustering with data bindings. IEEE Transactions on Software Engineering, 11(8):749–757.
Jarzabek, S. and Keam, T.P. 1995. Design of a generic reverse engineering assistant tool. Proc. Second Working Conference on Reverse Engineering, pp. 61–70.
Kozaczynski, V., Ning, J.Q., and Engberts, A. 1992. Program concept recognition and transformation. Transactions on Software Engineering, 18(12):1065–1075.
Kozaczynski, V. and Ning, J.Q. 1994. Automated program understanding by concept recognition. Automated Software Engineering, 1(1):61–78.
Letovsky, S. 1988. Plan Analysis of Programs. Ph.D. thesis, Yale University.
Lock, E. 1994. Reengineering concurrency related operating systems calls. Fourth Reengineering Forum, pp. 60-1–60-6.
Maarrek, Y. S. 1988. On the use of cluster analysis for assisting maintenance of large software systems. Proc. 3rd IEEE Israel Conference on Computer Systems and Software Engineering, pp. 178–186.
Markosian, L., Brand, R., and Kotik, G. 1994a. Proc. Fourth Systems Reengineering Technology Workshop, pp. 248–255.
Markosian, L., Newcomb, P., Brand, R., Burson, S., and Kitzmiller, T. 1994b. Using and enabling technology to reengineer legacy systems. Communications of the ACM, 37(5):58–71.
Morris, P. and Filman, R., 1996. “Mandrake: A tool for reverse-engineering IBM assembly code,” Proc. 3rd Working Conference on Reverse Engineering, pp. 57–66.
Newcomb, P. 1995. Legacy system cataloging facility. Proc. Second Working Conference on Reverse Engineering, pp. 52–60.
Newcomb, P. and Kotik, G. 1995. Reengineering procedural into object-oriented systems. Proc. Second Working Conference on Reverse Engineering, pp. 237–249.
Ning, J.Q., Engberts, A., and Kozaczynski, W. 1993. Recovering reusable components form legacy systems by program segmentation. Proc. First Working Conference on Reverse Engineering, pp. 64–72.
Ning, J.Q., Engberts, A., and Kozaczynski, W. 1994. Legacy code understanding. Communications of the ACM, 37(5):50–70.
Paul, S. and Prakash, A. 1994. Querying source code using an algebraic query language. Proc. 1994 IEEE Conference on Software Maintenance, pp. 127–136.
Polak, W., Bickmore, T., and Nelson, L. 1995. Reengineering IMS databases to relational systems. Proc. Seventh Annual Software Technology Conference, CD-ROM.
Quilici, A. 1994. A memory-based approach to recognizing programming plans. Communications of the ACM, 37(5):84–93.
Quilici, A. and Chin, D.N. 1995. DECODE: A cooperative environment for reverse-engineering legacy software. Proc. Second Working Conference on Reverse Engineering, pp. 156–165.
Reasoning Systems 1990. REFINE User's Guide, Version 3.0, Palo Alto: Reasoning Systems Inc.
Rich, C. and Waters, R.C. 1990. The Programmer's Apprentice, Reading, MA: Addison Wesley.
Roberts, S.N., Holtzblatt, L.J., and Reubenstein, H.B. 1994. Reverse engineering assembly language programs. Proc. 4th Reengineering Forum, pp. 61-1–61-10.
Sampson, C.H. 1994. Translating CMS-2 to Ada. Proc. Fourth Systems Reengineering Technology Workshop, pp. 143–156.
Samuel, A.L., Sam, E., Haney, J., Welch, L., Lynch, J., Moffit, T., and Wright, W. 1995. Application of a reengineering methodology to two AEGIS weapon system modules: A case study in progress. Proc. Fifth Systems Reengineering Technology Workshop, pp. 69–79.
Steele, G.L. 1990. Common Lisp: The Language, 2nd edition. Bedford, MA: Digital Press.
Steffen, J.L. 1985. Interactive examination of a program with C scope. Proc. USENIX Association.
Teitelman, W. and Masinter, L. 1981. The interlisp programming environment. Computer, 14(4):25–34.
Wells, C.H., Brand, R., and Markosian, L. 1995. Customized tools for software quality assurance and reengineering. Proc. Second Working Conference on Reverse Engineering, pp. 71–77.
Wilde, N., Huitt, R., and Huitt, S. 1989. Dependency analysis tools: Reusable components for software maintenance. Proc. 1989 IEEE Conference on Software Maintenance, pp. 126–131.
Wills, L. 1990. Automated program recognition: A feasibility demonstration. Artificial Intelligence, 45(1–2): 113–168.
Yang, H. and Bennett, K. 1995. Acquisition of ERA models from data intensive code. Proc. 1995 International Conference on Software Maintenance, pp. 116–123.
Yeh, A.S., Harris, D.R., and Reubenstein, H.B. 1995. Recovering abstract data types and object instances from a conventional procedural language. Proc. Second Working Conference on Reverse Engineering, pp. 227–236.
Yu, B. 1991. Large software system maintenance. Proc. 6th Annual Knowledge-Based Software Engineering Conference, pp. 171–177.
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Filman, R.E. Applying AI to Software Renovation. Automated Software Engineering 4, 341–360 (1997). https://doi.org/10.1023/A:1008631226912
Issue Date:
DOI: https://doi.org/10.1023/A:1008631226912