Mobile Software Engineering

2007-11-15 by tamberg

Decomposing Systems Into Modules

In his classic paper On the Criteria To Be Used in Decomposing Systems into Modules the software engineering pioneer David Parnas introduces modularization as

a mechanism for improving the flexibility and comprehensibility of a system while allowing the shortening of its development time.

He identifies information hiding as the key criterion for a successful decomposition. Individual design desicions are confined to a single module each. The interface or definition of a module should reveal as little as possible about its inner workings, thereby minimizing dependencies and facilitating change.

Since 1972 when the paper was published, a lot of fancy software development methodologies have been coming and going. Nevertheless, we are convinced that modularization as described by Parnas is still the most important engineering skill to learn and master in order to develop good software.