Reducing Complexity Through Modular Design

When a product is built from components how should the components be organized to maximize the performance, quality, and reliability of the product? The question is based on the assumption that the attributes or features of the product are based on the interactions between its component parts. The more components and interactions between these components, the more complex the end product becomes, making it harder to test, maintain, and operate reliably. Reducing complexity is therefore key to improving product quality.

The article below explores this question of reducing complexity through modular design in the context of building a software product. How should a product be divided into a set of component parts and how should these components be hooked up to minimize complexity and maximize quality? These questions are central to software architecture and much more, spanning organizational design, process design (supply chain, manufacturing, etc.),  project management, and curriculum design, to name just a few.

Through modeling and simulation we discover a couple of basic and widely applicable principles for reducing product complexity through modular design. Read on...

[If you have trouble reading the document in the window below, download the PDF.]