Pattern Specification in a Visual Parallel Programming Language
|
|
- Sharon Cameron
- 5 years ago
- Views:
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++ 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 informationDesign 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 informationIdioms 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 informationIntroduction 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 informationTopics in Object-Oriented Design Patterns
Software design Topics in Object-Oriented Design Patterns Material mainly from the book Design Patterns by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides; slides originally by Spiros Mancoridis;
More informationConfiguration 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 informationCYES-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 informationGoals of Lecture. Lecture 27: OO Design Patterns. Pattern Resources. Design Patterns. Cover OO Design Patterns. Pattern Languages of Programming
Goals of Lecture Lecture 27: OO Design Patterns Cover OO Design Patterns Background Examples Kenneth M. Anderson Object-Oriented Analysis and Design CSCI 6448 - Spring Semester, 2001 April 24, 2001 Kenneth
More informationObject-Oriented Design
Object-Oriented Design Lecturer: Raman Ramsin Lecture 20: GoF Design Patterns Creational 1 Software Patterns Software Patterns support reuse of software architecture and design. Patterns capture the static
More informationbe used for more than one use case (for instance, for use cases Create User and Delete User, one can have one UserController, instead of two separate
UNIT 4 GRASP GRASP: Designing objects with responsibilities Creator Information expert Low Coupling Controller High Cohesion Designing for visibility - Applying GoF design patterns adapter, singleton,
More informationClasses 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 informationObject 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 informationObject-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 informationPatterns 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 informationObject-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 informationClasses and Methods עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון מבוסס על השקפים של אותו קורס שניתן בשנים הקודמות
Classes and Methods עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון מבוסס על השקפים של אותו קורס שניתן בשנים הקודמות 2 Roadmap Lectures 4 and 5 present two sides of OOP: Lecture 4 discusses the static,
More informationDesign 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 informationClasses 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 informationAP 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 informationAdvanced 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 informationDESIGN 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 informationJames Newkirk
Private Interface Class Structural James Newkirk newkirk@oma.com Intent Provide a mechanism that allows specific classes to use a non-public subset of a class interface without inadvertently increasing
More informationGraphical 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 informationIndex. 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 informationCSCD01 Engineering Large Software Systems. Design Patterns. Joe Bettridge. Winter With thanks to Anya Tafliovich
CSCD01 Engineering Large Software Systems Design Patterns Joe Bettridge Winter 2018 With thanks to Anya Tafliovich Design Patterns Design patterns take the problems consistently found in software, and
More informationPatterns of learning
Design patterns Patterns of learning Suppose we want to learn how to play chess. First, we need to learn the basic rules. Then we need to learn the basic strategy/ principles (value of pieces, etc.). To
More informationObject-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 information3 Product Management Anti-Patterns by Thomas Schranz
3 Product Management Anti-Patterns by Thomas Schranz News Read above article, it s good and short! October 30, 2014 2 / 3 News Read above article, it s good and short! Grading: Added explanation about
More informationPROFESSOR: 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 informationJava 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 informationChapter 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 informationCSCD01 Engineering Large Software Systems. Design Patterns. Joe Bettridge. Winter With thanks to Anya Tafliovich
CSCD01 Engineering Large Software Systems Design Patterns Joe Bettridge Winter 2018 With thanks to Anya Tafliovich Design Patterns Design patterns take the problems consistently found in software, and
More informationCOP 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 informationDesign 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 informationSFDV3006 Concurrent Programming
SFDV3006 Concurrent Programming Lecture 6 Concurrent Architecture Concurrent Architectures Software architectures identify software components and their interaction Architectures are process structures
More informationSupport 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 informationCS5314 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 informationTackling Design Patterns Chapter 3: Template Method design pattern and Public Inheritance. 3.1 Introduction... 2
Department of Computer Science Tackling Design Patterns Chapter 3: Template Method design pattern and Public Inheritance Copyright c 2016 by Linda Marshall and Vreda Pieterse. All rights reserved. Contents
More informationLecture 13: Design Patterns
1 Lecture 13: Design Patterns Kenneth M. Anderson Object-Oriented Analysis and Design CSCI 6448 - Spring Semester, 2005 2 Pattern Resources Pattern Languages of Programming Technical conference on Patterns
More informationA 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 information1 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 informationAN 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 informationCourse 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 informationCHAPTER 6: CREATIONAL DESIGN PATTERNS
CHAPTER 6: CREATIONAL DESIGN PATTERNS SESSION III: BUILDER, PROTOTYPE, SINGLETON Software Engineering Design: Theory and Practice by Carlos E. Otero Slides copyright 2012 by Carlos E. Otero For non-profit
More informationSoftware Design Patterns. Background 1. Background 2. Jonathan I. Maletic, Ph.D.
Software Design Patterns Jonathan I. Maletic, Ph.D. Department of Computer Science Kent State University J. Maletic 1 Background 1 Search for recurring successful designs emergent designs from practice
More informationInheritance 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 informationPattern-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 informationMaanavaN.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 informationBehavioral 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 informationUniversal 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 informationIntroduction 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 informationObject Oriented Methods with UML. Introduction to Design Patterns- Lecture 8
Object Oriented Methods with UML Introduction to Design Patterns- Lecture 8 Topics(03/05/16) Design Patterns Design Pattern In software engineering, a design pattern is a general repeatable solution to
More informationPatterns 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 informationDESIGN PATTERN - INTERVIEW QUESTIONS
DESIGN PATTERN - INTERVIEW QUESTIONS http://www.tutorialspoint.com/design_pattern/design_pattern_interview_questions.htm Copyright tutorialspoint.com Dear readers, these Design Pattern Interview Questions
More informationWhat 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 informationIn this Lecture you will Learn: Design Patterns. Patterns vs. Frameworks. Patterns vs. Frameworks
In this Lecture you will Learn: Design Patterns Chapter 15 What types of patterns have been identified in software development How to apply design patterns during software development The benefits and
More informationConcurrency 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 informationSDC 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 informationCoordination Patterns
Coordination Patterns 1. Coordination Patterns Design Patterns and their relevance for Coordination Oscar Nierstrasz Software Composition Group Institut für Informatik (IAM) Universität Bern oscar@iam.unibe.ch
More informationSafety 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 informationPattern Resources. Lecture 25: Design Patterns. What are Patterns? Design Patterns. Pattern Languages of Programming. The Portland Pattern Repository
Pattern Resources Lecture 25: Design Patterns Kenneth M. Anderson Object-Oriented Analysis and Design CSCI 6448 - Spring Semester, 2003 Pattern Languages of Programming Technical conference on Patterns
More informationDesign 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 informationMicrothread. 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 informationThe 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 informationA 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 information4.1 Introduction Programming preliminaries Constructors Destructors An example... 3
Department of Computer Science Tackling Design Patterns Chapter 4: Factory Method design pattern Copyright c 2016 by Linda Marshall and Vreda Pieterse. All rights reserved. Contents 4.1 Introduction.................................
More informationGlobal 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 informationImplementing 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 informationChapter 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 informationAADL Graphical Editor Design
AADL Graphical Editor Design Peter Feiler Software Engineering Institute phf@sei.cmu.edu Introduction An AADL specification is a set of component type and implementation declarations. They are organized
More informationMicrosoft 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 informationObject-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 informationControl 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 informationECE 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 informationThe following topics will be covered in this course (not necessarily in this order).
The following topics will be covered in this course (not necessarily in this order). Introduction The course focuses on systematic design of larger object-oriented programs. We will introduce the appropriate
More informationConcurrent 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 informationInter-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 informationTuesday, October 4. Announcements
Tuesday, October 4 Announcements www.singularsource.net Donate to my short story contest UCI Delta Sigma Pi Accepts business and ICS students See Facebook page for details Slide 2 1 Design Patterns Design
More informationPerformance 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 informationDesign 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 informationException 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 informationDesign Patterns. Gunnar Gotshalks A4-1
Design Patterns A4-1 On Design Patterns A design pattern systematically names, explains and evaluates an important and recurring design problem and its solution Good designers know not to solve every problem
More informationOMG 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 informationProgramming 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 informationAssignment 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 informationL18.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 informationAn 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 informationChapter 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 informationSYNCHRONIZED 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 informationLecture 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 informationDesign 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 informationObject-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 informationSoftware 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 informationArchitectural 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 informationCS 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 informationTHE 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 informationOracle 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 informationWith 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 informationDesign 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 informationModel-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