210 likes | 330 Views
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?.
E N D
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?
Course Home Page Information available at www.cse.scu.edu/~jxiao1/ • Course description • Schedule • Homeworks • Handouts • Patterns Project
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
Prerequisites • Object-oriented analysis and design (Booch, Rumbaugh, Jacobson, UML) • Object-oriented programming (C++, Java)
Patterns Project • Team-oriented • Pick pattern(s) • Implementation in Java (Beans)
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
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
Deliverables • Presentation • Assignment • Assignment Solution • Web page • Review
Deadlines • See Syllabus
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
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
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
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
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
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
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
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
Pattern Format • Format • Name • Context • Problem • Solution • …. • Kinds • architectural (overall description) • design patterns (design problems) • idioms (language specific)
Example: Singleton • See book
Patterns Review • Expert • Creator • Controller • Low Coupling • High Cohesion • Polymorphism • Pure Fabrication • Indirection • Law of Demeter