3. Design Patterns - Definition Definition: a general reusable solution to a commonly occurring problem in software design (Wikipedia). Not a finished design Description or template for how to solve a problem that can be used in many different situations Shows relationships and interactions between classes and/or objects Not all software patterns are design patterns (e.g. algorithms)