Concern-Oriented Reuse
Concern-oriented Reuse (CORE) is an new software development paradigm introduced by my research team in 2013 that combines the ideas of Model-Driven Engineering (MDE), advanced modularization techniques (aspects), and software product lines, to address the challenge of how to enable broad-scale, model-based reuse. A concern is a unit of reuse that groups together software artifacts (models and code,) describing properties and behaviour related to any domain of interest to a software engineer at different levels of abstraction. A concern provides three interfaces [#kienzle2016b]: The variation interface (VI) describes required design decisions and their impact on high-level system qualities, both explicitly expressed using feature and impact models in the concern specification. The customization interface (CI) allows the chosen variation to be adapted to a specific reuse context, while the usage interface (UI) defines how the functionality encapsulated by a concern may be used. CORE streamlines the reuse process by allowing a developer to a) choose a desired variant (from the VI), adapt the chosen models to the reuse context (with the CI), and then CORE offers the developer the possibility delay design decisions.
To demonstrate the effectiveness of CORE, we developped a tool called TouchCORE, which runs on Mac, Windows and Linux and ships with a library of reusable software development concerns encapsulating reusable models (feature models, goal models, class diagrams, sequence diagrams and state diagrams) and implementations. Check out the TouchCORE page for more information on TouchCORE and to download the latest versions.