Uncertainty and Variability in Industry-scale Projects: Pearls, Perils, and Pitfalls of Model-Driven Engineering at Work
Alfonso Pierantonio · 2022
The state-of-the-art in software abstraction is model-driven engineering. It provides system architects with abstract representations of complex system functionality, complementary views of a given system (e.g., behavioral versus structural), and vertical refinement of high-level system requirements models into design models and eventually down to (automatically-generated) executable code. However, the complexity caused by the many models used in large-scale projects might give place to significant sources of uncertainty due to (implicit and explicit) dependencies, consistencies, and correlations among the modeling artifacts. Keeping such models consistent during the development process requires spelling out the change requirements that enforce well-thought-out change propagation and co-evolution plans.