Transparent Remote Access

Size: px
Start display at page:

Download "Transparent Remote Access"

Transcription

1 Abstract Transparent Remote Access Klaus Marquardt Käthe-Kollwitz-Weg 14, D Lübeck, Germany In distributed systems, the different processors communicate via network messages. Object oriented systems do not focus on these messages, but on the responsibilities each object fulfils. Between the top-level objects it should be invisible on which system an addressed object resides. The Transparent Remote Access pattern gives a recipe how the implementation of a method can defer the invocation to another processor. To support Transparent Remote Access even on small machines, a stepwise approach is introduced that allows for simplification when only a part of the functionality is needed. Pattern : Transparent Remote Access Context Problem Forces Solution An application is distributed among multiple processes or processors. It is developed using object-oriented techniques and a responsibility based approach. You are prepared to use a Protocol-Follows-Application Design [Marquardt] process. How can you hide your distribution mechanisms and message handling from both the caller and the called implementation? Domain class users must not know or see the transport facilities or depend on them. Different classes must have clearly separated responsibilities. The application evolves and may need more remotely addressed objects in the future. Development is most efficient when the desired solution is easy to understand and apply. Development of additional classes causes effort and time. Addressing functionality remotely comes with performance degradation. Implement technical objects around each object that you need to access remotely. Use Proxies [GOF] to convert a method call into a transport message; use Forwarder-Receiver [POSA] to send this message to the processor that hosts the implementation; use a Reactor [POSA2] to address the appropriate implementation. An infrastructure for message transportation, multiplexing, and interpretation is required. On this infrastructure, application specific classes are build. Each domain class is split in several classes with different responsibilities. The interface is separated from the implementation; the

2 implementation resides in one specific processor or process. For addressing this implementation remotely, this process offers a specific Receiver class that converts incoming messages into method calls of the actual implementation. Other processes access the implementation through a Proxy that packs the method call and its arguments into a message. The Proxy and the Receiver are developed together to achieve a common identification and interpretation of the message contents. For a basic functionality these classes are sufficient. Your implementation may take further steps to allow for factoring of Proxies, and for return values on remote method calls. Consequences Implementation Preparation: Infrastructure The location of execution of services is transparent to the clients. Transport facilities are hidden from domain class users. The dependency structure is well understood and defined. Each object has unique, crisp responsibilities. Further active objects can be added at any time. A recipe for implementation or even generation can be given. A lot of technical infrastructure is required, causing considerable development effort. Performance tuning and network traffic limitation is difficult as a lot of objects may issue messages. The implementation requires an infrastructure for addressing a remote system at all, and a number of steps that must be implemented for each remotely addressable object. For a basic functionality, the first two steps must be taken. For a reasonable dependency graph also take the third step, which allows you to leave all code unchanged except for the initialization code. When you need to retrieve return values somehow, you have to take also the forth step. The last step offers a direct reception of the method call results. The infrastructure consists of a Forwarder-Receiver [POSA] mechanism or channel interface that can transport messages between different nodes. When different transport mechanisms are used within the system, an Abstract Session [Pryce] can help to encapsulate them. Furthermore, base classes are needed for Proxy [GOF] and Receiver that send respectively receive messages. The messages are transported via the above channel interface, and each message has an application defined identification. Channel send(msg : Message&) receive(msg : Message&) Message Receiver <<A>> handle(ms g : Message&) : bool <<A>> getid() : int Proxy <<A>> getid() : int ReceiverRegistry register(rec : Receiver&) : void unregister(rec : Receiver&) : void dispatch(msg : Message&) : bool

3 Step 1: Interface Separation Optionally, you may add a ReceiverRegistry class that dispatches messages on one channel to different receivers. This registry can be omitted when each channel connects to a single receiver only. When the channel interface offers an Observer [GOF] interface, the registry becomes an observer for incoming messages. Define the object that you need to make available independent of the processor or process. Separate the interface by making it an abstract class (a protocol class without member attributes), and let the implementation derive from it. From now on, all clients access only the interface class. All passed arguments must be of a fundamental or serializable type, so that they can be packed into a network message. Take care that no function returns any value or takes arguments by reference. This is to ensure that the caller does not receive any immediate feedback on a method call. In case you need a direct answer, refer to the optional steps below. <<Role>> Client <<Interface>> ActiveObject <<A>> callone() : void <<A>> calltwo(arg : Serializable) : void ActiveObjectImplementation callone() : void calltwo(arg : Serializable) : void Step 2: Proxy-Receiver Definition Result: two classes specific to the remotely addressable object: an interface and a derived implementation. For the client side, derive a Proxy class that implements each call by creating a network message and forwarding it (via Forwarder-Receiver) to the server side. For the server side, create a specific receiver class that unpacks the message back into function arguments, and calls the implementation class. Here you should access only the interface object, so you can opt to cascade several proxy calls when necessary. Both classes depend merely on already existing classes and exhibit no additional public behavior, so they can be hidden from outside clients. To make this step work, you need to define several ID s. The first one identifies the addressed remote object, and the Proxy and its equivalent Receiver have to agree on it. This ID needs to be unique for each remotely accessible object. The subsequent ID s are internal to the object and identify the called function. On the server side, you need to register all Receivers by their respective IDs to forward the network message from the network listener to the correct Receiver. Your specific Proxy and Receiver share the same ID s. Together with the order in which each function call arguments are appended to the message, these ID s define your specific application level protocol part. You should maintain this pair together to avoid any protocol errors.

4 <<Interface>> ActiveObject ActiveObjec timplementation call via interface ActiveObjectProxy getid() : int callone() : void calltwo(arg : Serializable) : void ActiveObjectReceiver getid() : int handle(msg : Message&) : bool unpac kcallone(msg : Message&) : void unpac kcalltwo(msg : Message&) : void Proxy (from Transport) ReceiverRegistry (from Transport) Rec eiver (from Transport) Result: One specific Proxy class derived from the interface, one specific Receiver class that addresses the interface. One or two header files defining the ID s. Optional Step 3: Proxy-Receiver Creation Optional Step 4: Results in Distinct Object Optional Step 5: Direct Result Create a Factory [GOF] for the client side that creates the Proxy and returns an Interface. On the server side, make sure that an instance of both the Receiver and the Implementation is created, that the receiver is registered and has access to an Implementation object (e.g. via a Factory [GOF] or Trader [Bäumer+]). These creational classes depend only on the previously available classes. Your need to ensure that your application creates all objects that is potentially addressed remotely through this Factory. Result: You can now call functions at an object that may be anywhere in the system, and you only need to know about the base class. The only precondition is that during initialization you have to access a transport channel and call a Factory. To receive return values from such a server object, define a second remotely addressable object. Now the client server roles are exchanged. The initial server object answers to a distinct object that is represented here as a Proxy to a Server Answer object whose implementation resides on the clients' side. Result: You have a triangle of classes. The client processor gets an answer, but to a different object than you originally addressed. A natural signature of objects is a direct return of a function result. To achieve this behaviour you can combine both interfaces of the previous step to a single one. The combined interface resides on the clients side, maintains instances of the Question Proxy and the Answer Implementation, and keeps track of copying data and references and the timing constraints. You need to decide for an either synchronous or asynchronous call policy. Synchronous calls may cause your application to block for a long time, whereas for an asynchronous call you to define a thread or task context that waits for the answer and informs your application.

5 Example Result: You achieved a natural way of accessing remote objects transparently, at the cost of adding about a dozen technical objects. An application collects all significant events from different processes in a common LogBook. To ensure consistency and avoid locking conflicts, only one process writes new LogEntries to the LogBook while the other processes access it remotely. For all application code the actual location of the LogBook is transparent. class LogEntry : public Serializable { LogEntry( int severity, int sourceid, const string& text); int severity() const; int sourceid() const; string text() const; // inherited: virtual void pack( Message& msg) const; virtual void unpack( Message& msg); // [...] // Separated interface class class LogBook { virtual void addentry( const LogEntry& theentry) = 0; // Implementation, resides in a dedicated process - omitted // Proxy class, forwarding the request to the appropriate process class LogBookProxy : public Proxy { LogBookProxy( Channel& achannel ) : Proxy( achannel) { void addentry( const LogEntry& anentry) { m_message.reset(); m_message.setid( LOG_BOOK, ADD_ENTRY); m_message << anentry; send( m_message); } // [...] // Receiver, evaluates the message // and addresses the appropriate implementation class LogBookReceiver : public Receiver { LogBookReceiver( LogBook& theimpl) : Receiver( LOG_BOOK), m_impl( theimpl) { void handle( Message& msg) { /*...*/ // dispatches to a specific function private: LogBook& m_impl; // reference to the implementation void addentry( Message& msg) { LogEntry myentry; msg >> myentry; m_impl.addentry( myentry); // [...]

6 Known Uses Related Patterns CORBA implementations generate similar code from an IDL definition. [Martin] gives a textbook example of several important aspects. Transparent Remote Access employs these patterns: Proxy, Forwarder- Receiver. and Reactor. The protocol between the processes is defined in the specific Proxy-Receiver implementation and thus not centrally defined, which corresponds to Protocol-Follows-Application Design. Conclusion The Transparent Remote Access pattern provides a recipe to create distributed applications in heterogeneous or restricted environments. Developers can create their own powerful mechanism for remote object access. This is most useful in environments like embedded systems, where ready-to-use products for object distribution such as like CORBA or DCOM are not available. The related development effort and the gained convenience is scaleable through several optional steps. Acknowledgements Many thanks are due to Manfred Lange, the EuroPLoP 2000 shepherd of this paper, for his detailed and timely comments. References Bäumer+ GOF Martin Marquardt POSA POSA2 Pryce Dirk Bäumer, Dirk Riehle: Product Trader. In: Pattern Language of Program Design, Volume 3, Addison-Wesley 1998 Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Design Patterns, Addison-Wesley 1995 Robert Martin: Designing Object Oriented Applications Using the Booch Method, Prentice Hall 1996 Klaus Marquardt: How to Define a Protocol for Object Transportation. In: Proceedings of the 5 th European Conference on Pattern Languages of Programs, 2000 Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal: Pattern-Oriented Software Architecture. A System of Patterns, Wiley 1996 Douglas Schmidt, Michael Stal, Hans Rohnert, Frank Buschmann: Pattern- Oriented Software Architecture Volume 2. Patterns for Concurrent and Networked Objects, Wiley 2000 Nat Pryce: Abstract Session. In: Pattern Language of Program Design, Volume 4, Addison-Wesley 2000

Object-Oriented Software Development Goal and Scope

Object-Oriented Software Development Goal and Scope Object-Oriented Software Development Goal and Scope Koichiro Ochimizu Japan Advanced Institute of Science and Technologies School of Information Science Scope and Goal Goal enable you to understand basic

More information

Universal Communication Component on Symbian Series60 Platform

Universal Communication Component on Symbian Series60 Platform Universal Communication Component on Symbian Series60 Platform Róbert Kereskényi, Bertalan Forstner, Hassan Charaf Department of Automation and Applied Informatics Budapest University of Technology and

More information

Distributed Proxy: A Design Pattern for Distributed Object Communication

Distributed Proxy: A Design Pattern for Distributed Object Communication Distributed Proxy: A Design Pattern for Distributed Object Communication António Rito Silva, Francisco Assis Rosa, Teresa Gonçalves INESC/IST Technical University of Lisbon, Rua Alves Redol n o 9, 1000

More information

Broker Pattern. Teemu Koponen

Broker Pattern. Teemu Koponen Broker Pattern Teemu Koponen tkoponen@iki.fi Broker Pattern Context and problem Solution Implementation Conclusions Comments & discussion Example Application Stock Exchange Trader 1 Stock Exchange 1 Trader

More information

Patterns for Decoupling

Patterns for Decoupling Patterns for Decoupling Ingolf H. Krueger Department of Computer Science & Engineering University of California, San Diego La Jolla, CA 92093-0114, USA California Institute for Telecommunications and Information

More information

Coordination Patterns

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

More information

Partial Acquisition Prashant Jain and Michael Kircher

Partial Acquisition Prashant Jain and Michael Kircher 1 Partial Acquisition Prashant Jain and Michael Kircher {Prashant.Jain,Michael.Kircher}@mchp.siemens.de Siemens AG, Corporate Technology Munich, Germany Partial Acquisition 2 Partial Acquisition The Partial

More information

A Metric of the Relative Abstraction Level of Software Patterns

A Metric of the Relative Abstraction Level of Software Patterns A Metric of the Relative Abstraction Level of Software Patterns Atsuto Kubo 1, Hironori Washizaki 2, and Yoshiaki Fukazawa 1 1 Department of Computer Science, Waseda University, 3-4-1 Okubo, Shinjuku-ku,

More information

Patterns for Asynchronous Invocations in Distributed Object Frameworks

Patterns for Asynchronous Invocations in Distributed Object Frameworks Patterns for Asynchronous Invocations in Distributed Object Frameworks Patterns for Asynchronous Invocations in Distributed Object Frameworks Markus Voelter Michael Kircher Siemens AG, Corporate Technology,

More information

A Metric for Measuring the Abstraction Level of Design Patterns

A Metric for Measuring the Abstraction Level of Design Patterns A Metric for Measuring the Abstraction Level of Design Patterns Atsuto Kubo 1, Hironori Washizaki 2, and Yoshiaki Fukazawa 1 1 Department of Computer Science, Waseda University, 3-4-1 Okubo, Shinjuku-ku,

More information

Programação de Sistemas Distribuidos

Programação de Sistemas Distribuidos Programação de Sistemas Distribuidos Paulo Gandra de Sousa psousa@dei.isep.ipp.pt Mestrado em Engenharia Informática DEI/ISEP Disclaimer Parts of this presentation are from: Paulo Sousa (PARS) Ron Jacobs

More information

Broker Revisited. Markus Voelter Copyright 2004, Kircher, Voelter, Jank, Schwanninger, Stal D5-1

Broker Revisited. Markus Voelter Copyright 2004, Kircher, Voelter, Jank, Schwanninger, Stal D5-1 Broker Revisited Michael Kircher, Klaus Jank, Christa Schwanninger, Michael Stal {Michael.Kircher,Klaus.Jank,Christa.Schwanninger, Michael.Stal}@siemens.com Markus Voelter voelter@acm.org Copyright 2004,

More information

Active Object. an Object Behavioral Pattern for Concurrent Programming. R. Greg Lavender Douglas C. Schmidt

Active Object. an Object Behavioral Pattern for Concurrent Programming. R. Greg Lavender Douglas C. Schmidt Active Object an Object Behavioral Pattern for Concurrent Programming R. Greg Lavender Douglas C. Schmidt G.Lavender@isode.com schmidt@cs.wustl.edu ISODE Consortium Inc. Department of Computer Science

More information

Exception Handling Alternatives (Part 2)

Exception Handling Alternatives (Part 2) Exception Handling Alternatives (Part 2) First published in Overload 31 Copyright 1999 Detlef Vollmann Resume In part 1, several alternative mechanisms for handling exceptional events were presented. One

More information

James Newkirk

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

More information

WS01/02 - Design Pattern and Software Architecture

WS01/02 - Design Pattern and Software Architecture Design Pattern and Software Architecture: VIII. Conclusion AG Softwaretechnik Raum E 3.165 Tele. 60-3321 hg@upb.de VIII. Conclusion VIII.1 Classifications VIII.2 Common Misconceptions VIII.3 Open Questions

More information

RPC CLIENT: A PATTERN FOR THE CLIENT-SIDE IMPLEMENTATION OF

RPC CLIENT: A PATTERN FOR THE CLIENT-SIDE IMPLEMENTATION OF RPC CLIENT: A PATTERN FOR THE CLIENT-SIDE IMPLEMENTATION OF A PIPELINED REQUEST/RESPONSE PROTOCOL Mark Heuser and Eduardo B. Fernandez Dept. of Computer Science and Eng. Florida Atlantic University Boca

More information

Lookup. Michael Kircher & Prashant Jain Siemens AG, Corporate Technology Munich, Germany

Lookup. Michael Kircher & Prashant Jain Siemens AG, Corporate Technology Munich, Germany Lookup Michael Kircher & Prashant Jain {Michael.Kircher,Prashant.Jain}@mchp.siemens.de Siemens AG, Corporate Technology Munich, Germany Copyright 2000 by Prashant Jain and Michael Kircher The lookup pattern

More information

Pattern Density and Role Modeling of an Object Transport Service

Pattern Density and Role Modeling of an Object Transport Service Pattern Density and Role Modeling of an Object Transport Service Dirk Riehle. SKYVA International. 25 First Street, Cambridge, MA 02129, U.S.A. E-mail: driehle@skyva.com or riehle@acm.org Roger Brudermann.

More information

SyncFree SyncFree: The Development of an Open Source Personal Data Synchronization Software

SyncFree SyncFree: The Development of an Open Source Personal Data Synchronization Software SyncFree SyncFree: The Development of an Open Source Personal Data Synchronization Software {s1669021, s1598011, yccheng, hsieh}@ntut.edu.tw SyncFree Abstract People who use different computers at different

More information

Architectural Patterns

Architectural Patterns Architectural Patterns Dr. James A. Bednar jbednar@inf.ed.ac.uk http://homepages.inf.ed.ac.uk/jbednar Dr. David Robertson dr@inf.ed.ac.uk http://www.inf.ed.ac.uk/ssp/members/dave.htm SEOC2 Spring 2005:

More information

Design Patterns. Architectural Patterns. Contents of a Design Pattern. Dr. James A. Bednar. Dr. David Robertson

Design Patterns. Architectural Patterns. Contents of a Design Pattern. Dr. James A. Bednar. Dr. David Robertson Design Patterns Architectural Patterns Dr. James A. Bednar jbednar@inf.ed.ac.uk http://homepages.inf.ed.ac.uk/jbednar Dr. David Robertson dr@inf.ed.ac.uk http://www.inf.ed.ac.uk/ssp/members/dave.htm A

More information

Design for Testability

Design for Testability Abstract Design for Testability Stefan Jungmayr Testability is a software quality characteristic that is of major relevance for test costs and software dependability. Still, testability is not an explicit

More information

Towards Better Support for Pattern-Oriented Software Development

Towards Better Support for Pattern-Oriented Software Development Towards Better Support for Pattern-Oriented Software Development Dietrich Travkin Software Engineering Research Group, Heinz Nixdorf Institute & Department of Computer Science, University of Paderborn,

More information

Data Synchronization Patterns in Mobile Application Design

Data Synchronization Patterns in Mobile Application Design Data Synchronization Patterns in Mobile Application Design Zach McCormick and Douglas C. Schmidt, Vanderbilt University {zach.mccormick,d.schmidt}@vanderbilt.edu 1. Introduction As Internet-enabled devices

More information

Distributed Objects and Remote Invocation. Programming Models for Distributed Applications

Distributed Objects and Remote Invocation. Programming Models for Distributed Applications Distributed Objects and Remote Invocation Programming Models for Distributed Applications Extending Conventional Techniques The remote procedure call model is an extension of the conventional procedure

More information

Design Patterns. Gunnar Gotshalks A4-1

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

More information

26.1 Introduction Programming Preliminaries... 2

26.1 Introduction Programming Preliminaries... 2 Department of Computer Science Tackling Design Patterns Chapter 27: Proxy Design Pattern Copyright c 2016 by Linda Marshall and Vreda Pieterse. All rights reserved. Contents 26.1 Introduction.................................

More information

Towards a Java Framework for Knowledge Representation and Inference

Towards a Java Framework for Knowledge Representation and Inference Towards a Java Framework for Knowledge Representation and Inference Adrian GIURCA University of Craiova, Faculty of Mathematics and Computer Science Email: giurca@inf.ucv.ro Abstract. The Knowledge Representation

More information

Evictor. Prashant Jain Siemens AG, Corporate Technology Munich, Germany

Evictor. Prashant Jain Siemens AG, Corporate Technology Munich, Germany 1 Evictor Prashant Jain Prashant.Jain@mchp.siemens.de Siemens AG, Corporate Technology Munich, Germany Evictor 2 Evictor The Evictor 1 pattern describes how and when to release resources such as memory

More information

Pooling. Michael Kircher, Prashant Jain Corporate Technology, Siemens AG, Munich, Germany

Pooling. Michael Kircher, Prashant Jain Corporate Technology, Siemens AG, Munich, Germany 1 Pooling Michael Kircher, Prashant Jain {Michael.Kircher,Prashant.Jain@mchp.siemens.de Corporate Technology, Siemens AG, Munich, Germany Pooling 2 Pooling The Pooling pattern describes how expensive acquisition

More information

Distributed Proxy: A Design Pattern for the Incremental Development of Distributed Applications

Distributed Proxy: A Design Pattern for the Incremental Development of Distributed Applications Distributed : A Design Pattern for the Incremental Development of Distributed Applications António Rito Silva 1, Francisco Assis Rosa 2, Teresa Gonçalves 2 and Miguel Antunes 1 1 INESC/IST Technical University

More information

Configuration Provider: A Pattern for Configuring Threaded Applications

Configuration Provider: A Pattern for Configuring Threaded Applications Configuration Provider: A Pattern for Configuring Threaded Applications Klaus Meffert 1 and Ilka Philippow 2 Technical University Ilmenau plop@klaus-meffert.de 1, ilka.philippow@tu-ilmena.de 2 Abstract

More information

Monitoring System for Distributed Java Applications

Monitoring System for Distributed Java Applications Monitoring System for Distributed Java Applications W lodzimierz Funika 1, Marian Bubak 1,2, and Marcin Smȩtek 1 1 Institute of Computer Science, AGH, al. Mickiewicza 30, 30-059 Kraków, Poland 2 Academic

More information

Lecture 19: Introduction to Design Patterns

Lecture 19: Introduction to Design Patterns Lecture 19: Introduction to Design Patterns Software System Design and Implementation ITCS/ITIS 6112/8112 091 Fall 2008 Dr. Jamie Payton Department of Computer Science University of North Carolina at Charlotte

More information

Patterns for polymorphic operations

Patterns for polymorphic operations Patterns for polymorphic operations Three small object structural patterns for dealing with polymorphism Alexander A. Horoshilov hor@epsylontech.com Abstract Polymorphism is one of the main elements of

More information

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

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

More information

Slide 1. Design Patterns. Prof. Mirco Tribastone, Ph.D

Slide 1. Design Patterns. Prof. Mirco Tribastone, Ph.D Slide 1 Design Patterns Prof. Mirco Tribastone, Ph.D. 22.11.2011 Introduction Slide 2 Basic Idea The same (well-established) schema can be reused as a solution to similar problems. Muster Abstraktion Anwendung

More information

CHAPTER 6: CREATIONAL DESIGN PATTERNS

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

More information

Patterns in Software Engineering

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

More information

Middleware Reliability Implementations and Connector Wrappers

Middleware Reliability Implementations and Connector Wrappers Middleware Reliability Implementations and Connector Wrappers J.H. Sowell and R.E.K. Stirewalt Department of Computer Science and Engineering Michigan State University East Lansing, Michigan 48824 USA

More information

CS/CE 2336 Computer Science II

CS/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 information

Coordinator. Example. Prashant Jain Corporate Technology, Siemens AG Munich, Germany

Coordinator. Example. Prashant Jain Corporate Technology, Siemens AG Munich, Germany Coordinator Prashant Jain pjain@gmx.net Corporate Technology, Siemens AG Munich, Germany The Coordinator design pattern describes how to maintain system consistency by coordinating completion of tasks

More information

Concurrent Object-Oriented Development with Behavioral Design Patterns

Concurrent Object-Oriented Development with Behavioral Design Patterns Concurrent Object-Oriented Development with Behavioral Design Patterns Benjamin Morandi 1, Scott West 1, Sebastian Nanz 1, and Hassan Gomaa 2 1 ETH Zurich, Switzerland 2 George Mason University, USA firstname.lastname@inf.ethz.ch

More information

A Metamodeling Approach to Model Refactoring

A Metamodeling Approach to Model Refactoring A Metamodeling Approach to Model Refactoring Sheena R. Judson, Doris L. Carver, and Robert France 2 Department of Computer Science, Louisiana State University Baton Rouge, Louisiana USA sheena.r.judson@lmco.com,

More information

Pattern Language for Architecture of Protocol Systems

Pattern Language for Architecture of Protocol Systems Pattern Language for Architecture of Protocol Systems Juha Pärssinen, Markku Turunen Introduction This paper presents the pattern language for architecture of communication protocols. This is a pattern

More information

Design Patterns For Object Oriented Software Development Acm Press

Design Patterns For Object Oriented Software Development Acm Press Design Patterns For Object Oriented Software Development Acm Press We have made it easy for you to find a PDF Ebooks without any digging. And by having access to our ebooks online or by storing it on your

More information

Proceedings of. The Three-Tier Architecture Pattern Language Design Fest

Proceedings of. The Three-Tier Architecture Pattern Language Design Fest Proceedings of The Three-Tier Architecture Pattern Language Design Fest Introduction Three-tier applications have gained increasing acceptance and popularity in the software industry. Three-tier applications

More information

Object-Oriented Design

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

More information

Communication. Distributed Systems Santa Clara University 2016

Communication. Distributed Systems Santa Clara University 2016 Communication Distributed Systems Santa Clara University 2016 Protocol Stack Each layer has its own protocol Can make changes at one layer without changing layers above or below Use well defined interfaces

More information

Pattern Usage in an Avionics Mission Processing Product Line

Pattern Usage in an Avionics Mission Processing Product Line Pattern Usage in an Avionics Mission Processing Product Line David Sharp and Wendy Roll, The Boeing Company, St. Louis, MO 1 Introduction Within the Boeing Company s Phantom Works research and development

More information

Mining Relationships Between the Participants of Architectural Patterns

Mining Relationships Between the Participants of Architectural Patterns Mining Relationships Between the Participants of Architectural Patterns Ahmad Waqas Kamal and Paris Avgeriou Department of Mathematics and Computing Science, University of Groningen, The Netherlands a.w.kamal@rug.nl,

More information

C++ INTERFACE CLASSES STRENGTHENING ENCAPSULATION

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

More information

Introduction to Design Patterns

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

More information

Patterns. Erich Gamma Richard Helm Ralph Johnson John Vlissides

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

More information

Introduction to Design Patterns

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

More information

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

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

More information

Topics in Object-Oriented Design Patterns

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

More information

Remoting Patterns - A Systematic Approach for Design Reuse of Distributed Object Middleware Solutions

Remoting Patterns - A Systematic Approach for Design Reuse of Distributed Object Middleware Solutions Remoting - A Systematic Approach for Design Reuse of Distributed Object Middleware Solutions Markus Völter Michael Kircher Uwe Zdun voelter Siemems AG New Media Lab Ingenieurbüro für Softewaretechnologie

More information

Design Patterns. An introduction

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

More information

Cross-Platform Development of High Performance Applications Using Generic Programming

Cross-Platform Development of High Performance Applications Using Generic Programming Cross-Platform Development of High Performance Applications Using Generic Programming Wolfgang Blochinger and Wolfgang Küchlin University of Tübingen Wilhelm Schickard-Institute Symbolic Computation Group

More information

Lectures 24 and 25 Introduction to Architectural Styles and Design Patterns

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

More information

OO design using protocol hiearchies

OO design using protocol hiearchies OO design using protocol hiearchies Jorge Mederos Martín, Julio García Martín Universidad Politécnica de Madrid 1 Abstract This paper describes the use of protocol hierarchies as a way to sort out object

More information

CS560. Lecture: Design Patterns II Includes slides by E. Gamma et al., 1995

CS560. Lecture: Design Patterns II Includes slides by E. Gamma et al., 1995 CS560 Lecture: Design Patterns II Includes slides by E. Gamma et al., 1995 Classification of GoF Design Pattern Creational Structural Behavioural Factory Method Adapter Interpreter Abstract Factory Bridge

More information

Software Architecture

Software Architecture Software Architecture Prof. R K Joshi Department of Computer Science and Engineering IIT Bombay What is Architecture? Software Architecture? Is this an Architecture? Is this an Architecture? Is this an

More information

An Introduction to Patterns

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

More information

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

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

More information

Using Design Patterns in Java Application Development

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

More information

The Authenticator Pattern

The Authenticator Pattern The Authenticator Pattern F. Lee Brown, Jr. James DiVietri Graziella Diaz de Villegas CyberGuard Corp. Fort Lauderdale, FL 33309 Eduardo B. Fernandez Dept. of Computer Science and Eng. Florida Atlantic

More information

Pattern-Based Architectural Design Process Model

Pattern-Based Architectural Design Process Model Pattern-Based Architectural Design Process Model N. Lévy, F. Losavio Abstract: The identification of quality requirements is crucial to develop modern software systems, especially when their underlying

More information

Object Oriented Paradigm

Object Oriented Paradigm Object Oriented Paradigm Ming-Hwa Wang, Ph.D. Department of Computer Engineering Santa Clara University Object Oriented Paradigm/Programming (OOP) similar to Lego, which kids build new toys from assembling

More information

Outline. Design Patterns. Observer Pattern. Definitions & Classifications

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

More information

DESIGN PATTERN - INTERVIEW QUESTIONS

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

More information

APPLYING DESIGN PATTERNS TO SCA IMPLEMENTATIONS

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

More information

Design Patterns. CSC207 Fall 2017

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

More information

Design patterns generic models

Design patterns generic models Design patterns generic models Jyothish Maniyath CDC Software India Pvt Ltd 6 th Floor, Canberra Block, UB City, #24 Vittal Mallya Road, Bangalore, India +91 94482 46718 jyosh@maniyath.com ABSTRACT This

More information

CSci Introduction to Distributed Systems. Communication: RPC

CSci Introduction to Distributed Systems. Communication: RPC CSci 5105 Introduction to Distributed Systems Communication: RPC Today Remote Procedure Call Chapter 4 TVS Last Time Architectural styles RPC generally mandates client-server but not always Interprocess

More information

Double-Checked Locking An Optimization Pattern for Efficiently Initializing and Accessing Thread-safe Objects

Double-Checked Locking An Optimization Pattern for Efficiently Initializing and Accessing Thread-safe Objects Double-Checked Locking An Optimization Pattern for Efficiently Initializing and Accessing Thread-safe Objects Douglas C. Schmidt schmidt@cs.wustl.edu Dept. of Computer Science Wash. U., St. Louis Tim Harrison

More information

Abstract. Introduction

Abstract. Introduction Aspect of Life-Cycle Control in a C++ Framework Lutz Dominick Siemens AG, Corporate Technology, ZT SE 1 D-81730 Munich, Germany Lutz.Dominick@mchp.siemens.de April 1999 Abstract This paper presents some

More information

As a programmer, you know how easy it can be to get lost in the details

As a programmer, you know how easy it can be to get lost in the details Chapter 1 Congratulations, Your Problem Has Already Been Solved In This Chapter Introducing design patterns Knowing how design patterns can help Extending object-oriented programming Taking a look at some

More information

1 (ERTSDP) ERTSDP (Embedded Real-Time Systems Design Pattern) (1)

1 (ERTSDP) ERTSDP (Embedded Real-Time Systems Design Pattern) (1) [ ] ERTSDP [ ] UML 1 Liskov [1-4] Gamma 25 [5] GammaBruce Douglas UML [6] ERTSDP Bruce Douglass 2 (ERTSDP) 2.1 [7-9] (problem) QoS (solution) (consequences) 2.2 ERTSDP (Embedded Real-Time Systems Design

More information

An Expert System for Design Patterns Recognition

An Expert System for Design Patterns Recognition IJCSNS International Journal of Computer Science and Network Security, VOL.17 No.1, January 2017 93 An Expert System for Design Patterns Recognition Omar AlSheikSalem 1 and Hazem Qattous 2 1 Department

More information

Classifying Relationships Between Object-Oriented Design Patterns

Classifying Relationships Between Object-Oriented Design Patterns Classifying Relationships Between Object-Oriented Design Patterns James Noble Microsoft Research Institute Macquarie University Sydney, Australia kjx@mri.mq.edu.au Abstract Since the publication of the

More information

Software Architecture Patterns

Software Architecture Patterns Software Architecture Patterns *based on a tutorial of Michael Stal Harald Gall University of Zurich http://seal.ifi.uzh.ch/ase www.infosys.tuwien.ac.at Overview Goal Basic architectural understanding

More information

Automating Regression Testing of Java Programs the JSnoopy Way

Automating Regression Testing of Java Programs the JSnoopy Way Automating Regression Testing of Java Programs the JSnoopy Way Theodore S. Norvell Electrical and Computer Engineering Memorial University of Newfoundland theo@engr.mun.ca Abstract As software systems

More information

Design Patterns. CSC207 Winter 2017

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

More information

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

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

More information

Concurrency Control with Java and Relational Databases

Concurrency Control with Java and Relational Databases Concurrency Control with Java and Relational Databases Sérgio Soares and Paulo Borba Informatics Center Federal University of Pernambuco Recife, PE, Brazil scbs,phmb @cin.ufpe.br Abstract As web based

More information

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

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

More information

Design Patterns: Part 2

Design Patterns: Part 2 Design Patterns: Part 2 ENGI 5895: Software Design Andrew Vardy with code samples from Dr. Rodrigue Byrne and [Martin(2003)] Faculty of Engineering & Applied Science Memorial University of Newfoundland

More information

An Introduction to Patterns

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

More information

Distributed Systems. Lehrstuhl für Informatik IV RWTH Aachen. Organisation. Classification of the lecture. Literature

Distributed Systems. Lehrstuhl für Informatik IV RWTH Aachen. Organisation. Classification of the lecture. Literature Organisation Distributed Systems Lehrstuhl für Informatik IV RWTH Aachen Prof. Dr. Otto Spaniol Dipl.-Inform. Dirk Thißen Exercises about all 14 days Wednesday, 15.30 17.00 Room AH III, RWTH Aachen Teacher-centred

More information

Properties of Member Functions in C++

Properties of Member Functions in C++ Properties of Member Functions in C++ Dirk Riehle SKYVA International www.skyva.com, www.skyva.de riehle@acm.org, www.riehle.org Stephen P. Berczuk Verbind, Inc. www.verbind.com berczuk@acm.org, world.std.com/~berczuk

More information

OBJECT-ORIENTED MODELING AND DESIGN. Introduction

OBJECT-ORIENTED MODELING AND DESIGN. Introduction OBJECT-ORIENTED MODELING AND DESIGN Introduction Contents: Introduction. Course Relevance Learning Outcomes Overview of the syllabus Introduction to Object Orientation Introduction Object Oriented Approach

More information

Initial contents proposal. List of topics. Common Architectural Styles. Architectural Styles. A sample from Elements of Software Architecture

Initial contents proposal. List of topics. Common Architectural Styles. Architectural Styles. A sample from Elements of Software Architecture The delivery of the module Architecture, Design, and Patterns as part of the Master s studies in Novi Sad and Skopje Ioan Jurca ( Politehnica University of Timisoara - Romania) Initial contents proposal.

More information

Object-Oriented Middleware for Distributed Systems

Object-Oriented Middleware for Distributed Systems Object-Oriented Middleware for Distributed Systems Distributed Systems Sistemi Distribuiti Andrea Omicini andrea.omicini@unibo.it Ingegneria Due Alma Mater Studiorum Università di Bologna a Cesena Academic

More information

Chapter 5: Distributed objects and remote invocation

Chapter 5: Distributed objects and remote invocation Chapter 5: Distributed objects and remote invocation From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 4, Addison-Wesley 2005 Figure 5.1 Middleware layers Applications

More information

Message Passing vs. Distributed Objects. 5/15/2009 Distributed Computing, M. L. Liu 1

Message Passing vs. Distributed Objects. 5/15/2009 Distributed Computing, M. L. Liu 1 Message Passing vs. Distributed Objects 5/15/2009 Distributed Computing, M. L. Liu 1 Distributed Objects M. L. Liu 5/15/2009 Distributed Computing, M. L. Liu 2 Message Passing versus Distributed Objects

More information

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

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

More information

A Case Study of the Variability Consequences of the CQRS Pattern in Online Business Software

A Case Study of the Variability Consequences of the CQRS Pattern in Online Business Software A Case Study of the Variability Consequences of the CQRS Pattern in Online Business Software JAAP KABBEDIJK, SLINGER JANSEN and SJAAK BRINKKEMPER, Utrecht University In order to maximize their customer

More information