Science of Software Product Lines
Author(s): Don Batory(Collection III)
This text is about compositional programming, where programs are constructed by composing prewritten software building blocks. Three modern examples are covered, listed in order of decreasing emphasis:
- A Software Product Line (SPL) is a design for a family of programs. Each program is composed from predefined increments of program functionality. The Linux Kernel is the largest known SPL whose family size exceeds 102000 distinct programs.
- Model Driven Engineering (MDE) is a general-purpose engineering methodology to support system design, analysis, construction, and evolution. Software designs are expressed as models. Transformations are composed to convert models into other models for analysis, to produce documentation and/or source.
- Streaming Applications (SA) are dataflow graphs whose nodes are compu-tations/boxes with input and output data streams; boxes are wired/composed together to produce a custom program. Examples are Unix pipe-and-filters and distributed stream processing.
Related topics are also covered: OO refactoring engine implementations, automating refactorings and design patterns.
Advanced SPL topics include feature modularity, feature interactions, product-lines of product lines, refactoring engines for SPL codebases, and efficiently searching colossal product spaces. MDE topics include MDE application design, bootstrapping MDE tools, connections of OCL to Relational database algebra, and verifying refactorings of metamodels. Advanced SA topics explore SA product lines.
< Back to Titles in Development List