Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


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

1 מטא-מודלים Metamodels

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

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

4 דוגמא 1: OPM Metamodel (המשך) בתרשים זה קיימים שני אבני הבניין המרכזיים עצמים (Object), המיוצגים ע " י מלבנים ותהליכים (Process), המיוצגים ע " י אליפסות, ששניהם נקראים דברים (Thing) בעולם ה - OPM. לכל דבר יש שם. לעצם יש בנוסף את סוגו (Type). הדברים יכולים להיות מקושרים בצורה הבאה : בקשרים מבניים : קשר שלם וחלקיו (Composition המיוצג ע " י המשולש השחור ) – בו המשתתפים צריכים להיות מאותו סוג ( עצם או תהליך ). קשר זה כולל גם ריבוי של כל אחד מהמשתתפים. קשר מאפיין (Characterization המיוצג ע " י המשולש הלבן עם המשולש השחור ) – בו אפשרית כל קומבינציה בין סוגי הדברים. קשר הורשה (Generalization המיוצג ע " י המשולש הלבן ) – בו המשתתפים צריכים להיות מאותו סוג. בקשרים תהליכיים ( פרוצדורליים ): בכל הקשרים הללו משתתף אחד צריך להיות עצם והשני תהליך. קשר יצירה (Result Link מסומן באות a) - מצביע על יצירת עצם. קשר צריכה (Consumption Link מסומן באות b) – מצביע על הריסה של עצם. קשר שימוש (Instrument Link מסומן באות c) – מצביע על שימוש בעצם בזמן התהליך לא שינוי לו. כל הקשרים הינם קשרים בינאריים. יש לבנות metamodel עבור OPM באמצעות UML על פי המידע שלעיל. באם יש צורך ניתן להשתמש ב -OCL. 4

5 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

6 Graph: Symmetry vs. Asymmetry Network Network relation: all computers are networked. Friendship Friendship is a symmetric (undirected) binary association.

7 פתרון 1: OPM Metamodel 7 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

8 לפניכם דוגמא של תרשים DFD: בנו metamodel עבור תרשימי DFD. דוגמא 2: DFD Metamodel 8 Function Data Flow Data Store External entity

9 פתרון 2: DFD Metamodel 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 () 9

10 דוגמא 3: XML Metamodel לפניכם דוגמא של קובץ xml: content בנו 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. 10

11 Constraints: It contains exactly one root element: context RootNode inv: allInstances  size () = 1 A RootNode doesn’t have a parent node: context RootNode inv: parent  isEmpty() 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 element context ElementNode inv: child  select(node:XMLNode| node.isOclTypeOf(AttributeNode))  isUnique(Name) פתרון 3: XML Metamodel 11

12 Question: How can we ensure cycle avoidance, in respect to parents and children? פתרון 3: XML Metamodel 12

13 Possible Solution: Add nestingLevel attribute to XMLNode to ensure proper nesting. context XMLNode inv: If self.parent->size() = 0 then self.nestingLevel = 0 else self.nestingLevel = self.parent.nestingLevel + 1 פתרון 3: XML Metamodel 13 0 1 2

14 שיקולים בפיתרון שאלת מטא-מודל שני עקרונות מהותיים בכתיבת מטא - מודל, והם שתי החלטות, או איזונים, שעל הממדל / ת להכריע ביניהם : 1. האם לבטא ריבוי של סוגים באמצעות הרבה יורשים מאב משותף אחד, או באמצעות הוספת שדה " סוג " מטיפוס enum וביטוי השוני באמצעות enum. 2. האם לבטא אילוצים העולים מן השאלה באמצעות תרשים המחלקות או באמצעות כתיבת אילוצי OCL. לכל שאלה איזון מתאים משלה - לפעמים תרשים פשוט מאוד עם הרבה אילוצים עליו יהיה קריא ומובן יותר מאשר תרשים מורכב עם מעט אילוצים - ולפעמים ההפך הוא הנכון.


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

Similar presentations


Ads by Google