Simulation Engines TDA571 DIT030 Architecture and design. Tommaso Piazza

Size: px
Start display at page:

Download "Simulation Engines TDA571 DIT030 Architecture and design. Tommaso Piazza"

Transcription

1 Simulation Engines TDA571 DIT030 Architecture and design Tommaso Piazza

2 Software architecture Today we will examine the subject of software architecture Examples Patterns How do we split our game engine into systems and subsystems? How does information flow in our system? How do we minimize dependencies? How do we maximize the cohesion?

3 First, some fun!

4 Definition: Architecture There is no universally accepted definition One attempt from Software Architecture in Practice (Len Bass, Paul Clements, Rick Kazman) Definition: The software architecture of a program or computing system is the structure or structures of the system, which comprise software components, the externally visible properties of those components, and the relationships among them. In short: Supports analysis and design while still being simple enough to easily overview.

5 Definition: Architecture Another attempt at a definition from ANSI/IEEE Std Definition: Architecture is defined by the recommended practice as the fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution. There are hundreds of definitions, but these two cover the subject fairly well

6 Example: Three tier architecture Common architecture for administrative systems Dependencies only go to the right (no mutual dependencies) Allows for the application server to be used with many different clients (multiple platforms etc) Client Server Database presentation model storage

7 Example: 3dwm - Chalmers

8 Example: Crystal Space Abstraction Layers for component that build and rely on each other

9 Example: Ogre3D

10 Architecture and design Creating the architecture is part of the design process Architecture is the high-level structural design of the components in a software system Defines components involved in the system Defines interfaces between components Defines constraints in the system Does not define an implementation Leaves many low-level design decisions unbounded

11 How to create an architecture The easiest way is to already have experience in building software architectures Trial and error! Study architecture of existing systems Few well-established methodologies Curiously non-engineering Architecture patterns

12 How to create an architecture A few guidelines (a.k.a what do ask yourself) Visibility Which components need to know about which other components? How do you make them accessible to each other? Do you solve component visibility with a global registry or by sending around references to those that need it? Abstraction Can you classify your components into different abstraction layers? Can you remove mutual dependencies between components of different abstraction levels?

13 How to create an architecture Responsibility Does every component have a clear responsibility that does not interfere another component? Orthogonality Avoid redundancy and make sure that responsibilities are orthogonal and adequate Associations How will information flow between different components? What is the cardinality of different components?

14 Design patterns From Pattern Language (Christopher Alexander), 1997 Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice. Patterns are abstract descriptions of common problems and effective solutions

15 Design patterns Adopted by software engineering in the 90s Design patterns: Elements of Reusable Objectoriented software (Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides) 1995 Authors known as The gang of four Still the authoritative source on design patterns Catalogue of 23 separate patterns Name Problem description Detailed solution Nowadays, hundreds of patterns

16 Anatomy of a Design pattern Name Obviously important since it will be part of the common terminology for all software engineers Problem A problem description which tells us when a particular pattern is applicable (its context) Solution A description of the elements that make up the design of the pattern solution, their relationships, responsibilities, and collaborations Consequences The results and tradeoffs of using the pattern

17 List of Design Patterns The initial 23 design patterns

18 Pattern: Singleton

19 Pattern: Singleton Problem Some classes only have one instance in an entire system. In addition, this instance should be easily accessible. Solution Make the class itself responsible for keeping track of its sole instance. The class can ensure that no other instance can be created and it can provide a way to access the instance. Consequences Controlled access to sole instance. Overuse can cause pollution to the global namespace. Implementation In C++ (like in Java), we implement the Singleton design pattern using static member functions and variables.

20 Pattern: Singleton class PrinterSpooler { private: static PrinterSpooler *_instance; PrinterSpooler(); // private constructor public:... static PrinterSpooler *instance() { if (_instance == NULL) _instance = new PrinterSpooler(); return _instance; } };...

21 Pattern: Bridge

22 Pattern: Bridge Problem Capturing different implementations of an abstraction through simple interface inheritance leads to very rigid couplings between the abstraction interface and the implementations. This can result in major maintenance problems and cross-platform issues. Example In this example we have a class hierarchy for 3D meshes and want to extend them with support for terrain meshes. There are different implementations for the OpenGL and DirectX versions.

23 Pattern: Bridge Problem Capturing different implementations of an abstraction through simple interface inheritance leads to very rigid couplings between the abstraction interface and the implementations. This can result in major maintenance problems and cross-platform issues. Example In this example we have a class hierarchy for 3D meshes and want to extend them with support for terrain meshes. There are different implementations for the OpenGL and DirectX versions.

24 Pattern: Bridge We are inadvertently mixing abstractions with implementations. Adding a new mesh will also require platform-specific versions. Solution If we separate the abstraction and implementations and create a single bridge between the two, we can avoid these problems. Consequences Decouples interface and implementation, improves extensibility, hides implementation details from clients.

25 Patterns in general There are three categories of patterns Architectural patterns High-level patterns specifying the fundamental structure of a software system. Design patterns Medium-level patterns to organize subsystem-level functionality in a system. Idioms Low-level patterns solving implementation-specific problems (often on a language level).

26 Patterns in general Patterns can also be quantified over phases of the development process Analysis patterns High-level solutions to commonly recurring problems on the analysis level of software systems. Design patterns Medium-level solutions to commonly recurring problems on the design level of software systems. For more information, read Analysis Patterns Reusable object models by Martin Fowler

27 Architectural patterns Definition An architectural pattern expresses a fundamental structural organization schema for software systems. It provides a set of pre-defined subsystems, specifies their responsibilities, and includes rules and guidelines for organizing the relationships between them. Different kinds of architectural patterns Mud to Structure Layers, Pipes and Filters, Blackboard Distributed Systems, Broker, Pipes and Filters, Microkernel Interactive Systems, Model-View-Controller, Presentation- Abstraction-Control Adaptable Systems, Reflection, Microkernel

28 Pattern: Layers (Layered system) Structure applications that can be decomposed into groups of subtasks at specific levels of abstraction. Services of one layer build from the services of the previous layer. Example OSI 7-layer network model, Crystal Space, VMs Benefits Reuse of layers Support for standardization Dependencies are kept local Exchangeability Drawbacks Changing behavior Lower efficiency Unnecessary work Difficulty of establishing correct granularity

29 OSI-7

30 Pattern: Model-view-controller Structure applications in such a way that there is a clear distinction between the visual views, the manipulative controls, and the domain model these two operate upon. Model View Core functionality and data (application-specific) User display of model Controller Handle user input for manipulating model and views Example Volume controls in Windows Benefits Multiple & synchronized views Pluggable views and controllers Exchangeability of look and feel Framework potential (MFC, Swing, etc) Drawbacks Increased complexity Tied to view & controller View & controller depend on model interface

31 Pattern: Model-view-controller

32 Break!

33 Game programming Design Patterns Design patterns for game programming are generally categorized in the three core patterns of the MVC architectural pattern Model = Game World Maintains world object state View = Renderer Draws models Controller = Process Changes model state based on circumstance

34 Game programming Design Patterns General rules Models are read-only by views; Views are invisible to models Models are read-write by controllers Controllers are created by models, but otherwise controllers are invisible to models Views and controllers are invisible to each other

35 Pattern: Model Intent Store the state of a game object which exists in the game world Motivation Games consist of a variety of objects which interact Each object tracks its state over time as the game progresses Game rules define the transition of these states, and are often implemented by the controller pattern Implementation Models are often implemented as polymorphic class hierarchies Each type of model is given its own class which extends a base class Subclasses often overload basic methods to implement a special trait Care is often given to optimizing models for quick access by the view pattern

36 Pattern: Spatial Index Intent Speed searches by position in a model database Motivation Almost all games need to search a model database quickly by location or region Visibility culling Picking Collision detection Implementations Binary Space Partition (BSP) Quad trees X and Y hashes Portals

37 Pattern: Type Database Intent Store information which is common to model types Motivation There is often a lot of common information concerning objects (artwork, basic stats, etc) To avoid duplication and to simplify editing, these are separated into a database Implementation Conceptually, static data associated with a model subclass Often implemented as an independent relational database indexed by type number or type name

38 Pattern: Type Database Examples of fields in a type database Prototype state (hit points, strength, etc) Size, extends, initial orientations Type categorization (offense, defense, etc) Execution scripts Artwork (meshes, textures, sprites) Sound effects It is a good idea to provide control of the type not dependent on writing code

39 Pattern: View Intent Render the visible models given a viewpoint in the game world Motivation Renderers are often the most custom part of any game Renderers often define the technology in a game and determine the envelope of design Extreme optimizations are common at the expense of maintainability Implementation The view reads the model database through a spatial index but does not modify either Model is read-only by view Spatial index is read-only by view View is invisible to model and spatial index Communication between a spatial index and a view is often the determining factor i game performance and is given great attention

40 Pattern: Controller Intent Update model state based on circumstance Motivation Controllers implement the rules of a game Controllers determine how objects behave given a circumstance and isolate these rules from the objects themselves Makes both controllers and models more reusable and maintainable Implementation Models are read-writeable by controllers Controllers are created and destroyed by models but otherwise invisible Views are invisible to controllers and vice-versa Controllers are often implemented as processes in a mini cooperative multi-tasking kernel, but are sometimes hard-wired

41 Pattern: Mini-kernel Intent Provide each controller with a chance to execute once per game frame Motivation Without a mini-kernel, model objects are typically updated by a set of hard-wired controller functions called from the main loop Example: void updateworld() { for(int i=0; i<numtanks; i++) { if(tanks[i]) { updatetankphysics(tanks[i]); updatetankai(tanks[i]); } }... etc Reduces encapsulation and increases maintenance

42 Pattern: Mini-kernel Implementation Create a base controller class A list of controller pointers is maintained Each game frame, the mini-kernel calls a virtual update-method on controllers Good opportunity for threading... Make sure that update-calls are non-blocking Sometimes, the update order might require priority assignments Input, etc

43 Game patterns: Overview

44 Keeping it flexible What if you want to change some of the controllers to modify the models transformations? write new controllers or... use a component approach

45 Component frameworks The best solution to avoid monolithic design in a framework is to base it more or less around independent components Definition (from lecture 1) A component is an independent unit of deployment with contractually specified interfaces and with explicit context dependencies to other external components only. Key points Independent Few or no dependencies Unit of deployment Must deploy the whole component Contractually specified interfaces Clearly defined interfaces as contracts of the capabilities of the component Explicit context dependencies Any dependencies are explicitly defined and only to other components

46 Examples of Component frameworks CORBA OMG's platform-independent and language-agnostic component model for distributed objects Microsoft DCOM/COM/COM+ Microsoft's Component Object Model for the Windows platform Microsoft.NET Microsoft's new model for web services (distributed components) Java Beans Java's component architecture as specified by Sun. Allows for portable Java-style components.

47 Focus: SCF in CrystalSpace CrystalSpace is no longer used in this course, but as it is a good example Uses a light-weight component mechanism called Shared Class Facility Well suited for game engine design Separates the interface and implementations (called plugins in SCF) Allows for replacing implementations with updated versions Allows for using different implementations depending on configuration/hardware/etc

48 Interfaces Main concept of SCF, like most component frameworks, is the interface Example //idog.h struct idog : public ibase { virtual bool IsAlive() = 0; virtual char const* GetName() = 0; virtual void SetName(char const *) = 0; virtual void Shout(int Volume) = 0; virtual void Run(int Speed, float Direction) = 0; virtual bool GetChildren(iObjVector *obrood) = 0; };

49 Implementations Example (note that there can be several implementations) //mydog.h #include idog.h class MyDog : public idog { private: // private member functions & variables char* Name; public: virtual bool IsAlive(); virtual char const* GetName(); virtual void SetName(char const *); virtual void Shout(char const *msg); virtual void Run(int Speed, float Direction); virtual bool GetChildren(iObjVector *obrood);... public member functions & variables... };

50 Plugins mydog.h and mydog.cpp are placed in a plugin, usually as a dynamically linked library A factory method is added to the plugin static idog *MyDog_Create() { return new MyDog(); } The plugin is accessed with: cslibraryhandle handle = csloadlibary(./libdog.so ); idog (*idog_create)() = csgetlibrarysymbol(handle, MyDog_Create ); idog *dog = idog_create(); printf( Doggy's name is %s\n, dog->getname()); dog->shout( bark );... Macros can make this easier

51 Plugin meta-information The SCF system discovers plugins automatically and dynamically Some additional meta-information about each plugin is needed <?xml version= 1.0?> <plugin> <scf> <classes> <class> <name>crystalspace.mygame.mydoc</name> <implementation>mydog</implementation> <description>my Dog Plugin</description> <requires> <class>crystalspace.graphics3d.</class> </requires> </class> </classes> </scf> </plugin>

52 Using SCF and plugins When using the plugin, include the interface (idog.h) and not the implementation // dogtest.cpp #include "cssysdef.h" #include "csutil/scf.h" #include "csutil/cfgfile.h" #include "idog.h" static void test_dog() { csref<idog> dog = SCF_CREATE_INSTANCE("MyDog", idog); if (!dog) fprintf(stderr, "No csdog shared class!\n"); else { dog->setname("droopy"); dog->walk(); dog->shout("hello!"); printf("dog's name is %s\n", dog->getname()); } } int main (int argc, char const **argv) { scfinitialize(argc, argv); test_dog(); iscf::scf->finish(); }

53 Architecture for a Simulation Engine So, how do we construct an architecture for our projects? Identify the various components and concepts important for your engine 3D graphics Physics AI opponents... etc Draw a simple diagram of your concepts Add associations between concepts Rework until you are happy

54 Ogre3D Ogre3D is a rendering engine, not a simulation engine The software engineering can not be based on Ogre3D Develop an architecture that includes Ogre3D as a rendering component

55 Game states All kinds of games and simple simulations beyond simple demos have multiple states Introductions Menus Playing The old-school way of doing this is with if-statements, switches and loops Extremely cumbersome in the long run Use a game state machine instead Each state can be implemented separately without impact on other states Managing_Game_States_with_OGRE

56 Summary Software architecture is part of the design process and establishes the main structure of a system without binding low-level details Creating good architectures is difficult and is a skill that requires experience Patterns can help us by providing us with previously collected experience Design patterns provide us with solutions to tactical problems on a medium abstraction level Architectural patterns provide strategies on the overall structure of a software system and its subsystem Idioms are implementation-level patterns for solving particular problems given a particular programming language

Architecture and design

Architecture and design Architecture and design Simulation Engines 2008 Chalmers University of Technology Markus Larsson markus.larsson@slxgames.com 08-11-10 Simulation Engines 2008, Markus Larsson 1 Who am I? Markus Larsson

More information

Design Patterns. An introduction

Design Patterns. An introduction Design Patterns An introduction Introduction Designing object-oriented software is hard, and designing reusable object-oriented software is even harder. Your design should be specific to the problem at

More information

Cocoa Design Patterns. Erik M. Buck October 17, 2009

Cocoa Design Patterns. Erik M. Buck October 17, 2009 Cocoa Design Patterns Erik M. Buck October 17, 2009 Topics n What is a design pattern? n Why Focus on design patterns? n What is the Model View Controller design pattern? n Using MVC n When wouldn t you

More information

Design Patterns. Gunnar Gotshalks A4-1

Design Patterns. Gunnar Gotshalks A4-1 Design Patterns A4-1 On Design Patterns A design pattern systematically names, explains and evaluates an important and recurring design problem and its solution Good designers know not to solve every problem

More information

Idioms and Design Patterns. Martin Skogevall IDE, Mälardalen University

Idioms and Design Patterns. Martin Skogevall IDE, Mälardalen University Idioms and Design Patterns Martin Skogevall IDE, Mälardalen University 2005-04-07 Acronyms Object Oriented Analysis and Design (OOAD) Object Oriented Programming (OOD Software Design Patterns (SDP) Gang

More information

Lecture 13: Design Patterns

Lecture 13: Design Patterns 1 Lecture 13: Design Patterns Kenneth M. Anderson Object-Oriented Analysis and Design CSCI 6448 - Spring Semester, 2005 2 Pattern Resources Pattern Languages of Programming Technical conference on Patterns

More information

An Introduction to Patterns

An Introduction to Patterns An Introduction to Patterns Robert B. France Colorado State University Robert B. France 1 What is a Pattern? - 1 Work on software development patterns stemmed from work on patterns from building architecture

More information

Pattern Resources. Lecture 25: Design Patterns. What are Patterns? Design Patterns. Pattern Languages of Programming. The Portland Pattern Repository

Pattern Resources. Lecture 25: Design Patterns. What are Patterns? Design Patterns. Pattern Languages of Programming. The Portland Pattern Repository Pattern Resources Lecture 25: Design Patterns Kenneth M. Anderson Object-Oriented Analysis and Design CSCI 6448 - Spring Semester, 2003 Pattern Languages of Programming Technical conference on Patterns

More information

1 Software Architecture

1 Software Architecture Some buzzwords and acronyms for today Software architecture Design pattern Separation of concerns Single responsibility principle Keep it simple, stupid (KISS) Don t repeat yourself (DRY) Don t talk to

More information

Goals of Lecture. Lecture 27: OO Design Patterns. Pattern Resources. Design Patterns. Cover OO Design Patterns. Pattern Languages of Programming

Goals of Lecture. Lecture 27: OO Design Patterns. Pattern Resources. Design Patterns. Cover OO Design Patterns. Pattern Languages of Programming Goals of Lecture Lecture 27: OO Design Patterns Cover OO Design Patterns Background Examples Kenneth M. Anderson Object-Oriented Analysis and Design CSCI 6448 - Spring Semester, 2001 April 24, 2001 Kenneth

More information

Application Architectures, Design Patterns

Application Architectures, Design Patterns Application Architectures, Design Patterns Martin Ledvinka martin.ledvinka@fel.cvut.cz Winter Term 2017 Martin Ledvinka (martin.ledvinka@fel.cvut.cz) Application Architectures, Design Patterns Winter Term

More information

Patterns Architectural Styles Archetypes

Patterns Architectural Styles Archetypes Patterns Architectural Styles Archetypes Patterns The purpose of a pattern is to share a proven, widely applicable solution to a particular problem in a standard form that allows it to be easily reused.

More information

INTERNAL ASSESSMENT TEST III Answer Schema

INTERNAL ASSESSMENT TEST III Answer Schema INTERNAL ASSESSMENT TEST III Answer Schema Subject& Code: Object-Oriented Modeling and Design (15CS551) Sem: V ISE (A & B) Q. No. Questions Marks 1. a. Ans Explain the steps or iterations involved in object

More information

An Introduction to Patterns

An Introduction to Patterns An Introduction to Patterns Robert B. France Colorado State University Robert B. France 1 What is a Pattern? Patterns are intended to capture the best available software development experiences in the

More information

More on Design. CSCI 5828: Foundations of Software Engineering Lecture 23 Kenneth M. Anderson

More on Design. CSCI 5828: Foundations of Software Engineering Lecture 23 Kenneth M. Anderson More on Design CSCI 5828: Foundations of Software Engineering Lecture 23 Kenneth M. Anderson Outline Additional Design-Related Topics Design Patterns Singleton Strategy Model View Controller Design by

More information

Patterns in Software Engineering

Patterns in Software Engineering Patterns in Software Engineering Lecturer: Raman Ramsin Lecture 8 GoV Patterns Architectural Part 2 1 Architectural Patterns: Categories From Mud to Structure Layers, Pipes and Filters, and Blackboard

More information

CSCD01 Engineering Large Software Systems. Design Patterns. Joe Bettridge. Winter With thanks to Anya Tafliovich

CSCD01 Engineering Large Software Systems. Design Patterns. Joe Bettridge. Winter With thanks to Anya Tafliovich CSCD01 Engineering Large Software Systems Design Patterns Joe Bettridge Winter 2018 With thanks to Anya Tafliovich Design Patterns Design patterns take the problems consistently found in software, and

More information

Software Engineering - I An Introduction to Software Construction Techniques for Industrial Strength Software

Software Engineering - I An Introduction to Software Construction Techniques for Industrial Strength Software Software Engineering - I An Introduction to Software Construction Techniques for Industrial Strength Software Chapter 9 Introduction to Design Patterns Copy Rights Virtual University of Pakistan 1 Design

More information

Design Patterns. Observations. Electrical Engineering Patterns. Mechanical Engineering Patterns

Design Patterns. Observations. Electrical Engineering Patterns. Mechanical Engineering Patterns Introduction o to Patterns and Design Patterns Dept. of Computer Science Baylor University Some slides adapted from slides by R. France and B. Tekinerdogan Observations Engineering=Problem Solving Many

More information

Software Design Patterns. Background 1. Background 2. Jonathan I. Maletic, Ph.D.

Software Design Patterns. Background 1. Background 2. Jonathan I. Maletic, Ph.D. Software Design Patterns Jonathan I. Maletic, Ph.D. Department of Computer Science Kent State University J. Maletic 1 Background 1 Search for recurring successful designs emergent designs from practice

More information

Introduction to Design Patterns

Introduction to Design Patterns Dr. Michael Eichberg Software Engineering Department of Computer Science Technische Universität Darmstadt Software Engineering Introduction to Design Patterns (Design) Patterns A pattern describes... Patterns

More information

Coordination Patterns

Coordination Patterns Coordination Patterns 1. Coordination Patterns Design Patterns and their relevance for Coordination Oscar Nierstrasz Software Composition Group Institut für Informatik (IAM) Universität Bern oscar@iam.unibe.ch

More information

Introduction to Design Patterns

Introduction to Design Patterns Dr. Michael Eichberg Software Technology Group Department of Computer Science Technische Universität Darmstadt Introduction to Software Engineering Introduction to Design Patterns Patterns 2 PATTERNS A

More information

Topics in Object-Oriented Design Patterns

Topics in Object-Oriented Design Patterns Software design Topics in Object-Oriented Design Patterns Material mainly from the book Design Patterns by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides; slides originally by Spiros Mancoridis;

More information

Object Oriented Methods with UML. Introduction to Design Patterns- Lecture 8

Object Oriented Methods with UML. Introduction to Design Patterns- Lecture 8 Object Oriented Methods with UML Introduction to Design Patterns- Lecture 8 Topics(03/05/16) Design Patterns Design Pattern In software engineering, a design pattern is a general repeatable solution to

More information

Applying Design Patterns to accelerate development of reusable, configurable and portable UVCs. Accellera Systems Initiative 1

Applying Design Patterns to accelerate development of reusable, configurable and portable UVCs. Accellera Systems Initiative 1 Applying Design Patterns to accelerate development of reusable, configurable and portable UVCs. Accellera Systems Initiative 1 About the presenter Paul Kaunds Paul Kaunds is a Verification Consultant at

More information

Ingegneria del Software Corso di Laurea in Informatica per il Management. Design Patterns part 1

Ingegneria del Software Corso di Laurea in Informatica per il Management. Design Patterns part 1 Ingegneria del Software Corso di Laurea in Informatica per il Management Design Patterns part 1 Davide Rossi Dipartimento di Informatica Università di Bologna Pattern Each pattern describes a problem which

More information

DESIGN PATTERN - INTERVIEW QUESTIONS

DESIGN PATTERN - INTERVIEW QUESTIONS DESIGN PATTERN - INTERVIEW QUESTIONS http://www.tutorialspoint.com/design_pattern/design_pattern_interview_questions.htm Copyright tutorialspoint.com Dear readers, these Design Pattern Interview Questions

More information

CHAPTER 6: CREATIONAL DESIGN PATTERNS

CHAPTER 6: CREATIONAL DESIGN PATTERNS CHAPTER 6: CREATIONAL DESIGN PATTERNS SESSION I: OVERVIEW OF DESIGN PATTERNS, ABSTRACT FACTORY Software Engineering Design: Theory and Practice by Carlos E. Otero Slides copyright 2012 by Carlos E. Otero

More information

Modellistica Medica. Maria Grazia Pia, INFN Genova. Scuola di Specializzazione in Fisica Sanitaria Genova Anno Accademico

Modellistica Medica. Maria Grazia Pia, INFN Genova. Scuola di Specializzazione in Fisica Sanitaria Genova Anno Accademico Modellistica Medica Maria Grazia Pia INFN Genova Scuola di Specializzazione in Fisica Sanitaria Genova Anno Accademico 2002-2003 Lezione 8 OO modeling Design Patterns Introduction Creational Patterns Software

More information

Facade and Adapter. Comp-303 : Programming Techniques Lecture 19. Alexandre Denault Computer Science McGill University Winter 2004

Facade and Adapter. Comp-303 : Programming Techniques Lecture 19. Alexandre Denault Computer Science McGill University Winter 2004 Facade and Adapter Comp-303 : Programming Techniques Lecture 19 Alexandre Denault Computer Science McGill University Winter 2004 March 23, 2004 Lecture 19 Comp 303 : Facade and Adapter Page 1 Last lecture...

More information

CHAPTER 6: CREATIONAL DESIGN PATTERNS

CHAPTER 6: CREATIONAL DESIGN PATTERNS CHAPTER 6: CREATIONAL DESIGN PATTERNS SESSION III: BUILDER, PROTOTYPE, SINGLETON Software Engineering Design: Theory and Practice by Carlos E. Otero Slides copyright 2012 by Carlos E. Otero For non-profit

More information

Object-Oriented Design

Object-Oriented Design Object-Oriented Design Lecture 14: Design Workflow Department of Computer Engineering Sharif University of Technology 1 UP iterations and workflow Workflows Requirements Analysis Phases Inception Elaboration

More information

Chapter 12 (revised by JAS)

Chapter 12 (revised by JAS) Chapter 12 (revised by JAS) Pattern-Based Design Slide Set to accompany Software Engineering: A Practitionerʼs Approach, 7/e by Roger S. Pressman Slides copyright 1996, 2001, 2005, 2009 by Roger S. Pressman

More information

Using Design Patterns in Java Application Development

Using Design Patterns in Java Application Development Using Design Patterns in Java Application Development ExxonMobil Research & Engineering Co. Clinton, New Jersey Michael P. Redlich (908) 730-3416 michael.p.redlich@exxonmobil.com About Myself Degree B.S.

More information

Crash course on design patterns

Crash course on design patterns Crash course on design patterns Yann-Gaël Guéhéneuc guehene@emn.fr From Olivier Motelet s course (2001/10/17) École des Mines de Nantes, France Object Technology International, Inc., Canada Design patterns

More information

In this Lecture you will Learn: Design Patterns. Patterns vs. Frameworks. Patterns vs. Frameworks

In this Lecture you will Learn: Design Patterns. Patterns vs. Frameworks. Patterns vs. Frameworks In this Lecture you will Learn: Design Patterns Chapter 15 What types of patterns have been identified in software development How to apply design patterns during software development The benefits and

More information

Presenter: Dong hyun Park

Presenter: Dong hyun Park Presenter: 200412325 Dong hyun Park Design as a life cycle activity bonds the requirements to construction Process of breaking down the system into components, defining interfaces and defining components

More information

James Newkirk

James Newkirk Private Interface Class Structural James Newkirk newkirk@oma.com Intent Provide a mechanism that allows specific classes to use a non-public subset of a class interface without inadvertently increasing

More information

CPSC 310 Software Engineering. Lecture 11. Design Patterns

CPSC 310 Software Engineering. Lecture 11. Design Patterns CPSC 310 Software Engineering Lecture 11 Design Patterns Learning Goals Understand what are design patterns, their benefits and their drawbacks For at least the following design patterns: Singleton, Observer,

More information

In this Lecture you will Learn: System Design. System Architecture. System Architecture

In this Lecture you will Learn: System Design. System Architecture. System Architecture In this Lecture you will Learn: System Design Chapter 13 The major concerns of system design The main aspects of system architecture, in particular what is meant by subdividing a system into layers and

More information

C++ INTERFACE CLASSES STRENGTHENING ENCAPSULATION

C++ INTERFACE CLASSES STRENGTHENING ENCAPSULATION C++ INTERFACE CLASSES STRENGTHENING ENCAPSULATION Separating a class s interface from its implementation is fundamental to good quality object oriented software design/programming. However C++ (when compared

More information

Game programming patterns

Game programming patterns CS 672: Spring 2010 Game Programming Images: Chaim Gingold / Chris Hecker www.slackworks.com/~cog and Design Game programming patterns MVC for games 2/18/2009 1 Game Programming Patterns Sources Game Programming

More information

Information systems modelling UML and service description languages

Information systems modelling UML and service description languages Internet Engineering Tomasz Babczyński, Zofia Kruczkiewicz Tomasz Kubik Information systems modelling UML and service description languages Overview of design patterns for supporting information systems

More information

Tuesday, October 4. Announcements

Tuesday, October 4. Announcements Tuesday, October 4 Announcements www.singularsource.net Donate to my short story contest UCI Delta Sigma Pi Accepts business and ICS students See Facebook page for details Slide 2 1 Design Patterns Design

More information

4.1 Introduction Programming preliminaries Constructors Destructors An example... 3

4.1 Introduction Programming preliminaries Constructors Destructors An example... 3 Department of Computer Science Tackling Design Patterns Chapter 4: Factory Method design pattern Copyright c 2016 by Linda Marshall and Vreda Pieterse. All rights reserved. Contents 4.1 Introduction.................................

More information

Introduction to Software Engineering (2+1 SWS) Winter Term 2009 / 2010 Dr. Michael Eichberg Vertretungsprofessur Software Engineering Department of

Introduction to Software Engineering (2+1 SWS) Winter Term 2009 / 2010 Dr. Michael Eichberg Vertretungsprofessur Software Engineering Department of Introduction to Software Engineering (2+1 SWS) Winter Term 2009 / 2010 Dr. Michael Eichberg Vertretungsprofessur Software Engineering Department of Computer Science Technische Universität Darmstadt Dr.

More information

What are the characteristics of Object Oriented programming language?

What are the characteristics of Object Oriented programming language? What are the various elements of OOP? Following are the various elements of OOP:- Class:- A class is a collection of data and the various operations that can be performed on that data. Object- This is

More information

OBJECT ORIENTED PROGRAMMING USING C++ CSCI Object Oriented Analysis and Design By Manali Torpe

OBJECT ORIENTED PROGRAMMING USING C++ CSCI Object Oriented Analysis and Design By Manali Torpe OBJECT ORIENTED PROGRAMMING USING C++ CSCI 5448- Object Oriented Analysis and Design By Manali Torpe Fundamentals of OOP Class Object Encapsulation Abstraction Inheritance Polymorphism Reusability C++

More information

Design Patterns. CSC207 Winter 2017

Design Patterns. CSC207 Winter 2017 Design Patterns CSC207 Winter 2017 Design Patterns A design pattern is a general description of the solution to a well-established problem using an arrangement of classes and objects. Patterns describe

More information

CSCD01 Engineering Large Software Systems. Design Patterns. Joe Bettridge. Winter With thanks to Anya Tafliovich

CSCD01 Engineering Large Software Systems. Design Patterns. Joe Bettridge. Winter With thanks to Anya Tafliovich CSCD01 Engineering Large Software Systems Design Patterns Joe Bettridge Winter 2018 With thanks to Anya Tafliovich Design Patterns Design patterns take the problems consistently found in software, and

More information

The Object Recursion Pattern

The Object Recursion Pattern SilverMark, Inc. woolf@acm.org OBJECT RECURSION Object Behavioral Intent Distribute processing of a request over a structure by delegating polymorphically. Object Recursion transparently enables a request

More information

be used for more than one use case (for instance, for use cases Create User and Delete User, one can have one UserController, instead of two separate

be used for more than one use case (for instance, for use cases Create User and Delete User, one can have one UserController, instead of two separate UNIT 4 GRASP GRASP: Designing objects with responsibilities Creator Information expert Low Coupling Controller High Cohesion Designing for visibility - Applying GoF design patterns adapter, singleton,

More information

1. Write two major differences between Object-oriented programming and procedural programming?

1. Write two major differences between Object-oriented programming and procedural programming? 1. Write two major differences between Object-oriented programming and procedural programming? A procedural program is written as a list of instructions, telling the computer, step-by-step, what to do:

More information

Software Design Fundamentals. CSCE Lecture 11-09/27/2016

Software Design Fundamentals. CSCE Lecture 11-09/27/2016 Software Design Fundamentals CSCE 740 - Lecture 11-09/27/2016 Today s Goals Define design Introduce the design process Overview of design criteria What results in a good design? Gregory Gay CSCE 740 -

More information

Design Patterns. CSC207 Fall 2017

Design Patterns. CSC207 Fall 2017 Design Patterns CSC207 Fall 2017 Design Patterns A design pattern is a general description of the solution to a well-established problem using an arrangement of classes and objects. Patterns describe the

More information

The GoF Design Patterns Reference

The GoF Design Patterns Reference The GoF Design Patterns Reference Version.0 / 0.0.07 / Printed.0.07 Copyright 0-07 wsdesign. All rights reserved. The GoF Design Patterns Reference ii Table of Contents Preface... viii I. Introduction....

More information

Lectures 24 and 25 Introduction to Architectural Styles and Design Patterns

Lectures 24 and 25 Introduction to Architectural Styles and Design Patterns Lectures 24 and 25 Introduction to Architectural Styles and Design Patterns Software Engineering ITCS 3155 Fall 2008 Dr. Jamie Payton Department of Computer Science University of North Carolina at Charlotte

More information

Trusted Components. Reuse, Contracts and Patterns. Prof. Dr. Bertrand Meyer Dr. Karine Arnout

Trusted Components. Reuse, Contracts and Patterns. Prof. Dr. Bertrand Meyer Dr. Karine Arnout 1 Last update: 2 November 2004 Trusted Components Reuse, Contracts and Patterns Prof. Dr. Bertrand Meyer Dr. Karine Arnout 2 Lecture 5: Design patterns Agenda for today 3 Overview Benefits of patterns

More information

Design Process Overview. At Each Level of Abstraction. Design Phases. Design Phases James M. Bieman

Design Process Overview. At Each Level of Abstraction. Design Phases. Design Phases James M. Bieman CS314, Colorado State University Software Engineering Notes 4: Principles of Design and Architecture for OO Software Focus: Determining the Overall Structure of a Software System Describes the process

More information

APPLYING DESIGN PATTERNS TO SCA IMPLEMENTATIONS

APPLYING DESIGN PATTERNS TO SCA IMPLEMENTATIONS APPLYING DESIGN PATTERNS TO SCA IMPLEMENTATIONS Adem Zumbul (TUBITAK-UEKAE, Kocaeli, Turkey, ademz@uekae.tubitak.gov.tr); Tuna Tugcu (Bogazici University, Istanbul, Turkey, tugcu@boun.edu.tr) ABSTRACT

More information

Patterns of learning

Patterns of learning Design patterns Patterns of learning Suppose we want to learn how to play chess. First, we need to learn the basic rules. Then we need to learn the basic strategy/ principles (value of pieces, etc.). To

More information

Understading Refactorings

Understading Refactorings Understading Refactorings Ricardo Terra terra@dcc.ufmg.br Marco Túlio Valente mtov@dcc.ufmg.br UFMG, 2010 UFMG, 2010 Understanding Refactorings 1 / 36 Agenda 1 Overview 2 Refactoring 3 Final Considerations

More information

Architectural Patterns. Pascal Molli (a System of patterns Buschman et al)

Architectural Patterns. Pascal Molli (a System of patterns Buschman et al) Architectural Patterns Pascal Molli (a System of patterns Buschman et al) Architectural Patterns From MUD to Structure Layers, Pipe and Filters, Blackboard Distributed Systems Broker, Pipe and Filters,

More information

JDBC Today C HAPTER 1 INTRODUCTION

JDBC Today C HAPTER 1 INTRODUCTION C HAPTER 1 JDBC Today INTRODUCTION Since its inception in 1995 the Java language has continued to grow in popularity. Originally intended as a language for embedded systems, the Java language has moved

More information

Patterns. Erich Gamma Richard Helm Ralph Johnson John Vlissides

Patterns. Erich Gamma Richard Helm Ralph Johnson John Vlissides Patterns Patterns Pattern-based engineering: in the field of (building) architecting and other disciplines from 1960 s Some software engineers also started to use the concepts Become widely known in SE

More information

Design Patterns Design patterns advantages:

Design Patterns Design patterns advantages: Design Patterns Designing object-oriented software is hard, and designing reusable object oriented software is even harder. You must find pertinent objects factor them into classes at the right granularity

More information

Outline. Design Patterns. Observer Pattern. Definitions & Classifications

Outline. Design Patterns. Observer Pattern. Definitions & Classifications Outline Design Patterns Definitions & Classifications Observer Pattern Intent Motivation Structure Participants Collaborations Consequences Implementation 1 What is a Design Pattern describes a problem

More information

https://www.lri.fr/~linaye/gl.html

https://www.lri.fr/~linaye/gl.html Software Engineering https://www.lri.fr/~linaye/gl.html lina.ye@centralesupelec.fr Sequence 3, 2017-2018 1/50 Software Engineering Plan 1 2 3 4 5 2/50 Software Engineering ground Evolution of Program 3/50

More information

SOFTWARE PATTERNS. Joseph Bonello

SOFTWARE PATTERNS. Joseph Bonello SOFTWARE PATTERNS Joseph Bonello MOTIVATION Building software using new frameworks is more complex And expensive There are many methodologies and frameworks to help developers build enterprise application

More information

Design Patterns. CSC207 Fall 2017

Design Patterns. CSC207 Fall 2017 Design Patterns CSC207 Fall 2017 Design Patterns A design pattern is a general description of the solution to a well-established problem using an arrangement of classes and objects. Patterns describe the

More information

3 Product Management Anti-Patterns by Thomas Schranz

3 Product Management Anti-Patterns by Thomas Schranz 3 Product Management Anti-Patterns by Thomas Schranz News Read above article, it s good and short! October 30, 2014 2 / 3 News Read above article, it s good and short! Grading: Added explanation about

More information

Design Patterns. Definition of a Design Pattern

Design Patterns. Definition of a Design Pattern Design Patterns Barbara Russo Definition of a Design Pattern A Pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem,

More information

ADVANCED SOFTWARE DESIGN LECTURE 4 SOFTWARE ARCHITECTURE

ADVANCED SOFTWARE DESIGN LECTURE 4 SOFTWARE ARCHITECTURE ADVANCED SOFTWARE DESIGN LECTURE 4 SOFTWARE ARCHITECTURE Dave Clarke 1 THIS LECTURE At the end of this lecture you will know notations for expressing software architecture the design principles of cohesion

More information

The Software Design Process. CSCE 315 Programming Studio, Fall 2017 Tanzir Ahmed

The Software Design Process. CSCE 315 Programming Studio, Fall 2017 Tanzir Ahmed The Software Design Process CSCE 315 Programming Studio, Fall 2017 Tanzir Ahmed Outline Challenges in Design Design Concepts Heuristics Practices Challenges in Design A problem that can only be defined

More information

Chapter 13: Architecture Patterns

Chapter 13: Architecture Patterns Chapter 13: Architecture Patterns SAiP Chapter 13 J. Scott Hawker/R. Kuehl p. 1 Len Bass, Paul Clements, Rick Kazman, Topics What is a Pattern? Pattern Catalog Module patterns Component and Connector Patterns

More information

CSE 70 Final Exam Fall 2009

CSE 70 Final Exam Fall 2009 Signature cs70f Name Student ID CSE 70 Final Exam Fall 2009 Page 1 (10 points) Page 2 (16 points) Page 3 (22 points) Page 4 (13 points) Page 5 (15 points) Page 6 (20 points) Page 7 (9 points) Page 8 (15

More information

Appendix A - Glossary(of OO software term s)

Appendix A - Glossary(of OO software term s) Appendix A - Glossary(of OO software term s) Abstract Class A class that does not supply an implementation for its entire interface, and so consequently, cannot be instantiated. ActiveX Microsoft s component

More information

CSC7203 : Advanced Object Oriented Development. J Paul Gibson, D311. Design Patterns

CSC7203 : Advanced Object Oriented Development. J Paul Gibson, D311. Design Patterns CSC7203 : Advanced Object Oriented Development J Paul Gibson, D311 paul.gibson@telecom-sudparis.eu http://www-public.tem-tsp.eu/~gibson/teaching/csc7203/ Design Patterns /~gibson/teaching/csc7203/csc7203-advancedoo-l2.pdf

More information

COMP 6471 Software Design Methodologies

COMP 6471 Software Design Methodologies COMP 6471 Software Design Methodologies Fall 2011 Dr Greg Butler http://www.cs.concordia.ca/~gregb/home/comp6471-fall2011.html Week 7 Outline Software Architecture Layered Architecture Model-View-Control

More information

CS112 Lecture: Reuse, Packages, Patterns

CS112 Lecture: Reuse, Packages, Patterns CS112 Lecture: Reuse, Packages, Patterns Revised 4/20/05 Objectives: 1. To introduce the idea of re-use 2. To introduce some characteristics that make classes re-usable 3. To introduce Java packages. 4.

More information

Produced by. Design Patterns. MSc in Communications Software. Eamonn de Leastar

Produced by. Design Patterns. MSc in Communications Software. Eamonn de Leastar Design Patterns MSc in Communications Software Produced by Eamonn de Leastar (edeleastar@wit.ie) Department of Computing, Maths & Physics Waterford Institute of Technology http://www.wit.ie http://elearning.wit.ie

More information

Tackling Design Patterns Chapter 3: Template Method design pattern and Public Inheritance. 3.1 Introduction... 2

Tackling Design Patterns Chapter 3: Template Method design pattern and Public Inheritance. 3.1 Introduction... 2 Department of Computer Science Tackling Design Patterns Chapter 3: Template Method design pattern and Public Inheritance Copyright c 2016 by Linda Marshall and Vreda Pieterse. All rights reserved. Contents

More information

Plan. Design principles: laughing in the face of change. What kind of change? What are we trying to achieve?

Plan. Design principles: laughing in the face of change. What kind of change? What are we trying to achieve? Plan Design principles: laughing in the face of change Perdita Stevens School of Informatics University of Edinburgh What are we trying to achieve? Review: Design principles you know from Inf2C-SE Going

More information

Work groups meeting 3

Work groups meeting 3 Work groups meeting 3 INF5040 (Open Distributed Systems) Sabita Maharjan sabita@simula.no Department of Informatics University of Oslo September 07, 2009 Design Patterns J2EE Design Patterns Outline EIS

More information

Object-Oriented Design

Object-Oriented Design Object-Oriented Design Lecturer: Raman Ramsin Lecture 20: GoF Design Patterns Creational 1 Software Patterns Software Patterns support reuse of software architecture and design. Patterns capture the static

More information

Plan. Design principles: laughing in the face of change. What kind of change? What are we trying to achieve?

Plan. Design principles: laughing in the face of change. What kind of change? What are we trying to achieve? Plan Design principles: laughing in the face of change Perdita Stevens School of Informatics University of Edinburgh What are we trying to achieve? Review: Design principles you know from Inf2C-SE Going

More information

CHAPTER 9 DESIGN ENGINEERING. Overview

CHAPTER 9 DESIGN ENGINEERING. Overview CHAPTER 9 DESIGN ENGINEERING Overview A software design is a meaningful engineering representation of some software product that is to be built. Designers must strive to acquire a repertoire of alternative

More information

Chapter 10: Performance Patterns

Chapter 10: Performance Patterns Chapter 10: Performance Patterns Patterns A pattern is a common solution to a problem that occurs in many different contexts Patterns capture expert knowledge about best practices in software design in

More information

Foundations of Software Engineering Design Patterns -- Introduction

Foundations of Software Engineering Design Patterns -- Introduction Foundations of Software Engineering Design Patterns -- Introduction Fall 2016 Department of Computer Science Ben-Gurion university Based on slides of: Nurit Gal-oz, Department of Computer Science Ben-Gurion

More information

STUDY NOTES UNIT 1 - INTRODUCTION TO OBJECT ORIENTED PROGRAMMING

STUDY NOTES UNIT 1 - INTRODUCTION TO OBJECT ORIENTED PROGRAMMING OBJECT ORIENTED PROGRAMMING STUDY NOTES UNIT 1 - INTRODUCTION TO OBJECT ORIENTED PROGRAMMING 1. Object Oriented Programming Paradigms 2. Comparison of Programming Paradigms 3. Basic Object Oriented Programming

More information

AADL Graphical Editor Design

AADL Graphical Editor Design AADL Graphical Editor Design Peter Feiler Software Engineering Institute phf@sei.cmu.edu Introduction An AADL specification is a set of component type and implementation declarations. They are organized

More information

Principles of Software Construction: Objects, Design, and Concurrency. Assigning Responsibilities to Objects. toad. Jonathan Aldrich Charlie Garrod

Principles of Software Construction: Objects, Design, and Concurrency. Assigning Responsibilities to Objects. toad. Jonathan Aldrich Charlie Garrod Principles of Software Construction: Objects, Design, and Concurrency Assigning Responsibilities to Objects toad Fall 2014 Jonathan Aldrich Charlie Garrod School of Computer Science Key concepts from Thursday

More information

Design Pattern What is a Design Pattern? Design Pattern Elements. Almas Ansari Page 1

Design Pattern What is a Design Pattern? Design Pattern Elements. Almas Ansari Page 1 What is a Design Pattern? Each pattern Describes a problem which occurs over and over again in our environment,and then describes the core of the problem Novelists, playwrights and other writers rarely

More information

Keywords: Abstract Factory, Singleton, Factory Method, Prototype, Builder, Composite, Flyweight, Decorator.

Keywords: Abstract Factory, Singleton, Factory Method, Prototype, Builder, Composite, Flyweight, Decorator. Comparative Study In Utilization Of Creational And Structural Design Patterns In Solving Design Problems K.Wseem Abrar M.Tech., Student, Dept. of CSE, Amina Institute of Technology, Shamirpet, Hyderabad

More information

MSO Lecture 12. Wouter Swierstra (adapted by HP) October 26, 2017

MSO Lecture 12. Wouter Swierstra (adapted by HP) October 26, 2017 1 MSO Lecture 12 Wouter Swierstra (adapted by HP) October 26, 2017 2 LAST LECTURE Analysis matrix; Decorator pattern; Model-View-Controller; Observer pattern. 3 THIS LECTURE How to create objects 4 CATEGORIES

More information

Applying the Observer Design Pattern

Applying the Observer Design Pattern Applying the Observer Design Pattern Trenton Computer Festival Professional Seminars Michael P. Redlich (908) 730-3416 michael.p.redlich@exxonmobil.com About Myself Degree B.S. in Computer Science Rutgers

More information

Object Orientated Analysis and Design. Benjamin Kenwright

Object Orientated Analysis and Design. Benjamin Kenwright Notation Part 2 Object Orientated Analysis and Design Benjamin Kenwright Outline Review What do we mean by Notation and UML? Types of UML View Continue UML Diagram Types Conclusion and Discussion Summary

More information

The following topics will be covered in this course (not necessarily in this order).

The following topics will be covered in this course (not necessarily in this order). The following topics will be covered in this course (not necessarily in this order). Introduction The course focuses on systematic design of larger object-oriented programs. We will introduce the appropriate

More information

EINDHOVEN UNIVERSITY OF TECHNOLOGY

EINDHOVEN UNIVERSITY OF TECHNOLOGY EINDHOVEN UNIVERSITY OF TECHNOLOGY Department of Mathematics & Computer Science Exam Programming Methods, 2IP15, Wednesday 17 April 2013, 09:00 12:00 TU/e THIS IS THE EXAMINER S COPY WITH (POSSIBLY INCOMPLETE)

More information