Extensible Realm Interfaces 1

Size: px
Start display at page:

Download "Extensible Realm Interfaces 1"

Transcription

1 Extensible Realm Interfaces 1 UT-ADAGE Don Batory Department of Computer Sciences The University of Texas Austin, Texas Abstract The synthesis of avionics software depends critically on components that import and export standardized interfaces. For reasons of practicality and performance, components must be allowed to export operations that only they understand. Thus, the concept of standardized interfaces seems to be at odds with the need for components to export nonstandard operations. In this paper, we show how this apparent conflict has been resolved in four implemented software system generators. We also present a model that explains how the general ideas embodied in these generators apply to ADAGE. 1 Introduction The interface of a realm is a programming interface to a fundamental abstraction of a domain. The composibility of components in ADAGE relies on realms having standardized interfaces. However, standardized interfaces have traditionally meant a cast-in-concrete set of classes and operations that all layers must export. This cannot be the case for generators that have any intension of being realistic; performance and extensibility considerations demand more flexibility. For example, every layer of a system adds new functionality; additional (layer-specific) operations and classes may need to be exported so that higher layers can exploit this functionality. In this paper, we review engineered solutions for realm interface extensibility in four software system generators that conform to the GenVoca model [Bat92]. The exemplars are Genesis (the database domain [Bat92]), Avoca (the network domain [OMa92]), Ficus (the file system domain [Hei93]), and Predator (the data structure domain [Bat93]). We then present an abstract model of extensible realm interfaces that unifies the designs of these solutions and that shows traditional notions of subclassing and subtyping are inadequate to express a fundamental relationship between realms and their components. 2 Exemplars Genesis demonstrated that customized database management systems (DBMSs) could be assembled by composing prewritten layers with standardized interfaces. Genesis relied on a rather rigid (and in hindsight) inflexible way of accommodating interface changes; realm interfaces evolved as new components were written. Thus if a component added an operation O(), then all components of that realm were required to export O(). This did not mean that every component of a realm had to implement O(); implementations were provided only for those components where it made sense to do so. In the case that a com- 1. This research was sponsored, in part, by the U.S. Department of Defense Advanced Research Projects Agency in cooperation with the U.S. Air Force Wright Laboratory Avionics Directorate under contract F C

2 ponent K did not implement O(), the Genesis layout editor DaTE (which corresponds to the ADAGE Architecture Knowledge Representation Language [McA93]) was informed of K s limitation. In this way, DaTE precluded component K from being used in systems that required implementations of O(). This solution was adequate for two reasons. First, components of realms were initially selected on their perceived ability to stress that realm s interface as much as possible. Thus, after a few components were implemented, realm interfaces reached a steady state so that further component additions rarely required interface modifications. Second, the primary goal of Genesis was to demonstrate that software synthesis by layer composition was feasible; performance wasn t an issue and a large user community was not envisioned. Consequently, there was no motivation for having a more scalable means of interface evolution. Avoca was a project that demonstrated that highly layered communications protocols could be more efficient and more extensible than monolithic protocols. Avoca realm interfaces were rigid sets of operations. Microprotocols, the name given to Avoca components, implemented a fixed-set of basic operations for transmitting messages and opening and closing sessions. However, there was one additional operation control(), whose function was much like the Unix ioctl()[bac86]. Every microprotocol could export zero or more control functions that only it understood. Calls to these functions were made through the control() operation which took a standard pair of arguments - a control function name and a pointer to the control function s argument list. The method of a control() operation was basically a switch statement; there was one case for each of the microprotocol s control functions, and a default case for transmitting the control operation to the next lower microprotocol. The advantage of this solution was its generality; it could accommodate any number of control functions per microprotocol and it satisfied - at least syntactically - the requirement for standardized (cast-in-concrete) interfaces. Ficus is an ongoing project at UCLA whose goal is to develop a scalable distributed file system. A key innovation of Ficus is to describe file system implementations as a (nonlinear) stack of plug-compatible layers. Ficus realm interfaces are determined at run-time. All Ficus layers support a fixed-set of core operations. In addition, each layer can export any number of additional operations. The reliance of Ficus on the Unix vnode facility encouraged a uniform treatment of core and layer-specific operations. At run-time, a file system is configured by polling each one of its layers for the set of operations that it exports. The union of all operations from all layers in the file system defined the interface to that file system. (Since Ficus supports only a single realm, all layers of a file system have their realm interface adjusted to the union interface). Since it is not possible to anticipate what operations would be provided by other (possibly yet-to-bewritten) layers, each layer provides (or is automatically provided) a bypass() operation, which simply transmits calls of unrecognized operations to the next lower layer. It appears to be possible that bypass operations can have nondefault methods (i.e., something more than simple transmission is possible). Predator is an ongoing project at the University of Texas to develop a generator for high-performance data structures. Predator realm interfaces are extended at compile-time. A Predator layer is viewed as a transformation between export and import virtual machine interfaces; only those operations for which non-identity mappings are performed need to be defined. Operations that are defined can be core or layer-specific. When Predator is compiled, the union of the interfaces of all layers is taken. Each layer is automatically extended to support the union interface. Operations that are unrecognized by a layer are (in effect) supplied default bodies which transmit the operation to the next lower layer. Default methods can be overridden on a per class basis. 2

3 3 Synthesis There are three striking features that all exemplars share: (1) realm interfaces are inherently open-ended. A realm interface exports a set of core operations plus a configuration-dependent set of layer-specific operations. (2) Component interfaces are inherently elastic; they are automatically extended to match whatever realm interface needs to be supported. (3) Default methods are provided for unanticipated operations. Our goal of this section is to abstract these engineering solutions to expose a critical feature of realms and their components. Let s first consider how realm interfaces are determined. Exemplar generators use a realm (subtyping) lattice like Figure 1a. The top of the lattice is a core realm, which defines the basic classes and operations of a domain abstraction. A subrealm of core has additional classes and/or operations that define a particular specialization, denoted delta. The realm that is used to configure the interface of all components is the (multiple-subtyping) union of all these realms, denoted bottom. Thus, all components are declared to be members of the bottom realm; there are no components that export only the core or delta realms. Figure 1b illustrates these ideas by showing the realm lattice for Predator s DS realm. The size_of_delta subrealm refines the DS_core with the addition of the size_of() operation on containers (i.e., an operation that returns the number of objects in a container). The time_stamp_- delta refines DS_core with the operation that returns the time-stamp that has been assigned to an object by a time-stamping layer. core DS_core delta_1... delta_n size_of_delta time_stamp_delta bottom DS Figure 1a and 1b. Realm lattices Now consider how component implementations are determined. Typically a component provides explicit implementations for only a subset of the operations (and classes) of the bottom realm; the methods of the remaining operations are defined by implicit or explicit defaults. The implicit default is by-pass, meaning that the method for an unanticipated operation is simply to transmit the call verbatim to the next lower layer. Explicit defaults, in general, need to be provided on a per-class basis. As an illustration of the need for per-class defaults, Figure 2 shows a realm and component declaration in P++ [Sin93]. Figure 2a shows how the realm lattice of Figure 1b is declared. Realm DS_core exports two different classes (container and cursor). Realm DS is the subtyping (union) of the DS_core, size_of_delta, and time_stamp_delta realms. Figure 2b shows the monitor component of DS. A monitor is used in concurrent applications [Boo87]; only one task can be executing a monitor operation at a given time. To achieve this, the method of each operation of a monitor is within critical section; to enter a critical section (i.e., to execute monitor operations serially), the calling task must gain access to the monitor s semaphore. The keyword others(...) is a special feature of P++. It pattern-matches with any operation that is not explicitly defined by the enclosing class. In Figure 2a, since no operation is explicitly defined in the container class, others(...) pattern-matches with every operation exported by container. What happens next is that each call to a container operation is wrapped inside a critical region, i.e., a wait() 3

4 is performed on the container semaphore, followed by a call to the actual operation, followed by a signal() on the container operation. In this way, the execution of operations on containers are serialized. Exactly the same happens for operations on the cursor class. Although the methods for others() in both the cursor and container classes look similar (i.e., both wrap wait() and signal() around their lower-level calls), note that the container semaphore is accessed directly in container::others() and indirectly in cursor::others(). It is for this reason that per-class defaults are needed. realm DS_core <class e> class container container (); ; class cursor container cont(); cursor (container *c); void move_to_start (); void advance (); void insert( e& obj ); void remove (); bool end_of_container ();... ; realm size_of_delta : realm DS_core <class e>... realm time_stamp_delta : realm DS_core <class e>... realm DS : realm size_of_delta, time_stamp_delta, DS_core <class e>; component monitor <DS x> : realm DS <class e> class container semaphore S; // add semaphore to container wait()... ; // P and V operations signal()... ; others(...) // default mapping wait(); x::container::others(...); signal(); class cursor others(...) // default mapping cont().wait(); // wait on container semaphore x::cursor::others(...); cont().signal(); Figure 2a and 2b: P++ Definitions The three key features exhibited in exemplar generators can be seen here. (1) Components can export whatever operations they need, in addition to core operations. (2) The presence of the others(...) keyword allows components to automatically adjust their implementation at configuration time to whatever realm interface needs to be supported. Thus, component interfaces and implementations are inherently elastic. (3) The bottom realm, where all components reside as members, defines the standard interface that components must adhere to. Consequently, realm interfaces are inherently open-ended, but are fixed at configuration time. This also means that the software that defines a particular instance of a component is not known until configuration time. The significance of this solution is that the key advantage of standardized interfaces - that is, providing a simple conceptual means by which components can be composed - has not been sacrificed. It is possible to have extensible, configuration-dependent interfaces prior to configuration and after configuration have interfaces standardized. 4

5 4 Relationship to Subtyping and Subclassing The configuration-dependent elasticity of realm and component interfaces is not quite subtyping and not quite subclassing; it is a peculiar generalization of both. In this section, we explain how subtyping and subclassing are not the features that one needs to support realms and components. Not subtyping. Subtyping is sufficient to explain the realm lattice of Figure 1a. For each class of a core realm, there will occur a subtyping lattice akin to Figure 1a. The union of the bottom-most classes of these lattices defines the bottom realm of Figure 1a. In programming languages with subtyping, modules that implement a type are obligated to provide explicit implementations of each operation of that type; that is, there is no ability of modules to appeal to an implicit or explicit default method for operations that might be added after the module is written (i.e., what we have called unanticipated operations). So, subtyping offers only one part of the solution: it explains elastic interfaces but fails to capture elastic implementations. Not subclassing. Subclassing is different than subtyping because it allows methods to be inherited. We have seen that subtyping explains configuration-dependent interfaces, and it follows that subclassing can also explain configuration-dependent interfaces in the same manner. The question is whether subclassing is sufficient to explain the elasticity of component implementations. Unfortunately, subclassing is incapable of expressing default methods for unanticipated operations; there is no way to express in programming languages with subclassing the pattern-matching concept of the P++ others(...) feature. Even to explain how methods could be inherited (assuming that default methods are simply by-pass ) requires considerable contortion. In particular, a common feature of components is that they have unique implementations of core operations. This implies that core of Figure 1a must represent an abstract or virtual class; no methods for core operations are supplied (since none are shared). Instead, each delta inherits core operations and supplies the methods that are specific to a particular component. The bottom realm merges the interfaces and implementations of the core and delta realms by multiple inheritance. While the resulting interface is correct, the implementations are not. First, each delta may contribute a method for each core operation. However, only one will be chosen automatically by multiple inheritance; whatever choice is made will be correct for one component, and wrong for the remaining. Thus, a straightforward inheritance lattice fails to explain the simplest case of component implementation. The only schemes that we have been able to construct that can actually work are horrendously complicated. Even in the limiting case where bypass methods are used, subclassing offers no significant advantage over subtyping in capturing the elasticity of component implementations. 5 ADAGE Considerations The automatic configuration of realm interfaces and component implementations is fundamental to software system generators. With no exceptions known to date, the relationships between realms and their components have been achieved through ad hoc means in prototype generators. (That is, none implement the specific P++ extension of others(...) that we have described in full generality). Because ADAGE has considerably more realms (~40) than databases (~20), data structures (~5), file systems (~2), and networks (~3), the need for a general reconfiguration mechanism will be important. It is possible that LILEANNA [Tra93] has some of the features needed to support reconfiguration easily (e.g., adding operations, etc.). 5

6 6 Conclusions Standardized interfaces is the key to component composition in hierarchical architectures. Such interfaces have been achieved in prototype software system generators by automatically reconfiguring the definition of realm interfaces to match the layers that are present, and to automatically adapt component implementations to the adjusted interface. Default methods, as well as override methods, are needed for elastic implementations of components. The meaning of component memberships within realms is central to reconfiguration processes. Realm lattices and realm membership do not fit the traditional notions of subtyping and subclassing. Attempts to force-fit realm-component relationships into subclassing or subtyping hierarchies succeed only by fixing the set of components in a generator (or generated system) or by casting interfaces in concrete. Both are obstacles to reconfiguration and scalability. 7 References [Bac86] M.J. Bach, The Design of the Unix Operating System, Prentice Hall, [Bat92] [Bat93] [Boo87] [Hei93] D. Batory and S. O Malley, The Design and Implementation of Hierarchical Software Systems with Reusable Components, ACM Transactions on Software Engineering and Methodology, October D. Batory, V. Singhal, M. Sirkin, and J. Thomas, Scalable Software Libraries, ACM SIGSOFT G. Booch, Software Components with Ada: Structures, Tools, and Subsystems, Benjamin- Cummings, J.S. Heidemann and G.J. Popek, File System Development with Stackable Layers, to appear in ACM Transactions on Computer Systems. [McA93] D. McAllester, DSSA-ADAGE Avionics/Architecture Knowledge Representation Language, ADAGE-MIT [Sin93] [Tra93] V. Singhal and D. Batory, P++: A Language for Large-Scale Reusable Software Components, University of Texas at Austin, W. Tracz, LILEANNA: A Parameterized Programming Language, Advances in Software Reuse, Lucca,

Subjectivity and GenVoca Generators

Subjectivity and GenVoca Generators Subjectivity and GenVoca Generators Published in 1996 International Conference on Software Reuse, Orlando, Florida Don Batory Department of Computer Sciences The University of Texas, Austin, Texas 78712

More information

Review Sources of Architecture. Why Domain-Specific?

Review Sources of Architecture. Why Domain-Specific? Domain-Specific Software Architectures (DSSA) 1 Review Sources of Architecture Main sources of architecture black magic architectural visions intuition theft method Routine design vs. innovative design

More information

The ADAGE Avionics Reference Architecture 1

The ADAGE Avionics Reference Architecture 1 To appear in the AIAA Computing in Aerospace 10 Conference, San Antonio, 1995. The ADAGE Avionics Reference Architecture 1 Don Batory Department of Computer Sciences The University of Texas Austin, Texas

More information

Inheritance (Chapter 7)

Inheritance (Chapter 7) Inheritance (Chapter 7) Prof. Dr. Wolfgang Pree Department of Computer Science University of Salzburg cs.uni-salzburg.at Inheritance the soup of the day?! Inheritance combines three aspects: inheritance

More information

Software Architectures

Software Architectures Software Architectures Richard N. Taylor Information and Computer Science University of California, Irvine Irvine, California 92697-3425 taylor@ics.uci.edu http://www.ics.uci.edu/~taylor +1-949-824-6429

More information

Stackable Layers: An Object-Oriented Approach to. Distributed File System Architecture. Department of Computer Science

Stackable Layers: An Object-Oriented Approach to. Distributed File System Architecture. Department of Computer Science Stackable Layers: An Object-Oriented Approach to Distributed File System Architecture Thomas W. Page Jr., Gerald J. Popek y, Richard G. Guy Department of Computer Science University of California Los Angeles

More information

M301: Software Systems & their Development. Unit 4: Inheritance, Composition and Polymorphism

M301: Software Systems & their Development. Unit 4: Inheritance, Composition and Polymorphism Block 1: Introduction to Java Unit 4: Inheritance, Composition and Polymorphism Aims of the unit: Study and use the Java mechanisms that support reuse, in particular, inheritance and composition; Analyze

More information

Communication Protocol Decomposition and Component-based Protocol Submodule

Communication Protocol Decomposition and Component-based Protocol Submodule Communication Protocol Decomposition and Component-based Protocol Submodule Tianzhou Chen 1, Quan Gan 2, Zhaohui Wu 1 College of Computer Science, Zhejiang University, Hangzhou, P.R.CHINA, 310027 1 {tzchen,

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

Validating Component Compositions in Software System Generators

Validating Component Compositions in Software System Generators Published in 1996 International Conference on Software Reuse, Orlando, Florida Validating Component Compositions in Software System Generators Don Batory and Bart J. Geraci Department of Computer Sciences

More information

Component-Based Software Engineering TIP

Component-Based Software Engineering TIP Component-Based Software Engineering TIP X LIU, School of Computing, Napier University This chapter will present a complete picture of how to develop software systems with components and system integration.

More information

Minsoo Ryu. College of Information and Communications Hanyang University.

Minsoo Ryu. College of Information and Communications Hanyang University. Software Reuse and Component-Based Software Engineering Minsoo Ryu College of Information and Communications Hanyang University msryu@hanyang.ac.kr Software Reuse Contents Components CBSE (Component-Based

More information

Spemmet - A Tool for Modeling Software Processes with SPEM

Spemmet - A Tool for Modeling Software Processes with SPEM Spemmet - A Tool for Modeling Software Processes with SPEM Tuomas Mäkilä tuomas.makila@it.utu.fi Antero Järvi antero.jarvi@it.utu.fi Abstract: The software development process has many unique attributes

More information

Keywords: Abstract Factory, Singleton, Factory Method, Prototype, Builder, Composite, Flyweight, Decorator.

Keywords: Abstract Factory, Singleton, Factory Method, Prototype, Builder, Composite, Flyweight, Decorator. Comparative Study In Utilization Of Creational And Structural Design Patterns In Solving Design Problems K.Wseem Abrar M.Tech., Student, Dept. of CSE, Amina Institute of Technology, Shamirpet, Hyderabad

More information

Component-Based Software Engineering TIP

Component-Based Software Engineering TIP Component-Based Software Engineering TIP X LIU, School of Computing, Napier University This chapter will present a complete picture of how to develop software systems with components and system integration.

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

Capturing Design Expertise in Customized Software Architecture Design Environments

Capturing Design Expertise in Customized Software Architecture Design Environments Capturing Design Expertise in Customized Software Architecture Design Environments Robert T. Monroe School of Computer Science, Carnegie Mellon University, Pittsburgh, PA 15213 Abstract: Software architecture

More information

Object-Oriented Concepts and Design Principles

Object-Oriented Concepts and Design Principles Object-Oriented Concepts and Design Principles Signature Specifying an object operation or method involves declaring its name, the objects it takes as parameters and its return value. Known as an operation

More information

Modellistica Medica. Maria Grazia Pia, INFN Genova. Scuola di Specializzazione in Fisica Sanitaria Genova Anno Accademico

Modellistica Medica. Maria Grazia Pia, INFN Genova. Scuola di Specializzazione in Fisica Sanitaria Genova Anno Accademico Modellistica Medica Maria Grazia Pia INFN Genova Scuola di Specializzazione in Fisica Sanitaria Genova Anno Accademico 2002-2003 Lezione 8 OO modeling Design Patterns Introduction Creational Patterns Software

More information

Cadence Technical Analysis of System Verilog DECEMBER 2002

Cadence Technical Analysis of System Verilog DECEMBER 2002 Cadence Technical Analysis of System Verilog DECEMBER 2002 1 CADENCE DESIGN SYSTEMS, INC. Outline Criteria for Language Critique/Design Critique of Existing LRM/Donations Recommendations Moving Forward

More information

Review Architectural Style. Review Style Properties and Benefits

Review Architectural Style. Review Style Properties and Benefits Examples of Domain- and Style-Specific Architectures 1 Review Architectural Style Definitions Architectural styles are recurring organizational patterns and idioms. Established, shared understanding of

More information

CPSC 427: Object-Oriented Programming

CPSC 427: Object-Oriented Programming CPSC 427: Object-Oriented Programming Michael J. Fischer Lecture 22 November 28, 2016 CPSC 427, Lecture 22 1/43 Exceptions (continued) Code Reuse Linear Containers Ordered Containers Multiple Inheritance

More information

JBCDL: An Object-Oriented Component Description Language*

JBCDL: An Object-Oriented Component Description Language* JBCDL: An Object-Oriented Component Description Language* Wu Qiong, Chang Jichuan, Mei Hong, Yang Fuqing (Department of Computer Science & Technology, Peking University, Beijing 100871) Abstract This paper

More information

Design Patterns V Structural Design Patterns, 2

Design Patterns V Structural Design Patterns, 2 Structural Design Patterns, 2 COMP2110/2510 Software Design Software Design for SE September 17, 2008 Department of Computer Science The Australian National University 19.1 1 2 Formal 3 Formal 4 Formal

More information

Design Pattern What is a Design Pattern? Design Pattern Elements. Almas Ansari Page 1

Design Pattern What is a Design Pattern? Design Pattern Elements. Almas Ansari Page 1 What is a Design Pattern? Each pattern Describes a problem which occurs over and over again in our environment,and then describes the core of the problem Novelists, playwrights and other writers rarely

More information

Validating Component Compositions in Software System Generators 1

Validating Component Compositions in Software System Generators 1 Department of Computer Sciences University of Texas at Austin Technical Report TR 95-03 Validating Component Compositions in Software System Generators 1 Don Batory and Bart J. Geraci Department of Computer

More information

Object oriented programming. Encapsulation. Polymorphism. Inheritance OOP

Object oriented programming. Encapsulation. Polymorphism. Inheritance OOP OOP Object oriented programming Polymorphism Encapsulation Inheritance OOP Class concepts Classes can contain: Constants Delegates Events Fields Constructors Destructors Properties Methods Nested classes

More information

ECE 449 OOP and Computer Simulation Lecture 11 Design Patterns

ECE 449 OOP and Computer Simulation Lecture 11 Design Patterns ECE 449 Object-Oriented Programming and Computer Simulation, Fall 2017, Dept. of ECE, IIT 1/60 ECE 449 OOP and Computer Simulation Lecture 11 Design Patterns Professor Jia Wang Department of Electrical

More information

C++ Inheritance and Encapsulation

C++ Inheritance and Encapsulation C++ Inheritance and Encapsulation Private and Protected members Inheritance Type Public Inheritance Private Inheritance Protected Inheritance Special method inheritance 1 Private Members Private members

More information

C++ Important Questions with Answers

C++ Important Questions with Answers 1. Name the operators that cannot be overloaded. sizeof,.,.*,.->, ::,? 2. What is inheritance? Inheritance is property such that a parent (or super) class passes the characteristics of itself to children

More information

Lecture Notes on Programming Languages

Lecture Notes on Programming Languages Lecture Notes on Programming Languages 85 Lecture 09: Support for Object-Oriented Programming This lecture discusses how programming languages support object-oriented programming. Topics to be covered

More information

OBJECT ORIENTED PROGRAMMING USING C++ CSCI Object Oriented Analysis and Design By Manali Torpe

OBJECT ORIENTED PROGRAMMING USING C++ CSCI Object Oriented Analysis and Design By Manali Torpe OBJECT ORIENTED PROGRAMMING USING C++ CSCI 5448- Object Oriented Analysis and Design By Manali Torpe Fundamentals of OOP Class Object Encapsulation Abstraction Inheritance Polymorphism Reusability C++

More information

Self-review Questions

Self-review Questions 7Class Relationships 106 Chapter 7: Class Relationships Self-review Questions 7.1 How is association between classes implemented? An association between two classes is realized as a link between instance

More information

Complexity. Object Orientated Analysis and Design. Benjamin Kenwright

Complexity. Object Orientated Analysis and Design. Benjamin Kenwright Complexity Object Orientated Analysis and Design Benjamin Kenwright Outline Review Object Orientated Programming Concepts (e.g., encapsulation, data abstraction,..) What do we mean by Complexity? How do

More information

Data Structures and Algorithms Design Goals Implementation Goals Design Principles Design Techniques. Version 03.s 2-1

Data Structures and Algorithms Design Goals Implementation Goals Design Principles Design Techniques. Version 03.s 2-1 Design Principles Data Structures and Algorithms Design Goals Implementation Goals Design Principles Design Techniques 2-1 Data Structures Data Structure - A systematic way of organizing and accessing

More information

Chapter 5 Object-Oriented Programming

Chapter 5 Object-Oriented Programming Chapter 5 Object-Oriented Programming Develop code that implements tight encapsulation, loose coupling, and high cohesion Develop code that demonstrates the use of polymorphism Develop code that declares

More information

AOSA - Betriebssystemkomponenten und der Aspektmoderatoransatz

AOSA - Betriebssystemkomponenten und der Aspektmoderatoransatz AOSA - Betriebssystemkomponenten und der Aspektmoderatoransatz Results obtained by researchers in the aspect-oriented programming are promoting the aim to export these ideas to whole software development

More information

JOURNAL OF OBJECT TECHNOLOGY

JOURNAL OF OBJECT TECHNOLOGY JOURNAL OF OBJECT TECHNOLOGY Online at http://www.jot.fm. Published by ETH Zurich, Chair of Software Engineering JOT, 2005 Vol. 4, No. 3 Special issue: 6th GPCE Young Researchers Workshop 2004 Feature

More information

Type Checking in COOL (II) Lecture 10

Type Checking in COOL (II) Lecture 10 Type Checking in COOL (II) Lecture 10 1 Lecture Outline Type systems and their expressiveness Type checking with SELF_TYPE in COOL Error recovery in semantic analysis 2 Expressiveness of Static Type Systems

More information

Chapter 8 The Enhanced Entity- Relationship (EER) Model

Chapter 8 The Enhanced Entity- Relationship (EER) Model Chapter 8 The Enhanced Entity- Relationship (EER) Model Copyright 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 8 Outline Subclasses, Superclasses, and Inheritance Specialization

More information

Strict Inheritance. Object-Oriented Programming Spring 2008

Strict Inheritance. Object-Oriented Programming Spring 2008 Strict Inheritance Object-Oriented Programming 236703 Spring 2008 1 Varieties of Polymorphism P o l y m o r p h i s m A d h o c U n i v e r s a l C o e r c i o n O v e r l o a d i n g I n c l u s i o n

More information

Wrapping a complex C++ library for Eiffel. FINAL REPORT July 1 st, 2005

Wrapping a complex C++ library for Eiffel. FINAL REPORT July 1 st, 2005 Wrapping a complex C++ library for Eiffel FINAL REPORT July 1 st, 2005 Semester project Student: Supervising Assistant: Supervising Professor: Simon Reinhard simonrei@student.ethz.ch Bernd Schoeller Bertrand

More information

Introducing MESSIA: A Methodology of Developing Software Architectures Supporting Implementation Independence

Introducing MESSIA: A Methodology of Developing Software Architectures Supporting Implementation Independence Introducing MESSIA: A Methodology of Developing Software Architectures Supporting Implementation Independence Ratko Orlandic Department of Computer Science and Applied Math Illinois Institute of Technology

More information

Domain Engineering And Variability In The Reuse-Driven Software Engineering Business.

Domain Engineering And Variability In The Reuse-Driven Software Engineering Business. OBM 7 -draft 09/02/00 1 Domain Engineering And Variability In The Reuse-Driven Software Engineering Business. Martin L. Griss, Laboratory Scientist, Hewlett-Packard Laboratories, Palo Alto, CA. Effective

More information

Instantiation of Template class

Instantiation of Template class Class Templates Templates are like advanced macros. They are useful for building new classes that depend on already existing user defined classes or built-in types. Example: stack of int or stack of double

More information

Lecture Outline. Type systems and their expressiveness. Type Checking in COOL (II) Type checking with SELF_TYPE in COOL

Lecture Outline. Type systems and their expressiveness. Type Checking in COOL (II) Type checking with SELF_TYPE in COOL Lecture Outline Type systems and their expressiveness Type Checking in COOL (II) Type checking with SELF_TYPE in COOL Error recovery in semantic analysis Adapted from Lectures by Profs. Alex Aiken and

More information

Software Reuse and Component-Based Software Engineering

Software Reuse and Component-Based Software Engineering Software Reuse and Component-Based Software Engineering Minsoo Ryu Hanyang University msryu@hanyang.ac.kr Contents Software Reuse Components CBSE (Component-Based Software Engineering) Domain Engineering

More information

Analysis and Design with the Universal Design Pattern

Analysis and Design with the Universal Design Pattern Analysis and Design with the Universal Design Pattern by Koni Buhrer Software Engineering Specialist Rational Software Developing large software systems is notoriously difficult and unpredictable. Software

More information

Design Pattern: Composite

Design Pattern: Composite Design Pattern: Composite Intent Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly. Motivation

More information

Introduction. ADL Roles

Introduction. ADL Roles Architecture Description Languages (ADLs) 1 Introduction Architecture is key to reducing development costs development focus shifts to coarse-grained elements Formal architectural models are needed ADLs

More information

BBM 102 Introduction to Programming II Spring Inheritance

BBM 102 Introduction to Programming II Spring Inheritance BBM 102 Introduction to Programming II Spring 2018 Inheritance 1 Today Inheritance Notion of subclasses and superclasses protected members UML Class Diagrams for inheritance 2 Inheritance A form of software

More information

What are the characteristics of Object Oriented programming language?

What are the characteristics of Object Oriented programming language? What are the various elements of OOP? Following are the various elements of OOP:- Class:- A class is a collection of data and the various operations that can be performed on that data. Object- This is

More information

CS:2820 (22C:22) Object-Oriented Software Development

CS:2820 (22C:22) Object-Oriented Software Development The University of Iowa CS:2820 (22C:22) Object-Oriented Software Development! Spring 2015 Software Complexity by Cesare Tinelli Complexity Software systems are complex artifacts Failure to master this

More information

The architecture of Eiffel software 3.1 OVERVIEW classes clusters systems

The architecture of Eiffel software 3.1 OVERVIEW classes clusters systems 3 Draft 5.02.00-0, 15 August 2005 (Santa Barbara). Extracted from ongoing work on future third edition of Eiffel: The Language. Copyright Bertrand Meyer 1986-2005. Access restricted to purchasers of the

More information

Interface evolution via public defender methods

Interface evolution via public defender methods Interface evolution via public defender methods Brian Goetz Second draft, May 2010 1. Problem statement Once published, it is impossible to add methods to an interface without breaking existing implementations.

More information

Cocoa Design Patterns. Erik M. Buck October 17, 2009

Cocoa Design Patterns. Erik M. Buck October 17, 2009 Cocoa Design Patterns Erik M. Buck October 17, 2009 Topics n What is a design pattern? n Why Focus on design patterns? n What is the Model View Controller design pattern? n Using MVC n When wouldn t you

More information

Object Model. Object Orientated Analysis and Design. Benjamin Kenwright

Object Model. Object Orientated Analysis and Design. Benjamin Kenwright Object Model Object Orientated Analysis and Design Benjamin Kenwright Outline Submissions/Quizzes Review Object Orientated Programming Concepts (e.g., encapsulation, data abstraction,..) What do we mean

More information

4 CoffeeStrainer Virtues and Limitations

4 CoffeeStrainer Virtues and Limitations In this chapter, we explain CoffeeStrainer s virtues and limitations and the design decisions that led to them. To illustrate the points we want to make, we contrast CoffeeStrainer with a hypothetical,

More information

Chapter 8: Enhanced ER Model

Chapter 8: Enhanced ER Model Chapter 8: Enhanced ER Model Subclasses, Superclasses, and Inheritance Specialization and Generalization Constraints and Characteristics of Specialization and Generalization Hierarchies Modeling of UNION

More information

Abstraction. Design fundamentals in OO Systems. Fundamental Software Development Principles

Abstraction. Design fundamentals in OO Systems. Fundamental Software Development Principles Abstraction Design fundamentals in OO Systems Tool for abstraction: object Object structure: properties and values for those properties operations to query and update those properties We refer to the collection

More information

1: Introduction to Object (1)

1: Introduction to Object (1) 1: Introduction to Object (1) 김동원 2003.01.20 Overview (1) The progress of abstraction Smalltalk Class & Object Interface The hidden implementation Reusing the implementation Inheritance: Reusing the interface

More information

Stitched Together: Transitioning CMS to a Hierarchical Threaded Framework

Stitched Together: Transitioning CMS to a Hierarchical Threaded Framework Stitched Together: Transitioning CMS to a Hierarchical Threaded Framework CD Jones and E Sexton-Kennedy Fermilab, P.O.Box 500, Batavia, IL 60510-5011, USA E-mail: cdj@fnal.gov, sexton@fnal.gov Abstract.

More information

Lecture Outline. Type systems and their expressiveness. Type Checking in COOL (II) Type checking with SELF_TYPE in COOL

Lecture Outline. Type systems and their expressiveness. Type Checking in COOL (II) Type checking with SELF_TYPE in COOL Lecture Outline Type systems and their expressiveness Type Checking in COOL (II) Lecture 10 Type checking with SELF_TYPE in COOL Error recovery in semantic analysis Prof. Aiken CS 143 Lecture 10 1 Prof.

More information

Chapter 5: Procedural abstraction. Function procedures. Function procedures. Proper procedures and function procedures

Chapter 5: Procedural abstraction. Function procedures. Function procedures. Proper procedures and function procedures Chapter 5: Procedural abstraction Proper procedures and function procedures Abstraction in programming enables distinction: What a program unit does How a program unit works This enables separation of

More information

Metaprogrammable Toolkit for Model-Integrated Computing

Metaprogrammable Toolkit for Model-Integrated Computing Metaprogrammable Toolkit for Model-Integrated Computing Akos Ledeczi, Miklos Maroti, Gabor Karsai and Greg Nordstrom Institute for Software Integrated Systems Vanderbilt University Abstract Model-Integrated

More information

Compositional Model Based Software Development

Compositional Model Based Software Development Compositional Model Based Software Development Prof. Dr. Bernhard Rumpe http://www.se-rwth.de/ Seite 2 Our Working Groups and Topics Automotive / Robotics Autonomous driving Functional architecture Variability

More information

Using Hyper/J to implement Product-Lines: A Case Study

Using Hyper/J to implement Product-Lines: A Case Study Using Hyper/J to implement Product-Lines: A Case Study Roberto E. Lopez-Herrejon and Don Batory Department of Computer Sciences The University of Texas Austin, Texas 78712 {rlopez,batory@cs.utexas.edu

More information

Implementing Interfaces. Marwan Burelle. July 20, 2012

Implementing Interfaces. Marwan Burelle. July 20, 2012 Implementing marwan.burelle@lse.epita.fr http://www.lse.epita.fr/ July 20, 2012 Outline 1 2 3 4 Quick Overview of System oriented programming language Variant of C with a rationnalized syntax. Syntactic

More information

Reengineering a Complex Application Using a Scalable Data Structure Compiler 1

Reengineering a Complex Application Using a Scalable Data Structure Compiler 1 To be presented at the 99 ACM SIGSOFT Conference, New Orleans Reengineering a Complex Application Using a Scalable Data Structure Compiler Don Batory, Jeff Thomas, and Marty Sirkin Department of Computer

More information

Multi-Dimensional Separation of Concerns and IBM Hyper/J

Multi-Dimensional Separation of Concerns and IBM Hyper/J Multi-Dimensional Separation of Concerns and IBM Hyper/J Technical Research Report Barry R. Pekilis Bell Canada Software Reliability Laboratory Electrical and Computer Engineering University of Waterloo

More information

Strict Inheritance. Object-Oriented Programming Winter

Strict Inheritance. Object-Oriented Programming Winter Strict Inheritance Object-Oriented Programming 236703 Winter 2014-5 1 1 Abstractions Reminder A class is an abstraction over objects A class hierarchy is an abstraction over classes Similar parts of different

More information

Polymorphism. Arizona State University 1

Polymorphism. Arizona State University 1 Polymorphism CSE100 Principles of Programming with C++, Fall 2018 (based off Chapter 15 slides by Pearson) Ryan Dougherty Arizona State University http://www.public.asu.edu/~redoughe/ Arizona State University

More information

Exception Handling Introduction. Error-Prevention Tip 13.1 OBJECTIVES

Exception Handling Introduction. Error-Prevention Tip 13.1 OBJECTIVES 1 2 13 Exception Handling It is common sense to take a method and try it. If it fails, admit it frankly and try another. But above all, try something. Franklin Delano Roosevelt O throw away the worser

More information

Modeling variability in software product lines with the variation point model

Modeling variability in software product lines with the variation point model Science of Computer Programming 53 (2004) 305 331 www.elsevier.com/locate/scico Modeling variability in software product lines with the variation point model Diana L. Webber a,, Hassan Gomaa b a Booz Allen

More information

CH. 2 OBJECT-ORIENTED PROGRAMMING

CH. 2 OBJECT-ORIENTED PROGRAMMING CH. 2 OBJECT-ORIENTED PROGRAMMING ACKNOWLEDGEMENT: THESE SLIDES ARE ADAPTED FROM SLIDES PROVIDED WITH DATA STRUCTURES AND ALGORITHMS IN JAVA, GOODRICH, TAMASSIA AND GOLDWASSER (WILEY 2016) OBJECT-ORIENTED

More information

Java Object Oriented Design. CSC207 Fall 2014

Java Object Oriented Design. CSC207 Fall 2014 Java Object Oriented Design CSC207 Fall 2014 Design Problem Design an application where the user can draw different shapes Lines Circles Rectangles Just high level design, don t write any detailed code

More information

Lethbridge/Laganière 2005 Chapter 9: Architecting and designing software 6

Lethbridge/Laganière 2005 Chapter 9: Architecting and designing software 6 Trying to deal with something big all at once is normally much harder than dealing with a series of smaller things Separate people can work on each part. An individual software engineer can specialize.

More information

02 Features of C#, Part 1. Jerry Nixon Microsoft Developer Evangelist Daren May President & Co-founder, Crank211

02 Features of C#, Part 1. Jerry Nixon Microsoft Developer Evangelist Daren May President & Co-founder, Crank211 02 Features of C#, Part 1 Jerry Nixon Microsoft Developer Evangelist Daren May President & Co-founder, Crank211 Module Overview Constructing Complex Types Object Interfaces and Inheritance Generics Constructing

More information

CS111: PROGRAMMING LANGUAGE II

CS111: PROGRAMMING LANGUAGE II 1 CS111: PROGRAMMING LANGUAGE II Computer Science Department Lecture 8(b): Abstract classes & Polymorphism Lecture Contents 2 Abstract base classes Concrete classes Polymorphic processing Dr. Amal Khalifa,

More information

Promoting Component Reuse by Separating Transmission Policy from Implementation

Promoting Component Reuse by Separating Transmission Policy from Implementation Promoting Component Reuse by Separating Transmission Policy from Implementation Scott M. Walker scott@dcs.st-and.ac.uk Graham N. C. Kirby graham@dcs.st-and.ac.uk Alan Dearle al@dcs.st-and.ac.uk Stuart

More information

From Goal-Oriented Requirements to Architectural Prescriptions: The Preskriptor Process

From Goal-Oriented Requirements to Architectural Prescriptions: The Preskriptor Process From Goal-Oriented Requirements to Architectural Prescriptions: The Preskriptor Process Manuel Brandozzi UT ARISE Advanced Research in Software Engineering The University of Texas at Austin manuelbr@mail.utexas.edu

More information

Design Patterns Design patterns advantages:

Design Patterns Design patterns advantages: Design Patterns Designing object-oriented software is hard, and designing reusable object oriented software is even harder. You must find pertinent objects factor them into classes at the right granularity

More information

Rules and syntax for inheritance. The boring stuff

Rules and syntax for inheritance. The boring stuff Rules and syntax for inheritance The boring stuff The compiler adds a call to super() Unless you explicitly call the constructor of the superclass, using super(), the compiler will add such a call for

More information

Implementing Software Connectors through First-Class Methods

Implementing Software Connectors through First-Class Methods Implementing Software Connectors through First-Class Methods Cheoljoo Jeong and Sangduck Lee Computer & Software Technology Laboratory Electronics and Telecommunications Research Institute Taejon, 305-350,

More information

Object-Oriented Design

Object-Oriented Design Object-Oriented Design Lecture 14: Design Workflow Department of Computer Engineering Sharif University of Technology 1 UP iterations and workflow Workflows Requirements Analysis Phases Inception Elaboration

More information

Cpt S 122 Data Structures. Course Review Midterm Exam # 2

Cpt S 122 Data Structures. Course Review Midterm Exam # 2 Cpt S 122 Data Structures Course Review Midterm Exam # 2 Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Midterm Exam 2 When: Monday (11/05) 12:10 pm -1pm

More information

Towards Reusable Heterogeneous Data-Centric Disentangled Parts

Towards Reusable Heterogeneous Data-Centric Disentangled Parts Towards Reusable Heterogeneous Data-Centric Disentangled Parts Michael Reinsch and Takuo Watanabe Department of Computer Science, Graduate School of Information Science and Technology, Tokyo Institute

More information

IBS Software Services Technical Interview Questions. Q1. What is the difference between declaration and definition?

IBS Software Services Technical Interview Questions. Q1. What is the difference between declaration and definition? IBS Software Services Technical Interview Questions Q1. What is the difference between declaration and definition? The declaration tells the compiler that at some later point we plan to present the definition

More information

CS558 Programming Languages Winter 2013 Lecture 8

CS558 Programming Languages Winter 2013 Lecture 8 OBJECT-ORIENTED PROGRAMMING CS558 Programming Languages Winter 2013 Lecture 8 Object-oriented programs are structured in terms of objects: collections of variables ( fields ) and functions ( methods ).

More information

Design Process Overview. At Each Level of Abstraction. Design Phases. Design Phases James M. Bieman

Design Process Overview. At Each Level of Abstraction. Design Phases. Design Phases James M. Bieman CS314, Colorado State University Software Engineering Notes 4: Principles of Design and Architecture for OO Software Focus: Determining the Overall Structure of a Software System Describes the process

More 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

For 100% Result Oriented IGNOU Coaching and Project Training Call CPD TM : ,

For 100% Result Oriented IGNOU Coaching and Project Training Call CPD TM : , Course Code : MCS-032 Course Title : Object Oriented Analysis and Design Assignment Number : MCA (3)/032/Assign/2014-15 Assignment Marks : 100 Weightage : 25% Last Dates for Submission : 15th October,

More information

Modellistica Medica. Maria Grazia Pia, INFN Genova. Scuola di Specializzazione in Fisica Sanitaria Genova Anno Accademico

Modellistica Medica. Maria Grazia Pia, INFN Genova. Scuola di Specializzazione in Fisica Sanitaria Genova Anno Accademico Modellistica Medica Maria Grazia Pia INFN Genova Scuola di Specializzazione in Fisica Sanitaria Genova Anno Accademico 2002-2003 Lezione 9 OO modeling Design Patterns Structural Patterns Behavioural Patterns

More information

ECE 3574: Dynamic Polymorphism using Inheritance

ECE 3574: Dynamic Polymorphism using Inheritance 1 ECE 3574: Dynamic Polymorphism using Inheritance Changwoo Min 2 Administrivia Survey on class will be out tonight or tomorrow night Please, let me share your idea to improve the class! 3 Meeting 10:

More information

Object-Oriented Software Engineering Practical Software Development using UML and Java

Object-Oriented Software Engineering Practical Software Development using UML and Java Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 5: Modelling with Classes Lecture 5 5.1 What is UML? The Unified Modelling Language is a standard graphical

More information

Study of Component Based Software Engineering

Study of Component Based Software Engineering Study of Based Software Ishita Verma House No.4, Village Dayalpur Karawal Nagar Road Delhi-110094, India ish.v.16@gmail.com Abstract based engineering is an approach of development that emphasizes the

More information

Contents. I. Classes, Superclasses, and Subclasses. Topic 04 - Inheritance

Contents. I. Classes, Superclasses, and Subclasses. Topic 04 - Inheritance Contents Topic 04 - Inheritance I. Classes, Superclasses, and Subclasses - Inheritance Hierarchies Controlling Access to Members (public, no modifier, private, protected) Calling constructors of superclass

More information

Utilizing a Common Language as a Generative Software Reuse Tool

Utilizing a Common Language as a Generative Software Reuse Tool Utilizing a Common Language as a Generative Software Reuse Tool Chris Henry and Stanislaw Jarzabek Department of Computer Science School of Computing, National University of Singapore 3 Science Drive,

More information

R/3 System Object-Oriented Concepts of ABAP

R/3 System Object-Oriented Concepts of ABAP R/3 System Object-Oriented Concepts of ABAP Copyright 1997 SAP AG. All rights reserved. No part of this brochure may be reproduced or transmitted in any form or for any purpose without the express permission

More information

STUDY NOTES UNIT 1 - INTRODUCTION TO OBJECT ORIENTED PROGRAMMING

STUDY NOTES UNIT 1 - INTRODUCTION TO OBJECT ORIENTED PROGRAMMING OBJECT ORIENTED PROGRAMMING STUDY NOTES UNIT 1 - INTRODUCTION TO OBJECT ORIENTED PROGRAMMING 1. Object Oriented Programming Paradigms 2. Comparison of Programming Paradigms 3. Basic Object Oriented Programming

More information