Funco is the only automated tool for measuring functional cohesion. It measures the extent to which a module approaches the ideal of functional cohesion. For each function in an input source, Funco creates "data slices" and generates three measures: Weak Functional Cohesion (WFC), Strong Functional Cohesion (SFC), and Adhesiveness (A). These measures are based on the interactions between data slices. Funco also generates summary and related statistics for the input source file.
Module cohesion indicates how closely related a module's internal components are to one another. A highly cohesive software module has one basic function and is indivisible---it is difficult to split a cohesive module into separate components. Cohesion is related to the ease of debugging, maintainability, and modifiability.
Cohesion was originally assessed subjectively; such assessments cannot be automated. As a result, cohesion has not been effectively used as a software quality indicator.
Funco, a new cohesion measurement tool, can objectively assess the functional cohesion of C modules. Measurements are based on the relative number of ``glue'' or ``adhesive'' data tokens that lie on module ``output data slices,'' a sequence of data tokens with a dependence relationship on an output. ``Glue tokens'' are data tokens common to more than one data slice and ``superglue tokens'' are common to every data slice. The adhesiveness of a data token is the number of data slices to which the data token is common.
Weak functional cohesion (WFC) is the ratio of glue tokens to the total number of tokens. Strong functional cohesion (SFC) is the ratio of superglue tokens to the total number of data tokens. Adhesiveness (A) is the ratio of the amount of adhesiveness to the maximum possible adhesiveness.
Click here to see an example Funco computation (postscript).
Funco now computes a set of design-level cohesion measures. These measures are based on the cohesion indicated by the interface of a C function. More details will be posted soon.
Choices: