Presentation is loading. Please wait.

Presentation is loading. Please wait.

Towards an Aspect-oriented Language Module: Aspects for Petri Nets Tim Molderez, Bart Meyers, Dirk Janssens and Hans Vangheluwe Ansymo Antwerp Systems.

Similar presentations


Presentation on theme: "Towards an Aspect-oriented Language Module: Aspects for Petri Nets Tim Molderez, Bart Meyers, Dirk Janssens and Hans Vangheluwe Ansymo Antwerp Systems."— Presentation transcript:

1 Towards an Aspect-oriented Language Module: Aspects for Petri Nets Tim Molderez, Bart Meyers, Dirk Janssens and Hans Vangheluwe Ansymo Antwerp Systems and Software Modelling

2 Introduction  Building a language from scratch is a large effort: Construct languages by composing modules  Aspect-oriented versions of many different languages →What about an “aspect-oriented language module”? Using the module will add aspect-oriented features to your language 2

3 Introduction  Initial step towards an AO language module: Start with something completely different than commonly used base languages (e.g. Java)  … Petri nets! Non-deterministic, minimal and a different purpose  How do typical AOP features work for Petri nets?  Design the AOP extension in a modular fashion 3

4 Running example 4  P5-P8: represent rooms of a building  «enter», «exit» stereotypes: entrances and exits  Invariant: There may never be more than 30 people inside at the same time.

5 Running example 5  VisitorCounter aspect: Keeps track of how many people are in the building  WaitingLine aspect: Prevents access if the building is full and directs these people to a waiting line

6 AOPN extension overview 6 Base language (PN)Join point model Pointcut languageAdvice language Weaver Composition mechanism

7 Join point model  Whenever a transition is about to fire.  Not affected by non-determinism: Petri net execution has already chosen/determined among all enabled transitions which one will be fired. 7

8 Weaver 1.When a join point is reached, pause Petri net execution. 2.Find all matching pointcuts, given the current state. 3.Use the composition mechanism to arrange the matched pointcuts in the right order. 4.Insert all corresponding advice into the Petri net, in the composition order. 5.Resume Petri net execution. 8

9 9

10 10  VisitorCounter aspect  Keeps track of the number of people in the building

11 11  increaseOnEnter pointcut-advice pair  Tracks all people entering

12 12  transition pointcut construct  Captures all instances of transitions by name or stereotype

13 13  Introductions: Allow places to be shared across advice instances and aspects  Introduced places can be a singleton, or per transition

14 14  Input-output place binding

15 15  Advice insertion in 3 steps: What happens if increaseOnEnter matches on T1

16 16  Simple AspectJ-like precedence mechanism

17 17  pertransition introduction: One waiting line per entrance

18 18  tokens pointcut construct: If the building is full

19 19  Proceed transition: If multiple pointcuts match, insert the next advice at the proceed transition  No proceed transition: To prevent a transition from firing

20 20 Demo

21 Conclusion  Initial step towards an AO language module: Aspect-oriented Petri nets  Future work Study other base languages to refine concept of language module Define the interactions between the module’s components How does adding aspect affect Petri nets’ use for analysis Petri nets suitable language to study interactions among aspects  Download this presentation at: http://tinyurl.com/dsal12aopnhttp://tinyurl.com/dsal12aopn 21 Contact: tim.molderez@ua.ac.be, bart.meyers@ua.ac.be | http://ansymo.ua.ac.be

22 Mapping to Petri nets 22  No advice  Never applies  increaseOnEnter  If building not full  decreaseOnEnter  Always applies  moveToWaitingLine + increaseOnEnter / preventEntrance  If building full


Download ppt "Towards an Aspect-oriented Language Module: Aspects for Petri Nets Tim Molderez, Bart Meyers, Dirk Janssens and Hans Vangheluwe Ansymo Antwerp Systems."

Similar presentations


Ads by Google