Module interconnection languages
Journal of Systems and Software
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Program fragments, linking, and modularization
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Software architecture in practice
Software architecture in practice
N degrees of separation: multi-dimensional separation of concerns
Proceedings of the 21st international conference on Software engineering
ACM Transactions on Programming Languages and Systems (TOPLAS)
Generative programming: methods, tools, and applications
Generative programming: methods, tools, and applications
Implementing product-line features by composing aspects
Proceedings of the first conference on Software product lines : experience and research directions: experience and research directions
Implementing product line variabilities
SSR '01 Proceedings of the 2001 symposium on Software reusability: putting software reuse in context
CLU Reference Manual
Building product populations with software components
Proceedings of the 24th International Conference on Software Engineering
ICSR-7 Proceedings of the 7th International Conference on Software Reuse: Methods, Techniques, and Tools
Predicate Dispatching: A Unified Theory of Dispatch
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
AOP: Does It Make Sense? The Case of Concurrency and Failures
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
Interfaces for Modular Feature Verification
Proceedings of the 17th IEEE international conference on Automated software engineering
Handling Preprocessor-Conditioned Declarations
SCAM '02 Proceedings of the Second IEEE International Workshop on Source Code Analysis and Manipulation
Relaxed MultiJava: balancing extensibility and modular typechecking
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
IEEE Transactions on Software Engineering
Variability management with feature models
Science of Computer Programming - Special issue: Software variability management
Classbox/J: controlling the scope of change in Java
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Feature oriented refactoring of legacy applications
Proceedings of the 28th international conference on Software engineering
New Methods in Software Product Line Development
SPLC '06 Proceedings of the 10th International on Software Product Line Conference
Verifying feature-based model templates against well-formedness OCL constraints
Proceedings of the 5th international conference on Generative programming and component engineering
cJ: enhancing java with safe type conditions
Proceedings of the 6th international conference on Aspect-oriented software development
Safe composition of product lines
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Research challenges in the tension between features and services
Proceedings of the 2nd international workshop on Systems development in SOA environments
Expressive and safe static reflection with MorphJ
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Building a Family of Compilers
SPLC '08 Proceedings of the 2008 12th International Software Product Line Conference
Expressive and modular predicate dispatch for Java
ACM Transactions on Programming Languages and Systems (TOPLAS)
Fitting the pieces together: a machine-checked model of safe composition
Proceedings of the the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
SAT-based analysis of feature models is easy
Proceedings of the 13th International Software Product Line Conference
Automated analysis of feature models 20 years later: A literature review
Information Systems
An analysis of the variability in forty preprocessor-based software product lines
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Using symbolic evaluation to understand behavior in configurable software systems
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Type safety for feature-oriented product lines
Automated Software Engineering
An algebraic foundation for automatic feature-based program synthesis
Science of Computer Programming
Variability modeling in the real: a perspective from the operating systems domain
Proceedings of the IEEE/ACM international conference on Automated software engineering
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Compositional type-checking for delta-oriented programming
Proceedings of the tenth international conference on Aspect-oriented software development
Proceedings of the sixth conference on Computer systems
Symbolic model checking of software product lines
Proceedings of the 33rd International Conference on Software Engineering
The road to feature modularity?
Proceedings of the 15th International Software Product Line Conference, Volume 2
Variability-aware parsing in the presence of lexical macros and conditional compilation
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
The Choice Calculus: A Representation for Software Variation
ACM Transactions on Software Engineering and Methodology (TOSEM)
Intraprocedural dataflow analysis for software product lines
Proceedings of the 11th annual international conference on Aspect-oriented Software Development
Comparing approaches to implement feature model composition
ECMFA'10 Proceedings of the 6th European conference on Modelling Foundations and Applications
Variance and generalized constraints for C# generics
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
Type checking annotation-based product lines
ACM Transactions on Software Engineering and Methodology (TOSEM)
Variability in software: state of the art and future directions
FASE'13 Proceedings of the 16th international conference on Fundamental Approaches to Software Engineering
Scalable analysis of variable software
Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
Towards modular analysis of multi product lines
Proceedings of the 17th International Software Product Line Conference co-located workshops
Extending Type Inference to Variational Programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.00 |
Module systems enable a divide and conquer strategy to software development. To implement compile-time variability in software product lines, modules can be composed in different combinations. However, this way, variability dictates a dominant decomposition. As an alternative, we introduce a variability-aware module system that supports compile-time variability inside a module and its interface. So, each module can be considered a product line that can be type checked in isolation. Variability can crosscut multiple modules. The module system breaks with the antimodular tradition of a global variability model in product-line development and provides a path toward software ecosystems and product lines of product lines developed in an open fashion. We discuss the design and implementation of such a module system on a core calculus and provide an implementation for C as part of the TypeChef project. Our implementation supports variability inside modules from #ifdef preprocessor directives and variable linking at the composition level. With our implementation, we type check all configurations of all modules of the open source product line Busybox with 811~compile-time options, perform linker check of all configurations, and report found type and linker errors -- without resorting to a brute-force strategy.