123 research outputs found
Design of service robots: Experiences using software engineering
This article relates our experiences over the last 15 years in the development of robotic applications within the field of service robotics, using the techniques proposed by software engineering. The process began with domain engineering and reference architectures, moved on to component-oriented development, and currently centered on model-driven design. One of the key problems in software development for robotic systems is that the possibilities of reusing software in new applications are frequently limited. This means that we are forced over and over to solve the same problems starting practically from zero every time. The possible causes of this include the following: 1) robotics specialists normally concentrate more on developing algorithms and the way to solve concrete problems than on organizing the software; 2) lack of good standards for the development of robotic software and implementations of these standards; 3) the case studies conducted to demonstrate the viability of software engineering techniques traditionally deal with information management systems; and 4) the robotics community see software engineering not as a solution but as another problem that adds complexity to already complex problems. This research has helped to demonstrate the viability of using software engineering techniques in real industrial applications, albeit using academic tools that cannot readily be accepted by industry.This work has been supported by EU and Spanish Government
research programmes: 5th FP (GROWTH G3RD-CT-00794),
CICYT-FEDER Program (MEDWSA, TIN2006-15175-C05-
02). Additional funds have been supplied by the Government of
Murcia (Fundación Séneca) and the Spanish Ministry of Industry
(PROFIT programs)
Multiparty interactions in dependable distributed systems
PhD ThesisWith the expansion of computer networks, activities involving computer communication
are becoming more and more distributed. Such distribution can
include processing, control, data, network management, and security. Although
distribution can improve the reliability of a system by replicating
components, sometimes an increase in distribution can introduce some undesirable
faults. To reduce the risks of introducing, and to improve the chances
of removing and tolerating faults when distributing applications, it is important
that distributed systems are implemented in an organized way.
As in sequential programming, complexity in distributed, in particular
parallel, program development can be managed by providing appropriate
programming language constructs. Language constructs can help both by
supporting encapsulation so as to prevent unwanted interactions between
program components and by providing higher-level abstractions that reduce
programmer effort by allowing compilers to handle mundane, error-prone
aspects of parallel program implementation.
A language construct that supports encapsulation of interactions between
multiple parties (objects or processes) is referred in the literature as multiparty
interaction. In a multiparty interaction, several parties somehow "come
together" to produce an intermediate and temporary combined state, use this
state to execute some activity, and then leave the interaction and continue
their normal execution.
There has been a lot of work in the past years on multiparty interaction,
but most of it has been concerned with synchronisation, or handshaking,
between parties rather than the encapsulation of several activities executed
in parallel by the interaction participants. The programmer is therefore left
responsible for ensuring that the processes involved in a cooperative activity
do not interfere with, or suffer interference from, other processes not involved
in the activity.
Furthermore, none of this work has discussed the provision of features
that would facilitate the design of multiparty interactions that are expected
to cope with faults - whether in the environment that the computer system
has to deal with, in the operation of the underlying computer hardware or
software, or in the design of the processes that are involved in the interaction.
In this thesis the concept of multiparty interaction is integrated with
the concept of exception handling in concurrent activities. The final result
is a language in which the concept of multiparty interaction is extended
by providing it with a mechanism to handle concurrent exceptions. This
extended concept is called dependable multiparty interaction.
The features and requirements for multiparty interaction and exception
handling provided in a set of languages surveyed in this thesis, are integrated
to describe the new dependable multiparty interaction construct. Additionally,
object-oriented architectures for dependable multiparty interactions are
described, and a full implementation of one of the architectures is provided.
This implementation is then applied to a set of case studies. The case studies
show how dependable multiparty interactions can be used to design and
implement a safety-critical system, a multiparty programming abstraction,
and a parallel computation model.Brazilian Research Agency CNPq
Value Types in Eiffel
Identifies a number of problems with Eiffel's expanded types in modelling value types, and proposes a backward compatible syntactic extension, and a modified semantics. The latter is also shown to be (effectively) backward compatible, in the sense that existing programs would run unaffected if compilers implemented the new semantics. The benefits of the approach are discussed, including an elegant approach to rebuilding data structure libraries
Implementation of an ADA95 Crosscompiler for the Real-Time Executive for Military Systems (RTEMS)
This thesis represents a continuation of the assessment of the Unified Telerobotics Architecture Project (UTAP), a proposed Air Force standard. This architecture was developed by the NASA Jet Propulsion Laboratory and the National Institute of Standards under contract to the Air Force Materiel Command Robotics and Automation Center of Excellence at Kelly AFB, Texas. Due to operating system constraints, the only UTAP implementation to date has required a separate software interface layer, adding complexity and overhead to the overall system, while reducing portability. This thesis proposes a long term effort to design and implement UTAP-compliant application software devoid of this interface layer. Because the Ada programming language offers increased portability, and other software engineering benefits, emphasis is placed on developing a run-time infrastructure that will allow UTAP applications to be written in Ada. The first several steps of building this infrastructure is performed, including implementation of an Ada cross-compiler and real-time operating system. Further UTAP research is recommended. The run-time infrastructure should be completed and UTAP application software developed using the Ada95 tasking model. Recommendations for UTAP specification improvements are also made
Approach for Highly Dependable Software-Intensive Systems
Author-contributed print itemhe objectives of the proposal are creating new methods and tools for effective constructing software-intensive systems based on multiple perspectives that are used to reflect differing stakeholder's concerns. The models and methods will incorporate rapid prototyping, explicit architecting and consistent engineering techniques into a synthesis approach for highly dependable software-intensive systems (HDSIS)
Development of a control system for teleoperated robots using UML nd Ada 95
In this paper, a control system in the domain of teleoperated service robots is presented. A reference architecture - ACROSET - has been analyzed and designed following a concurrent object modeling and architectural design methodology (COMET) that uses UML as describing language. The architecture of the whole system has been implemented in a ship’s hull blasting robot - GOYA –using Ada 95 and GLADE. Our previous experience in developing teleoperated service robots using Ada is also presente
smgn: Rapid Prototyping of Small Domain-Specific Languages
This paper presents smgn, a grammar-based tool that provides support for scanning, parsing, and automatic parse tree construction. The parse tree can be easily navigated and manipulated with a specific macro language while conveniently generating textual output. smgn is easy to learn—even for non-compiler experts—and well suited for rapid prototyping of small domain-specific languages. It is part of the SUIF compiler system, where it has been used for the development of the Hoof domain-specific language. Furthermore, smgn was employed successfully for the rapid prototyping of another domain-specific language, called Bauhaus IMDL. We introduce smgn, describe experiences in using it for DSL construction and evaluate its usefulness based on these experiences
An incremental prototyping methodology for distributed systems based on formal specifications
This thesis presents a new incremental prototyping methodology for formally specified distributed systems. The objective of this methodology is to fill the gap which currently exists between the phase where a specification is simulated, generally using some sequential logical inference tool, and the phase where the modeled system has a reliable, efficient and maintainable distributed implementation in a main-stream object-oriented programming language. This objective is realized by application of a methodology we call Mixed Prototyping with Object-Orientation (in short: OOMP). This is an extension of an existing approach, namely Mixed Prototyping, that we have adapted to the object-oriented paradigm, of which we exploit the flexibility and inherent capability of modeling abstract entities. The OOMP process proceeds as follows. First, the source specifications are automatically translated into a class-based object-oriented language, thus providing a portable and high-level initial implementation. The generated class hierarchy is designed so that the developer may independently derive new sub-classes in order to make the prototype more efficient or to add functionalities that could not be specified with the given formalism. This prototyping process is performed incrementally in order to safely validate the modifications against the semantics of the specification. The resulting prototype can finally be considered as the end-user implementation of the specified software. The originality of our approach is that we exploit object-oriented programming techniques in the implementation of formal specifications in order to gain flexibility in the development process. Simultaneously, the object paradigm gives the means to harness this newly acquired freedom by allowing automatic generation of test routines which verify the conformance of the hand-written code with respect to the specifications. We demonstrate the generality of our prototyping scheme by applying it to a distributed collaborative diary program within the frame of CO-OPN (Concurrent Object-Oriented Petri Nets), a very powerful specification formalism which allows expressing concurrent and non-deterministic behaviours, and which provides structuring facilities such as modularity, encapsulation and genericity. An important effort has also been accomplished in the development or adaptation of distributed algorithms for cooperative symbolic resolution. These algorithms are used in the run-time support of the generated CO-OPN prototypes
- …