Table of Contents
This is the SmartMDSD Toolchain User Manual. It contains information how to use the SmartMDSD Toolchain for modeling, implementing and integrating SmartSoft software components. The SmartMDSD Toolchain guides through the development workflow while applying the methods and principles from the SmartSoft World as they are for example used within the FIONA Project.
The initial version of this document was published on March 30th 2016 as deliverable of the ITEA2 "FIONA" Project (Framework for Indoor and Outdoor Navigation Assistance, http://www.fiona-project.eu): Deliverable D2.4.1 "Handbook for Integrating Basic Services and Interface Components". The presented document is the continuously updated version.
The manual is intended for users of the SmartMDSD Toolchain. For scientific contributions, please refer to publications of SmartSoft and the SmartMDSD Toolchain. Some relevant publications are also highlighted within the section 1.2.2.
The Introduction first sketches some very brief basics of the SmartSoft World. In chapter two, it describes the SmartMDSD Toolchain from it's three main development perspectives: system design, component development and integration by composition. The third part describes tutorials (in written form and referenced video screencasts) to guide the reader through all these steps using a practical real-world example. All parts of the handbook can be read in sequential order.
SmartSoft nowadays is an umbrella term for abstract concepts (such as a systematic development methodology, best practices and implementations (reference implementations, a set of reusable components) to build robotics systems. The SmartMDSD Toolchain is an Integrated Development Environment (IDE) for robotics software development. It seamlessly integrates into the world of SmartSoft by realizing the concepts of SmartSoft, thereby making them accessible to its users. [4]
The SmartSoft World consists of several elements:
SmartMARS MetaModel. It defines the structure for communication objects, a set of communication patterns, the structure of services and components, the structure for system configuration and deployment.
SmartSoft Framework and implementation. In its current state, two exchangeable reference implementations (ACE and CORBA middlewares). Execution containers for several platforms and operating systems. The SmartMDSD Toolchain currently supports SmartSoft/Ace.
SmartSoft MDSD Toolchain. An Integrated Development Environment (IDE) for robotics software development that supports the separation of roles. The toolchain covers the development process of modeling communication objects, components and systems.
Components are technically implemented as processes. A component can contain several threads and interacts with other components via predefined communication patterns and communciation objects. The component hull provides a stable interface between the internal structure of a component (inner view of a component) and its outside view (services, for the system integrator). Within components, component developers find a structure to implement algorithms, reuse libraries and communicate with other parts of the system through services. The SmartMDSD Toolchain assists in modeling and implementing components. A set of existing components (SmartSoft SVN repository) is available for immediate reuse and composition to applications from within the SmartMDSD Toolchain.
A service is a combination of communication object(s) and communication pattern as defined by SmartSoft. A communication pattern connects the externally visible service (the stable outer view) with the internally visible set of access methods (the stable inner view) for this service. Technically, generic predefined communication patterns become services by binding one given communication pattern with communication object(s).
Communication objects define the data structure (content) to be transmitted via a communication pattern between components. Communication objects are ordinary C++-like objects decorated with additional member functions for data access and internal use by the framework.
Communication objects are always transmitted by value to avoid fine grained intercomponent communication each time an attribute is accessed. Furthermore, object responsibilities are much simpler with locally maintained objects than with remote objects.
Communication patterns provide the only link of a component to its external world. They define the semantics and policy of communication. By using a fixed set of communication patterns, the semantics of the services of a component is predefined, irrespective of where the communication patterns are applied. By knowing the communication pattern, the semantics and policy of this particular service of the component is known. This supports and enables separation of roles (system integrator can rely on the known pattern) and system composition (services become exchangeable) where new applications can be composed by reusing already existing software building blocks.