1 / 43

SCE - 14 דרישות ומודולריות של מרכיבים דר’ יעקב אקסמן תשס"ו

SCE - 14 דרישות ומודולריות של מרכיבים דר’ יעקב אקסמן תשס"ו. הנדסת מרכיבי תוכנה. דרישות תוכנה. דגם הייררכי. דגם פיזיקלי. מרכיבים. קוד להרצה = exe. מדידות. שלבי פיתוח "מפל המים" דרישות תוכנה. Software Requirements. Application Requirements. Test. Test. Specifications. Test.

mateo
Download Presentation

SCE - 14 דרישות ומודולריות של מרכיבים דר’ יעקב אקסמן תשס"ו

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SCE-14 דרישות ומודולריות של מרכיבים דר’ יעקב אקסמן תשס"ו

  2. הנדסת מרכיבי תוכנה דרישות תוכנה דגם הייררכי דגם פיזיקלי מרכיבים קוד להרצה = exe מדידות

  3. שלבי פיתוח "מפל המים" דרישות תוכנה Software Requirements Application Requirements Test Test Specifications Test Detailed Design Test Implementation Test Experimentation Debugging Test Maintenance Test

  4. דרישות מטריצת T מטריצת עקיבות Traceability Matrix

  5. דרישות מטריצת T Traceability Matrix מרכיבים דרישות

  6. דרישות T-Matrix • מטריצת עקיבות Traceability Matrix • מטרהCheck List • כל דרישה סופקה לפחות ע"י מרכיב אחד • כל מרכיב מספק לפחות דרישה אחת

  7. דרישות T-Matrix T- Matrix DERA – March 2000

  8. דרישות מודולריות עקרון המודולריות בתיכון מודולרי לכל דרישת תוכנה יש רק מרכיב אחד שמספק את הדרישה.

  9. דרישות מודולריות מודולריות הסבר לעיקרון אם חל שינוי בדרישה, יש לשנות רק מרכיב שמספק אותה דרישה

  10. דרישות מטריצת T T-Matrix על פי עיקרון המודולריות מטריצה אלכסונית = מטריצת זהות מרכיבים דרישות

  11. דרישות ספרות [Parnas-1972] Parnas, David L. “On the Criteria to be Used in Decomposing Systems into Modules”, Comm. ACM, 15, 1053-1058 (1972)

  12. דרישות Parnas Parnas’ KWIC Index מערכת יוצרת מפתח "הזזות מעגליות" (Circular Shifts) לפי סדר א-ב KWIC = “KeyWord In Context”

  13. דרישות KWICדוגמה • Parnas’ KWIC Index • Keyword in Context index • in Context index Keyword • Context index Keyword in • index Keyword in Context

  14. דרישות Parnas – Mod 1 דרישות תוכנה R1: Input = ordered set of lines R2: Line = ordered set of words R3: Perform circular shift on each line R4: Sort circular shifted lines in alphabetical order R5: Output = lists all circular shifts of all lines

  15. דרישות Parnas – Mod 1 • מודולריזציה 1 • מרכיבים • C1: Input • C2: Circular Shifter • C3: Alphabetizer • C4: Output • C5: Master Control

  16. דרישות Parnas – Mod 1 מודולריזציה 1 T-Matrix • Inp Cshift Alphab Outp MContr Input lines Line of words Perform circular shift Sort Output

  17. דרישות Parnas – Mod 1 • מודולריזציה 2 • מרכיבים • C1: Input • C2: Line Storage • C3: Circular Shifter • C4: Alphabetizer • C5: Output • C6: Master Control

  18. דרישות Parnas – Mod 2 מודולריזציה 2 T-Matrix • Inp Lstor Cshift Alphab Outp MContr Input lines Line of words Perform circular shift Sort Output

  19. דרישות Parnas • Parnas • מרכיבים – מופיעים במפורש במאמר • דרישות – ניתן להסיק

  20. דרישות Parnas Parnas מסקנות תיכון-2מודולרי יותר מתיכון-1 תיכון-2: בוצע סילוק צימוד בין מרכיבים (decoupling)

  21. דרישות Parnas השוואה T-Matrix תיכון 2 תיכון 1

  22. עקרונות מודולריות עקרונות מודולריות Modularity Principles

  23. עקרונות אחראיות בלעדית עקרון אחראיות בלעדית Single Responsibility Principle למרכיב צריך להיות סיבה אחת ויחידה לשינויים.

  24. עקרונות אחראיות בלעדית • אחראיות בלעדית • דוגמה • אם מחלקה משתנה עקב שנויים ב ממשק GUI • אז שינויים ב • מסד נתונים • לוגיקת החישוב • לא צריכים להשפיע עליה.

  25. עקרונות אחראיות בלעדית עקרון סגירות-פתיחות Open-Closed Principle מרכיבים צריכים להיות פתוחים להרחבה (extension) סגורים לשינוי(modification) .

  26. עקרונות סגירות-פתיחות סגירות-פתיחות דוגמה יש לעשות הרחבות ע"י הורשה (למשל ע"י תת-מחלקות) ולא שינויים בתוך המחלקה.

  27. עקרונות ספרות [Liskov-1988] Liskov, Barbara “Data Abstraction and Hierarchy”, , SIGPLAN Notices, 23,5 (May, 1988).

  28. עקרונות LSP obj2 T S obj1 • עקרון הצבה של Liskov • Liskov Substitution Principle • If for each object obj1 of type S • there is an object obj2 of type T • such that • for all programs P defined in terms of T, • the behavior of P is unchanged • when obj2 is replaced by obj1 • then S is a subtype of T.

  29. עקרונות LSPLiskov - הסבר obj2 T S obj1 הסבר LSP תת-מחלקה מכירה את מחלקת ההורה (כיווןהחץ) לכן ההתנהגות לא משתנה. LSPלא סימטרי: אי-אפשר להחליף Obj1 ב- Obj2 החץ אינו דו-כיווני

  30. עקרונות LSPLiskov - דוגמה נגדית צורות void DrawShape(const Shape& s(} if (typeid(s) == typeid(Square)) DrawSquare(static_cast<Square&>(s)); else if ( typeid(s) == typeid(Circle)) DrawCircle(static_cast<Circle&>(s)); } מה הבעיה?

  31. עקרונות LSPLiskov - דוגמה נגדית • צורות • DrawShape • בעייה • הפונקציה צריכה להכיר כל צורה וצורה • תשתנה כל פעם שנוסיף צורה חדשה

  32. עקרונות LSPLiskov - דוגמה נוספת מלבן ריבוע מלבן וריבוע המקרה הפרטי יורש מן המקרה הכללי.

  33. עקרונות LSPLiskov - דוגמה נוספת מלבן וריבוע class Rectangle { public: void SetWidth(double w) {itsWidth=w;} void SetHeight(double h) {itsHeight=w;} double GetHeight( ) const {return itsHeight;} double GetWidth( ) const {return itsWidth;} private: double itsWidth; double itsHeight; };

  34. עקרונות LSPLiskov - דוגמה נוספת מלבן וריבוע void Square::SetWidth(double w){ Rectangle::SetWidth(w); Rectangle::SetHeight(w); } void Square::SetHeight(double h){ Rectangle::SetHeight(h); Rectangle::SetWidth(h); }

  35. עקרונות LSPLiskov - דוגמה נוספת מלבן וריבוע Square s; s.SetWidth(1); גם השמה של Height=1 s.SetHeight(2); גם השמה של Width=2

  36. עקרונות LSPLiskov - דוגמה נוספת מלבן וריבוע פונקציה func מבוססת על פונקציות של מלבן void func (Rectangle& r) { r.SetWidth(32); // Rectangle::SetWidth קוראת ל- } מה הבעייה?

  37. עקרונות LSPLiskov - דוגמה נוספת מלבן וריבוע הבעייה:פונקציה f אם נקראת ע"י ריבוע משבשת משתנים של ריבוע

  38. עקרונות LSPLiskov - סוגיות יסוד Liskov SP מהי הורשה?

  39. עקרונות LSPLiskov - דוגמה נוספת מלבןוריבוע תיקון class Rectangle { public: virtual void SetWidth(double w) {itsWidth=w;} virtual void SetHeight(double h) {itsHeight=h;} double GetHeight( ) const {return itsHeight;} double GetWidth( ) const {return itsWidth;} private: double itsHeight; double itsWidth; };

  40. עקרונות LSPLiskov - דוגמה נוספת מלבן וריבועתיקון class Square : public Rectangle{ public: virtual void SetWidth(double w); virtual void SetHeight(double h); }; void Square::SetWidth(double w) { Rectangle::SetWidth(w); Rectangle::SetHeight(w);} void Square::SetHeight(double h){ Rectangle::SetHeight(h); Rectangle::SetWidth(h);}

  41. עקרונות LSPLiskov - דוגמה נוספת מלבן וריבוע בעייה נוספת void g(Rectangle& r){ r.SetWidth(5); r.SetHeight(4); assert(r.GetWidth() * r.GetHeight()) == 20); } פונקציה עובדת עבור מלבן מחזירה שגיאה עבור ריבוע

  42. עקרונות LSPLiskov - סיכום Liskov SP במקצוע המופשט אין קושי להבחין בין המקרה הפרטי  ריבוע המקרה הכללי מלבן בתוכנה ירושה לא בהכרח מקיימת את ההבחנה.

More Related