Object-Oriented Reengineering Patterns — An Overview

  • Oscar Nierstrasz
  • Stéphane Ducasse
  • Serge Demeyer
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3676)


Successful software systems must be prepared to evolve or they will die. Although object-oriented software systems are built to last, over time they degrade as much as any legacy software system. As a consequence, one must invest in reengineering efforts to keep further development costs down. Even though software systems and their business contexts may differ in countless ways, the techniques one uses to understand, analyze and transform these systems tend to be very similar. As a consequence, one may identify various reengineering patterns that capture best practice in reverse- and re-engineering object-oriented legacy systems. We present a brief outline of a large collection of these patterns that have been mined over several years of experience with object-oriented legacy systems, and we indicate how some of these patterns can be supported by appropriate tools.


Legacy System IEEE Computer Society Reverse Engineering Process Pattern Formal Concept Analysis 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Arévalo, G.: High Level Views in Object Oriented Systems using Formal Concept Analysis. PhD thesis, University of Berne (January 2005)Google Scholar
  2. 2.
    Chikofsky, E.J., Cross II, J.H.: Reverse Engineering and Design Recovery: A Taxonomy. In: Arnold, R.S. (ed.) Software Reengineering, pp. 54–58. IEEE Computer Society Press, Los Alamitos (1992)Google Scholar
  3. 3.
    Demeyer, S., Ducasse, S., Nierstrasz, O.: Object-Oriented Reengineering Patterns. Morgan Kaufmann, San Francisco (2002)Google Scholar
  4. 4.
    Ducasse, S., Demeyer, S. (eds.): The FAMOOS Object-Oriented Reengineering Handbook. University of Bern (October 1999)Google Scholar
  5. 5.
    Ducasse, S., Gîrba, T., Lanza, M., Demeyer, S.: Moose: a collaborative and extensible reengineering Environment. In: Tools for Software Maintenance and Reengineering, Franco Angeli. RCOST / Software Technology Series, pp. 55–71 (2005)Google Scholar
  6. 6.
    Ducasse, S., Nierstrasz, O., Rieger, M.: On the effectiveness of clone detection by string matching. International Journal on Software Maintenance: Research and Practice (2005) (to appear)Google Scholar
  7. 7.
    Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison Wesley, Reading (1995)Google Scholar
  8. 8.
    Gîrba, T., Ducasse, S., Lanza, M.: Yesterday’s weather: Guiding early reverse engineering efforts by summarizing the evolution of changes. In: Proceedings of ICSM 2004 (International Conference on Software Maintenance), pp. 40–49. IEEE Computer Society Press, Los Alamitos (2004)Google Scholar
  9. 9.
    Greevy, O., Ducasse, S.: Correlating features and code using a compact two-sided trace analysis approach. In: Proceedings of CSMR 2005 9th European Conference on Software Maintenance and Reengineering. IEEE Computer Society Press, Los Alamitos (2005)Google Scholar
  10. 10.
    Kazman, R., Woods, S.G., Carriére, S.J.: Requirements for integrating software architecture and reengineering models: Corum ii. In: Proceedings of WCRE 1998, pp. 154–163. IEEE Computer Society, Los Alamitos (1998) ISBN: 0-8186-89-67-6Google Scholar
  11. 11.
    Lanza, M., Ducasse, S.: Polymetric views — a lightweight visual approach to reverse engineering. IEEE Transactions on Software Engineering 29(9), 782–795 (2003)CrossRefGoogle Scholar
  12. 12.
    Lanza, M., Ducasse, S.: Codecrawler — an extensible and language independent 2d and 3d software visualization tool. In: Tools for Software Maintenance and Reengineering, Franco Angeli. RCOST / Software Technology Series, pp. 74–94 (2005)Google Scholar
  13. 13.
    Lehman, M.M., Belady, L.: Program Evolution – Processes of Software Change. Academic Press, London (1985)Google Scholar
  14. 14.
    Lientz, B., Swanson, B.: Software Maintenance Management. Addison Wesley, Boston (1980)Google Scholar
  15. 15.
    Nierstrasz, O., Ducasse, S., Girba, T.: The story of Moose: an agile reengineering environment. In: Proceedings of ESEC/FSE 2005. LNCS, Springer, Heidelberg (2005) (Invited paper) (to appear)Google Scholar
  16. 16.
    Rieger, M.: Effective Clone Detection Without Language Barriers. PhD thesis, University of Berne (June 2005)Google Scholar
  17. 17.
    Rising, L.: Customer interaction patterns. In: Harrison, N., Foote, B., Rohnert, H. (eds.) Pattern Languages of Program Design 4, pp. 585–609. Addison-Wesley, Reading (2000)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2005

Authors and Affiliations

  • Oscar Nierstrasz
    • 1
  • Stéphane Ducasse
    • 2
  • Serge Demeyer
    • 3
  1. 1.Software Composition GroupUniversity of BernSwitzerland
  2. 2.Laboratoire d’Informatique, Systèmes, Traitement de l’Information, et de la ConnaissanceUniversité de SavoieFrance
  3. 3.Lab On REengineeringUniversity of AntwerpBelgium

Personalised recommendations