Reagarding software programming, it boils down to: Partitioning, Hierarchy and Independence.