WG211/M14Schaefer

From WG 2.11
Jump to: navigation, search

Variability-Aware Design Patterns (joint work with Sven Schuster and Christoph Seidl)

When developing large and complex software systems, software design is an essential topic. To establish high-quality design, various concepts emerged for individual software, resulting in design patterns as a means to reuse established solutions for recurring design problems. By addressing modularity and variability, specific design patterns allow customization of software. Software product lines (SPL) are an emerging concept to satisfy the demand for customization by reusing commonalities and variabilities within a family of similar software systems. Feature-oriented programming (FOP) is an implementation approach tailored to SPL development, modularizing realization artifacts along features and increasing variability-awareness. While design patterns are defined for individual software, their application in the context of SPLs is yet unknown. We introduce variability-aware design patterns as a means to combine design patterns with feature modularity, which means, applying design patterns in SPLs in a decomposed manner. To analyze the usage of variability-aware design patterns, we conduct a family-based case study on the usage of several GOF-patterns in feature-oriented SPLs. We observed different design patterns being decomposed along features in a similar fashion. Generally, abstractions introducing the general pattern concepts are never decomposed, whereas concrete implementations often are. Using the results, we derive guidelines and application rules for the analyzed design patterns in the context of SPLs. To describe the decomposed application of design patterns in a general fashion, we introduce family role models (FRM) as an extension to role modeling, a modeling approach focusing on role collaborations. We document our findings and derivations in a catalog of variability-aware design patterns.