Verifying design modularity, hierarchy, and interaction locality using data clustering techniques

Modularity, hierarchy, and interaction locality are general approaches to reducing the complexity of any large system. A widely used principle in achieving these goals in designing software systems is striving for high cohesion within a module and low coupling between modules. However, this principle has difficulties in practice. Because a hierarchical system structure often consists of several layers, it is difficult to decide at what layer an interaction should be considered as cohesion, and at what layer an interaction should be considered as coupling. In this paper, we do not differentiate cohesion and coupling, but use a general term interaction to represent the dependencies between software modules. We propose a method to verify the design modularity, hierarchy, and interaction locality of a software system. This approach is based on the component interactions gathered from certain design level artifacts, such as UML diagrams. Data clustering technique is then used to group software components according to the degree of interactions between them. To show how to use this approach, we apply it to Parna's KWIC object-oriented design example, in which sequence diagram is used to derive the degree of component interactions.

[1]  Yuanyuan Song,et al.  Modular software design with crosscutting interfaces , 2006, IEEE Software.

[2]  Meilir Page-Jones,et al.  The practical guide to structured systems design: 2nd edition , 1988 .

[3]  Steve Counsell,et al.  A dynamic runtime coupling metric for meta-level architectures , 2004, Eighth European Conference on Software Maintenance and Reengineering, 2004. CSMR 2004. Proceedings..

[4]  Liguo Yu,et al.  Understanding component co-evolution with a study on Linux , 2007, Empirical Software Engineering.

[5]  Bernd Bruegge,et al.  Object-Oriented Software Engineering: Using UML, Patterns and Java, Second Edition , 2003 .

[6]  A. Jefferson Offutt,et al.  A software metric system for module coupling , 1993, J. Syst. Softw..

[7]  S. C. Johnson Hierarchical clustering schemes , 1967, Psychometrika.

[8]  Glenford J. Myers,et al.  Structured Design , 1974, IBM Syst. J..

[9]  Andrew W. Appel,et al.  Hierarchical modularity , 1999, TOPL.

[10]  Anil K. Jain,et al.  Data clustering: a review , 1999, CSUR.

[11]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[12]  Bernd Bruegge,et al.  Object-Oriented Software Engineering Using UML, Patterns, and Java , 2009 .

[13]  Meilir Page-Jones,et al.  The practical guide to structured systems design , 1980 .

[14]  Mary Shaw,et al.  An Introduction to Software Architecture , 1993, Advances in Software Engineering and Knowledge Engineering.

[15]  William G. Griswold,et al.  The structure and value of modularity in software design , 2001, ESEC/FSE-9.

[16]  James E. Tomayko,et al.  The structural complexity of software an experimental test , 2005, IEEE Transactions on Software Engineering.

[17]  HERBERT A. SIMON,et al.  The Architecture of Complexity , 1991 .