11.12.2012 Views

Model-Driven Evolution of Software Architectures - Software and ...

Model-Driven Evolution of Software Architectures - Software and ...

Model-Driven Evolution of Software Architectures - Software and ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

144 Chapter7. <strong>Model</strong>-<strong>Driven</strong>Migration<br />

Table 7.1:SMCpr<strong>of</strong>ilestereotypes<br />

Stereotype baseClass description<br />

≪wait≫ State wait for resource state<br />

≪claim≫ Action claim resource action<br />

≪release≫ Action release resources action<br />

≪available≫ Guard resource available guard<br />

≪available≫ Event resource becomes available event<br />

context Action def:<br />

-- an action is a release action if a stereotype named ’release’ is<br />

applied to it<br />

let isRelease : Boolean = self.stereotype->exists(s|s.name=’release<br />

’)<br />

context State def:<br />

-- a state is a wait state if a stereotype named ’wait’ is applied<br />

to it<br />

let isWait : Boolean = self.stereotype->exists(s|s.name=’wait’)<br />

context Event def:<br />

-- an event is an available event if a stereotype named ’available’<br />

is applied to it<br />

let isRelease : Boolean = self.stereotype->exists(s|s.name=’release<br />

’)<br />

-- C1: all release Actions are state exit actions<br />

context Action inv:<br />

isRelease implies State.allInstances->exists(s|s.exit=self))<br />

-- C2: a wait state has at least one outgoing transition triggered<br />

by an available event<br />

context State inv:<br />

isWait implies outgoing->exists(t|t.trigger.isAvailable))<br />

-- C3: state entry actions are actions that execute manufacturing<br />

activities (i.e., without stereotype)<br />

context State inv:<br />

entry.stereotype->isEmpty<br />

-- C4: all state nodes have no more than two incoming <strong>and</strong> outgoing<br />

transitions<br />

context StateVertex inv:<br />

outgoing->size() size()

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!