מודלים של מחזור חיי תוכנה

מסמכים קשורים
מודלים של מחזור חיי תוכנה

Microsoft PowerPoint - rec3.ppt

מודלים של מחזור חיי תוכנה

Slide 1

Slide 1

מבוא למדעי המחשב

מבוא למדעי המחשב

תרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש

תכנות מונחה עצמים א' – תש"ע

מבוא לתכנות ב- JAVA תרגול 11

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

Slide 1

Microsoft PowerPoint - lec10.ppt

מהוא לתכנות ב- JAVA מעבדה 3

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

מבוא למדעי המחשב

Microsoft PowerPoint - meli-iso.ppt

משימה תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם תרגול מס' 4: המתרגם שימוש במחלקות קיימות תכנות מתק

מודלים של מחזור חיי תוכנה

תוכנה 1 תרגול מספר 12: GUI כתיבת מחלקות גנריות בית הספר למדעי המחשב אוניברסיטת תל אביב 1

תרגול 1

תוכן העניינים

סדנת תכנות ב C/C++

אוניברסיטת בן גוריון בנגב תאריך המבחן: שקולניק אלכסנדר שם המרצה: מר בשפת JAVA מבוא לתכנות מבחן ב: מס' הקורס : הנדסת תעשיה וניהול מ

מבוא למדעי המחשב

PowerPoint Presentation

שאלהIgal : מערכים דו מימדיים רקורסיה:

Microsoft PowerPoint - rec8.ppt

Slide 1

שאלהIgal : מערכים דו מימדיים רקורסיה:

שאלהIgal : מערכים דו מימדיים רקורסיה:

(Microsoft Word - SQL\353\351\345\345\365 \341\361\351\361 \360\372\345\360\351\355 \ doc)

PowerPoint Presentation

מבוא למדעי המחשב

לנץ קרן מרצה: תכנותמונחהעצמים) ( יוםשישי 15 אוקטובר 0202 ב מועד 0202, אביב סמסטר סמסטר סוף מבחן גוטמן אייל רביב, אריאל משנה, אלון מתרגלים: הנחי

תוכן העניינים

PowerPoint Presentation

PowerPoint Presentation

Office 365 ProPlus בחינם לסטודנטים באוניברסיטת בן גוריון בנגב הוראות סטודנטים באוניברסיטת בן גוריון בנגב יכולים להוריד ולהתקין את חבילת התוכנה Office

HTML - Hipper Text Makeup Language

מצגת של PowerPoint

PowerPoint Presentation

מבחן 7002 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדי

Microsoft Word - pitaron222Java_2007.doc

מבוא למדעי המחשב

Microsoft PowerPoint - 07_tdd.ppt

Slide 1

שעור 6

אוניברסיטת חיפה החוג למדעי המחשב.5.6 מבוא למדעי המחשב סמסטר א' תשע"ז בחינה סופית מועד א', מרצה: שולי וינטנר מתרגלים: סמאח אידריס, ראמי עילבו

מבוא למדעי המחשב

ייבוא וייצוא של קבצי אקסל וטקסט

מבחן בפיתוח מערכות תוכנה בשפת Java ( )

Homework Dry 3

מבוא לתכנות ב- JAVA תרגול 7

מקביליות

PowerPoint Presentation

PowerPoint Presentation

מבוא למדעי המחשב - חובלים

1

פייתון

מדריך להתקנת Code Blocks מדריך זה נועד לתאר את תהליך התקנת התוכנה של הקורס "מבוא למחשב שפת C". בקורס נשתמש בתוכנת Code::Blocks עם תוספת )אשף( המתאימה

MethodAgile

יוםראשון, 02 ליולי 2014 סמסטר סוף מבחן )236703( עצמים מונחה תכנות - א' מועד 2014, אביב סמסטר קמחי יחיאל ד"ר מרצה: מסינג מיטל עבדאלקאדר, כרם גלעד, ערן

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

מערכות הפעלה קורס מס'

Microsoft PowerPoint - Lecture1

ex1-bash

Microsoft PowerPoint - 07_tdd.ppt

Microsoft PowerPoint - lec2.ppt

תרגול 1

תורת הקומפילציה

מבוא לאסמבלי

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

Cloud Governance הכלי למזעור סיכונים ומקסום התועלת העסקית

Microsoft PowerPoint - lec9.ppt

PowerPoint Presentation

Microsoft PowerPoint - lec9.ppt

תרגול 1

PowerPoint Presentation

שבוע 4 סינטקס של HACK ASSEMBLY ניתן להשתמש בשלושה אוגרים בלבד:,A,D,M כולם בעלי 16 ביטים. M אינו אוגר ישיר- הוא מסמן את האוגר של ה RAM שאנחנו מצביעים ע

מבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו

תוכן העניינים: פרק צמצומים ומימושים של פונקציות בוליאניות... 2 צמצומים של פונקציות באמצעות מפת קרנו:...2 שאלות:... 2 תשובות סופיות:... 4 צמצום

מבוא למדעי המחשב - חובלים

תרגול 1

תשע"דד אביב תוכנה 1 תרגיל מספר 4 עיבוד מחרוזות וקריאה מקבצים הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס..(

PowerPoint Presentation

Microsoft Word B

Slide 1

2013/14 אוניברסיטת חיפה מבוא למדעי מחשב, מעבדה מטרת המעבדה: לתרגל את המעבר מאלגוריתם לקוד C כמה שיותר. הוראות:.1.2 ניתן לעבוד ביחידים או בזוגות. (יש מ

שקופית 1

Slide 1

תמליל:

תכן תוכנה Software Design תכן תוכנה - 1

CSU Software CSC CSCI System Business פעילות תיכון התוכנה )בגישה מונחית העצמים( מטרת הפעילות הגדרת המודולים )מחלקות מהן יווצרו עצמים( הבונים את התוכנה הקצאת פונקציונאליות למחלקות )מאפיינים ומתודות( קלט ארכיטקטורת התוכנה Diagram) (Component תהליכי התוכנה Diagrams) (Sequence ברמת רכיבים תוצרים מודל מחלקות (Class Diagram) תהליכי תוכנה (Sequence Diagrams) ברמת עצמים תפעול מערכת: שילוב ובדיקות תיקוף אימות מערכת: תהליכים וארכיטקטורה הגדרת דרישות הלקוח ובעלי העניין רמת עניין תוכנה: שילוב ובדיקות אימות תוכנה: תהליכים וארכיטקטורה בניה ובדיקה של רכיבי תוכנה אימות תיכון תוכנה הגדרה ופירוט Definition and Specification זמן מימוש, שילוב ובחינה Implementation, Integration and Testing קידוד ובדיקה של יחידות תוכנה תכן תוכנה - 2

תמונת המצב עד כה בנינו ארכיטקטורה של מערכת התוכנה, המפרטת את הפירוק המערכתי של כל פריט תוכנה )ברמת המערכת( (component diagram) (sequence diagrams) (Use Cases) מטרות: רכיבים: ביצוע תהליכי המערכת Software Components עם תפקידים וממשקים מבנה: הקשרים הפנימיים והחיצוניים באמצעות הממשקים התנהגות: אינטראקציה בין הרכיבים למימוש התהליכים ארכיטקטורה התוכנה מאפשרת גם לתאר את האינטראקציה בין פריטי התוכנה השונים User 1.0 push floor button(dir) Operations Manager :Ongoing Operation Manager El: Request Manager Floor Button Caretaker/Rescuer Commands Operations Manager Direct Direct (elevators) Direct (floors) Testing Manager Technician Commands loop [for all elevators] 1.1 get status(): Floor&Direction 1.2 1.3 El= choose elevator() Floor Buttons on/off Rescue Task Allocation Arrival Reports Status Queries Arrival Reports Status Queries 1.6 Button on() 1.4 new request(int): int 1.5 save request(int) Elev. Button Elev. Buttons on/off Rescue Direct Request Manager Arrival reports Arrival Reports Next Stop Queries Next Stop Queries Status Queries Ongoing Operation Manager Engine Commands Door Commands Emergency Stop Emergency Stop תכן תוכנה - 3

תכן תוכנה )מונחה עצמים( ברמה הבאה בפירוק המערכתי עלינו לפרט עבור כל רכיב component) :(software מטרות : מימוש הפונקציונאליות של הרכיב מרכיבים: מודולי תוכנה )עצמים( מבנה: הקשרים )ההיכרות( בין העצמים השונים התנהגות: האינטראקציה בין העצמים השונים המביאה למימוש הפונקציונאליות Comp1 B A D C a:a b:b c:c B A D C תכן תוכנה - 4

צומת מרומזר לעומת כיכר: מה ההבדל? תכן תוכנה - 5

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

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

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

מרכיבי התוכנה: עצמים ומחלקות עצמים (objects) היחידות הבסיסיות של התוכנה כל עצם מנהל את המידע שבאחריותו באמצעות הפונקציונליות שהוקנתה לו עצמים קיימים בזיכרון המחשב בזמן ריצת התוכנית ניתן לבנות/להרוס עצמים באופן דינמי תוך כדי ריצה = constructor פונקציה הבונה עצם חדש = destructor פונקציה ההורסת )מוחקת( עצם קיים מחלקות לכל עצם יש מפתח גישה ייחודי pointer(,)handle, הניתן לו ברגע בנייתו (classes) התבניות על פיהן נוצרים עצמים חדשים התבנית מכילה 3 "תאים" (compartments) המחלקות מוגדרות בקוד עצמים הם מופעים ספציפיים ע"י כותב התוכנה (instances) של מחלקות שם מאפיינים )מבני נתונים( פעולות )פונקציונלי ות( תכן תוכנה - 9

יצירה ותפעול של עצמים Car + maker: string + model: string + licenseplate: string + testdate: Date - owner: Person + sellto(person) : void + getowner(int) : Person + testisvalid(date) : boolean thebluecar : Car maker = mazda model = CX-7 licenseplate = 12-345-67 testdate = 08/09/2010 owner = Lior יצירת עצם "מכונית" חדש thebluecar = new(car) איתחול פרטי המכונית thebluecar.maker = mazda thebluecar.model = CX-7 רישוי וטסט thebluecar.licenseplate = 12-345-67 thebluecar.testdate = 08/09/2010 מכירה thebluecar.sellto(lior) שם המחלקה שם העצם function sellto(x) : owner = X תכן תוכנה - 10

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

- תחביר תרשים מחלקות Diagram) (Class מחלקה ClassName - privateattribute: Type + puplicattribute: Type - privatemethod(x:typex, Y:TypeY) : ReturnType + publicmethod(x:typex, Y:TypeY) : ReturnType שם המחלקה מאפיינים מתודות קשרים )משתנים( מאפיין פרטי )-(: ניתן לגשת אליו רק מתוך המחלקה עצמה מאפיין ציבורי)+(: )פונקציות( מתודה פרטית)-(: מתודה ציבורית)+(: ניתן לגשת אליו גם מבחוץ ניתן לקרוא לה אך ורק מתוך המחלקה עצמה ניתן לקרוא לה גם מבחוץ A B זיקה (association) A B ירושה (Inheritance) A B הקבצה (aggregation) תרשים המחלקות מבוסס על עיקרון של רשת סמנטית תכן תוכנה - 12

יחס ירושה )inheritance( / הכללה (Generalization) כאשר מחלקה B יורשת/מכלילה את מחלקה A, אזי A מכילה את כל המאפיינים של B A מכילה את כל הפעולות של B בנוסף, B מכילה מאפיינים ופעולות משל עצמה B is-a-kind-of A ירושה מתארת את היחס הסמנטי A של )sub-class( היא תת-מחלקה B כפתור דולק: }כן, לא{ לחיצה הדלקה/כיבוי מינוח לא מוצלח, כי B מכילה יותר מאשר A יחס הירושה יוצר מבנה היררכי של מחלקות מחלקה אבסטרקטית מחלקה שלא ניתן ליצור ממנה עצמים כל העצמים נוצרים ממחלקות היורשות אותה לדוגמה: "כלי רכב" כפתור מעלית כפתור קומה זיהוי: קומה כיוון: }למעלה, למטה{ תכן תוכנה - 13

בעיות ביחסי ירושה ירושה מרובה inheritance) (multiple מחלקה אחת יורש משתי מחלקות שונות הבעיה: עלולות להיווצר סתירות במאפיינים/פעולות הפתרון: רוב שפות התכנות אינן מרשות ירושה מרובה )מבנה של עץ( ירושה עמוקה מדי X... C B A הבעיה: קושי במעקב אחר הקשר )קשיי תחזוקה( הפתרון: "שבירת" העץ בנקודות בהן הזיקה חלשה יותר ירושה מדומה לדוגמה: ריבוע הוא סוג של מלבן, לכן מלבן ריבוע הבעיה: למלבן יש שני מאפיינים )אורך, רוחב( ולריבוע רק אחד )צלע( הפתרון: להגדיר את הירושה על בסיס תכונות משותפות )מאפיינים/פעולות( תכן תוכנה - 14

זיקה - association (Company,Person) navigability multiplicity Company 0..1 0..* Person +employer employ +employee יחס בין מחלקות המגדיר "היכרות" בין עצמים ממחלקות אלה ה"היכרות" הינה באמצעות מצביעים (pointers,references) name role מאפיינים המאפשרים הגדרה ברורה יותר של זיקה שם היחס )name( עשוי להתפרש בכיוונים שונים "Company employs Person Person employed by Company )role( Company is the employer Person is the employee )multiplicity( Company employs 0 or more Persons Person is employed by 0 or 1 company תפקיד ריבוי ניווט (navigability) Person knows who is its Company Company does not know its Persons תכן תוכנה - 15

הקבצה )aggregation( סוג מיוחד של זיקה )היכרות בין עצמים( מתארת את היחס הסמנטי (B A is_part_of שני סוגי הקבצה: הקבצת הרכ ב aggregation) (composite B A הוא חלק בלתי נפרד מ- B, A קיומו של A תלוי בקיומו של B ורק מ- B שמות נוספים: whole-part aggregation non-shared aggregation B A הקבצת שיתוף (shared aggregation) A משוייך אבל ל- B, קיומו של A אינו תלוי בקיומו של B A יכול להיות משותף, כלומר משוייך בו זמנית גם לעצמים אחרים תכן תוכנה - 16

הקבצה - דוגמה הקבצת שיתוף )shared( לפיסקה יש סגנון-פיסקה אחד סגנון יכול להיות משותף למספר פיסקאות הסגנון הוא ישות עצמאית, וקיומו אינו מותנה בקיום פיסקאות מחיקת פיסקה אינה מוחקת את הסגנון Paragraph Style Paragraph 1..* Word 1..* Font Style Character ניווט )navigation( התו מכיר את הסגנון הסגנון אינו מכיר את התוים המשויכים אליו 1 Style 0..* 0..* 1 1 1 הקבצת הרכב )composite( פיסקה מורכבת ממילה אחת לפחות כל המילים של הפיסקה שייכות אך ורק לפיסקה זו קיומה של המילה מותנה בקיומה של הפיסקה מחיקת פסקה מוחקת את כל המילים המרכיבות אותה. 1. A Numbered Title This is the first paragraph of this document. It contains 17 words and 80 non-blank cha r ac t ers. תכן תוכנה - 17

הקצאת תפקידים לעצמים/מחלקות בדומה לתהליך האנליזה הפונקציונאלית שעשינו בשלבים הקודמים, גם כאן עלינו להקצות פונקציונאליות למרכיבי התוכנה )עצמים/מחלקות( תזכורת: בתוכנה קיימים שני סוגים של דרישות פונקציונאליות דרישות תפעוליות :(OR) מה התוכנה צריכה לעשות דרישות אלה ימומשו באמצעות operations )פונקציות / מתודות( דרישות מידע מקורות לפונקציונאליות סיפור הלקוח :(DR) מה התוכנה צריכה לדעת דרישות אלה ימומשו באמצעות attributes )משתנים / מבני נתונים( מפרט הדרישות/התהליכים Use Case Model, Activity Diagrams - ארכיטקטורת התוכנה מימוש התהליכים באמצעות sequence diagrams בהקצאה הפונקציונאלית יש לשמור על עקרונות המקצוענות והעצמאות לכידות הדוקה: מה המשותף בין כל המאפיינים וכל המתודות שהוקצו למחלקה? צימוד רופף: עד כמה המחלקה תלויה במחלקות אחרות? תכן תוכנה - 18

מערכת המעליות מחלקת "מעלית" Elev ator - direction: Dir - downschedule: intlist - isactive: boolean - isinorder: boolean - laststop: int - upschedule: intlist + emergencystop() + getstatus(): int + newrequest(): int + rescuecall() + startoperation(): void בנוסף למאפיינים אלה יש גם מצביעים למחלקות אחרות, הנגזרים מיחסי זיקה/הקבצה בנוסף למאפיינים ולמתודות אלה יש גם מאפיינים ומתודות דרך ירושה תכן תוכנה - 19

מערכת המעליות - תרשים מחלקות Diagram) (Class חלקי FloorButton 1..2 Floor Door «abstract» TravelButton - LED: boolean + dirlabel: up_down + floorno: int +ServedFloors 10 + isclosed: boolean + open(): void + close(): void + setled(byte): void ElevatorButton serves +MyDoor 1 + floorlabel: int 0..3 1..* 1..* +MyButtons Elev ator «abstract,virtual» Button + press(): void RescueButton 1 StopButton +MyRB 1 +MySB - direction: Dir - isactive: boolean - isinorder: boolean - laststop: int + startoperation(): void + getstatus(): int + emergencystop() + rescuecall() +MyEngine 1 Engine + goto(floor): void + stop() +MySchedule Schedule - upschedule: intlist - downschedule: intlist + getnextstop(): int + newrequest(int) + clearrequest(int) תכן תוכנה - 20

עקיבות הדרישות הפונקציונליות למודל המחלקות המחלקות שבמודל המחלקות אמורות לספק את כל הפונקציונליות המערכתית מכל דרישה פונקציונלית בטבלת הדרישות יש להצביע למחלקה או למחלקות הרלוונטיות משתתפות בדרישה תפעולית )OR( לדוגמה: "אם לא היה דלוק קודם נדלק הכפתור בעקבות הלחיצה" מספקות את מבני הנתונים עבור דרישות המידע )DR( לדוגמה: "בכל קומה יהיו שני כפתורים" קומה כפתור מכל מחלקה במודל המחלקות יש להצביע על הדרישות הפונקציונליות הרלוונטיות לה תכן תוכנה - 21

הפקה אוטומטית של קוד סטטי ממודל המחלקות - Attributes FloorButton 1..2 Floor Door Class + dirlabel: up_down + floorno: int + isclosed: boolean ElevatorButton +ServedFloors 10 serves Role + open(): void + close(): void +MyDoor 1 + floorlabel: int 0..3 1..* 1..* +MyButtons RescueButton +MyRB 1 1 +MySB StopButton Elev ator - direction: Dir - isactive: boolean - isinorder: boolean - laststop: int + startoperation(): void + getstatus(): int + emergencystop() + rescuecall() +MySchedule Schedule - upschedule: intlist - downschedule: intlist + getnextstop(): int + newrequest(int) + clearrequest(int) +MyEngine 1 Engine + goto(floor): void + stop() public class Elevator { מאפיינים שהוגדרו במפורש מאפיינים שנגזרו מהזיקות } private Dir direction; private boolean isactive; private boolean isinorder; private int laststop; private intlist upschedule; private intlist downschedule; Class Role public Door MyDoor; public list MyButtons; public StopButton MySB; public RescueButton MyRB; public list ServedFloors; public Engine MyEngine; public Schedule MySchedule; תכן תוכנה - 22

הפקה אוטומטית של קוד סטטי ממודל המחלקות - Methods Elev ator - direction: Dir - isactive: boolean - isinorder: boolean - laststop: int + startoperation(): void + getstatus(): int + emergencystop() + rescuecall() Constructor Destructor public class Elevator { מתודות שהוגדרו במפורש public Elevator(){ } public void finalize() throws Throwable { } public void startoperation(){ } public int getstatus(){ return 0; } public emergencystop(){} public rescuecall(){} «<<abstract>>» Trav elbutton - LED: boolean + setled(byte): void ElevatorButton «abs tract,virtual» Button + press(): void + floorlabel: int public class TravelButton extends Button { } private boolean LED; public TravelButton(){ } public void finalize() throws Throwable { super.finalize(); } public void setled(byte on_off){ } תכן תוכנה - 23

הפקה אוטומטית של קוד סטטי ממודל המחלקות ירושות «abstract» TravelButton - LED: boolean + setled(byte): void FloorButton + dirlabel: up_down public class FloorButton extends TravelButton { } public up_down dirlabel; public FloorButton(){ } public void finalize() throws Throwable { } super.finalize(); public abstract class TravelButton extends Button { «abstract,virtual» Button + press(): void private boolean LED; public TravelButton(){ } public void finalize() throws Throwable { super.finalize(); } public void setled(byte on_off){ } } public abstract class Button { public Button(){ } public void finalize() throws Throwable { } public void press(){ } } תכן תוכנה - 24

מימוש תהליכי התוכנה מימוש הפונקציונאליות של כל רכיב באמצעות עצמים בתוכנה פונקציונאליות הרכיב תפקודו במסגרת מימוש התהליכים המערכתיים עצמים בתוכנה על בסיס מודל המחלקות A Comp1 B D C a:a b:b c:c תכן תוכנה - 25

ref Trav elling betw een Floors Sequence Diagram ברמת רכיבים User Request Manager Ongoing Operation Manager Door Engine Operations Manager 1.0 ongoingoperation() loop [while not stuck] 1.3 get next stop request(): int 1.1 close() 1.2 1.4 1.5 go to(n) 1.6 opt Normal Arriv al [arrived at floor] 1.7 open() 1.8 1.9 clear request(int) 1.10 button off() 1.11 report arrival(int): int 1.12 wait(t) תכן תוכנה - 26

מימוש פעילות OngoingOperation של רכיב Ongoing Operation Manager באמצעות העצמים המרכיבים אותו Ev: Elevator MyDoor: Door MySchedule: Schedule MyEngine: Engine ElevatorButton[NS]: ElevatorButton DoorHW: DoorEngineHW: Engine Oper. Mgr. UserPanel 1.0 startoperation() 1.1 close() loop [while not stuck] 1.2 CloseDoor(): StatusCode 1.3 1.4 1.5 NS= getnextstop(): int 1.6 1.7 goto(ns) 1.8 SC= goto(ns): StopCause 1.9 1.10 alt [SC=arrived] 1.11 open() 1.12 OpenDoor(): StstusCode תכן תוכנה - 27

[while not stuck] 1.4 מימוש פעילות OngoingOperation של רכיב Ongoing Operation Manager 1.5 NS= getnextstop(): int באמצעות העצמים המרכיבים אותו )המשך( 1.6 1.3 Ev: Elevator MyDoor: Door 1.7 goto(ns) MySchedule: Schedule MyEngine: Engine ElevatorButton[NS]: ElevatorButton 1.8 SC= goto(ns): StopCause DoorHW: DoorEngineHW: Engine Oper. Mgr. UserPanel 1.0 startoperation() 1.9 1.1 close() 1.10 alt [SC=arrived] 1.11 open() 1.4 1.2 CloseDoor(): StatusCode 1.3 1.12 OpenDoor(): StstusCode 1.5 NS= getnextstop(): int 1.13 1.14 1.6 1.7 goto(ns) 1.15 report arrival() 1.16 clearrequest(ns) 1.8 SC= goto(ns): StopCause 1.17 setled(off) 1.9 1.10 alt [SC=arrived] 1.18 wait(t) 1.11 open() 1.19 button off (NS) 1.12 OpenDoor(): StstusCode 1.13 תכן תוכנה - 28

Floor Panel User Panel Caretaker/Rescuer Commands Floor Button Floor Buttons on/off Rescue Elev. Button Rescue Elev. Buttons on/off Rescuer Panel Operations Manager Task Allocation Request Manager Arrival Reports Central Server Direct Direct Elevator Port Server Port Status Queries Direct (elevators) Elevator Controller Arrival Reports Emergency Stop 1..* Next Stop Queries Arrival Reports Arrival reports Direct (floors) Next Stop Queries Testing Manager Emergency Stop Status Queries Status Queries Ongoing Operation Manager Technician Commands Engine Commands Door Commands Technitian Panel Engine Door [Arrived at floor] [Stuck] «structured» System Operation [System in order] [On site repair impossible] [On site repair possible] כל התורה על רגל אחת... ארגון/עסק use 0..* 0..* User 1 push 1 Button No elevator at floor Elavator at floor התנהגות מערכת מבנה «structured» «structured» Using the service System maintenance Arriving for test System Call elevator testing «datastore» Stopping list Test results Ride elevator Elevator Button 10 Stop Button Rescue Button travel between Direction Button 1..2 Rescue Stopping reason? Repair pending Results? Elevator 3 serve 10 Floor Arriving for repair Repair generates fulfills rescues maintains maintains Stop Request Rescuer Technician Start Up starts up / shuts down CareTaker Shut Down «device» Floor Panel 1..* Central Server «CSCI» Server SW 1..* «device» Technician Panel «device» Rescuer Panel פריטים Elevator Controller «CSCI» Elevator SW User «SUC» 1. Call Elevator «SUC» 2. Ride Elevator Elevator System «SUC» 6. Start Up «SUC» 4. System Testing «SUC» 5. Repair Technician «device» User Panel Elevator Controller «CSCI» Elevator SW «device» Engine «device» Door Rescuer «SUC» 3. Rescue «SUC» 7. Shut Down Caretaker Floor Button Floor Buttons on/off Direct Caretaker/Rescuer Commands Operations Manager Status Queries Task Rescue Allocation Arrival Reports Direct (floors) Direct Testing Manager (elevators) Arrival Reports Status Queries Technician Commands רכיבים par [ ] Request Manager User 1.0 push button(int) 1.1 save request(int) 1.2 button off() Ongoing Operation Manager Engine Rescue Direct Elev. Button Request Manager Elev. Buttons on/off Status Arrival Queries reports Arrival Reports Ongoing Operation Next Stop Queries Next Stop Queries Manager Engine Commands Door Commands Request Manager Ongoing Operation Manager Operations Manager 2.0 push stop button() 2.1 emergency stop() 2.3 2.4 clear all requests() 2.2 stop() Emergency Stop Emergency Stop [ ] ref Ongoing Operation «<<abstract>>» Trav elbutton - LED: boolean FloorButton 1..2 Floor + dirlabel: up_down + floorno: int +ServedFloors 10 Door + isclosed: boolean + open(): void + close(): void יחידות + setled(byte): void ElevatorButton + floorlabel: int 1..* +MyButtons 1..* serves 0..3 Elev ator +MyDoor 1 Ev: Elevator 1.0 startoperation() MyDoor: Door MySchedule: Schedule MyEngine: Engine ElevatorButton[NS]: ElevatorButton DoorHW: DoorEngineHW: Engine Oper. Mgr. UserPanel «abstract,virtual» Button + press(): void RescueButton +MyRB 1 1 +MySB StopButton - direction: Dir - isactive: boolean - isinorder: boolean - laststop: int + startoperation(): void + getstatus(): int + emergencystop() + rescuecall() +MyEngine 1 Engine Schedule - upschedule: intlist - downschedule: intlist + getnextstop(): int + newrequest(int) + clearrequest(int) Schedule - upschedule: intlist - downschedule: intlist + getnextstop(): int + newrequest(int) + clearrequest(int) Schedule - upschedule: intlist - downschedule: intlist + getnextstop(): int + newrequest(int) + clearrequest(int) 1.1 close() 1.4 1.5 NS= getnextstop(): int 1.2 CloseDoor(): StatusCode 1.3 + goto(floor): void + stop() 1.6 +MySchedule 1.7 goto(ns) Schedule 1.8 SC= goto(ns): StopCause - upschedule: intlist - downschedule: intlist 1.9 תכן תוכנה - 29 + getnextstop(): int + newrequest(int) + clearrequest(int) alt [SC=arrived] 1.10 1.11 open() 1.12 OpenDoor(): StstusCode 1.13 1.14 1.15 report arrival()