Using Dependency Models to Manage Complex Software Architecture
San Diego Room
Tuesday, 17:00, 30 minutes
Neeraj Sangal, Lattix, Inc.
Ev Jordan, Lattix, Inc.
Vineet Sinha, Massachusetts Institute of Technology
Daniel Jackson, Massachusetts Institute of Technology
This paper describes a new approach, based on the Design Structure Matrix (DSM), which uses inter-module dependencies to specify and manage the architecture of large software systems. The system is decomposed into a hierarchy of subsystems with the dependencies between the subsystems presented in the form of an adjacency matrix. The hierarchic decomposition allows a succinct definition of design rules to specify allowable dependencies.
This yields a number of key benefits: Our adaptation of the DSM to represent dependencies with subsystem hierarchies appears to overcome scaling problems commonly associated with directed graph representations. DSM also provides an intuitive framework to specify and view design rules. It is easy to identify and enforce common architectural patterns such as layering and the use of components. A variety of algorithms are available to help organize the matrix in a form that reflects the architecture and highlights patterns and problematic dependencies.
A tool has been developed and applied to a number of large systems; this paper describes its application to the reengineering of Haystack, an information retrieval system.