Foundations for Mastering Change (FoMaC)
Modern systems often evolve significantly and at increasingly fast speed to support new versions of programming languages, software libraries, technology refresh to underlying hardware, dynamically evolving architectures, self-adaptive systems, and updates to address security vulnerabilities. Modern approaches to software development, such as agile methods, embrace the concept that stakeholder needs are not always clearly understood and are likely to change and that the most appropriate technologies and solution strategies are not always known at the outset of development. Systems are increasingly deployed in contexts with uncertainties (e.g., lack of predictable network performance, and possibility of security attacks). Moreover, systems may need to be built on infrastructure whose provenance and levels of assurance are unclear and that may change in unforeseen ways – leading to a situation where frame conditions may be hard to control.
The STTT theme area “Foundations for Mastering Change” (FoMaC) provides a forum for foundational research that fosters a discipline for rigorously dealing with phenomena associated with change and uncertainty. Submissions may address modeling and designing for change, reasoning about semantics and constraints of changes, automatically determining and limiting impacts of changes, generative programming, and other techniques for engineering for adaptivity. Results presented may take the form of new theoretical results, analysis technology, tool support, experience reports and case studies, as well as pragmatics for change, i.e., user-centered approaches that make inevitable changes controllable in practice.
The FoMaC theme area is interested in approaches which span the entire system lifecycle – as indicated below.
Meta-modeling to Address Change 🔗
While the term “meta-modeling” has long been applied to creating “models of models” with a focus on constraining structures of models at a lower modeling tier, FoMaC seeks to broaden the scope to address models of software and system engineering solutions in general – with an emphasis on using meta-models to specify, constrain, and manage change. This includes conventional meta modeling, but extends to generation of and transformations between domain-specific languages, as well as other issues of domain modeling and validation. It also includes broader strategies that support “solution migration and adaption”, i.e., the use of meta-modeling and transformations to systematically adapt solutions from one (application) domain for another domain.
Modeling and Design to Support Variability 🔗
FoMaC seeks contributions that generalize classical modeling to specifically address variability issues, including specifications of allowed/expected variance in the architecture and behavior of systems, locations of and mechanisms for carrying out changes, adaptations, and evolutions, and technologies to maintain structural and semantical properties within the range of modeled variability. This may include extensions of existing methods such as feature modeling, ‘150% modeling’, product-line management, model-to-model transformations, constraint-based (requirement) specification, synthesis-based model completion, model checking, and feature interaction detection.
Realizing and Verifying Change in Implementation 🔗
FoMaC seeks contributions with methods beyond classical parametric and modular programming approaches for realizing and verifying change at the implementation level. This includes techniques that apply and extend aspect orientation, delta programming, program generation, generative programming, and program transformation, as well as extensions of static and dynamic validation techniques such as program verification, symbolic execution, runtime verification, (model-based) testing, and test-based modeling that address adaption and change.
Adaption and Change During Execution 🔗
FoMaC seeks contributions on engineering change during execution including extensions of self-adaptive and self-healing technology, as well as other techniques where methods enable, constrain, steer, and control autonomous evolution of systems during runtime. These methods comprise techniques to achieve fault tolerance, runtime planning and synthesis, higher-order exchange of functionality, hot deployment and failover, and they should go hand in hand with the above-mentioned extensions to dynamic validation techniques, like program verification, symbolic execution, runtime verification, (model-based) testing, test-based modeling, and monitoring.
Long-Term Evolution/Migration 🔗
This level is concerned with the long-term perspective of system evolution, i.e. the part where the bulk of costs is accumulated. Central issues here are the change of platform, the merging of systems of overlapping functionality, the maintenance of downward compatibility, and the support of a continuous (system) improvement process using ‘continuous practices’, as well as continuous quality assurance, comprising regression testing, monitoring, delta testing, and model-based diagnostic features.
Martin Wirsing (LMU Munich, Germany)
Tiziana Margaria (University of Limerick, Ireland)
Theme Editors-in-Chief of FoMaC