    Modular design  Modular design is a generally recognized
Good Thing(tm) in software engineering. As in science in
general, breaking a problem down to smaller, bite-sized pieces
makes it easier to solve. It also allows different people to
solve different parts of the problem and still have it all work
correctly in the end. Each component is then self-contained and,
as long as the interface between different components remains
constant, can be extended or even gutted and rewritten as needed
without causing a chaotic mess.  I should note that modular
design is not the same thing as plugin-based design, which is
what many many open source projects use. Drupal "modules" are
actually plugins. The Linux kernel, Apache, Eclipse, and many
other high-profile projects with "loadable modules" are plugin-
based architectures. Plugin-based architectures are not
incompatible with modular design and in fact complement it well,
but I digress...  Most software architectural patterns are based
around the idea that modular de