Cohesion was first introduced as a software attribute that, when measu
red, could be used to predict properties of implementations that would
be created from a given design. Unfortunately, cohesion, as originall
y defined, could not be objectively assessed, while more recently deve
loped objective cohesion measures depend on code-level information. We
show that association-based and slice-based approaches can be used to
measure cohesion using only design-level information. An analytical a
nd empirical analysis shows that the design-level measures correspond
closely with code-level cohesion measures. They can be used as predict
ors of or surrogates for the code-level measures. The design-level coh
esion measures are formally defined, have been implemented, and can su
pport software design, maintenance, and restructuring.