09.08.2013 Views

Specification of an Architecture Meta-Model - SPES 2020

Specification of an Architecture Meta-Model - SPES 2020

Specification of an Architecture Meta-Model - SPES 2020

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Specification</strong> <strong>of</strong> <strong>an</strong> <strong>Architecture</strong> <strong>Meta</strong>-<strong>Model</strong><br />

template, whose parameters are being bound by the parameter substitutions owned by<br />

TI.<br />

Aggregations<br />

• parameter : Parameter [0..*] The parameters <strong>of</strong> this template.<br />

• parameterSubstitution : ParameterSubstitution [0..*] The bindings <strong>of</strong> this templatable<br />

element realization.<br />

Associations<br />

• template : TemplatableElement [0..1] If present, the templatable element at<br />

the end <strong>of</strong> the template association is the template that this templatable element<br />

is realizing.<br />

Operations<br />

• isTemplate() : Boole<strong>an</strong> Returns true iff this templatable element is playing the<br />

role <strong>of</strong> template, i. e. if it has parameters.<br />

context TemplateableElement<br />

post: result = self .parameter→notEmpty()<br />

• isRealization() : Boole<strong>an</strong> Returns true iff this templatable element is playing<br />

the role <strong>of</strong> template realization, i. e. if it has parameter substitutions.<br />

context TemplateableElement<br />

post: result = self .parameterSubstitution→notEmpty()<br />

Constraints Templatable elements are subject to the following constraints:<br />

1. A templatable element that is playing the role <strong>of</strong> template realization must have<br />

a corresponding template (a templatable element that is playing the role <strong>of</strong> template<br />

accessible via the template role):<br />

context TemplatableElement inv RealisationsHaveTemplates:<br />

self .isRealisation() implies self .template→notEmpty()<br />

2. All the parameter substitutions <strong>of</strong> a template realization are for parameters that<br />

belong to the template <strong>of</strong> this realization:<br />

context TemplatableElement inv MySubstitutionsAreForMyTemplateFormals:<br />

self .parameterSubstitution→forAll(ps |<br />

self .template.parameter→includes(ps.formal))<br />

24/135

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

Saved successfully!

Ooh no, something went wrong!