240 likes | 441 Views
שם המאמר המוצג: . Towards a UML Profile for Software Product Lines - U3. Support And Service Systems. התחום: . סמינר בהנדסת תוכנה הפקולטה למערכות מידע אוניברסיטת חיפה Dec. 2010. מציגים: נסי אוטמזגין ענבל ממן. מה במצגת. מתוך המאמר רקע כללי.
E N D
שם המאמר המוצג: Towards a UML Profile for Software Product Lines - U3 Support And Service Systems התחום: סמינר בהנדסת תוכנה הפקולטה למערכות מידע אוניברסיטת חיפה Dec. 2010 מציגים: נסי אוטמזגין ענבל ממן
מה במצגת... מתוך המאמר • רקע כללי. • מידול התחום באמצעות Class Diagram. • MetaModel ל- Sequence Diagram. • מידול התחום באמצעות Sequence Diagram. • שלבי המעבר ממידול תחום למידול מוצר. מידול התחום support and service systems • מידול התחום באמצעות Class Diagram. • מידול התחום באמצעות Sequence Diagram. מסקנות
רקע- הגדרת מושגים UML הינה שפה כללית לאיפיון, תכן, בניה ותיעוד של מערכות תוכנה הכוללת מספר תרשימים שונים למידול ביניהם Use Case Diagram, Class Diagram, Sequence Diagram. התאמת "אוצר המילים" במאמר של UML (UML PROFILE) לתחומים ספציפיים נעשית באמצעות: <<<<Stereotypes סוג חדש של אלמנט מידול בעל מבנה דומה לאלמנט קיים אך עם אילוצים נוספים, סימון חדש, פירוש וטיפול שונים בכל אובייקט. Tagged values מחרוזות תגים ומחרוזות הערכים. מחרוזות אלו שומרות מידע על אלמנט המידול (tag-name=tag-value). Constraints}} אילוץ סמנטי המצוי בטקסט. האילוץ יכול להיכתב בצורה מתמטית פורמלית או לא פורמלית. באמצעות סימונים אלו נוכל להרחיב את מידול ה-UML של ה- MetaModel.
רקע- אודות המאמר • המאמר עוסק בהרחבת שיטת ה- UML 2 והוספת סימונים לשיטה, לצורך התאמת המידול לתחומים השונים. • המאמר מציג את מידול קו המוצרים (תחום) באמצעות הרחבת UML 2 תוך שימוש ב- Class Diagram ו- Sequence Diagram ובתוספת של Stereotypes, tagged values and structural constraint, לצורך יצירת הפרופיל הרצוי. • התחום עליו מודגמת השיטה במאמר הינו Software Product Lines engineering.
הצגת הבעיה האתגר במידול האתגר העומד בפנינו בעת מידול התחום Software Product Lines (PL), הינו הקוטביות במידול: מחד, המידול צריך להיות מספיק רחב, כך שכל מוצר שייגזר ממודל התחום יהיה שייך לתחום. מאידך, המידול צריך להציג שונותכזו שתאפשר יצירת מוצרים בעלי שונות מהותית (לא כל המוצרים בעלי אותה פונקציונליות) אך עדיין להיכלל תחת תחום אחד. נבחין בשונויות: the development time variability- שונות בתחום. the run time variability- השונות בשלב של המוצר הספציפי. UML כולל מספר טכניקות כגון: inheritance, cardinality rang and class templateהמאפשרות לתאר את השונות של מוצר בודד שאותה פותרים "בזמן ריצה".
מידול התחום באמצעות Class Diagrams • לצורך המידול, ניעזר בדוגמא הבאה: • נתונה מצלמה דיגיטלית הכוללת: • ממשק • כרטיס זיכרון • חיישן • מסך (תצוגה) • דוחס תמונה (אופציונאלי). • השונות המרכזית בדוגמא: • הדוחס והפורמט של התמונה הנתמך על גבי כרטיס הזכרון, הפורמט יכול להיות פרמטרי אשר תלוי בממשק מסויים, יש 3 ממשקים אשר נקראים interface1, inteface2, and interface3. • הרחבה ל- Class Diagram • ה-class משמש לתיאור מבני של המערכת באמצעות מחלקות וקשרים ביניהן. במקרה הנדון נוכל להבחין ב- Stereotypes השונים, בשונה מה-class שאנו מכירים.
מידול התחום באמצעות Class Diagrams • Stereotypes • Optionality • פירושו שחלק מהתכונות או האובייקטים הם אופציונאליים כך שיתכן שיופיעו רק בחלק מהמוצרים. • יוצג באמצעות <<optional>> ויכול להתקיים על Classes, Packages, attributes or operations • מבצע הרחבה ל - Meta ClassClassifier, Package and Feature • Variation • ה- Variation Point ימודל באמצעות Inheritance ו- Stereotypes כל VP יוגדר כמחלקה אבסטרקטית עם סט או מספר מחלקות יורשות. • המחלקה האבסרקטית תתואר באמצעות Stereotypes<<Variation>> וכל מחלקה יורשת תתואר כ- <<variant>> • מוצר ספציפי יכול לבחור (בשלב הגזירה) אחד או יותר variant • במקרים בהם רוצים למנוע בחירה מרובה או חוסר בחירה, יש להוסיף Constraint באמצעות OCL (Object Constraint Language) (יוצג בהמשך) • Constraint • ניתן להגדיר בנוסף גם אילוצים מבניים, לדוגמא: הגדרה של אילוץ שאחראי על כך שניתן יהיה לבחור variant אחד בלבד בתוך ה-variation, יוצג באופן פורמאלי באמצעותObject Constraint Language : • context <<variant>> • inv: self.supertype→ select(oclIsKindOf(Variation))→size()=1
מידול MetaModel הרחבה ל- sequence diagram תרשים ה- SD מאפשר להציג היבטים שונים של המערכת, תהליכים, אינטראקציות, ביצוע מבחנים למוצרים ועוד. נוכל להבחין במידול באמצעות Stereotypes ו- tagged value. התרשים הבא מתאר את ה-metamodel של UML 2.0 עבור sequence diagram.
מידול התחום באמצעות Sequence diagram • Optionality • ניתן לבחור עבור אובייקט או אינטראקציה. • עבור אובייקט <<optionalLifeline>>- פירושו שהאובייקט יופיע רק בחלק מהמוצרים. • עבור אינטראקציה << optionalInteraction >>- פירושו שהאינטראקציה יכולה להופיע רק בחלק מהמוצרים. • מבצע הרחבה ל- Lifeline ב- Metamodel • Variation • ה- Variation Point מתייחס לכך שעבור מוצר מסויים ניתן להשתמש רק ב- Interaction variant אשר הוגדר ב- variation point כחלק מקו המוצרים ויכול להכיל סט של Sub interaction. • אופן ההצגה של ה- variation point יהיה <<variation>> ושל ה- variant הוא <<variant>>. • יש להוסיף לכל variant תיוג (tagged value) אשר מציג את ה-VP שממנו לקוח ה-variant, אופן התיוג: {variation = variation(name of the variation point)} • Virtuality • מייצג איזור בתרשים שבו תיתכן הרחבה לכל מוצר בנפרד, באמצעות sequence נוסף. • הייצוג מתבצע באמצעות <<virtual>> ומבצע הרחבה ל- interaction Metaclass • Constraint • ניתן להגדיר בנוסף גם אילצוים מבניים, לדוגמא: הגדרה של אילוץ שאחראי על כך שניתן יהיה לבחור variant אחד בלבד בתוך ה-variation, יוצג באופן פורמאלי ב-OCL: • context <<variant>> • inv: self.enclosingInteraction→ select(oclIsKindOf(Variation)→ size()=1 Conrtraint-
הרחבות על ה-Metamodel הצגת ההרחבות על ה- Metamodel - ההרחבות של Class Diagram מוצגות כ- Static Aspect וההרחבות של Sequence Diagram מוצגות ב-Dynamic Aspect
מעבר ממודלתחום למודל מוצר • תיאור התהליך • פרופיל ה-UML מכיל (בנוסף ל- stereotypes, tagged values and constraint) סט של חוקים אופרטיביים (operation rules) להגדרת השימוש בפרופיל ויצירת קוד (code generation). • באמצעות חוקים אלו "נגזור" את מידול המוצר מתוך מידול התחום. • שלבי המעבר ממידול התחום למידול המוצר: • הגדרת generic constraint - אילוצים אלו יחולו על כל המוצרים בתחום. • הגדרת specific constraint - חל רק על מוצרים ספציפיים מתוך התחום, מבוצע רק בסיום השלב ראשון. • Product Model Derivation- לכל מוצר בנפרד, נגזור את המודל מתוך התחום.
שלבי המעבר ממידול תחום למידול מוצר שלב ראשון: הגדרת generic constraint השימוש ב-optionality בתרשים ה-UML, מאפשר אמנם ליצור מודל גנרי, אך עם זאת, יכול ליצור גם חוסר עקביות. במקרה בו קיים במידול התחום רכיב המתויג כ"non-optional" התלוי ברכיב "optional"בעת גזירת הרכיבים במודל המוצר לא נוכל להכניס רכיב "non-optional" וכך למעשה נקבל מודל חסר ללא כל הקשרים והתלויות. context Dependency inv: self.supplier exists(S:ModelElement | S.isStereotyped (’optional’)) implies self.client forAll( C:ModelElement | C.isStereotyped(’optional’) ) שלב שני: הגדרת specific constraint אחד ממאפייני ה- PL הינו התלות בין הרכיבים כך שבחירה של רכיב אחד גורר לעיתים ביטול (או הפעלה) של בחירת רכיב אחר. context Model Inv: self.presenceClass(’C1’) implies not self.presenceClass(’C2’)) and (self.presenceClass(’C2’) implies not self.presenceClass(’C1’)) שלב שלישי: Product Model Derivation בשלב זה נגזור את המוצרים השונים מתוך המודל התחום. DeriveProduct(PLModel : Model):Model pre: –check generic constrains on PLModel post: – check specific constraints on the derived product model.
דוגמא 1– Class Diagram מידול מוצר מתוך מידול התחום:
דוגמא 2– Seq. Diagram מידול מוצר מתוך מידול התחום:
Support and service systems – Sequence diagram 1 תרשים 1SD מציג את התהליך מהשלב שה- Client מתחיל תהליך בקשת סיוע מהמערכת
Support and service systems – Sequence diagram 1 תרשים 1SD מציג את התהליך מהשלב שה- Client מתחיל תהליך בקשת סיוע מהמערכת
Support and service systems – Sequence diagram 2 תרשים 2SD מציג את התהליך מהשלב שה- HelpDesk Worker מתחיל תהליך של טיפול בבקשת ה-Client למתן סיוע במערכת
Support and service systems – Sequence diagram 2 תרשים 2SD מציג את התהליך מהשלב שה- HelpDesk Worker מתחיל תהליך של טיפול בבקשת ה-Client למתן סיוע במערכת
מסקנות תרשים Class: • שיטת UML מיועדת למידול מפרט מערכת. הגרסה העדכנית היא UML 2.X , הכוללת 13 סוגי תרשימים. • השיטה מיועדת למהנדסי תוכנה, מהנדסי תעשייה וניהול, מתכנתים, לצורך אפיון מערכות המחשוב ותהליכים בארגון. • המאמר מציג הרחבות לפרופיל ה-UML עבור Software Product Lines engineering. • המאמר מציג את שלבי המעבר ממידול תחום למידול אפליקציה (מוצר) באמצעות חוקים אופרטיביים (operation rules) להגדרת השימוש בפרופיל ויצירת קוד (code generation). • ההרחבות מתייחסות ל-class diagram, sequence diagrams ומוגדרות ב- UML 2.0 MetaModel. • הפרופיל הממיר תרשים לקוד טרם יושם, אך יש כוונה ליישמו על UMLAUT שהוא כלי ייעודי ליצירת קוד מתוך תרשימי UML. כיום נעשה ניסיון לביצוע תהליך כזה עם MTL ( meta- transformation language), אך התהליך עדיין בבנייה.
Thank you Questions???