545 research outputs found
Superposition:Composition vs refinement of non-deterministic, action-based systems
AbstractWe show that the traditional notion of superposition as used for supporting parallel program design can subsume both composition and refinement relationships when non-deterministic behaviour of action-based systems is considered. For that purpose, we rely on a categorical formalisation of program design in the language CommUnity that we are also using for addressing architectural concerns
Parallel asynchronous computation of the values of an associative function
This paper shows an application of a formal approach to parallel program design. The basic model is related to temporal logics. We summarize the concepts of a relational model of parallelism in the introduction. The main part is devoted to the problem of synthesizing a solution for the problem of parallel asynchronous computation of the values of an associative function. The result is a programming theorem, which is wide applicable for different problems. The abstract program is easy to implement effectively on several architectures. The applicability of results is investigated for parallel architectures such as for hypercubes and transputer networks
Higher-order architectural connectors
We develop a notion of higher-order connector towards supporting the systematic construction of architectural connectors for software design. A higher-order connector takes connectors as parameters and allows for services such as security protocols and fault-tolerance mechanisms to be superposed over the interactions that are handled by the connectors passed as actual arguments. The notion is first illustrated over CommUnity, a parallel program design language that we have been using for formalizing aspects of architectural design. A formal, algebraic semantics is then presented which is independent of any Architectural Description Language. Finally, we discuss how our results can impact software design methods and tools
Развитие инструментария алгебры алгоритмики с целью разработки параллельных программ с использованием эвристических средств
Розглянуто розвиток алгеброалгоритмічного інструментарію для конструювання паралельних алгоритмів на основі спільного використання алгеброалгоритмічної методології специфікації і розробки програм та неалгоритмічних (евристичних) методів генерації коду. Евристичною частиною системи є динамічне налаштування програмного коду на цільову платформу і його оптимізація з використанням генерації коду, що самонавчається, і евристичних технологій.The paper proposes a new approach and a system to develop parallel algorithms based on the joint use of the algebraic-algorithmic methodology of specification and development and non-algorithmic (heuristic) techniques for code generation. The algebraic part of the methodology provides the formalized process of parallel program design through high-level algebra-algorithmic specifications and automating transformations up to program code in a standard programming language. The heuristic part of the system stands for dynamical adjustment of program code for a target platform and its optimization using self-learning code generation and heuristic technologies
Properties of Concurrent Programs
A program property is a predicate on programs. In this paper we explore program properties of the form U -> V where U and V are either predicates on states of a program or program properties, and -> satisfies three rules that are also used in reasoning about sequential programs and safety properties of parallel programs. We show how such properties can be used to reason about concurrent programs
Modelling the GSM handover protocol in CommUnity
CommUnity is a formal approach to software architecture. It has a precise, yet intuitive mathematical semantics based on category theory. It supports, at the methodological level, a clear separation between computation, coordination, and distribution (including mobility). It provides a simple state-based language for describing component behaviour that is inspired by Unity and Interacting Processes. It also addresses composition as a first class concern and accounts for the emergence of global system properties from interconnections. This paper describes the approach and available tool support by modelling essential aspects of the GSM handover protocol. We also sketch a framework that we are implementing for the distributed execution of such specifications using Klava, a Java library for mobile agent systems based on tuple spaces
A compiler approach to scalable concurrent program design
The programmer's most powerful tool for controlling complexity in program design is abstraction. We seek to use abstraction in the design of concurrent programs, so as to
separate design decisions concerned with decomposition, communication, synchronization, mapping, granularity, and load balancing. This paper describes programming and compiler techniques intended to facilitate this design strategy. The programming techniques are based on a core programming notation with two important properties: the ability to separate concurrent programming concerns, and extensibility with reusable programmer-defined
abstractions. The compiler techniques are based on a simple transformation system together with a set of compilation transformations and portable run-time support. The
transformation system allows programmer-defined abstractions to be defined as source-to-source transformations that convert abstractions into the core notation. The same
transformation system is used to apply compilation transformations that incrementally transform the core notation toward an abstract concurrent machine. This machine can be implemented on a variety of concurrent architectures using simple run-time support.
The transformation, compilation, and run-time system techniques have been implemented and are incorporated in a public-domain program development toolkit. This
toolkit operates on a wide variety of networked workstations, multicomputers, and shared-memory
multiprocessors. It includes a program transformer, concurrent compiler, syntax checker, debugger, performance analyzer, and execution animator. A variety of substantial
applications have been developed using the toolkit, in areas such as climate modeling and fluid dynamics
Coordination Contracts as Connectors in Component-Based Development
Several proposals for component-based development
methods have started to appear. However, the emphasis is
still very much on the development of components as
opposed to the development with components. The main
focus is on how to generate ideal reusable components not
on how to plug existing components and specify their
interactions and connections.
The concept of a coordination contract (Andrade and
Fiadeiro 1999; Andrade and Fiadeiro 2001; Andrade,
Fiadeiro et al. 2001) has been proposed to specify a
mechanism of interaction between objects based on the
separation between structure, what is stable, and
interaction, what is changeable. This separation supports
better any change of requirements, as contracts can be
replaced, added or removed dynamically, i.e. in run-time,
without having to interfere with the components that they
coordinate. A coordination contract corresponds to an
expressive architectural connector that can be used to plug
existing components.
In this paper we integrate the concept of a coordination
contract with component-based development and show
how coordination contracts can be used to specify the
connectors between components
- …