The design of software systems is increasingly influenced by the identification and the satisfaction of nonfunctional requirements, such as performance and dependability. The goal is to avoid the costs deriving from the late discovery of inefficiencies. Such inefficiencies may arise because performance and dependability aspects have not been considered in the design phase, or because they have been analyzed separately from functional requirements.

Traditionally, the term performance refers to the quality of service guaranteed by a system, when the system works properly. Typical examples of performance measures include: the throughput of a system, the utilization of its components, the response time experienced by its users, the number of users waiting for service, and the probability of satisfying a request within a given amount of time.

The term dependability refers instead to the reasonable expectations about the service provided by a system, where the service is classified as being proper or improper depending on whether it is provided according to its specification or not. Typical examples of dependability indicators include: reliability, which measures the continuity of the provision of proper service, availability, which quantifies the promptness of the provision of proper service, safety, which regards the absence of catastrophic consequences for the users and for the environment in case of improper service, and security, which determines the robustness of the provision of proper service with respect to direct or indirect attacks from the users and from the environment.

Nowadays, performance and dependability are usually referred to by means of a sole term, performability, expressing the level at which a system is able to perform. The reason is that the performance of a system may degrade in the presence of faults. More precisely, due to faults the quality of service provided by a system can decrease, with the service remaining proper. As a consequence, the merely binary distinction between proper service and improper service is too coarse to be useful, as is an analysis that considers performance aspects only.

By following the modern model-driven software development view, the design of performability-aware systems requires both formalisms for modeling the systems themselves and formalisms for the specification of performability measures. Many such formalisms have been proposed in the literature.

In the former group of formalisms, in a practical setting we have object- and component-oriented visual languages like UML enriched with suitable profiles such as SPT, QOS, and MARTE. At an intermediate level we have modeling languages like Modest, architectural description languages like Ĉmilia, and coordination languages like StoKlaim. Finally, in a theoretical setting we have formal languages and models like stochastic process algebra, probabilistic timed automata, stochastic Petri nets, queueing networks, Markov chains, and fault trees.

In the latter group of formalisms, we have instead stochastic temporal logics like CSL, PTCTL, and MoSL, component-oriented specification languages like MSL, and models like performance trees and reward structures.

The aim of the project PaCo is to contribute to the development and to the integration of logics, models, and languages for the description and the analysis of performability-aware systems. The aim is to allow for the combined use of the formalisms, which in particular equips the most commonly used ones (like, e.g., UML) with the analysis techniques developed in the setting of the more theoretical formalisms.

On the one hand, we plan to study some of the aforementioned formalisms separately, in order to establish new theoretical properties or to make them richer from the expressiveness standpoint, thus advancing the state of the art in the field.

On the other hand, we plan to relate some of the aforementioned formalisms by means of suitable direct transformation functions from source models to object models and inverse functions for the propagation of the results from object models back to source models.

In the context of the first objective (performability models and measures), we will address various issues at different levels.

As regards logics, we plan to investigate the following aspects:

As regards process algebras, we plan to investigate the following aspects:

As regards models, we plan to investigate the following aspects:

As regards the specification of performability measures, we plan to investigate the following aspects:

In the context of the second objective, i.e., performability model transformations, we will investigate the following aspects:

Such results will allow for an improvement of the theoretical knowledge in the setting of logics, algebras, and models with time and probability, as well as an improvement of the methodological knowledge in the context of a combined usage of widely adopted formalisms like UML and formalisms for the modeling and analysis of performability-aware systems. We expect that the aforementioned results can be used in several application domains, like for instance the development of global computing systems, service-oriented systems, and embedded systems, where performability is an increasingly crucial aspect.

Last update: Thu Feb 19 08:59:43 CET 2015