A software system is an aggregate of communicating modules, and there are several
different types of communication among these modules (direct, indirect, and global).
Therefore, understanding the interfaces among these modules can characterize the system
and are a major factor in the system's complexity. These interfaces could possibly also
show and predict inadequacies in the reliability and maintenance of a system. Interfaces are
defmed early in the development life cycle at a detailed or high level design stage. Knowing
that these interfaces exist and their structure leads us to measure them for an indication
of the designed interface complexity. This designed interface complexity can then be utilized
for software quality assurance by allowing users to choose from among several designs.
With data provided by an Ada software developer, the interface complexity metrics
correlated with established metrics, but also found complex interfaces that established metrics
missed.