Object-oriented design is a methodology that identifies potential objects and classes by analysing programming models, allowing you to solve complex problems with real-world implications. Basing software design on entities in the real world maximises the chance that software architecture will age and evolve gracefully, primarily because the choice of objects remains stable.

In this unit, you will learn about and apply standard software design principles such as SOLID, DRY, KISS and YAGNI. Crucially, you will learn how such designs are professionally communicated and used in agile design processes.