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
Jan 06, 2018
Towards an Aspect-oriented Language Module:Aspects for Petri Nets
Tim Molderez, Bart Meyers, Dirk Janssens and Hans Vangheluwe
AnsymoAntwerp 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
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
4
Running example
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
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
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.
8
Weaver1. 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.
9
10
VisitorCounter aspect
Keeps track of the number of people in the building
11
increaseOnEnter pointcut-advice pair
Tracks all people entering
12
transition pointcut construct
Captures all instances of transitions by name or stereotype
13
Introductions: Allow places to be shared across advice instances and aspects
Introduced places can be a singleton, or per transition
14
Input-output place binding
15
Advice insertion in 3 steps: What happens if increaseOnEnter matches on
T1
16
Simple AspectJ-like precedence mechanism
17
pertransition introduction: One waiting line per entrance
18
tokens pointcut construct: If the building is
full
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
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/dsal12aopn
Contact: [email protected], [email protected] | http://ansymo.ua.ac.be
22
Mapping to Petri nets
No advice
Never applies
increaseOnEnte
r
If building not full
decreaseOnEnte
r
Always applies
moveToWaitingLine
+ increaseOnEnter /
preventEntrance
If building full