Studying Software Architecture Through Design Spaces and Rules
Lane, T.G
Technical Report
CMU/SEI-90-TR-018
This report argues that the overall structure of software systems ("software architecture") is usefully studied by constructing design spaces. A design space identifies the key functional and structural choices made in creating a system design, and it classifies the alternatives available for each choice. Rules can be formulated to relate choices within a design space. Sets of such rules are a valuable design aid and offer a promising route to automatic structural design. By codifying design practice, design spaces can also aid software maintenance and training. To support this argument, the report describes a design space and associated rules for user interface software, and it discusses an experiment that validated these design rules by comparing their predictions to real system designs.