Software design patterns are evaluated and recognised architectural solutions for recurring design problems. They are often described in pattern catalogues that contain known patterns for a certain application domain, for example, patterns for object-oriented software by Gamma et al. or patterns for distributed computing by Buschmann et al.. However, design patterns are still often misunder…