42,597 research outputs found
A ProActive Backend for ABS: from Modelling to Deployment
ABS is an object-oriented modeling language that is based on a concurrent object group model, derived itself from the active object model. Its goal is to describe distributed and concurrent applications in order to verify their properties and make them safer. Thanks to the ABS Tool Suite, ABS programs can be translated into the Java programming language (among others), and executed in the JVM. This paper presents a new ABS backend that translates ABS programs into ProActive programs. ProActive is a well known active object Java library that provides support for distribution of applications across clusters or grids. The benefit of this work is to be able to easily distribute ABS programs, so that ABS models can also be experimented in a large scale setting. Our contribution includes the ProActive backend itself, the complete description of our translation strategy, and a realistic experiment that shows the benefits of the ProActive backend
VeriCool: An Automatic Verifier for a Concurrent Object-Oriented Language
Reasoning about object-oriented programs is hard, due to aliasing, dynamic binding and the need for data abstraction and framing. Reasoning about concurrent object-oriented programs is even harder, since in general interference by other threads has to be taken into account at each program point.
In this paper, we propose an approach to the automatic verification of concurrent Java-like programs. The cornerstone of the approach is a programming model, a set of rules, which limits thread inference to synchronization points such that one can reason sequentially about most code. In particular, programs conforming to the programming model are guaranteed to be data race free. Compared to previous incarnations of the programming model, our approach is more flexible in describing the set of memory locations protected by an object’s lock. In addition, we combine the model with an approach for data abstraction and framing based on dynamic frames. To the best of our knowledge, this is the first paper combining dynamic frames and concurrency.
We implemented the approach in a tool, called VeriCool, and used it to verify several small concurrent programs.status: publishe
Logic programming in the context of multiparadigm programming: the Oz experience
Oz is a multiparadigm language that supports logic programming as one of its
major paradigms. A multiparadigm language is designed to support different
programming paradigms (logic, functional, constraint, object-oriented,
sequential, concurrent, etc.) with equal ease. This article has two goals: to
give a tutorial of logic programming in Oz and to show how logic programming
fits naturally into the wider context of multiparadigm programming. Our
experience shows that there are two classes of problems, which we call
algorithmic and search problems, for which logic programming can help formulate
practical solutions. Algorithmic problems have known efficient algorithms.
Search problems do not have known efficient algorithms but can be solved with
search. The Oz support for logic programming targets these two problem classes
specifically, using the concepts needed for each. This is in contrast to the
Prolog approach, which targets both classes with one set of concepts, which
results in less than optimal support for each class. To explain the essential
difference between algorithmic and search programs, we define the Oz execution
model. This model subsumes both concurrent logic programming
(committed-choice-style) and search-based logic programming (Prolog-style).
Instead of Horn clause syntax, Oz has a simple, fully compositional,
higher-order syntax that accommodates the abilities of the language. We
conclude with lessons learned from this work, a brief history of Oz, and many
entry points into the Oz literature.Comment: 48 pages, to appear in the journal "Theory and Practice of Logic
Programming
Recommended from our members
Structural active object systems for mixed-mode simulation
A structural active-object system (SAOS) is a transition-based object-oriented system suitable for the design of various concurrent systems. A SAOS consists of a collection of interacting structural active objects (SAOs) whose behaviors are determined by the transition statements provided in their class definitions. Furthermore, SAOs can be structurally and hierarchically composed from their component SAOs like hardware components. These features allow SAOs to model components for circuit simulation more naturally than passive objects used in ordinary object-oriented programming, including digital, analog, and mixed-mode simulation. Each hardware object such as an AND gate or an integrator can be represented as a SAO. In addition, structural and hierarchical composition allows us to build complex components from elementary components. Prototype simulation programs with graphical user interfaces have been developed as SAOS programs for digital, analog, and mixed-mode circuit simulation.Key Words and Phrases: digital simulation, analog simulation, mixed-mode simulation, active-object system, concurrent object-oriented programming, structural composition, hierarchical composition, software IC, graphical user interface1993 best estimate for issue date based on available information
The Extension of Object-Oriented Languages to a Homogenous, Concurrent Architecture
A homogeneous machine architecture, consisting of a regular
interconnection of many identical elements, exploits the economic benefits of VLSI technology, A concurrent programming model is presented that is related to object oriented languages such as Simula and Smalltalk.
Techniques are developed which permit the execution of general purpose object oriented programs on a homogeneous machine. Both the hardware architecture and the supporting software algorithms are demonstrated to scale their performance with the size of the system.
The program objects communicate by passing messages. Objects may move about in the system and may have an arbitrary pointer topology, A
distributed, on-the-fly garbage collection algorithm is presented which
operates by message passing. Simulation of the algorithm demonstrates its
ability to collect obsolete objects over the entire machine with acceptable
overhead costs. Algorithms for maintaining the locality of object references
and for implementing a virtual object capability are also presented.
To insure the absence of hardware bottlenecks, a number of
interconnection strategies are discussed and simulated for use in a
homogeneous machine. Of those considered, the Boolean N-cube connection
is demonstrated to provide the necessary characteristics.
The object oriented machine will provide increased performance as its
size is increased. It can execute a general purpose, concurrent, object
oriented language where the size of the machine and its interconnection
topology are transparent to the programmer
A Graph-Based Semantics Workbench for Concurrent Asynchronous Programs
A number of novel programming languages and libraries have been proposed that
offer simpler-to-use models of concurrency than threads. It is challenging,
however, to devise execution models that successfully realise their
abstractions without forfeiting performance or introducing unintended
behaviours. This is exemplified by SCOOP---a concurrent object-oriented
message-passing language---which has seen multiple semantics proposed and
implemented over its evolution. We propose a "semantics workbench" with fully
and semi-automatic tools for SCOOP, that can be used to analyse and compare
programs with respect to different execution models. We demonstrate its use in
checking the consistency of semantics by applying it to a set of representative
programs, and highlighting a deadlock-related discrepancy between the principal
execution models of the language. Our workbench is based on a modular and
parameterisable graph transformation semantics implemented in the GROOVE tool.
We discuss how graph transformations are leveraged to atomically model
intricate language abstractions, and how the visual yet algebraic nature of the
model can be used to ascertain soundness.Comment: Accepted for publication in the proceedings of FASE 2016 (to appear
A semantics comparison workbench for a concurrent, asynchronous, distributed programming language
A number of high-level languages and libraries have been proposed that offer
novel and simple to use abstractions for concurrent, asynchronous, and
distributed programming. The execution models that realise them, however, often
change over time---whether to improve performance, or to extend them to new
language features---potentially affecting behavioural and safety properties of
existing programs. This is exemplified by SCOOP, a message-passing approach to
concurrent object-oriented programming that has seen multiple changes proposed
and implemented, with demonstrable consequences for an idiomatic usage of its
core abstraction. We propose a semantics comparison workbench for SCOOP with
fully and semi-automatic tools for analysing and comparing the state spaces of
programs with respect to different execution models or semantics. We
demonstrate its use in checking the consistency of properties across semantics
by applying it to a set of representative programs, and highlighting a
deadlock-related discrepancy between the principal execution models of SCOOP.
Furthermore, we demonstrate the extensibility of the workbench by generalising
the formalisation of an execution model to support recently proposed extensions
for distributed programming. Our workbench is based on a modular and
parameterisable graph transformation semantics implemented in the GROOVE tool.
We discuss how graph transformations are leveraged to atomically model
intricate language abstractions, how the visual yet algebraic nature of the
model can be used to ascertain soundness, and highlight how the approach could
be applied to similar languages.Comment: Accepted by Formal Aspects of Computin
Expression-based aliasing for OO-languages
Alias analysis has been an interesting research topic in verification and
optimization of programs. The undecidability of determining whether two
expressions in a program may reference to the same object is the main source of
the challenges raised in alias analysis. In this paper we propose an extension
of a previously introduced alias calculus based on program expressions, to the
setting of unbounded program executions s.a. infinite loops and recursive
calls. Moreover, we devise a corresponding executable specification in the
K-framework. An important property of our extension is that, in a
non-concurrent setting, the corresponding alias expressions can be
over-approximated in terms of a notion of regular expressions. This further
enables us to show that the associated K-machinery implements an algorithm that
always stops and provides a sound over-approximation of the "may aliasing"
information, where soundness stands for the lack of false negatives. As a case
study, we analyze the integration and further applications of the alias
calculus in SCOOP. The latter is an object-oriented programming model for
concurrency, recently formalized in Maude; K-definitions can be compiled into
Maude for execution
Verifiable early-reply with C++
Concurrent programming can improve performance. However, it comes with two drawbacks.
First, concurrent programs can be more difficult to design and reason about than their sequential
counterparts. Second, error conditions that do not exist in sequential programs, such as data race
conditions and deadlock, can make concurrent programs more unreliable. To make concurrent
programming simpler and more reliable, while still providing sufficient performance gains, we
present a concurrency framework based on an existing concurrency initiation mechanism called
âÂÂEarly-ReplyâÂÂ.
Early-Reply is based on the idea that some functions can produce final return values long before
they terminate. Concurrent execution begins when return value of a function is returned to the
caller, allowing the rest of the work of the function to be done on an auxiliary thread. The
simpler sequential programming model can be used by the caller, because the concurrency is
initiated and hidden within the function body. Pike and Sridhar recognized Early-Reply as a way
for sequential programs to get the benefits of concurrent execution. They also discussed using
object-oriented programming to serialize access to data that needs synchronization. Our work
expands on their approach and provides an actual C++ implementation of an Early-Reply based
framework.
Our framework simplifies concurrent programming for both users and implementers by allowing
developers to use sequential reasoning, and by providing a minimal framework interface.
Concurrent programming is made more reliable by combining the concurrency synchronization
and initiation into one mechanism within the framework, which isolates where race conditions
and deadlock can occur. Furthermore, this isolation facilitates the development of a simple set
of coding guidelines that can be used by developers (through inspection) or static analysis tools
(through verification) to eliminate race conditions and deadlocks. As a motivating example, we parallelize an instructional compiler that processes multiple input
source files. For each input file; the parsing and semantic analysis execute on the calling thread,
while the code optimization and object code generation execute on an auxiliary thread.
Speedups of 1.5 to 1.7 were observed on a dual processor confirming that sufficient performance
gains are possible
- …