Keep It Small and Simple (KISS) ==> need to partition into modules.
Divide and Conquer
Strive for
High Cohesiveness in each module ==> focus on a single activity.
Public processing model should be simple even though there may be complex internal details.
Strive for
loose coupling ==> refer to abstractions, not implementations.
Use Interfaces to support plug-in instances of any class derived from the interface.