A unified framework for expressing software subsystem classification techniques

https://doi.org/10.1016/0164-1212(95)00098-4Get rights and content

Abstract

The architecture of a software system classifies its components into subsystems and describes the relationships between the subsystems. The information contained in such an abstraction is of immense significance in various software maintenance activities. There is considerable interest in extracting the architecture of a software system from its source code and, hence, in techniques that classify the components of a program into subsystems. Techniques for classifying subsystems presented in the literature differ in the type of components they place in a subsystem and the information they use to identify related components. However, these techniques have been presented using different terminology and symbols, making it harder to perform comparative analyses. This article presents a unified framework for expressing techniques of classifying subsystems of a software system. The framework is comprised of a consistent set of terminology, notation, and symbols that may be used to describe the input, output, and processing performed by these techniques. Using this framework, several subsystem classification techniques have been reformulated. This reformulation makes it easier to compare these techniques and provides a first step towards evaluating their relative effectiveness.

References (41)

  • L.A Belady et al.

    System Partitioning and its Measures

    Journal of Systems and Software

    (February 1981)
  • B.L. Achee et al.

    A Greedy Approach to Object Identification in Imperative Code

  • A.V. Aho et al.
  • A.V. Aho et al.
  • C. Alexander
  • R.S. Arnold
  • T.J. Biggerstaff

    Design Recovery for Maintenance and Reuse

    Computer

    (July 1989)
  • D. Carrington et al.

    Deriving Modular Designs From Formal Specifications

  • Y.-F. Chen et al.

    The C Information Abstraction System

    IEEE Transactions on Software Engineering

    (March 1990)
  • E.J. Chikofsky et al.

    Special Issue on Reverse Engineering

    IEEE Software

    (January 1990)
  • S.C. Choi et al.

    Extracting and Restructuring the Design of Large Systems

    IEEE Software

    (January 1990)
  • P. Coad et al.
  • W.E. Donath et al.

    Algorithms for Partitioning of Graphs and Computer Logic Based on Eigenectors of Connection Matrices

    IBM Tech. Disclosure Bull.

    (1972)
  • A.E. Dunlop et al.

    A Procedure for Placement of Standard-Cell VLSI Circuits

    IEEE Transactions on Computed Aided Design

    (January 1985)
  • B. Everitt
  • D. Garlan et al.

    An introduction to software architecture

  • D.H. Hutchens et al.

    System Structure Analysis: Clustering with Data Bindings

    IEEE Transactions on Software Engineering

    (August 1985)
  • I. Jacobson et al.

    Reengineering of Old Systems to an Object-Oriented Architecture

  • N. Jardine et al.
  • A. Lakhotia et al.

    A Measure of Congruence Between Subsystem Classifications of a Software Systems

  • Cited by (0)

    View full text