Section: New Results

Leveraging Software Architectures to Guide and Verify the Development of Sense/Compute/Control Applications

A software architecture describes the structure of a computing system by specifying software components and their interactions. Mapping a software architecture to an implementation is a well known challenge. A key element of this mapping is the architecture's description of the data and control-flow interactions between components. The characterization of these interactions can be rather abstract or very concrete, providing more or less implementation guidance, programming support, and static verification.

In this work, we have introduced a notion of behavioral contract that expresses the set of allowed interactions between components, describing both data and control-flow constraints [15] . This declaration is part of the architecture description, allows generation of extensive programming support, and enables various verifications. We have instantiated our approach in an architecture description language for the domain of Sense/Compute/Control (SCC) applications, and described associated compilation and verification strategies.

The main contributions of this work are the following:

  • We have introduced a language for behavioral contracts dedicated to SCC applications.

  • We have shown that behavioral contracts can effectively guide the implementation of SCC applications by enabling the generation of highly customized programming frameworks using a dedicated compiler. This approach ensures the conformance between the architecture and the implementation, while facilitating software evolution.

  • We have shown that such descriptions are precise enough to verify safety properties such as information flow reachability or behavioral invariants.

  • Based on an implementation of behavioral contracts in a design language targeting SCC applications, we haved assessed the benefit of behavioral contracts at a conceptual level and in terms of metrics on the resulting code.