Run-time adaptability of synchronization policies in concurrent objectoriented

Size: px
Start display at page:

Download "Run-time adaptability of synchronization policies in concurrent objectoriented"

Transcription

1 Run-time adaptability of synchronization policies in concurrent objectoriented languages Fernando Sánchez, Juan Hernández, Juan Manuel Murillo, Enrique Pedraza Computer Science Department University of Extremadura Campus Universitario s/n Cáceres, Spain {fernando, juanher, ABSTRACT Adaptability has become one of the most important research areas in concurrent object-oriented systems in recent years. It tries to cope with system evolution by adding/replacing components without affecting other components of the same application. Nevertheless, at the present time, concurrent object-oriented languages do not provide enough support for the development of true adaptable software because either i) the different aspects that appear in these systems, synchronization and behavior, are mixed in the same component or, ii) if they are properly separated in different components, once these components are woven the resulting executable piece of software is too rigid to be adapted or reconfigured at run-time. In this paper, we present the Disguises Model, a model mainly thought for a clear and consistent separation of the synchronization aspect from the behavioral aspect. Whereas the model allows behavioral code to be written in a standard language like Java, it provides a different language for the specification of synchronization components and a third language for the specification of the composition rules between the synchronization and behavioral aspects. This composition language allows synchronization policies to be added, replaced or reconfigured at run-time, which is the main contribution of the proposed model. The techniques here presented have been satisfactorily integrated in Java. 1 Introduction Frequently, large and complex systems have to cope with a continuous change of requirements during their life. Consequently, these systems tend to grow and change after they have been developed. In order to adapt to changing requirements, the demand has risen for adaptable software. This research area has been recently named the adaptability [Tek96] of software, which can be defined as the ability to deal with new/changing requirements with minimum effort. In this definition, the meaning of effort must be understood as the number of modules that are created or modified when changes in the requirements are necessary. In practice, it is possible to obtain an adaptable object-oriented application if its software architecture allows its components to be removed, replaced or reconfigured without perturbing other parts of the application [Nie95]. Nevertheless, experience has demonstrated that the object-oriented model does not provide effective adaptability. It has been detected various interferences when several aspects must be introduced or modified in order to cope with the changing requirements. The introduction or modification of new requirements affecting a single aspect may involve the modification of the other aspects, thus expanding the number of modules that must be changed or modified. And this situation is clearly against the definition of adaptability given before. Recent works [Hur95, Aks96, Kic97] have demonstrated that the problem in the conventional object model is that the different concerns or aspects involved in an application are mixed. Since then, the separation of concerns principle has been recognized as an effective approach for increasing adaptability. In the research area we are moving around, COOLs, the two aspects to be considered are synchronization and basic object behavior. In the last few years there have been several proposals trying to separate the synchronization aspect from the basic behavior of the object [McH94, Ber94, Hol97, Lop97, Rei97]. A number of proposals deserve special mention which under the name of aspect-oriented programming (AOP) try to express each of a system s aspects in a separate and natural form that will be automatically woven to form an executable code using automatic tools [Kic97]. All of these proposals have obtained a high degree of success, and they have proposed different programming techniques to separate both concerns (see related works section). But once these concerns are composed, what is the nature of the resulting entity after the composition process? Is it flexible enough to allow the synchronization aspect to be adapted not only at compile time but also at run-time? That is, is it flexible enough for adding, replacing or reconfiguring synchronization components at run-time? To our knowledge, the answer is no. Our contention is that this feature is very important in critical control systems where, due to unexpected environment changes, urgent and 1

2 not preestablished decisions must be taken at run-time. From security and economic point of views, it is not admissible to stop the application, adapt it to the new environment and re-run it. In this paper, we present the Disguises Model, a model mainly thought for a clear and consistent separation of the synchronization aspect from the behavioral aspect. Whereas the model allows behavioral code to be written in a standard language like Java, it provides a different language for the specification of synchronization components and a third language for the specification of the composition rules between the synchronization and behavioral aspects. This composition language allows synchronization policies to be added, replaced or reconfigured at run-time. That is what we call run-time adaptability, which is the main contribution of the proposed model. Run-time adaptability is provided even if the object has not been previously designed for such changes or the run-time added synchronization policies have not been previously defined. Although the techniques here presented have been satisfactorily integrated in Java, they can be easily applied to other languages. The rest of the paper is organized as follows. Section 2 fixes the discussion universe we are moving around and presents the main requirements for achieving adaptability in COOLs. In Section 3 the Disguises Model is presented. It will be shown how it separates and composes the different aspects with the aid of several examples. In section 4 related works are discussed and, finally, section 5 summarizes the paper with conclusions and future work. 2. Adaptability in COOLs The point of view we have about the desired adaptable concurrent object-oriented model is depicted in figure 1. Each synchronization component should ideally describe exactly one and well defined synchronization policy, and it may itself be a composition of other synchronization components. The basic behavior interface specifies the operations provided to the exterior. This interface may be implemented in various ways, and both the interface and the implementation are components themselves. The dotted line around the behavior and the synchronization policy 1 indicates the boundary of the resulting composed object. Such an object should be understood as an entity ready to be executed whose design should allow the other synchronization policies to be applied at run-time. 1 different synchronization policies they can be applied to other component behaviors other implementations Basic behavior interface behavior im plem entation 2 composed to form other synchronization policies 3 Composed 4 Figure 1. Graphical view of adaptability in COOLs The following benefits and properties about the desired object model can be deduced from the figure: the set of components describing the basic behavior of the object may be reused in environments other than concurrent. synchronization components are not attached to any specific behavior component. Conversely, they are independent from each other. Consequently, synchronization components may be applied to any other components with different behavior but the same synchronization rules. As there is an independence between aspects at the implementation level, it is possible to specify the synchronization aspect in a specific language more suitable for describing synchronization than general purpose languages. 2

3 In the same way as the previous point, the composition mechanism for composing both concerns, synchronization and behavior, may be different from those used for composing individual concerns. This allows us to use a more adequate composition mechanism for run-time adaptability than inheritance or delegation. 2.1 Requirements for adaptability in COOLs From the previous point, a set of minimum and necessary requirements to be imposed in COOLs in order to address the demanded software adaptability can be easily followed. i) modularity of synchronization constraints: this means that the synchronization aspect must be clearly/cleanly separated from the behavioral aspect. Moreover, SC must not refer to implementation details. Otherwise, substitutability of software is lost [San96, Ber96]. ii) iii) iv) composability of synchronization constraints: this means the ability that a concurrent object-oriented model provides for reusing and extending the SC in an effective way. SC must be able to be freely combined to form other constraints [San96, Ber96] expressiveness of synchronization constraints: this means that SC must be able to refer to the required information for a good expressive power in synchronization mechanisms [Blo79]. composition of SC and behavior: this means the ability that a COOL provides to freely combine or compose both components: synchronization and basic behavior. This composition mechanism must be able to be done at compile time as well as run-time. At least the following three features should be provided for the demanded run-time adaptation: Addition of a new synchronization policy and its integration with the current applied policies. Replacement of a currently applied synchronization policy with another one or none. Modification of a currently applied synchronization policy in order to restrict or extend its constraints. Whereas the requirements i), ii) and iv) are for adaptability, the third one is for expressive power in synchronization constraints. We claim that these requirements should be present in any COOL designed for largescale concurrent software development. Currently, different languages or proposals fulfil the three first requirements with a certain degree of success [McH94, Ber94, Hol97, Rei97, Lop97] but, to our knowledge, none of them has addressed the ability to change the synchronization aspect during the execution of the application. The reason for this is that once these separated components are woven, the resulting executable piece of software is too rigid to be adapted or reconfigured at run-time. What it means is that the fourth requirement has not been taken into account. In the Disguises Model presented below, the synchronization policies are allowed to be added, replaced or modified at run-time without affecting other parts of the object or application. The behavior component has no need to be coded taking into account what synchronization policies can be added in the future and the policies themselves can be adapted while the application is being executed. 3 The Disguises Model In [Lop97, San97] it is shown how difficult is to achieve an effective adaptability of SC in a popular concurrent object-oriented language like Java due to it not addressing the above established requirements for adaptability in COOLs. In [San97] the well known bounded buffer example with put and get methods to store and retrieve elements is used to show interferences between aspects when inheriting code: not only we have to redefine behavioral methods only to take into account synchronization purposes, but also we are not able to reuse SC previously defined to form new ones. Both problems arises because the modularity requirement i) and the composability requirement ii) identified above are not addressed. For more details the reader is referred to [San97]. In [Lea96] several hints for solving these problems in Java are proposed but, unfortunately, Java provides no means by which to specify synchronization policies independently. So, in the bounded-buffer example, there is nothing to do if the whole synchronization policy is needed to be replaced by another one and, of course, nothing to say if it is to be done at run-time. As a result, requirement iv) is not fulfilled. Next, the proposed model will be presented at two stages. On the one hand, the separation of the synchronization aspect in different components will be outlined in section 3.1 by introducing a particular language for the specification of synchronization and, on the other hand, the composition mechanism for weaving both components will be described in section

4 3.1 Separating aspects: the synchronization language. The first requirement for adaptability in COOLs imposes a clear separation of SC from object behavior. This is the reason why the Disguises Model separates both aspects in different components. In order to specify the synchronization aspect, the model provides a specific language in the sense of aspect-oriented programming [Kic97]. The behavioral component becomes a normal object in Java but without specifying anything about synchronization. At a later stage, the behavior and synchronization components will be composed with a composition mechanism different from inheritance which will allow synchronization components to be dynamically changed at run-time. This mechanism is shown later in section 3.2. The main concepts of the proposed synchronization language rely on abstract states. The abstract states of an object are those exceptional states under which certain methods cannot be executed. They represent some relevant aspects of the real state of execution of an object but at a level of abstraction that makes independent the synchronization component from the behavioral component. Although abstract states do not refer to implementation details, they are thought to be able to reference the required information for a good expressive power in synchronization mechanisms [Blo77] coping thus with the expressiveness requirement iii) [San97]. For the bounded buffer example the abstract states would be: abstract_states: FULL: {δ.length()==δ.maximum() EMPTY: {δ.length()==0 where the letter δ denotes the object to be synchronized and length and maximum are properties of the δ object. In addition to abstract states, the proposed model provides preconditions which establish the SC for methods execution. These conditions are boolean expressions defined in terms of abstract states so they do not refer to particular implementations. For the example being considered: preconditions: put:!full; get:!empty; In practice, abstract states depend either on instance variables or conditions that cannot be distinguished with the set of instance variables (i.e. history-only sensitiveness of states). Thus, it is possible to identify two kind of abstract states: those involving instance variables and those not involving them. For the former a functional access is provided and for the latter variables only for synchronization purposes, synchronization variables, are granted. This variables will be managed by preactions and postactions. This solution for implementing abstract states ensures the separation of concerns and the encapsulation for the behavioral component. external requests message queue PreConditions synch. variables instance variables and methods implementation. functional access real invocation of method abstract states PreActions PostActions basic behavior component synchronization component Figure 2 Graphical representation of the model The outline of the framework is illustrated in figure 2. This mechanism provide a generic object-oriented synchronization model for achieving adaptability in COOLs. It makes up a layer that provides a complete abstract interface which isolates the synchronization component from the implementation details. This means modularity of 4

5 SC, that is, requirement i). All these features can be reused, extended or redefined, in synchronization subclasses. This allows the model to cope with composability of SC, that is, requirement ii). This two statements are exemplified below. Figure 3 illustrates the behavior component of the bounded buffer without specifying anything about synchronization. It defines public methods and a set of properties that characterize the buffer: its length and the maximum number of elements that it can contain. In figure 4, two possible synchronization specifications for the bounded buffer are shown. class B_buff { protected int max, count, head, tail; protected int[] buffer; // Properties int length() { return count; int maximum() { return max; for (i=0;i<buffer.length;i++) buffer[i]=0; public void put (int element) { buffer[tail]=element; tail=++tail % max; count++; // Constructor and public methods B_buff(int size) { max=size; count=head=tail=0; buffer = new int[size]; public int get () { // implementation of get Figure 3 Behavior of the buffer without synchronization It must be observed that we have divided the synchronization constraints for the bounded buffer in two different policies: a consumer/producer policy, which deals with the problem of placing/taking elements when the buffer is full/empty, and a mutex policy, which manages the concurrent access to the buffer object. These components can be applied to the buffer at the same time, but as different entities. We could mix these two policies in one, but this choice would restrict programmer's easiness to take decisions about them separately, making the management of the synchronization aspect more difficult. Whereas the first policy deals with concurrency control for incoming messages according to the current state of the object, the second one deals with intra-object concurrency control at the level of method execution. synchronization_class Prodcons { abstract_states: FULL: {δ.length()==δ.maximum() EMPTY: {δ.length()==0 preconditions: place:!full; take:!empty; ; Figure 4.1 Prodcons class synchronization_class Mutex { mutex (put, get); mutexself (put, get); ; Figure 4.2 Mutex class The first synchronization component, prodcons, is defined in function of two abstract states, FULL and EMPTY. After defining these states, the preconditions for accessing the methods are established: place cannot be executed when the object is at the FULL state, and the same holds for take when the object is at the EMPTY state. Two important things must be noted. On the one hand, this synchronization policy doesn t refer to a particular behavioral component. In fact, nothing is said about the buffer. There is no way to know that we are synchronizing a buffer. The letter δ denotes the generic object we are referring to, not a particular one. On the other hand, the name of the methods here (take/place) is different from those in the behavioral component (get/put). These two facts make it possible for this synchronization policy to be applied to different behavioral components with different functionality and different interfaces but the same synchronization rules, that is, polymorphism of synchronization policies [San96]. Of course, a mechanism for a later binding between both components is needed. This mechanism will be outlined in next section. 5

6 With respect to the mutex synchronization component, two new constructions are introduced here to simplify a typical question in concurrent programming: the mutual exclusion problem. The construction mutex(a, b, c,...) means: 'I want the methods a, b, c,... to be executed in mutual exclusion one with each other', and the construction mutexself(a, b, c,...) means 'I want the methods a, b, c,... to be executed in mutual exclusion with themselves'. So, in figure 4.2 it is established a mutual exclusion between threads accessing the put and get methods. This syntax for mutex and mutexself has been adapted from that in [Lop97]. Once the synchronization aspect has been separated by means of abstract states, the problems related to reuse identified in [San97] can be easily solved. Let us suppose now we want to extend the functionality of the buffer by introducing a new method gget() whose behavior is the same as get() but with the particularity that it cannot be executed after a put() operation. The synchronization constraints for gget() are an extension of those of get(). So, we only have to extend the behavior component with the new added feature and to extend the synchronization component with the new added constraint. This is illustrated in figure 5.1 and 5.2. Both classes are extended independently, without interferences between them. In fact, two different hierarchies of classes are being obtained as shown in figure 6. This figure also reveals that a composition mechanism is needed. synchronization_class Ggetprod extends Prodcons { synchronization: int after_put = 0; abstract_states: LAST_PUT: { after_put == 1 preconditions: gget:!last_put; preactions: place: {after_put=1; allmethodsexcept(place): {after_put=0; Fig 5.1 Extending and reusing synchronization inheritance Behavior 1 Behavior 2 composition composition Synchronized Object Behavior 1 Object Behavior 1 Object Behavior 2 inheritance class GgetBuffer extends B_buff { public int g_get() { return super.get(); Fig 5.2 Extending and reusing behavior inheritance Synchronized Object inheritance... Behavior 2... Figure 6 Different hierarchies for different aspects 3.2 Composing aspects: the composition language. Now that the synchronization aspect has been successfully separated from the object behavior in a different component, the requirement iv) for adaptability in COOLs establishes that a composition mechanism must be provided in order to obtain the executable piece of code. Our contention is that this composition process must be able to be done either at compile time or run-time in order to allow a qualified system operator to take decisions about synchronization policies during the execution of the application. We could think about using one of the existing composition techniques such as inheritance or delegation. However, the current composition techniques are not adequate for our purposes. For example, in the first version of our model [Her96] inheritance was used as composition tool. It worked fine when solving interferences between object-oriented and concurrent paradigms, but it resulted too static to make run-time decisions. In Composition Filters [Ber94], a particular delegation-based composition is used. Here is possible, under certain conditions, to dynamically change the delegated objects. The problem is that those conditions must be explicitly declared in the application code before compilation doing so the mechanism too restricted for our purposes. In the Disguises Model we resort to a third component, a composition language, to make feasible the composition process at run-time. In its simplest form, this language has the following pattern: compose behavior_component with synchronization_component 6

7 which results in a synchronized object in the sense of figure 6. This is the syntax to be used by an external operator of the application wanting to add a new synchronization component to an existing behavior component while the application is running. However, when the composition is wanted to be done when writing the application code because the programmer knows a priori what synchronization policies have to be attached to the object, then the previous syntax is substituted by: behavior_component.addcomponent (synchronization_component) where addcomponent is a method defined in an automatically inherited superclass which we call object manager. In fact, and getting down to the implementation level, the composition language interacts with this object manager which is a superclass of all the instantiated behavior components. The object manager offers several public methods like addcomponent, removecomponent or replacecomponent among others. These methods allow the programmer to write code inside the application for adding, removing or replacing synchronization components when it is known a priori under which circumstances they must be added, removed or replaced during the execution of the application. However, when such circumstances are not known when writing the code, and there are decisions about synchronization that have to be taken at run-time, then the first syntax must be used outside the application. The relationship between the object manager and the synchronized behavior is shown in figure 7 in an OMT like notation. As we can see, the object manager makes use of a run-time loader of synchronization classes 1. Such classes are stored in a appropriate data structure to be managed by the methods of the object manager. This data structure contains the preconditions, preactions and postactions for each of the methods in the synchronized behavior. The loader of synchronization classes also checks the compatibility of the synchronization component with the behavior. Next a simple example to illustrate the applicability of the proposed composition language is shown. object manager data structure for synchronization policies addcomponent ( newcomp) removecomponent (oldcomp) replacecomponent (oldcomp, newcomp) removeallcomponents ( ) existcomponent (acomp)... run-time loader of synchronization policies synchronized behavior methods of behavior component Figure 7 Relation between the object manager and the synchronized behavior Examples of applicability Let us consider an object buff belonging to the bounded-buffer class and the Mutex synchronization class defined in figure 4.2. And let us suppose that, before executing the application, they have been composed by means of: buff.addcomponent (Mutex) After several steps of execution of the object buff, we could observe how it can reach negative values in its length (figure 8). This is so because there is no restrictions on get operations. They can be executed even if the buffer is empty. If the buffer is required to work correctly but without stopping the application because, for example, the considered application is a critical control system, then it is needed at run-time to add a synchronization policy like Prodcons, shown in figure 4.1, in order to restrict put and get operations. The syntax for this is shown below. It is also illustrated at the bottom of figure 8, at the command line. 1 This run-time loader makes use of the ClassLoader Java facility. 7

8 compose buff with Prodcons where put is place and get is take It must be noted that a binding between method names is necessary. This binding may also be done with parameters, that is, with the entire signature of methods. Mutex compose buff with Prodcons where put is place and get is take Figure 8 Adding synchronization policies at run-time Let us consider now that, due to certain circumstances, we are interested in maintaining the number of elements of the buffer between 5 and the maximum capacity. In this case, there are two possible options. On the one hand, we can modify the synchronization policy currently applied (Prodcons) and on the other hand, we can define a new synchronization policy that will replace the old one. If the choice is the first one, we only have to edit the Prodcons class, to make the appropriate changes and, after saving it, we have to use: reload in buff Prodcons which replace the old version of Prodcons with the new one. On the contrary, if we choose the second option, a new policy can be defined as in figure 9. Then, we only have to remove the old policy and to add the new one. This is done with: replace in buff Prodcons by Prodcons5 From the moment that the original policy Prodcons is removed and this new policy is added, the access to the get method is blocked until the number of elements in buff is five or greater. synchronization_class Prodcons5 extends Prodcons { abstract_states: EMPTY: {δ.length() <= 5 ; Of course, the examples here introduced are too simplified and utopian. However, the reader must note the implications and the actual applicability in real control systems. Currently, many accidents in this kind of systems occur because something relevant was not taken into account when designing the code and, when the problem arises, the right decision can not be taken at run-time. 4 Related Works Figure 9 Prodcons5 synchronization policy Since the early birth of concurrent object-oriented languages several interferences between the two considered paradigms were detected [Pap89, Mat93]. From the point of view of adaptability the main problem is the mixing of the two considered aspects: synchronization and behavior. Since this problem was identified, there have been several proposals trying to separate both aspects with a certain degree of success. However, none of them deals with the new feature presented in this paper, the dynamic change of synchronization policies at run-time. 8

9 The model integrated in DRAGOON [Atk91] perhaps is one of the first approaches trying to separate the synchronization behavior from the object behavior. It provides two different kind of class for both aspects. But, whereas behavior can be easily extended by using inheritance, there is not a provided mechanism by which to extend the synchronization classes. Composition Filters [Ber94] is another relevant approach that enforces separation of concerns. However, although the concerns are separated, they remains in the same component doing so an impossible task to apply the same synchronization policy to different objects, that is, polymorphism of SC. This approach uses a delegation-based inheritance as composition mechanism. Although it is possible to change the delegated objects during the execution phase, the spectrum of possible delegated objects have to be defined in filters when writing the code. Therefore, new relations between concerns are not allowed to be defined at run-time. A model that takes the separation of concerns to its last consequences is that proposed in [McH94]. In this work, Generic Policies (GSP) are introduced as a way to obtain polymorphism of SC. In this proposal, McHale does not allow references to instance variables in synchronization constraints neither directly nor indirectly. Instead, he duplicates instance variables inside the synchronization code. Moreover, he also has to duplicate the code to handle these duplicated variables. However, this decision may introduce an unnecessary overhead if this code is large and complex. In addition, there is no means by which to make decisions at run-time. The work nearest to the Disguises Model is that presented in [Lop97] and developed under the concepts of aspect-oriented programming. In this work, a different language for the synchronization aspect, the D-language, is presented. Although this aspect is defined in a separated component it is allowed to reference directly the instance variables defined in the behavior component from the synchronization component, breaking so the substitutability concept. The synchronization and behavior components are composed using an Aspect Weaver Tool, but the resulting piece of code is not susceptible to be adapted at run-time in the sense here presented [Lop97]. Finally, there are other proposals separating aspects that use Java as the supporting language. In [Hol97] the synchronization rings are presented to specify the different steps of a message when entering to and exiting from an object. In [Rei97] the aspects are separated by annotating the behavioral code. However, neither [Hol97] nor [Rei97] address the dynamic change of synchronization policies. The table below summarizes the relation between the related works and the adaptability requirements established in section 2. Separation of Concerns Composability of SC Run-time adaptability DRAGOON Yes No No Composition Filters Yes 1 Yes No GSP Yes Yes No D-language Yes 2 Yes No rings Yes Yes No Annotated behavior Yes Yes No Disguises Model Yes Yes Yes 1 but in the same component. 2 but breaking encapsulation. 5 Conclusions and Future Works In this paper we have firstly introduced the notion of run-time adaptability in COOLs. Then, the main problems for achieving this adaptability have been shown and the separation of concerns principle has been presented as a good approach to achieve our purposes. Moreover, a set of four requirements have been identified as necessary in order to address the demanded run-time adaptability. Then, the Disguises Model has been introduced. This model fulfils the four requirements for adaptability. Whereas the model allows behavioral code to be written in a standard language like Java, it provides a different language for the specification of synchronization components and a third language for the specification of the composition rules between the synchronization and behavioral aspects. This composition language allows synchronization policies to be added, replaced or reconfigured at run-time, which is the main contribution of the proposed model. Although the techniques here presented have been satisfactorily integrated in Java, they can be easily applied to other languages. 9

10 In the same way that we can think separately about synchronization, the same criteria can be followed with other aspects such as real-time, distribution or coordination. Other members of our research group are beginning to deal with these aspects in the same sense presented here [Her97, Pap97]. Currently, we are applying the Disguises Model to the development of a traffic control system where run-time decisions must be taken in order to adapt the application to unexpected situations. In this project the composition language becomes a composition visual tool that makes easier the composition process. We think that the experience with this project will help us in improving the model in the future. References [Atk91] C. Atkinson, S. Goldsack, A. Di Maio and R. Bayan. Object-Oriented Concurrency and Distribution in DRAGOON. Journal of Object-Oriented Programming, March/April 1991 [Aks96] M. Aksit, B. Tekinerdogan, L Bergmans. Achieving Adaptability through separation and composition of concerns. In Max Mühlhäuser editor, Special Issues in Object-Oriented Programming,, Workshop Reader of the ECOOP 96, Linz, Austria. [Ber94] L. Bergmans. Composing Concurrent Objects. Ph.D. Thesis, University of Twente, [Ber96] L. Bergmans, M. Aksit. Composing and Real-time Constraints. Journal of Parallel and Distributed Programming, Vol. 36 N 1, July, [Blo79] T. Bloom. Evaluating Mechanisms. Proceedings of the Seventh Symposium on OS Principles, pp [Her96] J. Hernández, F. Sánchez, M. Barrena, J.M. Murillo, A. Polo. Reusability, Extensibility and Polymorphism of Constraints in Concurrent Object-Oriented Languages. Technical Report nº 1/96. March [Her97] J. Hernández, M. Papathomas, J.M. Murillo, F. Sánchez. Coordinating Concurrent Objects: How to deal with the coordination aspect? Position paper in Aspect-Oriented Programming Workshop in ECOOP 97, Jyväskylä, Finland. Available at: [Hol97] D. Holmes. Aspects of. Position paper in Aspect-Oriented Programming Workshop in ECOOP 97, Jyväskylä, Finland. [Hur95] W. Hursch, C. V. Lopes. Separation of Concerns. Northeastern University, February [Kic97] G. Kiczales et. al. Aspect-Oriented Programming. Proceedings of ECOOP 97, Jyvaskyla, Finland, June [Lea96] D. Lea. Concurrent Programming in Java TM : design principles and patterns. Addison Wesley, [Lop97] C.V. Lopes. D: A Language Framework for Distributed Programming. Position paper in Aspect-Oriented Programming Workshop of ECOOP 97, Jyvaskyla, Finland, June [Mat93] [McH94] [Nie95] [Pap89] [Pap97] [Rei97] [San96] [San97] [Tek96] S. Matsuoka, A. Yonezawa. Inheritance Anomaly in Object-Oriented Concurrent Programming Languages. in Research Directions in Concurrent Object-Oriented Programming Languages. Ed.: G. Agha, P. Wegner and A. Yonezawa, MIT Press, April 1993, pages C. McHale. in Concurrent, Object-oriented Languages: Expressive Power, Genericity and Inheritance. PhD thesis, Univerity of Dublin, Trinity College. O. Nierstrasz and L. Dami. Component-Oriented Software Technology, in Obtect-Oriented Software Composition. O. Nierstrasz and D. Tsichritzis eds., Prentice-Hall, M. Papathomas. Concurrency Issues in Object-Oriented programming languages. In D. Tsichritzis, editor, Object Oriented Development, Chapter 12, pp: , University of Geneva, 1989 M. Papathomas, J. Hernández, J.M. Murillo, F. Sánchez, Inheritance and Expressive Power in Concurrent Object-Oriented Programming. Proceedings of the LMO Conference, Roscoff, France, Oct S. Reitzner. Classes: Splitting Inheritance Concepts. TR-I , Computer Science Department, Friedrich- Alexander Univeristy, Germany. F. Sánchez, J. Hernández, M. Barrena, J. M. Murillo, A. Polo. Issues in Composability of Constraints in Concurrent Object-Oriented Languages. In Max Mühlhäuser editor, Special Issues in Object-Oriented Programming,, Workshop Reader of the ECOOP 96, Linz, Austria. F. Sánchez, J. Hernández, J. M. Murillo, E. Pedraza. Run-time adaptability in COOLs. Technical Report TR3/97. Computer Science Department. University of Extremadura. September B. Tekinerdogan, M. Aksit. Adaptability in Object-Oriented Software Development: Workshop report. In Max Mühlhäuser editor, Special Issues in Object-Oriented Programming,, Workshop Reader of the ECOOP 96, Linz, Austria. 10

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

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

Java Threads and intrinsic locks

Java Threads and intrinsic locks Java Threads and intrinsic locks 1. Java and OOP background fundamentals 1.1. Objects, methods and data One significant advantage of OOP (object oriented programming) is data encapsulation. Each object

More information

Composition and Separation of Concerns in the Object-Oriented Model

Composition and Separation of Concerns in the Object-Oriented Model ACM Computing Surveys 28A(4), December 1996, http://www.acm.org/surveys/1996/. Copyright 1996 by the Association for Computing Machinery, Inc. See the permissions statement below. Composition and Separation

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

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

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

More information

CJava: Introducing Concurrent Objects in Java

CJava: Introducing Concurrent Objects in Java CJava: Introducing Concurrent Objects in Java Gianpaolo Cugola and Carlo Ghezzi [cugola,ghezzi]@elet.polimi.it Dipartimento di Elettronica e Informazione Politecnico di Milano P.za Leonardo da Vinci 32

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

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

A FRAMEWORK FOR ACTIVE OBJECTS IN.NET

A FRAMEWORK FOR ACTIVE OBJECTS IN.NET STUDIA UNIV. BABEŞ BOLYAI, INFORMATICA, Volume LV, Number 3, 2010 A FRAMEWORK FOR ACTIVE OBJECTS IN.NET DAN MIRCEA SUCIU AND ALINA CUT Abstract. Nowadays, the concern of computer science is to find new

More information

A computational model for an object-oriented operating system

A computational model for an object-oriented operating system A computational model for an object-oriented operating system Lourdes Tajes Martínez, Fernando Álvarez García, Marian Díaz Fondón, Darío Álvarez Gutiérrez y Juan Manuel Cueva L? ovelle Abstract--The design

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

Information Hiding and Aspect-Oriented Modeling

Information Hiding and Aspect-Oriented Modeling Information Hiding and Aspect-Oriented Modeling Wisam Al Abed and Jörg Kienzle School of Computer Science, McGill University Montreal, QC H3A2A7, Canada Wisam.Alabed@mail.mcgill.ca, Joerg.Kienzle@mcgill.ca

More information

40 Behaviour Compatibility

40 Behaviour Compatibility 40 Behaviour Compatibility [2] R. De Nicola, Extentional Equivalences for Transition Systems, Acta Informatica, vol. 24, pp. 21-237, 1987. [3] J. Gray, Notes on Data Base Operating Systems, in Operating

More information

Unit 1 : Principles of object oriented programming

Unit 1 : Principles of object oriented programming Unit 1 : Principles of object oriented programming Difference Between Procedure Oriented Programming (POP) & Object Oriented Programming (OOP) Divided Into Importance Procedure Oriented Programming In

More information

Real-Time Specification Inheritance Anomalies and Real-Time Filters

Real-Time Specification Inheritance Anomalies and Real-Time Filters Real-Time Specification Inheritance Anomalies and Real-Time Filters Mehmet Aksit Jan Bosch William van der Sterren * Lodewijk Bergmans TRESE project Department of Computer Science University of Twente

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

6.001 Notes: Section 6.1

6.001 Notes: Section 6.1 6.001 Notes: Section 6.1 Slide 6.1.1 When we first starting talking about Scheme expressions, you may recall we said that (almost) every Scheme expression had three components, a syntax (legal ways of

More information

Improving Software Modularity using AOP

Improving Software Modularity using AOP B Vasundhara 1 & KV Chalapati Rao 2 1 Dept. of Computer Science, AMS School of Informatics, Hyderabad, India 2 CVR College of Engineering, Ibrahimpatnam, India E-mail : vasu_venki@yahoo.com 1, chalapatiraokv@gmail.com

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

CS112 Lecture: Defining Instantiable Classes

CS112 Lecture: Defining Instantiable Classes CS112 Lecture: Defining Instantiable Classes Last revised 2/3/05 Objectives: 1. To describe the process of defining an instantiable class 2. To discuss public and private visibility modifiers. Materials:

More information

Implementation of Process Networks in Java

Implementation of Process Networks in Java Implementation of Process Networks in Java Richard S, Stevens 1, Marlene Wan, Peggy Laramie, Thomas M. Parks, Edward A. Lee DRAFT: 10 July 1997 Abstract A process network, as described by G. Kahn, is a

More information

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

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

More information

Aspect-Based Workflow Evolution

Aspect-Based Workflow Evolution Aspect-Based Workflow Evolution Boris Bachmendo and Rainer Unland Department of Mathematics and Computer Science University of Essen, D - 45117 Essen {bachmendo, unlandr}@cs.uni-essen.de Abstract. In this

More information

HOW AND WHEN TO FLATTEN JAVA CLASSES?

HOW AND WHEN TO FLATTEN JAVA CLASSES? HOW AND WHEN TO FLATTEN JAVA CLASSES? Jehad Al Dallal Department of Information Science, P.O. Box 5969, Safat 13060, Kuwait ABSTRACT Improving modularity and reusability are two key objectives in object-oriented

More information

Reflective Java and A Reflective Component-Based Transaction Architecture

Reflective Java and A Reflective Component-Based Transaction Architecture Reflective Java and A Reflective Component-Based Transaction Architecture Zhixue Wu APM Ltd., Poseidon House, Castle Park, Cambridge CB3 0RD UK +44 1223 568930 zhixue.wu@citrix.com ABSTRACT In this paper,

More information

Applying Idioms for Synchronization Mechanisms Synchronizing communication components for the One-dimensional Heat Equation

Applying Idioms for Synchronization Mechanisms Synchronizing communication components for the One-dimensional Heat Equation Applying Idioms for Synchronization Mechanisms Synchronizing communication components for the One-dimensional Heat Equation Jorge L. Ortega Arjona 1 Departamento de Matemáticas Facultad de Ciencias, UNAM

More information

Pattern-Oriented Development with Rational Rose

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

More information

Adding Contracts to C#

Adding Contracts to C# Adding Contracts to C# Peter Lagace ABSTRACT Design by contract is a software engineering technique used to promote software reliability. In order to use design by contract the selected programming language

More information

NOTES ON OBJECT-ORIENTED MODELING AND DESIGN

NOTES ON OBJECT-ORIENTED MODELING AND DESIGN NOTES ON OBJECT-ORIENTED MODELING AND DESIGN Stephen W. Clyde Brigham Young University Provo, UT 86402 Abstract: A review of the Object Modeling Technique (OMT) is presented. OMT is an object-oriented

More information

Domain-Driven Development with Ontologies and Aspects

Domain-Driven Development with Ontologies and Aspects Domain-Driven Development with Ontologies and Aspects Submitted for Domain-Specific Modeling workshop at OOPSLA 2005 Latest version of this paper can be downloaded from http://phruby.com Pavel Hruby Microsoft

More information

The Adaptive Arena: A Concurrent Object-Oriented Model

The Adaptive Arena: A Concurrent Object-Oriented Model The Adaptive Arena: A Concurrent Object-Oriented Model Abstract Tzilla Elrad cselrad@mina.cns.iit.edu Atef Bader abader@lucent.com Most of the current concurrent object-oriented approaches do not address

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

AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS

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

More information

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

Chapter 10 Classes Continued. Fundamentals of Java

Chapter 10 Classes Continued. Fundamentals of Java Chapter 10 Classes Continued Objectives Know when it is appropriate to include class (static) variables and methods in a class. Understand the role of Java interfaces in a software system and define an

More information

Towards a formal model of object-oriented hyperslices

Towards a formal model of object-oriented hyperslices Towards a formal model of object-oriented hyperslices Torsten Nelson, Donald Cowan, Paulo Alencar Computer Systems Group, University of Waterloo {torsten,dcowan,alencar}@csg.uwaterloo.ca Abstract This

More information

CS112 Lecture: Defining Classes. 1. To describe the process of defining an instantiable class

CS112 Lecture: Defining Classes. 1. To describe the process of defining an instantiable class CS112 Lecture: Defining Classes Last revised 2/3/06 Objectives: 1. To describe the process of defining an instantiable class Materials: 1. BlueJ SavingsAccount example project 2. Handout of code for SavingsAccount

More information

Software Paradigms (Lesson 3) Object-Oriented Paradigm (2)

Software Paradigms (Lesson 3) Object-Oriented Paradigm (2) Software Paradigms (Lesson 3) Object-Oriented Paradigm (2) Table of Contents 1 Reusing Classes... 2 1.1 Composition... 2 1.2 Inheritance... 4 1.2.1 Extending Classes... 5 1.2.2 Method Overriding... 7 1.2.3

More information

A Tour of Hybrid 1. O.M. Nierstrasz

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

More information

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

Synthesizing Communication Middleware from Explicit Connectors in Component Based Distributed Architectures

Synthesizing Communication Middleware from Explicit Connectors in Component Based Distributed Architectures Synthesizing Communication Middleware from Explicit Connectors in Component Based Distributed Architectures Dietmar Schreiner 1,2 and Karl M. Göschka 1 1 Vienna University of Technology Institute of Information

More information

JOURNAL OF OBJECT TECHNOLOGY

JOURNAL OF OBJECT TECHNOLOGY JOURNAL OF OBJECT TECHNOLOGY Online at www.jot.fm. Published by ETH Zurich, Chair of Software Engineering JOT, 2002 Vol. 1, No. 1, May-June 2002 Design principles for highly reusable concurrent object-oriented

More information

Modeling Systems Using Design Patterns

Modeling Systems Using Design Patterns Modeling Systems Using Design Patterns Jaroslav JAKUBÍK Slovak University of Technology Faculty of Informatics and Information Technologies Ilkovičova 3, 842 16 Bratislava, Slovakia jakubik@fiit.stuba.sk

More information

Using AOP to build complex data centric component frameworks

Using AOP to build complex data centric component frameworks Using AOP to build complex data centric component frameworks Tom Mahieu, Bart Vanhaute, Karel De Vlaminck, Gerda Janssens, Wouter Joosen Katholieke Universiteit Leuven Computer Science Dept. - Distrinet

More information

Lesson 10A OOP Fundamentals. By John B. Owen All rights reserved 2011, revised 2014

Lesson 10A OOP Fundamentals. By John B. Owen All rights reserved 2011, revised 2014 Lesson 10A OOP Fundamentals By John B. Owen All rights reserved 2011, revised 2014 Table of Contents Objectives Definition Pointers vs containers Object vs primitives Constructors Methods Object class

More information

Object-Oriented Programming Paradigm

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

More information

Cover Page. The handle holds various files of this Leiden University dissertation

Cover Page. The handle   holds various files of this Leiden University dissertation Cover Page The handle http://hdl.handle.net/1887/22891 holds various files of this Leiden University dissertation Author: Gouw, Stijn de Title: Combining monitoring with run-time assertion checking Issue

More information

Working Definition of Components

Working Definition of Components STWW-Programma SEESCOA: Software Engineering for Embedded Systems using a Component-Oriented Approach Working Definition of Components Deliverable D1.4 Contents INTRODUCTION...3 COMPONENTS...4 COMPONENT

More information

Deriving design aspects from canonical models

Deriving design aspects from canonical models Deriving design aspects from canonical models Bedir Tekinerdogan & Mehmet Aksit University of Twente Department of Computer Science P.O. Box 217 7500 AE Enschede, The Netherlands e-mail: {bedir aksit}@cs.utwente.nl

More information

CPS221 Lecture: Threads

CPS221 Lecture: Threads Objectives CPS221 Lecture: Threads 1. To introduce threads in the context of processes 2. To introduce UML Activity Diagrams last revised 9/5/12 Materials: 1. Diagram showing state of memory for a process

More information

Modeling variability with UML

Modeling variability with UML Modeling variability with UML Matthias Clauß Intershop Research Software Engineering Group Intershop, Jena Dresden University of Technology Matthias.Clauss@gmx.de Keywords: product families, domain modeling,

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

A Mechanism for Runtime Evolution of Objects

A Mechanism for Runtime Evolution of Objects A Mechanism for Runtime Evolution of Objects Yasuhiro Sugiyama Department of Computer Science Nihon University Koriyama, Japan sugiyama@ce.nihon-u.ac.jp 1. Runtime Version Management of Objects for Software

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

System-On-Chip Architecture Modeling Style Guide

System-On-Chip Architecture Modeling Style Guide Center for Embedded Computer Systems University of California, Irvine System-On-Chip Architecture Modeling Style Guide Junyu Peng Andreas Gerstlauer Rainer Dömer Daniel D. Gajski Technical Report CECS-TR-04-22

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

Object Oriented Paradigm

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

More information

On the Concurrent Object Model of UML *

On the Concurrent Object Model of UML * On the Concurrent Object Model of UML * Iulian Ober, Ileana Stan INPT-ENSEEIHT, 2, rue Camichel, 31000 Toulouse, France Phone (+33) 5.61.19.29.39, Fax (+33) 5.61.40.84.52 {iulian.ober, ileana.stan}@enseeiht.fr

More information

STUDENT LESSON A20 Inheritance, Polymorphism, and Abstract Classes

STUDENT LESSON A20 Inheritance, Polymorphism, and Abstract Classes STUDENT LESSON A20 Inheritance, Polymorphism, and Abstract Classes Java Curriculum for AP Computer Science, Student Lesson A20 1 STUDENT LESSON A20 Inheritance, Polymorphism, and Abstract Classes INTRODUCTION:

More information

Modeling Aspect-Oriented Change Realizations

Modeling Aspect-Oriented Change Realizations Modeling Aspect-Oriented Change Realizations Erasmus Mobility at Lancaster University Lecture 1 Valentino Vranić Institute of Informatics and Software Engineering Faculty of Informatics and Information

More information

An Object-Oriented Model for Extensible Concurrent Systems: The Composition-Filters Approach

An Object-Oriented Model for Extensible Concurrent Systems: The Composition-Filters Approach An Object-Oriented Model for Extensible Concurrent Systems: The Composition-Filters Approach Lodewijk Bergmans Mehmet Aksit Ken Wakita * Faculty of Computer Science University of Twente Enschede, The Netherlands

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

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

Lecture 8: September 30

Lecture 8: September 30 CMPSCI 377 Operating Systems Fall 2013 Lecture 8: September 30 Lecturer: Prashant Shenoy Scribe: Armand Halbert 8.1 Semaphores A semaphore is a more generalized form of a lock that can be used to regulate

More information

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

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

More information

Impact of Dependency Graph in Software Testing

Impact of Dependency Graph in Software Testing Impact of Dependency Graph in Software Testing Pardeep Kaur 1, Er. Rupinder Singh 2 1 Computer Science Department, Chandigarh University, Gharuan, Punjab 2 Assistant Professor, Computer Science Department,

More information

Exploring Dynamic Compilation Facility in Java

Exploring Dynamic Compilation Facility in Java Exploring Dynamic Compilation Facility in Java Dingwei He and Kasi Periyasamy Computer Science Department University of Wisconsin-La Crosse La Crosse, WI 54601 kasi@cs.uwlax.edu Abstract Traditional programming

More information

Concept as a Generalization of Class and Principles of the Concept-Oriented Programming

Concept as a Generalization of Class and Principles of the Concept-Oriented Programming Computer Science Journal of Moldova, vol.13, no.3(39), 2005 Concept as a Generalization of Class and Principles of the Concept-Oriented Programming Alexandr Savinov Abstract In the paper we describe a

More information

Appendix A - Glossary(of OO software term s)

Appendix A - Glossary(of OO software term s) Appendix A - Glossary(of OO software term s) Abstract Class A class that does not supply an implementation for its entire interface, and so consequently, cannot be instantiated. ActiveX Microsoft s component

More information

The major elements of the object-oriented model

The major elements of the object-oriented model The major elements of the object-oriented model Abstraction Encapsulation Inheritance Modularity Suggested Reading: Bruce Eckel, Thinking in Java (Fourth Edition) Reusing Classes Hierarchy 2 An abstraction

More information

JOURNAL OF OBJECT TECHNOLOGY

JOURNAL OF OBJECT TECHNOLOGY JOURNAL OF OBJECT TECHNOLOGY Online at www.jot.fm. Published by ETH Zurich, Chair of Software Engineering JOT, 2002 Vol. 1, no. 4, September-October 2002 Eiffel Assertions and the External Structure of

More information

Inheritance, Polymorphism, and Interfaces

Inheritance, Polymorphism, and Interfaces Inheritance, Polymorphism, and Interfaces Chapter 8 Inheritance Basics (ch.8 idea) Inheritance allows programmer to define a general superclass with certain properties (methods, fields/member variables)

More information

Model Driven Development of Context Aware Software Systems

Model Driven Development of Context Aware Software Systems Model Driven Development of Context Aware Software Systems Andrea Sindico University of Rome Tor Vergata Elettronica S.p.A. andrea.sindico@gmail.com Vincenzo Grassi University of Rome Tor Vergata vgrassi@info.uniroma2.it

More information

OPTIMIZATION, OPTIMAL DESIGN AND DE NOVO PROGRAMMING: DISCUSSION NOTES

OPTIMIZATION, OPTIMAL DESIGN AND DE NOVO PROGRAMMING: DISCUSSION NOTES OPTIMIZATION, OPTIMAL DESIGN AND DE NOVO PROGRAMMING: DISCUSSION NOTES MILAN ZELENY Introduction Fordham University, New York, USA mzeleny@fordham.edu Many older texts, with titles like Globally Optimal

More information

OPERATING SYSTEMS. Prescribed Text Book. Operating System Principles, Seventh Edition. Abraham Silberschatz, Peter Baer Galvin and Greg Gagne

OPERATING SYSTEMS. Prescribed Text Book. Operating System Principles, Seventh Edition. Abraham Silberschatz, Peter Baer Galvin and Greg Gagne OPERATING SYSTEMS Prescribed Text Book Operating System Principles, Seventh Edition By Abraham Silberschatz, Peter Baer Galvin and Greg Gagne 1 DEADLOCKS In a multi programming environment, several processes

More information

Patterns for polymorphic operations

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

More information

Exheritance Class Generalisation Revived

Exheritance Class Generalisation Revived Exheritance Class Generalisation Revived Markku Sakkinen Information Technology Research Institute University of Jyväskylä P.O.Box 35 (Agora) FIN-40351 Jyväskylä Finland sakkinenm@acm.org or sakkinen@cs.jyu.fi

More information

Object Oriented Programming in Java. Jaanus Pöial, PhD Tallinn, Estonia

Object Oriented Programming in Java. Jaanus Pöial, PhD Tallinn, Estonia Object Oriented Programming in Java Jaanus Pöial, PhD Tallinn, Estonia Motivation for Object Oriented Programming Decrease complexity (use layers of abstraction, interfaces, modularity,...) Reuse existing

More information

Interprocess Communication By: Kaushik Vaghani

Interprocess Communication By: Kaushik Vaghani Interprocess Communication By: Kaushik Vaghani Background Race Condition: A situation where several processes access and manipulate the same data concurrently and the outcome of execution depends on the

More information

Chapter No. 2 Class modeling CO:-Sketch Class,object models using fundamental relationships Contents 2.1 Object and Class Concepts (12M) Objects,

Chapter No. 2 Class modeling CO:-Sketch Class,object models using fundamental relationships Contents 2.1 Object and Class Concepts (12M) Objects, Chapter No. 2 Class modeling CO:-Sketch Class,object models using fundamental relationships Contents 2.1 Object and Class Concepts (12M) Objects, Classes, Class Diagrams Values and Attributes Operations

More information

Operating Systems. Designed and Presented by Dr. Ayman Elshenawy Elsefy

Operating Systems. Designed and Presented by Dr. Ayman Elshenawy Elsefy Operating Systems Designed and Presented by Dr. Ayman Elshenawy Elsefy Dept. of Systems & Computer Eng.. AL-AZHAR University Website : eaymanelshenawy.wordpress.com Email : eaymanelshenawy@yahoo.com Reference

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

When Java technology burst onto the Internet scene in 1995,

When Java technology burst onto the Internet scene in 1995, MOBILE CODE SECURITY SECURE JAVA CLASS LOADING The class loading mechanism, LI GONG Sun Microsystems central to Java, plays a key role in JDK 1.2 by enabling When Java technology burst onto the Internet

More information

Separating Product Variance and Domain Concepts in the Specification of Software Product Lines

Separating Product Variance and Domain Concepts in the Specification of Software Product Lines Separating Product Variance and Domain Concepts in the Specification of Software Product Lines Pertti Kellomäki Software Systems Laboratory, Tampere University of Technology P.O. Box 553, FIN-33101 Tampere,

More information

Distributed Objects and Remote Invocation. Programming Models for Distributed Applications

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

More information

Software Service Engineering

Software Service Engineering Software Service Engineering Lecture 4: Unified Modeling Language Doctor Guangyu Gao Some contents and notes selected from Fowler, M. UML Distilled, 3rd edition. Addison-Wesley Unified Modeling Language

More information

Behavioral Design Patterns Used in Data Structures Implementation

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

More information

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

CHAPTER 12 INHERITANCE AND CLASS HIERARCHIES

CHAPTER 12 INHERITANCE AND CLASS HIERARCHIES These are sample pages from Kari Laitinen s book "A Natural Introduction to Computer Programming with Java". For more information, please visit http://www.naturalprogramming.com/javabook.html CHAPTER 12

More information

Proceedings of the 8 th International Conference on Applied Informatics Eger, Hungary, January 27 30, Vol. 2. pp Virtuoso Virtuality

Proceedings of the 8 th International Conference on Applied Informatics Eger, Hungary, January 27 30, Vol. 2. pp Virtuoso Virtuality Proceedings of the 8 th International Conference on Applied Informatics Eger, Hungary, January 27 30, 2010. Vol. 2. pp. 375 381. Virtuoso Virtuality Marianna Sipos Department of Information Technology,

More information

Characteristics of Runtime Program Evolution

Characteristics of Runtime Program Evolution Characteristics of Runtime Program Evolution Mario Pukall and Martin Kuhlemann School of Computer Science, University of Magdeburg, Germany {pukall, kuhlemann}@iti.cs.uni-magdeburg.de Abstract. Applying

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

CSCI B522 Lecture 11 Naming and Scope 8 Oct, 2009

CSCI B522 Lecture 11 Naming and Scope 8 Oct, 2009 CSCI B522 Lecture 11 Naming and Scope 8 Oct, 2009 Lecture notes for CS 6110 (Spring 09) taught by Andrew Myers at Cornell; edited by Amal Ahmed, Fall 09. 1 Static vs. dynamic scoping The scope of a variable

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

Generic Modeling using UML extensions for variability

Generic Modeling using UML extensions for variability Generic Modeling using UML extensions for variability Intershop Research Intershop, Jena Matthias Clauß Software Engineering Group Dresden University of Technology M.Clauss@intershop.com September 14,

More information

Dynamic Instantiation-Checking Components

Dynamic Instantiation-Checking Components Dynamic Instantiation-Checking Components Nigamanth Sridhar Electrical and Computer Engineering Cleveland State University 318 Stilwell Hall, 2121 Euclid Ave Cleveland OH 44113 n.sridhar1@csuohio.edu ABSTRACT

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

Using a waiting protocol to separate concerns in the mutual exclusion problem

Using a waiting protocol to separate concerns in the mutual exclusion problem Using a waiting protocol to separate concerns in the mutual exclusion problem Frode V. Fjeld frodef@cs.uit.no Department of Computer Science, University of Tromsø Technical Report 2003-46 November 21,

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