University of Southern California Center for Systems and Software Engineering Architecture and Design Patterns CSCI577A Fall2015 Kan Qi, Bo Wang.

Slides:



Advertisements
Similar presentations
Chapter 13 Review Questions
Advertisements

A component- and message-based architectural style for GUI software
Applied Architecture (or… Architecture In Action) David Woollard University of Southern California Software Architecture Group NASA Jet Propulsion Laboratory.
2 Object-Oriented Analysis and Design with the Unified Process Objectives  Explain how statecharts can be used to describe system behaviors  Use statecharts.
Applying Architectural Styles and Patterns. Outline  Defining Architectural Patterns and Style The activation model Styles and Quality Attributes  Common.
Object Oriented System Development with VB .NET
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Software Connectors Software Architecture Lecture 7.
Design Patterns CS is not simply about programming
SWE Introduction to Software Engineering
James Tam Introduction To Design Patterns You will learn about design techniques that have been successfully applied to different scenarios.
Satzinger, Jackson, and Burd Object-Orieneted Analysis & Design
Spring 2010CS 2251 Design Patterns. Spring 2010CS 2252 What is a Design Pattern? "a general reusable solution to a commonly occurring problem in software.
Creating Architectural Descriptions. Outline Standardizing architectural descriptions: The IEEE has published, “Recommended Practice for Architectural.
Objectives The key roles an architecture description plays in a software project. The key roles an architecture description plays in a software project.
The Architecture of Transaction Processing Systems
Software Architecture Patterns (2). what is architecture? (recap) o an overall blueprint/model describing the structures and properties of a "system"
The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design.
Course Instructor: Aisha Azeem
Chapter 10: Architectural Design
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
System Design & Software Architecture
Domain-Specific Software Engineering Alex Adamec.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Software Connectors Software Architecture Lecture 7.
Web Application Architecture: multi-tier (2-tier, 3-tier) & mvc
The chapter will address the following questions:
Object-Oriented Architecture & Design – Lecture 1 (of 3) Problem Decomposition David Woollard University of Southern California Computer Science Department.
What is Software Architecture?
Client/Server Architectures
Objektorienteret netværkskommunikation Presentation: Architectures for Distributed Systems.
Chapter 10 Architectural Design
The Design Discipline.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Chapter 10 Architectural Design.
1 CMPT 275 High Level Design Phase Architecture. Janice Regan, Objectives of Design  The design phase takes the results of the requirements analysis.
Architectural Design portions ©Ian Sommerville 1995 Establishing the overall structure of a software system.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Implementing Architectures Software Architecture.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 07. Review Architectural Representation – Using UML – Using ADL.
4/2/03I-1 © 2001 T. Horton CS 494 Object-Oriented Analysis & Design Software Architecture and Design Readings: Ambler, Chap. 7 (Sections to start.
Requirements To Design--Iteratively Chapter 12 Applying UML and Patterns Craig Larman.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Architectural Styles Part I Software Architecture Lecture 5.
Software Architecture and Design Dr. Aldo Dagnino ABB, Inc. US Corporate Research Center October 23 rd, 2003.
Software Architectural Styles Andrew Midwinter, Mark Mullen, Kevin Wong, Matt Jones 1.
Software Architecture and Patterns
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
Chapter 2 Database System Concepts and Architecture Dr. Bernard Chen Ph.D. University of Central Arkansas.
John D. McGregor Class 4 – Initial decomposition
Software Architecture & Object Oriented Analysis
Chapter 6 – Architectural Design Lecture 1 1Chapter 6 Architectural design.
12 Chapter 12: Advanced Topics in Object-Oriented Design Systems Analysis and Design in a Changing World, 3 rd Edition.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
1 Software Design Lecture What’s Design It’s a representation of something that is to be built. i.e. design  implementation.
1 Lecture 3 Major Architectural Models View (Cont’d) Architectural Models/Patterns Architecture Case Study Software Architecture & Design Pattern.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Software Connectors in Practice Software Architecture.
Basic Concepts and Definitions
CS223: Software Engineering Lecture 13: Software Architecture.
Architecture, Design Patterns and Faithful Implementation David Woollard University of Southern California Software Architecture Group NASA Jet Propulsion.
E-commerce Architecture Ayşe Başar Bener. Client Server Architecture E-commerce is based on client/ server architecture –Client processes requesting service.
CompSci 280 S Introduction to Software Development
Software Design and Architecture
Part 3 Design What does design mean in different fields?
CHAPTER 3 Architectures for Distributed Systems
CHAPTER 2 CREATING AN ARCHITECTURAL DESIGN.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 2 Database System Concepts and Architecture.
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Lecture 1: Multi-tier Architecture Overview
Implementing Architectures
Architecture and Design Patterns
Software Architecture Lecture 7
Software Architecture Lecture 7
Software Architecture Lecture 7
Software Architecture Lecture 6
Presentation transcript:

University of Southern California Center for Systems and Software Engineering Architecture and Design Patterns CSCI577A Fall2015 Kan Qi, Bo Wang

University of Southern California Center for Systems and Software Engineering Goals of This Lecture In this lecture, we will cover: – Terminology: Architecture, Styles, Patterns, etc. – Basic Examples: typical design patterns and architectural Styles. – Considerations & Example: Requirements & Design Interplay – When To Break the Rules – Summary – Workshop

University of Southern California Center for Systems and Software Engineering Architecture is Pervasive Architecture is NOT a single phase – Design != Architecture Architecture is a process and artifacts – Requirements are essentially a set of design problems, while architecture refers to the process of solving, as well as the solution to, these problems All software systems have an architecture All software systems have an architect

University of Southern California Center for Systems and Software Engineering Conceptual Design Methodologies Abstraction and Terminology – What are the fundamental concepts in your system? Separation of Concerns – Isolate likely change – e.g., components & connectors, object orientation Refined Experience – What have other architects found useful?

University of Southern California Center for Systems and Software Engineering Examples of Past Experience (Program) Design Patterns Styles Architectural Patterns Domain-Specific Software Architectures Application Domain Knowledge Scope Shallow Deep Programming (language level) Application Structure System Structure

University of Southern California Center for Systems and Software Engineering Design Patterns Low level (i.e., language level, small scope) Developer constructs Creational – E.g. Factory Method, Singleton Structural – E.g. Decorator, Facade Behavioral – E.g. Observer

University of Southern California Center for Systems and Software Engineering Design Patterns: Factory Method The factory method allows the developer to specify an interface but to defer that actual instantiation to subclasses Often used in Framework development

University of Southern California Center for Systems and Software Engineering Design Patterns: Singleton In the singleton method, only one object is instantiated for the whole program Introduces global state Easily abused! – Ownership – Lazy initialization – Global access

University of Southern California Center for Systems and Software Engineering Design Patterns: Decorator Used to override the default behavior of an object/component Steps in setting up a decorator: 1.Create a decorator class by sub- classing a component 2.Add a reference to the original component as part of the decorator 3.Override any custom behavior, and call the original component for default behavior

University of Southern California Center for Systems and Software Engineering Design Patterns: Facade Simplify multiple disjoint interfaces into a single class Classic use of abstraction to interface to multiple libraries, objects, etc.

University of Southern California Center for Systems and Software Engineering Design Patterns: Observer Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.

University of Southern California Center for Systems and Software Engineering Architectural Styles vs. Patterns Both are a known set of design decisions – Remember that every system has an architecture Patterns are more restrictive to a particular development context – Three-tier. Styles are general and can be parameterized for a context – Client-Server

University of Southern California Center for Systems and Software Engineering Styles: Client-Server Description: Clients send requests to servers, which perform the required function and replies as with requested information. Clients initiate interaction Basic Example: Web Browser Components: clients, server Connectors: RPC

University of Southern California Center for Systems and Software Engineering Styles: Pipe and Filter Description: Separate programs, or filters, are executed, potentially concurrently with data streams connecting the output of one filter to the input of the next. Basic Example: The Unix Pipe Components: filters Connectors: Pipes

University of Southern California Center for Systems and Software Engineering Styles: Blackboard Description: Independent components communicate exclusively through a shared global data repository, or blackboard. Basic Example: Heuristic Problem Solving in A.I. Components: Functional units & Blackboard Connectors: Data Access

University of Southern California Center for Systems and Software Engineering Styles: Publish-Subscribe Description: Subscribers register/deregister for specific messages or content. Publishers maintain a list of subscribers. Content- based routing is possible. Basic Example: Multiplayer networked games, RSS feeds Components: subscribers, publishers Connectors: Network protocols, event bus

University of Southern California Center for Systems and Software Engineering Patterns: Three-tier Three tier systems are very common in business applications: – Front tier is traditionally focused on user interaction – Middle tier is business logic – Back tier addresses data access and persistence

University of Southern California Center for Systems and Software Engineering Domain-Specific Soft. Arch. A DSSA includes: – A reference architecture known to work well in a particular domain – Reference components, which contains reusable chunks of domain expertise. – Methodologies for applying the architecture to particular problems. Example: Lunar Lander DSSA

University of Southern California Center for Systems and Software Engineering A DSSA for Lunar Lander Structural view of Lunar Lander DSSA Invariant with explicit points of variation – Satellite relay – Sensors

University of Southern California Center for Systems and Software Engineering Design in Context Design – Requirements Interplay – Design forms the vocabulary for requirements – Requirements constrain design One example to apply Three-tier Pattern: – Web-based File Management System. (WFMS)

University of Southern California Center for Systems and Software Engineering WFMS Example Project Goals: – Develop a web-based application that allows a user to manage data and associated metadata, including: extracting metadata from existing products changing metadata for previously stored products Design Solution: Application of Three-tier Pattern – Web-based GUI – File Manager provides web service interface – An underlying database to persists data and metadata.

University of Southern California Center for Systems and Software Engineering WFMS Example

University of Southern California Center for Systems and Software Engineering WFMS Example Model View Controller

University of Southern California Center for Systems and Software Engineering When To Break The Rules Remember - patterns and styles are abstractions – Design guides from past experience OK to deviate, but you should do so for a reason Example: An existing layered architecture must add role-based security. – LDAP is chosen as both the authentication and authorization tool (single, gold standard). – All front-ends must support user authentication – Before any action is performed, the system must validate that the user is authorized to perform the action.

University of Southern California Center for Systems and Software Engineering CAS-Curator With Roles LDAP Considered an up-call in layered architectures, But allowable in favor of a single source of security information

University of Southern California Center for Systems and Software Engineering Summary Design patterns are helpful at the developer level Styles are good sources of inspiration, but one size does not fit all – Complex software systems often exhibit multiple styles – Breaking style rules can be OK, but know why you are doing it and make sure its for a good reason. Requirements drive design and vice versa.

University of Southern California Center for Systems and Software Engineering Workshop Pick one Design pattern which can be applied to your team project Pick one Architectural style or pattern which can be applied to your team project Explain why you make those decisions

University of Southern California Center for Systems and Software Engineering Reference [1] David Woollard, Architecture, Design Patterns and Faithful Implementation [2] Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy, Architecture Styles [3] [4] [5]