1 / 45

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

תיכון מערכות תוכנה להנדסה ופיתוח פרוייקט אישי. Software Design. פרק 1. הקדמה. מקומו של הקורס. ניתוח מערכות System Analysis תיכון תוכנה Software Design תכנות Programming. מקומו של הקורס. Our course. Jonah’s course. מהו תיכון (טוב)?.

ann-medina
Download Presentation

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

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. תיכון מערכות תוכנה להנדסהופיתוח פרוייקט אישי Software Design תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  2. פרק 1 הקדמה תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  3. מקומו של הקורס • ניתוח מערכות System Analysis • תיכון תוכנה Software Design • תכנות Programming תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  4. מקומו של הקורס Our course Jonah’s course תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  5. מהו תיכון (טוב)? • אפיון המערכת על בסיס הדרישות • התמודדות יעילה עם דרישות משתנות • ארגון מסגרת ומבנה לקידוד תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  6. Open Close Principle (OCP) האסטרטגיה שעל פיה ניתן לתת מענה לדרישות משתנות "תוכנה צריכה להיות פתוחה להרחבה וסגורה לשינויים" Bernard Meyer פתוחה להרחבה : ניתן יהיה להוסיף התנהגות חדשה למערכת- סגורה לשינויים : בלי לגעת בקוד שכבר כתבת . (אפילו לא לעשות קומפילציה מחדש וכד') תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  7. "חיזוק" (1) תיכון טוב זה להיות יותר חכם מפרדי תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  8. "חיזוק" (2) עליך להיות מעודכן תמיד תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  9. "חיזוק" (3) עליך לקחת את עצמך ברצינות תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  10. רשימת נושאים • Open Closed Principle • Principles of Class Design • Liskov Substitution Principle (LSP) • Dependency Inversion Principle (DIP) • Interface Segregation Principle (ISP) • Principles of Package Design • Acyclic Dependency Principle (ADP) • Case Study with Design Patterns • Model Driven Development • Real Time Object Oriented Design • Executable Models (Rhapsody) • Small Project Development • Extreme Programming, Test-first Programming, Refactoring, 7 Habits תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  11. בניית פרוייקט בזיקה ל- Rhapsody תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  12. מרכיבי פרוייקט • Component • Object Model Diagram • Packages תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  13. פרוייקטComponent Name Scope Executable תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  14. פרוייקט Component Current configuration Configurations תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  15. פרוייקט ComponentConfigurations אתחול מופעים - Initial Instance תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  16. פרוייקט ComponentConfigurations Settings Instrumentation Environment תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  17. Unified Modeling Language UML בזיקה ל- Rhapsody כלי תיאור המאפשר לתאר וללוות פיתוח של תוכנה לשלביה (ואף כלי למימוש תוכנית) תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  18. Object Model Diagram (OMD) ייצוג ויזואלי סטטי של אובייקטים/מחלקות ויחסים בניהם תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  19. OMD ייצוג Package ב- UML תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  20. OMD ייצוג Class ב- UML תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  21. OMDClass Name ייצוג חלקי ה- Class ב- UML Attributes Operation תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  22. OMDClass קשרים בין אובייקטיםObject Relationships • Association • Directed • Bi-Directional • Aggregation • Directed • Bi-Directional • Composition • Directed • Bi-Directional תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  23. OMDClass קשרים בין אובייקטיםObject Relationships • Dependency • Inheritance • Composite • Multiplicity תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  24. OMDClass קשרים בין מחלקות Inheritance - ירושה Inheritance :source file תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  25. OMDClass קשרים בין מחלקות Multiplicity Associations - Directional Association Role Name Directed :source files תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  26. OMDClass קשרים בין מחלקות Associations - Bi-Directional Bi-Directional :source files תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  27. OMDClass קשרים בין מחלקות Aggregation Directed or Bi-Directional תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  28. OMDClass קשרים בין מחלקות Directional Composition Bi-Directional תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  29. OMDClass קשרים בין מחלקות Composite Composite -Directed: source files Composite : Bi-Directional תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  30. Multiplicity ריבוי תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  31. Containers/מיכלים • Container / מיכל הוא מושג מופשט של אחסון וניהול ריבוי אלמנטים. תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  32. Relations טבלה המציגה כיצד Rhapsody מממש Container תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  33. ContainerOMCollection תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  34. ContainerOMList תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  35. ContainerOMMap תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  36. נספח לפרק 1 דוגמאות מימוש לפי Rhapsody תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  37. הגדרת מאפיינים (Attribute) דרך המחלקה תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  38. הגדרת מאפיינים (Attribute) דרך המאפיינים תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  39. הגדרת פעולות (Operations) דרך המחלקה תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  40. הגדרת פעולות (Operations) דרך הפעולה תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  41. Bi-Directional Association/Aggregation :source files // file Button.cpp #include Button.h #include Dialer.h Button::Button() { itsDialer = NULL; //#[ operation Button() setItsDialer(new Dialer); //#] } Button::~Button() { cleanUpRelations(); } Dialer* Button::getItsDialer() const { return itsDialer; } void Button::setItsDialer(Dialer* p_Dialer) { if(p_Dialer != NULL) { p_Dialer->_setItsButton(this); } _setItsDialer(p_Dialer); } //etc…. // file Button.h #ifndef Button_H #define Button_H Dialer; class Button } public : Button(); ~Button(); Dialer* getItsDialer() const; void setItsDialer(Dialer* p_Dialer(); void __setItsDialer(Dialer* p_Dialer); void _setItsDialer(Dialer* p_Dialer); void _clearItsDialer(); protected : void cleanUpRelations(); Dialer* itsDialer; {; #endif תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  42. Directed Association/Aggregation :source files // file Button.cpp #include Button.h #include Dialer.h Button::Button() { itsDialer = NULL; } Button::~Button() { cleanUpRelations(); } Dialer* Button::getItsDialer() const { return itsDialer; } void Button::setItsDialer(Dialer* p_Dialer) { itsDialer = p_Dialer; } void Button::cleanUpRelations() { if(itsDialer != NULL) { itsDialer = NULL; } } // file Button.h #ifndef Button_H #define Button_H class Dialer; class Button } public : Button(); ~Button(); Dialer* getItsDialer() const; void setItsDialer(Dialer* p_Dialer(); protected : void cleanUpRelations(); Dialer* itsDialer; {; #endif תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  43. Composite Or Composition (directed): Source Files // Telephone.cpp #include "Telephone.h" Telephone::Telephone() { } Telephone::~Telephone() { } Dialer* Telephone::getItsDialer() const { return (Dialer*) &itsDialer; } // Dialer.h #ifndef Dialer_H #define Dialer_H class Dialer { public : Dialer(); ~Dialer(); }; #endif // Telephone.h #ifndef Telephone_H #define Telephone_H #include "Dialer.h" class Telephone { public : Telephone(); ~Telephone(); public : Dialer* getItsDialer() const; protected : Dialer itsDialer; }; #endif // Dialer.cpp #include "Dialer.h" // Dialer.cpp Dialer::Dialer() { } Dialer::~Dialer() { } תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  44. Composite Or Composition (bi-directional): Source Files // Telephone.h, //Telephone.cpp כמו ב- Bi-directional // Dialer.h #ifndef Dialer_H #define Dialer_H class Telephone class Dialer { public : Dialer(); ~Dialer(); Telephone * getItsTelephone() const; void setItsTelephone (Telephone * p_Telephone); protected : Telephone * itsTelephone; }; #endif // Dialer.cpp #include "Dialer.h" Dialer::Dialer() { } Dialer::~Dialer() { } void Dialer::setItsTelephone(Telephone * p_Telephone) {void Dialer::_setItsTelephone(Telephone* p_Telephone) { __setItsTelephone(p_Telephone); } תיכון תוכנה ד"ר ר' גלנט / י' לויאן

  45. Inheritance : source file //file Button.h #ifndef Button_H #define Button_H #include "Inheritance.h" class Button { public : Button(const OMString& aDeviceId); Button(); virtual ~Button(); void detect(); private : virtual bool isButtonStateON()=0; public : OMString getDeviceId() const; void setDeviceId(OMString p_deviceId); protected : OMString deviceId; }; #endif //file Button.cpp--------------------- #include Button.h Button::Button(const OMString& aDeviceId) : deviceId(aDeviceId) { } // file ButtonImplementation.h #ifndef ButtonImplementation_H #define ButtonImplementation_H #include "Inheritance.h" #include "Button.h" class ButtonImplementation : public Button { public : ButtonImplementation(const OMString& aDeviceId); //etc... }; #endif //file ButtonImplementation.cpp--------------------- #include ButtonImplementation.h ButtonImplementation::ButtonImplementation(const OMString& aDeviceId) : Button(aDeviceId) { } //etc... תיכון תוכנה ד"ר ר' גלנט / י' לויאן

More Related