Skip to main content
Log in

Applying AI to Software Renovation

  • Published:
Automated Software Engineering Aims and scope Submit manuscript

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

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.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • Choi, S.C. and Scacchi, W. 1990. Extracting and restructuring the design of large systems. IEEE Software 7(1):66–71.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • Kozaczynski, V. and Ning, J.Q. 1994. Automated program understanding by concept recognition. Automated Software Engineering, 1(1):61–78.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

    Google Scholar 

  • 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.

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints 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

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1023/A:1008631226912

Navigation