Thursday, January 15, 2009

Revisiting Parnas: On the Criteria to be Used in Decomposing Systems into Modules

In the paper called "On the Criteria to be Used in Decomposing Systems into Modules", from 1972*, David L. Parnas discusses modularization as a mechanism for improving flexibility and comprehensibility of a system. David Parnas also emphasizes the shortening of development time because each module can be developed by separate groups. The main point of the paper is the introduction of some criteria that can be used to decompose systems into modules.

A comparison of two different ways to decompose a system is presented. The former decomposition is based on a flowchart, which makes each major part of a process as a module. This kind of decomposition can bring some problems such as:

• Changeability: changes to a specific module require modification of other modules;
• Understandability and Independent Development: modules cannot be understandable or even developed separately.

The second decomposition presented is based on the principles of information hiding, and normally solves the problems listed above. In this case, the modules no longer correspond to steps in the process; each module is characterized by its knowledge of a design decision which it hides from the others. It is also emphasized that the modules’ interfaces must reveal as little as possible about its inner workings.

The design by contract is also commented in the paper, Parnas mentioned that the inputs and outputs of each module must be well defined before implementation starts, what is obvious currently.

In a subsequent post, the remarkable “Uses of the Concept of Transparency in the Design of Hierarchically Structured Systems” shall be discussed.


Wonseok Chae said...

Hi, I have enjoyed your recent posts on Parnas' papers. I also keep reading his papers repeatedly. By the way, on my recent reading on this particular paper, one chapter titled "a decomposition common to a compile and interpreter for the same language" (page 1057) made me interested. In my recent research, I have built a family of compilers (splc 2008) where the decomposition was based on the the classical lines (as Parnas called) instead of his modularization scheme. I understand where he stands but I wonder how better his solution is in the real situation. However, all the detailed seems in the reference [8], which is not available to me. I think you know this material better than I do, so I am wondering if the technical report [8] is available to you or please can you let me have your opinion on this issue?

Thank you,
Wonseok Chae

Ricardo Cavalcanti said...

Another interesting discussion about system decomposition and organization can be found at Shaw and Garlan's Software Architecture.

@chae: I've searched for this tech report as well but nothing was found. Some other significant work from Parnas, e.g. "On A Buzzword..." are not easily available as well. A pity.

Eduardo Almeida said...

Guys, I will contact David about it and its digital copy.

Vinicius Garcia said...

Great news Eduardo! We are waiting this material