From: BW
To: Editor
Date: 03/23/2003
In On
Microsoft’s Nonsense you quote RP as follows:
There is some interesting illogicality elsewhere in the book
too:
A component whose services are closely related is said to
have high cohesion ...
Ineffective types of cohesion include the following: ...
Coincidental: Operations are grouped without any apparent relationship.
How can lack of any relationship be a form of cohesion, if a
high level of cohesion means a close relationship?
These definitions of cohesion are not Microsoft's, nor are
they nonsense. They are well-known terms used in many software design texts
relating to the design of modules (or components, classes, packages or whatever
the current buzzword happens to be). For instance, they are described by Budgen
in "Software Design", 2003, 0-201-72219-4, who credits Stevens,
Yourdon and Constantine for their introduction in the 1970s.
Cohesion provides a measure of the extent to which parts of a
component are 'functionally related' (this is a slightly-reworded version of
Budgen's text). Ideally all parts of the component should be present for one
purpose. These ideas about modularity can be traced back to Parnas's work on
modular decomposition.
Coincidental cohesion is undesirable because it introduces
dependencies, which increase the impact of changes on unrelated modules. The
module's parts do not have a conceptual link. They cohere because they are part
of the same module, but the module's cohesion is said to be low because there
is no good reason for including such disparate parts in the same module.
Modules with low cohesion often have names like 'Misc' or 'Lib'. Such names
should operate as a red flag to the thinking practitioner.
From: Fabian Pascal
To: BW
If you noticed, I did not specifically address the specific
issue--I am not a software developer and cannot judge it. However:
·
the fact that something is widely used in the industry
does not mean it is right; in fact, that fact alone makes it suspect;
·
ditto for anything [about data management] introduced
by the likes of Yourdon or Constantine (some of our weekly quotes reflect
that);
·
a lot of terminology and concepts used in the industry
are poorly defined, fuzzy, inconsistent, etc. This is particularly true in
software development/programming, which is mostly engineering, not science.
That's one reason why OO concepts are fuzzy—they’re rooted in programming.
It's the latter point, I think, that RP was making.
Posted
10/17/03
[ABOUT]
[QUOTES]
[LINKS]