Cohesion, Coupling and Abstraction Level: Criteria for Capability Identification
Abstract
Large-scale software-based systems warrant lengthy development cycles during which there is a constant evolution of user needs and technology specifications. It is imperative that in order to function satisfactorily the system components accommodate change. However, the traditional process of development advises baselining requirements, as opposed to architecting the system such that it supports evolution. We propose the construction of systems based on Capabilities to accommodate functional changes in a nonintrusive manner. Capabilities are functional abstractions designed to exhibit properties of stability — high cohesion, low coupling, and balanced abstraction levels — which promote an underlying change-tolerant framework. To measure these characteristics we explore two algorithms — Synthesis and Decomposition — based on polar approaches to problem solving. The synthesis algorithm measures stability properties of detailed rudimentary elements to determine which aggregates are Capabilities. In contrast, the decomposition algorithm identifies Capabilities by evaluating higher-level abstractions that represent various functionalities of the system to be developed. Upon empirical analysis (of a library system) we determine that neither approach is sufficient in isolation. Therefore, we formulate a computationally viable algorithm by reconciling specific aspects of measurement from the synthesis and decomposition approaches. In particular, it uses the cohesion and coupling measures as defined by the decomposition algorithm and the abstraction level as determined by the synthesis algorithm. We construct specific metrics to compute cohesion and coupling. In addition, we objectively define and illustrate the characterization of a balanced abstraction level. An experiment with a Course Evaluation system confirms the efficacy of Capabilities in increasing its change- tolerance.
Keywords
References
Full Text: PDF


