This article proposes a case study to evaluate the suitability of graph transformation tools for program refactoring. To qualify for this purpose, a graph transformation system must be able to (1) import a graph-based...
详细信息
Fine-tuning the partitioning algorithm for Quick Sort and Kth Element led to investigation of alternative ways of moving the median of three elements into position for the algorithm as used by Naps [1]. One is to full...
详细信息
The box model is a component model for the object-oriented paradigm, that defines components (the boxes) with clear encapsulation boundaries. Having well-defined boundaries is crucial in component-based software devel...
详细信息
ISBN:
(纸本)9783642134135
The box model is a component model for the object-oriented paradigm, that defines components (the boxes) with clear encapsulation boundaries. Having well-defined boundaries is crucial in component-based software development, because it enables to argue about the interference and interaction between a component and its context. In general, boxes contain several objects and inner boxes, of which some are local to the box and cannot be accessed from other boxes and some can be accessible by other boxes. A trait is a set of methods divorced from any class hierarchy. Traits can be composed together to form classes or other traits. We present a calculus for boxes and traits. Traits are units of fine-grained reuse, whereas boxes can be seen as units of coarse-grained reuse. The calculus is equipped with an ownership type system and allows us to combine coarse- and fine-grained reuse of code by maintaining encapsulation of components.
Model-Driven Software Development is based on standardised models that are refined, transformed and eventually translated into executable code using code generators. However, creating plain text from well-structured m...
详细信息
ISBN:
(纸本)9783642121067
Model-Driven Software Development is based on standardised models that are refined, transformed and eventually translated into executable code using code generators. However, creating plain text from well-structured models creates a gap that implies several drawbacks: Developers cannot continue to use their model-based tool machinery, relations between model elements and code fragments are hard to track and there is no easy way to rebuild models front their respective code. This paper presents an approach to bridge this gap for the java programming language. It defines a full metamodel and text syntax specification for java, from which a parser and a printer are generated. Through this, java code can be handled like any other model. The implementation is validated with large test sets, example applications are shown, and future directions of research are discussed.
This paper presents a framework for writing parallel benchmark programs for Real-Time Specification for java (RTSJ) implementations that run on multi-processor platforms. The framework supports UMA and cc-NUMA archite...
详细信息
ISBN:
(纸本)9781424467259
This paper presents a framework for writing parallel benchmark programs for Real-Time Specification for java (RTSJ) implementations that run on multi-processor platforms. The framework supports UMA and cc-NUMA architectures such as those employed by the multi-core architectures in the recent years. It is written in java and features some JNI code needed for accessing OS services and special hardware instructions (e.g. for synchronization purposes). Essentially, the framework offers to the developer the means of setting a collection of parallel threads and its properties as well as various support services for thread synchronization or RTSJ asynchronous event handling support. The results of an initial evaluation of the framework using a particular RTSJ implementation are also presented in the paper.
When designers of java runtime systems evaluate the performance of their systems for the purpose of running client-side java applications, they normally use the Dacapo and SPEC JVM benchmark suites. However, when user...
详细信息
ISBN:
(纸本)9781424460229
When designers of java runtime systems evaluate the performance of their systems for the purpose of running client-side java applications, they normally use the Dacapo and SPEC JVM benchmark suites. However, when users of those java runtime systems run client applications, they usually run interactive applications such as Eclipse or NetBeans. In this paper we study whether this mismatch is a problem: Do the prevalent java client-side benchmark suites faithfully represent the characteristics of real-world java client applications? To answer this question we characterize benchmarks and applications using three kinds of metrics: static metrics, architecture-independent dynamic metrics, and hardware performance counters. We find that real-world applications significantly differ from existing benchmarks. Our finding indicates that the current benchmark suites should be augmented to more faithfully represent the large segment of interactive applications.
This paper describes a compositional analysis algorithm for statically detecting leaks in java programs. The algorithm is based on separation logic and exploits the concept of bi-abductive inference for identifying th...
详细信息
ISBN:
(数字)9783642120299
ISBN:
(纸本)9783642120282
This paper describes a compositional analysis algorithm for statically detecting leaks in java programs. The algorithm is based on separation logic and exploits the concept of bi-abductive inference for identifying the objects which are reachable but no longer used by the program.
Concurrent programs often exhibit bugs due to unintended interferences among the concurrent threads. Such bugs are often hard to reproduce because they typically happen under very specific interleaving of the executin...
详细信息
ISBN:
(数字)9783642120299
ISBN:
(纸本)9783642120282
Concurrent programs often exhibit bugs due to unintended interferences among the concurrent threads. Such bugs are often hard to reproduce because they typically happen under very specific interleaving of the executing threads. Basically, it is very hard to fix a bug (or software failure) in concurrent programs without being able to reproduce it. In this paper, we present an approach, called ConCrash, that automatically and deterministically reproduces concurrent failures by recording logical thread schedule and generating unit tests. For a given bug (failure), ConCrash records the logical thread scheduling order and preserves object states in memory at runtime. Then, ConCrash reproduces the failure offline by simply using the saved information without the need for JVM-level or OS-level support. To reduce the runtime performance overhead, ConCrash employs a static data race detection technique to report potential possible race conditions, and only instruments such places. We implement the ConCrash approach in a prototype tool for java and experimented on a number of multi-threaded java benchmarks. As a result, we successfully reproduced a number of real concurrent bugs (e.g., deadlocks, data races and atomicity violation) within an acceptable overhead.
Recent work in resource analysis has translated the idea of amortised resource analysis to imperative languages using a program logic that allows mixing of assertions about heap shapes, in the tradition of separation ...
详细信息
ISBN:
(纸本)9783642156397
Recent work in resource analysis has translated the idea of amortised resource analysis to imperative languages using a program logic that allows mixing of assertions about heap shapes, in the tradition of separation logic, and assertions about consumable resources. Separately, polyhedral methods have been used to calculate bounds on numbers of iterations in loop-based programs. We are attempting to combine these ideas to deal with java programs involving both data structures and loops, focusing on the bytecode level rather than on source code.
In this paper we will look at the crossing numbers of graphs and will determine an algorithm that will allow us to construct graphs with minimal crossing numbers. Then we will use our results and apply them constructi...
详细信息
ISBN:
(纸本)9781617386077
In this paper we will look at the crossing numbers of graphs and will determine an algorithm that will allow us to construct graphs with minimal crossing numbers. Then we will use our results and apply them constructing more cost efficient electrical circuits.
暂无评论