A lot knowledge about how to design robust, extensible and maintainable software can be distilled into just five principles known as the S.O.L.I.D. principles.