Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Software reuse: architecture, process and organization for business success
Software reuse: architecture, process and organization for business success
Generative programming: methods, tools, and applications
Generative programming: methods, tools, and applications
Implementing product line variabilities
SSR '01 Proceedings of the 2001 symposium on Software reusability: putting software reuse in context
Software product lines: practices and patterns
Software product lines: practices and patterns
Static and dynamic structure in design patterns
Proceedings of the 24th International Conference on Software Engineering
Building product populations with software components
Proceedings of the 24th International Conference on Software Engineering
Design pattern implementation in Java and aspectJ
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Issues Concerning Variability in Software Product Lines
IW-SAPF-3 Proceedings of the International Workshop on Software Architectures for Product Families
A Uniform Approach for Compile-Time and Run-Time Specialization
Selected Papers from the Internaltional Seminar on Partial Evaluation
ASE '00 Proceedings of the 15th IEEE international conference on Automated software engineering
Resolving feature convolution in middleware systems
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Towards just-in-time middleware architectures
Proceedings of the 4th international conference on Aspect-oriented software development
A taxonomy of variability realization techniques: Research Articles
Software—Practice & Experience
Information hiding interfaces for aspect-oriented design
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Proceedings of the 1st ACM SIGOPS/EuroSys European Conference on Computer Systems 2006
Evaluating support for features in advanced modularization technologies
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Modularizing design patterns with aspects: a quantitative study
Transactions on Aspect-Oriented Software Development I
Code generation to support static and dynamic composition of software product lines
GPCE '08 Proceedings of the 7th international conference on Generative programming and component engineering
Flexible feature binding in software product lines
Automated Software Engineering
A system of patterns for reusable aspect libraries
Transactions on aspect-oriented software development VIII
Hi-index | 0.00 |
In a software product line, the binding time of a feature is the time at which one decides to include or exclude a feature from a product. Typical binding site implementations are intended to support a single binding time only, e.g., compile time or run time. Sometimes, however, a product line must support features with variable binding times. For instance, a product line may need to include both embedded system configurations, in which features are selected and optimized early, and desktop configurations, in which client programs choose features on demand. We present a new technique for implementing the binding sites of features that require flexible binding times. Our technique combines design patterns and aspect-oriented programming: a pattern encapsulates the variation point, and targeted aspects---called edicts---set the binding times of the pattern participants. We describe our approach and demonstrate its usefulness by creating a middleware product line capable of serving the desktop and embedded domains. Our product line is based on JacORB, a middleware platform with many dynamically configurable features. By using edicts to select features at compile time, we create a version of JacORB more suited to resource-constrained environments. By configuring four JacORB subsystems via edicts, we achieve a 32.2% reduction in code size. Our examples show that our technique effectively modularizes binding-time concerns, supporting both compile-time optimization and run-time flexibility as needed.