Practice Problems Practice software design principles - guidelines for developers on creating robust, maintainable & extensible software systems.