Presentation is loading. Please wait.

Presentation is loading. Please wait.

ניתוח מונחה-עצמים Object Oriented Analysis

Similar presentations


Presentation on theme: "ניתוח מונחה-עצמים Object Oriented Analysis"— Presentation transcript:

1 ניתוח מונחה-עצמים Object Oriented Analysis
אפיון מונחה עצמים מבוא להנדסת תוכנה ניתוח מונחה-עצמים Object Oriented Analysis © , ד"ר עמיר תומר מקורות: S. R. Schach: Chapter 11 R. S. Pressman: Chapter 20 מבוא להנדסת תוכנה © , ד"ר עמיר תומר

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

3 מה עומד על הפרק? התבנית מונחית-העצמים (OO paradigm)
שפת הניתוח והתכן UML ניתוח מונחה עצמים מודל מקרי-שימוש (Use-Case) המודל הסטטי: המחלקות החיצוניים המודל הדינמי: מכונת המצבים החיצוניים (לתכן?) המודל הניהולי: תרשים חבילות (לתכן?) © , ד"ר עמיר תומר מבוא להנדסת תוכנה

4 תבנית מונחית עצמים (Object Oriented paradigm) מושגי יסוד
ישות בדידה גבולות וזיהוי מוגדרים מכיל בתוכו (encapsulates) מצב והתנהגות מצב = מבני נתונים - data members, attributes התנהגות = פעולות / פונקציות - member functions, methods מחלקה (class) מתאר (descriptor) של קבוצת עצמים,בעלי מאפיינים משותפים: תכונות פעולות יחסים התנהגות © , ד"ר עמיר תומר מבוא להנדסת תוכנה

5 תוכנה מבנית (structured) [קלאסית]
הפרדת המידע (data) מהפונקציונליות ביצוע התכנית “עץ” קריאות בין מודלים כל מודול מבצע מניפולציות על המידע תכנית מבנית (פונקציות/תהליכים) מבני נתונים (מידע) “קריאות” תכנית ראשית D: מסמך (בעריכה) © , ד"ר עמיר תומר F: קובץ תכנית משנית Open(F) Save(D,F) שגרה / פונקציה שגרה / פונקציה שגרה / פונקציה Open Save מבוא להנדסת תוכנה

6 תוכנה מונחית עצמים המידע והפונקציונליות כמוסים (encapsulated) בתוך “עצמים” ביצוע התכנית העברת “הודעות” בין אובייקטים “הודעות” U : משתמש ... שם עצם מידע פונקציות “Save_Yourself” שם עצם מידע פונקציות D : מסמך ... Save © , ד"ר עמיר תומר “Open_Yourself” “Save_Me(D)” שם עצם מידע פונקציות שם עצם מידע פונקציות F : קובץ ... Open Save מבוא להנדסת תוכנה

7 UML = Unified Modeling Language
שפה (גרפית) לניתוח ולתכן מונחה עצמים (OOA&D) J. Rumbaugh, I. Jacobson & G. Booch, The UML Reference Manual, Addison-Weseley, 1999 התפתחה תוך כדי מיזוג של מספר שיטות: Grady Booch, James Rumbaugh (OMT), Ivar Jacobson (Objectory), פיתוח השפה וכלי CASE בחברת Rational 1997: אומצה כתקן בפועל (ad-hoc standard) ע”י OMG OMG = Object Management Group מעין “ועדה ממליצה” בחסות 800 חברות וארגונים OMG Unified Modeling Language Specification © , ד"ר עמיר תומר מבוא להנדסת תוכנה

8 UML - “מפת דרכים” דרישות מערכת ארכיטקטורת מערכת Use Case Model Class
שחקנים, תרחישים, אופני פעולה ישויות, קשרים, יחסים Class Diagram מקרא: מודל סטטי דינמי ניהולי Activity Diagram לוגיקה, זרימה Package Diagram “חבילות עבודה” State Chart התנהגות Sequence Diagram פונקציונליות, אינטראקציה Component Diagram ארכיטקטורת התוכנה © , ד"ר עמיר תומר פריסת התוכנה על גבי החומרה Deployment Diagram מבוא להנדסת תוכנה

9 ב- 2.0 ישנם 6 דיאגרמות מבניות
גרסאות ל- UML : על 1.5 ו-2.0 ב- 2.0 ישנם 6 דיאגרמות מבניות Class, Object, Component, Composite Structure, Package, Deployment ב-2.0 ישנם 3 דיאגרמות התנהגות Use Case, Activity, StateMachine ב2.0 ישנם 4 דיאגרמות קישור (Interaction) Sequence, Communication, Timing, Interaction Overview ב-2.0 ישנו קינון (Nesting) וקישור משופר בין הדיאגרמות © , ד"ר עמיר תומר מבוא להנדסת תוכנה

10 ניתוח מונחה עצמים וארכיטקטורה
מודל מקרי-שימוש (Use-Case Model) “שחקנים” מקרי-שימוש (use cases) תרחישים תרשים מקרי-שימוש (use-case diagram) המודל הסטטי (Static Model) מחלקות קשרים תלויות תרשים מחלקות (class diagram) המודל הדינמי (Dynamic Model): בד"כ יותר מאוחר, בתכן מצבים מעברים תרשימי מצבים (state-chart diagrams) © , ד"ר עמיר תומר מבוא להנדסת תוכנה

11 דוגמה לניתוח מונחה עצמים: מעלית
רשימת הדרישות המערכת מבקרת n מעליות המשרתות m קומות בכל מעלית יש m כפתורים - אחד לכל קומה עם הלחיצה על כפתור-מעלית הכפתור מואר המעלית מגיעה לקומה המבוקשת הדלתות נפתחות והכפתור כבה בכל קומה, פרט לראשונה ולאחרונה, יש שני כפתורים (לעליה ולירידה) עם לחיצה על כפתור-קומה כאשר מעלית מגיעה לקומה המבוקשת - הדלתות נפתחות והכפתור כבה לאחר השהיה נסגרות הדלתות והמעלית ממשיכה בכיוון המבוקש (אם ישנן בקשות קיימות) כאשר אין בקשות למעלית, היא חונה בקומה הנוכחית כשדלתותיה סגורות © , ד"ר עמיר תומר מבוא להנדסת תוכנה

12 היכן נמצאים האובייקטים? היכן נמצאות הפונקציות?
המערכת מבקרת n מעליות המשרתות m קומות בכל מעלית יש m כפתורים - אחד לכל קומה עם הלחיצה על כפתור-מעלית הכפתור מואר המעלית מגיעה לקומה המבוקשת הדלתות נפתחות והכפתור כבה בכל קומה, פרט לראשונה ולאחרונה, יש שני כפתורים (לעליה ולירידה) עם לחיצה על כפתור-קומה כאשר מעלית מגיעה לקומה המבוקשת - הדלתות נפתחות והכפתור כבה לאחר השהיה נסגרות הדלתות והמעלית ממשיכה בכיוון המבוקש (אם ישנן בקשות קיימות) כאשר אין בקשות למעלית, היא חונה בקומה הנוכחית כשדלתותיה סגורות שמות עצם עשויים לציין אובייקטים פעלים עשויים לציין פונקציות © , ד"ר עמיר תומר מבוא להנדסת תוכנה

13 UML - Use-Case Model דרישות מערכת ארכיטקטורת מערכת אתה נמצא כאן
מקרא: מודל סטטי דינמי ניהולי שחקנים, תרחישים, אופני פעולה ישויות, קשרים, יחסים Use Case Model Class Diagram “חבילות עבודה” Package Diagram © , ד"ר עמיר תומר Activity Diagram לוגיקה, זרימה State Chart פריסת התוכנה על גבי החומרה התנהגות ארכיטקטורת התוכנה פונקציונליות, אינטראקציה Sequence Diagram Component Diagram Deployment Diagram מבוא להנדסת תוכנה

14 תרשים מקרי שימוש (Use-Case Diagram)
שחקנים (Actors) תפקיד שממלא משתמש כלשהו במערכת משתמש אחד יכול למלא תפקידים שונים כותב מאייר עורך שחקן לא חייב להיות אנושי חיישן בקר מקרי שימוש (Use Cases) אופני ההפעלה של המערכת אינטראקציה בין המערכת לבין שחקניה תרחישים (scenarios) חיצוניים © , ד"ר עמיר תומר מבוא להנדסת תוכנה

15 מופעל עם הלחיצה על כפתור במעלית מופעל עם הלחיצה על כפתור בקומה
אפיון מונחה עצמים מבוא להנדסת תוכנה מעלית - UCD System Boundaries תרחיש נסיעה במעלית. מופעל עם הלחיצה על כפתור במעלית Elevator ride the elevator User call the elevator © , ד"ר עמיר תומר תרחיש קריאה למעלית. מופעל עם הלחיצה על כפתור בקומה מבוא להנדסת תוכנה © , ד"ר עמיר תומר

16 קשרים בין Use Cases Extend Include
UC אחד מרחיב UC אחר ע"י תוספת של התנהגות ניתן להגדיר את "נקודת ההסתעפות" (Extension Point) Include UC אחד כולל בתוכו את ההתנהגות של UC אחר © , ד"ר עמיר תומר מבוא להנדסת תוכנה

17 מעלית - UCD מורחב Elevator Technician User Fire Brigade repair &
test <<include>> ride User << include >> מפעיל קריאה / נסיעה כחלק מתהליך הבדיקה Fire Brigade <<extend>> call © , ד"ר עמיר תומר rescue <<extend>> מפעיל קריאה / נסיעה באופנים נוספים תוך שימוש במפתח מיוחד מבוא להנדסת תוכנה

18 ה-UC אמורים לשרת גם את האינטרסים שלהם!
נועד למילוי משימה שתשרת שחקן אחד לפחות רשימת השחקנים ותפקידיהם "המערכת" איננה שחקן! תנאים מקדימים (pre-conditions) מה צריך להתקיים כדי שה-UC יוכל להתבצע כהלכה תנאים לאחר מעשה (post-conditions) מה השתנה לאחר סיום (מוצלח!) של ה-UC תרחיש הצלחה ראשי (MSS = Main Success Scenario) האינטראקציה העיקרית בין השחקנים לבין "המערכת" שתביא לקיום התנאים לאחר-מעשה [ללכת בתל"מ] הסתעפויות (branches) חלופה (alternative) ["אלתר נתיב"] השגת התל"מ באופן שונה חריגה (exception) מסלול שיביא לסיום ה-UC מבלי שיתקיימו התל"מ קיימים גם "בעלי עניין" (stakeholders) ה-UC אמורים לשרת גם את האינטרסים שלהם! © , ד"ר עמיר תומר מבוא להנדסת תוכנה

19 “ride” use-case שחקנים (Actors) תנאים מקדימים (pre-conditions)
משתמש (נוסע) תנאים מקדימים (pre-conditions) המשתמש נמצא בתוך המעלית והמעלית "בכיוון" עלייה תנאים לאחר-מעשה (post-conditions) המעלית הגיעה לקומה המבוקשת הנוסע יכול לצאת מהמעלית © , ד"ר עמיר תומר מבוא להנדסת תוכנה

20 (המשך) “ride” use-case
תרחיש הצלחה ראשי - MSS המשתמש לוחץ על כפתור המעלית של הקומה המבוקשת כפתור הקומה נדלק דלתות המעלית נסגרות המעלית עולה לקומה המבוקשת המעלית נעצרת הדלתות נפתחות כפתור הקומה כבה (אם הגיע לקומה המבוקשת - המשתמש יוצא מהמעלית) לאחר השהיה נסגרות הדלתות הסתעפויות חלופה: הקומה המבוקשת נמצאת מתחת לקומה הנוכחית 4א – המעלית עולה לקומה העליונה ביותר שהתבקשה 4ב – המעלית יורדת לקומה המבוקשת חלופה: "מעלית שבת" 1 – בטל. 4-9 – חוזר בכל קומה בדרך חריגה: עצירת חירום (יזומה ע"י המשתמש) 6-9 – בטלים © , ד"ר עמיר תומר מבוא להנדסת תוכנה

21 UML - Class Diagram דרישות מערכת ארכיטקטורת מערכת אתה נמצא כאן
מקרא: מודל סטטי דינמי ניהולי שחקנים, תרחישים, אופני פעולה ישויות, קשרים, יחסים Use Case Model Class Diagram “חבילות עבודה” Package Diagram © , ד"ר עמיר תומר Activity Diagram לוגיקה, זרימה State Chart פריסת התוכנה על גבי החומרה התנהגות ארכיטקטורת התוכנה פונקציונליות, אינטראקציה Sequence Diagram Component Diagram Deployment Diagram מבוא להנדסת תוכנה

22 תרשים מחלקות (Class Diagram)
מזהה (identifier) מאפיינים (attributes) ממומשים באמצעות מבני נתונים פעולות (operations) ממומשות באמצעות שגרות / פונקציות זיקה (association) בין מחלקות סוג הזיקה (ירושה, הכלה, ...) תפקיד (role) ריבוי (multiplicity) מזהה מאפיינים פעולות © , ד"ר עמיר תומר מבוא להנדסת תוכנה

23 מעלית - תרשים מחלקות (גרסה ראשונה)
Button illuminated: Boolean ירושה inheritance Elevator Button Floor Button communicates with 1 m communicates with 2m - 2 n © , ד"ר עמיר תומר Elevator doors_open: Boolean זיקה association מבוא להנדסת תוכנה

24 מעלית - תרשים מחלקות (גרסה מתקדמת)
Button illuminated: Boolean Elevator Button Floor Button mn 2m - 2 controls controls 1 1 Elevator Controller © , ד"ר עמיר תומר 1 1 controls controls n n Elevator Elevator Doors doors_open: Boolean מבוא להנדסת תוכנה

25 זיקה - association “הכרות” בין עצמים ממחלקות שונות
סוגים מיוחדים של זיקה ירושה, הכללה (inheritance, generalization) הגדרת מחלקה על בסיס מחלקה אחרת הכלה, הקבצה (aggregation) עצם ממחלקה כלשהי “מכיל” עצמים ממחלקה אחרת זוג סדור של שתי מחלקות עצם ממחלקה B "מכיר" עצם ממחלקה A מאפייני הזיקה שם (name) סדר (ordering) האם הזיקה היא מ-A ל-B, או להיפך? תפקיד (role) מה תפקידו של כל אחד מהעצמים בקשר ריבוי (multiplicity) האם הזיקה קיימת תמיד? האם ההכרות היא עם יותר מעצם אחד? © , ד"ר עמיר תומר מבוא להנדסת תוכנה

26 דוגמאות לזיקה name multiplicity Person Insurance Contract Insurance
policy holder Person 1..* 0..* has refers to Insurance Contract 0..1 1 refers to Insurance Policy is expressed in a married to husband wife has 0..* 1 refers to role © , ד"ר עמיר תומר insurer Insurance Company זיקה עצמית self association מבוא להנדסת תוכנה

27 מחלקת זיקה (association class)
לפעמים לזיקה עצמה ניתן לתת מעמד של מחלקה Company Person * 0..* employee employer association class association part visual tie class part © , ד"ר עמיר תומר Job salary boss worker 0..1 * מבוא להנדסת תוכנה

28 ירושה (inheritance) מחלקה B יורשת את מחלקה A: “B is-a A”
B היא תת-מחלקה (sub-class) של A מינוח לא מוצלח, כי ב’ מכילה יותר מאשר א’ B היא הכללה (generalization) של A דוגמאות לירושה: דוגמה רעה: ריבוע יורש מלבן דוגמה טובה: ריבוע ומלבן יורשים מרובע A מאפיינים פעולות B מאפיינים פעולות © , ד"ר עמיר תומר מבוא להנדסת תוכנה

29 הקבצה (aggregation) כל עצם ממחלקה B מכיל עצם (עצמים) ממחלקה A
“A is-part-of B” שני סוגי הקבצה: ל-A יש קיום גם ללא B שמות נוספים: logical aggregation shared aggregation קיומו של A תלוי בקיומו של B physical aggregation non-shared aggregation composition B A © , ד"ר עמיר תומר B A מבוא להנדסת תוכנה

30 דוגמאות להקבצה {ordered} 3..* 1 Point Polygon Circle radius * 1 * 1
הקבצה פיסית (composition) למעגל יש נקודה אחת (מרכז) נקודת המרכז משוייכת אך ורק עם מעגל זה קיומה של נקודת המרכז מותנה בקיומו של המעגל Polygon Circle radius * 1 * 1 © , ד"ר עמיר תומר הקבצה לוגית (aggregation) לפוליגון יש סגנון סגנון יכול להיות משותף למספר פוליגונים הסגנון הוא ישות עצמאית, וקיומו אינו מותנה בקיום פוליגון Style color isFilled כיוון (navigation) המעגל “מכיר” את הסגנון הפוליגון “מכיר” את הסגנון הסגנון אינו נדרש להכיר את העצמים המפנים אליו... מבוא להנדסת תוכנה

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

32 סוגי דרישות שמורה גלובלית (global invariant)
Update ו-Reboot אינם בחפיפה דרישות קדם לפעולות (preconditions) לפני Remove המבנה אינו ריק דרישות על ההשפעה\התוצאה של פעולות (postconditions) Double(x) יחזיר 2x וגם יוציא את x מאוסף המפתחות דרישות התקדמות—מה חייב לקרות: חיות לכל בקשה (query) תהיה התיחסות (reply) © , ד"ר עמיר תומר מבוא להנדסת תוכנה

33 מפרטים פורמליים לוגיקה + מילות מפתח pre , post , inv
Z: שימוש בתורת הקבוצות לתיאור המצב והפעולות ניהול מערכת הקבצים של Unix , מרכזת טלפונים LOTOS: לתיאור מערכות תקשורת דרך תהליכים לוגיקה טמפורלית: תמיד P = P always P = בסופו של דבר P = P eventually P = אינסוף פעמים P =   P © , ד"ר עמיר תומר מבוא להנדסת תוכנה

34 עד כאן: המפרט, ניתוח וארכיטקטורה
בתכן, נרחיב מחלקות ונוסיף מחלקות חדשות יש נוהלי פיתוח עם מפרט מורחב תרשימי מצב, למצבים החיצוניים פירוט ה use-case לדיאגרמת פעילויות (activity diagram) חלוקה ניהולי לחבילות (בהמשך) ניתן ורצוי לשלב שמורות ותנאים © , ד"ר עמיר תומר מבוא להנדסת תוכנה

35 UML - Package Diagram דרישות מערכת ארכיטקטורת מערכת אתה נמצא כאן
מקרא: מודל סטטי דינמי ניהולי שחקנים, תרחישים, אופני פעולה ישויות, קשרים, יחסים אתה נמצא כאן Use Case Model Class Diagram “חבילות עבודה” Package Diagram © , ד"ר עמיר תומר Activity Diagram לוגיקה, זרימה State Chart פריסת התוכנה על גבי החומרה התנהגות ארכיטקטורת התוכנה פונקציונליות, אינטראקציה Sequence Diagram Component Diagram Deployment Diagram מבוא להנדסת תוכנה

36 המודל הניהולי חבילה/מארז = אוסף של ישויות מאותו סוג
Use Cases Classes Packages תלות (dependency) בין חבילות אלמנטים ממחלקה אחת נדרשים "להכיר" אלמנטים ממחלקה אחרת יש לוודא שהתלות בין החבילות איננה מעגלית מפריע לייצוב הפיתוח תרשים חבילות (package diagram) אוסף של חבילות והתלויות שביניהן מהי תלות? © , ד"ר עמיר תומר מבוא להנדסת תוכנה

37 תלות - dependency יחס (relationship) בין שתי ישויות
ישות עצמאית ישות תלויה שינוי כלשהו בישות העצמאית עלול להשפיע על הישות התלויה תלות יכולה להתקיים גם בין ישויות שאין ביניהן זיקה (association) כלשהי לדוגמה: עצם ממחלקה כלשהי מועבר כפרמטר לפונקציה של מחלקה אחרת כיוון התלות לא בהכרח זהה לכיוון הזיקה Building Theater Seat © , ד"ר עמיר תומר מבוא להנדסת תוכנה

38 תרשים חבילות (package diagram) - דוגמה
Presentation Layer GUI Library Order Capture User I/F Mailing List User I/F Application Layer Order Capture Application Mailing List Application © , ד"ר עמיר תומר Data Layer Orders Customers מבוא להנדסת תוכנה

39 אז מה היה לנו...? התבנית מונחית-העצמים (OO paradigm)
שפת הניתוח והתכן UML ניתוח מונחה עצמים מודל מקרי-השימוש (Use-Case) המודל הסטטי: מודל המחלקות המודל הניהולי: תרשים חבילות © , ד"ר עמיר תומר מבוא להנדסת תוכנה

40 וכעת נעבור ל... תכן © , ד"ר עמיר תומר מבוא להנדסת תוכנה


Download ppt "ניתוח מונחה-עצמים Object Oriented Analysis"

Similar presentations


Ads by Google