440 likes | 795 Views
SCE - 11 מדידות דר’ יעקב אקסמן תשס"ו. הנדסת מרכיבי תוכנה. דרישות תוכנה. דגם הייררכי. דגם פיזיקלי. מרכיבים. קוד להרצה = exe. מדידות. מדידות. מדידות לעומת מדדי תוכנה = Software Metrics מדידות – של מוצר התוכנה, בזמן ריצה מדדים – של תהליך פיתוח/ייצור התוכנה, סטטיים. מדדי תוכנה
E N D
SCE-11 מדידות דר’ יעקב אקסמן תשס"ו
הנדסת מרכיבי תוכנה דרישות תוכנה דגם הייררכי דגם פיזיקלי מרכיבים קוד להרצה = exe מדידות
מדידות • מדידות • לעומת • מדדי תוכנה = Software Metrics • מדידות – של מוצר התוכנה, בזמן ריצה • מדדים – של תהליך פיתוח/ייצור התוכנה, סטטיים
מדדי תוכנה Software Metrics מדדים
ספרות כללית מדדים [Schach2002] Schach, Stephen R. – “Object-Oriented & Classical Software Engineering” McGraw-Hill – Boston – 5th ed. – 2002. { Software Metrics: sec. 5.3; …}
ספרות מדדים [FentPflee1997] Fenton, Norman E. and Pfleeger, Shari Lawrence “Software Metrics – A Rigorous and Practical Approach” PWS Publishing Co. – London – 2nd ed. – 1997 [Kan1995] Kan, Stephen H. “Metrics and Models in Software Quality Engineering” Addison-Wesley – Reading, MA – 1995 [Shepperd1995] Shepperd, Martin “Foundations of Software Measurement” Prentice-Hall – London – 1995
מדדים מאפיינים תהליכי פיתוח מדד לאיכות תהליכי פיתוח התוכנה [השוואה בין שלבים שונים; תחזוקה לאחר הספקה] מדדי מקור = סטטיים מתייחסים לרוב לתכונות הדגם או לקוד המקור [ספירה ולא מדידה]
מדדים דוגמאות • שורות קוד = LOC (Lines of Code) • תלוי • שפת תכנות • מתכנת • אינו מבטא • איכות תוכנה • מאפייני תוכנה (כלשהם)
מדדים ביקורת LOC • דוגמה לדגש בתהליך • תפוקה: • שורות קוד ביחידת זמן • איכות: • מספר שגיאות (bugs) ביחס לשורות קוד • [-מדדים גרועים לאיכות הפיתוח • -אין LOC בשלבי פיתוח מוקדמים]
מדדים דוגמאות • לכידות = Cohesion • רצויה • מידה בה פעולות מבוצעות ע"י מרכיב אחד קשורות פונקציונלית • יחידות מדידה (של חוסר לכידות): • מספר שיטות שונות במחלקה נתונה • שניגשות לאותו משתנה (instance variable) • דוגמה לחוסר לכידות: • ערבוב חישוב וממשק באותו מרכיב
מדדים דוגמאות • צמידות = Coupling • בלתי-רצויה • מידת האינטרקציה בין מרכיבים • רצוי • מרכיבים שונים אמורים להיות • מופרדים פונקציונלית • דוגמת צמידות: • שני מרכיבים משנים אותם מבני נתונים • (זיכרון משותף)
מדדים דוגמאות • סיבוך לולאתי = Cyclomatic Complexity • רצוי נמוך • ככל האפשר • Cm = מספר החלטות בינריות + 1 שקול למספר ההסתעפויות במרכיב
מדדים ביקורת על סיבוך לולאתי • קל לחשב – • ספירת if, for, ... • סיבוך בקרה בלבד – • לא מתייחס לסיבוך נתונים
מדדים סיבוך לולאתי תרגיל בספר של Schach הנ"ל יש שתי דוגמאות של תיכון עם ערכים שונים של סיבוך לולאתי (עמ' 419-420). מה השגיאה בחישוב?
מדדים סיכום • סיכום • מדדים אינם מדידה. • בגלל • התייחסותלתהליך הפיתוח ולא למוצר. • סטטי ולא דינמי.
מדדי תוכנה מבטים מבטים גרפיים מרובים על תוכנה
Polymetric Views • מבטים גרפיים מרובים • ככלי ניתוח במהלך ולאחר פיתוח • ככלי להנדסה הפוכה
ספרות Polymetric Views [LanDuc2003] Michele Lanza & Stephane Ducasse “Polymetric Views – A Lightweight Visual Approach to Reverse Engineering” IEEE Transactions on Software Engineering, Vol. 29, 782-795 (9), September (2003)
Polymetric Views • ריובי המבטים הגרפיים • גודל קודקוד– רוחב, גובה • צבע– דרגות אפור • מיקום– קואורדינטותx, y
Polymetric Views מיקום (x,y) צבע גובה רוחב
Polymetric Views מדדים לדוגמה
Polymetric Views מבט 1 יותר מדי שורות קוד System Hotspots • Metrics: • Height: NOM. • Color: WLOC. • Width: NOA. • Layout: Checker. • Target: Classes. • Scope: Full system. • Sort: Width.
Polymetric Views מבט 1 System Hotspots • מה גודל המרכיב הרצוי? • מה אומר גודל יחסי של מרכיב במערכת נתונה?
Polymetric Views מבט 2 צלעות בעץ = ירושה עמוק מדי? System Complexity • Metrics: • Width: NOA. • Height: NOM. • Color: WLOC. • Layout: Tree. • Target: Classes. • Scope: Full System
Polymetric Views מבט 2 System Complexity • מה עומק ההייררכיה הרצוי?
Polymetric Views מבט 3 Inheritance Classification • Metrics: • Width: NMA. • Height: NMO. • Color: NME. Number of Methods Overriden Extended • Layout: Tree. • Target: Classes. • Scope: Subsystem.
Polymetric Views מבט 3 Inheritance Classification • כמה שיטות בתת-מחלקה? • בשימוש ללא שינוי • הורחבו • נדרסו • עד כמה מחלקת הורה? • שימושית • גמישה • כללית מדי
Polymetric Views מבט 4 Inheritance Carrier • Layout: Tree. • Target: Classes. • Scope: Subsystem. • Metrics: • Width: WNOC. • Height: NOM. • Color: WNOC. WNOC = מספר צאצאים
Polymetric Views מבט 5 Data Storage Class Detection • Layout: Stapled. • Target: Classes. • Scope: Subsystem. • Metrics: • Width: NOM. • Height: WLOC. • Color: WLOC. מיון לפי רוחב
Polymetric Views מבט 6 • Metrics: • Position (X): LOC. • Position (Y): NOS = Number of Statements (in method body) Method Structure Correlation • Layout: Scatterplot. • Target: Methods. • Scope: Full system. יותר שורות מפקודות
Polymetric Views מבט 7 Direct Attribute Access • Metrics: • Width: NLA. (local access = within class) • Height: NGA. (from outside class) • Color: NAA. (All) • Layout: Checker. • Target: Attributes. • Scope: Full System. מיון לפי צבע
מדידה מדידה והכנות למדידה
מדידה • When you can measure what you are speaking about, and can express it in numbers, you know something about it; but when you cannot measure it, when you cannot express it in numbers, then your knowledge is of a meagre and unsatisfactory kind. • Lord Kelvin
מדידה Lord Kelvin William Thomson (1824-1907) פיזיקאי וממציא, ניסח חוקי התרמודינמיקה, השתתף בניסיון הנחה של כבל תקשורת תת-ימי באוקיינוס האטלנטי.
מדידה גישה 1 מדידת מוצר התוכנה [צרכן אינו מעוניין לדעת דבר על תהליך הייצור.]
מדידה גישה 2 מרכיבים כקופסה שחורה. [צרכן אינו מעוניין בחומרי הבנייה. מה החומצה בתוך המצבר?]
מדידה גישה 3 מרכיב התוכנה מספק בעצמו את תוצאת המדידה.
מדידה גישה 4 ממשק בנוי מראש לפי מדידות האפשריות במרכיב התוכנה [שום מדידה אחרת אינה אפשרית. דוגמה: לחץ אויר של צמיג]
מדידה מסקנה גודל מינימלי רצוי למרכיב תוכנה. [אחרת נפח הממשק גדול מנפח המרכיב עצמו.]
מדידות דוגמה 1 Debugging מה תוצאת החישוב שלך? [מדידה אופיינית במהלך בדיקות נכונות.]
מדידות דוגמה 2 Identifier מה תעודת הזהות שלך? [מדידה אופיינית במהלך linking.] תוצאת המדידה: זיהוי, למשל UUID
מדידות דוגמה 3 מיקום בריצה (או עצירה) = Run (or Fault) Location האם אתה מתבצע עכשיו? [מדידה אופיינית במהלך debugging.] תוצאת המדידה: boolean [למעשה: זיהוי]
מדידות דוגמה 4 משך ביצוע = Execution Time הפרש זמנים בין תחילה לסיום? [מדידה אופיינית במהלך Performance Monitor.] תוצאת המדידה: מספר שלם (ביחידות זמן למשל msec)