Factors in Reuse and Reengineering of Legacy Software David Eichmann Repository Based Software Engineering Program Research Institute for Computing and Information Systems University of Houston – Clear Lake Houston, TX 77058 email: eichmann@ricis.cl.uh.edu Abstract: The reengineering and reuse of large legacy software systems can be an expensive, error-prone endeavor. This paper relates experience in a collab- orative research project supporting a NASA contractor team attempting just such a project. Risks both potential and realized are discussed, as well as how such a collaboration can be used to drive an academic research agenda. Orga- nizational and social factors proved to be major aspects of the eventual project outcome. 1. Introduction Organizations are increasingly recognizing their software portfolios as assets to be uti- lized (Wegner 1984), rather than as obsolescent artifacts that should be discarded at the rst opportunity. However, this shift in perception is not without a price. Recovering the corpo- rate memory, domain knowledge, business rules, etc. from this software legacy is not straightforward, and existing tools are only partially up to the task. Furthermore, organiza- tional and social issues can play as much a part of the success or failure of a reengineering project as do the technical issues. Interest in software representation as a major factor in the software development cycle has steadily been gaining in importance (DARPA 1997). This leads to an evolving perspec- tive of a spectrum of representation expressiveness in software development environments and tools, as shown in Figure1. This paper surveys some of the key issues in reengineering legacy software systems, pre- sents a hybrid academic-government-industry program designed to mitigate risk entailed in the adoption of reuse and reengineering technology, and then examines an example project involving a portion of the ight design software for the NASA space shuttle program.