References of Reengineering_in_General

    Measuring Maintenance Productivity and Quality , N. Adams
    @Article{	  adams:measuring,
      author	= { N. Adams },
      title		= { Measuring Maintenance Productivity and Quality },
      journal	= { Software Engineering },
      volume	= { 2(5) },
      year		= { July/August 1991 },
      pages		= { 5-13 },
      abstract	= { see Arnold's book },
      class		= {Reengineering_in_General, Costs }
    }
    
    
    Re-Engineering, Migration and Multi-Use of business Data, Daniel Aebi
    @InProceedings{	  aebi:re-engineering,
      author	= {Daniel Aebi},
      title		= {Re-Engineering, Migration and Multi-Use of business Data},
      booktitle	= {1st  European Conference on Software Maintenance and
    		  Reengineering 97},
      month		= mar,
      year		= {1997},
      publisher	= {IEEE Computer Society Press},
      abstract	= {},
      class		= {Reengineering_in_General, Process_Models}
    }
    
    
    Transition to a Legacy- and Reuse-Based Software Life Cycle, J. D. Ahrens and N. S. Prywes
    @Article{	  ahrens.prywes:transition,
      author	= {J. D. Ahrens and N. S. Prywes},
      title		= {Transition to a Legacy- and Reuse-Based Software Life
    		  Cycle},
      journal	= {IEEE Computer},
      pages		= {27-36},
      year		= {1995},
      month		= oct,
      class		= {Reengineering_in_General, Process_Models}
    }
    
    
    Business Re-Engineering and Information Systems: An Opportunity for Business Partnership, Albee, Kim and Shekleton, John
    @Article{	  albee.shekleton:business,
      author	= {Albee, Kim and Shekleton, John},
      title		= {Business Re-Engineering and Information Systems: An
    		  Opportunity for Business Partnership},
      journal	= {CASE Outlook},
      year		= {1992},
      volume	= {6(4)},
      pages		= {25-34},
      class		= {Reengineering_in_General, Business_Reengineering }
    }
    
    
    Systems Re-engineering: A Critical Perspective , D.C. Andrews
    @Article{	  andrews:systems,
      author	= { D.C. Andrews },
      title		= { Systems Re-engineering: A Critical Perspective },
      journal	= { CASE Trends },
      year		= { July/August 1990 },
      pages		= { 15-16 },
      abstract	= { see Arnold's book },
      class		= {Reengineering_in_General,
    		  The_Pros_and_Cons_and_Risks_of_Reengineering }
    }
    
    
    Re-engineering Legacy Systems to Meet Quality Requirements: An Experience Report, P. Antonini and G. Canfora and Aniello Cimitile
    @InProceedings{	  antonini.canfora.ea:re-engineering,
      author	= {P. Antonini and G. Canfora and Aniello Cimitile},
      title		= {Re-engineering Legacy Systems to Meet Quality
    		  Requirements: An Experience Report},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1994},
      year		= {1994},
      pages		= {146-153},
      publisher	= {IEEE Computer Society Press},
      month		= sep,
      abstract	= {The paper is a summary of a third party re-engineering
    		  project aiming to adjust a legacy system to the new quality
    		  standard established by the customer. The quality standard
    		  is defined in the form of a set of metrices each associated
    		  with a range of acceptable values. A set of 100 programs
    		  has been restructured and modularised to meet the quality
    		  requirements. When possible, automated tools have been used
    		  in order to reduce the costs, standadise the results, and
    		  ease the transfer of techniques and methodologies to the
    		  customer. The re-engineered programs habe replaces the
    		  orginal versions in the customer production environment.
    		  Their quality, and in particular their understandability
    		  and maintainability, is considerably increased as confirmed
    		  by the customer's technical personnel.
    		  
    		  The work described here is a preliminary step towards the
    		  definition of a larger re-engineering project to bring the
    		  customer's software portfolio into line with the new
    		  quality standard.},
      class		= {Reengineering_in_General, Experiences}
    }
    
    
    Reengineering Legacy Systems to Meet Quality Requirements: An Experience Report , P. Antonini and G. Canfora and A. Cimitile
    @InProceedings{	  antonini.canfora.ea:reengineering,
      author	= { P. Antonini and G. Canfora and A. Cimitile },
      title		= { Reengineering Legacy Systems to Meet Quality
    		  Requirements: An Experience Report },
      booktitle	= { Proceedings of the International Conference on Software
    		  Maintenance {\rm (Victoria, B.C., Canada; September 19-23,
    		  1994)} },
      year		= { 1994 },
      editor	= { Hausi A. M\"{u}ller and Mari Georges },
      pages		= { 146-153 },
      class		= {Reengineering_in_General, Experiences }
    }
    
    
    Maintenance and Porting of Software by Design Recovery, Guillermo Arango and Ira Baxter and Peter Freeman
    @InProceedings{	  arango.baxter.ea:maintenance,
      author	= {Guillermo Arango and Ira Baxter and Peter Freeman},
      title		= {Maintenance and Porting of Software by Design Recovery},
      booktitle	= {CSM'85: Proceedings of the 1985 Conference on Software
    		  Maintenance, {\rm (Washington, DC; November 11-13, 1985)}},
      year		= {November 1985},
      pages		= {42-49},
      abstract	= {DRACO paper on porting through transformation from source
    		  code to abstraction back to new code. Captures
    		  domain-specific knowledge.},
      class		= {Reengineering_in_General, Experiences, Alteration,
    		  Re-Code, Program_Transformations,
    		  Software_Reverse_Engineering, Reverse_Design,
    		  Knowledge-Based_Concept_Assignment,
    		  Human_Oriented_Concept_Assignment_by_Informal_Reasoning },
      keywords	= {domain modeling, domain analysis, DRACO}
    }
    
    
    TMM: Software Maintenance by Transformation, Guillermo Arango and Ira Baxter and Peter Freeman and Christopher Pidgeon
    @Article{	  arango.baxter.ea:tmm*1,
      author	= {Guillermo Arango and Ira Baxter and Peter Freeman and
    		  Christopher Pidgeon},
      title		= {{TMM}: Software Maintenance by Transformation},
      journal	= {IEEE Software},
      month		= {May},
      year		= {1986},
      volume	= {3},
      number	= {3},
      pages		= {27-39},
      abstract	= { . Another DRACO-based paper. . Uses least common
    		  abstractions. },
      keywords	= {domain modeling, domain analysis, DRACO},
      class		= {Reengineering_in_General, Experiences, Alteration,
    		  Re-Code, Program_Transformations,
    		  Software_Reverse_Engineering, Reverse_Design,
    		  Knowledge-Based_Concept_Assignment,
    		  Human_Oriented_Concept_Assignment_by_Informal_Reasoning}
    }
    
    
    Domain Analysis and Software Systems Modelling, Guillermo Arango and Rub\'en Prieto-D\'iaz (Eds)
    @Book{		  arango.prieto-diaz:domain,
      editor	= {Guillermo Arango and Rub\'{e}n Prieto-D\'{i}az},
      title		= {Domain Analysis and Software Systems Modelling},
      year		= {1991},
      publisher	= {IEEE Computer Society Press (Order Number 1996)},
      abstract	= {},
      class		= {Reengineering_in_General, Reengineering_Collections},
      keywords	= {domain modeling, domain analysis, DRACO}
    }
    
    
    Software Reuse and Reengineering, Robert S. Arnold and V. B. Frakes
    @Article{	  arnold.frakes:software,
      author	= {Robert S. Arnold and V. B. Frakes},
      title		= {Software Reuse and Reengineering},
      journal	= {Case Trends},
      year		= {1992},
      volume	= {4},
      number	= {2},
      pages		= {44-48},
      class		= {Reengineering_in_General,
    		  The_Pros_and_Cons_and_Risks_of_Reengineering}
    }
    
    
    Common Risks of Reengineering, Robert S. Arnold
    @Article{	  arnold:common,
      author	= {Robert S. Arnold},
      title		= {Common Risks of Reengineering},
      journal	= {Reverse Engineering Newsletter},
      year		= {1992},
      pages		= {Rev-1 -- Rev-2},
      month		= apr,
      class		= {Reengineering_in_General,
    		  The_Pros_and_Cons_and_Risks_of_Reengineering}
    }
    
    
    Common Risks of Reengineering , R.S. Arnold
    @Article{	  arnold:common*1,
      author	= { R.S. Arnold },
      title		= { Common Risks of Reengineering },
      journal	= { Reverse Engineering Newsletter },
      year		= { April 1992 },
      pages		= { Rev.1-Rev.2 },
      abstract	= { },
      class		= {Reengineering_in_General,
    		  The_Pros_and_Cons_and_Risks_of_Reengineering }
    }
    
    
    Risks of Reengineering , R.S. Arnold
    @InProceedings{	  arnold:risks,
      author	= { R.S. Arnold },
      title		= { Risks of Reengineering },
      booktitle	= { Proceedings of the Reverse Engineering Forum, {\rm
    		  (Washington University, St. Louis, Missouri)}},
      year		= { April 1991 },
      abstract	= { see Arnold's book },
      class		= {Reengineering_in_General,
    		  The_Pros_and_Cons_and_Risks_of_Reengineering }
    }
    
    
    Software Reengineering, R.S. Arnold
    @Book{		  arnold:software,
      author	= {R.S. Arnold},
      title		= {Software Reengineering},
      publisher	= {IEEE Computer Society Press},
      year		= {1993},
      note		= {In this book an introduction to software reengineering is
    		  provided. Context and definitions of key notions are
    		  included. Then various subjects are treated in the form of
    		  a collection of papers that are reprinted from other
    		  sources. Subjects that we can find are: business process
    		  reengineering, the connection with economics, experiences
    		  with real-life reengineering projects, evaluation of tools
    		  used in such projects, the technological aspects of
    		  reengineering, data reengineering and its migration
    		  problems, source code analysis, restructuring and
    		  translation, the annotation and documentation of existing
    		  programs, reusability aspects, design recovery, the object
    		  oriented approach to recovery, program understanding, and
    		  knowledge based program analysis. This book contains an
    		  annotated bibliography},
      class		= {Reengineering_in_General, Reengineering_Collections}
    }
    
    
    Software Restructuring: Foundation for Reengineering , R.S. Arnold
    @InProceedings{	  arnold:software*1,
      author	= { R.S. Arnold },
      title		= { Software Restructuring: Foundation for Reengineering },
      booktitle	= { Proceedings of the Reverse Engineering Forum, {\rm
    		  (Washington University, St. Louis, Missouri)}},
      year		= { 1990 },
      month		= {April},
      abstract	= { see Arnold's book },
      class		= {Reengineering_in_General, Fundamentals }
    }
    
    
    Software Reengineering, R.S. Arnold
    @Book{		  arnold:software*2,
      author	= {R.S. Arnold},
      title		= {Software Reengineering},
      year		= {1993},
      publisher	= {IEEE Computer Society Press},
      class		= {Reengineering_in_General, Reengineering_Collections }
    }
    
    
    Software Restructuring , R.S. Arnold
    @Article{	  arnold:software*3,
      author	= { R.S. Arnold },
      title		= { Software Restructuring },
      journal	= { Proceedings IEEE },
      year		= { 1989 },
      month		= {April},
      pages		= { 607-617 },
      abstract	= { },
      class		= {Reengineering_in_General, Reengineering_Collections }
    }
    
    
    Software Reengineering: A Quick History , Robert S. Arnold
    @Article{	  arnold:software*4,
      author	= { Robert S. Arnold },
      title		= { Software Reengineering: A Quick History },
      journal	= { Communications of the ACM },
      volume	= { 37(5) },
      pages		= { 13-14 },
      year		= { May 1994 },
      class		= {Reengineering_in_General, Experiences }
    }
    
    
    Tutorial on software restructuring, Robert S. Arnold (Ed)
    @Book{		  arnold:tutorial,
      editor	= {Robert S. Arnold},
      title		= {Tutorial on software restructuring},
      year		= {1986},
      publisher	= {IEEE Computer Society Press (Order Number 680)},
      abstract	= {},
      class		= {Reengineering_in_General, Reengineering_Collections }
    }
    
    
    Tutorial on Software Reengineering, R.S. Arnold
    @InProceedings{	  arnold:tutorial*1,
      author	= {R.S. Arnold},
      title		= {Tutorial on Software Reengineering},
      booktitle	= {CSM'90: Proceedings of the 1990 Conference on Software
    		  Maintenance, {\rm (San Diego, California; November 26-29,
    		  1990)}},
      year		= {1990},
      month		= {November},
      publisher	= {IEEE Computer Society Press (Order Number 2091)},
      abstract	= {},
      class		= {Reengineering_in_General, Reengineering_Collections }
    }
    
    
    Reverse Engineering of Legacy Code Exposed, B. W. Weide, W. D. Heym and J. E. Hollingsworth
    @InProceedings{	  b-w-weide.hollingsworth:reverse,
      author	= {B. W. Weide, W. D. Heym and J. E. Hollingsworth},
      title		= {Reverse Engineering of Legacy Code Exposed},
      booktitle	= {Proceedings of the 17th  International Conference on
    		  Software Engineering },
      publisher	= {IEEE Computer Society Press},
      pages		= {327-331},
      year		= {1995},
      month		= apr,
      class		= {Reengineering_in_General}
    }
    
    
    Sanierung objektorientierter Systeme, Holger B\ar and Markus Bauer and Oliver Ciupke and Thomas Gen\ssler and Radu Marinescu and Benedikt Schulz and Joachim Weisbrod
    @InProceedings{	  bar.bauer.ea:sanierung,
      author	= {Holger B{\"a}r and Markus Bauer and Oliver Ciupke and
    		  Thomas Gen{\ss}ler and Radu Marinescu and Benedikt Schulz
    		  and Joachim Weisbrod},
      title		= {{S}anierung objektorientierter {S}ysteme},
      booktitle	= {Proceedings of the 1st German Workshop on
    		  Software-Reengineering},
      editor	= {J{\"u}rgen Ebert and Bernt Kullbach and Franz Lehner},
      series	= {Fachberichte Informatik},
      year		= {1999},
      organization	= {Universit{\"a}t Koblenz-Landau, Institut f{\"u}r
    		  Informatik},
      month		= jul,
      address	= {Bad Honnef, Germany},
      pages		= {53--58},
      class		= {Reengineering_in_General, Experiences}
    }
    
    
    The Famoos Handbook of Reengineering, Holger B\ar and Oliver Ciupke and Serge Demeyer and St\'ephane Ducasse and Radu Marinescu and Robb Nebbe and Tamar Richner and Matthias Rieger and Benedikt Schulz and Sander Tichelaar and Joachim Weisbrod
    @Booklet{	  bar.ciupke.ea:famoos,
      title		= {The Famoos Handbook of Reengineering},
      author	= {Holger B{\"a}r and Oliver Ciupke and Serge Demeyer and
    		  St{\'e}phane Ducasse and Radu Marinescu and Robb Nebbe and
    		  Tamar Richner and Matthias Rieger and Benedikt Schulz and
    		  Sander Tichelaar and Joachim Weisbrod},
      year		= {1998},
      month		= sep,
      class		= {Reengineering_in_General, Introductions_to_Reengineering}
    }
    
    
    Charles Schwab: Bullish on Reengineering , D. Bartholemew
    @Article{	  bartholemew:charles,
      author	= { D. Bartholemew },
      title		= { Charles Schwab: Bullish on Reengineering },
      journal	= { Information Week },
      year		= { July 22, 1991 },
      pages		= { 12-13 },
      abstract	= { see Arnold's book },
      class		= {Reengineering_in_General,
    		  The_Pros_and_Cons_and_Risks_of_Reengineering }
    }
    
    
    Viewing maintenance as reuse oriented software development, V. Basili
    @Article{	  basili:viewing,
      title		= {Viewing maintenance as reuse oriented software
    		  development},
      author	= {V. Basili},
      journal	= {{IEEE} Software},
      volume	= {7},
      number	= {1},
      pages		= {19--25},
      year		= {1990},
      note		= { In this paper the maintenance process is incorporated in
    		  the life-cycle perspective geared towards the reusability
    		  of the various components},
      class		= {Reengineering_in_General, Process_Models,
    		  Software_Reverse_Engineering, Re-Use}
    }
    
    
    Einordnung und Terminologie des Software Reengineering, Ulrike Baumöhl and Jens Borchers and Stefan Eicker and Knut Hildebrand and Reinhard Jung and Franz Lehner
    @Article{	  baumöhl.borchers.ea:einordnung,
      author	= {Ulrike Baumöhl and Jens Borchers and Stefan Eicker and
    		  Knut Hildebrand and Reinhard Jung and Franz Lehner},
      title		= {Einordnung und Terminologie des Software Reengineering},
      journal	= {Informatik-Spektrum},
      year		= {1996},
      volume	= {19},
      pages		= {191-195},
      month		= {},
      class		= {Reengineering_in_General, Introductions_to_Reengineering}
    }
    
    
    A model of large program development, L. A. Belady and M. M. Lehman
    @Article{	  belady.lehman:model,
      author	= {L. A. Belady and M. M. Lehman},
      title		= {A model of large program development},
      journal	= {IBM Systems Journal},
      year		= {1976},
      volume	= {15},
      pages		= {225-252},
      class		= {Reengineering_in_General, Process_Models }
    }
    
    
    An Empirical Study of Cobol Programs via a Style Analyzer: The Benefits of Good Programming Style , A.C. Benander and B.A. Benander
    @Article{	  benander.benander:empirical,
      author	= { A.C. Benander and B.A. Benander },
      title		= { An Empirical Study of Cobol Programs via a Style
    		  Analyzer: The Benefits of Good Programming Style },
      journal	= { Journal of Systems and Software },
      volume	= { 10 },
      year		= { 1989 },
      pages		= { 271-279 },
      abstract	= { see Arnold's book },
      class		= {Reengineering_in_General, Experiences }
    }
    
    
    Understanding Software Maintenance Work, S. Bendifallah and W. Scacci
    @Article{	  bendifallah.scacci:understanding,
      author	= {S. Bendifallah and W. Scacci},
      key		= {Bendifallah & Scacci},
      journal	= {IEEE Transactions on Software Engineering},
      title		= {Understanding Software Maintenance Work},
      year		= {1987},
      month		= mar,
      volume	= {SE-13},
      number	= {3},
      pages		= {311--323},
      kommentars	= {Allgemeine Betrachtung ueber Ablaeufe bei der Wartung von
    		  Programmen},
      location	= {E & S Library},
      class		= {Reengineering_in_General, Introductions_to_Reengineering}
    }
    
    
    Reverse Engineering Processes, Design Document Production, and Structure Charts, P. Benedusi and A. Cimitile and U. De~Carlini
    @Article{	  benedusi.cimitile.ea:reverse*1,
      author	= {P. Benedusi and A. Cimitile and U. {De~Carlini}},
      title		= {Reverse Engineering Processes, Design Document Production,
    		  and Structure Charts},
      journal	= {The Journal of Systems and Software},
      year		= {1992},
      month		= {November},
      volume	= {19(3)},
      pages		= {225-24},
      abstract	= {},
      class		= {Reengineering_in_General, Process_Models }
    }
    
    
    A Reverse Engineering Methodology to Reconstruct Hierarchical Data Flow Diagrams for Software Maintenance, P. Benedusi and A. Cimitile and U. De~Carlini
    @InProceedings{	  benedusi.cimitile.ea:reverse*2,
      author	= {P. Benedusi and A. Cimitile and U. {De~Carlini}},
      title		= {A Reverse Engineering Methodology to Reconstruct
    		  Hierarchical Data Flow Diagrams for Software Maintenance},
      booktitle	= {Proceedings of the IEEE Conference on Software
    		  Maintenance},
      year		= {October 1989},
      pages		= {180-189},
      abstract	= {},
      class		= {Reengineering_in_General, Process_Models}
    }
    
    
    Automated support of software maintenance , K.H. Bennett
    @Article{	  bennett:automated,
      author	= { K.H. Bennett },
      title		= { Automated support of software maintenance },
      journal	= { Information and Software Technology },
      volume	= { 33 },
      number	= { 1 },
      month		= { February },
      year		= { 1991 },
      pages		= { 74-85 },
      abstract	= { . Detailed defn of SM; maintaining and producing
    		  maintainable systems; describe ReForm, MACS, and REDO, (the
    		  latter is a set of integrable tools to support RE) },
      class		= {Reengineering_in_General }
    }
    
    
    Legacy Systems: Coping with Success, Keith Bennett
    @Article{	  bennett:legacy,
      author	= {Keith Bennett},
      title		= {Legacy Systems: Coping with Success},
      journal	= {IEEE Software},
      year		= {1995},
      volume	= {12},
      number	= {1},
      pages		= {19-23},
      month		= {January},
      class		= {Reengineering_in_General, Introductions_to_Reengineering}
    }
    
    
    A guided tour of program design methodologies, G. D. Bergland
    @Article{	  bergland:guided,
      author	= {G. D. Bergland},
      title		= {A guided tour of program design methodologies},
      journal	= {Computer},
      year		= {October 1981},
      pages		= {18-37},
      volume	= {14(10)},
      abstract	= {},
      class		= {Reengineering_in_General, Process_Models }
    }
    
    
    Reengineering: Leveraging Your CASE Investment , S. Berlinger
    @Article{	  berlinger:reengineering,
      author	= { S. Berlinger },
      title		= { Reengineering: Leveraging Your CASE Investment },
      journal	= { American Programmer },
      volume	= { 3(10) },
      year		= { October 1990 },
      pages		= { 21-26 },
      abstract	= { see Arnold's book },
      class		= {Reengineering_in_General }
    }
    
    
    Design Recovery for Maintenance and Reuse, Ted J. Biggerstaff
    @Article{	  biggerstaff:design,
      author	= {Ted J. Biggerstaff},
      title		= {Design Recovery for Maintenance and Reuse},
      journal	= {IEEE Computer},
      year		= {1989},
      volume	= {22},
      number	= {7},
      pages		= {36-49},
      month		= jul,
      abstract	= {Design recovery recreates design abstractions from a
    		  combination of code, existing design documentation,
    		  personal experience, and general knowledge about problem
    		  and application domains. The recovered design abstractions
    		  must include conventional software engineering
    		  representations such as formal specifications, module
    		  breakdowns, data abstractions, dataflows, and program
    		  description languages. In addition, they must include
    		  informal linguistic knowledge about problem domains,
    		  application idioms, and the world in general. Automated
    		  design recovery needs a knowledge base - a domain model -
    		  that captures expertise. The design recovery process
    		  consists of three steps: (1) supporting program
    		  understanding for maintenance: (1.a) What are the modules?
    		  (1.b) What are the key data items? (1.c) What are the
    		  software engineering artifacts? (1.d) What are the other
    		  informal design abstractions? (1.e) What is the relation of
    		  the design abstractions to the code? (2) supporting
    		  population of reuse and recovery libraries: The design
    		  abstractions of the former step are generalized and
    		  integrated into the reuse library and the recovery
    		  knowledge base (the domain model). (3) applying the results
    		  of design recovery: The abstract design components stored
    		  in the domain model now become the starting point for
    		  discovering candidate concrete realizations of themselves
    		  in a new system's code. \end{enumerate}
    		  
    		  Two key properties distinguish this design recovery model
    		  from similar models: use of informal information and use of
    		  a domain model. The domain model is knowledge base of
    		  expectations expressed as patterns of program structures,
    		  problem domain structures, language structures, naming
    		  conventions etc.
    		  
    		  A model-based design recovery system, called DESIRE, that
    		  is partially implemented as a prototype is presented.
    		  Related work is described. },
      note		= {Design recovery uses the source code of a system as well
    		  as external information, such as documentation, personal
    		  experience, and knowledge of problem and application
    		  domain, to make a higher level abstraction. The key
    		  property is the formalization of informal information and
    		  domain knowledge},
      class		= {Reengineering_in_General, Fundamentals}
    }
    
    
    A Spiral Model of Software Development and Enhancement, Barry W. Boehm
    @Article{	  boehm:spiral,
      author	= {Barry W. Boehm},
      title		= {A Spiral Model of Software Development and Enhancement},
      journal	= {Computer},
      year		= {May 1988},
      pages		= {61-72},
      abstract	= {Seminal paper on the spiral model, which advocates a
    		  series of prototypes and risk analysis steps.},
      class		= {Reengineering_in_General, Process_Models }
    }
    
    
    The 1992 Report on The Process Reuse Study (PRS) in CAS, J.E. Botsford and G. Caldiera and G.E. Kaiser and M.I. Kellner and N.H. Madhavji
    @TechReport{	  botsford.caldiera.ea:1992,
      key		= {Botsford et. al, 1992},
      author	= {J.E. Botsford and G. Caldiera and G.E. Kaiser and M.I.
    		  Kellner and N.H. Madhavji},
      title		= {The 1992 Report on The Process Reuse Study (PRS) in CAS},
      institution	= {IBM Canada Ltd. Laboratory, Centre for Advanced Studies},
      year		= {1992},
      number	= {TR 74.106},
      address	= {895 Don Mills Road, North York, Ontario, Canada M3C 1W3},
      month		= nov,
      class		= {Reengineering_in_General, Process_Models}
    }
    
    
    Software Maintenance Management, Mike A. Branch and M. Clay Jackson and Mark C. Laviolette and Eric C. Frankel
    @InProceedings{	  branch.jackson.ea:software,
      author	= {Mike A. Branch and M. Clay Jackson and Mark C. Laviolette
    		  and Eric C. Frankel},
      title		= {Software Maintenance Management},
      booktitle	= {CSM'85: Proceedings of the 1985 Conference on Software
    		  Maintenance, {\rm (Washington, DC; November 11-13, 1985)}},
      year		= {November 1985},
      pages		= {62-67},
      abstract	= {Advocates SM as change control, CM, and communication
    		  among team members. Use maintenance procedures from other
    		  disciplines.},
      class		= {Reengineering_in_General, Management }
    }
    
    
    Existing Computer Applications. Maintain or Redesign: How to Decide? , L. Brice
    @InProceedings{	  brice:existing,
      author	= { L. Brice },
      title		= { Existing Computer Applications. Maintain or Redesign: How
    		  to Decide? },
      booktitle	= { Proceedings of the Computer Measurement Group },
      year		= { December 1981 },
      pages		= { 20-28 },
      abstract	= { see Arnold's book },
      class		= {Reengineering_in_General,
    		  The_Pros_and_Cons_and_Risks_of_Reengineering }
    }
    
    
    Using Modern Design Practices to Upgrade Aging Software Systems, Robert N. Britcher and James J. Craig
    @Article{	  britcher.craig:using*1,
      author	= {Robert N. Britcher and James J. Craig},
      year		= {May 1986},
      journal	= {IEEE Software},
      pages		= {16-24},
      title		= {Using Modern Design Practices to Upgrade Aging Software
    		  Systems},
      volume	= {3(3)},
      abstract	= {},
      class		= {Reengineering_in_General, Process_Models }
    }
    
    
    Re-engineering Software: A Case Study, Robert N. Britcher
    @Article{	  britcher:re-engineering,
      author	= {Robert N. Britcher},
      year		= {1990},
      journal	= {IBM Systems Journal},
      pages		= {551-567},
      title		= {Re-engineering Software: A Case Study},
      volume	= {29(4)},
      abstract	= {},
      class		= {Reengineering_in_General, Experiences }
    }
    
    
    Migrating Legacy Systems --- Gateways, Interfaces \& The Incremental Approach, M.L. Brodie and M. Stonebraker
    @Book{		  brodie.stonebraker:migrating,
      author	= {M.L. Brodie and M. Stonebraker},
      title		= {Migrating Legacy Systems --- Gateways, Interfaces \& The
    		  Incremental Approach},
      publisher	= {Morgan Kaufmann Publishers, Inc.},
      year		= {1995},
      note		= {This book gives a detailed description of strategies for
    		  migrating legacy systems. It advocates an incremental
    		  approach for the migration instead of doing it in {\em one}
    		  step. The legacy system is analyzed and the components to
    		  be updated are identified. The legacy system and the new
    		  system work in parallel and are connected via gateways.
    		  Migrated components are removed from the legacy system and
    		  added to the new system. The crucial steps in this process
    		  are establishing the right ordering of the components to be
    		  migrated and the use of powerful gateways. It is preferable
    		  not to develop these gateways yourself but to obtain them
    		  from third party software producers. A number of
    		  case-studies is presented and these case-studies
    		  demonstrate that these gateways are crucial even if all the
    		  code of the legacy system becomes obsolete. The book
    		  concludes with an extensive list of third party software
    		  producers which produce gateways},
      class		= {Reengineering_in_General, Experiences, Alteration,
    		  Re-Design}
    }
    
    
    Migrating Legacy Systems , Michael L. Brodie and Michael Stonebreaker
    @Book{		  brodie.stonebreaker:migrating,
      author	= { Michael L. Brodie and Michael Stonebreaker },
      title		= { Migrating Legacy Systems },
      publisher	= { Morgan Kaufmann },
      year		= { 1995 },
      class		= {Reengineering_in_General }
    }
    
    
    No Silver Bullet: Essence and Accidents of Software Engineering, Frederick P. Brooks Jr.
    @Article{	  brooks-jr-:no,
      author	= {Frederick P. {Brooks Jr.}},
      title		= {No Silver Bullet: Essence and Accidents of Software
    		  Engineering},
      journal	= {IEEE Computer},
      year		= {April 1987},
      volume	= {20(4)},
      pages		= {10-19},
      abstract	= {},
      class		= {Reengineering_in_General,
    		  The_Pros_and_Cons_and_Risks_of_Reengineering }
    }
    
    
    Reverse Engineering: What and Why , E. Bush
    @Article{	  bush:reverse,
      author	= { E. Bush },
      title		= { Reverse Engineering: What and Why },
      journal	= { American Programmer },
      volume	= { 3(10) },
      year		= { October 1990 },
      pages		= { 1-7 },
      abstract	= { see Arnold's book },
      class		= {Reengineering_in_General,
    		  The_Pros_and_Cons_and_Risks_of_Reengineering}
    }
    
    
    Investigating Reverse Engineering Technologies: The CAS Program Understanding Project, E. Buss and R. De~Mori and M. Gentleman and J. Henshaw and H. Johnson and K. Kontogiannis and E. Merlo and H. M\uller and J. Mylopoulos and S. Paul and A. Prakash and M. Stanley and S. Tilley and J. Troster and K. Wong
    @Article{	  buss.de-mori.ea:investigating,
      author	= {E. Buss and R. {De~Mori} and M. Gentleman and J. Henshaw
    		  and H. Johnson and K. Kontogiannis and E. Merlo and H.
    		  M\"{u}ller and J. Mylopoulos and S. Paul and A. Prakash and
    		  M. Stanley and S. Tilley and J. Troster and K. Wong},
      title		= {Investigating Reverse Engineering Technologies: The CAS
    		  Program Understanding Project},
      journal	= {IBM Systems Journal},
      volume	= {33(3)},
      year		= {February 1994},
      pages		= {477-500},
      abstract	= {},
      class		= {Reengineering_in_General, Experiences }
    }
    
    
    Experiences in Program Understanding, Erich Buss and John Henshaw
    @TechReport{	  buss.henshaw:experiences,
      key		= {Buss \& Henshaw, 1992},
      author	= {Erich Buss and John Henshaw},
      title		= {Experiences in Program Understanding},
      institution	= {IBM Canada Ltd. Laboratory, Centre for Advanced Studies},
      year		= {1992},
      number	= {TR 74.105},
      address	= {895 Don Mills Road, North York, Ontario, Canada M3C 1W3},
      month		= jul,
      class		= {Reengineering_in_General, Experiences}
    }
    
    
    Experiences in Program Understanding, Erich Buss and John Henshaw
    @InProceedings{	  buss.henshaw:experiences*1,
      author	= {Erich Buss and John Henshaw},
      title		= {Experiences in Program Understanding},
      booktitle	= {{CASCON'92}: Proceedings of the 1992 CAS Conference, {\rm
    		  (Toronto, Ontario; November 9-12, 1992)}},
      year		= {November 1992},
      pages		= {157-189},
      publisher	= {IBM Canada Ltd.},
      abstract	= {},
      class		= {Reengineering_in_General, Experiences }
    }
    
    
    Experiences in Program Understanding, Erich Buss and John Henshaw
    @TechReport{	  buss.henshaw:experiences*2,
      author	= {Erich Buss and John Henshaw},
      title		= {Experiences in Program Understanding},
      institution	= {IBM Software Solutions Toronto Laboratory Centre for
    		  Advanced Studies},
      number	= {TR-74.105},
      year		= {July 1992},
      abstract	= { . Early version of their CASCON'92 paper. },
      class		= {Reengineering_in_General, Experiences }
    }
    
    
    A Software Reverse Engineering Experience, Erich Buss and John Henshaw
    @TechReport{	  buss.henshaw:software,
      key		= {Buss \& Henshaw, 1991},
      author	= {Erich Buss and John Henshaw},
      title		= {A Software Reverse Engineering Experience},
      institution	= {IBM Canada Ltd. Laboratory, Centre for Advanced Studies},
      year		= {1991},
      number	= {TR 74.065},
      address	= {895 Don Mills Road, North York, Ontario, Canada M3C 1W3},
      month		= sep,
      class		= {Reengineering_in_General, Experiences}
    }
    
    
    A Software Reverse Engineering Experience, Erich Buss and John Henshaw
    @InProceedings{	  buss.henshaw:software*1,
      author	= {Erich Buss and John Henshaw},
      title		= {A Software Reverse Engineering Experience},
      booktitle	= {Proceedings of CASCON~'91, {\rm (Toronto, Ontario; October
    		  28-30, 1991)}},
      year		= {October 1991},
      pages		= {55-73},
      publisher	= {IBM Canada Ltd.},
      abstract	= { . Introduction . Ongoing need for adaptive, perfective,
    		  and corrective maintenance . Maintainer must try to
    		  understand the intent of the original author without the
    		  benefit of his or her advice and guidance. . Most
    		  production software in the marketplace can be characterised
    		  as being in the maintenance phase of the software life
    		  cycle. . Maintain the product's "conceptual integrity"
    		  while operating under traditional time, productivity, and
    		  quality-related objectives. . Reverse engineering:
    		  terminology and concepts . Definition of RE, FE,
    		  redocumentation(*), design recovery, restructuring,
    		  re-engineering, PU . Diagram showing relationship between
    		  terms and life-cycle phases. . Reverse engineering concepts
    		  . PU takes place within the context of an "application
    		  problem domain" and an "environmental domain." (Fodder for
    		  thesis and D-R RE.) . Application PD employs specialised
    		  terminology and paradigms, which determine software
    		  artifact representations; application semantics
    		  (implementation language, terminology, business rules, ...)
    		  . Environmental semantics (OS, type of hardware,
    		  configuration, ...) . Since RE is an open-ended,
    		  context-dependent activity, it is important that toolkits
    		  be similarly open-ended, flexible, extensible, and
    		  versatile. . RE is "a solution looking for a problem": the
    		  appplication of this technology requires a real-world
    		  problem on which to focus. . Why is RE difficult? . Lists
    		  10 reasons why (from another paper [11]). . (Use this as
    		  introductory material in my thesis, "The problem.") . When
    		  to re-engineer? . Lists 11 key indicators (from another
    		  paper [2]). . The PU project . Integrate new FE technology
    		  into existing "legacy" software. . Three options: (1) stay
    		  the course; (2) replace part or all; (3) PU . The right
    		  customer . Opportunity to use SQL/DS as the "real world"
    		  subject system. . Successful RDBMS with a traditional
    		  maintenance history. . Developers working under demanding
    		  quality-related objectives, and are eager to take advantage
    		  of new technologies. . SQL/DS is a proprietary IBM product,
    		  therefore COTS tools not suitable. . They opted for REFINE
    		  since it allows the requisite product-specific
    		  customization (D-R RE): a customizable toolkit was a
    		  necessity. . Their initial focus was on error detection. .
    		  They hoped this would be integrated into the SQL/DS
    		  maintenance process. . The SQL/DS product . SQL/DS:
    		  Structured Query Language/Data System. . Uses many concepts
    		  originally created in System R [15]. . They include a
    		  useful diagram showing evolution of SQL/DS, from System R
    		  (1976, PL/I, VM, prototype), to SQL/DS V1.0 (1982, PL/S,
    		  190K, VM/SP, PP), to SQL/DS V3.2 (1991, PL/AS, >500K
    		  (2.3M), VM/SP,VM/XA,VM/ESA,VSE, PP). . Erich says 2,079,369
    		  lines of PL/AS in 1,147 modules (without comments); with
    		  comments, 4,485,488 lines of PL/AS, over 247M of source
    		  code! . Hence, SQL/DS is now 12 years old, and over two
    		  million lines of code (in expanded form); it has code that
    		  is 18 years old in it from System R. . Runs on S/370, but
    		  several different OS's; mandates dual-path code which must
    		  be maintained in sync. . There are about 8,000 SQL/DS
    		  licenses worldwide (1991) (Probably more now with DB2 and
    		  DB2/6000). . Implemented in PL/AS, a proprietary PL/I-like
    		  dialect allowing imbedded S/370 assembler. A "close to the
    		  metal" systems PL. Hence, COTS tools not applicable to
    		  PL/AS. . SQL/DS has roughly 1,150 compile units, roughly
    		  partitioned into three large units (and several smaller
    		  ones). Clearly, this amount of code is far greater than any
    		  individual can comprehend by themselves. It is necessary
    		  for the developer to specialise in a particular component,
    		  despite the fact that the various components interact! .
    		  Application data "flows" through global data structures,
    		  and is manipulated in concert by many different software
    		  modules. . The devloper looks at code that is over 90\%
    		  control logic, but the compiler sees over 90\% as data
    		  structure declarations, placed in shared files and
    		  \%INCLUDE'd. . Efficiency (speed) is of paramount
    		  importance, especially given the industry-wide perception
    		  that relational databased are sluggish. . They have too
    		  much documentation: too much to maintain, and too much to
    		  pissibly read and digest. . It is a typical legacy code
    		  system: successful, mature, supporting an existing customer
    		  base while growing in terms of supported environments and
    		  functionality. . Good quote from Lehman and Belady paper
    		  [18] on degenerating software structure as maintenance
    		  continues. . The RE toolkit . Most application problem
    		  domains have unique and specialised characteristics, thus
    		  RE toolkits must be extensible and versatile. . it is
    		  highly unlikely that a "turn key" reverse engineering
    		  package will suffice for many users. Maybe this is why CASE
    		  tools are better at FE than RE. Even the most sophisticated
    		  CASE tools are currently capable of accepting only general
    		  data definitions. . The tools and toolkit affects the way
    		  you think about the problem domain [E. Dijkstra]. . Should
    		  should know either exactly what you want to accomplish, or
    		  you should place a premium on toolkit flexibility. . They
    		  chose the Software Refinery by Reasoning Systems Corp. .
    		  They include a diagram describing the three pieces of the
    		  SF: DIALECT (for parsing), REFINE (the OO-DB), and
    		  INTERVISTA (the UI). . (Note that given this breakdown, we
    		  have similar pieces, and could concievable
    		  replace/integrate Rigi with the SF's components). .
    		  (Include such a diagram in the paper, but for Rigi.) .
    		  DIALECT requires a grammar for the input PL nd a domain
    		  model (a description of the object base, i.e. how the AST
    		  should look like). It includes a reverse-parser which can
    		  produce code out of the db. . The core of the SF is the
    		  REFINE specification language, a multi-paradigm HLL. It has
    		  the syntax of LISP (in fact, it gets translated to LISP to
    		  run on the underlying LISP system), but included
    		  Prolog-like logic, sets, and so on. . A significant major
    		  feature of the SF is its extensiblity; this has been
    		  demonstrated by its capability to integrate into various
    		  commerical application domains (which ones?). . DIALECT =
    		  rigireverse REFINE = rigiserver/rigiedit INTERVISTA =
    		  rigiedit . A software RE experience . Their ultimate goal
    		  was the qualitative and quantitative improvement of the
    		  SQL/DS base code and maintenance process. . They key is
    		  analysis, and they use the SF to convert the SQL/DS code
    		  into something that is tractable and can be manipulated. .
    		  They were guided (somewhat) by SQL/DS management to direct
    		  their research to specific problem areas. . They spent
    		  considerable time creating a parser for PL/AS: it is
    		  context-sensitive, there is no formal grammer (there are
    		  several dialects), and the imbedded assembler complicates
    		  matters. They first built a special scanner to recognize
    		  multiple symbols for the same keyword, skipping the
    		  imbedded assembler and PL/AS listing format directives. .
    		  They have a full-page process diagram of PL/AS on VM to SF
    		  population. . (We need to include a similar picture, and
    		  rationale as to why it is so much simpler.) . When they
    		  encountered bizarre parsing errors, they went back and
    		  fixed the source (it turned out to be wrong in some way
    		  anyhow). . They found several errors in the source just
    		  while testing their parser. . (It would be nice to get a
    		  copy of the reports they submitted to SQL.) . One of their
    		  most clearly stated conclusions is that any RE toolkit must
    		  be extensible to meet your problem domain. . Future
    		  directions . Stuff to work on (in increasing order of
    		  difficulty). . (Address some of these issues in my thesis!)
    		  . Static analysis. (Some of my work). . Code standard
    		  checker (IBM Watson work); allow partially automated code
    		  inspections against a specified standard. They considered
    		  this the most promising area for immediate future work. .
    		  Code flow analysis. The extraction of this information from
    		  a single module is "easy"; representing and presenting this
    		  information is hard. . Data flow/Structure analysis: map
    		  the data structures and their relationships. Especially
    		  important for SQL/DS due to its use of global data
    		  structures to pass information, causing increased
    		  complexity. . Test case generation. . Create REFINE/PLAS,
    		  similar to REFINE/C and REFINE/FORTRAN. (These are examples
    		  of instantiated D-RE RE environments for a specific
    		  application domain.) . Performance analysis and tuning. .
    		  Redundant code identification. . Program transformation. .
    		  Program translation: produce a C equivalent of the PL/AS
    		  source to SQL/DS. . Program reuse and generation. . Summary
    		  and conclusions . Software maintenance is an economic
    		  survival issue. . The PU project is analysis-oriented. .
    		  Must control and minimise maintenance costs, understand
    		  embedded business rules. . RE is not a well-understood
    		  concept. In addition to the introduction of the basic
    		  terminology, it is essential to manage the expectations of
    		  the approach; many expectations in the area are
    		  unrealistic. . Key is the conversion from source code to a
    		  more tractable medium; they chose the SF's object base. (I
    		  choose Rigi views, and must allow the user to choose others
    		  as well.) . Mention "software archeologists," and offer an
    		  interesting analogy: archeologists cannot usually
    		  (after-the-fact) ask "why" something is the way it is, and
    		  are forced to invent rational models for the existence of
    		  particular artifacts. RE's have much the same task. },
      class		= {Reengineering_in_General, Experiences }
    }
    
    
    Investigating Reverse Engineering Technologies for the CAS Program Understanding Project, E. Buss and R. De Mori and W. M. Gentleman and J. Henshaw and H. Johnson and K. Kontogiannis and E. Merlo and H. A. M\uller and J. Mylopoulos and S. Paul and A. Prakash and M. Stanley and S. R. Tilley and J. Troster and K. Wong
    @Article{	  buss.mori.ea:investigating,
      author	= {E. Buss and R. De Mori and W. M. Gentleman and J. Henshaw
    		  and H. Johnson and K. Kontogiannis and E. Merlo and H. A.
    		  M\"{u}ller and J. Mylopoulos and S. Paul and A. Prakash and
    		  M. Stanley and S. R. Tilley and J. Troster and K. Wong},
      title		= {Investigating Reverse Engineering Technologies for the
    		  {CAS} Program Understanding Project},
      journal	= {IBM Systems Journal},
      volume	= {33},
      number	= {3},
      year		= {1994},
      pages		= {477-500},
      abstract	= {},
      class		= {Reengineering_in_General, Experiences }
    }
    
    
    A Clinical Approach to Reverse and Reengineering, Charles W. Butler and Thomas J. McCabe
    @Article{	  butler.mccabe:clinical,
      author	= {Charles W. Butler and Thomas J. McCabe},
      title		= {A Clinical Approach to Reverse and Reengineering},
      journal	= {Reverse Engineering Newsletter},
      year		= {1992},
      pages		= {Rev-1 -- Rev-4},
      month		= jan,
      inhalt	= {Ma\3nahmen, um 'alternde' Systeme aufrecht zu erhalten (in
    		  Anlehnung an die Gesundheitsvorsorge): - periodische
    		  Untersuchung (je älter je häufiger) - Metriken erheben und
    		  festhalten - falls sich die Werte verschlechtern,
    		  korrigierende Ma\3nahmen einleiten: * Diagnose *
    		  Gegenma\3nahmen ermitteln * Abwägung von Risiken/Kosten und
    		  Nutzen
    		  
    		  Mögliche Metriken: - McCabes cyclomatic complexity V -
    		  McCabes essential complexity EV
    		  
    		  auch zur Erkennung von Redundanz (gleiche V/EV von
    		  Programmen => gleiche Funktionalität) und Wiederverwendung
    		  (gleich V/EV von Program Description Language PDL und
    		  existierendem Programm => gleiche Funktionalität) },
      class		= {Reengineering_in_General, Process_Models}
    }
    
    
    A conceptual foundation for software re-engineering, E. Byrne
    @InProceedings{	  byrne:conceptual,
      title		= {A conceptual foundation for software re-engineering},
      author	= {E. Byrne},
      pages		= {226--235},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1992},
      year		= {1992},
      note		= { A conceptual foundation for software reengineering is
    		  presented yielding a general model of software
    		  reengineering. This model is described and is shown to be
    		  useful for examining reengineering issues such as the
    		  reengineering process and strategies for reengineering},
      class		= {Reengineering_in_General, Fundamentals}
    }
    
    
    A Conceptual Foundation for Software Re-engineering, Eric J. Byrne
    @InProceedings{	  byrne:conceptual*1,
      author	= {Eric J. Byrne},
      title		= {A Conceptual Foundation for Software Re-engineering},
      pages		= {216-235},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1992},
      year		= {1992},
      publisher	= {IEEE Computer Society Press},
      month		= nov,
      abstract	= {This paper presents a conceptual foundation for software
    		  re-engineering. The foundation is composed of properties
    		  and principles that underlie reengineering methods, and
    		  assumptions about reengineering. The value of this
    		  conceptual foundation is its ability to model our
    		  understanding of reengineering, how it is praticed, and how
    		  it can be practiced. A general model of software
    		  re-engineering is established, based on this foundation.
    		  This model, along with its underlying foundation, proves
    		  useful for examinining re-engineering issues such as the
    		  re-engineering process and re-engineering strategies.},
      class		= {Reengineering_in_General, Fundamentals}
    }
    
    
    A Conceptual Foundation for Software Re-engineering, Eric J. Byrne
    @InProceedings{	  byrne:conceptual*2,
      author	= {Eric J. Byrne},
      title		= {A Conceptual Foundation for Software Re-engineering},
      booktitle	= {Proceedings of the 1992 Conference on Software Maintenance
    		  (CSM~'92), {\rm (Orlando, Florida; November 9-12, 1992)}},
      year		= {November 1992},
      publisher	= {IEEE Computer Society Press (Order Number 2980)},
      abstract	= { . levels of abstraction: . conceptual, requirements,
    		  design, implementation . separation of concerns: for each
    		  level of abstraction there exists a system representation
    		  that explicitly describes a system's characteristics. each
    		  level of abstraction defines a different set of
    		  characteristics . information inclusion: information
    		  contained within a level of abstraction influences
    		  information contained at lower abstraction levels;
    		  information contained within a level of abstraction has no
    		  influence on information contained at higher levels of
    		  abstraction [I disagree with this...] . information volume:
    		  as the level of abstraction descreases, the amount of
    		  information describing a system increases },
      class		= {Reengineering_in_General, Fundamentals }
    }
    
    
    Software Reverse Engineering: a Case Study, Eric J. Byrne
    @Article{	  byrne:software,
      author	= {Eric J. Byrne},
      title		= {Software Reverse Engineering: a Case Study},
      journal	= {Software---Practice and Experience, Wiley},
      year		= {1991},
      volume	= {21},
      number	= {12},
      pages		= {1349-1364},
      abstract	= {This paper presents lessons learned from an experiment to
    		  reverse engineer a program. A reverse engineering process
    		  was used as part of a project to develop an Ada
    		  implementation of a Fortran program and upgrade the
    		  existing documentation. To accomplish this, design
    		  information was extracted from the Fortran source code and
    		  entered into a software development environment. The
    		  extracted design information was used to implement a new
    		  version of the program written in Ada. This experiment
    		  revealed issues about recovering design information, such
    		  as, separating design details from implementation details,
    		  dealing with incomplete or erroneous information,
    		  traceability of information between implementation and
    		  recovered design, and re-engineering. The reverse
    		  engineering process used to recover the design, and the
    		  experience gained during the study are reported.},
      note		= { Experience report describing the problem of
    		  reimplementing a Fortran program in Ada. Instead of a
    		  one-to-one translation, the original Fortran program is
    		  analyzed and design information is extracted which is then
    		  used to reimplement the program in Ada.},
      class		= {Reengineering_in_General, Experiences}
    }
    
    
    Software Reverse Engineering: A Case Study , E.J. Byrne
    @Article{	  byrne:software*1,
      author	= { E.J. Byrne },
      title		= { Software Reverse Engineering: A Case Study },
      journal	= { Software --- Practice and Experience },
      year		= { December 1991 },
      pages		= { 1349-1364 },
      abstract	= { },
      class		= {Reengineering_in_General, Experiences }
    }
    
    
    Repository-Based Reverse Engineering: An Experience Report, Yih-Farn Robin Chen
    @InProceedings{	  chen:repository-based,
      author	= {Yih-Farn Robin Chen},
      title		= {Repository-Based Reverse Engineering: An Experience
    		  Report},
      booktitle	= {Proceedings of the 4th Reengineering Forum},
      year		= {1994},
      address	= {Victoria, Canada},
      pages		= {33.1 - 33.10},
      month		= sep,
      note		= {only slides},
      class		= {Reengineering_in_General, Experiences}
    }
    
    
    Reverse Engineering and Design Recovery: A Taxonomy, Elliot J. Chikofsky and James H. Cross II
    @Article{	  chikofsky.cross:reverse,
      key		= {Chikofsky \& Cross},
      author	= {Elliot J. Chikofsky and James H. Cross II},
      title		= {Reverse Engineering and Design Recovery: A Taxonomy},
      pages		= {13--17},
      journal	= {IEEE Software},
      year		= {1990},
      month		= jan,
      note		= {Definitions of a number of key notions in the field of
    		  reverse engineering are proposed. Forward and reverse
    		  engineering, redocumentation, design recovery,
    		  restructuring, and reengineering are described},
      class		= {Reengineering_in_General, Fundamentals}
    }
    
    
    CASE and Reengineering: From Archeology to Software Perestroika, Elliot J. Chikofsky
    @InProceedings{	  chikofsky:case,
      author	= {Elliot J. Chikofsky},
      title		= {{CASE} and Reengineering: From Archeology to Software
    		  Perestroika},
      booktitle	= {Proceedings of the 12th  International Conference on
    		  Software Engineering },
      pages		= {122},
      month		= mar,
      year		= {1990},
      abstract	= {CASE (computer-aided software engineering), reverse
    		  engineering, and reengineering together form a coherent set
    		  of strategies for software organizations to get a handle on
    		  and reclaim their existing software assets. Each of the
    		  three supports and depends upon the others for long-term
    		  success. It is argued that they will be a permanent part of
    		  the process of evolutionary development. Even in future
    		  CASE systems with reliable automatic generation of
    		  executable code, the resulting system will be (perhaps
    		  automatically) reread by a reverse engineering process back
    		  into the CASE dictionary. This will allow the discovery of
    		  ramifications and side effects which are not foreseeable in
    		  the forward engineering process.},
      class		= {Reengineering_in_General,
    		  The_Pros_and_Cons_and_Risks_of_Reengineering}
    }
    
    
    ECOOP'99 Workshop on Experiences in Object-Oriented Reengineering, Oliver Ciupke and St\'ephane Ducasse (Eds)
    @Proceedings{	  ciupke.ducasse:ecoop99,
      title		= {{ECOOP}'99 Workshop on Experiences in Object-Oriented
    		  Reengineering},
      year		= {1999},
      editor	= {Oliver Ciupke and St{\'e}phane Ducasse},
      number	= {2-6-6/99},
      series	= {FZI-Report},
      organization	= {Forschungszentrum Informatik},
      address	= {Karlsruhe, Germany},
      month		= jul,
      optnote	= {},
      optannote	= {},
      class		= {Reengineering_in_General, Reengineering_Collections}
    }
    
    
    Data Abstraction in a Software Re-engineering Reference Model, A. Colbrook and C. Smythe and A. Darlison
    @InProceedings{	  colbrook.smythe.ea:data,
      author	= {A. Colbrook and C. Smythe and A. Darlison},
      title		= {Data Abstraction in a Software Re-engineering Reference
    		  Model},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1990},
      year		= {1990},
      pages		= {2-11},
      organization	= {IEEE},
      publisher	= {IEEE Computer Society Press},
      abstract	= {The process of software re-engineering must incorporate
    		  techniques for manipulating software which is imperative,
    		  declarative or functional in nature. This generality needs
    		  a mechanism for deriving the original requirements of the
    		  underlying data structures contained within the source code
    		  itself. In this paper a reference model is proposed from
    		  which it is possible to derive the necessary techniques
    		  required to implement such a mechanism. The reference model
    		  is programming language independent and as such is well
    		  suited to representing the general re-engineering
    		  process.},
      class		= {Reengineering_in_General, Process_Models}
    }
    
    
    Olin Bray and Michael Hess, Reengineering a Configuration-Management System
    @Article{	  configuration-management-system:olin,
      author	= {Reengineering a Configuration-Management System},
      title		= {Olin Bray and Michael Hess},
      journal	= {IEEE Software},
      year		= {1995},
      volume	= {12},
      number	= {1},
      pages		= {55-63},
      month		= {January},
      class		= {Reengineering_in_General, Experiences, Alteration,
    		  Re-Design, From_Mainframe_to_Client-Server_Architecture}
    }
    
    
    Realities of Off-Shore Reengineering, Guido Dedene and Jean-Pierre De Vresse
    @Article{	  dedene.vresse:realities,
      author	= {Guido Dedene and Jean-Pierre De Vresse},
      title		= {Realities of Off-Shore Reengineering},
      journal	= {IEEE Software},
      year		= {1995},
      volume	= {12},
      number	= {1},
      pages		= {},
      month		= {January},
      class		= {Reengineering_in_General, Experiences}
    }
    
    
    MACS: Maintenance Assistence Capability for Software Maintenance, Christine Desclaux and Michel Ribault
    @InProceedings{	  desclaux.ribault:macs,
      author	= {Christine Desclaux and Michel Ribault},
      title		= {MACS: Maintenance Assistence Capability for Software
    		  Maintenance},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1991},
      year		= {1991},
      pages		= {2-11},
      organization	= {IEEE},
      publisher	= {IEEE Computer Society Press},
      abstract	= {MACS goal is to offer a customizable software maintenance
    		  assistance system. Its main concern is to help the
    		  maintainer in gaining a deep understanding of existing or
    		  in-progress applications, of the factual data (Change
    		  Management World and Abstraction Recovery World) and the
    		  design decisions rationale (Reasoning World), the mapping
    		  of domain to programming components (Interconnection
    		  World). Moreover this broad reverse-engineering approach is
    		  enhanced by impact analysis techniques to better perceive
    		  the interaction between components. The MACS supervisor
    		  proposes a set of maintenance process models to guide the
    		  maintainer through the MACS worlds. Knowledge Base and
    		  Expert-System techniques are used in conjunction with
    		  Software Engineering techniques, which makes MACS a KADME,
    		  Knowledge Assistance for Development and Maintenance
    		  Environment. },
      class		= {Software_Reverse_Engineering, Reverse_Design,
    		  Knowledge-Based_Concept_Assignment,
    		  Reengineering_in_General, Process_Models}
    }
    
    
    ECOOP'99 Workshop on Experiences in Object-Oriented Reengineering, St\'ephane Ducasse and Oliver Ciupke
    @InProceedings{	  ducasse.ciupke:ecoop99,
      author	= {St{\'e}phane Ducasse and Oliver Ciupke},
      title		= {{ECOOP}'99 Workshop on Experiences in Object-Oriented
    		  Reengineering},
      booktitle	= {Object-Oriented Technology -- Ecoop'99 Workshop Reader},
      editor	= {Ana Moreira and Serge Demeyer},
      volume	= {1743},
      optnumber	= {},
      optseries	= {Lecture Notes in Computer Science},
      year		= {1999},
      optorganization={},
      publisher	= {Springer-Verlag},
      optaddress	= {},
      optmonth	= {},
      pages		= {164--183},
      optnote	= {},
      optannote	= {},
      class		= {Reengineering_in_General, Reengineering_Collections}
    }
    
    
    Software Reuse in an Industrial Setting: A Case Study, M. F. Dunn and J. C. Knight
    @InProceedings{	  dunn.knight:software,
      author	= {M. F. Dunn and J. C. Knight},
      title		= {Software Reuse in an Industrial Setting: A Case Study},
      booktitle	= {Proceedings of the 13th  International Conference on
    		  Software Engineering },
      pages		= {329-338},
      year		= {1991},
      class		= {Reengineering_in_General, Experiences}
    }
    
    
    Web Site Engineering, Esti\'evenart, Fabrice and Fran\ccois, Aurore and Henrard, Jean and Hainaut, Jean-Luc
    Available as
    hypertext.
    @InProceedings{	  estievenart.francois.ea:web,
      author	= {Esti\'evenart, Fabrice and Fran\c{c}ois, Aurore and
    		  Henrard, Jean and Hainaut, Jean-Luc},
      title		= {Web Site Engineering},
      booktitle	= {Proc. of the 5th International Workshop on Web Site
    		  Evolutio},
      year		= {2003},
      publisher	= {IEEE CS Press},
      abstract	= {Modern technologies allow web sites to be dynamically
    		  managed by building pages on-the-fly through scripts that
    		  get data from a database. Dissociation of data from layout
    		  directives provides easy data update and homogeneous
    		  presentation. However, many web sites still are made of
    		  static HTML pages in which data and layout information are
    		  interleaved. This leads to out-of-date information,
    		  inconsistent style and tricky and expensive maintenance.
    		  This paper presents a tool supported methodology to
    		  reengineer web sites, that is, to extract the page contents
    		  as XML documents structured by expressive DTDs or XML
    		  Schemas. All the pages that are recognized to express the
    		  same application (sub)domain are analyzed in order to
    		  derive their common structure. This structure is formalized
    		  by an XML document, called META, which is then used to
    		  extract an XML document that contains the data of the pages
    		  and a XML Schema validating these data. The META document
    		  can describe various structures such as alternative layout
    		  and data structure for the same concept, structure
    		  multiplicity and separation between layout and
    		  informational content. XML Schemas extracted from different
    		  page types are integrated and conceptualised into a unique
    		  schema describing the domain covered by the whole web site.
    		  Finally, the data are converted according to this new
    		  schema so that they can be used to produce the renovated
    		  web site. These principles will be illustrated through a
    		  case study using the tools that create the META document,
    		  extract the data and the XML Schema.},
      keywords	= {reengineering, web site, XML, data extraction},
      url		= {http://www.fundp.ac.be/recherche/publications/fr/50540.html}
    		  ,
      class		= {Data_Reverse_Engineering Reverse_Engineering_Tools
    		  Reengineering_in_General}
    }
    
    
    Reverse Engineering - hype, hope or here?, P. A. V. Hall
    @InBook{	  hall:reverse,
      author	= {P. A. V. Hall},
      pages		= {209-243},
      title		= {Reverse Engineering - hype, hope or here?},
      series	= {Software Reuse and Reverse Engineering in Practice},
      class		= {Reengineering_in_General,
    		  The_Pros_and_Cons_and_Risks_of_Reengineering}
    }
    
    
    Software Reuse, Reverse Engineering, and Re-engineering, P. A. V. Hall
    @InBook{	  hall:software,
      author	= {P. A. V. Hall},
      pages		= {3-31},
      title		= {Software Reuse, Reverse Engineering, and Re-engineering},
      series	= {Software Reuse and Reverse Engineering in Practice},
      class		= {Reengineering_in_General,
    		  The_Pros_and_Cons_and_Risks_of_Reengineering}
    }
    
    
    Incremental Process Support for Code Reengineering, George T. Heineman and Gail E. Kaiser
    @InProceedings{	  heineman.kaiser:incremental,
      author	= {George T. Heineman and Gail E. Kaiser},
      title		= {Incremental Process Support for Code Reengineering},
      pages		= {282-290},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1994},
      year		= {1994},
      publisher	= {IEEE Computer Society Press},
      month		= sep,
      abstract	= {Reengineering a large code base can be a monumental task,
    		  and the situation becomes even worse if the code is
    		  concomitantly being modified. Since January 1992, the
    		  authors have been using the MARVEL process centered
    		  environment (PCE) for all of their software development and
    		  are currently using it to develop the OZ PCE (MARVEL's
    		  successor). Towards this effort, the authors are
    		  reengineering OZ's code base to isolate the process engine,
    		  transaction manager, and object management system as
    		  separate components that can be used in arbitrary systems.
    		  In this paper, the authors show how a PCE can assist teams
    		  of users in carrying out code reengineering while allowing
    		  them to continue their normal code development. The key
    		  features to this approach are its incremental nature and
    		  the ability of the PCE to automate most of the tasks
    		  necessary to maintain the consistency of the code base.},
      class		= {Reengineering_in_General, Process_Models}
    }
    
    
    Strategies for Data Reengineering, Henrard, Jean and Hick, Jean-Marc and Thiran, Philippe and Hainaut, Jean-Luc
    Available as
    hypertext.
    @InProceedings{	  henrard.hick.ea:strategies,
      author	= {Henrard, Jean and Hick, Jean-Marc and Thiran, Philippe and
    		  Hainaut, Jean-Luc},
      title		= {Strategies for Data Reengineering},
      booktitle	= {Proc. of the 9th Working Conference on Reverse
    		  Engineering},
      year		= {2002},
      publisher	= {IEEE Computer Society Press},
      keywords	= {reengineering, migration, database, reverse, engineering,
    		  application},
      abstract	= {This paper describes and analyzes a serie of strategies to
    		  migrate data-intensive applications from a legacy data
    		  management system to a modern DMS. Considering two ways to
    		  migrate the data and three ways to propagate the
    		  corresponding perturbation to the program code, the paper
    		  identifies six reference strategies that provide different
    		  levels of quality and induce different costs. Three of them
    		  are discussed in detail and illustrated by the conversion
    		  of COBOL files into a SQL database.},
      url		= {http://www.fundp.ac.be/recherche/publications/fr/40462.html}
    		  ,
      class		= {Data_Reverse_Engineering Reverse_Engineering_Tools
    		  Reengineering_in_General Database_Migration}
    }
    
    
    A Survey of Software Maintenance Tools that Enhance Program Understanding, H. B. Holdbrook and S. M. Tebaut
    @TechReport{	  holdbrook.tebaut:survey,
      author	= {H. B. Holdbrook and S. M. Tebaut},
      title		= {A Survey of Software Maintenance Tools that Enhance
    		  Program Understanding},
      institution	= {Software Engineering Research Center, University of
    		  Florida/ Purdue University},
      year		= {1987},
      number	= {SERC-TR-9-F},
      class		= {Reengineering_Tools, Software_Reverse_Engineering,
    		  Software_Reverse_Engineering_Tools,
    		  Reengineering_in_General, Fundamentals}
    }
    
    
    Re-engineering business systems to use the next generation of software, S. Holloway
    @InBook{	  holloway:re-engineering,
      author	= {S. Holloway},
      pages		= {271-282},
      title		= {Re-engineering business systems to use the next generation
    		  of software},
      series	= {Software Reuse and Reverse Engineering in Practice},
      class		= {Reengineering_in_General,
    		  The_Pros_and_Cons_and_Risks_of_Reengineering}
    }
    
    
    Environment support for business reengineering: the Macrotec approach, R.K. Keller and X. Shen and R. Lajoie and M. Ozkan and T. Tao
    @Article{	  keller.shen.ea:environment,
      title		= {Environment support for business reengineering: the
    		  {M}acrotec approach},
      author	= {R.K. Keller and X. Shen and R. Lajoie and M. Ozkan and T.
    		  Tao},
      journal	= {Software - Concepts and Tools},
      pages		= {31--40},
      volume	= {16},
      number	= {1},
      year		= {1995},
      note		= { A business reengineering approach is developed based on
    		  the formalism of coloured Petri-nets. The Macrotec
    		  environment has been engineered for the support and
    		  validation of this approach. Macrotec is based on
    		  Macronets, the latter being a variation of the Petri net
    		  formalism},
      class		= {Reengineering_in_General, Business_Reengineering}
    }
    
    
    Proceedings Conference on Software Maintenance, M. Kellner (Ed)
    @Proceedings{	  kellner:proceedings,
      editor	= {M. Kellner},
      title		= {Proceedings Conference on Software Maintenance},
      publisher	= {{IEEE} Computer Society Press},
      year		= {1992},
      note		= { Several papers in these proceedings that are directly
    		  related to reverse engineering are discussed separately in
    		  this bibliography},
      class		= {Reengineering_in_General, Reengineering_Collections}
    }
    
    
    Re-Engineering von Anwendungssoftware, H.-D. Knöll and M. Schwarze
    @Book{		  knöll.schwarze:re-engineering,
      author	= {H.-D. Knöll and M. Schwarze},
      title		= {Re-Engineering von Anwendungssoftware},
      publisher	= {BI Wissenschaftsverlag},
      year		= {1993},
      edition	= {1},
      abstract	= {Fallstudie, CASE-Tools im Vergleich},
      language	= {German},
      class		= {Reengineering_in_General, Experiences}
    }
    
    
    The Task Artifact Cycle: A Conceptual Approach to Maintenance and Re-engineering, Sebastian Kutscha and Klaus Henning and Horst Kesselmeier
    @InProceedings{	  kutscha.henning.ea:task,
      author	= {Sebastian Kutscha and Klaus Henning and Horst
    		  Kesselmeier},
      title		= {The Task Artifact Cycle: A Conceptual Approach to
    		  Maintenance and Re-engineering},
      booktitle	= {1st  European Conference on Software Maintenance and
    		  Reengineering 97},
      month		= mar,
      year		= {1997},
      publisher	= {IEEE Computer Society Press},
      abstract	= {We present a model - the so-called task artifact cycle -
    		  which integrates the development of a system being in use
    		  into the software lifecycle. The basic assumption of the
    		  model is, that the actual use of a system may considerably
    		  differ from the original design. This has to be taken into
    		  consideration in maintenance and reengineering. In
    		  particular, the monitoring of this development process is
    		  an important basis for maintainability. },
      class		= {Reengineering_in_General, Process_Models}
    }
    
    
    A Process Model for Controlling and Performing Re-engineering Tasks, Ulrike Kölsch and Mechtild Wallrath
    @InProceedings{	  kölsch.wallrath:process,
      author	= {Ulrike Kölsch and Mechtild Wallrath},
      title		= {A Process Model for Controlling and Performing
    		  Re-engineering Tasks},
      booktitle	= {1st  European Conference on Software Maintenance and
    		  Reengineering 97},
      month		= mar,
      year		= {1997},
      publisher	= {IEEE Computer Society Press},
      abstract	= {In this paper we present a process model for controlling
    		  and performing re-engineering tasks. This process model is
    		  based on a re-engineering methodology, that regards the
    		  legacy system from the data-oriented perspective and aims
    		  for decomposing and transforming it into an object-oriented
    		  system along semantic units.
    		  
    		  The transformation from procedural to object-oriented
    		  systems requires to deal with system models at different
    		  abstraction levels which must be matched to each other. The
    		  object identification and the match are controlled and
    		  performed by two processes - the microprocess and the
    		  macroprocess. In order to find and process information with
    		  respect to an abstract object, the macroprocess initiates
    		  and coordinates a set of microprocesses that perform
    		  re-engineering tasks with respect to a secluded functional
    		  and structural part of the IS. },
      class		= {Reengineering_in_General, Process_Models}
    }
    
    
    Panel on Software Re-Engineering, Gilles M. E. Lafue
    @Article{	  lafue:panel,
      author	= {Gilles M. E. Lafue},
      title		= {Panel on Software Re-Engineering},
      journal	= {IEEE},
      year		= {1990},
      pages		= {118},
      class		= {Reengineering_in_General}
    }
    
    
    Understanding Someone Else's Code: Analysis of Experiences, Arun Lakhotia
    @Article{	  lakhotia:understanding,
      author	= {Arun Lakhotia},
      title		= {Understanding Someone Else's Code: Analysis of
    		  Experiences},
      journal	= {Reverse Engineering Newsletter},
      pages		= {Rev-6 -- Rev-8},
      inhalt	= { Erkenntnisse: 1) Der Programmierproze\3 besteht darin,
    		  Abbildungen zu konstruieren (vom Anwendungsbereich in die
    		  Implementierung). 2) Ein Programm zu verstehen involviert
    		  die Rekonstruktion all dieser Abbildungen. 3) Der
    		  Rekonstruktionsproze\3 ist erwartungsgesteuert durch
    		  Schaffung, Bestätigung und Verfeinerung von Hypothesen.
    		  
    		  Anforderungen an die Organisation/Struktur zum besseren
    		  Verständnis von Programmcode: Ebenen der Abbildungen
    		  sollten reflektiert werden in einer Kombination aus -
    		  physischer Organisation (Verzeichnisstruktur auf
    		  Dateiebene) - modulare Dekomposition des Programmcodes
    		  
    		  Tools: - thesaurusbasiertes Tool, das nach Symbolen sucht,
    		  deren Bedeutung nahe bei funktionsbeschreibenden Phrasen
    		  liegt. - cross-reference-Information, die durch *
    		  Datenbankanfragen oder * hypertextorientierten Browsern zur
    		  Verfügung gestellt wird. - Tool, das das Design ermittelt,
    		  das am natürlichsten ist, um den Problemtyp zu beschreiben.
    		  Z.B.: * Proze\3orientierte Anwendung -> Endliche Automaten
    		  * Datenintensive Anwendung -> ER-Diagramme - Tool sollte
    		  den Systemgenerierungsproze\3 (Makefile) berücksichtigen -
    		  das Tool sollte partielle Rekonstruktion des Designs
    		  ermöglichen },
      class		= {Reengineering_in_General, Experiences}
    }
    
    
    A Tool for Understanding Object-Oriented Program Dependencies, P. Linos and V. Courtois
    Available as
    ~care.
    @InProceedings{	  linos.courtois:tool,
      author	= {P. Linos and V. Courtois },
      title		= {A Tool for Understanding Object-Oriented Program
    		  Dependencies},
      booktitle	= {Program Comprehension},
      publisher	= {IEEE Computer Society Press},
      year		= {1994},
      address	= {Washington D.C.},
      month		= {November},
      url		= {http://www.csc.tntech.edu/~care},
      abstract	= {In this paper, we present a tool for understanding and
    		  re-engineering C++ programs calledOO!CARE (Object-Oriented
    		  Computer-Aided Re-Engineering). OO!CARE demonstrates some
    		  practical solutions to the problem of extracting and
    		  visualizing object-oriented program dependencies(i.e.
    		  data-objects and their relationships). It is an extension
    		  of an earlier tool for maintaining C programs called
    		  CARE(Computer-Aided Re-engineering). In this paper, we also
    		  discuss some early experiences acquired from using the
    		  tool. For instance, an important observation made during a
    		  re-engineering exercise is that some characteristics of the
    		  object-oriented programming paradigm such as inheritance
    		  and polymorphism contribute significantly to the complexity
    		  of understanding program dependencies. Moreover, in this
    		  paper, we discuss how object-oriented program dependencies
    		  differ from the procedural ones and explain how they can be
    		  visualized within the same environment.},
      class		= {Reengineering_in_General }
    }
    
    
    CARE: An Environment for Understanding and Re-engineering C Programs, P. Linos
    Available as
    ~care.
    @InProceedings{	  linos:care,
      author	= {P. Linos},
      title		= {CARE: An Environment for Understanding and Re-engineering
    		  C Programs},
      booktitle	= {Software Maintenance},
      publisher	= {IEEE Computer Society Press},
      year		= {1993},
      pages		= {130-139},
      address	= {Montreal, Quebec, Canada},
      month		= {September},
      url		= {http://www.csc.tntech.edu/~care},
      abstract	= {The focus of this paper is on facilitating incremental
    		  understanding and re-engineering of existing C programs. A
    		  software environment called C.A.R.E.(Computer-Aided
    		  Re-Engineering) is used as a vehicle towards the goal. CARE
    		  maintains a repository of control-flow and data-flow
    		  dependencies(i.e. entities and their relations) of C
    		  programs. These dependencies can be visualized using a
    		  novel presentation model. Moreover, CARE entails
    		  transformation tools that support various ways of
    		  displaying program dependencies and facilitate incremental
    		  program modifications. An empirical evaluation of the CARE
    		  environment using small size C programs is performed. In
    		  addition, CARE is used in order to modify the source code
    		  of a medium-to-large size program. The results from this
    		  empirical evaluation of CARE indicate that its presentation
    		  model and transformation tools is a promising step towards
    		  improving the effectiveness of understanding and
    		  re-engineering existing C programs. Finally, the authors
    		  discuss some issues raised during the modification exercise
    		  with CARE when using a medium-to-large size program.},
      class		= {Reengineering_in_General }
    }
    
    
    A Design Framework for System Re-engineering, Xiaodong Liu and Zhiqiang Chen and Hongji Yang and Hussein Zedan and William. C. Chu
    @InProceedings{	  liu.chen.ea:design,
      author	= {Xiaodong Liu and Zhiqiang Chen and Hongji Yang and Hussein
    		  Zedan and William. C. Chu},
      title		= {A Design Framework for System Re-engineering},
      booktitle	= {Proceedings of Joint Asia Pacific Software Engineering
    		  Conference and International Computer Science Conference},
      publisher	= {IEEE Computer Society},
      year		= {1997},
      address	= {Hong Kong},
      month		= {December},
      abstract	= { We discuss the current situation of formal methods and
    		  their use in the re-engineering of computing systems,
    		  especially real time systems. Based on the analysis result,
    		  a solution which uses a consistent 4-sector Wide Spectrum
    		  Language (WSL) is proposed, which presently includes the
    		  general architecture and work flow, the structure of
    		  Object-Action Model, the syntax and semantics of ObTAM
    		  (Object Oriented Temporal Agent Model) and TGCL (Timed
    		  Guarded Command Language). A small case study shows an
    		  optimistic future of our WSL technique. Further research
    		  will aim to build the complete semantic kernel of the WSL
    		  and its associated algebraic laws, including transformation
    		  rules and abstraction rules. },
      keywords	= {formal methods, re-engineering, wide spectrum language,
    		  real-time systems, object orientation, Interval Temporal
    		  Logic},
      class		= {Reengineering_in_General Requirement_Tracability
    		  Software_Reverse_Engineering Reverse_Specification
    		  Process_Models }
    }
    
    
    Reengineering: Can a Program Put Intelligence in Stupid Programs?, M. Maiocchi
    @InProceedings{	  maiocchi:reengineering,
      author	= {M. Maiocchi},
      title		= {Reengineering: Can a Program Put Intelligence in Stupid
    		  Programs?},
      booktitle	= {Proceedings of the 12th  International Conference on
    		  Software Engineering },
      pages		= {123--124},
      month		= mar,
      year		= {1990},
      abstract	= {The reengineering of old programs is approached as a
    		  purely technical problem. The relevance of organizational
    		  aspects is pointed out, and the needed tools are indicated.
    		  The ideal environment should allow the description of the
    		  structure of the organization; the description of the
    		  software development cycle; the description of the
    		  procedural rules for configuration, version, and change
    		  management and control; a collection of tools for measuring
    		  properties of the software; tools for helping in decisions
    		  on the basis of the measures obtained on a product; and a
    		  collection of tools for supporting technical activities
    		  (specifications, design, coding, debugging, etc.).},
      class		= {Reengineering_in_General, Fundamentals}
    }
    
    
    The Three Rs of Software Automation: Reengineering, Repository, and Reusability, C. McClure
    @Book{		  mcclure:three,
      author	= {C. McClure},
      title		= {The Three Rs of Software Automation: Reengineering,
    		  Repository, and Reusability},
      publisher	= {Engelwood Cliffs},
      year		= {1992},
      address	= {New Jersey},
      class		= {Reengineering_in_General, Introductions_to_Reengineering}
    }
    
    
    Reverse Engineering - not yet?, R. McGill
    @InBook{	  mcgill:reverse,
      author	= {R. McGill},
      pages		= {245-252},
      title		= {Reverse Engineering - not yet?},
      series	= {Software Reuse and Reverse Engineering in Practice},
      class		= {Reengineering_in_General,
    		  The_Pros_and_Cons_and_Risks_of_Reengineering}
    }
    
    
    Assessment of the Options for Hardware Software Reengineering of two KSG/GfS Full Scope Simulators, Peter Meltz
    @InProceedings{	  meltz:assessment,
      author	= {Peter Meltz},
      title		= {Assessment of the Options for Hardware Software
    		  Reengineering of two KSG/GfS Full Scope Simulators},
      booktitle	= {1st  European Conference on Software Maintenance and
    		  Reengineering 97},
      month		= mar,
      year		= {1997},
      publisher	= {IEEE Computer Society Press},
      abstract	= {Due to the problems in maintaining software and hardware
    		  it was tried to port the individual software of two
    		  powerplant simulators onto new hardware platforms within a
    		  reeingineering project. The examinations that had been
    		  carried out surprisingly lead to the result, that the least
    		  risky, most economic and best result would not be achieved
    		  by reengineering but by newly generating the software on
    		  the base of actual powerplant data. },
      class		= {Reengineering_in_General, Experiences}
    }
    
    
    Software Reengineering: Getting Done is Twice the Fun, J. Cris Miller
    @Article{	  miller:software,
      author	= {J. Cris Miller},
      title		= {Software Reengineering: Getting Done is Twice the Fun},
      year		= {1987},
      pages		= {171-178},
      class		= {Reengineering_in_General,
    		  The_Pros_and_Cons_and_Risks_of_Reengineering}
    }
    
    
    Domain Analysis for Transformational Reuse, Melody Moore and Spencer Rugaber
    Available as
    Melody.Moore.
    @InProceedings{	  moore.rugaber:domain,
      author	= {Melody Moore and Spencer Rugaber},
      title		= {Domain Analysis for Transformational Reuse},
      booktitle	= {Proceedings of the Fourth Working Conference on Reverse
    		  Engineering},
      publisher	= {IEEE Computer Society Press Los Alamitos California},
      year		= {1997},
      editor	= {Ira Baxter and Alex Quilici and Chris Verhoef},
      month		= {October},
      url		= {http://www.cc.gatech.edu/fac/Melody.Moore},
      abstract	= {Domain analysis is an effective technique for enabling
    		  both reuse and reverse engineering. This paper shows how
    		  domain analysis can provide a framework for combining
    		  reverse engineering and forward engineering to implement
    		  transformational reuse for information system user
    		  interfaces.},
      keywords	= {Reverse engineering domain analysis user interfaces
    		  reuse},
      class		= {Software_Evolution Reengineering_in_General
    		  User_Interface_Migration Software_Reverse_Engineering
    		  Model_Generating Reverse_Specification Re-Design
    		  Domain_Analysis Alteration }
    }
    
    
    Using Knowledge Representation to Understand Interactive Systems, Melody Moore and Spencer Rugaber
    Available as
    Melody.Moore.
    @InProceedings{	  moore.rugaber:using,
      author	= {Melody Moore and Spencer Rugaber},
      title		= {Using Knowledge Representation to Understand Interactive
    		  Systems},
      booktitle	= {Proceedings of the Fifth International Workshop on Program
    		  Comprehension (IWPC)},
      publisher	= {IEEE Computer Society Press},
      month		= {May},
      url		= {http://www.cc.gatech.edu/fac/Melody.Moore},
      keywords	= {knowledge representation reverse engineering user
    		  interfaces},
      class		= {Reengineering_in_General User_Interface_Migration
    		  Software_Reverse_Engineering Reverse_Specification
    		  Re-Design Domain_Analysis Alteration }
    }
    
    
    Representation Issues for Reengineering Interactive Systems, Melody Moore
    Available as
    Melody.Moore.
    @Article{	  moore:representation,
      author	= {Melody Moore},
      title		= {Representation Issues for Reengineering Interactive
    		  Systems},
      journal	= {ACM Computing Surveys},
      year		= {1996},
      volume	= {28},
      number	= {4es},
      month		= {December},
      url		= {http://www.cc.gatech.edu/fac/Melody.Moore},
      keywords	= {representation user interface reengineering modeling},
      class		= {Reengineering_in_General User_Interface_Migration
    		  Software_Reverse_Engineering Model_Generating
    		  Reverse_Specification Re-Design Alteration
    		  Intermediate_Representations_of_Source_Code }
    }
    
    
    Rule-based Detection for Reengineering User Interfaces, Melody Moore
    Available as
    Melody.Moore.
    @InProceedings{	  moore:rule-based,
      author	= {Melody Moore },
      title		= {Rule-based Detection for Reengineering User Interfaces},
      booktitle	= {Proceedings of the Third Working Conference on Reverse
    		  Engineering (WCRE)},
      publisher	= {IEEE Computer Society Press},
      year		= {1996},
      month		= {November},
      url		= {http://www.cc.gatech.edu/fac/Melody.Moore},
      keywords	= {reverse engineering user interfaces rule base knowledge
    		  representations},
      class		= {Reengineering_in_General User_Interface_Migration
    		  Software_Reverse_Engineering Model_Generating
    		  Reverse_Specification Re-Design Alteration }
    }
    
    
    A Technique for Reverse Engineering User Interfaces, Melody Moore
    @InProceedings{	  moore:technique,
      author	= {Melody Moore},
      title		= {A Technique for Reverse Engineering User Interfaces},
      booktitle	= {Proceedings of the Fourth Reverse Engineering Forum},
      publisher	= {IEEE Computer Society},
      year		= {1994},
      month		= {November},
      note		= {Presentation slides available},
      class		= {Reengineering_in_General User_Interface_Migration
    		  Re-Design Alteration }
    }
    
    
    Special Issue on ''Case Tools for Reverse Engineering'', N.N.
    @Misc{		  n:special,
      author	= {N.N.},
      key		= {Case Outlook},
      title		= {Special Issue on ''Case Tools for Reverse Engineering''},
      journal	= {Case Outlook},
      volume	= {2},
      number	= {2},
      pages		= {1-15},
      year		= {1988},
      class		= {Reengineering_Tools, Software_Reverse_Engineering,
    		  Software_Reverse_Engineering_Tools,
    		  Reengineering_in_General, Fundamentals}
    }
    
    
    Debugging Practices for Complex Legacy Systems, Elaine Regelson and Andrew Anderson
    @InProceedings{	  regelson.anderson:debugging,
      key		= {Regelson \& Anderson, 1994},
      author	= {Elaine Regelson and Andrew Anderson},
      title		= {Debugging Practices for Complex Legacy Systems},
      pages		= {137-143},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1994},
      year		= {1994},
      publisher	= {IEEE Computer Society Press},
      month		= sep,
      abstract	= {Modern software development can require large numbers of
    		  people over long periods of time to create complex
    		  products. Industry trends showing rapid movement of people
    		  between companies and job assignments and use of
    		  specialized software maintenance groups for all maintenance
    		  activities frequently mean that the software engineers
    		  supporting (debugging, fixing, enhancing, and completing)
    		  products were not involved in the original design or
    		  coding. Hence it is important for engineers to be able to
    		  quickly find defects in unfamiliar code and to safely make
    		  changes. This paper describes results from an industrial
    		  survey initiated to collect information about software
    		  debugging and maintenance best practices. It describes
    		  failure reproduction, defect isolation, and debugging
    		  practices and tools. The paper is based on numerous actual
    		  examples and results of problem solving and exercices.},
      class		= {Reengineering_in_General, Experiences}
    }
    
    
    On reverse engineering, M. Rekoff
    @Article{	  rekoff:on,
      title		= {On reverse engineering},
      author	= {M. Rekoff},
      journal	= {{IEEE} Transactions on Systems, Man and Cybernetics},
      volume	= {3/4},
      pages		= {244-252},
      year		= {1985},
      note		= { This paper is a tutorial on reverse engineering that
    		  defines some key notions},
      class		= {Reengineering_in_General, Fundamentals}
    }
    
    
    Reverse-engineering someone else's software: is it legal?, P. Samuelson
    @Article{	  samuelson:reverse-engineering,
      title		= {Reverse-engineering someone else's software: is it
    		  legal?},
      author	= {P. Samuelson},
      journal	= {{IEEE} Software},
      volume	= {7},
      number	= {1},
      pages		= {90--96},
      year		= {1990},
      note		= { The legal issues concerning reverse engineering are
    		  discussed: does reverse engineering software infringe
    		  intellectual-property law?{}},
      class		= {Reengineering_in_General, Legality}
    }
    
    
    Introduction to the special section on software maintenance, N. Schneidewind
    @Article{	  schneidewind:introduction,
      title		= {Introduction to the special section on software
    		  maintenance},
      author	= {N. Schneidewind},
      journal	= {{IEEE} Transactions on Software Engineering},
      volume	= {{SE}-13},
      number	= {3},
      pages		= {301},
      year		= {1987},
      note		= { This preface introduces a special section on software
    		  maintenance},
      class		= {Reengineering_in_General, Fundamentals}
    }
    
    
    The state of software maintenance, N. Schneidewind
    @Article{	  schneidewind:state,
      title		= {The state of software maintenance},
      author	= {N. Schneidewind},
      journal	= {{IEEE} Transactions on Software Engineering},
      volume	= {{SE}-13},
      number	= {3},
      pages		= {303--310},
      year		= {1987},
      note		= { An overview of the state of the art in software
    		  maintenance and criticizes the apparent disinterest in the
    		  research field is provided},
      class		= {Reengineering_in_General, Fundamentals}
    }
    
    
    A Reverse and Re--Engineering Tool Classification Scheme, David Sharon
    @Article{	  sharon:reverse,
      key		= {Sharon},
      author	= {David Sharon},
      title		= {A Reverse and Re--Engineering Tool Classification Scheme},
      pages		= {Rev-3--Rev5},
      journal	= {Reverse Engineering Newsletter},
      year		= {1990},
      month		= {},
      inhalt	= { Eine Taxonomie für Werkzeuge des Reverse Engineerings
    		  wird angegeben.
    		  
    		  1. Existierende Systeme Untersucht wird ein vorhandenes
    		  System auf der Code-Ebene und Informationen auf höherer
    		  Abstraktionsebene zur Verfügung gestellt.
    		  
    		  1.1 Enhancement Die Werkzeuge unterstützen das Verständnis
    		  eines Programmes, bevor es geändert wird.
    		  
    		  1.2 Assessment Der Quellcode des Systems wird bezüglich
    		  Industriemetriken vermessen.
    		  
    		  1.3 Conditioning Die Werkzeuge automatisieren den
    		  Verbesserungsproze/3 eines Systems. Oft wird Quellcode in
    		  eine strukturierte Form transformiert.
    		  
    		  2.0 Repository Load/Enhancement and Reconciliation Daten-
    		  und proze/3bezogener Quellcode wird gelesen und übersetzt
    		  in das Informationsmodell eines anderen Zielrepository. },
      class		= {Reengineering_Tools, Software_Reverse_Engineering,
    		  Software_Reverse_Engineering_Tools,
    		  Reengineering_in_General, Fundamentals}
    }
    
    
    A Simulation Model for Performance Evaluation when Migrating a Legacy System, P. Pinheiro da Silva and A. H. F. Laender and P. B. Golgher
    Available as
    postscript.
    @InProceedings{	  silva.laender.ea:a-simulation-model-for-performance-evaluation-when-migrating-a-legacy-system,
      author	= {P. Pinheiro da Silva and A. H. F. Laender and P. B.
    		  Golgher},
      title		= {{A Simulation Model for Performance Evaluation when
    		  Migrating a Legacy System}},
      booktitle	= {Proceedings of CSMR'01},
      editor	= {P. Souza and J. Ebert},
      year		= {2001},
      publisher	= {IEEE Computer Society},
      address	= {Lisbon, Portugal},
      month		= {March},
      pages		= {210--215},
      url		= {http://www.cs.man.ac.uk/~pinheirp/capples/csmr2001.ps},
      class		= {Reengineering_in_General,
    		  The_Pros_and_Cons_and_Risks_of_Reengineering }
    }
    
    
    CAPPLES - A Capacity Planning and Performance Analysis Method for the Migration of Legacy Systems, P. Pinheiro da Silva and A. H. F. Laender and R. Resende and P. B. Golgher
    Available as
    postscript.
    @InProceedings{	  silva.laender.ea:capples--a-capacity-planning-and-performance-analysis-method-for-the-migration-of-legacy-systems,
      author	= {P. Pinheiro da Silva and A. H. F. Laender and R. Resende
    		  and P. B. Golgher},
      title		= {{CAPPLES - A Capacity Planning and Performance Analysis
    		  Method for the Migration of Legacy Systems}},
      booktitle	= {Advances in Conceptual Modeling},
      editor	= {P. Chen and D. Embley and J. Kouloumdjian and S. Liddle
    		  and J. Roddick},
      volume	= {1727},
      series	= {LNCS},
      year		= {1999},
      publisher	= {Springer},
      address	= {Paris, France},
      month		= {November},
      pages		= {198--212},
      url		= {http://www.cs.man.ac.uk/~pinheirp/capples/reis1999.ps},
      class		= {Reengineering_in_General,
    		  The_Pros_and_Cons_and_Risks_of_Reengineering }
    }
    
    
    Characterizing a Synthetic Workload for Performance Evaluation during the Migration of a Legacy System, P. Pinheiro da Silva and A. H. F. Laender and R. Resende and P. B. Golgher
    Available as
    postscript.
    @InProceedings{	  silva.laender.ea:characterizing-a-synthetic-workload-for-performance-evaluation-during-the-migration-of-a-legacy-system,
      author	= {P. Pinheiro da Silva and A. H. F. Laender and R. Resende
    		  and P. B. Golgher},
      title		= {{Characterizing a Synthetic Workload for Performance
    		  Evaluation during the Migration of a Legacy System}},
      booktitle	= {Proceedings of CSMR2000},
      editor	= {J. Ebert and C. Verhoef},
      year		= {2000},
      publisher	= {IEEE Computer Society},
      address	= {Zurich, Switzerland},
      month		= {February},
      pages		= {173--181},
      url		= {http://www.cs.man.ac.uk/~pinheirp/capples/csmr2000.ps},
      class		= {Reengineering_in_General,
    		  The_Pros_and_Cons_and_Risks_of_Reengineering }
    }
    
    
    Um Estudo Sobre a Migra\cc\~ao de Sistemas Legados Centralizados para Ambientes Distribu\'\idos, P. Pinheiro da Silva
    Available as
    postscript.
    @MastersThesis{	  silva:um,
      author	= {P. Pinheiro da Silva},
      title		= {Um Estudo Sobre a Migra\c{c}\~ao de Sistemas Legados
    		  Centralizados para Ambientes Distribu\'{\i}dos},
      school	= {Departamento de Ci\^encia da Computa\c{c}\~ao,
    		  Universidade Federal de Minas Gerais},
      year		= {1998},
      month		= {June},
      note		= {(In Portuguese)},
      url		= {http://www.cs.man.ac.uk/~pinheirp/capples/ppmsc1998.ps},
      class		= {Reengineering_in_General,
    		  The_Pros_and_Cons_and_Risks_of_Reengineering }
    }
    
    
    Reengineering to Reduce System Maintenance: A Case Study, M. Slovin and S. Malik
    @Article{	  slovin.malik:reengineering,
      author	= {M. Slovin and S. Malik},
      title		= {Reengineering to Reduce System Maintenance: A Case Study},
      journal	= {IEEE Transactions on Software Engineering},
      year		= {1991},
      month		= {July/August},
      pages		= {14-24},
      class		= {Reengineering_in_General, Experiences}
    }
    
    
    A study on the Effect of Reengineering on Maintainability, Harry M. Sneed and Agnes Kaposi
    @InProceedings{	  sneed.kaposi:study,
      author	= {Harry M. Sneed and Agnes Kaposi},
      title		= {A study on the Effect of Reengineering on
    		  Maintainability},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1990},
      year		= {1990},
      pages		= {91-99},
      organization	= {IEEE},
      publisher	= {IEEE Computer Society Press},
      abstract	= {The report presented here on the effect of reengineering
    		  upon software maintainablility stems from a laboratory
    		  experiment conducted within the METKIT research project of
    		  the European ESPRIT program for the study and promotion of
    		  the use of metrics in Software-Engineering. The experiment
    		  was conducted as a case study in measuring software
    		  complexity and maintainablility. However, the results also
    		  serve to assess the benefits of reengineering old programs.
    		  Maintainability is defined as the effort to perform
    		  maintenance tasks, the impact domain of the maintenance
    		  actions and the error rate caused by those actions.
    		  Complexity is defined as a combination of code, data, data
    		  flow, structure, and control flow metrics. From the data
    		  collected it demonstrates that reengineering can decrease
    		  complexity and increase maintainability, but that
    		  restructuring has only a minor effect on maintainability.},
      class		= {Reengineering_in_General, Experiences,
    		  Software_Reverse_Engineering, Reverse_Design,
    		  Metric-Based_Methods_in_Reverse_Design, Metrics,
    		  Maintenance_Metrics}
    }
    
    
    Bank Application Reengineering and Conversion at the Union Bank of Switzerland, Harry M. Sneed
    @InProceedings{	  sneed:bank,
      author	= {Harry M. Sneed},
      title		= {Bank Application Reengineering and Conversion at the Union
    		  Bank of Switzerland},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1991},
      year		= {1991},
      pages		= {60-72},
      organization	= {IEEE},
      publisher	= {IEEE Computer Society Press},
      abstract	= {This paper describes a large software reengineering
    		  project at the Union Bank of Switzerland. Seven bank
    		  applications with 203 programs and 432 files were renovated
    		  and migrated from a UNIVAC-494 to a UNISYS-1100. The
    		  programs were restructured to fit a JSP-DELTA generator.
    		  The data was remodelled to fit into a CODASYL database with
    		  a data dictionary and a common COPY library.},
      class		= {Reengineering_in_General, Experiences}
    }
    
    
    Measuring the Performance of a Software Maintenance Department, Harry M. Sneed
    @InProceedings{	  sneed:measuring,
      author	= {Harry M. Sneed},
      title		= {Measuring the Performance of a Software Maintenance
    		  Department},
      booktitle	= {1st  European Conference on Software Maintenance and
    		  Reengineering 97},
      month		= mar,
      year		= {1997},
      publisher	= {IEEE Computer Society Press},
      class		= {Reengineering_in_General, Experiences}
    }
    
    
    Planning the Reengineering of Legacy Systems, H. Sneed
    @Article{	  sneed:planning,
      author	= {H. Sneed},
      title		= {Planning the Reengineering of Legacy Systems},
      journal	= {IEEE Software},
      year		= {1995},
      volume	= {12},
      number	= {1},
      pages		= {24-33},
      month		= {January},
      class		= {Reengineering_in_General, Process_Models, Management}
    }
    
    
    Software Renewal: A Case Study, Harry M. Sneed
    @Article{	  sneed:software,
      author	= {Harry M. Sneed},
      title		= {Software Renewal: A Case Study},
      journal	= {IEEE Software},
      year		= {1984},
      pages		= {56-63},
      month		= jul,
      class		= {Reengineering_in_General, Experiences}
    }
    
    
    Transferring Re-engineering Technology to a Software Development and Maintenance Organization: an Experience Report, Mary Solinger and Andre Engberts and Jim Q. Ning
    @InProceedings{	  solinger.engberts.ea:transferring,
      author	= {Mary Solinger and Andre Engberts and Jim Q. Ning},
      title		= {Transferring Re-engineering Technology to a Software
    		  Development and Maintenance Organization: an Experience
    		  Report},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1994},
      year		= {1994},
      pages		= {100-108},
      publisher	= {IEEE Computer Society Press},
      month		= sep,
      abstract	= {Technology transfer does not happen spontaneously after
    		  resaerch results and prototypes have been demostrated.
    		  Resaerchers need to get more actively invovled in ``pushing
    		  technology out of the door.'' This paper describes an
    		  experiment that we conducted in 1993 to facilitate
    		  technology transfer. There are two aspects of this
    		  experiment: 1) the integration of a re-engineering process
    		  into an existing software development and maintenance
    		  organization and 2) the evaluation of a research prototype
    		  in a ``real world'' situation. The experiment resulted in
    		  recommendations on adapttation of the tool functionality
    		  and on a configuration for use by different teams within
    		  the target organization.},
      class		= {Reengineering_in_General, Experiences}
    }
    
    
    The Dimensions of Management, E. Burton Swanson
    @Article{	  swanson:dimensions,
      author	= {E. Burton Swanson},
      title		= {The Dimensions of Management},
      pages		= {492-497},
      class		= {Reengineering_in_General, Management}
    }
    
    
    Automating Language Conversion: a Case Study, Andrey A.Terekhov
    Available as
    AutomatingLanguageConversion.pdf.
    @InProceedings{	  terekhov:automating,
      author	= {Andrey A.Terekhov},
      title		= {Automating Language Conversion: a Case Study},
      booktitle	= {IEEE International Conference on Software Maintenance},
      publisher	= {IEEE Computer Society Press},
      year		= {2001},
      pages		= {654-658},
      month		= {November},
      url		= {http://users.tepkom.ru/ddt/Articles/AutomatingLanguageConversion.pdf}
    		  ,
      abstract	= {Language conversion is a laborious process. Achieving the
    		  maximum efficiency of conversion without compromising the
    		  quality of converted system is the programmers' dream. This
    		  paper illustrates the quest for this trade-off by a case
    		  study. We consider an industrial reengineering project,
    		  which included translation of a client/server system
    		  written in a proprietary language into two different
    		  programming languages. We also discuss various factors that
    		  affect the automation level of language conversions. },
      keywords	= {language conversion, automation },
      note		= {There's also an extended version of this paper; it is
    		  available on the Web at
    		  http://users.tepkom.ru/ddt/alc.pdf},
      class		= {Reengineering_in_General Re-Code
    		  Source-to-Source-Translatio
    		  The_Pros_and_Cons_and_Risks_of_Reengineering
    		  Program_Transformations Alteration Experiences }
    }
    
    
    Management Decision Support Through Reverse Engineering Technology, Scott R. Tilley
    @InProceedings{	  tilley:management,
      key		= {Tilley, 1992},
      author	= {Scott R. Tilley},
      title		= {Management Decision Support Through Reverse Engineering
    		  Technology},
      booktitle	= {Proceedings of CASCON'92},
      year		= {1992},
      pages		= {319-328},
      month		= nov,
      abstract	= {Managers of large software systems face enormous
    		  challenges when it comes to making informed project-related
    		  decisions. They require a high-level understanding of the
    		  entire system and in-septh information on selected
    		  components. Unfortunately, many software systems are so
    		  comples and/or old that such information is not readily
    		  available. Reverse engineering - the process of extracting
    		  system abstractions and design information from existing
    		  software systems - can provide some of this missing
    		  information. This paper outlines how a software system can
    		  benefit from reverse engineering, and describes how
    		  management personnel can use the information provided by
    		  this process as an aid in making informed decisions related
    		  to large software projects.},
      class		= {Reengineering_in_General, Management}
    }
    
    
    Re-devolpment Engineering: Formulating an Information Blueprint for the 1990's, William M. Ulrich
    @Article{	  ulrich:re-devolpment,
      author	= {William M. Ulrich},
      title		= {Re-devolpment Engineering: Formulating an Information
    		  Blueprint for the 1990's},
      journal	= {Case Outlook},
      year		= {1990},
      pages		= {15-23},
      month		= feb,
      class		= {Reengineering_in_General}
    }
    
    
    Maintenance Support for Object-Oriented Programs, N. Wilde and R. Huitt
    @Article{	  wilde.huitt:maintenance,
      author	= {N. Wilde and R. Huitt},
      title		= {Maintenance Support for Object-Oriented Programs},
      journal	= {IEEE Transactions on Software Engineering},
      volume	= {18},
      number	= {12},
      pages		= {1038-1044},
      year		= {1992},
      class		= {Reengineering_in_General}
    }
    
    
    The Reverse Engineering Notebook, Kenny Wong
    @PhDThesis{	  wong:reverse,
      author	= {Kenny Wong},
      title		= {The Reverse Engineering Notebook},
      school	= {University of Victoria},
      year		= {1999},
      abstract	= {Software must evolve over time or it becomes useless. Much
    		  of software production today is involved not in creating
    		  wholly new code from scratch but in maintaining and
    		  building upon existing code. Much of this code resides in
    		  old legacy software systems.
    		  
    		  Unfortunately, these systems are often poorly documented.
    		  Typically, they become more complex and difficult to
    		  understand over time. Thus, there is a need to better
    		  understand existing software systems. An approach toward
    		  this problem would be a first step toward easing changes
    		  and extending the continuous evolution of these systems.
    		  
    		  This dissertation addresses the problem by enabling
    		  continuous software understanding. There should be a base
    		  of reverse engineering abstractions that are carried
    		  forward during evolution.
    		  
    		  The proposed approach seeks to redocument existing software
    		  structure, capture the analysis decisions made, and support
    		  personal, customizable, and live perspectives of the
    		  software in an online journal called the Reverse
    		  Engineering Notebook.
    		  
    		  The premise that software reverse engineering be applied
    		  continuously throughout the lifetime of the software has
    		  major tool design implications. Thus, tool integration,
    		  process, and adoption are key issues for the Notebook. In
    		  particular, data integration requirements, control
    		  integration via pervasive scripting, presentation
    		  integration through the management of views, user roles,
    		  methodology, end user needs, and goal-directed framework
    		  for the Notebook are described.
    		  
    		  A major theme of the dissertation is learning from the
    		  successes and failures of studies involving tool
    		  integration and reverse engineering technologies. Case
    		  studies and user experiments helped to evaluate various
    		  aspects of the Notebook approach and provide feedback into
    		  software understanding tool requirements.
    		  
    		  },
      keywords	= {reverse engineering, program understanding, tool
    		  requirements},
      class		= {Interoperability Reengineering_in_General Using_graphs
    		  Reverse_Engineering_Tools Rig Process_Models
    		  Software_Reverse_Engineering
    		  Intermediate_Representations_of_Source_Code Experiences }
    }
    
    
    An Architecture for Interoperable Program Understanding Tools, Steven Woods and Liam O'Brien and Tao Lin and Keith Gallagher and Alex Quilici
    @InProceedings{	  woods.obrien.ea:architecture,
      author	= {Steven Woods and Liam O'Brien and Tao Lin and Keith
    		  Gallagher and Alex Quilici},
      title		= {An Architecture for Interoperable Program Understanding
    		  Tools},
      booktitle	= {Euromicro Conference on Software Maintenance and
    		  Reengineering},
      year		= {1999},
      publisher	= {Euromicro},
      class		= {Reengineering_in_General, Interoperability}
    }
    
    
    Tackling the Abstraction Problem for Reverse Engineering in a System Re-engineering Approach, Hongji Yang and Xiaodong Liu and Hussein Zedan
    @InProceedings{	  yang.liu.ea:tackling,
      author	= {Hongji Yang and Xiaodong Liu and Hussein Zedan},
      title		= {Tackling the Abstraction Problem for Reverse Engineering
    		  in a System Re-engineering Approach},
      booktitle	= {proceedings of the IEEE Conference on Software Maintenance
    		  (ICSM'98)},
      publisher	= {IEEE Computer Society},
      year		= {1998},
      address	= {Washington D.C., USA},
      month		= {November},
      abstract	= {It is widely accepted that reverse engineering has three
    		  components: restructuring, comprehension and production of
    		  formal specification. In this paper, we advocate that the
    		  three components could be achieved in a {\bf systematic}
    		  approach by successfully applying a series of sound rules.
    		  
    		  The key approach to comprehension and the production of
    		  formal specification is a notion of abstraction.
    		  Abstraction is often interpreted as the act of hiding
    		  irrelevant details. What constitute as relevant details is
    		  often left open to different interpretations.
    		  
    		  A unified approach for reverse engineering is described
    		  within which the notion of abstraction is classified and
    		  precisely defined. Abstraction rules are given and applied
    		  to various small examples. },
      keywords	= {reverse engineering, re-engineering, wide spectrum
    		  language, abstraction, object oriented, Interval Temporal
    		  Logic. },
      class		= {Reengineering_in_General Software_Reverse_Engineering
    		  Reverse_Specification Formal_Methods Reverse_Design
    		  Process_Models }
    }
    
    
    The ReDo compendium: reverse engineering for software maintenance, Zuylen, H. van (Ed)
    @Book{		  zuylen:redo,
      title		= {The {R}e{D}o compendium: reverse engineering for software
    		  maintenance},
      editor	= {Zuylen, H. van},
      publisher	= {Wiley},
      year		= {1993},
      note		= {Gives an overview of the results of the REDO project and
    		  covers most aspects of reverse engineering. Various
    		  approaches are discussed: (a) compilation of COBOL programs
    		  to equational specifications, restructuring and
    		  simplification of these specifications, and regeneration of
    		  COBOL code from them; (b) compilation of COBOL to UNIFORM,
    		  an intermediate language supporting all features of both
    		  COBOL and JCL; (c) compilation of COBOL to COBOL-IF, a
    		  simplified syntactic representation of COBOL programs; (d)
    		  abstraction of the meaning of COBOL code in the form of Z++
    		  specifications. Various experimental tools providing
    		  partial support for the above techniques are discussed. The
    		  results described in this book should be considered as
    		  useful experiments. Since the techniques have not been
    		  applied to a number of large scale projects the method does
    		  not yet constitute a mature reverse engineering
    		  methodology},
      class		= {Reengineering_in_General, Fundamentals}
    }
    

koschke@informatik.uni-stuttgart.de (Feedback).
Copyright © 1998-2000 University of Stuttgart, Germany. $Revision: 1.5 $
Date: Sat Nov 21 22:09:00 CET 2009