Section: Scientific Foundations
Today, protocols constitute a frequently used means to precisely define, implement, and analyze contracts between two or more hardware or software entities. They have been used to define interactions between communication layers, security properties of distributed communications, interactions between objects and components, and business processes.
Object interactions  ,  , component interactions  ,  ,  and service orchestrations  are most frequently expressed in terms of regular interaction protocols that enable basic properties, such as compatibility, substitutability, and deadlocks between components to be defined in terms of basic operations and closure properties of finite-state automata. Furthermore, such properties may be analyzed automatically using, e.g., model checking techniques  ,  .
However, the limited expressive power of regular languages has led to a number of approaches using more expressive non-regular interaction protocols that typically provide context-free or turing-complete expressiveness  ,  . While these protocol types allow conformance between components to be defined (e.g., using unbounded counters), property verification can only be performed manually or semi-automatically.
Furthermore, first approaches for the definition of aspects over protocols have been proposed, as well as over regular structures  and non-regular ones  ,  . The modification of interaction protocols by aspects seems highly promising for the integration of aspects and components : since interaction protocols are part of a component interface, component implementations remain strongly encapsulated. To the contrary, since protocols make information about the implementation explicit, they allow aspects to modify certain implementation characteristics in a controlled manner. However, only few researchers have started to explore this trail  .