Pattern Understanding
Pattern Understanding | |
Contributors | Christian Köppe |
---|---|
Last modification | May 16, 2017 |
Source | Köppe (2011)[1]; Köppe (2013)[2] |
Pattern formats | OPR Alexandrian |
Usability | |
Learning domain | |
Stakeholders |
Also Known As: Understand Design Patterns, Holistic Pattern Understanding
During the first semesters of their study, students have obtained good knowledge of the basic concepts and techniques of their study. For a computer science student this is knowledge of programming and (object-oriented) principles as well as a good understanding of non-functional requirements like modifiability, reusability, or more general maintainability. You now want to introduce design patterns and make sure that the students understand and apply them as intended.
Design patterns are conceptually different from other programming or design techniques, and not taking this into account when teaching them often results in students applying design patterns in an inappropriate way.
Therefore: ensure that students understand all aspects of design patterns, their lifecycle, and how their use relates to the overall context by addressing these aspects, the lifecycle and the relations explicitly when teaching design patterns.
This pattern is marked as true invariant, because independent of the domain it is important to understand the whole idea of patterns. Also with patterns of domains other than software design people tend to focus mainly on the solution part. This pattern can be implemented by choosing the appropriate patterns of this language, dependent of the domain
and the context the patterns are taught in.
Context
Problem
Forces
Solution
Consequences
Benefits
Liabilities
Evidence
Literature
Discussion
Data
Applied evaluation
Related patterns
Example
References
- ↑ Patlet first published in Köppe, C. (2011). A pattern language for teaching design patterns (part 2). In Proceedings of the 18th Conference on Pattern Languages of Programs (PLoP 2011). New York:ACM.
- ↑ Pattern published in Köppe, C. (2013). A Pattern Language for Teaching Design Patterns. In Transactions on Pattern Languages of Programming III (pp. 24-54). Springer Berlin Heidelberg.