This report summarizes the presentations and discussions of the Third Workshop on Models and Aspects Handling Crosscutting Concerns in MDSD, held in conjunction with the 21st europeanconference on object-oriented Pro...
详细信息
Aliasing is endemic in objectorientedprogramming. Because an object can be modified via any alias, objectoriented programs are hard to understand, maintain, and analyse. Flexible alias protection is a conceptual mo...
详细信息
This report summarises the results of the eighth workshop in a series of workshops on pedagogies and tools for the teaching and learning of object-oriented concepts. The submissions to this year's workshop mainly ...
详细信息
ISBN:
(纸本)354023988X
This report summarises the results of the eighth workshop in a series of workshops on pedagogies and tools for the teaching and learning of object-oriented concepts. The submissions to this year's workshop mainly covered curriculum issues, tool support for teaching, and case studies. Several contributions dealt with teaching object-orientation to non-Majors (junior high-school students, non-Science students). This aspect permeated most of the discussions at the workshop and is also reflected in the conclusions. The workshop gathered 19 participants from nine different countries.
Javari is an extension of Java that supports reference immutability constraints. Programmers write readonly type qualifiers and other constraints, and the Javari typechecker detects mutation errors (incorrect side eff...
详细信息
ISBN:
(纸本)9783540705918
Javari is an extension of Java that supports reference immutability constraints. Programmers write readonly type qualifiers and other constraints, and the Javari typechecker detects mutation errors (incorrect side effects) or verifies their absence. While case studies have demonstrated the practicality and value of Javari, a barrier to usability remains. A Javari program will not typecheck unless all the references in the APIs of libraries it uses are annotated with Javari type qualifiers. Manually converting existing Java libraries to Javari is tedious and error-prone. We present an algorithm for inferring reference immutability in Javari. The flow-insensitive and context-sensitive algorithm is sound and produces a set of qualifiers that typecheck in Javari. The algorithm is precise in that it infers the most readonly qualifiers possible;adding any additional readonly qualifiers will cause the program to not typecheck. We have implemented the algorithm in a tool, Javarifier, that infers the Javari type qualifiers over a set of class files. Javarifier automatically converts Java libraries to Javari. Additionally, Javarifier eases the task of converting legacy programs to Javari by inferring the mutability of every reference in a program. In case studies, Javarifier correctly inferred mutability over Java programs of up to 110 KLOC.
We have investigated the concepts of inheritance and subtyping in order to integrate them in a parallel object-oriented language. In doing so, we have concluded that inheritance and subtyping are two different concept...
详细信息
It is very hard to fix a software failure without being able to reproduce it. However, reproducing a failure is often difficult and time-consuming. This paper proposes a novel technique, ReCrash, that generates multip...
详细信息
ISBN:
(纸本)9783540705918
It is very hard to fix a software failure without being able to reproduce it. However, reproducing a failure is often difficult and time-consuming. This paper proposes a novel technique, ReCrash, that generates multiple unit tests that reproduce a given program failure. During every execution of the target program, ReCrash stores partial copies of method arguments in memory. If the program fails (e.g., crashes), ReCrash uses the saved information to create unit tests reproducing the failure. We present ReCrashJ, an implementation of ReCrash for Java. ReCrashJ reproduced real crashes from Javac, SVNKit, Eclipsec, and BST. ReCrashJ is efficient, incurring 13%-64% performance overhead. If this overhead is unacceptable, then ReCrashJ has another mode that has negligible overhead until a crash occurs and 0%-1.7% overhead until the crash occurs for a second time, at which point the test cases are generated.
An object-oriented language that permits changing the behavior of a class or of a single object is said to support computational reflection. Existing reflective facilities in object-oriented languages are either compl...
详细信息
Context-aware systems keep on emerging in all of our daily activities. To cope with this new situation, programming languages were extended to support the notion of context. Although context-orientedprogramming langu...
详细信息
暂无评论