Facoltà di scienze informatiche

Automatically generated runtime checks for design-level constraints

Wuttke, Jochen ; Pezzè, Mauro (Dir.)

Thèse de doctorat : Università della Svizzera italiana, 2010 ; 2010INFO002.

In recent years, component- and service-orientation has gained importance as the new paradigm in software engineering, and it has introduced the challenge of dynamic component look-up and binding into the validation and verification process. This introduces a new class of inherently dynamic properties that have to be verified when the system is running in its target environment rather than... Plus

Ajouter à la liste personnelle
    Summary
    In recent years, component- and service-orientation has gained importance as the new paradigm in software engineering, and it has introduced the challenge of dynamic component look-up and binding into the validation and verification process. This introduces a new class of inherently dynamic properties that have to be verified when the system is running in its target environment rather than at development time. Additionally, the separation of interface specification and the implementation combined with uses of Application Programming Interfaces (API) in contexts not envisioned by their developers often lead to subtle faults and consequent failures that are hard to diagnose. This problem is exacerbated when components or services are bound dynamically during deployment, and hence are not known during development and testing. One important implication of this is that it significantly limits the assurance of quality and reliability that testing at development time can give. Consequently, more quality assurance has to take place after the deployment of systems at runtime. Most runtime verification techniques rely on monitoring state and behavior of systems and reasoning over the measured data to verify whether or not pre- defined properties are maintained. This dissertation is about runtime monitoring for structural design-level properties of component-based software systems. Such properties arise for example when a framework imposes requirements that must be met by all components, including components developed by third parties, connected within the framework. The working hypothesis is that there are useful design-level properties, violations of which lead to failures that exhibit enough commonalities to distinguish them from failures caused by other defects, and that these clusters of failures can be exploited to define reusable runtime monitoring mechanisms. Based on this hypothesis, this dissertation's first contribution is a set of design-level properties that can be identified by clearly distinct classes of failure. Using these failure classes as guideline, the second contribution is defining templates for runtime monitors. These templates are similar in spirit to design patterns, even though their implementation is solving a monitoring, rather than a software design problem. The third contribution is a specification language to express the identified properties in design models, and a tool processing such models to automatically generate effective runtime monitors for the specified properties. The applicability of the identified properties and the effectiveness of the generated monitors is assessed in several case studies.