protocols for communication; those tools include
eTrice, RSARTE, and IBM Rhapsody. On the other
hand, tools that support SDL (Olsen et al., 1994) use
gates and interfaces for communication; PragmaDev
is an example.
In Umple, we follow UML terminology, which
means that communication should rely on ports and
protocols. However, we found that asking users to
define protocols explicitly adds unnecessary
overhead. Thus, we provide protocol-free approach
in Umple, which means Umple uses inference to
extract the required protocols based on the semantics
of ports and connectors. Thus, in Table 2, we
mentioned that our communication depends on ports
and the pattern of active object.
For state machines, Umple support the major
features listed in Table 2 except for the "State
Class".
In terms of code generation, the most important
target languages supported include Java, C++, and
C. Umple supports real time code generation in C++
for all modelling features. Code generation for C and
possibly Java will be supported in the future (Umple
supports Java already for non-real-time features).
Most commercial tools support behavioural and
structural decompositions, while the only open-
source tool other than Umple that supports them is
eTrice, and it does so only partially. Two other
open-source tools (starUML and ArgoUML) have
little or no code generation support for component-
based modelling.
5 CONCLUSIONS
Umple is an open-source modelling tool. Prior to
this work, it supported modelling features such as
attributes, state machines, and associations. In this
paper, we described new capabilities for composite
structure and component-based development such as
components, ports, and connectors. As well, we
showed how simple time constructs can help users to
meet their real time requirements easily.
In component-based modelling, a port definition
depends on a protocol. Typically, a protocol defines
the flow of signals among ports. In our effort to
reduce complexity, we implemented a protocol-free
approach, in which protocol information is
automatically inferred based on the semantic
information of ports and connectors.
We showed a short ping-pong example written as
an Umple model; this example is available in the
UmpleOnline editor (try.umple.org). The model
looks simple, since it consists of only 50 lines of
Umple. However, the generated code in C++ as a
target language is far more complicated, and exceeds
2000 lines. Complex capabilities such as thread
management, mutual exclusion and access queues
are taken care of in the generated code. Trying to
handle such concepts directly at the programming
language level is not an easy task.
We showed how Umple supports both textual
and visual development for real-time component
modelling.
Part of our effort is that the generated code must
not rely on any third-party library, to ensure that it
can be deployed easily in real-time operating
systems. Library-free code will also relieve
developers of integration and configuration
management effort.
We showed a comparison between Umple, and
other industrial and open-source modelling tools,
highlighting the modelling features in each tool.
Umple supports most of the major features present
in the compared tools.
ACKNOWLEDGEMENTS
OGS, NSERC, and ORF supported this work.
REFERENCES
Badreddin, O., Forward, A., & Lethbridge, T. C. (2014).
Improving Code Generation for Associations:
Enforcing Multiplicity Constraints and Ensuring
Referential Integrity. SERA, vol 430.
doi:10.1007/978-3-642-30460-6
Badreddin, O., Lethbridge, T. C., & Forward, A. (2014a).
A Novel Approach to Versioning and Merging Model
and Code Uniformly. In MODELSWARD 2014,
International Conference on Model-Driven
Engineering and Software Development, pp. 254-263.
SCITEPRESS. doi:10.5220/0004699802540263
Badreddin, O., Lethbridge, T. C., & Forward, A. (2014b).
A Test-Driven Approach for Developing Software
Languages. In MODELSWARD 2014, International
Conference on Model-Driven Engineering and
Software Development, pp. 225-234. SCITEPRESS.
doi:10.5220/0004699502250234
Badreddin, O., Lethbridge, T. C., & Forward, A. (2014c).
Investigation and Evaluation of UML Action
Languages. In MODELSWARD 2014, International
Conference on Model-Driven Engineering and
Software Development. 2014, pp. 264-273.
SCITEPRESS. doi:10.5220/0004699902640273
Lavender, R. G., & Schmidt, D. C. (1996). Active object:
an object behavioral pattern for concurrent
programming. In Pattern languages of program design