Abstract
Design is an important ingredient of software quality. Little is known however On the best approaches to structure a system in subsystems. Also how do we decide that one software structure is good, or bad? A system should exhibit high cohesion inside modules and low coupling among modules. These two concepts are defined qualitatively, and only at the module level, not at the system level. In this work, metrics are introduced for cohesion and coupling and used to define a quality metric at the system level. The metrics involve weighted links between the modules and a different approach, based on an external quality indicator, is used to estimate the weights of the links. The approach involves a maintenance effort model and an experiment on three real-world informalion systems. The results seem to indicate that the system wide metric based on cohesion and coupling, and available early in the development cycle, is a good indicator of a system's maintainability The results also indicate that data exchange Is a good criterion for regrouping modules into subsystems.