Architecture, Design Patterns and Faithful Implementation David Woollard University of Southern California Software Architecture Group NASA Jet Propulsion.

Slides:



Advertisements
Similar presentations
Chapter 13 Review Questions
Advertisements

1 Copyright 1998 by Dragos Manolescu and Joseph W. Yoder Building Frameworks With Patterns “An Active Object-Model For A Dynamic Web-Based Application”
James Tam Introduction To Design Patterns You will learn about design techniques that have been successfully applied to different scenarios.
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
Design Patterns CS is not simply about programming
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
OOHDM Hypermedia Research Work Designing Web-based applications with Object Oriented Hypermedia Design Method OOHDM.
Spring 2010CS 2251 Design Patterns. Spring 2010CS 2252 What is a Design Pattern? "a general reusable solution to a commonly occurring problem in software.
Software Engineering I Object-Oriented Design Software Design Refinement Using Design Patterns Instructor: Dr. Hany H. Ammar Dept. of Computer Science.
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"
Course Instructor: Aisha Azeem
Chapter 10: Architectural Design
Design Patterns academy.zariba.com 1. Lecture Content 1.What are Design Patterns? 2.Creational 3.Structural 4.Behavioral 5.Architectural 6.Design Patterns.
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
System Design & Software Architecture
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?
Chapter 10 Architectural Design
Design Patterns Trends and Case Study John Hurst June 2005.
© Drexel University Software Engineering Research Group (SERG) 1 Based on the paper by Philippe Kruchten from Rational Software.
Design Patterns.
Copyright © cs-tutorial.com. Introduction to Web Development In 1990 and 1991,Tim Berners-Lee created the World Wide Web at the European Laboratory for.
Software Design Refinement Using Design Patterns Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
©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.
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.
DaveAndAl.net Do Application Design Patterns Make Sense in ASP.NET? Alex Homer You may like to write these down now...
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 27. Review UML dynamic view – State Diagrams.
CS 325: Software Engineering February 12, 2015 Applying Responsibility-Assignment Patterns Design Patterns Situation-Specific Patterns Responsibility-Assignment.
James Tam Introduction To Design Patterns You will learn about design techniques that have been successfully applied to different scenarios.
Ocean Observatories Initiative Data Management (DM) Subsystem Overview Michael Meisinger September 29, 2009.
1 Welcome to CSC 301 Web Programming Charles Frank.
Software Design Patterns (1) Introduction. patterns do … & do not … Patterns do... provide common vocabulary provide “shorthand” for effectively communicating.
Chapter 2 Database System Concepts and Architecture Dr. Bernard Chen Ph.D. University of Central Arkansas.
05/26/2004www.indyjug.net1 Indy Java User’s Group May Knowledge Services, Inc.
Software Architecture & Object Oriented Analysis
12 Chapter 12: Advanced Topics in Object-Oriented Design Systems Analysis and Design in a Changing World, 3 rd Edition.
Java EE Patterns Dan Bugariu.  What is Java EE ?  What is a Pattern ?
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Design Patterns. 1 Paradigm4 Concepts 9 Principles23 Patterns.
University of Southern California Center for Systems and Software Engineering Architecture and Design Patterns CSCI577A Fall2015 Kan Qi, Bo Wang.
1 Lecture 3 Major Architectural Models View (Cont’d) Architectural Models/Patterns Architecture Case Study Software Architecture & Design Pattern.
Basic Concepts and Definitions
Submitted by: Moran Mishan. Instructed by: Osnat (Ossi) Mokryn, Dr.
Design Patterns CSCE 315 – Programming Studio Spring 2013.
Introduction To Design Patterns
Software Design Refinement Using Design Patterns
MPCS – Advanced java Programming
Design Patterns Introduction
OO Methodology OO Architecture.
Software Design and Architecture
Part 3 Design What does design mean in different fields?
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
Software Architecture
Architecture and Design Patterns
DESIGN PATTERNS : Introduction
Chapter 9 Architectural Design.
Design Patterns Imran Rashid CTO at ManiWeber Technologies.
Presentation transcript:

Architecture, Design Patterns and Faithful Implementation David Woollard University of Southern California Software Architecture Group NASA Jet Propulsion Laboratory Data Management Group

Goals of This Lecture In this lecture, we will cover: – Terminology: Architecture, Styles, Patterns, etc. – Basic Examples: Gang of Four, Canonical Styles – Considerations: Requirements & Design Interplay – Rich Examples: Metadata Repository & Data Curation Application – When To Break the Rules – Lessons Moving Forward

Architecture is Pervasive All software systems have an architecture All software systems have an architect Architecture is NOT a single phase – Design != Architecture Architecture is a process and artifacts

Conceptual Design Tools 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?

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

Design Patterns Low level (i.e., language level, small scope) Developer constructs Well documented in: Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides (Gang of 4 Book)

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

Design Patterns: Singleton Method In the singleton method, only one object is instantiated for the whole program Introduces global state Easily abused!

Design Patterns: Decorator Method 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

Design Patterns: Facade Method Simplify multiple disjoint interfaces into a single class Classic use of abstraction to interface to multiple libraries, objects, etc.

Styles vs. Patterns Both are a known set of design decisions – Remember that every system has an architecture Styles are more restrictive to a particular development context – REST, Client-Server Patterns are general and are parameterized for a context – Three-tier systems

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 Component RPC Server RPC

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 Pipe Filter Pipe Filter

Styles: Blackboard Description: Independent components communicate exclusively through a shared global data repository, or blackboard. Basic Example: Heuristic Problem Solving in A.I. Component Data Access Blackboard

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, news Subscriber Event Distributor Event Server RPC

Patterns: Three-tier Three tier systems are very common in business applications: – Front tier is traditionally focused on user interaction – Middle tier is business or application logic – Back tier addresses data access and persistence Front TierMiddle TierBack Tier Request Reply

Domain-Specific Soft. Arch. A DSSA includes: – An architecture known to work well in a particular domain – Reference components – Methodologies for applying the architecture to particular problems. Example: Scientific Software

SWSA: A DSSA for Scientific Software

Design in Context Design – Requirements Interplay – Design forms the vocabulary for requirements – Requirements constrain design Two Examples for JPL: – A metadata repository called “CAS-File Manager” – A web-based data curation system called “CAS- Curator”

CAS-File Manager Example Requirements: – The File Manager shall persist metadata in a database – The File Manager shall be runnable “out of the box” Note: I’ve made these up for the purposes of this class;) Design Solution: – Factory pattern & Abstract Factory pattern used to create multiple persistence interfaces implementations specified at runtime – Two implementations were created: Database implementation that connected to an external database that would need to be configured separately Apache Lucene implementation that uses a flat-file indexing engine to build a local store of metadata documents.

CAS-File Manager Example The AbstractCatalogFactory in an interface that defines the factory creation methods for any Catalog Factory. The CatalogFactory is an interface class that defines the methods of any catalog implementation. The DataStoreCatalogFactory class defines the concrete construction methods for creating a catalog that persists metadata to a database. The DataStoreCatalog class defined the implementation of the catalog that persists metadata to a database.

CAS-Curator 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 – Language agnostic (front-end could be PHP, Javascript, etc.) Design Solution: Application of Three-tier Pattern – Web-based GUI – File Manager provides web service interface – File Manager persists metadata to an underlying database

CAS-Curator Example

Model View Controller

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.

CAS-Curator With Roles LDAP Considered an up-call in layered architectures, But allowable in favor of a single source of security information

Lessons Moving Forward 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 How to move forward? – Faithful Implementation... But that’s for the next lecture.