Rethinking the Use of Models in Software Architecture

  • Authors:
  • Danilo Ardagna;Carlo Ghezzi;Raffaela Mirandola

  • Affiliations:
  • Dipartimento di Elettronica e Informazione, Politecnico di Milano, Milano, Italy 20133;Dipartimento di Elettronica e Informazione, Politecnico di Milano, Milano, Italy 20133;Dipartimento di Elettronica e Informazione, Politecnico di Milano, Milano, Italy 20133

  • Venue:
  • QoSA '08 Proceedings of the 4th International Conference on Quality of Software-Architectures: Models and Architectures
  • Year:
  • 2008

Quantified Score

Hi-index 0.00

Visualization

Abstract

Models play a central role in software engineering. They may be used to reason about requirements, to identify possible missing parts or conflicts. They may be used at design time to analyze the effects and trade-offs of different architectural choices before starting an implementation, anticipating the discovery of possible defects that might be uncovered at later stages, when they might be difficult or very expensive to remove. They may also be used at run time to support continuous monitoring of compliance of the running system with respect to the desired model. This paper focuses on models that support reasoning about non-functional system properties -- namely, performance and reliability. It provides a taxonomy, which tries to capture the main facets that are needed to understand, choose, and use models appropriately in the various phases of software development and operation. The paper also focuses on the roundtrip from models to reality and back. The forward path is followed in model-driven development. The backward path is instead meant to enable model calibration, with the goal of building adequate abstractions, which reflect reality and its properties in a faithful manner. Calibration may be required because of flaws in the initial model or in the process that derived the implementation, or because of changes that occurred in the environment or in the requirements. This leads to the idea that models should continue to live at run time, on-line with the running implementation. Calibrated models may drive the necessary dynamic changes that may support self-adaptation of the implemented system.