545 research outputs found

    Parallel Program Design and Generalized Weakest Preconditions

    Get PDF
    No abstract available

    Superposition:Composition vs refinement of non-deterministic, action-based systems

    Get PDF
    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

    Get PDF
    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

    Get PDF
    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

    Развитие инструментария алгебры алгоритмики с целью разработки параллельных программ с использованием эвристических средств

    No full text
    Розглянуто розвиток алгеброалгоритмічного інструментарію для конструювання паралельних алгоритмів на основі спільного використання алгеброалгоритмічної методології специфікації і розробки програм та неалгоритмічних (евристичних) методів генерації коду. Евристичною частиною системи є динамічне налаштування програмного коду на цільову платформу і його оптимізація з використанням генерації коду, що самонавчається, і евристичних технологій.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

    Get PDF
    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

    Get PDF
    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

    Get PDF
    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

    Get PDF
    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
    corecore