21
Advanced Object-Oriented Design Patterns and Architectures Part One COEN396A John Xiao [email protected]

Advanced Object-Oriented Design Patterns and Architectures Part One

Embed Size (px)

DESCRIPTION

Advanced Object-Oriented Design Patterns and Architectures Part One. COEN396A John Xiao [email protected]. 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?. - PowerPoint PPT Presentation

Citation preview

Advanced Object-Oriented Design Patterns and Architectures

Part One

COEN396A

John Xiao

[email protected]

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