A method for reducing arbitrary complexity in reusable embedded systems code - the frame technology idiom
Many software development efforts aim at building more reusable software, for example through product line engineering approaches such as PuLSE. In the embedded systems application domain, the dominant programming languages C and C++ offer a rich spectrum of mechanisms for handling variability. However, most organizations have adopted ad-hoc mechanisms, resulting in overly complex code that cannot be reused in the long term. For example, a monoculture of conditional compilation forces all modules to consist of parts with different change rates, while mechanisms that depend on programming language semantics disallow extension at arbitrary variation points. Thus, ad-hoc implementations lead to unnecessary variability management complexity, which increases the effort for understanding, using and evolving the code as a whole. Our method aims at reducing variability management complexity by guiding the developer through the variability implementation process, so that the code contains just enough complexity as required in the given context. This paper discusses one sub-element of the method's support components: the frame technology mechanism, which generalizes the reuse concepts of most other mechanisms, such as cloning, polymorphism, conditional compilation, or aspect-orientation.