ON INDUSTRY’S TERMINOLOGY
with Fabian Pascal

 

 

 

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]