Design Flashcards
מהם ארבעת שלבי תכנון תוכנה
ארכיטקטורה
הגדרת מבנה המערכת- התמקדות במבנים החיצוניים והממשקים. כמו ארכיטקטורה של דירה - החלוקה לקומות, חדרים, מעברים, חלונות וג’ו
ממשקים
הגדרת ההתממשקות של הרכיבים לבין עצמם ולבין הממשקים. כמו ממשקים של דירה - מסדרון שקצה אחד שלו הוא הכניסה לחדר שינה וקצה שני הוא כניסה לשירותים
Software Components
תיאור הפנים של החלקים שהגדרנו בארכיטקטורה
כמו רכיבים של דירה - מה המטבח כולל? צריך חיבור למים, לגז וכ’ו
Data/Class Design
מבני הנתונים והמאפיינים שלהם
Software Components
מהם שני הDesign concepts שלמדנו?
Abstraction
הפשטה וגנריזציה, התאמה של דברים קונקרטיים לתבניות
למשל - בדירה, בסלון יש טלויזיה, ספה, שולחן, מזגן. מבלי להכנס לסוגים הספיציפיים של כל אחד מהם
Modularity
חלוקת הקוד למודולים קטנים ומסודרים, כך שכל מודול אחראי לתחום מסוים
מהן ארבע השכבות של תכנון תוכנה (לשים לב, לא להתבלבל עם ארבע שלבי התכנון)
מהחיצוני לפנימי: ממשקים אפליקציות ממשקי גישה למסדי הנתונים מסדי הנתונים
בפירוט:
ממשקים
ממשקי גישה לאפליקציות - ממשק בין המשתמש לאפליקציה או בין האפליקציה לאפליקציה אחרת.
אפליקציות
מבצעת את הלוגיקה והפונקציונליות
בשכבת האפליקציה, כיצד נתכנן כל מודול?
את התפקיד שלו ואיזה אובייקט מייצג
הקלט והפלט
פונקציונליות מרכזית, אלגוריתמים מרכזיים
תופעות לוואי ובעיות אפשריות שלא ניתן למנוע
מה ההבדל בין דיאגרמה סטטית לדיאגרמה דינמית?
דיאגרמה דינאמית, כמו סווים-ליינס, מתארת שלבים בתהליך, התממשקות של גורמים שונים זה עם זה כחלק מתהליך שלם.
דיאגרמה סטטית, כמו דיאגרמת ארכיטקטורה, מתארת פשוט את מבנה המערכת הכללי, לא כחלק מתהליך.
כיצד נמדוד את טיב הארכיטקטורה שבנינו?
ישנם 7 מאפיינים שיש לבדוק: מודולריות קלה ליישום ובדיקה לפי החלוקה שהגדרנו (ארכיטקטורה, ייצוג מידע, ממשקים חיצוניים, רכיבי תוכנה) משתמשת בdesign patterns ובמבני נתונים מוכרים כל רכיב קיים עצמאית ממשקים יפשטו את העבודה התאמה ודיוק ע"ב הדרישות