Specification of an Architecture Meta-Model - SPES 2020
Specification of an Architecture Meta-Model - SPES 2020
Specification of an Architecture Meta-Model - SPES 2020
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