Dynamic Instantiation-Checking Components

Size: px
Start display at page:

Download "Dynamic Instantiation-Checking Components"

Transcription

1 Dynamic Instantiation-Checking Components Nigamanth Sridhar Electrical and Computer Engineering Cleveland State University 318 Stilwell Hall, 2121 Euclid Ave Cleveland OH ABSTRACT Parameterization is an effective technique for building flexible, reusable software. When dealing with parameterized components, an important concern is the time at which parameters are bound. Many languages provide syntactic support for parameterized components; this mode of parameterization can be called static parameterization. In order to be able to support dynamic reconfiguration, the Service Facility pattern has been proposed as an enabling technology for dynamic parameterization. However, static parameterization has the advantage of strong type-checking that dynamic parameterization does not. In this paper, we present DynInstaCheck a tool that automatically instruments dynamically bound parameterized components with run-time checking code that ensures type-safe parameter binding. The source instrumentation is done in a non-intrusive way, using aspect-oriented programming. 1. INTRODUCTION Traditionally, parameterization has been used as a technique for building generic data types, especially popular in the domain of data collections, such as stacks, queues, lists, etc. This view has been further popularized by template class libraries such as the C++ Standard Template Library (STL) [8]. The recent proposals for generics in Java [1] and the.net common language runtime [6] also endorse this view of parameterized components. The essential idea with generic data collection components is that the component designer simply designs the collection while leaving some parts of the component (generally, the kind of items in the collection) unspecified. Later, when a client program wants to use such a generic component, it instantiates 1 the template by filling in the incomplete 1 We use the word instantiation to mean the setting of all parameters of a template. We refer to what is often called instantiation in the OO literature creation of a new object of a given class as object creation in order to avoid confusion. parts of the component definition, thereby resulting in a complete definition for the component. Several languages provide syntactic constructs for building parameterized components. For example, in the case of C++ templates (as with Ada generics, and similar languagesupplied parameterized programming support constructs), integration is done at compile time. So actual template parameters are bound to the formals at compile time. We call this mode of parameterization static parameterization, since the binding of parameters to a template remains static for its lifetime. Each such instantiated template defines a new type that joins the existing types of the program. At the time of instantiating a template, the client program defines a new type. This new type is added to the set of types for this compilation unit. From now on, all variables declared of this type are governed by the strong typing rules of the language. Further, before a template can be used, it must be instantiated. Without the instantiation step, a program that tries to use a template will not compile. The compiler, when it starts checking a particular program, expects all the templates that the program uses to be properly instantiated with actual parameters. While static parameterization offers a way for component designers to delay the decision of which particular actual parameters to bind to each formal template parameter, the decision cannot be postponed beyond compile time. Once the binding has been done, and the client program has been compiled into object code, no changes are possible to the binding without recompiling the client program. In some situations, however, the decision of which parameter to bind to a particular template is not apparent until run time. Further, such decisions may have to be changed during execution of the system. With statically-bound templates, such delay in commitment [12] is impossible. What we need in such cases is to be able to postpone the binding of parameters until run time. We call this mode of parameterization dynamic parameterization. The Service Facility pattern [9] is one approach to building components that support dynamic parameterization. However, this mode of parameterization brings along with it an important problem that of type-checking parameters. In the case of static parameterization, the compiler does the job of enforcing type restrictions at the time of binding. This is not possible in the case of dynamic parameterization. Since the parameters are only bound at run-time, we need some form of run-time checking to enforce type restrictions. This is the main contribution of

2 this paper. We present a tool that can automatically instrument dynamically-bound parameterized components to include these run-time checks before deployment. The tool, named DynInstaCheck, examines a given Serf component and its parameters, and generates an instantiationchecking component. The output of the tool is AspectJ code that enforces parameter binding rules. Aspect-oriented programming enables us to modularize these parameter binding rules into their own concern, without affecting the application code. The rest of the paper is organized as follows. In Section 2, we outline the type restrictions that need to be satisfied when binding parameters, and how compiler support helps in enforcing these restrictions. Section 3 presents the approach to enforcing these type restrictions in the case of dynamic parameterization. In Section 4, we present DynInstaCheck: a tool that automatically instruments components to perform the dynamic type-checking of parameters. After presenting some related work in Section 5, we conclude with a summary of our contributions and some directions for future work in Section TYPE-SAFE PARAMETERIZATION When using static parameterization, the compiler ensures that the template bindings are all legitimate from the point of view of type-correctness of parameter bindings. Before certifying a particular template as valid, a template-aware compiler performs the following checks: R1. Enforcing Instantiation. Before it is used in a client program, a template must be fully instantiated all parameters to the template must have been supplied, R2. Enforcing Restrictions. The actual template parameters result in type-correct bodies for the template s methods, and R3. Enforcing Stability of Parameters. Once parameters have been bound to a template, the bindings remain as is throughout the lifetime of the program. R1. Enforcing Instantiation. A template class cannot be used to declare and create objects before all of its formal template parameters have been bound to actuals. In a sense, the type that the template class defines is incomplete before the parameters are bound. The compiler therefore does not allow the declaration of objects of a template class before it is fully instantiated. R2. Enforcing Restrictions. Consider the code snippet of a Java generic class Sorter presented in Listing 1. When the Sorter generic is instantiated with PayrollRec, the compiler checks to see if the comparison operation (line 5) is supported by PayrollRec. If the comparison operation is not supported, the compiler will throw an error, and the binding will not be completed. R3. Enforcing Stability of Parameters. Since the static binding of parameters defines a new static type for the program, the parameters stay bound for the lifetime of the program. Listing 1: Sorter Generic Class written in Java 1 public class Sorter<Item> { 2 /*... */ 3 public void sort() { 4 /*... */ 5 if (x > y) // x and y are of type Item 6 /*... */ 7 } 8 } public class PayrollRec { /*... */ } Sorter<PayrollRec> payrollrecsorter; 3. DYNAMIC PARAMETERIZATION The Strategy design pattern [3] provides a way for building dynamically-bound parameterized components. The template component plays the role of Context and the parameters to the template are supplied as Strategies to the Context object. This way, the template object can be written to depend on the interfaces of the parameters (AbstractStrategies), and can be fully specialized after deployment, when the choice of parameters is clear. This is the approach taken by the Service Facility pattern [11], which is a composition of design patterns that enables the construction of dynamically-bound parameterized software components. The pattern composition differentiates between two kinds of objects Service Facility objects (Serfs for short), and Data objects. Serf objects create data objects (such as in Abstract Factory) and act as proxies for these data objects (Proxy pattern). The power of the parameterization mechanism in the Serf approach is similar to the power of C++ templates. The main difference is the binding time. Before a Serf can be used to create and operate on objects, all of its parameters have to be set. In order to do this, each Serf class has methods of the form setparameter corresponding to each parameter (named Parameter). Since the Serf approach binds parameters to templates at run-time, it also supports rebinding of parameters in the event that any of the decisions change. However, the pattern itself does not include support for type-checking parameter bindings. In the remainder of this section, we will describe the proof obligations that are needed to ensure correct dynamic parameter bindings in Serfs. Before doing that, however, we take a short detour to convince the reader that compiler checks are not sufficient to enforce the above requirements when dealing with dynamic binding. Since Serfs are really just objects at the linguistic level, as soon as the constructor has been invoked by the client and an object has been allocated, the Java/C# compiler considers the Serf object ready for use. However, under the semantics of the Serf design pattern, this Serf may not be ready for use yet. The reason is that there may be template parameters that need to be supplied to the Serf. So until these parameters have been set, the client should not be allowed to invoke any methods on the Serf, including create(). Since the template parameters are really just data members of a run-time object, the compiler currently does not check for these properties being set. One could instrument the compiler to perform additional static analysis to ensure that every path leading to a method call on the Serf

3 already has lines of code that set the template parameters. This would require that we had special syntax to distinguish data members that represent template parameter from regular data members. However, we would like to be able to perform these checks without making changes to the language or the compiler, so that the solution is immediately deployable. R1. Enforcing Instantiation. Before the Serf can be used to create data objects, the Serf must be properly instantiated, i.e., all the template parameters must be bound. For each template parameter, the data member that corresponds to that parameter must have been set to a value other than its initial value. In this case, we will just use the initial value conventions of Java for example, Object type variables are initialized to be null. In order to make sure that by the time a Serf is used, it is properly instantiated, there needs to be a check performed at the beginning of each method (including the create() method) to make sure that all the parameters have actually been set. So clients that want to use a Serf object have to first instantiate it by supplying appropriate actual parameters. If the Serf is not fully instantiated, an exception will be thrown. R2. Enforcing Restrictions. In the foregoing discussion, we have presented one way of making sure that a Serf object is actually instantiated before it is used. However, how do we make sure that the parameters that have been supplied are appropriate from the type-correctness standpoint? The solution we use is to embed the restrictions on parameters in the specification of the component. Each of the parameters to the Serf may be annotated with restrictions. As an example, consider a component StackExternalSorter that is designed to sort stacks on disk. So a requirement is that any items in a stack that this component is used to sort must support a comparison operation, and the items must be serializable. The specification of this ItemSerf parameter will therefore include an annotation that items must implement the ISerializable and IComparable interfaces. These checks are performed at run-time, and if they are not met, an exception is raised, and the program halts. R3. Enforcing Stability of Parameters. This check ensures that the component satisfies the requirement that once a parameter has been set, it cannot be unset, or changed. This condition can be enforced by requiring that the setparameter method for any Parameter can only be invoked once. We do this by including another clause in the pre-condition of every setparameter method to check if the Parameter is null. 3.1 Discussion Let us briefly examine the value of these exceptions raised. After all, if there were none of these checks, the program would raise an exception anyway at some point. How then is our approach any more valuable than the default case? The primary difference is when the exception is raised. By checking and enforcing these rules early enough in the execution of the program, the exceptions that we raise from our instantiation-checking component will be more useful in order to gracefully exit the program. This approach also protects the application from losing any valuable data that Listing 2: A serializable hash map component 1 public interface SerialHMapSerf extends Serf { 2 /*-- dis implements Serializable --*/ 3 /*-- dis implements AreEqual --*/ 4 public setditemserf(serf dis); 5 /*-- ris implements Serializable --*/ 6 public setritemserf(serf ris); 7 8 public void define(data d, Data r); 9 public void undefine(data d); 10 public boolean isdefined(data d); 11 public Data lookup(data d); 12 public int size(); 13 } may have been processed before a particular violation is detected during the normal course of the program. 4. INSTANTIATION-CHECKING COMPO- NENTS In this section, we present DynInstaCheck 2 a tool that generates the run-time checks that are needed to enforce legal parameter bindings in dynamically-bound parameterized components. The tool provides a graphical user interface that allows the developer of the Serf to provide template parameter information. This information is encoded in XML, and is XML encoding is then used to generate AspectJ code that will actually perform the checking upon deployment. Enforcing legal parameter bindings is an orthogonal concern relative to the application that the Serf component is part of. Keeping with the principles of separation of concerns, therefore, this dimension of the Serf must be kept separate from the application code. Moreover, these runtime checks may only be needed while the system that the Serf is being used in is being developed. Once the entire system has been developed and is ready for final deployment, these checks should not be necessary. In fact, including such run-time checks in a production system will cause an unnecessary performance burden. The instantiation checking code should therefore be modularized separately from the rest of the application. Aspect-oriented programming [7] provides an ideal way to separate the instantiation checking code into its own module, in such a way that there is no interference between the checking code and the application code. Moreover, before the final production system is deployed, the aspects that enforce legal instantiation can be removed from the system; any errors relating to illegal parameter bindings would have been resolved during the testing phase. Consider the SerialHMapSerf component presented in Listing 2. The component defines a serializable hash map, and takes two parameters the type of domain items (DItem- Serf) and the type of range items (RItemSerf) that the hash map will hold. There are two restrictions on the domain item parameter: since the hash map has to be serializable, each individual item that the hash map holds should also be serializable (implements the Serializable interface). Moreover, in order for the lookup and isdefined operations to find locate a particular domain item in the hash map, the do- 2 The tool, along with source code, is available for download at

4 Listing 3: XML input to DynInstaCheck describing the serializable hash map component 1 <component> 2 <name>serialhmapserf</name> 3 <parameter> 4 <name>ditemserf</name> 5 <restriction> 6 <relation>implements</relation> 7 <dependence>serializable</dependence> 8 </restriction> 9 <restriction> 10 <relation>implements</relation> 11 <dependence>areequal</dependence> 12 </restriction> 13 </parameter> 14 <parameter> 15 <name>ritemserf</name> 16 <restriction> 17 <relation>implements</relation> 18 <dependence>serializable</dependence> 19 </restriction> 20 </parameter> 21 </component> main item type must support the AreEqual interface that supports value-based equality testing. The range item parameter must be serializable. The DynInstaCheck interface takes as input the following: The name of the Serf component, The names of all template parameters to the Serf, and Any type restrictions on the parameters. Using these pieces of information, the tool creates a profile of the Serf with respect to its parameters, and their characteristics. This profile is encoded as an XML document. The XML parameter profile of SerialHMapSerf is shown in Listing 3. The second phase of DynInstaCheck uses the XML profile of the Serf created in the previous phase in order to generate AspectJ code that enforces legal parameter bindings for the Serf. For each of the parameters specified in the XML profile, the restrictions R1 R3 are enforced. Listing 4 shows the instantiation checking aspect SerialHMapSerf IC, which enforces legal template parameter bindings for SerialHMapSerf. The SerialHMapSerf IC aspect defines three pointcuts. The first pointcut (setditemserfmethod, lines 5 8 captures all calls to the setditemserf method. We generate this pointcut following the naming convention that the Service Facility pattern composition prescribes: template parameters are bound using methods of the form setparameter for each Parameter. Similarly, the second pointcut (setritemserfmethod, lines 10 13) captures calls to the serritemserf method. The last pointcut (serfmethods, lines 15 17) captures all other methods in the Serf excluding the methods that define template parameters. Restriction R1 is enforced by the before advice in lines This advice is executed before every component method in SerialHMapSerf and checks to see if each one of the parameters to the Serf has been set. In order to check this, the aspect maintains a private data member to represent each template parameter to the Serf (lines 2 and 3). These data Listing 4: Aspect that performs instantiation checks for SerialHMapSerf 1 public aspect SerialHMapSerf_IC { 2 private Serf DItemSerf; 3 private Serf RItemSerf; 4 5 pointcut setditemserfmethod(serialstackserf s, 6 Serf p): 7 target(s) && 8 call (public * setditemserf(serf)) && args(p); 9 10 pointcut setritemserfmethod(serialstackserf s, 11 Serf p): 12 target(s) && 13 call (public * setritemserf(serf)) && args(p); pointcut serfmethods(serialstackserf s): target(s) && call (public * *(..)) &&!call (public * set*(..)); before(serialstackserf s): serfmethods(s) { 20 if (DItemSerf == null) 21 { throw new ParamNotBoundException("DItemSerf"); } 22 if (RItemSerf == null) 23 { throw new ParamNotBoundException("RItemSerf"); } 24 } void around(serialstackserf s, Serf p): 27 setditemserfmethod(s, p) { 28 if (DItemSerf!= null) { 29 throw 30 new ParamAlreadyBoundException("DItemSerf"); 31 } 32 else 33 { proceed(p); } 34 } void around(serialstackserf s, Serf p): 37 setritemserfmethod(s, p) { 38 if (RItemSerf!= null) { 39 throw 40 new ParamAlreadyBoundException("RItemSerf"); 41 } 42 else 43 { proceed(p); } 44 } void around(serialstackserf s, Serf p): 47 setditemserfmethod(s, p) { 48 if!(p implements Serializable) { 49 throw new ParameterTypeMismatchException( 50 "DItemSerf", "Serializable"); 51 } 52 else if!(p implements AreEqual) { 53 throw new ParameterTypeMismatchException( 54 "DItemSerf", "AreEqual"); 55 } 56 else 57 { DItemSerf = p; proceed(p); } 58 } void around(serialstackserf s, Serf p): 61 setritemserfmethod(s, p) { 62 if!(p implements Serializable) { 63 throw new ParameterTypeMismatchException( 64 "RItemSerf", "Serializable"); 65 } 66 else 67 { RItemSerf = p; proceed(p); } 68 } 69 }

5 members are set to their non-null values when a valid parameter is supplied to the Serf (lines 57 and 67 for DItemSerf and RItemSerf, respectively). Restriction R2 is enforced by an around advice for every parameter: lines for DItemSerf and lines for RItemSerf. The dynamic type of the argument passed into the setparameter method is checked to make sure that all type dependencies are satisfied. If any of these dependencies is violated, an exception to that effect is thrown and the program terminates. Restriction R3 is enforced by the two around advices in lines and lines In these advices, the local copy of the parameter is checked, and if it is non-null, then an exception is raised. This is the default case for all Serfs. However, the Service Facility pattern composition support dynamically reconfigurable components. In the case of such components, there may be a legal call to a setparameter method even when the parameter has already been set. Reconfigurable Serfs will be required to implement the ReconfigurableSerf interface as opposed to the Serf interface that our example uses. In the case of a ReconfigurableSerf, restriction R3 is not enforced. Correctness considerations for when it is safe to perform reconfiguration are handled by the ReconfigurableSerf component itself as described in [10]. The aspect that is generated by DynInstaCheck, when compiled with the Serf that it checks, provides correctness guarantees for legal template parameter bindings. Further, since these checks are modularized as an aspect, turning on or off these checks is easy, and is completely de-linked from the application. 5. RELATED WORK This work is most closely related to the work on contractchecking wrappers [2]. Our instantiation rules are encoded as contract predicates on the component, and are checked in accordance with design by contract. The contract-checking components in [2] are implemented as wrapper components, while we use an aspect-oriented approach. In fact, our approach could be extended to include the kinds of checks that their wrappers can perform. This is a direction for our future research. In [5], Hallstrom et al. describe the use of aspect-oriented programming to monitor and enforce design pattern contracts [4]. Their use of aspects for contract-checking is similar to ours. In their work, they encode the formal contract for a design pattern as an aspect. This aspect, when compiled with a program implemented using a design pattern, monitors the program at runtime and detects violations of the pattern contract. 6. CONCLUSIONS Dynamic binding of parameters to components greatly increases the flexibility of software systems. But the flexibility does come at a cost care must be taken to ensure that the bindings that take place at run time are indeed correct with respect to type safety. In this paper, we have presented the various kinds of checks that need to be performed in order to ensure type-correct parameter bindings, and described a tool that automatically generates an aspect-oriented solution to performing these checks in a modular fashion. As of now, we use our tool to generate aspects to check only the types of parameters supplied to Serfs. We are currently working on extending this work in checking other kinds of relationships and dependencies among parameters to a Serf. These dependencies may include order in which parameters are supplied, time of binding relative to the state of the application, etc. Our aspects could also be extended to check pre- and post-conditions that describe the behavioral specification of the component being monitored. 7. REFERENCES [1] G. Bracha, M. Odersky, D. Stoutamire, and P. Wadler. Making the future safe for the past: Adding genericity to the java programming language. In Proceedings of the conference on Object-oriented programming, systems, languages, and applications, pages ACM Press, [2] S. H. Edwards, M. Sitaraman, B. W. Weide, and J. Hollingsworth. Contract-checking wrappers for C++ classes. IEEE Transactions on Software Engineering, 30(11): , November [3] E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison Wesley, [4] J. O. Hallstrom. Design Pattern Contracts. PhD thesis, Computer Science and Engineering, The Ohio State University, [5] J. O. Hallstrom, N. Soundarajan, and B. Tyler. Monitoring design pattern contracts. In Proceedings of the the 3rd FSE Workshop on the Specification and Verification of Component-Based Systems, Newport Beach, CA, [6] A. Kennedy and D. Syme. Design and implementation of generics for the.net common language runtime. In Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation, pages ACM Press, [7] G. Kiczales, J. Lamping, A. Menhdhekar, C. Maeda, C. Lopes, J.-M. Loingtier, and J. Irwin. Aspect-oriented programming. In M. Akşit and S. Matsuoka, editors, Proceedings European Conference on Object-Oriented Programming, volume 1241, pages , Berlin, Heidelberg, and New York, Springer-Verlag. [8] D. Musser and A. Saini. STL Tutorial and Reference Guide: C++ Programming with the Standard Template Library. Addison-Wesley, [9] N. Sridhar. Dynamically Reconfigurable Parameterized Components. PhD thesis, Computer Science and Engineering, The Ohio State University, [10] N. Sridhar, S. M. Pike, and B. W. Weide. Dynamic module replacement in distributed protocols. In Proceedings of the 23rd International Conference on Distributed Computing Systems, May [11] N. Sridhar, B. W. Weide, and P. Bucci. Service facilities: Extending abstract factories to decouple advanced dependencies. In Proceedings of the 7th International Conference on Software Reuse, pages , April [12] H. Thimbleby. Delaying commitment. IEEE Software, 5(3):78 86, May/June 1988.

Generating Configurable Containers for Component-Based Software

Generating Configurable Containers for Component-Based Software Generating Configurable Containers for Component-Based Software Nigamanth Sridhar Computer and Information Science The Ohio State University 2015 Neil Ave Columbus OH 43210, USA nsridhar@cis.ohio-state.edu

More information

Using Aspects to Make Adaptive Object-Models Adaptable

Using Aspects to Make Adaptive Object-Models Adaptable Using Aspects to Make Adaptive Object-Models Adaptable Ayla Dantas 1, Joseph Yoder 2, Paulo Borba 1, Ralph Johnson 2 1 Software Productivity Group Informatics Center Federal University of Pernambuco Recife,

More information

Using Aspects to Make Adaptive Object-Models Adaptable

Using Aspects to Make Adaptive Object-Models Adaptable Using Aspects to Make Adaptive Object-Models Adaptable Ayla Dantas 1, Joseph Yoder 2, Paulo Borba, and Ralph Johnson 1 Software Productivity Group Informatics Center Federal University of Pernambuco Recife,

More information

Dynamic Weaving for Building Reconfigurable Software Systems

Dynamic Weaving for Building Reconfigurable Software Systems Dynamic Weaving for Building Reconfigurable Software Systems FAISAL AKKAWI Akkawi@cs.iit.edu Computer Science Dept. Illinois Institute of Technology Chicago, IL 60616 ATEF BADER abader@lucent.com Lucent

More information

Idioms for Building Software Frameworks in AspectJ

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

More information

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

Sort-based Refactoring of Crosscutting Concerns to Aspects

Sort-based Refactoring of Crosscutting Concerns to Aspects Sort-based Refactoring of Crosscutting Concerns to Aspects Robin van der Rijst Delft University of Technology rvdrijst@gmail.com Marius Marin Accenture Marius.Marin@accenture.com Arie van Deursen Delft

More information

Bugdel: An Aspect-Oriented Debugging System

Bugdel: An Aspect-Oriented Debugging System Bugdel: An Aspect-Oriented Debugging System Yoshiyuki Usui and Shigeru Chiba Dept. of Mathematical and Computing Sciences Tokyo Institute of Technology 2-12-1-W8-50 Ohkayama, Meguro-ku Tokyo 152-8552,

More information

SERG. Sort-based Refactoring of Crosscutting Concerns to Aspects

SERG. Sort-based Refactoring of Crosscutting Concerns to Aspects Delft University of Technology Software Engineering Research Group Technical Report Series Sort-based Refactoring of Crosscutting Concerns to Aspects Robin van der Rijst, Marius Marin, and Arie van Deursen

More information

Implementing Producers/Consumers Problem Using Aspect-Oriented Framework

Implementing Producers/Consumers Problem Using Aspect-Oriented Framework Implementing Producers/Consumers Problem Using Aspect-Oriented Framework 1 Computer Science Department School of Science Bangkok University Bangkok, Thailand netipan@iit.edu Paniti Netinant 1, 2 and Tzilla

More information

Martin P. Robillard and Gail C. Murphy. University of British Columbia. November, 1999

Martin P. Robillard and Gail C. Murphy. University of British Columbia. November, 1999 Migrating a Static Analysis Tool to AspectJ TM Martin P. Robillard and Gail C. Murphy Department of Computer Science University of British Columbia 201-2366 Main Mall Vancouver BC Canada V6T 1Z4 fmrobilla,murphyg@cs.ubc.ca

More information

Dynamic Weaving for Building Reconfigurable Software Systems

Dynamic Weaving for Building Reconfigurable Software Systems Dynamic Weaving for Building Reconfigurable Software Systems JAGDISH LAKHANI lakhjag@iitedu Computer Science Dept Illinois Institute of Technology Chicago, IL 60616 FAISAL AKKAWI akkawif@iitedu Computer

More information

A Novel Approach to Unit Testing: The Aspect-Oriented Way

A Novel Approach to Unit Testing: The Aspect-Oriented Way A Novel Approach to Unit Testing: The Aspect-Oriented Way Guoqing Xu and Zongyuan Yang Software Engineering Lab, Department of Computer Science East China Normal University 3663, North Zhongshan Rd., Shanghai

More information

Modularizing Web Services Management with AOP

Modularizing Web Services Management with AOP Modularizing Web Services Management with AOP María Agustina Cibrán, Bart Verheecke { Maria.Cibran, Bart.Verheecke@vub.ac.be System and Software Engineering Lab Vrije Universiteit Brussel 1. Introduction

More information

A Unit Testing Framework for Aspects without Weaving

A Unit Testing Framework for Aspects without Weaving A Unit Testing Framework for Aspects without Weaving Yudai Yamazaki l01104@sic.shibaura-it.ac.jp Kouhei Sakurai sakurai@komiya.ise.shibaura-it.ac.jp Saeko Matsuura matsuura@se.shibaura-it.ac.jp Hidehiko

More information

Assertion with Aspect

Assertion with Aspect Assertion with Aspect Takashi Ishio, Toshihiro Kamiya, Shinji Kusumoto, Katsuro Inoue Graduate School of Engineering Science, PRESTO, Japan Science and Technology Agency Osaka University 1-3 Machikaneyama-cho,

More information

INCORPORATING ADVANCED PROGRAMMING TECHNIQUES IN THE COMPUTER INFORMATION SYSTEMS CURRICULUM

INCORPORATING ADVANCED PROGRAMMING TECHNIQUES IN THE COMPUTER INFORMATION SYSTEMS CURRICULUM INCORPORATING ADVANCED PROGRAMMING TECHNIQUES IN THE COMPUTER INFORMATION SYSTEMS CURRICULUM Charles S. Saxon, Eastern Michigan University, charles.saxon@emich.edu ABSTRACT Incorporating advanced programming

More information

Assertions, pre/postconditions

Assertions, pre/postconditions Programming as a contract Assertions, pre/postconditions Assertions: Section 4.2 in Savitch (p. 239) Specifying what each method does q Specify it in a comment before method's header Precondition q What

More information

On the Impact of Aspect-Oriented Programming on Object-Oriented Metrics

On the Impact of Aspect-Oriented Programming on Object-Oriented Metrics On the Impact of Aspect-Oriented Programming on Object-Oriented Metrics Jean-Yves Guyomarc h and Yann-Gaël Guéhéneuc GEODES - Group of Open and Distributed Systems, Experimental Software Engineering Department

More information

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

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

More information

CScheme in Traditional Concurrency Problems

CScheme in Traditional Concurrency Problems CScheme in Traditional Concurrency Problems Nathar Shah and Visham Cheerkoot Abstract CScheme, a concurrent programming paradigm based on scheme concept enables concurrency schemes to be constructed from

More information

Spring Interview Questions

Spring Interview Questions Spring Interview Questions By Srinivas Short description: Spring Interview Questions for the Developers. @2016 Attune World Wide All right reserved. www.attuneww.com Contents Contents 1. Preface 1.1. About

More information

A Meta-Model for Composition Techniques in Object-Oriented Software Development

A Meta-Model for Composition Techniques in Object-Oriented Software Development A Meta-Model for Composition Techniques in Object-Oriented Software Development Bedir Tekinerdogan Department of Computer Science University of Twente P.O. Box 217, 7500 AE Enschede, The Netherlands E-Mail:

More information

Base Architectures for NLP

Base Architectures for NLP Base Architectures for NLP Tom Mahieu, Stefan Raeymaekers et al. Department of Computer Science K.U.Leuven Abstract Our goal is to develop an object-oriented framework for natural language processing (NLP).

More information

Semantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler Front-End

Semantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler Front-End Outline Semantic Analysis The role of semantic analysis in a compiler A laundry list of tasks Scope Static vs. Dynamic scoping Implementation: symbol tables Types Static analyses that detect type errors

More information

APPLYING OBJECT-ORIENTATION AND ASPECT-ORIENTATION IN TEACHING DOMAIN-SPECIFIC LANGUAGE IMPLEMENTATION *

APPLYING OBJECT-ORIENTATION AND ASPECT-ORIENTATION IN TEACHING DOMAIN-SPECIFIC LANGUAGE IMPLEMENTATION * APPLYING OBJECT-ORIENTATION AND ASPECT-ORIENTATION IN TEACHING DOMAIN-SPECIFIC LANGUAGE IMPLEMENTATION * Xiaoqing Wu, Barrett Bryant and Jeff Gray Department of Computer and Information Sciences The University

More information

The role of semantic analysis in a compiler

The role of semantic analysis in a compiler Semantic Analysis Outline The role of semantic analysis in a compiler A laundry list of tasks Scope Static vs. Dynamic scoping Implementation: symbol tables Types Static analyses that detect type errors

More information

Harvard School of Engineering and Applied Sciences CS 152: Programming Languages

Harvard School of Engineering and Applied Sciences CS 152: Programming Languages Harvard School of Engineering and Applied Sciences CS 152: Programming Languages Lecture 18 Thursday, April 3, 2014 1 Error-propagating semantics For the last few weeks, we have been studying type systems.

More information

COFFEESTRAINER - Statically Checking Structural Constraints on Java Programs

COFFEESTRAINER - Statically Checking Structural Constraints on Java Programs COFFEESTRAINER - Statically Checking Structural Constraints on Java Programs Boris Bokowski bokowski@inf.fu-berlin.de Technical Report B-98-14 December 1998 Abstract It is generally desirable to detect

More information

Semantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler so far

Semantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler so far Outline Semantic Analysis The role of semantic analysis in a compiler A laundry list of tasks Scope Static vs. Dynamic scoping Implementation: symbol tables Types Statically vs. Dynamically typed languages

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

Implementing Object Equivalence in Java Using the Template Method Design Pattern

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

More information

Harvard School of Engineering and Applied Sciences CS 152: Programming Languages

Harvard School of Engineering and Applied Sciences CS 152: Programming Languages Harvard School of Engineering and Applied Sciences CS 152: Programming Languages Lecture 24 Thursday, April 19, 2018 1 Error-propagating semantics For the last few weeks, we have been studying type systems.

More information

JAVA GUI PROGRAMMING REVISION TOUR III

JAVA GUI PROGRAMMING REVISION TOUR III 1. In java, methods reside in. (a) Function (b) Library (c) Classes (d) Object JAVA GUI PROGRAMMING REVISION TOUR III 2. The number and type of arguments of a method are known as. (a) Parameter list (b)

More information

Efficient Separate Compilation of Object-Oriented Languages

Efficient Separate Compilation of Object-Oriented Languages Efficient Separate Compilation of Object-Oriented Languages Jean Privat, Floréal Morandat, and Roland Ducournau LIRMM Université Montpellier II CNRS 161 rue Ada 34392 Montpellier cedex 5, France {privat,morandat,ducour}@lirmm.fr

More information

An Aspect-to-Class Advising Architecture Based on XML in Aspect Oriented Programming

An Aspect-to-Class Advising Architecture Based on XML in Aspect Oriented Programming An Aspect-to-Class Advising Architecture Based on XML in Aspect Oriented Programming T. Hussain, M. M. Awais, S. Shamail, M. A. Adnan Department of Computer Science Lahore University of Management Sciences,

More information

Efficient Separate Compilation of Object-Oriented Languages

Efficient Separate Compilation of Object-Oriented Languages Efficient Separate Compilation of Object-Oriented Languages Jean Privat, Floréal Morandat, and Roland Ducournau LIRMM Université Montpellier II CNRS 161 rue Ada 34392 Montpellier cedex 5, France {privat,morandat,ducour}@lirmm.fr

More information

Violations of the contract are exceptions, and are usually handled by special language constructs. Design by contract

Violations of the contract are exceptions, and are usually handled by special language constructs. Design by contract Specification and validation [L&G Ch. 9] Design patterns are a useful way to describe program structure. They provide a guide as to how a program fits together. Another dimension is the responsibilities

More information

EINDHOVEN UNIVERSITY OF TECHNOLOGY

EINDHOVEN UNIVERSITY OF TECHNOLOGY EINDHOVEN UNIVERSITY OF TECHNOLOGY Department of Mathematics & Computer Science Exam Programming Methods, 2IP15, Wednesday 17 April 2013, 09:00 12:00 TU/e THIS IS THE EXAMINER S COPY WITH (POSSIBLY INCOMPLETE)

More information

Java-MOP: A Monitoring Oriented Programming Environment for Java

Java-MOP: A Monitoring Oriented Programming Environment for Java Java-MOP: A Monitoring Oriented Programming Environment for Java Feng Chen and Grigore Roşu Department of Computer Science, University of Illinois at Urbana - Champaign, USA {fengchen, grosu}@uiuc.edu

More information

Fun with AspectJ. 1 Getting Started. 2 Defining Pointcuts. Cleveland State University Electrical and Computer Engineering Distributed: April 8, 2008

Fun with AspectJ. 1 Getting Started. 2 Defining Pointcuts. Cleveland State University Electrical and Computer Engineering Distributed: April 8, 2008 EEC 421/521 Spring 2008 Dr. Nigamanth Sridhar Software Engineering Cleveland State University Electrical and Computer Engineering Distributed: April 8, 2008 Fun with AspectJ AspectJ is a pretty powerful

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

Aspect-Orientation from Design to Code

Aspect-Orientation from Design to Code Aspect-Orientation from Design to Code Iris Groher Siemens AG, CT SE 2 Otto-Hahn-Ring 6 81739 Munich, Germany groher@informatik.tu-darmstadt.de Thomas Baumgarth Siemens AG, CT SE 2 Otto-Hahn-Ring 6 81739

More information

DESIGN PATTERN - INTERVIEW QUESTIONS

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

More information

Formal Methods for Java

Formal Methods for Java Formal Methods for Java Lecture 1: Introduction Jochen Hoenicke Software Engineering Albert-Ludwigs-University Freiburg October 26, 2011 Jochen Hoenicke (Software Engineering) Formal Methods for Java October

More information

Object-Oriented Genetic Improvement for Improved Energy Consumption in Google Guava

Object-Oriented Genetic Improvement for Improved Energy Consumption in Google Guava Object-Oriented Genetic Improvement for Improved Energy Consumption in Google Guava Nathan Burles 1, Edward Bowles 1, Alexander E. I. Brownlee 2, Zoltan A. Kocsis 2, Jerry Swan 1, Nadarajen Veerapen 2

More information

Introduction to Programming Using Java (98-388)

Introduction to Programming Using Java (98-388) Introduction to Programming Using Java (98-388) Understand Java fundamentals Describe the use of main in a Java application Signature of main, why it is static; how to consume an instance of your own class;

More information

CHAPTER II. First Principles for Constructing Components in Ada

CHAPTER II. First Principles for Constructing Components in Ada CHAPTER II First Principles for Constructing Components in Ada In this chapter we fix the programming language to be Ada and the component type to be abstract data types. We introduce principles for constructing

More information

I BCS-031 BACHELOR OF COMPUTER APPLICATIONS (BCA) (Revised) Term-End Examination. June, 2015 BCS-031 : PROGRAMMING IN C ++

I BCS-031 BACHELOR OF COMPUTER APPLICATIONS (BCA) (Revised) Term-End Examination. June, 2015 BCS-031 : PROGRAMMING IN C ++ No. of Printed Pages : 3 I BCS-031 BACHELOR OF COMPUTER APPLICATIONS (BCA) (Revised) Term-End Examination 05723. June, 2015 BCS-031 : PROGRAMMING IN C ++ Time : 3 hours Maximum Marks : 100 (Weightage 75%)

More information

Aspect-Oriented Programming and AspectJ

Aspect-Oriented Programming and AspectJ What is Aspect-Oriented Programming? Many possible answers: a fad Aspect-Oriented Programming and AspectJ Aspect-oriented programming is a common buzzword lately Papers from ECOOP 1997 (early overview

More information

Outlook on Composite Type Labels in User-Defined Type Systems

Outlook on Composite Type Labels in User-Defined Type Systems 34 (2017 ) Outlook on Composite Type Labels in User-Defined Type Systems Antoine Tu Shigeru Chiba This paper describes an envisioned implementation of user-defined type systems that relies on a feature

More information

BEAAquaLogic. Service Bus. Interoperability With EJB Transport

BEAAquaLogic. Service Bus. Interoperability With EJB Transport BEAAquaLogic Service Bus Interoperability With EJB Transport Version 3.0 Revised: February 2008 Contents EJB Transport Introduction...........................................................1-1 Invoking

More information

Separation of Concerns

Separation of Concerns Separation of Concerns Erik Ernst Dept. of Computer Science, University of Aarhus, Denmark eernst@daimi.au.dk Abstract. Separation of concerns is a crucial concept in discussions about software engineering

More information

Chapter 11. Abstract Data Types and Encapsulation Concepts

Chapter 11. Abstract Data Types and Encapsulation Concepts Chapter 11 Abstract Data Types and Encapsulation Concepts The Concept of Abstraction An abstraction is a view or representation of an entity that includes only the most significant attributes The concept

More information

Typestate Checking for Actionscript 3

Typestate Checking for Actionscript 3 Typestate Checking for Actionscript 3 Yun-En Liu and Qi Shan December 10, 2010 1 Introduction This project proposes a compile-time check for function calls in a game system written in Actionscript 3, based

More information

Generics in Java and Beyond

Generics in Java and Beyond Generics in Java and Beyond Martin Buechi 2001 by Martin Büchi 1 Overview Generics Abstraction of generic concepts. C++ templates (STL), parameterized types, ML polymorphic data types and functions, Beta

More information

An Introduction to Patterns

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

More information

Hierarchical Pointer Analysis for Distributed Programs

Hierarchical Pointer Analysis for Distributed Programs Hierarchical Pointer Analysis for Distributed Programs Amir Kamil Computer Science Division, University of California, Berkeley kamil@cs.berkeley.edu April 14, 2006 1 Introduction Many distributed, parallel

More information

1. Introduction to the Common Language Infrastructure

1. Introduction to the Common Language Infrastructure Miller-CHP1.fm Page 1 Wednesday, September 24, 2003 1:50 PM to the Common Language Infrastructure The Common Language Infrastructure (CLI) is an International Standard that is the basis for creating execution

More information

JPred-P 2. Josh Choi, Michael Welch {joshchoi,

JPred-P 2. Josh Choi, Michael Welch {joshchoi, JPred-P 2 Josh Choi, Michael Welch {joshchoi, mjwelch}@cs.ucla.edu 1. Introduction Precondition and postcondition checking on methods aids the development process by explicitly notifying the programmer

More information

Separation of Distributed Real-Time Embedded Concerns with Theme/UML

Separation of Distributed Real-Time Embedded Concerns with Theme/UML Separation of Distributed Real-Time Embedded Concerns with Theme/UML Cormac Driver, Vinny Cahill and Siobhán Clarke Distributed Systems Group School of Computer Science and Statistics Trinity College Dublin

More information

Programming Languages Third Edition. Chapter 10 Control II Procedures and Environments

Programming Languages Third Edition. Chapter 10 Control II Procedures and Environments Programming Languages Third Edition Chapter 10 Control II Procedures and Environments Objectives Understand the nature of procedure definition and activation Understand procedure semantics Learn parameter-passing

More information

Pages and 68 in [JN] conventions for using exceptions in Java. Chapter 8 in [EJ] guidelines for more effective use of exceptions.

Pages and 68 in [JN] conventions for using exceptions in Java. Chapter 8 in [EJ] guidelines for more effective use of exceptions. CS511, HANDOUT 12, 7 February 2007 Exceptions READING: Chapter 4 in [PDJ] rationale for exceptions in general. Pages 56-63 and 68 in [JN] conventions for using exceptions in Java. Chapter 8 in [EJ] guidelines

More information

CSC System Development with Java. Exception Handling. Department of Statistics and Computer Science. Budditha Hettige

CSC System Development with Java. Exception Handling. Department of Statistics and Computer Science. Budditha Hettige CSC 308 2.0 System Development with Java Exception Handling Department of Statistics and Computer Science 1 2 Errors Errors can be categorized as several ways; Syntax Errors Logical Errors Runtime Errors

More information

MOPBox: A Library Approach to Runtime Verification

MOPBox: A Library Approach to Runtime Verification MOPBox: A Library Approach to Runtime Verification (Tool Demonstration) Eric Bodden eric.bodden@cased.de Center for Advanced Security Research Darmstadt Software Technology Group Technische Universität

More information

Objects Managing a Resource

Objects Managing a Resource Objects Managing a Resource 1 What is a Resource Respects Release/Acquire protocol files (open/close) memory allocation (allocate/free) locks (acquire/release). 2 What is a Resource Objects when constructed,

More information

Software Engineering: Design Aspect-Oriented Programming and Modularity

Software Engineering: Design Aspect-Oriented Programming and Modularity Software Engineering: Design Aspect-Oriented Programming and Modularity Christian M. Meyer Software Technology Group Darmstadt University of Technology January 29, 2006 1 Aspect-Oriented Programming Aspect-oriented

More information

Applying Aspect Oriented Programming on Security

Applying Aspect Oriented Programming on Security Original Article Applying Aspect Oriented Programming on Security Mohammad Khalid Pandit* 1, Azra Nazir 1 and Arutselvan M 2 1 Department of computer Science and engineering, National institute of technology

More information

Container-Based Component Deployment: A Case Study

Container-Based Component Deployment: A Case Study Container-Based Component Deployment: A Case Study Nigamanth Sridhar, Jason O. Hallstrom, and Paolo A.G. Sivilotti Computer and Information Science The Ohio State University 2015 Neil Ave Columbus OH 43210

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

A Primer on Design Patterns

A Primer on Design Patterns A Primer on Design Patterns First Edition Rahul Batra This book is for sale at http://leanpub.com/aprimerondesignpatterns This version was published on 2016-03-23 This is a Leanpub book. Leanpub empowers

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

VALLIAMMAI ENGINEERING COLLEGE

VALLIAMMAI ENGINEERING COLLEGE VALLIAMMAI ENGINEERING COLLEGE SRM Nagar, Kattankulathur 603 203 DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING QUESTION BANK B.E. - Electrical and Electronics Engineering IV SEMESTER CS6456 - OBJECT ORIENTED

More information

c Copyright 2004, Vinicius Cardoso Garcia, Eduardo Kessler Piveta, Daniel Lucrédio, Alexandre Alvaro, Eduardo Santana de Almeida, Antonio Francisco

c Copyright 2004, Vinicius Cardoso Garcia, Eduardo Kessler Piveta, Daniel Lucrédio, Alexandre Alvaro, Eduardo Santana de Almeida, Antonio Francisco c Copyright 2004, Vinicius Cardoso Garcia, Eduardo Kessler Piveta, Daniel Lucrédio, Alexandre Alvaro, Eduardo Santana de Almeida, Antonio Francisco do Prado, Luiz Carlos Zancanella. Permission is granted

More information

Short Notes of CS201

Short Notes of CS201 #includes: Short Notes of CS201 The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with < and > if the file is a system

More information

Analysis and Research on the Automated Generation of Unit Test

Analysis and Research on the Automated Generation of Unit Test 1+, 1 1, 1 (, 200062) Analysis and Research on the Automated Generation of Unit Test XU Guo-qing 1+, YANG Zong-yuan 1, HUANG Hai-tao 1 1 (Software Engineering Lab, Department of Computer Science, East

More information

Implementing Reusable Collaborations with Delegation Layers

Implementing Reusable Collaborations with Delegation Layers Implementing Reusable Collaborations with Delegation Layers Klaus Ostermann Siemens AG, Corporate Technology SE 2 D-81730 Munich, Germany Klaus.Ostermann@mchp.siemens.de ABSTRACT It has been recognized

More information

The Contract Pattern. Design by contract

The Contract Pattern. Design by contract The Contract Pattern Copyright 1997, Michel de Champlain Permission granted to copy for PLoP 97 Conference. All other rights reserved. Michel de Champlain Department of Computer Science University of Canterbury,

More information

Interview Questions of C++

Interview Questions of C++ Interview Questions of C++ Q-1 What is the full form of OOPS? Ans: Object Oriented Programming System. Q-2 What is a class? Ans: Class is a blue print which reflects the entities attributes and actions.

More information

CS201 - Introduction to Programming Glossary By

CS201 - Introduction to Programming Glossary By CS201 - Introduction to Programming Glossary By #include : The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with

More information

Program Verification (6EC version only)

Program Verification (6EC version only) Program Verification (6EC version only) Erik Poll Digital Security Radboud University Nijmegen Overview Program Verification using Verification Condition Generators JML a formal specification language

More information

Operational Semantics. One-Slide Summary. Lecture Outline

Operational Semantics. One-Slide Summary. Lecture Outline Operational Semantics #1 One-Slide Summary Operational semantics are a precise way of specifying how to evaluate a program. A formal semantics tells you what each expression means. Meaning depends on context:

More information

A Type Graph Model for Java Programs

A Type Graph Model for Java Programs A Type Graph Model for Java Programs Arend Rensink and Eduardo Zambon Formal Methods and Tools Group, EWI-INF, University of Twente PO Box 217, 7500 AE, Enschede, The Netherlands {rensink,zambon}@cs.utwente.nl

More information

Static type safety guarantees for the operators of a relational database querying system. Cédric Lavanchy

Static type safety guarantees for the operators of a relational database querying system. Cédric Lavanchy Static type safety guarantees for the operators of a relational database querying system Cédric Lavanchy June 6, 2008 Contents 1 Previous work 2 2 Goal 3 3 Theory bases 4 3.1 Typing a relation...........................

More information

Canica: An IDE for the Java Modeling Language

Canica: An IDE for the Java Modeling Language Canica: An IDE for the Java Modeling Language Angelica B. Perez, Yoonsik Cheon, and Ann Q. Gates TR #06-36 August 2006 Keywords: Integrated development environment, specification tool, programming tool,

More information

A Framework for Reliability Assessment of Software Components

A Framework for Reliability Assessment of Software Components A Framework for Reliability Assessment of Software Components Rakesh Shukla, Paul Strooper, and David Carrington School of Information Technology and Electrical Engineering, The University of Queensland,

More information

Information systems modeling. Tomasz Kubik

Information systems modeling. Tomasz Kubik Information systems modeling Tomasz Kubik Aspect-oriented programming, AOP Systems are composed of several components, each responsible for a specific piece of functionality. But often these components

More information

CS555: Distributed Systems [Fall 2017] Dept. Of Computer Science, Colorado State University

CS555: Distributed Systems [Fall 2017] Dept. Of Computer Science, Colorado State University CS 555: DISTRIBUTED SYSTEMS [RMI] Frequently asked questions from the previous class survey Shrideep Pallickara Computer Science Colorado State University L21.1 L21.2 Topics covered in this lecture RMI

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

Part IV: RESOLVE Components in Ada and C++

Part IV: RESOLVE Components in Ada and C++ SOFTWARE ENGINEERING NOTES 19, 4 (OCT. 1994), 52-63. Part IV: RESOLVE Components in Ada and C++ Joseph E. Hollingsworth Sethu Sreerama Bruce W. Weide Sergey Zhupanov By observing a careful discipline you

More information

B2.52-R3: INTRODUCTION TO OBJECT ORIENTATED PROGRAMMING THROUGH JAVA

B2.52-R3: INTRODUCTION TO OBJECT ORIENTATED PROGRAMMING THROUGH JAVA B2.52-R3: INTRODUCTION TO OBJECT ORIENTATED PROGRAMMING THROUGH JAVA NOTE: 1. There are TWO PARTS in this Module/Paper. PART ONE contains FOUR questions and PART TWO contains FIVE questions. 2. PART ONE

More information

Complex Event Processing with Event Modules

Complex Event Processing with Event Modules Complex Event Processing with Event Modules Somayeh Malakuti Technical University of Dresden Germany somayeh.malakuti@tu-dresden.de ABSTRACT To effectively cope with the complexity of event processing

More information

Classes, interfaces, & documentation. Review of basic building blocks

Classes, interfaces, & documentation. Review of basic building blocks Classes, interfaces, & documentation Review of basic building blocks Objects Data structures literally, storage containers for data constitute object knowledge or state Operations an object can perform

More information

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

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

More information

Weaving Rewrite-Based Access Control Policies

Weaving Rewrite-Based Access Control Policies Weaving Rewrite-Based Access Control Policies Anderson Santana de Oliveira a, Eric Ke Wang ab, Claude Kirchner a, Hélène Kirchner a INRIA & LORIA The University of Hong Kong FMSE, 2007 Oliveira, Wang,

More information

Objectives for this class meeting. 1. Conduct review of core concepts concerning contracts and pre/post conditions

Objectives for this class meeting. 1. Conduct review of core concepts concerning contracts and pre/post conditions CSE1720 Click to edit Master Week text 01, styles Lecture 02 Second level Third level Fourth level Fifth level Winter 2015! Thursday, Jan 8, 2015 1 Objectives for this class meeting 1. Conduct review of

More information

Object Oriented Programming Exception Handling

Object Oriented Programming Exception Handling Object Oriented Programming Exception Handling Budditha Hettige Department of Computer Science Programming Errors Types Syntax Errors Logical Errors Runtime Errors Syntax Errors Error in the syntax of

More information

Self-checking software insert specifications about the intent of a system

Self-checking software insert specifications about the intent of a system Assertions Reading assignment A. J. Offutt, A Practical System for Mutation Testing: Help for the Common Programmer, Proceedings of the 12th International Conference on Testing Computer Software, Washington,

More information

PROCESS DEVELOPMENT METHODOLOGY The development process of an API fits the most fundamental iterative code development

PROCESS DEVELOPMENT METHODOLOGY The development process of an API fits the most fundamental iterative code development INTRODUCING API DESIGN PRINCIPLES IN CS2 Jaime Niño Computer Science, University of New Orleans New Orleans, LA 70148 504-280-7362 jaime@cs.uno.edu ABSTRACT CS2 provides a great opportunity to teach an

More information

Using the Bridge Design Pattern for OSGi Service Update

Using the Bridge Design Pattern for OSGi Service Update Using the Bridge Design Pattern for OSGi Service Update Hans Werner Pohl Jens Gerlach {hans,jens@first.fraunhofer.de Fraunhofer Institute for Computer Architecture and Software Technology (FIRST) Berlin

More information