This page describes how the SmartMDSD Toolchain supports Coordinating Activities and Life Cycle of Software Components.
As an example, the figure on the right shows the model of the “SmartAmcl” component (i.e., a component providing a localization service based on the “Adaptive Monte Carlo Localization” approach). This component internally specifies a single activity called “AmclTask”. Moreover, the “AmclTask” is mapped to the component's operation mode called “active” (see green ellipse in the figure). As stated above, the component's lifecycle does not need to be explicitly modeled as it is implicitly available for each component by default. Additionally, the component's lifecycle provides two default operation modes called “active” and “neutral” (as part of the “Alive” submachine within the component's lifecycle). That is, if the “active” operation mode is activated, then the referenced activity “AmclTask” is activated thus consuming the relevant resources. By contrast, switching into the “neutral” operation mode implicitly deactivates the operation mode “active” and thus the referenced activity “AmclTask”. In other words, the component is conveyed into a “standby” mode thus releasing the relevant resources.
The two default operation modes “active” and “neutral” cover the majority of simple software components that provide a single service based on a single activity with a functional block. However, more complex components allow the definition of multiple provided services and several activities within a single component. For such cases, a more detailed model of the component's operation modes is required.
As an example for a more complex component, the figure above provides the model of the “SmartMapper” component. This component provides three services, namely “LtmQueryServer”, “CurrQueryServer” and “CurrMapOut”. The first service provides a long-term map while the other two services provide access to the current map (i.e., a grid-map of a local section from the long-term map). The component internally maintains and updates both map types. There are different situations at runtime, where either one of the map types is needed, or both map types are used, or none of the map types is currently needed. The model of the component's operation modes (see figure on the right) supports all these cases. As can be further seen in the component model (in the figure above) the “LtmMapTask” activity is only active if one of the operation modes “BuildLtmMap” or “BuildBothMaps” is active. Respectively, the “CurrMapTask” activity is only active if one of the operation modes “BuildCurrMap” or “BuildBothMaps” is active. Please note that the “neutral” operation mode is not explicitly modeled as it implicitly exists for every component by default.