1 / 21

Advanced Object-Oriented Design Patterns and Architectures Part One

Advanced Object-Oriented Design Patterns and Architectures Part One. COEN396A John Xiao cunxiao@us.ibm.com. Motivations. It’s difficult to write good software It’s really difficult to write good, reusable software Where has OO failed to deliver? where are the big success stories?.

Download Presentation

Advanced Object-Oriented Design Patterns and Architectures Part One

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. Advanced Object-Oriented Design Patterns and Architectures Part One COEN396A John Xiao cunxiao@us.ibm.com

  2. Motivations • It’s difficult to write good software • It’s really difficult to write good, reusable software • Where has OO failed to deliver? • where are the big success stories?

  3. Course Home Page Information available at www.cse.scu.edu/~jxiao1/ • Course description • Schedule • Homeworks • Handouts • Patterns Project

  4. Course Description • Three primary topics: • design patterns • frameworks • component-based software engineering • Advanced OO reuse constructs • Design • Implementation • References at www.cse.scu.edu/~jxiao1

  5. Prerequisites • Object-oriented analysis and design (Booch, Rumbaugh, Jacobson, UML) • Object-oriented programming (C++, Java)

  6. Patterns Project • Team-oriented • Pick pattern(s) • Implementation in Java (Beans)

  7. Patterns Project • 30 minute class presentation • demo the pattern/discuss issues • Prepare homework assignment • concrete design/implementation • reflective component • Web page • summary, details, links to info • Review • review other teams

  8. Possible Groupings • observer,mediator • abstract factory,building,factory method • prototype,singleton,flyweight • adapter,bridge,decorator • façade,interpreter • state,strategy,template method • composite,iterator,visitor • command,interpreter OR • memento, serialization • visitor critiques

  9. Deliverables • Presentation • Assignment • Assignment Solution • Web page • Review

  10. Deadlines • See Syllabus

  11. Patterns of Learning • Successful solutions to human endeavors are often rooted in patterns • Example: becoming a chess master • first learn the rules and physical requirements (pieces, legal moves, board layout, etc) • then learn principles (relative value of pieces, value of center squares, etc) • to become master: study games of other masters • memorize their playing patterns • there are hundreds/thousands of patterns

  12. Becoming a software design master • first learn the rules (algorithms, data structures, languages) • then learn principles (structured programming, object-oriented programming, functional programming) • to become master: study designs of other masters • memorize their designing patterns, apply them repeatedly • there are hundreds/thousands of patterns

  13. OOA Review • OOA • Requirement Analysis • Use Cases/Use Case Diagrams • High-level vs. expanded • Essential vs. real • Conceptual Model/Class Diagrams • Concepts/Classes • Attributes • Associations/Associative Type • Aggregation(Composite/Shared) • Generalization • System Sequence Diagrams • Contracts

  14. OOD Review • OOD • Interaction Diagrams (e.g. Collaboration Diagrams) (from real use cases) • Design patterns • Visibility (attribute/parameter/local/global) • Design Class Diagrams • … • Interfaces • Methods • Navigability • Attributes type info

  15. Design level reuse szyperski • Sharing consistency: programming languages • Sharing concrete solution fragments: libraries • Sharing individual contracts: interfaces • Sharing individual interaction architectures: patterns • Sharing architectures: frameworks • Sharing overall structure: system architectures • Systems of subsystems: framework hierarchies

  16. Patterns vs Frameworks vs Components • patterns support reuse of software architecture and design • capture static and dynamic structure and collaborations of successful solutions to common problems • frameworks/components support reuse of detailed design and code • an integrated set of software constructs that collaborate to provide a reusable architecture for a family of related applications

  17. Design Patterns • Gamma, Helm, Johnson, Vlissides (GOF) • Studied “super programmers” • Catalogued patterns • Design patterns solve problems that are: • in every single program you will ever write • Generic problem/Generic solution • Specific problem/customization of generic solution

  18. What is a pattern? • Description of a problem/solution pair in a certain context • Originate from architecture • Christopher Alexander 1977 • Explicit design expertise and experience • Designing a house versus designing a program • Building a house versus building a program

  19. Pattern Format • Format • Name • Context • Problem • Solution • …. • Kinds • architectural (overall description) • design patterns (design problems) • idioms (language specific)

  20. Example: Singleton • See book

  21. Patterns Review • Expert • Creator • Controller • Low Coupling • High Cohesion • Polymorphism • Pure Fabrication • Indirection • Law of Demeter

More Related