14
םםםםםם- םםםMetamodels

מטא-מודלים Metamodels. מטא-מודל - דגשים לפתרון לקרוא את הכל – זה ארוך אבל הכל נמצא בפנים ! להסתכל על התרשימים

Embed Size (px)

Citation preview

Page 1: מטא-מודלים Metamodels. מטא-מודל - דגשים לפתרון לקרוא את הכל – זה ארוך אבל הכל נמצא בפנים ! להסתכל על התרשימים

מטא-מודלים

Metamodels

Page 2: מטא-מודלים Metamodels. מטא-מודל - דגשים לפתרון לקרוא את הכל – זה ארוך אבל הכל נמצא בפנים ! להסתכל על התרשימים

מטא-מודל - דגשים לפתרון!לקרוא את הכל – זה ארוך אבל הכל נמצא בפנים.להסתכל על התרשימים הויזואליים ולראות מה מזהים.לקשר בין התמונה לתיאור.)במידת האפשר, לעבוד עם תבניות חוזרות )למשל של גרפים

Page 3: מטא-מודלים Metamodels. מטא-מודל - דגשים לפתרון לקרוא את הכל – זה ארוך אבל הכל נמצא בפנים ! להסתכל על התרשימים

3

(2006)מועד ב, סמסטר סתיו, OPM Metamodel: 1דוגמא

( לפניכם תרשים שנבנה על בסיס מתודולוגית עצמים-תהליכיםOPM המציג חלקית ,)את אבני הבניין שלו:

Page 4: מטא-מודלים Metamodels. מטא-מודל - דגשים לפתרון לקרוא את הכל – זה ארוך אבל הכל נמצא בפנים ! להסתכל על התרשימים

4

)המשך( OPM Metamodel: 1דוגמא

עצמיםבתרשים זה קיימים שני אבני הבניין המרכזיים( Object המיוצגים ע"י ,) דברים, ששניהם נקראים אליפסות(, המיוצגים ע"י Process )תהליכים ומלבנים

(Thing-בעולם ה )OPM( לכל דבר יש שם. לעצם יש בנוסף את סוגו .Type הדברים .)יכולים להיות מקושרים בצורה הבאה:

:בקשרים מבנייםקשר שלם וחלקיו( Composition בו המשתתפים צריכים להיות המשולש השחור המיוצג ע"י – )

מאותו סוג )עצם או תהליך(. קשר זה כולל גם ריבוי של כל אחד מהמשתתפים.קשר מאפיין( Characterization בו אפשרית כל המשולש הלבן עם המשולש השחור המיוצג ע"י – )

קומבינציה בין סוגי הדברים.( קשר הורשהGeneralization בו המשתתפים צריכים להיות מאותו סוג.המשולש הלבן המיוצג ע"י – )

:)בקשרים תהליכיים )פרוצדורליים

.אחד צריך להיות עצם והשני תהליךבכל הקשרים הללו משתתף קשר יצירה(Result Link באות מסומןa.מצביע על יצירת עצם - ) קשר צריכה(Consumption Link באות מסומןb .מצביע על הריסה של עצם – ) קשר שימוש(Instrument Link באות מסומןc מצביע על שימוש בעצם בזמן – )

התהליך לא שינוי לו.כל הקשרים הינם קשרים בינאריים.

יש לבנותmetamodel עבור OPM באמצעות UML .על פי המידע שלעיל -באם יש צורך ניתן להשתמש בOCL.

Page 5: מטא-מודלים Metamodels. מטא-מודל - דגשים לפתרון לקרוא את הכל – זה ארוך אבל הכל נמצא בפנים ! להסתכל על התרשימים

Graph: Nodes and Connectors)Asymmetric, Directed(

1 to 3: email sent to multiple recipients

2 to 1: blending pathways )roads,

rivers…(

Each model has its own requirements!1..* or 0..* can be narrowed using target-specific OCL. For instance, imagine a centipede-like bug with an unbound number of legs )*(, which has to be even:

Context Centipede inv EvenLegs:Legs->size)( modulo 2 == 0

Page 6: מטא-מודלים Metamodels. מטא-מודל - דגשים לפתרון לקרוא את הכל – זה ארוך אבל הכל נמצא בפנים ! להסתכל על התרשימים

Graph: Symmetry vs. Asymmetry

Network

Network relation: all computers are networked.

Friendship

Friendship is a symmetric )undirected( binary association.

Page 7: מטא-מודלים Metamodels. מטא-מודל - דגשים לפתרון לקרוא את הכל – זה ארוך אבל הכל נמצא בפנים ! להסתכל על התרשימים

7

OPM Metamodel: 1פתרון Constraints:

:בקשרים מבנייםבו המשתתפים צריכים קשר שלם וחלקיו

להיות מאותו סוג )עצם או תהליך(.בו המשתתפים צריכים להיות קשר הורשה

מאותו סוג.

context Composition inv sameType:(source->forAll(t:Thing|t.isOclTypeOf(Object)) and destination->forAll(t:Thing|t.isOclTypeOf(Process)))or(destination->forAll(t:Thing|t.isOclTypeOf(Object)) and source->forAll(t:Thing|t.isOclTypeOf(Process)))

:)בקשרים תהליכיים )פרוצדורליים

אחד צריך בכל הקשרים הללו משתתף .להיות עצם והשני תהליך

Context ProceduralLink inv diffType:destination.isOclTypeOf(Object) implies

source.isOclTypeOf(Process)//and vice-versa

Page 8: מטא-מודלים Metamodels. מטא-מודל - דגשים לפתרון לקרוא את הכל – זה ארוך אבל הכל נמצא בפנים ! להסתכל על התרשימים

8

לפניכם דוגמא של תרשיםDFD:

בנוmetamodel עבור תרשימי DFD.

DFD Metamodel: 2דוגמא

ExampleDFD

E1:Lecturer

SetGradeId student,grade

D1 Student

Id student,grade

E2:Student

LookGradeId student,course Grades

E2:Student

Id student,course

GetAllGrade

E3:Secretariat

Id student,course

D1 StudentGrades

Function

Data Flow

Data Store

External entity

Page 9: מטא-מודלים Metamodels. מטא-מודל - דגשים לפתרון לקרוא את הכל – זה ארוך אבל הכל נמצא בפנים ! להסתכל על התרשימים

9

DFD Metamodel: 2פתרון

Constraints The data flow should be between two different elements:

context Dataflow inv: source<>target

For each Entity one Data flow which should either enter or leave: context Entity inv: out->notEmpty() or in-> notEmpty ()

For each Function one Data flow which should either enter or leave:context Function inv: out->notEmpty () or in->notEmpty ()

For each Datastore at least one Data flow should enter and at least one Data flow should leave:context Datastore inv: out->notEmpty () and in->notEmpty ()

Page 10: מטא-מודלים Metamodels. מטא-מודל - דגשים לפתרון לקרוא את הכל – זה ארוך אבל הכל נמצא בפנים ! להסתכל על התרשימים

10

XML Metamodel: 3דוגמא לפניכם דוגמא של קובץxml:

<root> <element [attr1 = value] ….>

<sub-element [attr1 = value]…> content </sub-element> <sub-element [attr1 = value]…> content </sub-element>

</element> </root>

בנוmetamodel עבור xml:לפי הכללים הבאים It contains a root element. All other elements are descendants of the root element.All elements are correctly paired. The element name in a start-tag and an end-tag are exactly the same. Attribute names are used only once within the same element. Nodes

Root Element Node represents a document root. Element Node represents a XML element, with element name property. Text Node represents a text element in the XML document and provides name property Attribute Node represents an attribute of XML element and provides name and value property.

Page 11: מטא-מודלים Metamodels. מטא-מודל - דגשים לפתרון לקרוא את הכל – זה ארוך אבל הכל נמצא בפנים ! להסתכל על התרשימים

11

Constraints: It contains exactly one root element:

context RootNode inv:allInstancessize () = 1

A RootNode doesn’t have a parent node:context RootNode inv:

parentisEmpty() A RootNode doesn’t have a text node:

context RootNode inv:includesTextNode->size() = 0 All other nodes have parents:context XMLNode inv:XMLNode.allInstances->forAll(node:XMLNode|not node.isOclTypeOf(RootNode) implies node.parents->size() == 1) Attribute names are used only once within the

same elementcontext ElementNode inv:childselect(node:XMLNode| node.isOclTypeOf(AttributeNode))isUnique(Name)

XML Metamodel: 3פתרון

Page 12: מטא-מודלים Metamodels. מטא-מודל - דגשים לפתרון לקרוא את הכל – זה ארוך אבל הכל נמצא בפנים ! להסתכל על התרשימים

12

Question:How can we ensure cycle avoidance,in respect to parents and children?

XML Metamodel: 3פתרון

Page 13: מטא-מודלים Metamodels. מטא-מודל - דגשים לפתרון לקרוא את הכל – זה ארוך אבל הכל נמצא בפנים ! להסתכל על התרשימים

13

Possible Solution:Add nestingLevel attribute to

XMLNode to ensure proper nesting.context XMLNode inv:

If self.parent->size() = 0 then self.nestingLevel = 0else self.nestingLevel = self.parent.nestingLevel + 1

XML Metamodel: 3פתרון

0

12

Page 14: מטא-מודלים Metamodels. מטא-מודל - דגשים לפתרון לקרוא את הכל – זה ארוך אבל הכל נמצא בפנים ! להסתכל על התרשימים

שיקולים בפיתרון שאלת מטא-מודל

שני עקרונות מהותיים בכתיבת מטא-מודל, והם שתי החלטות, או איזונים, שעל הממדל/ת להכריע ביניהם:

האם לבטא ריבוי של סוגים באמצעות הרבה יורשים מאב 1. enumמשותף אחד, או באמצעות הוספת שדה "סוג" מטיפוס

.enumוביטוי השוני באמצעות

האם לבטא אילוצים העולים מן השאלה באמצעות תרשים 2..OCLהמחלקות או באמצעות כתיבת אילוצי

לכל שאלה איזון מתאים משלה - לפעמים תרשים פשוט מאוד עם הרבה אילוצים עליו יהיה קריא ומובן יותר מאשר תרשים מורכב

עם מעט אילוצים - ולפעמים ההפך הוא הנכון.