Simulation Engines TDA571 DIT030 Architecture and design. Tommaso Piazza
|
|
- Georgiana Brown
- 5 years ago
- Views:
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 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 informationDesign 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 informationCocoa 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 informationDesign 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 informationIdioms 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 informationLecture 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 informationAn 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 informationPattern 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 information1 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 informationGoals 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 informationApplication 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 informationPatterns 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 informationINTERNAL 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 informationAn 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 informationMore 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 informationPatterns 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 informationCSCD01 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 informationSoftware 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 informationDesign 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 informationSoftware 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 informationIntroduction 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 informationCoordination 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 informationIntroduction 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 informationTopics 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 informationObject 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 informationApplying 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 informationIngegneria 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 informationDESIGN 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 informationCHAPTER 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 informationModellistica 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 informationFacade 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 informationCHAPTER 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 informationObject-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 informationChapter 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 informationUsing 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 informationCrash 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 informationIn 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 informationPresenter: 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 informationJames 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 informationCPSC 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 informationIn 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 informationC++ 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 informationGame 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 informationInformation 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 informationTuesday, 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 information4.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 informationIntroduction 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 informationWhat 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 informationOBJECT 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 informationDesign 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 informationCSCD01 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 informationThe 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 informationbe 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 information1. 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 informationSoftware 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 informationDesign 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 informationThe 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 informationLectures 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 informationTrusted 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 informationDesign 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 informationAPPLYING 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 informationPatterns 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 informationUnderstading 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 informationArchitectural 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 informationJDBC 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 informationPatterns. 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 informationDesign 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 informationOutline. 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 informationhttps://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 informationSOFTWARE 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 informationDesign 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 information3 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 informationDesign 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 informationADVANCED 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 informationThe 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 informationChapter 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 informationCSE 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 informationAppendix 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 informationCSC7203 : 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 informationCOMP 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 informationCS112 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 informationProduced 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 informationTackling 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 informationPlan. 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 informationWork 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 informationObject-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 informationPlan. 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 informationCHAPTER 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 informationChapter 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 informationFoundations 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 informationSTUDY 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 informationAADL 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 informationPrinciples 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 informationDesign 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 informationKeywords: 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 informationMSO 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 informationApplying 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 informationObject 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 informationThe 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 informationEINDHOVEN 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