References of Alteration

    An Experiment on the Effect of Design Recording on Impact Analysis , F. Abbattista and F. Lanubile and G. Mastelloni and G. Visaggio
    @InProceedings{	  abbattista.lanubile.ea:experiment,
      author	= { F. Abbattista and F. Lanubile and G. Mastelloni and G.
    		  Visaggio },
      title		= { An Experiment on the Effect of Design Recording on Impact
    		  Analysis },
      booktitle	= { Proceedings of the International Conference on Software
    		  Maintenance (ICSM~'94), {\rm (Victoria, B.C.; Sept. 19-23,
    		  1994)}},
      year		= { September 1994 },
      editor	= { Hausi A. M\"{u}ller and Mari Georges },
      pages		= { 253-259 },
      abstract	= { },
      class		= {Alteration, Change_Impact }
    }
    
    
    Software Change Analysis via Attributed Dependency Graphs, Al-Zoubi, R. and Prakash, A.
    @TechReport{	  al-zoubi.prakash:software,
      author	= {Al-Zoubi, R. and Prakash, A.},
      title		= {Software Change Analysis via Attributed Dependency
    		  Graphs},
      year		= {1991},
      month		= {May},
      number	= {CSE-TR-95-91},
      institution	= {Department of EECS, University of Michigan},
      class		= {Alteration, Change_Impact,Software_Reverse_Engineering,
    		  Reverse_Design, Fundamental_Methods_in_Reverse_Design,
    		  Static_Analysis }
    }
    
    
    Attributed Graph-Based Representations for Software View Generation and Impact-of-Change Analysis, Ratib H. Al-Zoubi
    @PhDThesis{	  al-zoubi:attributed,
      author	= {Ratib H. Al-Zoubi},
      title		= {Attributed Graph-Based Representations for Software View
    		  Generation and Impact-of-Change Analysis},
      school	= {The University of Michigan},
      year		= {1992},
      abstract	= {Great ref. on change analysis; mostly PITS. Good related
    		  work info. Tool is called SCAN.},
      class		= {Alteration, Change_Impact,Software_Reverse_Engineering,
    		  Reverse_Design, Fundamental_Methods_in_Reverse_Design,
    		  Software_Reverse_Engineering,
    		  Intermediate_Representations_of_Source_Code, Using_graphs}
    }
    
    
    Inter-Module Renaming and Reorganizing: Examples of Program Manipulation in-the-Large, Manuel M. Ammann and Robert D. Cameron
    @InProceedings{	  ammann.cameron:inter-module,
      author	= {Manuel M. Ammann and Robert D. Cameron},
      title		= {Inter-Module Renaming and Reorganizing: Examples of
    		  Program Manipulation in-the-Large},
      pages		= {354-361},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1994},
      year		= {1994},
      publisher	= {IEEE Computer Society Press},
      month		= sep,
      abstract	= {Maintaining software often requires repetetive and
    		  errorprone manipulations of source code, particularly when
    		  changes must be propagated across many modules. Practical
    		  program manipulation tools can alleviate the problems by
    		  automatically making changes throughout a program. Such
    		  tools can become even more valuable when they allow for
    		  manipulation in-the-large: the systematic modification of
    		  all the modules that comprise a software project. We
    		  demonstrate this concept with two prototype tools. An
    		  inter-module renamer locates and renames all and only
    		  appropriate instances of an identifier throughout a
    		  project, ensuring that no conflicts arise. An inter-module
    		  reorganizer automates the task of moving program entities
    		  between modules such that import/export declarations are
    		  properly updated for modules dependent on the moved entity
    		  and for items on which the moved entity is dependent. Our
    		  tools are designed for modern block-structured and
    		  object-oriented languages such as Modula-3.},
      class		= {Alteration, Re-Design, Inter-module_Reorganization}
    }
    
    
    A Control-flow normalization algorithm and its complexity, Z. Ammarguellat
    @Article{	  ammarguellat:control-flow,
      title		= {A Control-flow normalization algorithm and its
    		  complexity},
      author	= {Z. Ammarguellat},
      journal	= {{IEEE} Transactions on Software Engineering},
      volume	= {18},
      number	= {3},
      pages		= {237--251},
      year		= {1992},
      note		= { A simple method is presented for normalizing the
    		  control-flow of programs to facilitate program
    		  transformations, program analysis, and automatic
    		  parallelization. This method does not make use of code
    		  replication. The normalization results in a restructuring
    		  of the code that obviates the need for control dependency
    		  relations},
      class		= {Alteration, Re-Code, Control_Flow_Normalization}
    }
    
    
    PAT: A Retargetable Parallelizing Tool for Fortran, Bill Appelbe and Kevin Smith
    @InProceedings{	  appelbe.smith:pat,
      author	= {Bill Appelbe and Kevin Smith},
      title		= {PAT: A Retargetable Parallelizing Tool for Fortran},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1990},
      year		= {1990},
      pages		= {357-359},
      organization	= {IEEE},
      publisher	= {IEEE Computer Society Press},
      abstract	= {PAT (Parallelization Assistant Tool) is retargetable tool
    		  that converts sequential Fortran to Parallel Fortran, for
    		  IBM, Cray, and Sequent multiprocessors. It runs on a range
    		  of UNIX workstations, using X windows to display source
    		  code, program analysis and tranformation. PAT is intended
    		  to help programmers convert their program from sequential
    		  to parallel code, while simultaneously educating them in
    		  exploiting and understanding applications level and
    		  architectural parallelism. PAT has been installed at a
    		  range of sites for over a year. This paper reports upon
    		  experiences with PAT, limitations of it's approach, future
    		  development and use of PAT's analysis for other tools.},
      class		= {Alteration, Re-Design,
    		  From_Sequential_to_Concurrent_Execution}
    }
    
    
    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}
    }
    
    
    Impact Analysis - Towards a Framework for Comparison, Robert S. Arnold and Shawn A. Bohner
    @InProceedings{	  arnold.bohner:impact,
      author	= {Robert S. Arnold and Shawn A. Bohner},
      title		= {Impact Analysis - Towards a Framework for Comparison},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1993},
      year		= {1993},
      publisher	= {IEEE Computer Society Press},
      month		= sep,
      pages		= {292-301},
      abstract	= {The term ``impact analysis'' is used with many meanings.
    		  We define a three-part framework for characterizing and
    		  comparing diverse impact analysis approaches. The parts
    		  correspond to how an appraoch is used to accomplish impact
    		  analysis, how an approach does impact analysis internally,
    		  and the effectiveness of the impact analysis approach. To
    		  illustrate the frameworks's application, we classify five
    		  impact analysis approaches according to it.},
      class		= {Alteration, Change_Impact}
    }
    
    
    Using Software Maintainability Models to Track Code Health , D. Ash and J. Alderete and P.W. Oman and B. Lowther
    @InProceedings{	  ash.alderete.ea:using,
      author	= { D. Ash and J. Alderete and P.W. Oman and B. Lowther },
      title		= { Using Software Maintainability Models to Track Code
    		  Health },
      booktitle	= { Proceedings of the International Conference on Software
    		  Maintenance (ICSM~'94), {\rm (Victoria, B.C.; Sept. 19-23,
    		  1994)}},
      year		= { September 1994 },
      editor	= { Hausi A. M\"{u}ller and Mari Georges },
      pages		= { 154-160 },
      abstract	= { },
      class		= {Alteration, Maintainability }
    }
    
    
    The translation of GOTO programs into WHILE programs, E. Ashcroft and Z. Manna
    @InProceedings{	  ashcroft.manna:translation,
      title		= {The translation of GOTO programs into WHILE programs},
      author	= {E. Ashcroft and Z. Manna},
      booktitle	= {Proceedings of {IFIP} Congress 71},
      editor	= {C.V. Freiman and J.E. Griffith and J.L. Rosenfeld},
      volume	= {1},
      pages		= {250--255},
      publisher	= {North-Holland},
      year		= {1972},
      note		= { It is shown that every flowchart program can be written
    		  without go to statements by using while statements. The
    		  transformation does not give rise to less efficient
    		  programs and, moreover, the structure of the original
    		  flowchart program is preserved},
      class		= {Alteration, Re-Code, Control_Flow_Normalization}
    }
    
    
    CASE Support for Software Evolution: A Dependency Approach to Control the Change Process, Giovanna Avellis
    @InProceedings{	  avellis:case,
      author	= {Giovanna Avellis},
      title		= {{CASE} Support for Software Evolution: A Dependency
    		  Approach to Control the Change Process},
      booktitle	= {{CASE'92}: Proceedings of the fifth international workshop
    		  on computer-aided software engineering, {\rm (Montr\'{e}al,
    		  Qu\'ebec; July 6-10, 1992)}},
      year		= {July 1992},
      pages		= {62-73},
      publisher	= {IEEE Computer Society Press (Order Number 2960)},
      abstract	= {},
      class		= {Alteration, Change_Impact }
    }
    
    
    Exploiting design heuristics for automatic problem detection, Holger B\ar and Oliver Ciupke
    @InProceedings{	  bar.ciupke:exploiting*1,
      author	= {Holger B{\"a}r and Oliver Ciupke},
      editor	= {Serge Demeyer and Jan Bosch},
      title		= {Exploiting design heuristics for automatic problem
    		  detection},
      booktitle	= {Object-Oriented Technology (ECOOP'98 Workshop Reader)},
      series	= {Lecture Notes in Computer Science},
      volume	= {1543},
      publisher	= {Springer-Verlag},
      month		= jul,
      year		= {1998},
      class		= {Alteration, Re-Design, Problem_Detection}
    }
    
    
    Design Maintenance Systems, Ira D. Baxter
    @Article{	  baxter:design,
      author	= {Ira D. Baxter},
      title		= {Design Maintenance Systems},
      journal	= {Communications of the ACM},
      month		= {April},
      year		= {1992},
      volume	= {35},
      number	= {4},
      pages		= {73-89},
      abstract	= { . DMS . Advocates a transformational approach to SM at
    		  the design level. . Maintain the design, generate the
    		  implementation. . Uses TCL (!): Transformation Control
    		  Language. . "Maintenance deltas": maintenance = applying
    		  deltas to design. },
      class		= {Alteration, Re-Code, Program_Transformations }
    }
    
    
    On the Migration of Relational Schemas and Data to Object-Oriented Database Systems, Andreas Behm and Andreas Geppert and Klaus R. Dittrich
    Available as
    compressed postscript.
    @InProceedings{	  behm.geppert.ea:on,
      author	= {Andreas Behm and Andreas Geppert and Klaus R. Dittrich},
      title		= {On the Migration of Relational Schemas and Data to
    		  Object-Oriented Database Systems},
      booktitle	= {Proc. 5th International Conference on Re-Technologies for
    		  Information Systems},
      publisher	= {Oesterreichische Computer Gesellschaft},
      year		= {1997},
      editor	= {J. Györkös and M. Krisper and H.C. Mayr},
      pages		= {13-33},
      address	= {Klagenfurt, Austria},
      month		= {December},
      url		= {ftp://ftp.ifi.unizh.ch/pub/techreports/TR-97/ifi-97.10.ps.gz}
    		  ,
      abstract	= {Many organizations have collected large volumes of data
    		  which are often stored in relational databases. Now that
    		  object-oriented database management systems (OODBMSs) are
    		  becoming mature, many organizations also want to benefit
    		  from object-oriented technology in general and OODBMSs in
    		  particular. One general approach to migrate to object
    		  technology is to divide the process into two phases, where
    		  the first one transforms the relational into an
    		  object-oriented schema and the second one migrates the data
    		  into the object-oriented database system. Our approach
    		  differs from comparable approaches because it provides
    		  assistance in both phases, while other work considers only
    		  the first phase. In the first phase we use transformation
    		  rules to construct an object-oriented schema which is
    		  semantically equivalent to the relational schema. In the
    		  second phase, the schema transformation information is used
    		  to generate programs that migrate the relational data into
    		  an object-oriented database. The concepts of both, schema
    		  transformation and data migration are implemented using O2
    		  as the OODBMS.},
      keywords	= {OODBMS, Migration, Schema Transformation, Reengineering},
      class		= {Database_Migration Re-Design Alteration }
    }
    
    
    The Role of Testing and Dynamic Analysis in Program Comprehension Supports, Benedusi, P. and Benvenuto, V. and Tomacelli, L.
    @InProceedings{	  benedusi.benvenuto.ea:role,
      author	= {Benedusi, P. and Benvenuto, V. and Tomacelli, L.},
      title		= {The Role of Testing and Dynamic Analysis in Program
    		  Comprehension Supports},
      editor	= {Fadini, Bruno and Rajlich, Vaclav},
      booktitle	= {Proceedings of the IEEE Second Workshop on Program
    		  Comprehension},
      year		= {1993},
      month		= {July},
      pages		= {149-158},
      class		= {Software_Reverse_Engineering, Reverse_Design,
    		  Fundamental_Methods_in_Reverse_Design, Dynamic_Analysis,
    		  Alteration, Change_Test }
    }
    
    
    Postmaintenance Testing based on Path Change Analysis, P. Benedusi and Aniello Cimitile and De Carlini, Ugo
    @InProceedings{	  benedusi.cimitile.ea:postmaintenance,
      author	= {P. Benedusi and Aniello Cimitile and De Carlini, Ugo},
      title		= {Postmaintenance Testing based on Path Change Analysis},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1988},
      year		= {1988},
      pages		= {352-361},
      organization	= {IEEE},
      publisher	= {IEEE Computer Society Press},
      class		= {Alteration, Change_Test}
    }
    
    
    A transformation system for maintenance: turning theory into practice, K. Bennet and T. Bull and H. Yang
    @InProceedings{	  bennet.bull.ea:transformation,
      title		= {A transformation system for maintenance: turning theory
    		  into practice},
      author	= {K. Bennet and T. Bull and H. Yang},
      pages		= {146--155},
      booktitle	= {\cite{SM92}},
      year		= {1992},
      note		= { Describes the architecture of the Maintainer's Assistant,
    		  a reverse engineering tool based on program
    		  transformations. Discusses the role of metrics in selecting
    		  appropriate transformations. Also see~\cite{WB93}},
      class		= {Alteration, Re-Code, Program_Transformations}
    }
    
    
    A catalog of object model transformations, michael blaha and william premerlani
    @InProceedings{	  blaha.premerlani:catalog,
      author	= {michael blaha and william premerlani},
      title		= {A catalog of object model transformations},
      booktitle	= {Third Working Conference on Reverse Engineering},
      publisher	= {IEEE},
      year		= {1996},
      abstract	= {The process of software development is gradually achieving
    		  more rigor. Proficient develoeprs now construct software
    		  indirectly through the abstraction of models. Models allow
    		  a developer to focus on the essential aspects of an
    		  application and defer details. Transformations extend the
    		  power of models, as the developer can substitute refinement
    		  and optimization of models for tedious manipulation of
    		  code. This paper catalogs object modeling transformations
    		  that we have encountered in our application work.},
      keywords	= {model, reverse engineering, transformation},
      class		= {Re-Code Program_Transformations Alteration }
    }
    
    
    Flow Diagrams, Turing Machines and Languages with only Two Formation Rules, C. Boehm and G. Jacopini
    @Article{	  boehm.jacopini:flow,
      author	= {C. Boehm and G. Jacopini},
      title		= {Flow Diagrams, Turing Machines and Languages with only Two
    		  Formation Rules},
      journal	= {Communications of the ACM},
      year		= {1966},
      pages		= {366-371},
      month		= may,
      abstract	= {This paper contains a proof that every program with gotos
    		  can be transformed into a semantically equivalent program
    		  without goto. A transformation algorithm is given. },
      contents	= {Wolfgang Gellerich: Die Autoren beweisen(!), dass man ohne
    		  GOTO auskommt und geben, wenn ich mich richtig erinnere,
    		  auch einen allgemeinen Umstrukturierungsalgorithmus an, der
    		  aber fuer die Praxis nicht taugt.},
      class		= {Alteration, Re-Code, Control_Flow_Normalization}
    }
    
    
    Scenarios for the Identification of Objects in Legacy Systems, H. Bosma and E. Fielt and T. Wiggerts
    @InProceedings{	  bosma.fielt.ea:scenarios,
      author	= {H. Bosma and E. Fielt and T. Wiggerts},
      title		= {Scenarios for the Identification of Objects in Legacy
    		  Systems},
      booktitle	= {Fourth Working Conference on Reverse Engineering},
      publisher	= {IEEE Computer Society},
      year		= {1997},
      editor	= {I. Baxter and A. Quilici and C. Verhoef},
      pages		= {24-32},
      month		= {October},
      abstract	= {In this article we propose an incremental approach to the
    		  identification of (business) objects in legacy
    		  applications. In this approach different object
    		  identification scenarios can be applied alternately. Three
    		  different strategies are presented: function driven, data
    		  driven and object driven objectification. We discuss these
    		  scenarions and report on experiences gained from applying
    		  them to a subsystem of a real-life mortgage system. We also
    		  discuss related work.},
      keywords	= {legacy, objects, identification, extraction, scenarios,
    		  experiences},
      class		= {From_Procedural_to_Object-Oriented Re-Design Alteration }
    }
    
    
    On project-specific languages and their application in reengineering, Dmitry Boulychev and Dmitry Koznov and Andrey A.Terekhov
    Available as
    postscript.
    @InProceedings{	  boulychev.koznov.ea:on,
      author	= {Dmitry Boulychev and Dmitry Koznov and Andrey A.Terekhov},
      title		= {On project-specific languages and their application in
    		  reengineering},
      booktitle	= {Proceedings of the 6th Conference on Software Maintenance
    		  and Reengineering},
      publisher	= {IEEE Computer Society Press},
      year		= {2002},
      pages		= {177-185},
      month		= {March},
      url		= {http://users.tepkom.ru/ddt/Articles/ProjectSpecificLanguages.ps}
    		  ,
      abstract	= {We propose an approach for tuning reengineering tools to
    		  particular projects. This approach is based on the informal
    		  knowledge of the system, consisting of specific usages of
    		  the programming language. We illustrate this process with
    		  examples from an industrial project on PL/I to Java
    		  conversion.},
      keywords	= {project-specific languages, language conversion, informal
    		  knowledge, PL/I},
      class		= {Encapsulation_and_Finding_Objects_in_Legacy_Code Re-Code
    		  Knowledge-Based_Concept_Assignment
    		  Source-to-Source-Translatio Reverse_Design
    		  Program_Transformations Alteration
    		  Human_Oriented_Concept_Assignment_by_Informal_Reasoning
    		  Software_Reverse_Engineering }
    }
    
    
    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}
    }
    
    
    The Automatic Restructuring of COBOL, Eric Bush
    @InProceedings{	  bush:automatic,
      author	= {Eric Bush},
      title		= {The Automatic Restructuring of COBOL},
      booktitle	= {CSM'85: Proceedings of the 1985 Conference on Software
    		  Maintenance, {\rm (Washington, DC; November 11-13, 1985)}},
      year		= {November 1985},
      pages		= {35-41},
      abstract	= {Reduction of flow graphs in COBOL programs into so-called
    		  normal form. PITS},
      class		= {Alteration, Re-Code, Control_Flow_Normalization }
    }
    
    
    Two Module-Factoring Techniques, F.W. Calliss and B.J. Cornelius
    @Article{	  calliss.cornelius:two,
      author	= {F.W. Calliss and B.J. Cornelius},
      title		= {Two Module-Factoring Techniques},
      journal	= {Journal of Software Maintenance: Research and Practice},
      year		= {1989},
      volume	= {1},
      pages		= {81-89},
      abstract	= {Module factoring is splitting a module into smaller
    		  modules, each of which performs a distinct task. They
    		  describe two techniques: one based on type families, one
    		  based on imported entities.},
      class		= {Alteration, Re-Design, Inter-module_Reorganization }
    }
    
    
    Criteria for software modularization, D. N. Card and G. T. Page and F. E. McGarry
    @InProceedings{	  card.page.ea:criteria,
      author	= {D. N. Card and G. T. Page and F. E. McGarry},
      title		= {Criteria for software modularization},
      pages		= {372--377},
      booktitle	= {Proceedings of the 8th  International Conference on
    		  Software Engineering },
      year		= {1985},
      publisher	= {IEEE Computer Society Press},
      month		= aug,
      class		= {Alteration, Re-Design, Inter-module_Reorganization}
    }
    
    
    Software restructuring by enforcing localization and information hiding, W Chu and S. Patel
    @InProceedings{	  chu.patel:software*1,
      title		= {Software restructuring by enforcing localization and
    		  information hiding},
      author	= {W Chu and S. Patel},
      pages		= {165--172},
      booktitle	= {SM92},
      year		= {1992},
      note		= { Starting with information describing function calls and
    		  global variable usage, this paper presents a clustering
    		  technique that generates Ada-like packages describing the
    		  structure of a given software system. Has been applied to
    		  several existing systems implemented in C},
      class		= {Alteration, Re-Design, Inter-module_Reorganization}
    }
    
    
    A Re-engingeering Approach to Program Translation, William C. Chu
    @InProceedings{	  chu:re-engingeering,
      author	= {William C. Chu},
      title		= {A Re-engingeering Approach to Program Translation},
      pages		= {42--50},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1993},
      year		= {1993},
      publisher	= {IEEE Computer Society Press},
      month		= sep,
      abstract	= {Traditional program translation takes a program written in
    		  some source language and creates a semantically equivalent
    		  program in some target language. A translation via
    		  transliteration and refinement is the major approach, in
    		  which the source program is first transliterated into the
    		  target language on a line-by-line basis and various
    		  refinements are then applied to improve the produced target
    		  program. In many cases, it serves the purpose of
    		  correctness but it is quite liminted to satisfy the other
    		  goals, such as the improvement of readability,
    		  maintainability, and reusability. Another approach,
    		  translation via abstraction and reimplementation, was
    		  proposed to satisfy these goals. However, this approach is
    		  currently not able to apply to the programs of commercial
    		  size and complexity. This paper presents a re-engineering
    		  approach to program translation.},
      class		= {Alteration, Re-Code, Source-to-Source-Translation}
    }
    
    
    Automatic Detection of Design Problems in Object-Oriented Reengineering, Oliver Ciupke
    Available as
    compressed postscript.
    @InProceedings{	  ciupke:automatic,
      author	= {Oliver Ciupke},
      title		= {Automatic {D}etection of {D}esign {P}roblems in
    		  {O}bject-{O}riented {R}eengineering},
      year		= {1999},
      month		= aug,
      booktitle	= {Technology of Object-Oriented Languages and Systems -
    		  TOOLS 30},
      editor	= {Donald Firesmith and Richard Riehle and Gilda Pour and
    		  Bertrand Meyer},
      publisher	= {IEEE Computer Society},
      address	= {Santa Barbara, CA},
      pages		= {18--32},
      isbn		= {0-7695-0278-4},
      url		= {http://www.fzi.de/prost/people/ciupke/problem-detect.ps.gz}
    		  ,
      keywords	= {Object-oriented reengineering, design problems, tool
    		  support for reengineering, model capture, problem
    		  detection},
      abstract	= {The evolution of software systems over many years often
    		  leads to unnecessarily complex and inflexible designs which
    		  in turn lead to a huge amount of effort for enhancements
    		  and maintenance. Thus, the reengineering of object-oriented
    		  software becomes more and more important as the number, age
    		  and size of such legacy systems grow. A key issue during
    		  reengineering is the identification and location of design
    		  problems which prevent the efficient further development of
    		  a system. Up to now this problem area has not been
    		  sufficiently supported, either by methods, or by tools. In
    		  this paper, we present a technique for analyzing legacy
    		  code, specifying frequent design problems as queries and
    		  locating the occurrences of these problems in a model
    		  derived from source code. We present our experiences with a
    		  tool set which we implemented to support this task by
    		  automatically analyzing a given system and detecting the
    		  specified problems. We applied our tools to check
    		  violations of a number of well-known design rules in
    		  existing source code taken from several case studies, both
    		  from industrial and academic fields. These experiments
    		  showed that the task of problem detection in reengineering
    		  can be automated to a large degree, and that the technique
    		  presented can be efficiently applied to real-world code.},
      class		= {Alteration, Re-Design, Problem_Detection}
    }
    
    
    Tool Support for Automatic Problem Detection, Oliver Ciupke
    @TechReport{	  ciupke:tool,
      author	= {Oliver Ciupke},
      title		= {Tool Support for Automatic Problem Detection},
      institution	= {Forschungszentrum Informatik},
      year		= {1998},
      type		= {FAMOOS Achievement Report},
      number	= {A 2.7.1},
      month		= sep,
      id		= {impctut-ar271, ar271fzi},
      path		= {/fzi/prost/Projects/FAMOOS/doc/achievements/impctut-a271},
      class		= {Alteration, Re-Design, Problem_Detection}
    }
    
    
    CUI to GUI Migration: Static Analysis of Character-Based Panels, Ingo Claßen and Klaus Hennig and Ingo Mohr and Michael Schulz
    @InProceedings{	  claßen.hennig.ea:cui,
      author	= {Ingo Claßen and Klaus Hennig and Ingo Mohr and Michael
    		  Schulz},
      title		= {CUI to GUI Migration: Static Analysis of Character-Based
    		  Panels},
      booktitle	= {1st  European Conference on Software Maintenance and
    		  Reengineering 97},
      month		= mar,
      year		= {1997},
      publisher	= {IEEE Computer Society Press},
      abstract	= {This paper reports on progress in the construction of an
    		  integrated tool environment for the migration of
    		  character-based panels of mainframe applications into
    		  graphical user interfaces. It presents our approach for
    		  static analysis of character-based panels that is based on
    		  the identification of dialog entities in panels using
    		  generalized descriptions of panel areas and describes a
    		  tool supporting the identification process. The goal of our
    		  approach is to increase the level of automation in the
    		  migration process compared to existing migration tools. },
      class		= {Alteration, Re-Design, User_Interface_Migration}
    }
    
    
    The Retrospective Introduction of Abstraction into Software, A. Colbrook and C. Smythe
    @InProceedings{	  colbrook.smythe:retrospective,
      author	= {A. Colbrook and C. Smythe},
      title		= {The Retrospective Introduction of Abstraction into
    		  Software},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1989},
      year		= {1989},
      organization	= {IEEE},
      publisher	= {IEEE Computer Society Press},
      pages		= {166-173},
      abstract	= {The re-engineering of program control flow schemas,
    		  although a widely advocated preventive maintenance
    		  technique, fails to address the underlying problems of
    		  software which contains poorly structured data.
    		  
    		  A technique is proposed which facilitates the retrospective
    		  introduction of abstract data types into existing systems
    		  and the corresponding software tool to aid this process is
    		  presented. The resulting source code is structured in terms
    		  of both data and control flow, thereby significantly
    		  promoting the ease of maintenance. },
      class		= {Alteration, Re-Design,
    		  Introduction_of_Abstract_Data_Types_and_Objects}
    }
    
    
    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}
    }
    
    
    Graphbasierte Werkzeuge zum Reverse Engineering und Reengineering, Katja Cremer
    @PhDThesis{	  cremer:graphbasierte,
      author	= {Katja Cremer},
      title		= {Graphbasierte Werkzeuge zum Reverse Engineering und
    		  Reengineering},
      school	= {RWTH Aachen},
      year		= {2000},
      address	= {ISBN 3-8244-0497-4, Deutscher Universitätsverlag},
      class		= {Re-Code Program_Transformation Alteration }
    }
    
    
    Experience with User Interface Re-engineering: Transferring DOS Panels to Windows, László Csaba
    @InProceedings{	  csaba:experience,
      author	= {László Csaba},
      title		= {Experience with User Interface Re-engineering:
    		  Transferring DOS Panels to Windows},
      booktitle	= {1st  European Conference on Software Maintenance and
    		  Reengineering 97},
      month		= mar,
      year		= {1997},
      publisher	= {IEEE Computer Society Press},
      abstract	= {This article describes a method of user interface
    		  reengineering used in a project of turning a large
    		  character based archaic DOS application into a modern
    		  Windows application. The program was originally written for
    		  mainframe environment in COBOL language. During the
    		  conversion the working core had to be left unchanged. In
    		  the applied method the original program - recompiled for
    		  Windows with the I/O calls replaced - is run and remote
    		  controlled through a communications module by the new
    		  wrapping application. The new program, the Artificial User
    		  Program was developed with S-Prog, a highly effective
    		  visual tool. Some parts of the source were generated by
    		  Word Basic macros. },
      class		= {Alteration, Re-Design, User_Interface_Migration},
      keywords	= {DOS, Windows, User Interface Reengineering, Remote
    		  Controlling, Artificial User Program, S-Prog, Word Basic}
    }
    
    
    Little languages: Little maintenance, Deursen, A. van and P. Klint
    Available as
    domain.pdf.
    @Article{	  deursen.klint:little,
      author	= {Deursen, A. van and P. Klint},
      title		= {Little languages: Little maintenance},
      journal	= {Journal of Software Maintenance},
      year		= {1998},
      volume	= {10},
      pages		= {75--92},
      url		= {http://www.cwi.nl/~arie/papers/domain.pdf},
      abstract	= {So-called little,or domain-specific languages (DSLs), have
    		  the potential to make software maintenance simpler:
    		  domain-experts can directly use the DSL to make required
    		  routine modifications. On the negative side, however, more
    		  substantial changes may become more difficult: such changes
    		  may involve altering the domain-specific language. This
    		  will require compiler technology knowledge, which not every
    		  commercial enterprise has easily available. Based on
    		  experience taken from industrial practice, we discuss the
    		  role of DSLs in software maintenance, the dangers
    		  introduced by using them, and techniques for controlling
    		  the risks involved.},
      keywords	= {Domain-specific language;, software maintenance; interest
    		  rate products; language},
      class		= {Alteration Maintainability }
    }
    
    
    Identifying Objects using Cluster and Concept Analysis, Deursen, A. van and T. Kuipers
    Available as
    split.pdf.
    @InProceedings{	  deursen.kuipers:identifying,
      author	= {Deursen, A. van and T. Kuipers},
      title		= {Identifying Objects using Cluster and Concept Analysis},
      booktitle	= {21st International Conference on Software Engineering,
    		  ICSE-99},
      publisher	= {ACM},
      year		= {1999},
      pages		= {246--255},
      url		= {http://www.cwi.nl/~arie/papers/split.pdf},
      abstract	= {Many approaches to support (semi-automatic) identification
    		  of objects in legacy code take the data structures as
    		  starting point for candidate classes. Unfortunately, legacy
    		  data structures tend to grow over time, and may contain
    		  many unrelated fields at the time of migration. We propose
    		  a method for identifying objects by semi-automatically
    		  restructuring the legacy data structures. Issues involved
    		  include the selection of record fields of interest, the
    		  identification of procedures actually dealing with such
    		  fields, and the construction of coherent groups of fields
    		  and procedures into candidate classes. We explore the use
    		  of cluster and concept analysis for the purpose of object
    		  identification, and we illustrate their effect on a 100,000
    		  LOC Cobol system. Furthermore, we use these results to
    		  contrast clustering with concept analysis techniques.},
      keywords	= {remodularization, cluster analysis, concept analysis,
    		  class diagram},
      class		= {Introduction_of_Abstract_Data_Types
    		  Inter-module_Reorganizatio
    		  From_Procedural_to_Object-Oriented Reverse_Design Re-Design
    		  System_Modularization Recovery_of_Software_Architecture
    		  Alteration Software_Reverse_Engineering }
    }
    
    
    Reengineering Deteriorated Object-oriented Code, Richard Fanta and Vaclav Rajlich
    @Unpublished{	  fanta.rajlich:reengineering,
      author	= {Richard Fanta and Vaclav Rajlich},
      title		= {Reengineering Deteriorated Object-oriented Code},
      year		= {1998},
      class		= {Alteration, Re-Design,
    		  Inhertiance_Hierarchies_Restructuring}
    }
    
    
    Reengineering Class Hierarchies using Concept Analysis, G. Snelting, and F. Tip
    @InProceedings{	  g-snelting.tip:reengineering,
      author	= {G. Snelting, and F. Tip},
      title		= {Reengineering Class Hierarchies using Concept Analysis},
      booktitle	= {Proc. SIGSOFT Symposium on Foundations of Software
    		  Engineering},
      publisher	= {ACM},
      year		= {1998},
      key		= {Concept Analysis},
      class		= {Inhertiance_Hierarchies_Restructuring
    		  Software_Reverse_Engineering Static_Data_Flow_Analysis
    		  Reverse_Design Re-Design Static_Control_Flow_Analysis
    		  Fundamental_Methods_in_Reverse_Design Alteration
    		  Static_Analysis }
    }
    
    
    pRETS: A Parallel Reverse-Engineering Tool Set For the Adaption of Sequential Programs, Bruce Gifford and Warren Harrison
    @InProceedings{	  gifford.harrison:prets,
      author	= {Bruce Gifford and Warren Harrison},
      title		= {{pRETS}: A Parallel Reverse-Engineering Tool Set For the
    		  Adaption of Sequential Programs},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1990},
      year		= {1990},
      pages		= {344-346},
      organization	= {IEEE},
      publisher	= {IEEE Computer Society Press},
      class		= {Alteration, Re-Design,
    		  From_Sequential_to_Concurrent_Execution}
    }
    
    
    Reengineering Cobol Systems to Ada, R. Gray and T. Bickmore and S. Williams
    @TechReport{	  gray.bickmore.ea:reengineering,
      author	= {R. Gray and T. Bickmore and S. Williams},
      institution	= {InVision Software Reengineering, Software Technology
    		  Center, Lockheed Palo Alto Laboratories},
      title		= {Reengineering Cobol Systems to Ada},
      year		= {1995},
      note		= { This paper describes the reengineering of 50,000 lines of
    		  Cobol code and the translation to Ada. The goal was to do
    		  it as automatically as possible. An inferential method was
    		  used to obtain all needed information from the Cobol code
    		  itself, no external information from users or programmers
    		  was needed. The authors claim that inferential methods will
    		  be the basis of the reengineering technology of the 21th
    		  century},
      class		= {Alteration, Re-Code, Program_Transformations,
    		  Source-to-Source-Translation}
    }
    
    
    Automated Assistance for Program Restructuring, Wiliam Grisworld and David Notkin
    @Article{	  grisworld.notkin:automated,
      key		= {Grisworld \& Notkin, 1993},
      author	= {Wiliam Grisworld and David Notkin},
      title		= {Automated Assistance for Program Restructuring},
      journal	= { ACM  Transactions on Software Engineering and
    		  Methodology},
      year		= {1993},
      volume	= {2},
      number	= {3},
      pages		= {228-269},
      month		= jul,
      abstract	= {Maintenance tends to degrade the structure of software,
    		  ultimately making maintenance more costly. At times, then,
    		  it is worthwhile to manipulate the structure of a system to
    		  make changes easier. However, manual restructuring is an
    		  error-prone and expensive activity. By separating
    		  structural manipulation from other maintenance activities,
    		  the semantics of a system can be held constant by a tool,
    		  assuring that no errors are introduced by restructuring. To
    		  allow the maintenance team to focus on the aspects of
    		  restructuring and maintenance requiring human judgment, a
    		  transformation-based can be provided - based on a model
    		  that exploits preserving data flow dependence and control
    		  flow dependence - to automate the repetitive, error-prone,
    		  and computationally demanding aspects of restructuring. A
    		  set of automatable transformations is introduced; their
    		  impact on structure is desribed, and their usefulness is
    		  demonstrated in examples. A model to aid building
    		  meaning-preserving restructuring transformations is
    		  described, and its realization in a functioning prototype
    		  tool for restructuring Scheme programs is discussed.},
      class		= {Alteration, Re-Code, Source-to-Source-Translation}
    }
    
    
    Data Flow Testing of Parallelized Code, Mary Jean Harrold and Brian A. Malloy
    @InProceedings{	  harrold.malloy:data,
      author	= {Mary Jean Harrold and Brian A. Malloy},
      title		= {Data Flow Testing of Parallelized Code},
      pages		= {272-281},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1992},
      year		= {1992},
      publisher	= {IEEE Computer Society Press},
      month		= nov,
      abstract	= {Although there is much interest in reengineering programs
    		  for parallel execution, little work has been done to assist
    		  the maintainer in testing these programs in their new
    		  environment. The authors present a new system for
    		  reengineering and retesting programs for execution in a
    		  shared memory multiprocessor environment. Our system
    		  consists of two main components: a compiler that
    		  reengineers a sequential program for execution on shared
    		  memory multiprocessors and a data flow tester for the
    		  parallelized code. We have made several important
    		  enhancements to an existing parallelizing compiler,
    		  including an efficient intermediate program representation
    		  on which we perform data flow analysis. Our compiler also
    		  inserts probes in a parallelized program to make it
    		  testable in its new environment. By inserting the probes in
    		  appropriate places, a compact execution trace is produced.
    		  Our data flow tester uses a new dynamic data flow analysis
    		  algorithm to determine the test case coverage.},
      class		= {Alteration, Change_Test}
    }
    
    
    Techniques for selective revalidation, J. Hartmann and D.J. Robson
    @Article{	  hartmann.robson:techniques,
      title		= {Techniques for selective revalidation},
      author	= {J. Hartmann and D.J. Robson},
      journal	= {{IEEE} Software},
      volume	= {7},
      number	= {1},
      pages		= {31--36},
      year		= {1990},
      note		= { A systematic and automated approach is discussed to
    		  effectively revalidate modified software while minimizing
    		  the time and cost involved in maintenance testing},
      class		= {Alteration, Change_Test}
    }
    
    
    Design Recovery of Legacy Database Applications based on Possibilistic Reasoning, Jens H. Jahnke and Melanie Heitbreder
    Available as
    hypertext.
    @InProceedings{	  jahnke.heitbreder:design,
      author	= {Jens H. Jahnke and Melanie Heitbreder},
      title		= {Design Recovery of Legacy Database Applications based on
    		  Possibilistic Reasoning},
      booktitle	= {Proceedings of 7th IEEE International Conference of Fuzzy
    		  Systems (FUZZ'98)},
      publisher	= {IEEE Computer Society},
      year		= {1998},
      month		= {May},
      url		= {http://www.uni-paderborn.de/cs/jahnke.html},
      abstract	= {Industrial database applications often evolve over three
    		  or more generations of developers, cover several hundred
    		  thousand lines of code and maintain a vast amount of data.
    		  A rapidly growing number of companies face the problem that
    		  they have to adapt or modernise such existing legacy
    		  database applications (LDA) in order to keep up with
    		  emerging requirements. The documentation of such LDAs is
    		  often obsolete as they have been developed over several
    		  generations of programmers. This paper presents an
    		  application of possibilistic reasoning to infer the
    		  semantic information that is necessary to recover the
    		  conceptual design of an LDA. A dedicated, graphical
    		  language (called Generic Fuzzy Reasoning Nets) is
    		  introduced to specify and customise the applied reverse
    		  engineering process. The actual reasoning process is
    		  performed by a nonmonotonic inference engine based on fuzzy
    		  petri nets which supports lazy execution of expensive
    		  analysis operations.},
      keywords	= {data reverse engineering, expert system, uncertain
    		  reasoning, legacy database},
      class		= {Extracting_Business_Rules Software_Reverse_Engineering
    		  Database_Migration Reverse_Design Re-Design
    		  Process_Models_for_Reverse_Design Alteration }
    }
    
    
    A Design Environment for Migrating Relational to Object-Oriented Database Systems, J.-H. Jahnke and W. Schäfer and A. Zündorf
    @InProceedings{	  jahnke.schäfer.ea:design,
      author	= {J.-H. Jahnke and W. Schäfer and A. Zündorf},
      title		= {A Design Environment for Migrating Relational to
    		  Object-Oriented Database Systems},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1996},
      publisher	= {IEEE Computer Society Press},
      year		= {1996},
      abstract	= {Object-oriented technology has become mature enough to
    		  satisfy many new requirements coming from areas like
    		  computer-aided design (CAD) computer-integrated
    		  manufacturing (CIM) or software engineering (SE). However a
    		  competetive information management infrastructure often
    		  demands to merge data from CAD- CIM- or SE-systems with
    		  business data stored in a relational system. In addition
    		  complex dependencies between those data stored in the
    		  different systems might exist and should be maintained. One
    		  approach for seamless integration of object-oriented and
    		  relational systems is to migrate the data (and the
    		  corresponding schema) from a relational to an
    		  object-oriented system. In this paper we describe an
    		  integrated design environment that supports the migration
    		  process and overcomes major drawbacks of comparable
    		  approaches.},
      class		= {Alteration, Re-Design, Database_Migration }
    }
    
    
    Generic Fuzzy Reasoning Nets as a Basis for Reverse Engineering Relational Database Applications, J.-H. Jahnke and W. Schäfer and A. Zündorf
    @Book{		  jahnke.schäfer.ea:generic,
      author	= {J.-H. Jahnke and W. Schäfer and A. Zündorf},
      title		= {Generic Fuzzy Reasoning Nets as a Basis for Reverse
    		  Engineering Relational Database Applications},
      booktitle	= {Proceedings of the European Conference on Software
    		  Engineering 1997},
      publisher	= {Springer Verlag},
      year		= {1997},
      month		= {September},
      abstract	= {Object-oriented technology has become mature enough to
    		  satisfy many new requirements coming from areas like
    		  computer-aided design (CAD) computer-integrated
    		  manufacturing (CIM) or software engineering (SE). However a
    		  competitive information management infrastructure often
    		  demands to merge data from CAD- CIM- or SE-systems with
    		  business data stored in a relational system. One approach
    		  for seamless integration of object- oriented and relational
    		  systems is to migrate from a relational to an object-
    		  oriented system. The first step in this migration process
    		  is reverse engineering of the legacy database. In this
    		  paper we propose a new graphical and executable language
    		  called Generic Fuzzy Reasoning Nets for modelling and
    		  applying reverse engineering knowledge. In particular this
    		  language enables to define and analyse fuzzy knowledge
    		  which is usually all what is available when an existing
    		  database schema has to be reverse engineered into an
    		  object-oriented one. The analysis process is based on
    		  executing a fuzzy petri net which is parameterized with the
    		  fuzzy knowledge about a concrete data base application.},
      class		= {Alteration, Re-Design, Database_Migration }
    }
    
    
    Rewriting Poor Design Patterns by Good Design Patterns, Jens H. Jahnke and Albert Zuendorf
    Available as
    hypertext.
    @InProceedings{	  jahnke.zuendorf:rewriting,
      author	= {Jens H. Jahnke and Albert Zuendorf},
      title		= {Rewriting Poor Design Patterns by Good Design Patterns},
      booktitle	= {Proc. of ESEC:FSE '97 Workshop on Object-Oriented
    		  Reengineering.},
      publisher	= {Technical Report TUV-1841-97-10 Technical University of
    		  Vienna Information Systems Institute Argentinierstrasse
    		  8/184-1 A-1040 Wien Austria. },
      year		= {1997},
      editor	= {S. Demeyer and H. Gall},
      url		= {http://www.uni-paderborn.de/fachbereich/AG/schaefer/ag_dt/Personal/Jahnke/Jahnke.html}
    		  ,
      keywords	= {restructuring design patterns fuzzy analysis pattern
    		  rewriting graph grammars},
      class		= {Re-Design Alteration }
    }
    
    
    Managing Uncertainty and Inconsistency in Database Reengineering Processes, Jens-Holger Jahnke
    Available as .
    @PhDThesis{	  jahnke:managing,
      author	= {Jens-Holger Jahnke},
      title		= {Managing Uncertainty and Inconsistency in Database
    		  Reengineering Processes},
      school	= {University of Paderborn, Department of Mathematics and
    		  Computer Science},
      year		= {1999},
      address	= {33095 Paderborn, Germany},
      month		= {August},
      abstract	= {This dissertation tackles one of the most urgent problems
    		  in today's information technology, namely the renovation
    		  and migration of legacy information systems to modern
    		  platforms and net-centric architectures. In this context,
    		  several methods, tools, and processes have been proposed to
    		  support reengineering and modernizations of legacy database
    		  applications. This can be a complex task because many
    		  legacy databases have grown over several generations of
    		  programmers and lack a sufficient documentation.
    		  Computer-aided reengineering methods and processes have a
    		  great potential to reduce the complexity and risks involved
    		  in database design recovery and migration projects. Still,
    		  current reengineering tools are hardly adopted for
    		  practical problems in industry because they often make
    		  idealistic assumptions about the structure of legacy
    		  systems and the characteristics of reengineering processes.
    		  The goal of this thesis is to provide concepts and
    		  techniques to overcome these severe limitations. In
    		  particular, our focus is on developing mechanisms to manage
    		  uncertainty and inconsistency in computer-aided databases
    		  reengineering processes. In practice, uncertain knowledge
    		  plays an important role in activities aiming to recover
    		  conceptual design documents for large idiosyncratic
    		  implementation structures. This fact is neglected in
    		  current database reengineering methods and tools. In this
    		  dissertation, we identify and extend a theory that provides
    		  a suitable basis to deal with uncertain reengineering
    		  knowledge and allows to implement practical tools and
    		  environments to support reengineering processes. The
    		  requirement for consistency management considers the fact
    		  that it is unrealistic to presume that database
    		  reengineering processes can be executed in a number of
    		  sequential phases or steps without iterations. In practice,
    		  larger reengineering projects comprise many process
    		  iterations due to various reasons like incomplete knowledge
    		  about legacy implementation structures or necessary
    		  "on-the-fly" modifications of the legacy system. Detecting
    		  and removing inconsistencies caused by such iterations
    		  significantly increase costs and durations of current
    		  reengineering projects. In this thesis, we employ graph
    		  transformation theory to develop mechanisms which allow to
    		  detect and eliminate inconsistencies between legacy schema
    		  implementations and their abstract representation,
    		  automatically. Our results have been implemented in the
    		  database reengineering environment Varlet and evaluated
    		  with an industrial project. They are suitable to complement
    		  many existing approaches in the domain of information
    		  system reengineering and migration. As an example, we
    		  describe the integration of Varlet with an existing
    		  middleware product for data integration.},
      class		= {Using_graphs Database_Migration Re-Design
    		  Data_Reverse_Engineering Alteration
    		  Software_Reverse_Engineering
    		  Intermediate_Representations_of_Source_Code },
      url		= {http://www.csr.uvic.ca/~jens/Docs/thesis.pdf}
    }
    
    
    Substring Matching for Clone Detection and Change Tracking, Howard Johnson
    @InProceedings{	  johnson:substring,
      author	= {Howard Johnson},
      title		= {Substring Matching for Clone Detection and Change
    		  Tracking},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1994},
      year		= {1994},
      pages		= {120-126},
      publisher	= {IEEE Computer Society Press},
      month		= sep,
      abstract	= {Legacy systems pose problem to maintainers that can be
    		  solved partially with effective tools. A prototype tool for
    		  determining collections of files sharing a large amount of
    		  text has been developed and applied to a 40 megabyte source
    		  tree containing two releases of the gcc compiler.
    		  Similarities in source code and documentation corresponding
    		  to software cloning, movement and inertia between releases,
    		  as well as the effects of preprocessing easily stand out in
    		  a way that immediately conveys nonobvious structural
    		  information to maintainer taking responsibility for such a
    		  system.},
      class		= {Alteration, Differences_between_Source_Code_Versions}
    }
    
    
    Program Concept Recognition and Transformation, Wojtek Kozaczynski and Jim Q. Ning and Andre Engberts
    @Article{	  kozaczynski.ning.ea:program,
      key		= {Kozaczynski et al.},
      author	= {Wojtek Kozaczynski and Jim Q. Ning and Andre Engberts},
      title		= {Program Concept Recognition and Transformation},
      journal	= {IEEE Transactions on Software Engineering},
      pages		= {1065--1075},
      volume	= {18},
      number	= {12},
      month		= dec,
      year		= {1992},
      note		= { An approach to automated concept recognition and its
    		  application to maintenance-related program transformations
    		  is described. An interesting point here is that
    		  transformation of code can be expressed as transformation
    		  of abstract concepts},
      abstract	= {Syntactically, a computer program is a sequence of
    		  characters. Semantically, however, it contains abstract
    		  high-level conceptual information or concepts. The
    		  automated recognition of these concepts can greatly aid the
    		  understanding of programs and therefore support many
    		  software maintenance and reengineering activities. This
    		  paper describes an approach to automated concept
    		  recognition and its application to maintenance-related
    		  program transformations. A unique characteristic of this
    		  approach is that transformations of code can be expressed
    		  as transformations of abstract concepts. This significantly
    		  elevates the level of transformation specifications.},
      location	= {CMU E \&{} S Library},
      class		= {Alteration, Re-Code, Source-to-Source-Translation}
    }
    
    
    Change Impact Identification in Object Oriented Software Maintenance, D. Kung and J. Gao and P. Hsia and F. Wen and Y. Toyoshima and C. Chen
    @InProceedings{	  kung.gao.ea:change,
      key		= {Kung et. al, 1994},
      author	= {D. Kung and J. Gao and P. Hsia and F. Wen and Y. Toyoshima
    		  and C. Chen},
      title		= {Change Impact Identification in Object Oriented Software
    		  Maintenance},
      pages		= {202-211},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1994},
      year		= {1994},
      publisher	= {IEEE Computer Society Press},
      month		= sep,
      abstract	= {In the object-oriented (OO) paradigm, new features (such
    		  as encapsulation, aggregation, inheritance, polymorphism
    		  and dynamic binding) introduce new problems in software
    		  testing and maintenance. One of them is the difficulty of
    		  identifying the affected components (such as classes) when
    		  changes are made in object-oriented class libraries or
    		  programs. This paper discusses the types of code changes in
    		  an object-oriented class library, and provides an automated
    		  solution to identify different kinds of code changes and
    		  their impact. In addition, an OO software maintenance
    		  environment that implements the research result is
    		  described. Our experience with the environment prototype
    		  shows promising results.},
      class		= {Alteration, Change_Impact}
    }
    
    
    Identification of program modifications and its applications in software maintenance, J. Laski and W. Szemer
    @InProceedings{	  laski.szemer:identification,
      title		= {Identification of program modifications and its
    		  applications in software maintenance},
      author	= {J. Laski and W. Szemer},
      pages		= {282--290},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1992},
      year		= {1992},
      note		= { One of the problems in software maintenance is the
    		  revalidation of modified code. Such a process should
    		  preferably be restricted only to those parts of the program
    		  that are affected by the modifications. In this paper a
    		  formal method is described to identify modifications made
    		  in a program},
      class		= {Alteration, Differences_between_Source_Code_Versions}
    }
    
    
    Generating Linkage between Source Code and Evolvable Domain Knowledge for the Ease of Software Evolution, Yang Li and Hongji Yang and William Chu
    Available as .
    @InProceedings{	  li.yang.ea:generating,
      author	= {Yang Li and Hongji Yang and William Chu},
      title		= {Generating Linkage between Source Code and Evolvable
    		  Domain Knowledge for the Ease of Software Evolution},
      booktitle	= {Proceedings of IEEE International Symposium on Principles
    		  of Software Evolution (ISPSE2000)},
      publisher	= {IEEE Computer Society Press},
      year		= {2000},
      editor	= {},
      chapter	= {},
      pages		= {},
      address	= {Kanazawa, Japan},
      month		= {Nov},
      url		= {},
      abstract	= {Business software systems unexceptably need to be evolved
    		  to cater for new/changed requirement coming from market or
    		  adapt to new operating environment. One of the most
    		  significant problems in current software evolution practice
    		  is that software maintainers usually find it quite
    		  difficult to locate the program sections in source code
    		  which need to be modified and to identify the extent to
    		  which the changes in these program sections could affect
    		  the rest of the software system. In this paper, we propose
    		  a knowledge engineering based approach to solving this
    		  problem. In particular, we match a software program with a
    		  pre-defined domain knowledge base in the representation of
    		  simplified semantic network we proposed in order to link
    		  the source program with its domain level interpretation.
    		  The domain knowledge base contains only important domain
    		  knowledge where potential evolutions could occur, which
    		  reduces the size of the knowledge base. Moreover, a domain
    		  oriented program partitioning method is also proposed to
    		  cut a program into self-contained modules with manageable
    		  size. In these ways, the computational complexity involved
    		  in generating the linkage is significantly reduced which
    		  makes this approach applicable. An example shows that
    		  software evolution can be easily carried out as the domain
    		  knowledge it links with evolves. },
      keywords	= {software evolution, knowledge engineering, program
    		  partitioning, evolvable domain knowledge, semantic
    		  network},
      note		= {This paper gives engineering-oriented considerations to
    		  link generation between domain knowledge and source code
    		  prior to successful software evolution.},
      class		= {Software_Evolution Knowledge-Based_Concept_Assignment
    		  Using_graphs Change_Impac
    		  Cognitive_Processes_in_Human_Program_Understanding Metrics
    		  Reverse_Design Re-Design System_Modularization
    		  Recovery_of_Software_Architecture
    		  Metric-Based_Methods_in_Reverse_Design Alteration
    		  Human_Oriented_Concept_Assignment_by_Informal_Reasoning
    		  Intermediate_Representations_of_Source_Code
    		  Software_Reverse_Engineering }
    }
    
    
    Using Dependence Analysis to Support the Software Maintenance Process, Joseph P. Loyall and Susan A. Mathisen
    @InProceedings{	  loyall.mathisen:using,
      author	= {Joseph P. Loyall and Susan A. Mathisen},
      title		= {Using Dependence Analysis to Support the Software
    		  Maintenance Process},
      pages		= {282-291},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1993},
      year		= {1993},
      publisher	= {IEEE Computer Society Press},
      month		= sep,
      abstract	= {Dependence analysis is useful for software maintenance
    		  because it indicates the possible effects of a software
    		  modification on the rest of a program. This helps the
    		  software maintainer evaluate the appropirateness of a
    		  software modification, drive regression testing, and
    		  determine the vulnerabiltiy of critical sections of code.
    		  This paper presents a definition of interprocedural
    		  dependence analysis and its implementation in a prototype
    		  tool that supports software maintenance.},
      class		= {Alteration, Change_Impact}
    }
    
    
    Reverse engineering of user interfaces., E. Merlo and J.F. Girard and K. Kontogiannis and P. Panangaden and R. De Mori
    @InProceedings{	  merlo.girard.ea:reverse,
      author	= {E. Merlo and J.F. Girard and K. Kontogiannis and P.
    		  Panangaden and R. {De Mori}},
      title		= {Reverse engineering of user interfaces.},
      booktitle	= {Working Conference on Reverse Engineering},
      year		= {1993},
      month		= {May 21-23},
      address	= {Baltimore, Maryland},
      pages		= {171-179},
      note		= { Extracts user interface descriptions from COBOL/CICS
    		  source code and translates them to abstract behaviour
    		  descriptions based on process algebra (CCS). Part of the
    		  analysis is done using Refine/COBOL. The translation itself
    		  is done manually},
      class		= {Alteration, Re-Design, User_Interface_Migration},
      ftp		= {ftp.crim.ca/gl/public/wcre93.ps.Z}
    }
    
    
    Implications of automatic restructuring COBOL, J. Miller and B. Straus III
    @Article{	  miller.straus:implications,
      title		= {Implications of automatic restructuring COBOL},
      author	= {J. Miller and B. Straus III},
      journal	= {{ACM} Sigplan Notices},
      volume	= {22},
      number	= {6},
      pages		= {76--82},
      year		= {1987},
      note		= { The question whether or not mechanical transformations of
    		  unstructured program code to a structured equivalent can
    		  provide an improvement in the understanding of that program
    		  is addressed. As an example the language COBOL is examined.
    		  The paper also discusses a tool (called Structured
    		  Retrofit) that performs such transformations for COBOL
    		  mechanically},
      class		= {Alteration, Re-Code, Control_Flow_Normalization,
    		  Program_Transformations }
    }
    
    
    Knowledge-based User Interface Migration, Melody Moore and Spencer Rugaber and Phil Seaver
    @InProceedings{	  moore.rugaber.ea:knowledge-based,
      author	= {Melody Moore and Spencer Rugaber and Phil Seaver},
      title		= {Knowledge-based User Interface Migration},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1994},
      year		= {1994},
      abstract	= {A significant problem in reengineering large systems is
    		  adapting the user interface to a new environment. Often,
    		  drastic changes in the user interface are inevitable, as in
    		  migrating a text-based system to a workstation with
    		  Graphical User Interface capabilities. This experience
    		  report chronicles a study of user interface migration
    		  issues, examining and evaluating current tools and
    		  techniques. It also describes a case study undertaken to
    		  explore the use of knowledge engineering to aid in
    		  migrating interfaces across platforms.},
      keywords	= {User Interface, reengineering, migration, reverse
    		  engineering, knowledge-based},
      ftp		= {ftp.cc.gatech.edu//pub/groups/reverse/repository/uif\_migration.ps}
    		  ,
      class		= {Alteration, Re-Design, User_Interface_Migration}
    }
    
    
    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 }
    }
    
    
    Issues in User Interface Migration, Melody Moore and Spencer Rugaber
    @InProceedings{	  moore.rugaber:issues,
      author	= {Melody Moore and Spencer Rugaber},
      title		= {Issues in User Interface Migration},
      booktitle	= {Proceedings of the Third Software Engineering Research
    		  Forum},
      address	= {Orlando Florida},
      year		= {1993},
      month		= nov,
      abstract	= { In today's continually changing world of computing, many
    		  old and outdated systems are being migrated to newer,
    		  faster, and less proprietary platforms. Reengineering
    		  strategies have traditionally concentrated on the
    		  functional design of the program itself. User interfaces,
    		  however, present some unique problems for migration, since
    		  often the user interface changes drastically -- for
    		  example, migrating from a text-based interface to a
    		  graphical user interface. Here we present work that
    		  identifies the important issues in effectively migrating
    		  user interfaces between heterogeneous platforms and
    		  different display technologies.},
      ftp		= {ftp.cc.gatech.edu//pub/groups/reverse/repository/serf.ps},
      class		= {Alteration, Re-Design, User_Interface_Migration}
    }
    
    
    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 }
    }
    
    
    Guru - A tool for automatic Restructuring of Self Inheritance Hierarchies, I. Moore
    @InProceedings{	  moore:guru,
      author	= {I. Moore},
      title		= {Guru - A tool for automatic Restructuring of Self
    		  Inheritance Hierarchies},
      booktitle	= {Tools USA' 95 (Technology of Object-Oriented Languages and
    		  Systems)},
      pages		= {267-275},
      year		= {1995},
      abstract	= {},
      class		= {Alteration, Re-Design,
    		  Inhertiance_Hierarchies_Restructuring}
    }
    
    
    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 }
    }
    
    
    Automating the modularization of large COBOL programs: application of an enabling technology for reengineering, Ph. Newcomb and L. Markosian
    @InProceedings{	  newcomb.markosian:automating,
      author	= {Ph. Newcomb and L. Markosian},
      title		= {Automating the modularization of large {COBOL} programs:
    		  application of an enabling technology for reengineering},
      booktitle	= {Proceedings of the 1st  Working Conference on Reverse
    		  Engineering },
      pages		= {222--230},
      year		= {1993},
      note		= { Experience report using the Software Refinery to build a
    		  modularization tool for COBOL},
      class		= {Alteration, Re-Design, Inter-module_Reorganization}
    }
    
    
    Unraveling unstructured programs, G. Oulsnam
    @Article{	  oulsnam:unraveling,
      title		= {Unraveling unstructured programs},
      author	= {G. Oulsnam},
      journal	= {The Computer Journal},
      volume	= {25},
      number	= {3},
      pages		= {379--387},
      year		= {1982},
      note		= { A method for transforming unstructured program flowcharts
    		  into structured ones is presented. The form of the derived
    		  structured programs is such that the original unstructured
    		  programs can be easily recovered, thus revealing what
    		  overheads in space and time are inherent in the structured
    		  forms},
      class		= {Alteration, Re-Code, Control_Flow_Normalization}
    }
    
    
    Program Transformation Systems, A. Partsch and R. Steinbruggen
    @Article{	  partsch.steinbruggen:program,
      author	= {A. Partsch and R. Steinbruggen},
      title		= {Program Transformation Systems},
      journal	= {Computing Surveys},
      year		= {1983},
      volume	= {15},
      number	= {10},
      month		= sep,
      pages		= {199-236},
      class		= {Alteration, Re-Code, Source-to-Source-Translation}
    }
    
    
    Towards the reverse engineering of denormalized relational databases, J-M. Petit and F. Toumani and J. Boulicaut and J. Kouloumdjian
    @InProceedings{	  petit.toumani.ea:towards,
      author	= {J-M. Petit and F. Toumani and J. Boulicaut and J.
    		  Kouloumdjian},
      title		= {Towards the reverse engineering of denormalized relational
    		  databases},
      booktitle	= {Proc. 12th International Conference on Data Engineering},
      publisher	= {S. Su},
      year		= {1996},
      editor	= {IEEE Computer Society},
      pages		= {218-227},
      address	= {New Orleans},
      month		= {Feb},
      class		= {Database_Migration Re-Design Alteration }
    }
    
    
    Case study in Migration to Object-Oriented System structure Using Design Transformation Methods, Sagar Pidaparthi and Grzegorz Cysewski
    @InProceedings{	  pidaparthi.cysewski:case,
      author	= {Sagar Pidaparthi and Grzegorz Cysewski},
      title		= {Case study in Migration to Object-Oriented System
    		  structure Using Design Transformation Methods},
      booktitle	= {1st  European Conference on Software Maintenance and
    		  Reengineering 97},
      month		= mar,
      year		= {1997},
      publisher	= {IEEE Computer Society Press},
      abstract	= {Procedural programming languages are currently being used
    		  extensively in the software industry for a wide range of
    		  applications. Most of the old procedural programs, used
    		  today may not have any documentation which can be used in
    		  maintenance processes. In the recent time there has been a
    		  paradigm shift towards object oriented design and
    		  programming, from algorithmic decomposition, structured
    		  design and procedural implementation. Hence, there is a
    		  growing need to restructure old programs which have a poor
    		  architecture during evolutionary processes. It is more
    		  economic to restructure existing software into object
    		  oriented topology by identifying objects within the subject
    		  system than to redesign software starting from scratch.
    		  Object identification relies upon program analysis and a
    		  study of inter component relationships and dependencies.
    		  Researchers in re-engineering have proposed some guidelines
    		  to identify objects from within the subject systems. Design
    		  Transformation is the first step in reengineering existing
    		  programs, which can be followed by program translation
    		  methods to transform a procedural program into the newly
    		  identified structure. This paper reports the results of the
    		  application of three object identification methods on a
    		  sample procedural program. Secondly it provides a design of
    		  a system for program component storage and object
    		  identification },
      class		= {Alteration, Re-Design,
    		  From_Procedural_to_Object-Oriented}
    }
    
    
    Eliminating non-traversable paths from structured programs, M. Pleszkoch and R. Linger and A. Hevner
    @InProceedings{	  pleszkoch.linger.ea:eliminating,
      title		= {Eliminating non-traversable paths from structured
    		  programs},
      author	= {M. Pleszkoch and R. Linger and A. Hevner},
      pages		= {156--164},
      booktitle	= {\cite{SM92}},
      year		= {1992},
      note		= { Considers the problem of control variables (i.e., ranging
    		  over the Booleans or some small enumeration type) that
    		  obscure the structure of otherwise structured programs.
    		  Control flow is represented by regular expressions which
    		  are further processed (subset construction) to find a
    		  version of the program without redundant control paths},
      class		= {Alteration, Re-Code, Control_Flow_Normalization}
    }
    
    
    Eliminating goto's while preserving program structure, L. Ramshaw
    @Article{	  ramshaw:eliminating,
      title		= {Eliminating goto's while preserving program structure},
      author	= {L. Ramshaw},
      journal	= {Journal of the {ACM}},
      volume	= {35},
      number	= {4},
      pages		= {893-920},
      year		= {1988},
      note		= { A method is described to eliminate GO-TO statements from
    		  a program while the program's original structure is being
    		  preserved},
      class		= {Alteration, Re-Code, Control_Flow_Normalization}
    }
    
    
    The Transition of Application Programs From COBOL to a Fourth Generation Language, Spencer Rugaber and Srinivas Doddapaneni
    @InProceedings{	  rugaber.doddapaneni:transition,
      author	= {Spencer Rugaber and Srinivas Doddapaneni},
      title		= {The Transition of Application Programs From COBOL to a
    		  Fourth Generation Language},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1993},
      year		= {1993},
      month		= sep,
      abstract	= {It is becoming increasingly desirable to move older
    		  application programs from their traditional mainframe
    		  execution environments to networkes workstations. These
    		  management information systems are most often written in
    		  COBOL and store their data in files. A networked
    		  environment enables the use of relational database
    		  management system and its fourth generation access
    		  language, SQL. A conceptual framework is described that
    		  comprises a variety of stategies for making such a
    		  transition. Decision citeria for selecting among them are
    		  then presented. Finally, a variety of experiments intended
    		  to explore the strategies are recounted. The experiments
    		  include efforts to automate parts of the process.},
      address	= {Montreal, Canada},
      ftp		= {ftp.cc.gatech.edu//pub/groups/reverse/repository/transit.ps}
    		  ,
      class		= {Alteration, Re-Design,
    		  From_Mainframe_to_Client-Server_Architecture}
    }
    
    
    Downsizing Large Application Programs, Harry M. Sneed and Erika Nyary
    @InProceedings{	  sneed.nyary:downsizing,
      author	= {Harry M. Sneed and Erika Nyary},
      title		= {Downsizing Large Application Programs},
      pages		= {110--119},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1993},
      year		= {1993},
      publisher	= {IEEE Computer Society Press},
      month		= sep,
      abstract	= {There is a great demand in industry to migrate from the
    		  mainframe to distributed client/server type systems. The
    		  following paper proposes three methods of splitting up
    		  oversized host application programs with the goal of
    		  offloading them on to workstation computers. The three
    		  apporaches are by procedural connection, functional
    		  decomposition, and abstract data typing. The author
    		  describes his experience in applying each of the methods
    		  and explains what other measures are necessary to downsize
    		  a program.},
      class		= {Alteration, Re-Design,
    		  From_Mainframe_to_Client-Server_Architecture}
    }
    
    
    Migration of procedurally oriented COBOL programs in an object-oriented architecture, H. Sneed
    @InProceedings{	  sneed:migration,
      title		= {Migration of procedurally oriented {COBOL} programs in an
    		  object-oriented architecture},
      author	= {H. Sneed},
      booktitle	= {\cite{SM92}},
      pages		= {105--116},
      year		= {1992},
      note		= { The subject of this paper is to describe the migration of
    		  procedurally structured COBOL into functionally equivalent
    		  object-oriented programs. Their major differences are
    		  described together with an approach to bridge the gap
    		  between the two},
      class		= {Alteration, Re-Design,
    		  From_Procedural_to_Object-Oriented}
    }
    
    
    Reengineering Class Hierarchies Using Concept Analysis, Gregor Snelting and Frank Tip
    @TechReport{	  snelting.tip:reengineering,
      author	= {Gregor Snelting and Frank Tip},
      title		= {Reengineering Class Hierarchies Using Concept Analysis},
      organization	= {IBM T.J. Watson Research Center},
      year		= {1997},
      type		= {Technical Report},
      number	= {RC 21164(94592)24APR97},
      address	= {IBM T.J. Watson Research Center, P.O. Box 704, Yorktown
    		  Heights, NY 10598, USA},
      month		= {April},
      keywords	= {concept analysis, inheritance hierarchy restructuring,
    		  C++},
      note		= {There is also an extended journal version of this article
    		  in ACM SIGSOFT 1998.},
      class		= {Inhertiance_Hierarchies_Restructuring Re-Design Alteration
    		  }
    }
    
    
    Reengineering Class Hierarchies Using Concept Analysis, Gregor Snelting and Frank Tip
    @InProceedings{	  snelting.tip:reengineering*1,
      author	= {Gregor Snelting and Frank Tip},
      title		= {Reengineering Class Hierarchies Using Concept Analysis},
      publisher	= {ACM},
      booktitle	= {ACM SIGSOFT Symposium on the Foundation of Software
    		  Engineering},
      year		= {1998},
      keywords	= {Reengineering of class hierarchies, OOP, object-oriented
    		  programming, concept analysis},
      class		= {Reengineering Alteration Re-Design
    		  Inhertiance_Hierarchies_Restructuring}
    }
    
    
    The Realities of Language Conversions, Andrey A.Terekhov and Chris Verhoef
    Available as
    s6.pdf.
    @Article{	  terekhov.verhoef:realities,
      author	= {Andrey A.Terekhov and Chris Verhoef},
      title		= {The Realities of Language Conversions},
      journal	= {IEEE Software},
      year		= {2000},
      volume	= {17},
      number	= {6},
      pages		= {111-124},
      month		= {November/December},
      url		= {http://www.cs.vu.nl/~x/cnv/s6.pdf},
      abstract	= {Billions of lines of code that have been written in Cobol,
    		  PL/I, and other old programming languages are still in
    		  active use. Many commercial efforts to convert these to
    		  more modern languages have begun, but few have succeeded.
    		  These authors discuss the nuts and bolts of conversion
    		  between several pairs of languages and some of the
    		  possibilities and limitations of automating language
    		  conversion. },
      keywords	= {source-to-source translation, language conversion, COBOL},
      class		= {Re-Code Source-to-Source-Translatio
    		  Program_Transformations Alteration }
    }
    
    
    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 }
    }
    
    
    Architectural Extraction in Reverse Engineering by Prototyping - An Experiment, Sander Tichelaar and Stephane Ducasse and Theo Dirk Meijler
    Available as
    archiDocumentation.pdf.
    @InProceedings{	  tichelaar.ducasse.ea:architectural,
      author	= {Sander Tichelaar and Stephane Ducasse and Theo Dirk
    		  Meijler},
      title		= {Architectural Extraction in Reverse Engineering by
    		  Prototyping - An Experiment},
      booktitle	= {Proceedings ESEC - FFSE 97 Workshop on Object-Oriented
    		  Reengineering},
      publisher	= {Technical University of Vienna},
      year		= {1997},
      editor	= {Serge Demeyer and Harald Gall},
      month		= {August},
      url		= {http://iamwww.unibe.ch/~tichel/archiDocumentation.pdf},
      abstract	= {In this workshop paper we present a prototype approach to
    		  help the extraction of architectural information in the
    		  re-engineering process. Commonly the re-engineering
    		  life-cycle has been defined as a succession of the
    		  following tasks: analysis of requirements model capture
    		  "understanding the system" problem detection problem
    		  analysis reorganization and change propagation. We have
    		  evaluated the benefit of a prototyping approach with a
    		  focus on model capture. Although prototyping is a known
    		  approach to evaluate the application feasibility costs
    		  comparison and validation of choices we focus in this paper
    		  on the aspects of prototyping that are helpful for
    		  re-engineering.},
      keywords	= {architectural extraction prototyping FAMOOS},
      note		= {This work is part of the ESPRIT project FAMOOS: A
    		  Framework-based Approach for Mastering Object-Oriented
    		  Software Evolution},
      class		= {Software_Reverse_Engineering Model_Generating
    		  Reverse_Specification Inter-module_Reorganization
    		  Reverse_Design Re-Design Recovery_of_Software_Architecture
    		  Alteration }
    }
    
    
    The automatic restructuring of programs, G. Urschler
    @Article{	  urschler:automatic,
      title		= {The automatic restructuring of programs},
      author	= {G. Urschler},
      journal	= {{IBM} Journal of Research and Development},
      volume	= {19},
      pages		= {181--194},
      year		= {1975},
      note		= { A method is described that allows the translation of an
    		  unstructured program into a set of top-down structured,
    		  semantically founded, go-to-free modules. This method leads
    		  to a certain amount of code replication},
      class		= {Alteration, Re-Code, Control_Flow_Normalization}
    }
    
    
    A practical program transformation system for reverse engineering, M. Ward and K. Bennett
    @InProceedings{	  ward.bennett:practical,
      author	= {M. Ward and K. Bennett},
      title		= {A practical program transformation system for reverse
    		  engineering},
      booktitle	= {Proceedings of the 1st  Working Conference on Reverse
    		  Engineering },
      pages		= {212--221},
      year		= {1993},
      note		= { Uses program transformation techniques as a basis for
    		  reverse engineering. Source files are first translated into
    		  WSL (wide-spectrum language). By means of a large
    		  collection of WSL transformation and user guidance, the WSL
    		  program is simplified. Next it can be translated back into
    		  the original source language or into the specification
    		  language Z. The process is supported by the ReForm tool
    		  which contains parsers for IBM assembly language and for a
    		  Basic subset. Also see~\cite{BBY92}},
      class		= {Alteration, Re-Code, Source_Code_Transformations}
    }
    
    
    Program Translation via Abstraction and Reimplementation, R. C. Waters
    @Article{	  waters:program,
      key		= {Waters},
      author	= {R. C. Waters},
      title		= {Program Translation via Abstraction and Reimplementation},
      journal	= {IEEE Transactions on Software Engineering},
      pages		= {1207--1228},
      volume	= {14},
      number	= {8},
      month		= aug,
      year		= {1988},
      abstract	= {Essentially all program tranlators (both source-to-source
    		  translators and compilers) operate via transliteration and
    		  refinement. The source program is first tranliterated into
    		  the target language on a statement-by-statement basis.
    		  Various refinements are then applied in order to improve
    		  the quality of the output. Although acceptable in many
    		  situations, this approach is fundamentally limited in the
    		  quality of the output it can produce. In particular, it
    		  tends to be insufficiently sensitive to global features of
    		  the source program and too sensitive to irrelavant local
    		  details.
    		  
    		  This paper presents an alternate translation paradigm -
    		  abstraction and reimplementation. Using this paradigm, the
    		  source program is first analyzed in order to obtain a
    		  programming-language-independent understanding of the
    		  computation performed by the program as a whole. The
    		  program is then reimplemented in the target language based
    		  on this understanding. The key to this approach is the
    		  abstract understanding obtained. It allows the translator
    		  to see the forest for the trees, benefiting from an
    		  appreciation of the global features of the source program
    		  without being distracted by irrelevant details.
    		  
    		  Translation via abstraction and reimplemenation is one of
    		  the goals of the Programmer's Aprprentice project. A
    		  translator which translates Cobol programs into Hibol (a
    		  very-high-level business data processing language) has been
    		  constructed. A compiler which generates extremly efficient
    		  PDP-11 object code for Pascal programs has been designed.
    		  Currently, work is proceeding toward the implementation of
    		  a general-purpose, knowledge-based translator.},
      location	= {CMU E\&{}S Library},
      class		= {Alteration, Re-Code, Source-to-Source-Translation,
    		  Software_Reverse_Engineering, Reverse_Design,
    		  Knowledge-Based_Concept_Assignment,
    		  Program_Plan_Assignment_by_Parsing},
      note		= { The translation paradigm of abstraction and
    		  reimplementation, which is one of the goals of the
    		  Programmer's Apprentice project \cite{RiWa90} is presented.
    		  A translator has been constructed which translates Cobol
    		  programs into Hibol (a very high level, business data
    		  processing language)}
    }
    
    
    Conversion of unstructured flow diagrams into structured form, M. Williams and H. Ossher
    @Article{	  williams.ossher:conversion,
      title		= {Conversion of unstructured flow diagrams into structured
    		  form},
      author	= {M. Williams and H. Ossher},
      journal	= {The Computer Journal},
      volume	= {21},
      number	= {2},
      pages		= {161--167},
      year		= {1978},
      note		= { Various already proposed methods to convert unstructured
    		  flow diagrams into equivalent structured ones are
    		  discussed. Moreover a general method for performing such
    		  conversions is discussed},
      class		= {Alteration, Re-Code, Control_Flow_Normalization}
    }
    
    
    Supercompilers for Parallel and vector Computers, H. Zima and B. Chapman
    @Book{		  zima.chapman:supercompilers,
      author	= {H. Zima and B. Chapman},
      title		= {Supercompilers for Parallel and vector Computers},
      publisher	= {Addison-Wesley},
      year		= {1991},
      series	= {ACM Frontier Series},
      abstract	= {This book contains (beside other topics) a description how
    		  to discover loops in programs with gotos and how to
    		  tranform those structures into while or repeat loops.},
      contents	= {Wolfgang Gellerich: Gute Darstellung wie man in
    		  GOTO-Programmen Schleifen findet und sie gegen WHILE- oder
    		  REPEAT-Schleifen ersetzt.},
      class		= {Alteration, Re-Code, Control_Flow_Normalization}
    }
    

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