modelling and verification of component compatibility by
play

Modelling and Verification of Component Compatibility by Composition - PowerPoint PPT Presentation

Modelling and Verification of Component Compatibility by Composition MOCA'04 Third Workshop on Modelling of Objects, Components and Agents Aarhus, Denmark October 11-13, 2004 Donald C. Craig and Wlodek M. Zuberek Department of Computer


  1. Modelling and Verification of Component Compatibility by Composition MOCA'04 Third Workshop on Modelling of Objects, Components and Agents Aarhus, Denmark October 11-13, 2004 Donald C. Craig and Wlodek M. Zuberek Department of Computer Science Memorial University of Newfoundland St. John's, Canada A1B 3X5 1

  2. Complexity in Software Engineering • Construction of large-scale software projects is becoming increasingly dif- �cult as architectures become more sophisticated. • To combat complexity, there has been a natural, evolutionary trend from low-level constructs to higher-level abstractions in the software engineering process: – structured programming – object-oriented programming – aspect-oriented programming – architecture description languages • In recent years, component-based software engineering has been proposed as a means of mitigating the complexities associated with construction of large software architectures. 2

  3. Component Background • Informal de�nitions of components are numerous. For example: �An independently deliverable piece of functionality providing access – to its services through interfaces.� Alan W. Brown (2001) An Overview of Components and Component-Based Development. �A software component is a unit of composition with contractually – speci�ed interfaces and explicit context dependencies only. A soft- ware component can be deployed independently and is subject to composition by third parties.� Clemens Szyperski (2002) Component Software : Beyond Object-Oriented Programming (second edition). • Before an attempt can be made to automate analysis of component systems, formal de�nitions of component must be proposed. Such de�nitions are beginning to appear in the literature. • Component compatibility is required for reusability and substitutibility in software development and maintenance. 3

  4. Petri Net Interface Model • It is assumed that internal behavioural semantics of components are unim- portant and the behaviour can be described as a set of service sequences (or a set of sequences of interface operations). • This behaviour is represented by a (cyclic) labelled Petri net: M i = ( P i , T i , A i , S i , ℓ i , m i ) , ℓ i : T i → S i , m i : P i → { 0 , 1 , . . . } . Different services are represented by different labels from the set S i . • Component interactions occur between requester interfaces ( r-interfaces ) and provider interfaces ( p-interfaces ). The same component can have sev- eral r-interfaces and several p-interfaces. b c d a 4

  5. Petri Net Model � Interface Languages • The behaviour of an interface M i is described by a protocol or language which is the set of all (initial) �ring sequences, F ( M i ) . • A single �ring sequence σ from this set is: t ij σ = t i 1 t i 2 . . . t i k ⇔ ( ∀ 0 < j ≤ k : t i j ∈ E ( m i j − 1 ) ∧ m i j − 1 → m i j ) ∧ m i 0 = m i , where E ( m ) is the set of transitions enabled by the marking m . • The language of M i , denoted by L ( M i ) , is de�ned as: L ( M i ) = { ℓ ( σ ) | σ ∈ F ( M i ) ∧ ℓ ( σ ) is a complete sequence of operations } , where ℓ ( t i 1 . . . t i k ) = ℓ ( t i 1 ) . . . ℓ ( t i k ) and a complete sequence of operations represents a session of requester/provider interactions ( i.e. , a cycle of an interface model). 5

  6. Interface Composition An r-interface M i = ( P i , T i , A i , S i , ℓ i , m i ) composed with a p-interface M j = ( P j , T j , A j , S j , ℓ j , m j ) creates a new net M ij = ( P ij , T ij , A ij , S i , ℓ ij , m ij ) , provided that S i ⊆ S j and where: P i ∪ P j ∪ { p t i : t i ∈ ˆ t j : t j ∈ ˆ T i } ∪ { p ′ t j , p ′′ P ij = T j } , where ˆ T i = { t ∈ T i : ℓ i ( t ) � = ε } , ˆ T j = { t ∈ T j : ℓ j ( t ) � = ε } , T i ∪ T j − ˆ i : t i ∈ ˆ T i ∪ { t ′ i , t ′′ = T i } , T ij A i ∪ A j − P i × ˆ T i − ˆ = T i × P i ∪ A ij { ( p i , t ′ i ) , ( t ′ i , p t i ) , ( p t i , t ′′ i ) , ( t ′′ i , p k ) , ( t ′ i , p ′ t j ) , ( p ′ t j , t j ) , ( t j , p ′′ t j ) , ( p ′′ t j , t ′′ i ) : t i ∈ ˆ T i ∧ t j ∈ ˆ T j ∧ ℓ i ( t i ) = ℓ j ( t j ) ∧ ( p i , t i ) ∈ A i ∧ ( t i , p k ) ∈ A i } , if t ∈ T i ,  ℓ i ( t ) ,  if t ∈ T j , ℓ j ( t ) , ∀ t ∈ T ij : ℓ ij ( t ) = otherwise ; ε,  if p ∈ P i ,  m i ( p ) ,  if p ∈ P j , ∀ p ∈ P ij : m ij ( p ) = m j ( p ) , otherwise . 0 ,  6

  7. Interface Composition (cont'd) A composition, for a single interface operation, can be illustrated as fol- lows: Requester t ′ t ′′ a i i . . . . . . . . . . . . p i p k p i p t i p k t i p ′ p ′′ t j t j Provider a a . . . . . . . . . . . . t j t j Before After 7

  8. Component Compatibility • In the composed net, all (nontrivially) labelled transitions are shared by both interfaces. • Any string generated by the resulting composition can also be generated by each interface: The language of the composition of two interfaces with the same al- phabet S , an r-interface M i and a p-interface M j , M i ✄ M j , is the intersection of L ( M i ) and L ( M j ) , L ( M i ✄ M j ) = L ( M i ) ∩ L ( M j ) . • The compatibility of two components can be checked by detecting dead- locks in the composed net: Two interfaces with the same alphabet S , an r-interface M i and a p-interface M j are incompatible iff the composition M ij = M i ✄ M j contains a deadlock. 8

  9. Example 1 Consider database client and server components. The server (provider) supports an open operation ( a ) , followed by any number of read/write op- erations in any order ( b | c ) ∗ followed by a close operation ( d ) . The interface language of the client (requester) is a subset of this language. Requester a d b c b c a d Provider 9

  10. Example 1 (cont'd) Provider language L P = ( a ( b | c ) ∗ d ) ∗ ; requester language L R = ( a ( bc ) ∗ d ) ∗ Note: L R ⊆ L P , so L R ∩ L P = L R . M ij = M i ✄ M j is deadlock-free ⇒ M i is compatible with M j . Requester b c a d Provider 10

  11. Example 1 (cont'd) Swapping the provider and requester in the previous example, so L P = ( a ( bc ) ∗ d ) ∗ and L R = ( a ( b | c ) ∗ d ) ∗ , results in composition that exhibits a dead- lock as shown below: Requester b c a d Provider L R �⊆ L P , M i is incompatible with M j . 11

  12. Example 2 Context free languages ( e.g. nested transactions on a database). Before composition: Requester b c a d a b c d Provider 12

  13. Example 2 (cont'd) Context free languages ( e.g. nested transactions on a database). After composition: Requester a b c d Provider 13

  14. Conclusions and Future work • Static and dynamic component aspects must be understood in order to determine compatibility. • Compatibility can be checked by representing the interface behaviours as Petri nets and then composing them. – If the resulting net exhibits deadlock, then the components are not com- patible. – Deadlock detection � structural techniques can be applied given the presence of cyclic subnets. • Hierarchical representations of component interfaces in complex software architectures follows the same approach. • Dynamic recon�guration/collaboration between components may be possi- ble. (Self assembling software?) 14

Recommend


More recommend