Architecture and design
|
|
- Cecil Nigel Daniel
- 5 years ago
- Views:
Transcription
1 Architecture and design Simulation Engines 2008 Chalmers University of Technology Markus Larsson Simulation Engines 2008, Markus Larsson 1
2 Who am I? Markus Larsson Simulation Engines 2008, Markus Larsson 2
3 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? Simulation Engines 2008, Markus Larsson 3
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 Simulation Engines 2008, Markus Larsson 4
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 Simulation Engines 2008, Markus Larsson 5
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 Simulation Engines 2008, Markus Larsson 6
7 Example: 3dwm Simulation Engines 2008, Markus Larsson 7
8 Example: Crystal Space Simulation Engines 2008, Markus Larsson 8
9 Example: Ogre3D Simulation Engines 2008, Markus Larsson 9
10 Architecture and design Creating the architecture is part of the design process Architecture is the high level design on the structure 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 Simulation Engines 2008, Markus Larsson 10
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 Simulation Engines 2008, Markus Larsson 11
12 How to create an architecture A few guidelines 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? Simulation Engines 2008, Markus Larsson 12
13 How to create an architecture Responsibility Does every component have a clear responsibility that does not encroach on 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? Simulation Engines 2008, Markus Larsson 13
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 Simulation Engines 2008, Markus Larsson 14
15 Design patterns Adopted for software engineering 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 Catalog of 23 separate patterns Name Problem description Detailed solution Nowadays, hundreds of patterns Simulation Engines 2008, Markus Larsson 15
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 trade offs of using the pattern Simulation Engines 2008, Markus Larsson 16
17 List of Design Patterns The initial 23 design patterns Simulation Engines 2008, Markus Larsson 17
18 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 case pollution to the global namespace. Implementation In C++ (like in Java), we implement the Singleton design pattern using static member functions and variables Simulation Engines 2008, Markus Larsson 18
19 Pattern: Singleton class PrinterSpooler { private: static PrinterSpooler *_instance; PrinterSpooler(); // private constructor... public: static PrinterSpooler *instance() { if (_instance == NULL) _instance = new PrinterSpooler(); return _instance; } }; Simulation Engines 2008, Markus Larsson 19
20 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 Simulation Engines 2008, Markus Larsson 20
21 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 Simulation Engines 2008, Markus Larsson 21
22 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) Simulation Engines 2008, Markus Larsson 22
23 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 Simulation Engines 2008, Markus Larsson 23
24 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 Simulation Engines 2008, Markus Larsson 24
25 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 Liabilities Changing behavior Lower efficiency Unnecessary work Difficulty of establishing correct granularity Simulation Engines 2008, Markus Larsson 25
26 OSI Simulation Engines 2008, Markus Larsson 26
27 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) Liabilities Increased complexity Tied to view & controller View & controller depend on model interface Simulation Engines 2008, Markus Larsson 27
28 Pattern: Model view controller Simulation Engines 2008, Markus Larsson 28
29 Before the break... A few words about my personal favorite architecture for simulation engines Event driven design A few sketches on the blackboard Simulation Engines 2008, Markus Larsson 29
30 Break 15 minutes Simulation Engines 2008, Markus Larsson 30
31 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 Simulation Engines 2008, Markus Larsson 31
32 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 Simulation Engines 2008, Markus Larsson 32
33 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 Simulation Engines 2008, Markus Larsson 33
34 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 Simulation Engines 2008, Markus Larsson 34
35 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 sub class Often implemented as an independent relational database indexed by type number or type name Simulation Engines 2008, Markus Larsson 35
36 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 Simulation Engines 2008, Markus Larsson 36
37 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 Simulation Engines 2008, Markus Larsson 37
38 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 cersa Controllers are often implemented as processes in a mini cooperative multi tasking kernel, but are sometimes hard wired Simulation Engines 2008, Markus Larsson 38
39 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 Simulation Engines 2008, Markus Larsson 39
40 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 Simulation Engines 2008, Markus Larsson 40
41 Game patterns: Overview Simulation Engines 2008, Markus Larsson 41
42 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 Simulation Engines 2008, Markus Larsson 42
43 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 Simulation Engines 2008, Markus Larsson 43
44 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 Simulation Engines 2008, Markus Larsson 44
45 Interfaces Main concept of SFC, 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; }; Simulation Engines 2008, Markus Larsson 45
46 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 chas 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... }; Simulation Engines 2008, Markus Larsson 46
47 Plugins mydog.h and mydog.cpp are placed in a plugin, usually as a dynamically linked library A factory method is added to the plygin 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 Simulation Engines 2008, Markus Larsson 47
48 Plugin metainformation The SCF system discovers plugins automatically and dynamically Some additional metainformation 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> Simulation Engines 2008, Markus Larsson 48
49 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(); } Simulation Engines 2008, Markus Larsson 49
50 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 Simulation Engines 2008, Markus Larsson 50
51 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 Simulation Engines 2008, Markus Larsson 51
52 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 Simulation Engines 2008, Markus Larsson 52
53 Summary Software architecture is part of the design process and establishes the main structure of a system without binding lowlevel 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 Simulation Engines 2008, Markus Larsson 53
54 Next lecture Wednesday, 12 November Scenegraphs Sound and multimedia Simulation Engines 2008, Markus Larsson 54
Simulation Engines TDA571 DIT030 Architecture and design. Tommaso Piazza
Simulation Engines TDA571 DIT030 Architecture and design Tommaso Piazza Software architecture Today we will examine the subject of software architecture Examples Patterns How do we split our game engine
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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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. 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 informationResponsibilities. Using several specific design principles to guide OO design decisions.
Designing Objects with Responsibilities Using several specific design principles to guide OO design decisions. Challenge Old-school advice on OOD After identifying i your requirements and creating a domain
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 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 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 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 informationCS 307: Software Engineering. Lecture 10: Software Design and Architecture
CS 307: Software Engineering Lecture 10: Software Design and Architecture Prof. Jeff Turkstra 2017 Dr. Jeffrey A. Turkstra 1 Announcements Discuss your product backlog in person or via email by Today Office
More information17. GRASP: Designing Objects with Responsibilities
17. GRASP: Designing Objects with Responsibilities Objectives Learn to apply five of the GRASP principles or patterns for OOD. Dr. Ziad Kobti School of Computer Science University of Windsor Understanding
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 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 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 informationWhat is a Pattern? Lecture 40: Design Patterns. Elements of Design Patterns. What are design patterns?
What is a Pattern? Lecture 40: Design Patterns CS 62 Fall 2017 Kim Bruce & Alexandra Papoutsaki "Each pattern describes a problem which occurs over and over again in our environment, and then describes
More informationLethbridge/Laganière 2005 Chapter 9: Architecting and designing software 6
Trying to deal with something big all at once is normally much harder than dealing with a series of smaller things Separate people can work on each part. An individual software engineer can specialize.
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 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 informationSOFTWARE ENGINEERING SOFTWARE DESIGN. Saulius Ragaišis.
SOFTWARE ENGINEERING SOFTWARE DESIGN Saulius Ragaišis saulius.ragaisis@mif.vu.lt CSC2008 SE Software Design Learning Objectives: Discuss the properties of good software design including the nature and
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 informationCS/CE 2336 Computer Science II
CS/CE 2336 Computer Science II UT D Session 20 Design Patterns An Overview 2 History Architect Christopher Alexander coined the term "pattern" circa 1977-1979 Kent Beck and Ward Cunningham, OOPSLA'87 used
More informationDesign Patterns. Dr. Rania Khairy. Software Engineering and Development Tool
Design Patterns What are Design Patterns? What are Design Patterns? Why Patterns? Canonical Cataloging Other Design Patterns Books: Freeman, Eric and Elisabeth Freeman with Kathy Sierra and Bert Bates.
More information