Implementing Software Product Lines using Traits
Paper in proceeding, 2009

A software product line (SPL) is a set of software systems with well-defined commonalities and variabilities that are developed by managed reuse of common artifacts. In this paper, we present a novel approach to implement SPL by fine-grained reuse mecha- nisms which are orthogonal to class-based inheritance. We intro- duce the FEATHERWEIGHT RECORD-TRAIT JAVA (FRTJ) calcu- lus where units of product functionality are modeled by traits, a construct that was already shown useful with respect to code reuse, and by records, a construct that complements traits to model the variability of the state part of products explicitly. Records and traits are assembled in classes that are used to build products. This com- position of product functionalities is realized by explicit operators of the calculus, allowing code manipulations for modeling product variability. The FRTJ type system ensures that the products in the SPL are type-safe by type-checking only once the records, traits and classes shared by different products. Moreover, type-safety of an extension of a (type-safe) SPL can be guaranteed by checking only the newly added parts.

Featherweight Java

Software Product Line


Type System

Feature Model


Lorenzo Bettini

Ferruccio Damiani

Ina Schaefer

Chalmers, Computer Science and Engineering (Chalmers), Software Engineering and Technology (Chalmers)

Object Oriented Programming Languages and Systems (OOPS), 25th ACM Symposium on Applied Computing (SAC 2010)

Subject Categories

Computer Science

More information