Learn how to develop maintainable software systems applying Design Patterns based on Meta and SOLID Principles