4 research outputs found
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
Towards Practical Graph-Based Verification for an Object-Oriented Concurrency Model
To harness the power of multi-core and distributed platforms, and to make the
development of concurrent software more accessible to software engineers,
different object-oriented concurrency models such as SCOOP have been proposed.
Despite the practical importance of analysing SCOOP programs, there are
currently no general verification approaches that operate directly on program
code without additional annotations. One reason for this is the multitude of
partially conflicting semantic formalisations for SCOOP (either in theory or
by-implementation). Here, we propose a simple graph transformation system (GTS)
based run-time semantics for SCOOP that grasps the most common features of all
known semantics of the language. This run-time model is implemented in the
state-of-the-art GTS tool GROOVE, which allows us to simulate, analyse, and
verify a subset of SCOOP programs with respect to deadlocks and other
behavioural properties. Besides proposing the first approach to verify SCOOP
programs by automatic translation to GTS, we also highlight our experiences of
applying GTS (and especially GROOVE) for specifying semantics in the form of a
run-time model, which should be transferable to GTS models for other concurrent
languages and libraries.Comment: In Proceedings GaM 2015, arXiv:1504.0244
Graphs and Graph Transformations for Object-Oriented and Service-Oriented Systems
Theories of graphs and graph transformations form an important part of the mathematical foundations
of computing, and have been applied in a wide range of areas from the design and analysis
of algorithms to the formalization of various computer systems and programs. In this thesis, we
study how graphs and graph transformations can be used to model the static structure and dynamic
behavior of object-orientated and service-oriented systems.
Our work is mainly motivated by the difficulty in understanding and reasoning about objectorientated
and service-oriented programs, which have more sophisticated features compared with
traditional procedural programs. We show that the use of graphs and graphs transformations provides
both an intuitive visualization and a formal representation of object-orientated and serviceoriented
programs with these features, improving people’s understanding of the execution states
and behaviors of these programs.
We provide a graph-based type system, operational semantics and refinement calculus for an
object-oriented language. In this framework, we define class structures and execution states of oo
programs as directed and labeled graphs, called class graphs and state graphs, respectively. The
type system checks whether a program is well-typed based on its class graph, while the operational
semantics defines each step of program execution as a simple graph transformations between state
graphs. We show the operational semantics is type-safe in that the execution of a well-typed
program does not “go wrong”. Based on the operational semantics, we study the notion of structure
refinement of oo programs as graph transformations between their class graphs. We provide a
few groups of refinement rules for various purposes such as class expansion and polymorphism
elimination and prove their soundness and relative completeness.
We also propose a graph-based representation of service-oriented systems specified in a serviceoriented
process calculus. In this framework, we define states of service-oriented systems as hier-
archical graphs that naturally capture the hierarchical nature of service structures. For this, we
exploit a suitable graph algebra and set up a hierarchical graph model, in which graph transformations
are studied following the well-known Double-Pushout approach. Based on this model, we
provide a graph transformation system with a few sets of graph transformation rules for various
purposes such as process copy and process reduction. We prove that the graph transformation
system is sound and complete with respect to the reduction semantics of the calculus