References of Metric-Based_Methods_in_Reverse_Design

    A Reverse Engineering Approach to Evaluate Function Point Rules, A. April and E.Merlo and A.Abran
    @InProceedings{	  april.merlo.ea:reverse,
      author	= {A. April and E.Merlo and A.Abran},
      title		= {A Reverse Engineering Approach to Evaluate Function Point
    		  Rules},
      booktitle	= {WCRE'97 Proceeding},
      publisher	= {IEEE},
      year		= {1997},
      abstract	= {Function Points are generally used for measuring software
    		  functional size from a user perspective. This paper is
    		  concerned with the problem of counting function points from
    		  source code using the Function Point Analysis proposed by
    		  the International Function point User Group (IFPUG) 1994
    		  standards. This paper presents the Automated FP counting
    		  scope and objective, the presentation of an existing
    		  semi-formal model and the required extensions for the
    		  definition of four IFPUG rules. Then we propose reverse
    		  engineering techniques to address those four rules. },
      keywords	= {Automation of Function Point, Reverse Engineering,
    		  Software Measurement, backfiring},
      class		= {Software_Reverse_Engineering Metrics Reverse_Design
    		  Metric-Based_Methods_in_Reverse_Design }
    }
    
    
    Quantifying software designs, J. Beane and N. Giddings and J. Silverman
    @InProceedings{	  beane.giddings.ea:quantifying,
      author	= {J. Beane and N. Giddings and J. Silverman},
      title		= {Quantifying software designs},
      pages		= {314--323},
      booktitle	= {Proceedings of the 7th  International Conference on
    		  Software Engineering },
      year		= {1984},
      publisher	= {IEEE Computer Society Press},
      month		= mar,
      class		= {Software_Reverse_Engineering, Reverse_Design,
    		  Metric-Based_Methods_in_Reverse_Design, Metrics,
    		  Module_Cohesion}
    }
    
    
    System partitioning and its measure, L. Belady and C. Evangelisti
    @Article{	  belady.evangelisti:system,
      title		= {System partitioning and its measure},
      author	= {L. Belady and C. Evangelisti},
      journal	= {Journal of Systems and Software},
      volume	= {2},
      pages		= {23--29},
      year		= {1981},
      note		= { A method to perform automatic clustering of data
    		  structures and calls is described. A metric to quantify the
    		  complexity of the resulting partitioning is given},
      class		= {Software_Reverse_Engineering, Reverse_Design,
    		  Metric-Based_Methods_in_Reverse_Design,
    		  Automated_Reverse_Design, System_Modularization}
    }
    
    
    Assessing Software Maintainability at the end of High-Level Design, L. Briand and S. Morasca and V. Basili
    @InProceedings{	  briand.morasca.ea:assessing,
      author	= {L. Briand and S. Morasca and V. Basili},
      title		= {"Assessing Software Maintainability at the end of
    		  High-Level Design"},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1993},
      year		= {1993},
      month		= sep,
      class		= {Software_Reverse_Engineering, Reverse_Design,
    		  Metric-Based_Methods_in_Reverse_Design, Metrics,
    		  Module_Cohesion}
    }
    
    
    Potpurri Module Detection, Frank W. Calliss and Barry J. Cornelius
    @InProceedings{	  calliss.cornelius:potpurri,
      author	= {Frank W. Calliss and Barry J. Cornelius},
      title		= {Potpurri Module Detection},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1990},
      year		= {1990},
      pages		= {46-51},
      organization	= {IEEE},
      publisher	= {IEEE Computer Society Press},
      abstract	= {A potpourri module is a module that provides more than one
    		  service to a program. This form of module violates the idea
    		  of a module being considered as a ''responsibility
    		  assignment''. The existence of this form of module
    		  increases considerably the effort that a programmer has to
    		  expend on a maintenance operation, and increases the
    		  likelihood of an error being introduced to a program as a
    		  result of maintenance work. Techniques are presented for
    		  detecting potpourri modules that appear in programs written
    		  in a language that contains a module construct (such as Ada
    		  and Modula-2). Many of these techniques can be automated.},
      class		= {Software_Reverse_Engineering, Reverse_Design,
    		  Metric-Based_Methods_in_Reverse_Design,
    		  Automated_Reverse_Design}
    }
    
    
    Extracting and Restructuring the Design of Large Systems, Song C. Choi and Walt Scacchi
    @Article{	  choi.scacchi:extracting,
      author	= {Song C. Choi and Walt Scacchi},
      title		= {Extracting and Restructuring the Design of Large Systems},
      journal	= {IEEE Software},
      year		= {1990},
      volume	= {7},
      number	= {1},
      pages		= {66-71},
      month		= jan,
      note		= { An algorithm is described that for a given initial design
    		  description the system-reconstruction algorithm constructs
    		  a hierarchy of the system's modules and subsystems},
      class		= {Software_Reverse_Engineering, Reverse_Design,
    		  Metric-Based_Methods_in_Reverse_Design,
    		  Automated_Reverse_Design}
    }
    
    
    Software Restructuring by Enforcing Localization and Information Hiding, William C. Chu and Sukesh Patel
    @InProceedings{	  chu.patel:software,
      author	= {William C. Chu and Sukesh Patel},
      title		= {Software Restructuring by Enforcing Localization and
    		  Information Hiding},
      pages		= {165-172},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1992},
      year		= {1992},
      publisher	= {IEEE Computer Society Press},
      month		= nov,
      abstract	= {Imperative languages like C, Fortran, and Cobol do not
    		  provide facilities for expressing system structure
    		  information. Understanding, maintaining and reusing large
    		  scale software systems implemented in these languages is
    		  difficult and time consuming. In this paper the authors sho
    		  how the semantic basis underlying modern system structure
    		  constructs (supported in languages such as Ada and C++) can
    		  be used to simplify the understanding of software written
    		  in conventional imperative languages. The restructuring
    		  technique analyzes the input source code system into a
    		  hierarchical system struture that exploits information
    		  hiding and localization properties. This hierarchical view
    		  will help to accurately identify a component's dependencies
    		  and visibility relationships with other system
    		  sub-components. Besides obvious understandability and
    		  maintainability benefits this form of restructure offers a
    		  convenient framework for translating conventional languages
    		  to languages that support modularity, abstract data types,
    		  and hierarchical system structure.},
      class		= {Software_Reverse_Engineering, Reverse_Design,
    		  Metric-Based_Methods_in_Reverse_Design,
    		  Automated_Reverse_Design}
    }
    
    
    Maintenance and Intermodule Dependencies in Pascal Environment, Aniello Cimitile and Di Lucca, G. A. and P. Maresca
    @InProceedings{	  cimitile.di-lucca.ea:maintenance,
      author	= {Aniello Cimitile and Di Lucca, G. A. and P. Maresca},
      title		= {Maintenance and Intermodule Dependencies in Pascal
    		  Environment},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1990},
      year		= {1990},
      pages		= {72-83},
      organization	= {IEEE},
      publisher	= {IEEE Computer Society Press},
      abstract	= {This paper outlines the important role that actual and,
    		  mainly, potential intermodular dependencies play in the
    		  maintenance phase of a software product.
    		  
    		  The authors discuss the problem with reference to Pascal
    		  systems and they show how reverse engineering and static
    		  code analysis enable the identification of the actual and
    		  the potential intermodular data flow and relationships.
    		  
    		  Some constraints are proposed to prevent an uncontrollable
    		  proliferation of data binding among modules and their
    		  reciprocal calls. To achieve the consistency of the
    		  programs respect to the adopted constraints, the
    		  intermodular dependencies knowledge, as produced by reverse
    		  engineering, is used to restructure both data and module
    		  declarations also.},
      class		= {Software_Reverse_Engineering, Reverse_Design,
    		  Metric-Based_Methods_in_Reverse_Design,
    		  Automated_Reverse_Design}
    }
    
    
    CAME Tools for an Efficient Software Maintenance, Reiner R. Dumke and Gunnar Kompf
    @InProceedings{	  dumke.kompf:came,
      author	= {Reiner R. Dumke and Gunnar Kompf},
      title		= {CAME Tools for an Efficient Software Maintenance},
      booktitle	= {1st  European Conference on Software Maintenance and
    		  Reengineering 97},
      month		= mar,
      year		= {1997},
      publisher	= {IEEE Computer Society Press},
      abstract	= {This paper describes the role of the metrics tools as
    		  Computer Assisted Software Measurement and Evaluation
    		  (CAME) tools in the software life cycle, especially in the
    		  maintenance phase. The most CAME tools are designed for
    		  code analysis and measurement. They are predestined to be
    		  applied to the implementation and maintenance development
    		  phases. But, more and more tools are developed for the
    		  earlier phases of software development to estimate the
    		  effort, complexity, and size of the software that will be
    		  created. This paper will provide an overview of the present
    		  situation on the area of the CAME tools and discuss their
    		  efficient use in the software maintenance. },
      class		= {Software_Reverse_Engineering, Reverse_Design,
    		  Metric-Based_Methods_in_Reverse_Design, Metrics}
    }
    
    
    A Discriminant Metric for Module Cohesion, T. Emerson
    @InProceedings{	  emerson:discriminant,
      author	= {T. Emerson},
      title		= {A Discriminant Metric for Module Cohesion},
      year		= {1984},
      publisher	= {IEEE Computer Society Press},
      month		= mar,
      class		= {Software_Reverse_Engineering, Reverse_Design,
    		  Metric-Based_Methods_in_Reverse_Design, Metrics,
    		  Module_Cohesion}
    }
    
    
    Reverse Engineering to the Architectural Level, David R. Harris and Howard B. Reubenstein and Alex S. Yeh
    @InProceedings{	  harris.reubenstein.ea:reverse,
      author	= {David R. Harris and Howard B. Reubenstein and Alex S.
    		  Yeh},
      title		= {Reverse Engineering to the Architectural Level},
      booktitle	= {Proceedings of the 17th  International Conference on
    		  Software Engineering },
      year		= {1995},
      publisher	= {IEEE Computer Society Press},
      month		= apr,
      abstract	= {Recovery of higher level ''design'' information and the
    		  ability to create dynamic, task adaptable software
    		  documentation is crucial to supporting a number of program
    		  understanding activities. This paper presents research that
    		  demonstrates that reverse engineering technology can be
    		  used to recover software architecture representations fo
    		  source code.
    		  
    		  The authors have developed a framework that integrates
    		  reverse engineering technology and architectural style
    		  representations. Using the framework, analysts can recover
    		  custom, dynamic documentation to fit a variety of software
    		  analysis requirements. Our goal is to establish coherent
    		  abstractions appropriate for helping analysts to understand
    		  large software systems. The authors discuss a code coverage
    		  metric useful for assessing the degree of program
    		  understanding achieved.},
      class		= {Software_Reverse_Engineering, Reverse_Design,
    		  Metric-Based_Methods_in_Reverse_Design,
    		  Automated_Reverse_Design}
    }
    
    
    Applying Software Complexity Metrics to Program Maintenance, W. Harrison and K. Magel and R. Kluczny and A. DeKock
    @Article{	  harrison.magel.ea:applying,
      author	= {W. Harrison and K. Magel and R. Kluczny and A. DeKock},
      title		= {Applying Software Complexity Metrics to Program
    		  Maintenance},
      journal	= {IEEE Computer},
      year		= {1982},
      volume	= {15},
      number	= {9},
      month		= sep,
      pages		= {65-79},
      class		= {Software_Reverse_Engineering, Reverse_Design,
    		  Metric-Based_Methods_in_Reverse_Design, Metrics,
    		  Maintenance_Metrics}
    }
    
    
    Experience with the accuracy of software maintenance task effort prediction models, M. Jorgensen
    @Article{	  jorgensen:experience,
      title		= {Experience with the accuracy of software maintenance task
    		  effort prediction models},
      author	= {M. Jorgensen},
      journal	= {IEEE Transactions on Software Engineering},
      pages		= {674--681},
      volume	= {21},
      number	= {8},
      year		= {1995},
      note		= {Eleven software maintenance effort prediction models are
    		  discussed},
      class		= {Software_Reverse_Engineering, Reverse_Design,
    		  Metric-Based_Methods_in_Reverse_Design, Metrics,
    		  Maintenance_Metrics}
    }
    
    
    Design Extraction by Adiabatic Multi-Perspective Abstraction, Javed I. Khan
    @InProceedings{	  khan:design,
      key		= {Khan, 1994},
      author	= {Javed I. Khan},
      title		= {Design Extraction by Adiabatic Multi-Perspective
    		  Abstraction},
      pages		= {191-200},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1994},
      year		= {1994},
      publisher	= {IEEE Computer Society Press},
      month		= sep,
      abstract	= {Design extraction of an unfamiliar system is a complex
    		  cognitive task. This paper presents an approach that can
    		  help human expert in exploring a large and complex code
    		  information space of an unfamiliar software. It provides
    		  her/him a platform to access the code information with
    		  flexible, fine and delicate control over volume and
    		  composition of the accessed information sub-space. The
    		  proposed approach integrates two forms of abstraction.
    		  First, it helps to comprehend complexity of the code
    		  information space by allowing explorer to investigate the
    		  system from numerous (combinatorial) coherent perspectives.
    		  In the second level, it helps to overcome scale of the
    		  information space by allowing explorer to compress or
    		  expand any composition of its sub-spaces. This new
    		  approach, named as adiabatic multi-perspective (AMP)
    		  approach to program abstraction, is founded on a
    		  symmetrical dual hierarchical (SDH) organization of code
    		  information space and a novel formalism for abstract
    		  dependency analysis (ADA), which is also one of the first
    		  formalism to perform complete program dependency analysis
    		  on abstract program models.},
      class		= {Software_Reverse_Engineering, Reverse_Design,
    		  Metric-Based_Methods_in_Reverse_Design,
    		  Automated_Reverse_Design}
    }
    
    
    Rule-based approach to computing module cohesion, Arun Lakhotia
    @InProceedings{	  lakhotia:rule-based,
      author	= {Arun Lakhotia},
      title		= {Rule-based approach to computing module cohesion},
      pages		= {35--44},
      booktitle	= {Proceedings of the 15th  International Conference on
    		  Software Engineering },
      year		= {1993},
      publisher	= {IEEE Computer Society Press},
      month		= apr,
      abstract	= {Stevens, Myers, and Constantine introduced the notion of
    		  cohesion, an ordinal scale of seven levels that describes
    		  the degree to which the actions performed by a module
    		  contribute to a unified function. The provided rules,
    		  termed as 'associative principles' to examine the
    		  relationships between 'processing elements' of a module and
    		  designate a cohesion level to it. Stevens et. al., however,
    		  did not give a precise definition for the term 'processing
    		  element', thereby leaving it open for interpretations.
    		  
    		  This paper interprets the 'output variables' (not
    		  statements) of a module as its processing elements. Stevens
    		  et. al.'s associative principles are transformed to relate
    		  the output variables based on their 'data' and 'control
    		  dependence' relationships. What results is a rule-based
    		  approach to computing cohesion. Experimental results show
    		  that, but for temporal cohesion, the cohesion associated to
    		  a module under our reinterpretation and that due to the
    		  original definitions are identical for all examples.},
      class		= {Software_Reverse_Engineering, Reverse_Design,
    		  Metric-Based_Methods_in_Reverse_Design, Metrics,
    		  Module_Cohesion}
    }
    
    
    Clarity Guided Belief Revision for Domain Knowledge Recovery in Legacy Systems, Yang Li and Hongji Yang and William Chu
    Available as .
    @InProceedings{	  li.yang.ea:clarity,
      author	= {Yang Li and Hongji Yang and William Chu},
      title		= {Clarity Guided Belief Revision for Domain Knowledge
    		  Recovery in Legacy Systems},
      booktitle	= {Proceedings of the 12th International Conference on
    		  Software Engineering and Knowledge Engineering (SEKE2000)},
      publisher	= {Knowledge System Institute},
      year		= {2000},
      editor	= {Daniel E. Cooke and Joseph E. Urban},
      chapter	= {},
      pages		= {248-255},
      address	= {Chicago, USA},
      month		= {June},
      url		= {},
      abstract	= {Program understanding is the process of acquiring
    		  knowledge from a computer program. Although research work
    		  utilising knowledge engineering techniques has been
    		  undertaken in this field, it is our observation that a
    		  thorough application of AI methodology has not been
    		  sufficiently explored. In this paper, we present a clarity
    		  guided belief revision approach to domain knowledge
    		  recovery in legacy software systems. Novel solutions are
    		  given to three key AI issues in the context of domain
    		  knowledge recovery from source code: knowledge
    		  representation, where concrete semantic network is
    		  separated from abstract semantic network to better
    		  accommodate uncertainty reasoning and propagation;
    		  uncertainty reasoning, which borrows ideas from
    		  confirmation theory and recasts them in the context of
    		  semantic network reasoning; heuristic search, which is
    		  designed on the principle of programming psychology. Our
    		  approach is light-weighted. It can be used stand-alone or
    		  as a complement to traditional heavy-weighted domain
    		  knowledge recovery methods. },
      keywords	= {program understanding, knowledge recovery, semantic
    		  network, belief revision, heuristic search, programming
    		  psychology},
      note		= {This paper describes our innovative work where
    		  psychology-based methodology was brought into the area of
    		  Articial Intelligence and was applied in the field of
    		  domain knowledge recovery from source code.},
      class		= {Knowledge-Based_Concept_Assignment System_Modularizatio
    		  Model_Generating Reverse_Specification Metrics
    		  Reverse_Design Domain_Analysis
    		  Metric-Based_Methods_in_Reverse_Design
    		  Human_Oriented_Concept_Assignment_by_Informal_Reasoning
    		  Software_Reverse_Engineering }
    }
    
    
    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 }
    }
    
    
    Towards Building a Smarter Domain Knowledge Recovery Assistant, Yang Li and Hongji Yang and William Chu
    Available as .
    @InProceedings{	  li.yang.ea:towards,
      author	= {Yang Li and Hongji Yang and William Chu},
      title		= {Towards Building a Smarter Domain Knowledge Recovery
    		  Assistant},
      booktitle	= {Proceedings of the 24th IEEE Annual Computer Software and
    		  Applications Conference (COMPSAC2000)},
      publisher	= {IEEE Computer Society Press},
      year		= {2000},
      editor	= {},
      chapter	= {},
      pages		= {},
      address	= {},
      month		= {Oct},
      url		= {},
      abstract	= {Legacy systems need to be ``salvaged'' to prolong their
    		  life circle. One way for such a salvation is to recover and
    		  maintain domain knowledge embedded in legacy code. It is
    		  our observation that existing methods or tools for domain
    		  knowledge recovery from source code did not provide
    		  maintainers with sufficient assistance to reduce the size
    		  of analysable program sections, identify program sections
    		  having intensive domain knowledge and maintain the belief
    		  of a network of domain knowledge extracted from source code
    		  which can accommodate change of belief coming from a user.
    		  In this paper, we introduce techniques which can provide
    		  software maintainers with smart assistance for the
    		  above-mentioned three issues. },
      keywords	= {program partitioning, program readability metric, belief
    		  network, domain knowledge recovery},
      note		= {We incorpate human psychology knowledge with the design of
    		  a domain knowledge recovery tool.},
      class		= {Automated_Reverse_Design
    		  Knowledge-Based_Concept_Assignment Reverse_Engineering_Tool
    		  Model_Generating Reverse_Specification
    		  Cognitive_Processes_in_Human_Program_Understanding Metrics
    		  Reverse_Design System_Modularization Domain_Analysis
    		  Recovery_of_Software_Architecture
    		  Metric-Based_Methods_in_Reverse_Design
    		  Human_Oriented_Concept_Assignment_by_Informal_Reasoning
    		  Software_Reverse_Engineering }
    }
    
    
    Fusing Ambiguous Domain Knowledge Slices in a Reverse Engineering Process, Yang Li and Hongji Yang
    Available as .
    @InProceedings{	  li.yang:fusing,
      author	= {Yang Li and Hongji Yang},
      title		= {Fusing Ambiguous Domain Knowledge Slices in a Reverse
    		  Engineering Process},
      booktitle	= {Proceedings of the 7th Asia-Pacific Software Engineering
    		  Conference (APSEC2000)},
      publisher	= {IEEE Computer Society Press},
      year		= {2000},
      editor	= {},
      chapter	= {},
      pages		= {},
      address	= {Singapore},
      month		= {Dec},
      url		= {},
      abstract	= {Recovering domain knowledge from legacy code plays an
    		  important role in the new information technology era, which
    		  can be of help for program understanding, system evolution
    		  and software reuse. Traditional methods for domain
    		  knowledge recovery from source code did not sufficiently
    		  address the issue of ambiguity handling, in particular, the
    		  propagation of ambiguity among multiple domain knowledge
    		  slices recovered from source code in software reverse
    		  engineering process. In this paper, we present a novel
    		  approach to recovering unambiguous domain knowledge from
    		  legacy code, where isolated ambiguous domain knowledge
    		  slices are ``fused'' together in an iterative ambiguity
    		  propagation process and hence the disambiguity of these
    		  recovered knowledge slices is increased. },
      keywords	= {reverse engineering, domain knowledge recovery,
    		  co-operative behaviour, belief revision},
      note		= {This is the first of this kind of work which deals with
    		  the ambiguity involved in recovering large-scale domain
    		  knowledge from source code.},
      class		= {Automated_Reverse_Design
    		  Knowledge-Based_Concept_Assignment Using_graphs
    		  Model_Generating Reverse_Specification
    		  Cognitive_Processes_in_Human_Program_Understanding
    		  Reverse_Design Domain_Analysis
    		  Recovery_of_Software_Architectur
    		  Metric-Based_Methods_in_Reverse_Design
    		  Human_Oriented_Concept_Assignment_by_Informal_Reasoning
    		  Intermediate_Representations_of_Source_Code
    		  Software_Reverse_Engineering }
    }
    
    
    Composing Subsystem Structures Using (K,2)-Partite Graphs, Hausi A. M\uller and James S. Uhl
    @InProceedings{	  muller.uhl:composing*1,
      author	= {Hausi A. M\"uller and James S. Uhl},
      title		= {Composing Subsystem Structures Using (K,2)-Partite
    		  Graphs},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1990},
      year		= {1990},
      pages		= {12-19},
      organization	= {IEEE},
      publisher	= {IEEE Computer Society Press},
      abstract	= {Subsystem composition is the process of constructing
    		  composite software components out of building blocks such
    		  as variables, procedures, modules, and sybsystems.
    		  Hierarchical subsystem structures are formed by imposing
    		  equivalence relations on the resource-flow graphs of the
    		  source code. Composition algorithms often use a single
    		  equivalence relation (e.g., connection strength or data
    		  binding measure) to form automatically tree-shaped
    		  composite structures.
    		  
    		  This paper describes a clustering method that uses
    		  equivalence relations for identifying subsystem structures.
    		  The relations are intended to embody the software
    		  engineering principles that concern module interactions
    		  such as low coupling, high strength, small interfaces, and
    		  few interfaces. The resulting compositions are
    		  (k,2)-partite graphs (a class of layered graphs) rather
    		  than strict tree hierarchies. The method is supported by
    		  our interactive graph editor.},
      class		= {Software_Reverse_Engineering, Reverse_Design,
    		  Metric-Based_Methods_in_Reverse_Design,
    		  Automated_Reverse_Design,
    		  Software_Reverse_Engineering_Tools, Rigi}
    }
    
    
    Metrics for Assessing a Software System's Maintainability, Paul Oman and Jack Hagemeister
    @InProceedings{	  oman.hagemeister:metrics,
      author	= {Paul Oman and Jack Hagemeister},
      title		= {Metrics for Assessing a Software System's
    		  Maintainability},
      pages		= {337-344},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1992},
      year		= {1992},
      publisher	= {IEEE Computer Society Press},
      month		= nov,
      abstract	= {The factors of software that determine or influence
    		  maintainability can be organized into a hierarchical
    		  structure of measurable attributes. For each of these
    		  attributes we show a metric definition consistent with the
    		  published definitions of the software characteristic being
    		  measured. The result is a tree structure of maintainability
    		  metrics which can be used for purposes of evaluating the
    		  relative maintainability of the software system. In this
    		  paper the authors define metrics for measuring the
    		  maintainability of a target software system and discuss how
    		  those metrics can be combined into a single index of
    		  maintainability.},
      class		= {Software_Reverse_Engineering, Reverse_Design,
    		  Metric-Based_Methods_in_Reverse_Design, Metrics,
    		  Maintenance_Metrics}
    }
    
    
    Effects of Software Changes on Module Cohesion, Linda M. Ott and James M. Bieman
    @InProceedings{	  ott.bieman:effects,
      author	= {Linda M. Ott and James M. Bieman},
      title		= {Effects of Software Changes on Module Cohesion},
      pages		= {345-353},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1992},
      year		= {1992},
      publisher	= {IEEE Computer Society Press},
      month		= nov,
      abstract	= {We use program slices to model module cohesion. For our
    		  purpose, a slice is a projection of program text that
    		  includes only the data tokens relevant to one output. We
    		  define six cohesion metrics in terms of these slices, and
    		  evaluate the effects of classes of module changes on these
    		  metrics. We find that the effects on cohesion metrics are
    		  notably more predictable when the changes result from
    		  adding code rather than from moving code. In general, the
    		  effects that software changes have on the cohesion metrics
    		  match our intuition.},
      class		= {Software_Reverse_Engineering, Reverse_Design,
    		  Metric-Based_Methods_in_Reverse_Design, Metrics,
    		  Module_Cohesion}
    }
    
    
    The Relationship Between Slices and Module Cohesion, Linda M. Ott and J. J. Thuss
    @InProceedings{	  ott.thuss:relationship,
      author	= {Linda M. Ott and J. J. Thuss},
      title		= {The Relationship Between Slices and Module Cohesion},
      booktitle	= {Proceedings of the 11th  International Conference on
    		  Software Engineering },
      pages		= {198--204},
      month		= may,
      year		= {1989},
      abstract	= {The authors examine the relationship between the data flow
    		  in a module and its level of cohesion using a processing
    		  element flow graph (PFG). Based on these PFGs, they regroup
    		  the original seven levels of cohesion into four
    		  classifications. Slice profiles are then defined by
    		  generating slices for all output variables of a module. A
    		  relationship is then shown between these slice profiles and
    		  the PFG used to indicate levels of cohesion. It is
    		  suggested that these slice profiles can be used to
    		  determine more easily the cohesiveness of a module.},
      class		= {Software_Reverse_Engineering, Reverse_Design,
    		  Metric-Based_Methods_in_Reverse_Design, Metrics,
    		  Module_Cohesion}
    }
    
    
    A Measure for Composite Module Cohesion, Sukesh Patel and William C. Chu and R. Baxter
    @InProceedings{	  patel.chu.ea:measure,
      author	= {Sukesh Patel and William C. Chu and R. Baxter},
      title		= {A Measure for Composite Module Cohesion},
      booktitle	= {Proceedings of the 14th  International Conference on
    		  Software Engineering },
      pages		= {38--48},
      month		= may,
      year		= {1992},
      abstract	= {An important software design activity is the decomposition
    		  of complex systems into conceptually independent modules
    		  that cooperate to achieve a desired result. This
    		  modularization represents a significant software
    		  engineering activity that continues to receive considerable
    		  research attention. The authors illustrate how software may
    		  be modularized by automatically determining the
    		  cohesiveness of modules in the system. Module cohesion is
    		  defined to be a quality attribute that seeks to measure the
    		  singleness of purpose of a module. They propose a metric
    		  that measures the cohesion of individual subprograms of a
    		  software system as related to each other. This metric is
    		  illustrated with detailed examples and is supported with
    		  empirical evidence supporting the viability of the
    		  measure.},
      class		= {Software_Reverse_Engineering, Reverse_Design,
    		  Metric-Based_Methods_in_Reverse_Design, Metrics,
    		  Module_Cohesion}
    }
    
    
    An Automated Approach to Information Systems Decomposition, D. Paulson and Y. Wand
    @Article{	  paulson.wand:automated,
      author	= {D. Paulson and Y. Wand},
      title		= {An Automated Approach to Information Systems
    		  Decomposition},
      journal	= {IEEE Transactions on Software Engineering},
      volume	= {18},
      number	= {3},
      pages		= {174-189},
      year		= {1992},
      month		= mar,
      class		= {Software_Reverse_Engineering, Reverse_Design,
    		  Metric-Based_Methods_in_Reverse_Design,
    		  Automated_Reverse_Design}
    }
    
    
    A Field Study of the Relationship of Information Flow and Maintainability of COBOL Programs, M.M. Pickard and B.D. Carter
    @Article{	  pickard.carter:field,
      title		= {A Field Study of the Relationship of Information Flow and
    		  Maintainability of COBOL Programs},
      author	= {M.M. Pickard and B.D. Carter},
      journal	= {Information and Software Technology},
      volume	= {37},
      number	= {4},
      pages		= {195--202},
      year		= {1995},
      note		= { The results of a field study of the relationship of
    		  information flow to the maintainability of COBOL modules in
    		  a data processing environment are presented. There is a
    		  significant correlation between maintainability and
    		  information flow and with (information flow) metrics it is
    		  possible to identify poorly maintained modules},
      class		= {Software_Reverse_Engineering, Reverse_Design,
    		  Metric-Based_Methods_in_Reverse_Design, Metrics,
    		  Maintenance_Metrics}
    }
    
    
    An Intelligent Tool for Re-engineering Software Modularity, R. W. Schwanke
    @InProceedings{	  schwanke:intelligent,
      author	= {R. W. Schwanke},
      title		= {An Intelligent Tool for Re-engineering Software
    		  Modularity},
      booktitle	= {Proceedings of the 13th  International Conference on
    		  Software Engineering },
      pages		= {83--92},
      month		= may,
      year		= {1991},
      abstract	= {The author describes a software tool that provides
    		  heuristic modularization advice for improving existing
    		  code. A heuristic design similarity measure is defined,
    		  based on the Parnas' information hiding principle. The
    		  measure supports two services: clustering, which identifies
    		  groups of related procedures, and maverick analysis, which
    		  identifies individual procedures that appear to be in the
    		  wrong module. The tool has already provided useful advice
    		  in several real programming projects. The tool will soon
    		  incorporate an automatic tuning method, which allows the
    		  tool to learn from its mistakes, adapting its advice to the
    		  architect's preferences. A preliminary experiment
    		  demonstrates that the automatically tuned similarity
    		  function can assign procedures to modules very
    		  accurately.},
      class		= {Software_Reverse_Engineering, Reverse_Design,
    		  Metric-Based_Methods_in_Reverse_Design,
    		  Automated_Reverse_Design}
    }
    
    
    A study on the Effect of Reengineering on Maintainability, Harry M. Sneed and Agnes Kaposi
    @InProceedings{	  sneed.kaposi:study,
      author	= {Harry M. Sneed and Agnes Kaposi},
      title		= {A study on the Effect of Reengineering on
    		  Maintainability},
      booktitle	= {Proceedings of the  International Conference on Software
    		  Maintenance ~1990},
      year		= {1990},
      pages		= {91-99},
      organization	= {IEEE},
      publisher	= {IEEE Computer Society Press},
      abstract	= {The report presented here on the effect of reengineering
    		  upon software maintainablility stems from a laboratory
    		  experiment conducted within the METKIT research project of
    		  the European ESPRIT program for the study and promotion of
    		  the use of metrics in Software-Engineering. The experiment
    		  was conducted as a case study in measuring software
    		  complexity and maintainablility. However, the results also
    		  serve to assess the benefits of reengineering old programs.
    		  Maintainability is defined as the effort to perform
    		  maintenance tasks, the impact domain of the maintenance
    		  actions and the error rate caused by those actions.
    		  Complexity is defined as a combination of code, data, data
    		  flow, structure, and control flow metrics. From the data
    		  collected it demonstrates that reengineering can decrease
    		  complexity and increase maintainability, but that
    		  restructuring has only a minor effect on maintainability.},
      class		= {Reengineering_in_General, Experiences,
    		  Software_Reverse_Engineering, Reverse_Design,
    		  Metric-Based_Methods_in_Reverse_Design, Metrics,
    		  Maintenance_Metrics}
    }
    
    
    A collection of software tools for analyzing designs of concurrent software systems, A. M. Stavely and D. C. Becker and S. P. Orr and G. B. Titus
    @InProceedings{	  stavely.becker.ea:collection,
      author	= {A. M. Stavely and D. C. Becker and S. P. Orr and G. B.
    		  Titus},
      title		= {A collection of software tools for analyzing designs of
    		  concurrent software systems},
      pages		= {111--118},
      booktitle	= {Proceedings of the 8th  International Conference on
    		  Software Engineering },
      year		= {1985},
      publisher	= {IEEE Computer Society Press},
      month		= aug,
      class		= {Software_Reverse_Engineering, Reverse_Design,
    		  Metric-Based_Methods_in_Reverse_Design,
    		  Automated_Reverse_Design}
    }
    
    
    Analyzing Java Software by Combining Metrics and Program Visualization, Tarja Systä and Ping Yu and Hausi Müller
    Available as
    ~tsysta.
    @InProceedings{	  systä.yu.ea:analyzing,
      author	= {Tarja Systä and Ping Yu and Hausi Müller},
      title		= {Analyzing Java Software by Combining Metrics and Program
    		  Visualization},
      booktitle	= {Proceedings of the 4th European Conference on Software
    		  Maintenance and Reengineering (CSMR 2000)},
      publisher	= {IEEE Computer Society},
      year		= {2000},
      pages		= {199-208},
      url		= {http://www.cs.tut.fi/~tsysta},
      abstract	= {Shimba, a prototype reverse engineering environment, has
    		  been built to support the understanding of Java software.
    		  Shimba uses Rigi and SCED to analyze, visualize, and
    		  explore the static and dynamic aspects, respectively, of
    		  the subject system. The static software artifacts and their
    		  dependencies are extracted from Java byte code and viewed
    		  as directed graphs using the Rigi reverse engineering
    		  environment. The static dependency graphs of a subject
    		  system can be annotated with attributes, such as software
    		  quality measures, and then be analyzed and visualized using
    		  scripts through the end-user programmable interface.
    		  
    		  Shimba has recently been extended with the Chidamber and
    		  Kemerer suite of object-oriented metrics. The metrics
    		  measure properties of the classes, the inheritance
    		  hierarchy, and the interaction among classes of a subject
    		  system. Since Shimba is primarily intended for the analysis
    		  and exploration of Java software, the metrics have been
    		  tailored to measure properties of software components
    		  written in Java. We show how these metrics can be applied
    		  in the context of understanding software systems using a
    		  reverse engineering environment. The static dependency
    		  graphs of the system under investigation are decorated with
    		  measures obtained by applying the object-oriented metrics
    		  to selected software components. Shimba provides tools to
    		  examine these measures, to find software artifacts that
    		  have values that are in a given range, and to detect
    		  correlations among different measures. The object-oriented
    		  analysis of the subject Java system can be investigated
    		  further by exporting the measures to a spreadsheet. },
      keywords	= {Java, software metrics, program visualizaton, Rigi},
      class		= {Binary_Reverse_Engineering Reverse_Design
    		  Reverse_Engineering_Tools
    		  Metric-Based_Methods_in_Reverse_Design Rig
    		  Software_Reverse_Engineering }
    }
    
    
    Error density and size in Ada software, C. Withrow
    @Article{	  withrow:error,
      title		= {Error density and size in {Ada} software},
      author	= {C. Withrow},
      journal	= {{IEEE} Software},
      volume	= {7},
      number	= {1},
      pages		= {26--30},
      year		= {1990},
      note		= { In this paper we can find an empirical study of the
    		  relation between error density and the length of an Ada
    		  module. The results show that there is an optimal length
    		  and that shorter modules and larger ones contain more
    		  errors. For reverse engineering such metrics can give an
    		  indication for the status of the software},
      class		= {Software_Reverse_Engineering, Reverse_Design,
    		  Metric-Based_Methods_in_Reverse_Design, Metrics}
    }
    

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