ניתוח ועיצוב מערכות תוכנה אביב 2012

29
תתתתת תתתתתת תתתתתת תתתתת תתתת2012 יייייי יייייי יייייייOCL ייייי ייייי ייייייי יייייי1

description

ניתוח ועיצוב מערכות תוכנה אביב 2012. תרשימי מחלקות ואילוצי OCL פתרון שאלות ממבחנים קודמים. מועד א 2009 אביב – סיפור מקרה משאלה 1. לפניכם תיאור חלקי של מערכת ניהול כנסים אקדמיים. במערכת זו מגוון משתמשים: מנהל מערכת, מנהל כנס , מעריכים ומחברים. - PowerPoint PPT Presentation

Transcript of ניתוח ועיצוב מערכות תוכנה אביב 2012

Page 1: ניתוח ועיצוב מערכות תוכנה אביב 2012

ניתוח ועיצוב מערכות תוכנה

2012אביב ואילוצי מחלקות OCLתרשימי

קודמים ממבחנים שאלות פתרון

1

Page 2: ניתוח ועיצוב מערכות תוכנה אביב 2012

1 אביב – סיפור מקרה משאלה 2009מועד א :לפניכם תיאור חלקי של מערכת ניהול כנסים אקדמיים. במערכת זו מגוון משתמשים

מנהל מערכת, מנהל כנס, מעריכים ומחברים. מנהל המערכת יכול להגדיר כנסים, ומשתמשים. מנהל כנס יכול לצרף מעריכים

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

הודעות שונות לאוכלוסיות השונות תוך שימוש במערכת הדוא"ל הקיימות. .מעריך, יכול להירשם למערכת ולבצע הערכה על המאמרים שהוגדרו עבורו את ההערכה הוא מבצע עפ"י קריטריונים שמגדיר מנהל הכנס כאשר בכל קריטריון

. מחבר יכול להגיש מאמר, לקרוא את ההערכות בגמר 10 ל 1סולם הציונים נע בין תהליך ההערכה. יכולים להיות מספר מחברים לאותו מאמר. לכל המשתמשים

באתר נשמרים אותם הפרטים של שם, תואר, מוסד ודוא"ל. כדי להגיש מאמר, תחילה נרשם המחבר. רק לאחר הרישום הוא יכול לבצע הגשה

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

2

Page 3: ניתוח ועיצוב מערכות תוכנה אביב 2012

3

1 אביב – זיהוי נתונים משאלה 2009מועד א ראשית נבחין מיהם השחקנים בסיפור המקרה : מנהל מערכת, מנהל כנס, מעריכים

ומחברים. ,זיהוי של אלמנטים נוספים פרט לשחקנים : כנסים, מאמרים, הערכות של מאמרים

קריטריונים לצרכי הערכה וקטגוריות המאמר. נקודה למחשבה – האם כדאי להשתמש באסוציאציות כדי לתאר את תפקידי

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

Page 4: ניתוח ועיצוב מערכות תוכנה אביב 2012

הגישההנלהבת: ללכת לפי

הסיפור, ולבנות

מחלקות ולקשר

ביניהן בלי לחשוב

פעמיים – "צמוד

לטקסט". )טיוטה(

4

Page 5: ניתוח ועיצוב מערכות תוכנה אביב 2012

.זה יעבוד :אבל

משתמשים מסוגים שונים

יורשים ממחלקה אחת. מה

ההבדלים? משתמש

שמפרסם – הוא מחבר.

משתמששמפרסם

ביקורת – הוא מעריך.

?מחבר-מעריך 5

Page 6: ניתוח ועיצוב מערכות תוכנה אביב 2012

גרסה משופרת – צמצום במחלקות ובקשרים

6

מי מגדיר קריטריון לכנס?מי מגדיר קטגוריה למאמר?

משתמש לא יכול לנהל כנס? )ניתן לפתרון?(

Page 7: ניתוח ועיצוב מערכות תוכנה אביב 2012

פתרון

ניתן לעלות על כל הקישורים שהוצעו בגוף השאלה באמצעותניווט.

מס' הנחות היו נחוצות – למשל, לכנס מנהל אחד בלבד, מנהלכנס חייב להיות בעל כנס אחד לפחות בבעלותו, וכו'...

7

Page 8: ניתוח ועיצוב מערכות תוכנה אביב 2012

1 אביב – תרשים מחלקות לשאלה 2009מועד א

8

Page 9: ניתוח ועיצוב מערכות תוכנה אביב 2012

9

1 אביב – הוספת אילוצים לשאלה 2009מועד א לפניכם מספר אילוצים בשפה טבעית למערכת שתוארה לעיל. עליכם לבדוק האם

. אם כן יש לכותבו, אם לא יש להסביר מדוע אינו OCLנדרש לכתוב את האילוץ ב-נדרש :

מחברים.5למאמר יכולים להיות עד 1.

מאמר לא יכול להיות מוערך ע"י אחד ממחבריו.2.

.3מספר המאמרים שמגיש מחבר בקטגוריה אחת לא יכול להיות גדול מ-3.

בכל אחד מהקריטריונים.5ממוצע ציוני מעריך צריך להיות גדול מ-4.

ממוצע ההערכות של המאמרים בכל קטגוריה צריך להיות זהה.5.

Page 10: ניתוח ועיצוב מערכות תוכנה אביב 2012

10

1 אביב – טיפול באילוצים בשאלה 2009מועד א

מחברים.5למאמר יכולים להיות עד 1.

5 עד 1לא נדרשת הוספת אילוץ – הטיפול כאן יעשה ע"י הוספת ריבוי של באסוציאציה של בעל תפקיד ומאמר.

מאמר לא יכול להיות מוערך ע"י אחד ממחבריו.2.

בין קבוצת מחברי המאמר ומעריכי המאמר : excludesAllנשתמש ב-

Context Paper inv: reviewers->excludesAll(authors)

.3מספר המאמרים שמגיש מחבר בקטגוריה אחת לא יכול להיות גדול מ-3.

נמצא את אסופת כל הקטגוריות של מאמרים שכתב מחבר, עבור כל קטגוריה מאמרים :4נאסוף את כל המאמרים שנכתבו ע"י המחבר הנוכחי, ונדרוש פחות מ-

Context Person inv :

authored.category->forAll(c|c.paper->select(authors->includes(self))->size()<4)

Page 11: ניתוח ועיצוב מערכות תוכנה אביב 2012

11

1 אביב – טיפול באילוצים בשאלה 2009מועד א

בכל אחד מהקריטריונים.5ממוצע ציוני מעריך צריך להיות גדול מ-4.

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

לכל קטגוריה :5ונדרוש שמספר זה יהיה גדול מ-

Context Person inv: review.criterion forAll(c| (self.review.evaluation select(criterion =c).gradesum()/self.review.evaluation select(criterion =c).gradesize())>5)

Context Category inv:Category.allInstances->forAll( c1, c2|c1.paper.review.evaluation.grade sum()/c1.paper.review.evaluation.gradesize() =c2.paper.review.evaluation.gradesum()/c2.paper.review.evaluation.grade size())

Page 12: ניתוח ועיצוב מערכות תוכנה אביב 2012

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

חופשי(..לאחר ההזנה, הבקשה עוברת לאישור מנהל מחלקה.במידה שהמנהל מאשר את הבקשה, היא עוברת למחלקת רכש בעת הטיפול בבקשות, לכל בקשה בוחרת מחלקת הרכש את הספק הרצוי מרשימת

ספקים המתקבלת ממערכת חיצונית )אבל מנוהלת במערכת(, מחליטה על המחיר ופותחת בקשת רכישה חדשה.

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

על פעילות המערכת.

12

Page 13: ניתוח ועיצוב מערכות תוכנה אביב 2012

13

1 אביב – זיהוי נתונים משאלה 2009מועד ב .זיהוי שחקנים: עובדים, מוצרים, קטגוריות, ספקים, בקשות:זיהוי קשרים בין האלמנטים

עובדים מזמינים מוצריםמוצרים משתייכים לקטגוריותבקשות מסופקות ע"י ספקיםאותם ספקים מספקים מוצריםישנו עובד – מנהל – שמאשר את הבקשות

?כיצד נבדיל בין עובדים של מחלקות שונות?כיצד נבדיל בין עובד רגיל לבין מנהל המחלקה שלו?כיצד נבדיל בין בקשה שהוגשה וטרם אושרה לבין בקשה מאושרת ומתומחרת?כיצד נאפשר עריכה מחודשת של ההזמנה )הבקשה( המקורית?אלמנטים שקופים: המפעל / החברה? מחלקת הרכש? מנהל המפעל

Page 14: ניתוח ועיצוב מערכות תוכנה אביב 2012

14

אביב – שרטוט ראשוני2009מועד ב

Page 15: ניתוח ועיצוב מערכות תוכנה אביב 2012

15

אביב – שרטוט ראשוני + פירוט2009מועד ב

Page 16: ניתוח ועיצוב מערכות תוכנה אביב 2012

16

אביב – שרטוט ראשוני + פירוט2009מועד ב

Page 17: ניתוח ועיצוב מערכות תוכנה אביב 2012

17

2# אביב – ניסיון 2009מועד ב

Page 18: ניתוח ועיצוב מערכות תוכנה אביב 2012

18

1 אביב – תרשים מחלקות לשאלה 2009מועד ב

Page 19: ניתוח ועיצוב מערכות תוכנה אביב 2012

19

Error: every Employee is also a manager???

1 אביב – תרשים מחלקות לשאלה 2009מועד ב

Page 20: ניתוח ועיצוב מערכות תוכנה אביב 2012

20

Solves Many Problems!!!

1 אביב – תרשים מחלקות לשאלה 2009מועד ב

Page 21: ניתוח ועיצוב מערכות תוכנה אביב 2012

21

Can Supplier supply Products?

1 אביב – תרשים מחלקות לשאלה 2009מועד ב

Page 22: ניתוח ועיצוב מערכות תוכנה אביב 2012

22

• Approval is only relevant inthe context of ApprovedRequest!

• Differences in Multiplicites )Category-Product(

• Differences in Department-Employee association )Regular vs. Composition(

אביב – השוואה בין פתרונות2009מועד ב

Page 23: ניתוח ועיצוב מערכות תוכנה אביב 2012

23

1 אביב – הוספת אילוצים לשאלה 2009מועד ב לפניכם מספר אילוצים בשפה טבעית למערכת שתוארה לעיל. עליכם לבדוק האם

. אם כן יש לכותבו, אם לא יש להסביר מדוע אינו OCLנדרש לכתוב את האילוץ ב-נדרש :

פריטים במהלך שנה.5עובד יכול להזמין עד 1.

.100סך כל הפריטים שעובד יכול להזמין צריך להיות קטן מ-2.

לכל בקשה יש רק הזמנה אחת.3.

לא יכולה להיות הזמנה לבקשה שאינה מאושרת ע"י מנהל המחלקה של העובד.4.

פריטים מכל קטגוריה.10הבקשות של עובדים מאותה מחלקה צריכים לכלול עד 5.

Page 24: ניתוח ועיצוב מערכות תוכנה אביב 2012

24

1 אביב – טיפול באילוצים בשאלה 2009מועד ב

פריטים במהלך שנה.5. עובד יכול להזמין עד 1

Context Employee inv Max5OrdersPerYear:let years : Set(Integer) = issued.date.year()->asSet() inyears forAll(y : Year | self.issued select(o : OrderRequest |o.date.year() == y)

size() <= 5)

Page 25: ניתוח ועיצוב מערכות תוכנה אביב 2012

25

1 אביב – טיפול באילוצים בשאלה 2009מועד ב

.100. סך כל הפריטים שעובד יכול להזמין צריך להיות קטן מ-2

Context Employee inv Max100Products:Issued.Product size() < 100

Page 26: ניתוח ועיצוב מערכות תוכנה אביב 2012

26

1 אביב – טיפול באילוצים בשאלה 2009מועד ב

לכל בקשה יש רק הזמנה אחת.. 3

. האילוץ מתקיים. )רק 0..1. הריבוי הוא PurchaseOrder אלי OrderRequestננווט מ-.(לכל היותרהזמנה אחת

Page 27: ניתוח ועיצוב מערכות תוכנה אביב 2012

27

1 אביב – טיפול באילוצים בשאלה 2009מועד ב

. לא יכולה להיות הזמנה לבקשה שאינה מאושרת ע"י מנהל המחלקה של העובד.4

אם היא מאושרת ע"י מנהל המחלקה – אזי, בקיצור, היא מאושרת!

Context PurchaseOrder inv approved:status = true

Page 28: ניתוח ועיצוב מערכות תוכנה אביב 2012

28

1 אביב – טיפול באילוצים בשאלה 2009מועד ב

. לא יכולה להיות הזמנה לבקשה שאינה מאושרת ע"י מנהל המחלקה של העובד.4

התשובה הקודמת נלקחה מן הפתרון הרשמי. אם נרצה לפרט יותר, אזי:

context PurchaseOrder inv approvedByManager:status implies ((נניח כאן כי 'סטטוס' הנו משתנה בוליאני

issued.Department.manager.approvedBy->includes(self)

Page 29: ניתוח ועיצוב מערכות תוכנה אביב 2012

29

1 אביב – טיפול באילוצים בשאלה 2009מועד ב

פריטים מכל קטגוריה.10הבקשות של עובדים מאותה מחלקה צריכים לכלול עד . 5

Context Department inv Max10ItemsPerCategory:Worker.issued.product.category asSet() forAll(c:Category | self.worker.issued.product

select (p:Product |p.category = c) size() < 10)