Solid as a System of Constructive Constraints in Software Architecture Design | Synapse