TL;DR: A programming environment and architecture for the development of agent based cooperative applications using a role based approach that is able to change existing and introduce new cooperation processes at runtime without modifying the existing agents.
Abstract: This paper introduces a programming environment and architecture for the development of agent based cooperative applications using a role based approach. We focus on the cooperative aspects by introducing cooperation processes (CP) as a concept of its own. CPs describe all and only the coordination and cooperation parts of an application. The explicit documentation of the coordination and cooperation mechanisms used in a MAS allows their evaluation and reuse. We are able to change existing and introduce new cooperation processes at runtime without modifying the existing agents. We specify the cooperative behaviour of an agent in a separate role description. The interconnection of these roles constitutes the CP. Describing cooperation independent from concrete agents allows to build heterogeneous, federated and transformable MAS. We show how agents decide what roles to accept and how the agent-role interaction works. Finally we present the ROPE framework and runtime environment.
TL;DR: This thesis presents a method of development and change based on roles, where a role, in object oriented development, is a part of an object that addresses a particular concern or requirement.
Abstract: This thesis addresses the problem of changing requirements in software evolution. It presents a method of development and change based on roles, where a role, in object oriented development, is a part of an object that addresses a particular concern or requirement. The concept of a role was originally used in design analysis by Trygve Reenskaug. In this research, we extend it's use into implementation.
The contributions of the research include a development process that takes a set of use case requirements and produces an implementation composed of role components, a set of implementation idioms that separate functional concerns from structural and compositional concerns, and several diagrams to bridge the gap between abstract design and concrete implementation. The feasability of the approach is demonstrated with an efficient method of implementation using C++ templates.
TL;DR: This work has developed a declarative, role-based language that allows the programmer to associate roles and behavior to structural elements in a modular robot, significantly simplifying the task of programming self-reconfigurable robots.
Abstract: A self-reconfigurable robot is a robotic device that can change its own shape. Self-reconfigurable robots are commonly built from multiple identical modules that can manipulate each other to change the shape of the robot. The robot can also perform tasks such as locomotion without changing shape. Programming a modular, self-reconfigurable robot is however a complicated task: the robot is essentially a real-time, distributed embedded system, where control and communication paths often are tightly coupled to the current physical configuration of the robot. To facilitate the task of programming modular, self-reconfigurable robots, we have developed a declarative, role-based language that allows the programmer to associate roles and behavior to structural elements in a modular robot. Based on the role declarations, a dedicated middleware for high-level distributed communication is generated, significantly simplifying the task of programming self-reconfigurable robots. Our language fully supports programming the ATRON self-reconfigurable robot, and has been used to implement several controllers running both on the physical modules and in simulation.
TL;DR: A novel approach to implement polymorphic role dispatch takes advantage of run-time information to effectively guard abstractions and enable reuse even in the presence of variable contexts, and the concept of polymorphic inline caches is extended to role invocations.
Abstract: Adaptive software becomes more and more important as computing is increasingly context-dependent. Runtime adaptability can be achieved by dynamically selecting and applying context-specific code. Role-oriented programming has been proposed as a paradigm to enable runtime adaptive software by design. Roles change the objects’ behavior at runtime, thus adapting the software to a given context. The cost of adaptivity is however a high runtime overhead stemming from executing compositions of behavior-modifying code. It has been shown that the overhead can be reduced by optimizing dispatch plans at runtime when contexts do not change, but no method exists to reduce the overhead in cases with high context variability. This paper presents a novel approach to implement polymorphic role dispatch, taking advantage of run-time information to effectively guard abstractions and enable reuse even in the presence of variable contexts. The concept of polymorphic inline caches is extended to role invocations. We evaluate the implementation with a benchmark for role-oriented programming languages achieving a geometric mean speedup of 4.0× (3.8× up to 4.5×) with static contexts, and close to no overhead in the case of varying contexts over the current implementation of contextual roles in Object Teams.
TL;DR: A new approach to use run-time information to construct a dispatch plan that can be executed efficiently by the JVM is presented and the concept of late binding is extended to dynamic function compositions.
Abstract: Adaptive software becomes more and more important as computing is increasingly context-dependent. Runtime adaptability can be achieved by dynamically selecting and applying context-specific code. Role-oriented programming has been proposed as a paradigm to enable runtime adaptive software by design. Roles change the objects’ behavior at runtime and thus allow adapting the software to a given context. However, this increased variability and expressiveness has a direct impact on performance and memory consumption. We found a high overhead in the steady-state performance of executing compositions of adaptations. This paper presents a new approach to use run-time information to construct a dispatch plan that can be executed efficiently by the JVM. The concept of late binding is extended to dynamic function compositions. We evaluated the implementation with a benchmark for role-oriented programming languages leveraging context-dependent role semantics achieving a mean speedup of 2.79× over the regular implementation.