Professional Documents
Culture Documents
פיתרון מבחן לדוגמא
פיתרון מבחן לדוגמא
.2מפעל גדול לייצור מסכות הגנה החליט שעליו לחסוך את עמלת הסליקה ל . PayPal-לשם כך ,דירקטוריון
המפעל החליט על השקעה בצוות R&Dלשם בניית המערכת הנ"ל.לאחר סדרת ראיונות עבודה מתישה
עליך:
1
2
להחליט מהו ה – ( Patternמבין אלו שלמדנו) המתאים ביותר לבעיה הנתונה ולשרטט .1
Class Diagramעבור ה.Pattern -
תשובה :ה – Patternמתאים ביותר ה – .Strategy
:Class Diagram
2
3
public ShoppingCart(){
this.items=new ArrayList<Item>();
}
3
4
@Override
public void pay(int amount) {
4 card");
System.out.println(amount +" paid with credit/debit
}
}
@Override
public void pay(int amount) {
System.out.println(amount + " paid using Paypal.");
}
}
4
5
cart.addItem(item1);
cart.addItem(item2);
//pay by paypal
cart.pay(new PaypalStrategy("myemail@example.com",
"mypwd"));
cart2.addItem(item3);
cart2.addItem(item4);
5
? נוסף ניתן היה לשלב כאן ובאיזה שלבpattern איזה:שאלת בונוס .4
. על מנת ליצור את האסטרטגיות השונות לביצוע הרכישהFactory – ניתן היה לשלב כאן את
– לטובת לקוח פרמיוםOffice החליטה לבצע שינוי ושיפור של מוצרי הMicrosoft חברת.3
(יש להעתיק את התשובה המליאה למחברת. מה מהבאים הוא הגדרה נכונה למהלך זה,שלה
שינוי.הבחינה למשל אם לדעתך תשובה א היא הנכונה אזי יש להעתיק למחברת הבחינה את "א
.)" - Customized products ל- Generic products המוצר מ
- Customized product ל- Generic products שינוי המוצר מ.א
– Very Customize products ל- Customized products שינוי המוצר מ.ב
- Generic products ל- Customized products שינוי המוצר מ.ג
אין תשובה נכונה.ד
5
6
}
}
במידה וכן – הסבר מדוע .במידה ולא – הסביר מדוע ,כתוב קטע קוד חדש שיתאים לדיאגרמה
הנתונה ושרטטו דיאגרמה חדשה כך שתתאים לקוד הנתון.
יחס המתואר בדיאגרמה הוא לא של תלות\ ( Dependencyכמו בקוד) ,אלא ,יחס של
6 .Association
{ Class Airline
{ )(void getFlights
;]Flight[] arr= new Flight[10
…
}
}
.5להלן תיאור מערכת ,שרטטו עבורה דיאגרמת רצף ( )Sequence Diagramעבור תיאור תרחיש של
"תהליך הכנת והגשת בחינה במכללה" במערכת כלשהיא של המכללה.
להלן תיאור תרחיש המקרה:
6
7
בשלב ראשון ,על המדריך להודיע לסטודנטים על קיומה של בחינה ,במועד מסויים ותוך פירוט חומר
הבחינה .לאחר מכן עליו להכין את הבחינה (כולל פתרון הבחינה) ולמוסרה\ם בידי עובד חדר
הצילום על מנת לשכפלה\ם כמספר העותקים הנדרש.
בתאריך המיועד המדריך מחלק את עותקי המבחן לסטודנטים ,הסטודנטים עונים את תשובותיהם
לשאלות הבחינה ובסיומה מחזירים את המבחן למדריך.
המדריך מגיש את מחברות המבחן ,יחד עם עותק של פתרון הבחינה לעוזרי הסגל
) ,(Teacher Assistancesומבקשם לבדוק את הבחינות ולתת ציון .בסיום ,המדריך יכתוב את ציוני
מבחן בגליון הציונים של הקורס ויידע את הסטודנטים בציוני הבחינה.
7
7
8
.7להלן הגדרה מתוך דרישת מערכת ,אותה נרצה להדגים בדיאגרמת מחלקות()Class Diagram
"לאדם ישנם בדיוק שני הורים ומספר כלשהוא של ילדים" .שרטט את הדיאגרמה בצורה הנכונה
8 ביותר.
8
9
הפרת עיקרון הכימוס נובעת מהעובדה שה – nameהוא ב – publicוניתן לו גישה מחוץ ל Class -
IS RELATIONSHIP
9
10
10
HAS A RELATIONSHIP
.10מהו עיקרון ה – Open/Closeמה – ? Solidאיזה בעיה הוא לפי דעתך מנסה לפתור ? באיזה
עקרון מהטכניקה של תיכנות מונחה עצמים ניתן להבטיח שה Classשרוצים להוסיף לו יכולות ,
יעמוד בעקרון של ? Open/Closeכתוב Classפשוט (יש לכתוב רק את החתימה של הפונקציה.
ללא המימוש .אפשר לוותר על ה )Constractor -לפני הוספות ואחרי ההוספות תוך עמידה
בעיקרון ה – .Open/Close
עיקרון ה – Open/Closeקובע שקוד שנבדק והוטמע בגירסה אין לשנות .אפשר להוסיף קוד
,אבל ,לא לשנות את הקיים .לדוגמא Class:שבצעו עליו את הבדיקות והוא נקי משגיאות והוטמע
10
11
בגירסה ,כדי להוסיף לו יכולות אסור לשנות את ה – Classעצמו אלא יש להשתמש בהרחבה שלו
כמו בירושה( )Inheritanceאו בהכלה (.)Aggregation/Composition
דוגמא לקוד והרחבה שלו ע"י ירושה תוך שמירה על עיקרון ה – :Open/Close
{ public class Calculator
;)pubic int Add(int a,int b
;)pubic int Substract(int a,int b
}
.11אלו מהבאים הינן שיטות לגילוי דרישות ).(Requirement Elicitationיש להעתיק את התשובה
הנכונה למחברת הבחינה .למשל אם לדעתך תשובה א היא הנכונה אזי יש להעתיק למחברת
הבחינה את "א .תרחישי שימוש – ."USE CASE
א .תרחישי שימוש – USE CASE
ב .ראיונות ותצפיות על סביבת העבודה
11 ג .כל התשובות נכונות
ד .למידת מערכות קיימות
.12מהנדס ה QA -מצא באג חמור במערכת ,זמן קצר לפני הטמעת הקוד החדש אצל הלקוח.
סמנכ"ל הכספים טוען ,כי זה מצב חמור מאוד ,הגורם להפסד משמעותי לחברה ,ויש למצוא דרך
להימנע מהישנות אירועים דומים בעתיד ,ככל שניתן .ראש צוות ה - QAטוען כי הצדק עם סמנכ"ל
הכספים ושככל שמדובר בשלב מוקדם יותר – קל יותר למצוא את הפגמים .ארכיטקט המערכת,
בגיבויו של מנהל המוצר טוענים כי תפקידם הוא אך ורק לגבש ולנסח את הדרישות ביחד עם הלקוח .
צוות הפיתוח טוען כי תפקידו לכתוב קוד ובדיוק לשם כך נועד צוות ה – - QAלמצוא פגמים ואין דרך
לעשות זאת לפני שהקוד כתוב.
א .מי לדעתך צודק? במידה ויש כמה דמויות שצודקות – מי "הכי צודק" ?
ראש צוות ה – QAהוא הצודק ביותר .ניתן לבצע בדיקות יחידה כבר בשלב הפיתוח ולצמצם את
הסיכונים לשגיאות תוכנה עוד לפני הכניסה לסבב בדיקות.
ב .נמק את תשובתך והבא 2הסברים התומכים בטענה 5(.שורות לכול היותר)
.1ניתן לבדוק קוד באמצעות כתיבת קוד בספריות JUNITהמבצעות ולידציה על הקוד שהמפתח
כותב.
11
12
.2ניתן לכתוב ב Junit -בדיקות מקיפות יותר כמו בדיקות אינטגרציה או בדיקות מערכתיות ואז
לצמצם עוד יותר את הסיכונים לאירועים מהסוג הנ"ל.
12
12