122,666 research outputs found
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
Towards Dynamic Reverse Engineering Visual Contracts from Java
Visual contracts provide a concise and intuitive representation of preand postconditions for operations in object-oriented or component-based systems, which can be used for documentation, testing, or simulation. However, defining visual contracts to correctly describe the behaviour of existing classes or components requires a deep understanding of their data model and behaviour.We propose an approach to automatically extract instantiated versions of visual contracts, or contract instances, by observing the changes an operation performs on the objects in a system. We describe and evaluate the approach and tool to extract contract instances using the case study of Java-based DOM implementation NanoXML
Blockchain Based Secure Interoperable Framework for the Internet of Medical Things
Internet of Medical Things (IoMT) has revolutionized the way medical infrastructure has been managed in the past. Multiple platforms in IoMT have disparate communication standards, data format requirements, and access policies, which produce immense overhead during data transfer among these platforms. In order to provide seamless healthcare services using IoMT, interoperability concerns of heterogeneous devices need to be addressed. Smart contracts using blockchain provide a secure communication for distributed objects to interact in a secure way. We propose a Blockchain-based Secure Interoperable Framework (BSIIoMT) using smart contracts for secure communication in IoMT. We present components, workflow, and design considerations of the BSIIoMT framework to show the feasibility of using edge-enabled blockchain for secure interoperability in IoMT. The BSIIoMT framework is an ongoing project where we present the framework and its components in this research where further results and evaluation will be presented in future
Specifying Reusable Components
Reusable software components need expressive specifications. This paper
outlines a rigorous foundation to model-based contracts, a method to equip
classes with strong contracts that support accurate design, implementation, and
formal verification of reusable components. Model-based contracts
conservatively extend the classic Design by Contract with a notion of model,
which underpins the precise definitions of such concepts as abstract
equivalence and specification completeness. Experiments applying model-based
contracts to libraries of data structures suggest that the method enables
accurate specification of practical software
The C Object System: Using C as a High-Level Object-Oriented Language
The C Object System (Cos) is a small C library which implements high-level
concepts available in Clos, Objc and other object-oriented programming
languages: uniform object model (class, meta-class and property-metaclass),
generic functions, multi-methods, delegation, properties, exceptions, contracts
and closures. Cos relies on the programmable capabilities of the C programming
language to extend its syntax and to implement the aforementioned concepts as
first-class objects. Cos aims at satisfying several general principles like
simplicity, extensibility, reusability, efficiency and portability which are
rarely met in a single programming language. Its design is tuned to provide
efficient and portable implementation of message multi-dispatch and message
multi-forwarding which are the heart of code extensibility and reusability.
With COS features in hand, software should become as flexible and extensible as
with scripting languages and as efficient and portable as expected with C
programming. Likewise, Cos concepts should significantly simplify adaptive and
aspect-oriented programming as well as distributed and service-oriented
computingComment: 18
Asynchronous Validations using Programming Contracts in Java
Design by Contract is a software development methodology based on the idea of having contracts between two software components. Programming contracts are invariants specified as pre-conditions and post-conditions. The client component must ensure that all the pre-conditions are satisfied before calling the server component. The server component must guarantee the post-conditions are met before the call returns to the client component. Current work in Design by Contract in Java focuses on writing shorthand contracts using annotations that are processed serially.
Modern software systems require a lot of business rules validations on complicated domain objects. Often, such validations are in the form of a chain of independent tasks that need to be validated one after another. These tasks are computation-intensive and often involve numerous database calls and API calls over the web.
This paper presents a validation rule engine framework, Rule4j to facilitate writing such business rules with the help of programming contracts in Java. The contracts are organized in a hierarchy similar to the Racket programming language. The programmer can specify the business rules in the form of a series of higher-order contracts that form a chain. These chains of contracts are validated concurrently and asynchronously to present a final validation result to the programmer. A sample scenario of trade execution is used to demonstrate the performance gain and maintainability of the framework. The experiments conducted show that validations executed using Rule4J run four times faster than the traditional approach. A clear separation of business logic and business validations for the trade execution scenario was achieved using Rule4J
Abstracting object interactions using composition filters
It is generally claimed that object-based models are very suitable for building distributed system architectures since object interactions follow the client-server model. To cope with the complexity of today's distributed systems, however, we think that high-level linguistic mechanisms are needed to effectively structure, abstract and reuse object interactions. For example, the conventional object-oriented model does not provide high-level language mechanisms to model layered system architectures. Moreover, we consider the message passing model of the conventional object-oriented model as being too low-level because it can only specify object interactions that involve two partner objects at a time and its semantics cannot be extended easily. This paper introduces Abstract Communication Types (ACTs), which are objects that abstract interactions among objects. ACTs make it easier to model layered communication architectures, to enforce the invariant behavior among objects, to reduce the complexity of programs by hiding the interaction details in separate modules and to improve reusability through the application of object-oriented principles to ACT classes. We illustrate the concept of ACTs using the composition filters model
Combining behavioural types with security analysis
Today's software systems are highly distributed and interconnected, and they
increasingly rely on communication to achieve their goals; due to their
societal importance, security and trustworthiness are crucial aspects for the
correctness of these systems. Behavioural types, which extend data types by
describing also the structured behaviour of programs, are a widely studied
approach to the enforcement of correctness properties in communicating systems.
This paper offers a unified overview of proposals based on behavioural types
which are aimed at the analysis of security properties
- …