Skip to main content
Engineering LibreTexts


  • Page ID
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)


    Sherman R. Alpert, Kyle Brown, and Bobby Woolf. The Design Patterns Smalltalk Companion. Addison Wesley, 1998.


    Robert S. Arnold. Software Reengineering. IEEE Computer Society Press, Los Alamitos CA, 1992.


    Brenda S. Baker. A program for identifying duplicated code. Computing Science and Statistics, 24:49–57, 1992.


    Len Bass, Paul Clements, and Rick Kazman. Software Architecture in Practice. Addison Wesley, 1998.

    [BDS+ 00]

    Mike Beedle, Martine Devos, Yonat Sharon, Ken Schwaber, and Jeff Sutherland. Scrum: A pattern language for hyper-productive software development. In Neil Harrison, Brian Foote, and Hans Rohnert, editors, Pattern Languages of Pro- gram Design 4, pages 637–652. Addison Wesley, 2000.


    Timothy Ball and Stephen Eick. Software visualization in the large. IEEE Computer, 29(4):33–43, 1996.


    Kent Beck. Smalltalk Best Practice Patterns. Prentice-Hall, 1997.


    Kent Beck. Extreme Programming Explained: Embrace Change. Addison Wesley, 2000.


    Kent Beck and Martin Fowler. Planning Extreme Programming. Addison Wesley, 2001.


    Kent Beck and Erich Gamma. Test infected: Programmers love writing tests. Java Report, 3(7):51–56, 1998.


    Olin Bray and Michael M. Hess. Reengineering a configuration management system. IEEE Software, 12(1):55–63, January 1995.


    Ted J. Biggerstaff. Design recovery for maintenance and reuse. IEEE Computer, 22:36–49, October 1989.


    Robert V. Binder. Testing Object-Oriented Systems: Models, Pat- terns, and Tools. Object Technology Series. Addison Wesley, 1999.


    M. Blaha, D. LaPlant, and E. Marvak. Requirements for repository software. In Proceedings of WCRE ’98, pages 164– 173. IEEE Computer Society, 1998. ISBN: 0-8186-89-67-6.


    Simon Bennett, Steve McRobb, and Ray Farmer. Object- Oriented System Analysis and Design using UML. McGraw Hill, 1999.


    William J. Brown, Raphael C. Malveau, Hays W. McCormick, III, and Thomas J. Mowbray. AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis. John Wiley Press, 1998.

    [BMR+ 96]

    Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, and Michael Stad. Pattern-Oriented Software Architecture — A System of Patterns. John Wiley Press, 1996.


    Ted J. Biggerstaff, Bharat G. Mittbander, and Dallas Webster. The concept assignment problem in program understanding. In Proceedings of the 15th international conference on Software Engineering (ICSE 1993). IEEE Computer, 1993.


    Ted J. Biggerstaff, Bharat G. Mitbander, and Dallas E. Webster. Program understanding and the concept assignment problem. Communications of the ACM, 37(5):72–82, May 1994.


    Barry W. Boehm. A spiral model of software development and enhancement. IEEE Computer, 21(5):61–72, 1988.


    Grady Booch. Object Oriented Analysis and Design with Applications. The Benjamin Cummings Publishing Co. Inc., 2nd edition, 1994.


    Jack Barnard and Art Price. Managing code inspection information. IEEE Software, 11(2):59–69, March 1994.


    Frederick P. Brooks. The Mythical Man-Month. Addison Wesley, Reading, Mass., 1975.


    Frederick P. Brooks. No silver bullet. IEEE Computer, 20(4):10–19, April 1987.


    Kyle Brown. Design reverse-engineering and automated de- sign pattern detection in Smalltalk. Master’s thesis, North Carolina State University, 1996.


    Michael L. Brodie and Michael Stonebraker. Migrating Legacy Systems. Morgan Kaufmann, 1995.


    David Bellin and Susan Suchman Simone. The CRC Card Book. Addison Wesley, 1997.


    Kyle Brown and Bruce G. Whitenack. Crossing chasms: A pattern language for object-rdbms integration. In John M. Vlissides, James O. Coplien, and Norman L. Kerth, editors, Pattern Languages of Program Design 2, pages 227–238. Addison Wesley, 1996.


    Stephen Cook, Rachel Harrison, and Brian Ritchie. Assessing the evolution of financial management information systems. In ECOOP 2001 Workshop Reader, volume 2323 of LNCS. Springer-Verlag, 2001.


    Elliot J. Chikofsky and James H. Cross II. Reverse engineering and design recovery: A taxonomy. In Robert S. Arnold, editor, Software Reengineering, pages 54–58. IEEE Computer Society Press, 1992.


    Alistair Cockburn. The impact of object-orientation on application development. IBM Systems Journal, 32(3):420–444, March 1993.


    Melvin E. Conway. How do committees invent? Datamation, 14(4):28–31, April 1968.


    James O. Coplien. Advanced C++: Programming Styles and Idioms. Addison Wesley, 1992.


    James O. Coplien. A development process generative pattern language. In James O. Coplien and Douglas Schmidt, editors, Pattern Languages of Program Design, pages 183–237. Addison Wesley, 1995.


    Thomas A. Corbi. Program understanding: Challenge for the 1990’s. IBM Systems Journal, 28(2):294–306, 1989.


    Debra Cameron, Bill Rosenblatt, and Eric Raymond. Learning GNU Emacs. O’Reilly, 1996.


    Paul Dyson and Bruse Anderson. State patterns. In Robert Martin, Dirk Riehle, and Frank Buschmann, editors, Pattern Languages of Program Design 3. Addison Wesley, 1997.


    Alan Mark Davis. 201 Principles of Software Development. McGraw-Hill, 1995.


    Serge Demeyer and Stéphane Ducasse. Metrics, do they really help? In Jacques Malenfant, editor, Proceedings of Languages et Modèles à Objets (LMO’99), pages 69–82. HERMES Science Publications, Paris, 1999.


    Serge Demeyer, Stéphane Ducasse, and Michele Lanza. A hybrid reverse engineering platform combining metrics and program visualization. In Francoise Balmas, Mike Blaha, and Spencer Rugaber, editors, Proceedings of 6th Working Conference on Reverse Engineering (WCRE ’99). IEEE Computer Society, October 1999.


    Serge Demeyer, Stéphane Ducasse, and Oscar Nierstrasz. Finding refactorings via change metrics. In Proceedings of 15th International Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA ’00), pages 166– 178, New York NY, 2000. ACM Press. Also appeared in ACM SIGPLAN Notices 35 (10).


    Serge Demeyer and Harald Gall, editors. Proceedings of the ESEC/FSE Workshop on Object-Oriented Re-engineering. TUV- 1841-97-10. Technical University of Vienna — Information Systems Institute — Distributed Systems Group, September 1997.


    Tom DeMarco and Timothy Lister. Peopleware, Productive Projects and Teams. Dorset House, 2nd edition, 1999.


    David E. DeLano and Linda Rising. Patterns for system testing. In Robert Martin, Dirk Riehle, and Frank Buschmann, editors, Pattern Languages of Program Design 3, pages 503–527. Addison-Welsey, 1998.


    Stéphane Ducasse, Matthias Rieger, and Serge Demeyer. A language independent approach for detecting duplicated code. In Hongji Yang and Lee White, editors, Proceedings of 15th IEEE International Conference on Software Maintenance (ICSM’99), pages 109–118. IEEE Computer Society, September 1999.

    [FBB+ 99]

    Martin Fowler, Kent Beck, John Brant, William Opdyke, and Don Roberts. Refactoring: Improving the Design of Existing Code. Addison Wesley, 1999.


    R.K. Fjeldstad and W. T. Hamlen. Application program maintenance study: report to our respondents. In Proceedings of GUIDE 48. The Guide Corporation, 1979.


    Gert Florijn, Marco Meijers, and Pieter van Winsen. Tool support for object-oriented patterns. In Mehmet Aksit and Satoshi Matsuoka, editors, Proceedings ECOOP ’97, volume 1241 of LNCS, pages 472–495, Jyvaskyla, Finland, June 1997. Springer-Verlag.


    Martin Fowler. Analysis Patterns: Reusable Objects Models. Addison Wesley, 1997.


    Norman Fenton and Shari Lawrence Pfleeger. Software Metrics: A Rigorous and Practical Approach. International Thomson Computer Press, London, UK, second edition, 1996.


    Stuart Frost. Modelling for the rdbms legacy. Object Magazine, pages 43–51, September 1994.


    Brian Foote and Joseph W. Yoder. Big ball of mud. In N. Harrison, B. Foote, and H. Rohnert, editors, Pattern Languages of Program Design, volume 4, pages 654–692. Addison Wesley, 2000.


    Tom Gilb and Dorothy Graham. Software Inspection. Addison Wesley, 1993.


    Harald Gall, Karin Hajek, and Mehdi Jazayeri. Detection of logical coupling based on product release history. In Proceedings International Conference on Software Maintenance (ICSM ’98), pages 190–198, Los Alamitos CA, 1998. IEEE Computer Society Press.


    Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison Wesley, Reading, Mass., 1995.


    Robert L. Glass. Building Quality Software. Prentice-Hall, 1997.


    Adele Goldberg and Kenneth S. Rubin. Succeeding With Objects: Decision Frameworks for Project Management. Addison Wesley, Reading, Mass., 1995.


    Harald Gall and Johannes Weidl. Object-model driven abstraction-to-code mapping. In Proceedings of the 2nd Workshop on Object-Oriented Reengineering (WOOR 1999). Technical University of Vienna — Technical Report TUV-1841-99-13, 1999.


    Neil B. Harrison. Organizational patterns for teams. In John M. Vlissides, James O. Coplien, and Norman L. Kerth, editors, Pattern Languages of Program Design 2, pages 345–352. Addison Wesley, 1996.


    J.-L. Hainaut, V. Englebert, J. Henrard, J.-M. Hick, and D. Roland. Database reverse engineering: From requirements to CARE tools. Automated Software Engineering, 3(1-2), June 1996.


    Jonathan I. Helfman. Dotplot patterns: a literal look at pat- tern languages. TAPOS, 2(1):31–41, 1995.

    [IKM+ 97]

    Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace, and Alan Kay. Back to the future: The story of Squeak, A practical Smalltalk written in itself. In Proceedings OOPSLA ’97, ACM SIGPLAN Notices, pages 318–326. ACM Press, November 1997.


    Ron Jeffries, Ann Anderson, and Chet Hendrickson. Extreme Programming Installed. Addison Wesley, 2001.


    Daniel Jackson and John Chapin. Redesigning air traffic control: An exercise in software design. IEEE Software, 17(3):63– 70, May 2000.


    Ivar Jacobson, Magnus Christerson, Patrik Jonsson, and Gunnar Overgaard. Object-Oriented Software Engineering — A Use Case Driven Approach. Addison Wesley/ACM Press, Reading, Mass., 1992.


    Ivar Jacobson, Martin Griss, and Patrik Jonsson. Software Reuse. Addison Wesley/ACM Press, 1997.


    Mehdi Jazayeri, Harald Gall, and Claudio Riva. Visualizing Software Release Histories: The Use of Color and Third Dimension. In Proceedings of ICSM ’99 (International Conference on Software Maintenance), pages 99–108. IEEE Computer Society Press, 1999.


    Dean F. Jerding and John T. Stasko. The information mural: Increasing information bandwidth in visualizations. Technical Report GIT-GVU-96-25, Georgia Institute of Technology, October 1996.


    Jens. H. Jahnke, Wilhelm. Schäfer, and Albert. Zündorf. Generic fuzzy reasoning nets as a basis ofr reverse engineering relational database applications. In Proceedings of ES- EC/FSE ’97, number 1301 in LNCS, pages 193–210, 1997. in- proceedings.


    Rick Kazman and S. Jeromy Carriere. View extraction and view fusion in architectural understanding. In Proceedings of the 5th International Conference on Software Reuse, Victoria, B.C., 1998.


    Wolfgang Keller and Jens Coldewey. Accessing relational databases: A pattern language. In Robert Martin, Dirk Riehle, and Frank Bushmann, editors, Pattern Languages of Program Design 3, pages 313–343. Addison Wesley, 1998.


    Rick Kazman and S. J. Carriere. Playing detective: Reconstructing software architecture from available evidence. Automated Software Engineering, April 1999.


    Wolfgang Keller. The bridge to the new town — a legacy system migration pattern. In Proceedings of EuroPLoP 2000, 2000.


    Donald E. Knuth. Literate Programming. Stanford, California: Center for the Study of Language and Information, 1992.


    Michele Lanza. Combining Metrics and Graphs for Object Oriented Reverse Engineering. Diploma Thesis, University of Bern, October 1999.


    Manny Lehman and Les Belady. Program Evolution: Processes of Software Change. London Academic Press, London, 1985.


    Doug Lea. Concurrent Programming in Java, Design Principles and Patterns. The Java Series. Addison Wesley, 1996.


    Karl J. Lieberherr, Ian M. Holland, and Arthur Riel. Object- oriented programming: An objective sense of style. In Proceedings OOPSLA ’88, ACM SIGPLAN Notices, volume 23, pages 323–334, November 1988.


    Mark Lorenz and Jeff Kidd. Object-Oriented Software Metrics: A Practical Guide. Prentice-Hall, 1994.


    Tom Love. Object Lessons — Lessons Learned in Object-Oriented Development Projects. SIGS Books, New York, 1993.

    [LPM+ 97]

    Bruno Laguë, Daniel Proulx, Ettore M. Merlo, Jean Mayrand, and John Hudepohl. Assessing the benefits of incorporating function clone detection in a development process. In Proceedings of ICSM (International Conference on Software Maintenance). IEEE, 1997.


    Tom De Marco. Controlling Software Projects. Yourdon Press, 1982.


    Scott Meyers. More Effective C++. Addison Wesley, 1996.


    Scott Meyers. Effective C++. Addison Wesley, second edition, 1998.

    [MJS+ 00]

    Hausi A. Müller, Jens H. Janhke, Dennis B. Smith, Margaret-Anne Storey, Scott R. Tilley, and Kenny Wong. Reverse engineering: A roadmap. In A. Finkelstein, editor, The Future of Software Engineering 2000. ACM Press, 2000.


    Jean Mayrand, Claude Leblanc, and Ettore M. Merlo. Experiment on the automatic detection of function clones in a software system using metrics. In International Conference on Software Maintenance (ICSM), pages 244–253, 1996.


    Gail C. Murphy and David Notkin. Reengineering with re- flexion models: A case study. IEEE Computer, 8:29–36, 1997.


    Paolo Nesi. Managing OO project better. IEEE Software, July 1988.


    Jakob Nielsen. Usability Engineering. Morgan Kaufmann, 1999.


    Alan O’Callaghan. Patterns for architectural praxis. In Proceedings of EuroPLoP 2000, 2000.


    Alan O’Callaghan, Ping Dai, and Ray Farmer. Patterns for change — sample patterns from the adaptor pattern language. In Proceedings of EuroPLoP 1999, 1999.


    William J. Premerlani and Michael R. Blaha. An approach for reverse engineering of relational databases. Communications of the ACM, 37(5):42–49, May 1994.


    J. Pustell and F. Kafatos. A high speed, high capacity homology matrix: Zooming through SV40 and polyoma. Nucleid Acids Research, 10(15):4765–4782, 1982.


    Joseph Pelrine and Alan Knight. Mastering ENVY/Developer. Cambridge University Press, 2001.


    Roger S. Pressman. Software Engineering: A Practitioner’s Approach. McGraw-Hill, 1994.


    D.J. Robson, K. H. Bennet, B. J. Cornelius, and M. Munro. Approaches to program comprehension. Journal of Systems and Software, 14:79–84, February 1991. Republished in [Arno92a].


    Don Roberts, John Brant, and Ralph E. Johnson. A refactoring tool for Smalltalk. Theory and Practice of Object Systems (TAPOS), 3(4):253–263, 1997.


    Tamar Richner and Stéphane Ducasse. Recovering high-level views of object-oriented applications from static and dynamic information. In Hongji Yang and Lee White, editors, Proceedings of 15th IEEE International Conference on Software Maintenance (ICSM’99), pages 13–22, Los Alamitos CA, September 1999. IEEE Computer Society Press.


    Trygve Reenskaug. Working with Objects: The OOram Software Engineering Method. Manning Publications, 1996.


    Dirk Riehle and Thomas Gross. Role model based framework design and integration. In Proceedings OOPSLA ’98, ACM SIGPLAN Notices, pages 117–133, October 1998.


    Arthur Riel. Object-Oriented Design Heuristics. Addison Wesley, Boston MA, 1996.


    Linda Rising. Customer interaction patterns. In Neil Harrison, Brian Foote, and Hans Rohnert, editors, Pattern Languages of Program Design 4, pages 585–609. Addison Wesley, 2000.


    Donald Bradley Roberts. Practical Analysis for Refactoring. PhD thesis, University of Illinois, 1999.


    Trygve Reenskaug and Anna Lise Skaar. An environment for literate Smalltalk programming. In Proceedings OOPSLA ’89, ACM SIGPLAN Notices, volume 24, pages 337–346, October 1989.


    Spencer Rugaber and Jim White. Restoring a legacy: Lessons learned. IEEE Software, 15(4):28–33, July 1998.


    Mary Shaw and David Garlan. Software Architecture: Perspectives on an Emerging Discipline. Prentice-Hall, 1996.


    Alec Sharp. Smalltalk by Example. McGraw-Hill, 1997.


    Patrick Steyaert, Carine Lucas, Kim Mens, and Theo D’Hondt. Reuse Contracts: Managing the Evolution of Reusable Assets. In Proceedings of OOPSLA ’96 (International Conference on Object-Oriented Programming, Systems, Languages, and Applications), pages 268–285. ACM Press, 1996.


    Harry M. Sneed. Risks involved in reengineering projects. In

    Proceedings of the 6th Working Conference on Reverse Engineering (WCRE). IEEE, 1999.


    Ian Sommerville. Software Engineering. Addison Wesley, fifth edition, 1996.


    Perdita Stevens and Rob Pooley. System reengineering patterns. In Proceedings of FSE-6. ACM-SIGSOFT, 1998.


    Reinhard Schauer, Sébastian Robitaille, Francois Martel, and Rudolf Keller. Hot-Spot Recovery in Object-Oriented Soft- ware with Inheritance and Composition Template Methods. In Proceedings of ICSM ’99 (International Conference on Software Maintenance). IEEE Computer Society Press, 1999.


    Douglas C. Schmidt, Michael Stal, Hans Rohnert, and Frank Buschmann. Pattern-Oriented Software Architecture Volume 2 — Networked and Concurrent Objects. John Wiley and Sons, 2000.


    Geri Schneider and Jason P. Winters. Applying Use Cases. Addison Wesley, 1998.


    Paul Taylor. Capable, productive, and satisfied: Some organizational patterns for protecting productive people. In N. Harrison, B. Foote, and H. Rohnert, editors, Pattern Languages of Program Design, volume 4, pages 611–636. Addison Wesley, 2000.


    Rob Thomsett. The year 2000 bug: a forgotten lesson. IEEE Software, 15(4):91–93,95, July 1998.


    Rebecca Wirfs-Brock, Brian Wilkerson, and Lauren Wiener. Designing Object-Oriented Software. Prentice-Hall, 1990.


    Johannes Weidl and Harald Gall. Binding object models to source code: An approach to object-oriented rearchitecting. In Proceedings of the 22nd Computer Software and Application Conference (COMPSAC 1998). IEEE Computer Society Press, 1998.


    Bobby Woolf. Null object. In Robert Martin, Dirk Riehle, and Frank Buschmann, editors, Pattern Languages of Program Design 3, pages 5–18. Addison Wesley, 1998.


    Kenny Wong, Scott R. Tilley, Hausi A. Müller, and Margaret-Anne D. Storey. Structural redocumentation: A case study. IEEE Software, 12(1):46–54, January 1995.


    Roel Wuyts. Declarative reasoning about the structure object-oriented systems. In Proceedings of the TOOLS USA ’98 Con- ference, pages 112–124. IEEE Computer Society Press, 1998.


    Edward Yourdon. Death March. Prentice-Hall, 1997.

    • Was this article helpful?