Pattern Specification in a Visual Parallel Programming Language

Size: px
Start display at page:

Download "Pattern Specification in a Visual Parallel Programming Language"

Transcription

1 Pattern Specification in a Visual Parallel Programming Language A. S. M. Sajeev Department of Software Development, Monash University, Australia sajeev@insect.sd.monash.edu.au Abstract Parallel Programming is significantly more complex than sequential programming because the programmer has the additional task of specifying processes, their communication and synchronization. Within the context of a visual environment we propose a two-level approach to parallel programming. The first level is the specification of a pattern encapsulating process creation and communication, and the second level is the use of patterns for parallel programming. This approach encourages reuse of patterns, and has the additional advantage that programmers who are experts in parallel programming can create patterns to be used by others who can concentrate on the sequential aspects of the program. Patterns can be exted to develop other patterns through the mechanism of object-inheritance 1 Introduction Visual programming languages have the potential to reduce the complexity of programming by providing visual means for program creation [1]. A number of visual programming languages exists, mostly in the sequential domain. Parallel programming is a more complex activity than sequential programming because the programmer has to deal additionally with creation of processes, and communication between them. So, if visual programming is useful in the sequential domain, it is likely to be more useful in the parallel domain. We have designed a visual parallel programming language called V4P based on the 4P paradigm [2]. V4P provides visual support for programming the parallel side, while the sequential aspects are programmed textually. The assumption is that generally programmers are comfortable with sequential programming and needs additional support for parallel programming. A key feature of V4P is its facility to store high-level patterns of parallel programming in a pattern-repository. A pattern is a description of communicating objects and classes that are customized to solve a general design problem in a particular context [3]. Once a pattern is specified and stored, other users can use them to create their parallel programs. V4P has certain built-in patterns; but expert parallel programmers can introduce additional patterns into the environment. This paper discusses the specification and use of patterns in V4P. In the next section we describe V4P and its base coordination language 4P. Section 3 describes the specification of patterns. Section 4 gives an example of specifying processor-farm as a pattern and its use in programs. Section 5 describes the use of inheritance in exting patterns. Section 6 discusses related literature and Section 7 gives the conclusions. 2 Visual 4P V4P provides a flexible object-oriented visual environment for parallel programming. While it uses nodes to represent objects and edges to represent communication channels, the power of the language comes from its ability to accept reusable patterns for parallel programming. The aim is to let sequential programmers create parallel programs without having to write code for process creation, communication and synchronization. V4P is based on the 4P paradigm. 4P, by introducing a very small number of constructs, lets parallel programs to have the 'look and feel' of sequential programs. 2.1 Procedures with preconditions as parallel programs (4P) 4P is a coordination language that can be attached to a sequential object-oriented language to get a concurrent object-oriented language. 4P introduces coordination in terms of two features: one, messages between objects can be synchronous or asynchronous, and two, each method has a guard attached to it; a method invocation is delayed until its guard becomes true.

2 Two objects communicate synchronously by one object calling a method of another (which is the default), and asynchronously, by an object sinvoking a method of another. In the case of s, the ser continues execution without waiting, while a new thread is spawned to execute the method invocation. Each method has a guard (by default TRUE). The three types of guards are boolean, access and path. Access guards specify modes of access to objects (Eg. exclusive), while path guards specify execution history. Details are in [2]. Here we show a boundedbuffer example written using 4P model. We use this buffer in one of the patterns in Section 5. (For the sequential code in this paper, we use Object-Pascal. The reason is that V4P is being implemented in Delphi, and the underlying language of Delphi is Object Pascal 1.) The buffer has two methods, get and put. The get method has a guard to delay calls until there is an unconsumed item in the buffer. The exclusive access to the variable next ensures that two calls to get will be executed mutually exclusively. Similar is the case for the put method. However, if the buffer is neither empty nor full, an invocation of put and another of get can run simultaneously. 2.2 Visual Interface to 4P In V4P, a programmer develops a parallel program by first creating its process communication model visually and then writing mostly the sequential code for the different nodes in the model. The visual representation of a program has at the primitive level a number of nodes. A node may have zero or more ports. Links from other nodes can be connected to a Interface const MAX = 99; type TItem = class; {forward declaration} TBuffer = class private buffer : array [0.. MAX] of TItem; slot : integer := 0; next : integer := 0; function get : TItem; procedure put (item : TItem) Implementation [Exclusive next; next < slot] {guard} function TBuffer.get : TItem; get := buffer[next MOD MAX]; next := next + 1 [Exclusive slot; slot next > 0] procedure TBuffer.put (item : TItem); buffer[slot MOD MAX] := item; slot := slot Because of shortage of space, we do not show all Object- Pascal details in the examples. In Delphi's Object Pascal we can control the visibility of private and protected variables through properties. Instead of showing properties, we have just shown the variables in the section. port. A node typically is a visual representation of an object. A port is internally represented by a method of the object. A port has a guard attached to it; an invocation to the method attached to a port is delayed until its guard holds. The figure above shows the main menu of the V4P environment. A programmer may build the program using the primitives (nodes, links and ports), or more easily, use a pattern. Once a pattern is selected, the programmer needs to write the code for each node. Creating process-threads, buffering data for communication etc. are automatically done by the system. Deping on the pattern used, the programmer may even not have to specify the guards, thereby essentially writing a sequential program. 3 Patterns In any visual environment for parallel programming the level of support provided to create programs is important. An environment may choose to provide only primitives like nodes and links; the advantage is that the programmers can then create parallel programs of arbitrary structure. However, they need to do it from scratch every time, and they need to be experts in parallel programming. On the other hand, an environment that provides only high level models like farms and pipes, while reducing the effort on the part of the programmer, makes the environment less flexible; all programs have to conform to the predefined models. Our approach is to provide both primitives and high level models as

3 patterns, but more importantly allow the creation of new patterns, either as extensions of existing patterns (using the inheritance mechanism of objectorientation) or as entirely new patterns. In this section we discuss the specification and use of patterns. Currently patterns are specified textually and used visually. There is no separate language for specifying patterns; we use the same underlying language, the one used to specify the class descriptions of the nodes. 3.1 Primitives The primitive classes in the system are TNode, TLink and TPort. The interface of these classes are defined as: TNode = class TPort = class owner : TNode; {owner of a port} guard : String; method : String; TLink = class {a link connects a node to a port of another node} head : TNode; tail : TPort In the specification of patterns, often one needs to use arrays of nodes, links and/or ports. The interfaces to TNodeArray is specified below. It uses an enumerated type: TValueTime = (patterndesigntime, programdesigntime, runtime, anytime); TNodeArray = class size : integer; node : array [1..size] of TNode; procedure setsizeat(when : TValueTime) The setsizeat method tells when the size of the array is available. If it is specified as programdesigntime, then when a user, while developing a program, chooses a pattern which contains a node-array, a dialog box would appear asking for the number of nodes. TLinkArray and TPortArray declarations are similar to that of TNodeArray except that they have arrays of TLink and TPort classes respectively. 3.2 Specifying Patterns A pattern is specified in terms of the kind of nodes it has, the port(s) for each node, the links between the nodes, and optionally the guards and methods for each port. If the guards and methods are not attached to a port in a pattern, then the user of the pattern will need to attach them at program (as opposed to pattern) design time. 3.3 Specifying a processor farm pattern A processor farm generally consists of a master process and several workers. A master divides the task into several subtasks and asks the workers to solve the subtasks. Each worker after completing its task will return the result to the master, who will 'accumulate' the partial results to construct the complete result. There are several variations of this pattern; we will discuss some of them later in the paper. The aspects common to different variations can be abstracted into an abstract farm class. It specifies a master node and an array of worker nodes. The master has a result port and an array of result links to link the result port to the workers (for them to return the result of subtasks). We specify that the result port is attached to a method called accumulator, and the guard for the method is exclusive accumulator (i.e. exclusive access to accumulator). The abstract farm also has an array of problem-ports and problem-links for the master to s subtasks to workers. TAbstractFarm = class(tpattern) master : TNode; resultport : Port; resultlink : TLinkArray; worker: TNodeArray; problemport : TPortArray; problemlink : TLinkArray; constructor create; constructor TFarm.create; var i :integer; resultport.owner := master; resultport.method := 'Accumulate'; resultport.guard := 'Exclusive accumulator'; for i := 0 to worker.size-1 do resultlink[i].head := worker[i]; resultlink[i].tail := resultport

4 In the common form of processor farm, each worker has a port (problemport) to receive the problem (i.e., the subtask) it has to solve. This port is linked to the master. A method, called solve, is attached to the port. The processor farm pattern can be specified as a descant of the abstractfarm. When an instance of the processor farm (TFarm, below) is created, it first executes the parent's create to establish the resultport and resultlinks. Then it sets up the rest of the ports and links (see the create method below). TFarm = class(tabstractfarm) constructor create; override; constructor TFarm.create; override; var i :integer; inherit; //Execute the parent's create worker.setsizeat(programdesigntime); problemport.size := worker.size; problemlink.size := worker.size; for i := 0 to worker.size-1 do problemport[i].owner := worker[i]; problemport[i].method := 'solve'; problemlink[i].head := master; problemlink[i].tail := port[i]; The pattern-programmer can attach a title (by default, the class name), an icon, and a natural description to the pattern and store it in the pattern repository. 4 Using patterns to create parallel programs To use a pattern to create a program, the first step is to choose a pattern, either by double clicking on its icon or by selecting it in the drop down menu. In this section we illustrate the use of the processor farm pattern specified in the previous section. When a user double clicks on its icon, a dialog box appears. It asks for the number of worker nodes, since the pattern specification states that the number of workers will be specified at program design time. Closing the dialog box after entering a value for the number of workers, will display a graph for the farm pattern. The user can now double click on any of the nodes, to get a code editor to enter the class description corresponding to that node (see Figure below). If the code already exists, it could be attached to the node. In the processor farm, it is often the case that each worker is an instance of the same class. Thus all worker nodes will be attached to the same TWorker class. Hence the code can be written once, and then attached to each worker node. 4.1 An Example To illustrate the use of the farm pattern we can

5 program parallel sorting as a farm. A master divides the given list of numbers into sublists. Each worker sorts a sublist in parallel with other workers and returns the sorted sublist to the master. The master merges the sorted sublists to get the final output. The master class is defined as: {We assume that the list size is a multiple of number of workers} TMaster = class private // the sorted array accumulator : array[0..99] of integer; // unsorted array initlist : array [0..99] of integer; listsize : integer = 100; sublistsize : integer; mergedlistsize : integer = 0; constructor create; procedure accumulate(sublist : array of integer); // merge constructor TMaster.create; var i, j : integer; {read the numbers} sublistsize := listsize div worker.size; for i := 0 to worker.size-1 do for j := 0 to sublistsize-1 read (sublist[j]); s worker[i].sort(sublist); procedure TMaster.accumulate( sublist: array of integer); for i := 0 to high(sublist) do for j := 0 to mergedlistsize-1 do if sublist[i] < accumulator[j] then break; insert(sublist[i], accumulator, j) {inserts sublist[i] in the accumulator at position j --details not shown} mergedlistsize := mergedlistsize + sublistsize; The worker class is defined as: TWorker = class procedure solve( sublist : array of integer); TWorker.solve( sublist: array of integer); sort(sublist); // details not shown s master.accumulate(sublist) This is essentially a sequential program except for the s-invocations used when an object does not expect a return value. The code to instantiate N workers and one master is generated automatically. The application programmer does not have to worry about synchronization because the farm pattern has already specified the only synchronization required in this case. When workers finish calculating the results, they s-invoke the master's accumulate method. The execution of the method body will be delayed until there is exclusive access to the accumulator. 5 New patterns by inheritance We can create new patterns by inheriting from already created patterns. To demonstrate this, we will create an aga farm as an extension of the farm. An aga farm has an aga object where the master will initially keep the aga items for workers to pick up (instead of directly sing them to the worker). An aga farm is useful in situations where the workers while working on a subtask needs to create new subtasks; they can place such subtasks on the aga for workers who become free. An aga farm, apart from workers and a master needs a node for the aga. An aga is essentially a buffer. So, we use the class TBuffer defined in Section 2 for aga. The aga has two ports: one to deposit the problems (problemport) and the other for workers to retrieve the problems (getport). ProblemPort is inherited from TAbstractFarm and getport is declared within TAgaFarm. TAgaFarm = class(tabstractfarm) aga : TBuffer; getport: TPort; getlink : TLinkArray; constructor create; override; constructor TAgaFarm.create;override; inherit; {Attach the problemport to put method of Aga; we need only one problem port} problemport.size := 1; problemport[0].owner := aga; problemport[0].method := 'put'; {Attach the getport to get method} getport.owner := aga; getport.method := 'get'; {Since the guards are already defined for put and get in the Tbuffer class, they will be automatically assigned to the respective guard fields} worker.setsizeat(programdesigntime); getlink.size := worker.size;

6 problemlink.size := worker.size + 1; {Link problemport[0] to master} problemlink[0].head := master; probelmlink[0].tail := problemport[0]; {Link problemport[0], getport and resultport to all workers} for i := 0 to worker.size-1 do problemlink[i+1].head := worker[i]; problemlink[i+1].tail := problemport[0]; getlink[i].head := worker[i]; getlink[i].tail := getport 6 Related Literature Two of the representative visual environments for parallel programming are Enterprise [4] and Meander [5]. In the Enterprise model, programmers are given a fixed number of models as metaphors from a business enterprise. For example, a department is a model similar to the processor farm. The programmer only needs to type in the code for the units of the enterprise. This has the advantages similar to that of using patterns inv4p. However, unlike V4P, the Enterprise model does not let the user define any metaphors; they have to program within those supplied by the system. Meander is perhaps at the other extreme, where programming is always done with nodes and edges. Meander allows composition of the graphs creating process modules, but they don't provide the same flexibility as patterns. While patterns are templates that can be reused to create different programs, process modules are parts of a program. Darwin [6] is a language for distributed systems configuration. Users can specify the configuration of a distributed system. This is similar to patterns in V4P in the sense that a pattern specifies a configuration for parallel programs that follow the pattern. The main difference, once again, is that configurations in Darwin are not generic. Furthermore, Darwin is a language separate from the implementation language (which is C++), whereas in V4P patterns are specified in the same language as the user writes code for each node (Object-Pascal). Algorithmic skeletons [7] have been explored mainly in the functional programming area. Skeletons provide a generic mechanism to specify parallelism, and in that sense provide the same functionality as V4P's patterns. We are not aware of the use of skeletons for parallelism in either a visual or an object-oriented environment, however. 7 Conclusions V4P is a visual language for parallel programming. It provides high level patterns for parallel programming. A pattern specifies the process communication structure; the user of the pattern has only to provide essentially the sequential code corresponding to the objects. In other similar visual environments, a user is restricted to the patterns provided by the system. In V4P, however, users can specify patterns of their own and add them to the repository for reuse. Because of the object-oriented environment, patterns can be created as extensions of existing patterns. Furthermore, we do not define a separate language for pattern specification. This paper has shown that creating patterns is a flexible and reusable form of developing parallel programs. Pattern development currently is textual, only their use is visual. This is acceptable since we see two classes of programmers: sequential programmers who want to create parallel programs (they can get most benefit from the visual environment), and expert parallel programmers who want to ext the already available patterns in the environment with new patterns (who wouldn't mind textual programming). We are, however, studying ways to provide a visual environment for pattern programming as well. References 1. B. A. Myers, Visual programming, programming by example, and program visualization: a taxonomy, Proc. CHI '86, 1986, A. S. M. Sajeev and H. W. Schmidt, Integrating concurrency and object-orientation using boolean, access and path guards, Proc. 3 rd Intl. Conf. High Performance Computing, Trivandrum, IEEE Press, 1996, E. Gamma, R. Helm, R. Johnson and J. Vlissides, Design patterns: elements of reusable object-oriented software, Addison-Wesley (1995). 4. J. Schaeffer, D. Szafron, G. Lobe and I. Parsons, The enterprise model for developing distributed applications, IEEE Parallel and Distributed Technology, August, 1993, G. Wirtz, Graph-based software construction for parallel message-passing programs, Information and Software Technology Journal, 36(7), 1994, J. Magee, N. Dulay and J. Kramer, Structuring parallel and distributed programs, IEE Software Engineering Journal, 8, 1993, G. H. Botorog and H. Kuchen, Algorithmic skeletons for adaptive multigrid methods, in Lecture Notes in Computer Science, 980, Springer, 1995.

Compositional C++ Page 1 of 17

Compositional C++ Page 1 of 17 Compositional C++ Page 1 of 17 Compositional C++ is a small set of extensions to C++ for parallel programming. OVERVIEW OF C++ With a few exceptions, C++ is a pure extension of ANSI C. Its features: Strong

More information

Design Patterns. SE3A04 Tutorial. Jason Jaskolka

Design Patterns. SE3A04 Tutorial. Jason Jaskolka SE3A04 Tutorial Jason Jaskolka Department of Computing and Software Faculty of Engineering McMaster University Hamilton, Ontario, Canada jaskolj@mcmaster.ca November 18/19, 2014 Jason Jaskolka 1 / 35 1

More information

Idioms for Building Software Frameworks in AspectJ

Idioms for Building Software Frameworks in AspectJ Idioms for Building Software Frameworks in AspectJ Stefan Hanenberg 1 and Arno Schmidmeier 2 1 Institute for Computer Science University of Essen, 45117 Essen, Germany shanenbe@cs.uni-essen.de 2 AspectSoft,

More information

Introduction to Object-Oriented Programming

Introduction to Object-Oriented Programming 1/9 Introduction to Object-Oriented Programming Conception et programmation orientées object, B. Meyer, Eyrolles Object-Oriented Software Engineering, T. C. Lethbridge, R. Laganière, McGraw Hill Design

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

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

CYES-C++: A Concurrent Extension of C++ through Compositional Mechanisms

CYES-C++: A Concurrent Extension of C++ through Compositional Mechanisms CYES-C++: A Concurrent Extension of C++ through Compositional Mechanisms Raju Pandey J. C. Browne Department of Computer Sciences The University of Texas at Austin Austin, TX 78712 fraju, browneg@cs.utexas.edu

More information

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

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

More information

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

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

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

More information

Classes and Methods לאוניד ברנבוים המחלקה למדעי המחשב אוניברסיטת בן-גוריון

Classes and Methods לאוניד ברנבוים המחלקה למדעי המחשב אוניברסיטת בן-גוריון Classes and Methods לאוניד ברנבוים המחלקה למדעי המחשב אוניברסיטת בן-גוריון 22 Roadmap Lectures 4 and 5 present two sides of OOP: Lecture 4 discusses the static, compile time representation of object-oriented

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

Object-Oriented Concepts and Principles (Adapted from Dr. Osman Balci)

Object-Oriented Concepts and Principles (Adapted from Dr. Osman Balci) Object-Oriented Concepts and Principles (Adapted from Dr. Osman Balci) Sung Hee Park Department of Mathematics and Computer Science Virginia State University September 18, 2012 The Object-Oriented Paradigm

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

Object-Oriented Design

Object-Oriented Design Object-Oriented Design Lecture 20 GoF Design Patterns Behavioral Department of Computer Engineering Sharif University of Technology 1 GoF Behavioral Patterns Class Class Interpreter: Given a language,

More information

Classes and Methods עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון מבוסס על השקפים של אותו קורס שניתן בשנים הקודמות

Classes and Methods עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון מבוסס על השקפים של אותו קורס שניתן בשנים הקודמות Classes and Methods עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון מבוסס על השקפים של אותו קורס שניתן בשנים הקודמות 2 Roadmap Lectures 4 and 5 present two sides of OOP: Lecture 4 discusses the static,

More information

Design Patterns in Enterprise

Design Patterns in Enterprise Design Patterns in Enterprise Steve MacDonald Department of Computing Science University of Alberta Edmonton, Alberta CANADA T6G 2H1 stevem@cs.ualberta.ca Abstract The Enterprise parallel programming system

More information

Classes and Methods גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון

Classes and Methods גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון Classes and Methods גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון 2 Roadmap Lectures 4 and 5 present two sides of OOP: Lecture 4 discusses the static, compile time representation of object-oriented

More information

AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS

AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS PAUL L. BAILEY Abstract. This documents amalgamates various descriptions found on the internet, mostly from Oracle or Wikipedia. Very little of this

More information

Advanced Object Oriented PHP

Advanced Object Oriented PHP CNM STEMulus Center Web Development with PHP November 11, 2015 1/17 Outline 1 2 Diamond Problem Composing vs Inheriting Case Study: Strategy Design Pattern 2/17 Definition is when a class is based on another

More information

DESIGN PATTERN MATCHING

DESIGN PATTERN MATCHING PERIODICA POLYTECHNICA SER. EL. ENG. VOL. 47, NO. 3 4, PP. 205 212 (2003) DESIGN PATTERN MATCHING Dániel PETRI and György CSERTÁN Department of Measurement and Information Systems Budapest University of

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

Graphical Interface and Application (I3305) Semester: 1 Academic Year: 2017/2018 Dr Antoun Yaacoub

Graphical Interface and Application (I3305) Semester: 1 Academic Year: 2017/2018 Dr Antoun Yaacoub Lebanese University Faculty of Science Computer Science BS Degree Graphical Interface and Application (I3305) Semester: 1 Academic Year: 2017/2018 Dr Antoun Yaacoub 2 Crash Course in JAVA Classes A Java

More information

Index. Index. More information. block statements 66 y 107 Boolean 107 break 55, 68 built-in types 107

Index. Index. More information. block statements 66 y 107 Boolean 107 break 55, 68 built-in types 107 A abbreviations 17 abstract class 105 abstract data types 105 abstract method 105 abstract types 105 abstraction 92, 105 access level 37 package 114 private 115 protected 115 public 115 accessors 24, 105

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

Patterns of learning

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

More information

Object-Oriented Design (OOD) and C++

Object-Oriented Design (OOD) and C++ Chapter 2 Object-Oriented Design (OOD) and C++ At a Glance Instructor s Manual Table of Contents Chapter Overview Chapter Objectives Instructor Notes Quick Quizzes Discussion Questions Projects to Assign

More information

3 Product Management Anti-Patterns by Thomas Schranz

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

More information

PROFESSOR: DR.JALILI BY: MAHDI ESHAGHI

PROFESSOR: DR.JALILI BY: MAHDI ESHAGHI PROFESSOR: DR.JALILI BY: MAHDI ESHAGHI 1 2 Overview Distributed OZ Java RMI CORBA IDL IDL VS C++ CORBA VS RMI 3 Distributed OZ Oz Language Multi paradigm language, strong support for compositionality and

More information

Java for Programmers Course (equivalent to SL 275) 36 Contact Hours

Java for Programmers Course (equivalent to SL 275) 36 Contact Hours Java for Programmers Course (equivalent to SL 275) 36 Contact Hours Course Overview This course teaches programmers the skills necessary to create Java programming system applications and satisfies the

More information

Chapter 6: Programming Languages

Chapter 6: Programming Languages Chapter 6: Programming Languages Computer Science: An Overview Tenth Edition by J. Glenn Brookshear Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 6: Programming Languages

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

COP 3330 Final Exam Review

COP 3330 Final Exam Review COP 3330 Final Exam Review I. The Basics (Chapters 2, 5, 6) a. comments b. identifiers, reserved words c. white space d. compilers vs. interpreters e. syntax, semantics f. errors i. syntax ii. run-time

More information

Design Patterns 2. Page 1. Software Requirements and Design CITS 4401 Lecture 10. Proxy Pattern: Motivation. Proxy Pattern.

Design Patterns 2. Page 1. Software Requirements and Design CITS 4401 Lecture 10. Proxy Pattern: Motivation. Proxy Pattern. Proxy : Motivation Design s 2 It is 3pm. I am sitting at my 10Mbps connection and go to browse a fancy web page from the US, This is prime web time all over the US. So I am getting 100kbps What can you

More information

SFDV3006 Concurrent Programming

SFDV3006 Concurrent Programming SFDV3006 Concurrent Programming Lecture 6 Concurrent Architecture Concurrent Architectures Software architectures identify software components and their interaction Architectures are process structures

More information

Support for Object-Oriented Testing

Support for Object-Oriented Testing Support for Object-Oriented Testing Michael Kolling School of Computer Science & Software Engineering Monash University Australia michael. kolling @ csse.monash. edu.au John Rosenberg Faculty of Information

More information

CS5314 RESEARCH PAPER ON PROGRAMMING LANGUAGES

CS5314 RESEARCH PAPER ON PROGRAMMING LANGUAGES ORCA LANGUAGE ABSTRACT Microprocessor based shared-memory multiprocessors are becoming widely available and promise to provide cost-effective high performance computing. Small-scale sharedmemory multiprocessors

More information

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

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

More information

Lecture 13: Design Patterns

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

More information

A Case Study for HRT-UML

A Case Study for HRT-UML A Case Study for HRT-UML Massimo D Alessandro, Silvia Mazzini, Francesco Donati Intecs HRT, Via L. Gereschi 32, I-56127 Pisa, Italy Silvia.Mazzini@pisa.intecs.it Abstract The Hard-Real-Time Unified Modelling

More information

1 Process Coordination

1 Process Coordination COMP 730 (242) Class Notes Section 5: Process Coordination 1 Process Coordination Process coordination consists of synchronization and mutual exclusion, which were discussed earlier. We will now study

More information

AN OBJECT-ORIENTED VISUAL SIMULATION ENVIRONMENT FOR QUEUING NETWORKS

AN OBJECT-ORIENTED VISUAL SIMULATION ENVIRONMENT FOR QUEUING NETWORKS AN OBJECT-ORIENTED VISUAL SIMULATION ENVIRONMENT FOR QUEUING NETWORKS Hussam Soliman Saleh Al-Harbi Abdulkader Al-Fantookh Abdulaziz Al-Mazyad College of Computer and Information Sciences, King Saud University,

More information

Course materials Reges, Stuart, and Stepp, Martin. Building Java Programs: A Back to Basics Approach. 2d ed. (Boston: Addison-Wesley, 2011).

Course materials Reges, Stuart, and Stepp, Martin. Building Java Programs: A Back to Basics Approach. 2d ed. (Boston: Addison-Wesley, 2011). AP Computer Science A Advanced Placement Computer Science A is a fast-paced course equivalent to a college introductory programming class. Students will learn about the exciting kinds of problems tackled

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

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

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

More information

Inheritance and Polymorphism

Inheritance and Polymorphism Inheritance and Polymorphism Inheritance (Continued) Polymorphism Polymorphism by inheritance Polymorphism by interfaces Reading for this lecture: L&L 10.1 10.3 1 Interface Hierarchies Inheritance can

More information

Pattern-Oriented Development with Rational Rose

Pattern-Oriented Development with Rational Rose Pattern-Oriented Development with Rational Rose Professor Peter Forbrig, Department of Computer Science, University of Rostock, Germany; Dr. Ralf Laemmel, Department of Information Management and Software

More information

MaanavaN.Com CS1203 OBJECT ORIENTED PROGRAMMING DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

MaanavaN.Com CS1203 OBJECT ORIENTED PROGRAMMING DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING SUB CODE / SUBJECT: CS1203 / Object oriented programming YEAR / SEM: II / III QUESTION BANK UNIT I FUNDAMENTALS PART-A (2 MARKS) 1. What is Object Oriented

More information

Behavioral Design Patterns Used in Data Structures Implementation

Behavioral Design Patterns Used in Data Structures Implementation Behavioral Design Patterns Used in Data Structures Implementation Niculescu Virginia Department of Computer Science Babeş-Bolyai University, Cluj-Napoca email address: vniculescu@cs.ubbcluj.ro November,

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

Introduction to Visual Basic and Visual C++ Introduction to Java. JDK Editions. Overview. Lesson 13. Overview

Introduction to Visual Basic and Visual C++ Introduction to Java. JDK Editions. Overview. Lesson 13. Overview Introduction to Visual Basic and Visual C++ Introduction to Java Lesson 13 Overview I154-1-A A @ Peter Lo 2010 1 I154-1-A A @ Peter Lo 2010 2 Overview JDK Editions Before you can write and run the simple

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

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

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

What is Design Patterns?

What is Design Patterns? Paweł Zajączkowski What is Design Patterns? 1. Design patterns may be said as a set of probable solutions for a particular problem which is tested to work best in certain situations. 2. In other words,

More information

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

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

More information

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

SDC Design patterns GoF

SDC Design patterns GoF SDC Design patterns GoF Design Patterns The design pattern concept can be viewed as an abstraction of imitating useful parts of other software products. The design pattern is a description of communicating

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

Safety SPL/2010 SPL/20 1

Safety SPL/2010 SPL/20 1 Safety 1 system designing for concurrent execution environments system: collection of objects and their interactions system properties: Safety - nothing bad ever happens Liveness - anything ever happens

More information

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

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

More information

Design Patterns. Manuel Mastrofini. Systems Engineering and Web Services. University of Rome Tor Vergata June 2011

Design Patterns. Manuel Mastrofini. Systems Engineering and Web Services. University of Rome Tor Vergata June 2011 Design Patterns Lecture 1 Manuel Mastrofini Systems Engineering and Web Services University of Rome Tor Vergata June 2011 Definition A pattern is a reusable solution to a commonly occurring problem within

More information

Microthread. An Object Behavioral Pattern for Managing Object Execution. 1.0 Intent. 2.0 Also Known As. 3.0 Classification. 4.0 Motivation/Example

Microthread. An Object Behavioral Pattern for Managing Object Execution. 1.0 Intent. 2.0 Also Known As. 3.0 Classification. 4.0 Motivation/Example Microthread An Object Behavioral Pattern for Managing Object Execution Joe Hoffert and Kenneth Goldman {joeh,kjg}@cs.wustl.edu Distributed Programing Environments Group Department of Computer Science,

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

A Tour of Hybrid 1. O.M. Nierstrasz

A Tour of Hybrid 1. O.M. Nierstrasz A Tour of Hybrid 1 O.M. Nierstrasz University of Geneva Centre Universitaire d Informatique 12 Rue du Lac, CH-1207 Geneva, Switzerland E-mail: oscar@cui.unige.ch, oscar@cgeuge51.bitnet mcvax!cernvax!cui!oscar

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

Global shared variables. Message passing paradigm. Communication Ports. Port characteristics. Sending a message 07/11/2018

Global shared variables. Message passing paradigm. Communication Ports. Port characteristics. Sending a message 07/11/2018 Global shared variables In most RT applications, tasks exchange data through global shared variables. Advantages High efficiency Low run-time overhead Schedulability analysis is available Disadvantages

More information

Implementing Object Equivalence in Java Using the Template Method Design Pattern

Implementing Object Equivalence in Java Using the Template Method Design Pattern Implementing Object Equivalence in Java Using the Template Method Design Pattern Daniel E. Stevenson and Andrew T. Phillips Computer Science Department University of Wisconsin-Eau Claire Eau Claire, WI

More information

Chapter 6 Introduction to Defining Classes

Chapter 6 Introduction to Defining Classes Introduction to Defining Classes Fundamentals of Java: AP Computer Science Essentials, 4th Edition 1 Objectives Design and implement a simple class from user requirements. Organize a program in terms of

More information

AADL Graphical Editor Design

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

More information

Microsoft Visual Basic 2005: Reloaded

Microsoft Visual Basic 2005: Reloaded Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 10 Creating Classes and Objects Objectives After studying this chapter, you should be able to: Define a class Instantiate an object from a class

More information

Object-Oriented Programming Paradigm

Object-Oriented Programming Paradigm Object-Oriented Programming Paradigm Sample Courseware Object-Oriented Programming Paradigm Object-oriented programming approach allows programmers to write computer programs by representing elements of

More information

Control Message. Abstract. Microthread pattern?, Protocol pattern?, Rendezvous pattern? [maybe not applicable yet?]

Control Message. Abstract. Microthread pattern?, Protocol pattern?, Rendezvous pattern? [maybe not applicable yet?] Control Message An Object Behavioral Pattern for Managing Protocol Interactions Joe Hoffert and Kenneth Goldman {joeh,kjg@cs.wustl.edu Distributed Programing Environments Group Department of Computer Science,

More information

ECE 122. Engineering Problem Solving with Java

ECE 122. Engineering Problem Solving with Java ECE 122 Engineering Problem Solving with Java Lecture 6 Problem Definition and Implementation Outline Problem: Create, read in and print out four sets of student grades Setting up the problem Breaking

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

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

Inter-process communication (IPC)

Inter-process communication (IPC) Inter-process communication (IPC) We have studied IPC via shared data in main memory. Processes in separate address spaces also need to communicate. Consider system architecture both shared memory and

More information

Tuesday, October 4. Announcements

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

More information

Performance Throughput Utilization of system resources

Performance Throughput Utilization of system resources Concurrency 1. Why concurrent programming?... 2 2. Evolution... 2 3. Definitions... 3 4. Concurrent languages... 5 5. Problems with concurrency... 6 6. Process Interactions... 7 7. Low-level Concurrency

More information

Design Pattern. CMPSC 487 Lecture 10 Topics: Design Patterns: Elements of Reusable Object-Oriented Software (Gamma, et al.)

Design Pattern. CMPSC 487 Lecture 10 Topics: Design Patterns: Elements of Reusable Object-Oriented Software (Gamma, et al.) Design Pattern CMPSC 487 Lecture 10 Topics: Design Patterns: Elements of Reusable Object-Oriented Software (Gamma, et al.) A. Design Pattern Design patterns represent the best practices used by experienced

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

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

OMG Modeling Glossary B

OMG Modeling Glossary B OMG Modeling Glossary B This glossary defines the terms that are used to describe the Unified Modeling Language (UML) and the Meta Object Facility (MOF). In addition to UML and MOF specific terminology,

More information

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture - 43 Dynamic Binding (Polymorphism): Part III Welcome to Module

More information

Assignment 1: grid. Due November 20, 11:59 PM Introduction

Assignment 1: grid. Due November 20, 11:59 PM Introduction CS106L Fall 2008 Handout #19 November 5, 2008 Assignment 1: grid Due November 20, 11:59 PM Introduction The STL container classes encompass a wide selection of associative and sequence containers. However,

More information

L18.1 Introduction... 2

L18.1 Introduction... 2 Department of Computer Science COS121 Lecture Notes: L18 Iterator Design Pattern 8 September 2014 Copyright c 2014 by Linda Marshall and Vreda Pieterse. All rights reserved. Contents L18.1 Introduction.................................

More information

An Implementation of Hybrid A Concurrent, Object-Oriented Language

An Implementation of Hybrid A Concurrent, Object-Oriented Language An Implementation of Hybrid A Concurrent, Object-Oriented Language D. Konstantas O. Nierstrasz M. Papathomas Abstract This paper is a report on a prototype implementation of Hybrid, a strongly-typed, concurrent,

More information

Chapter 5: Algorithms

Chapter 5: Algorithms Chapter 5 Algorithms By: J. Brookshear Modified by: Yacoub Sabatin, BEng, MSc Chapter 5: Algorithms 5.1 The Concept of an Algorithm 5.2 Algorithm Representation 5.3 Algorithm Discovery 5.4 Iterative Structures

More information

SYNCHRONIZED DATA. Week 9 Laboratory for Concurrent and Distributed Systems Uwe R. Zimmer. Pre-Laboratory Checklist

SYNCHRONIZED DATA. Week 9 Laboratory for Concurrent and Distributed Systems Uwe R. Zimmer. Pre-Laboratory Checklist SYNCHRONIZED DATA Week 9 Laboratory for Concurrent and Distributed Systems Uwe R. Zimmer Pre-Laboratory Checklist vvyou have read this text before you come to your lab session. vvyou understand and can

More information

Lecture 16: Recapitulations. Lecture 16: Recapitulations p. 1

Lecture 16: Recapitulations. Lecture 16: Recapitulations p. 1 Lecture 16: Recapitulations Lecture 16: Recapitulations p. 1 Parallel computing and programming in general Parallel computing a form of parallel processing by utilizing multiple computing units concurrently

More information

Design Patterns. "Gang of Four"* Design Patterns. "Gang of Four" Design Patterns. Design Pattern. CS 247: Software Engineering Principles

Design Patterns. Gang of Four* Design Patterns. Gang of Four Design Patterns. Design Pattern. CS 247: Software Engineering Principles CS 247: Software Engineering Principles Design Patterns Reading: Freeman, Robson, Bates, Sierra, Head First Design Patterns, O'Reilly Media, Inc. 2004 Ch Strategy Pattern Ch 7 Adapter and Facade patterns

More information

Object-Oriented Design

Object-Oriented Design Object-Oriented Design Lecturer: Raman Ramsin Lecture 10: Analysis Packages 1 Analysis Workflow: Packages The analysis workflow consists of the following activities: Architectural analysis Analyze a use

More information

Software Engineering Prof. Rushikesh K.Joshi IIT Bombay Lecture-15 Design Patterns

Software Engineering Prof. Rushikesh K.Joshi IIT Bombay Lecture-15 Design Patterns Software Engineering Prof. Rushikesh K.Joshi IIT Bombay Lecture-15 Design Patterns Today we are going to talk about an important aspect of design that is reusability of design. How much our old design

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

CS 247: Software Engineering Principles. Design Patterns

CS 247: Software Engineering Principles. Design Patterns CS 247: Software Engineering Principles Design Patterns Reading: Freeman, Robson, Bates, Sierra, Head First Design Patterns, O'Reilly Media, Inc. 2004 Ch 1 Strategy Pattern Ch 7 Adapter and Facade patterns

More information

THE ADAPTABILITY CHALLENGE FOR EMBEDDED CONTROL SYSTEM SOFTWARE.

THE ADAPTABILITY CHALLENGE FOR EMBEDDED CONTROL SYSTEM SOFTWARE. THE ADAPTABILITY CHALLENGE FOR EMBEDDED CONTROL SYSTEM SOFTWARE V. Cechticky 1, A. Pasetti 1,2, W. Schaufelberger 1 1 Institut für Automatik, ETH-Zürich, Physikstr. 3, Zürich, CH-8092 2 P&P Software GmbH,

More information

Oracle Application Development Framework Overview

Oracle Application Development Framework Overview An Oracle White Paper July 2009 Oracle Application Development Framework Overview Introduction... 1 Oracle ADF Making Java EE Development Simpler... 2 THE ORACLE ADF ARCHITECTURE... 3 The Business Services

More information

With IBM BPM 8.5.5, the features needed to express both BPM solutions and case management oriented solutions comes together in one offering.

With IBM BPM 8.5.5, the features needed to express both BPM solutions and case management oriented solutions comes together in one offering. Case Management With the release of IBM BPM 8.5.5, case management capabilities were added to the product. It must be noted that these functions are only available with IBM BPM Advanced and the Basic Case

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

Model-based Run-Time Software Adaptation for Distributed Hierarchical Service Coordination

Model-based Run-Time Software Adaptation for Distributed Hierarchical Service Coordination Model-based Run-Time Software Adaptation for Distributed Hierarchical Service Coordination Hassan Gomaa, Koji Hashimoto Department of Computer Science George Mason University Fairfax, VA, USA hgomaa@gmu.edu,

More information