A good design is the key to a successful product. Almost 2000 years ago, the Roman architect Vitruvius already recorded what makes a design good: durability (rmitas), utility (utilitas) and charm (venustas). These quality requirements still hold, for buildings as well as software systems. A well-designed system is easy to implement, is understandable and reliable, and allows for smooth evolutio...