S.O.L.I.D, GRASP And Other Basic Principles of Object Oriented Design