Subsystem Design Criteria
  The subsystem should have a well-defined
interface through which all communication with
the rest of the system occurs.
  With the exception of a small number of
“communication classes,” the classes within a
subsystem should collaborate only with other
classes within the subsystem.
  The number of subsystems should be kept
small.
  A subsystem can be partitioned internally to
help reduce complexity.