Facilitating the Representation of Composite Structure, Active objects, Code Generation, and Software Component Descriptions in the Umple Model-Oriented Programming Language

For a long time, the development of component-based systems has been a crucial part of real-time software development required for embedded and automotive domains. However, most of the existing tools used in these fields are not only proprietary, but also expensive and not research-friendly. Open-so...

Full description

Bibliographic Details
Main Author: Husseini Orabi, Mahmoud
Other Authors: Lethbridge, Timothy
Language:en
Published: Université d'Ottawa / University of Ottawa 2017
Subjects:
UML
C++
Online Access:http://hdl.handle.net/10393/36452
http://dx.doi.org/10.20381/ruor-20732
Description
Summary:For a long time, the development of component-based systems has been a crucial part of real-time software development required for embedded and automotive domains. However, most of the existing tools used in these fields are not only proprietary, but also expensive and not research-friendly. Open-source tools in this domain are so far quite limited in terms of the features supported, especially, code generation. In this thesis, we demonstrate how we can improve the development of real-time and concurrent systems by the introduction of component-based modelling into Umple, an open-source modelling tool. Our work enables component-based modelling to be performed both textually and visually, as is the case with other Umple features. We introduce a number of major features into Umple. First, we introduce support for real-time C++ code generation. This includes supporting all Umple features, such as class diagrams, associations, state machines, and attributes. In order to achieve this, we also introduce Umple Template Language (Umple-TL), which helps Umple developers to use Umple itself to emit text using easy-to-use constructs, such that the text emitted can be in different target languages such Java and C++. Umple-TL provides additional capabilities relying on Umple being a model-oriented and object-oriented language. Umple-TL has become the technology for all code generation in Umple, not just our real-time C++ generators. Umple-TL also plays a vital role easing writing component descriptions Second, we support concurrency, which is crucial for the underlying architecture of composite structure. We have to avoid relying on any third-party libraries in order to make sure that the code generated will be deployable on embedded devices, which are limited and do not provide a lot of options. The concurrency pattern we follow extends the active object pattern aiming to enhance communication among active objects. Concurrency development in general, even if a programming language used is not real-time, is not easy. Hence, we simplify active object concepts, such as future, promise, and delay, using new Umple keywords. We also add composite structure support to Umple, we believe that our syntax and language constructs are comprehensive, and do not require a wide knowledge of modelling and UML concepts. Additionally, we introduce a novel protocol-free approach that dynamically extracts communication protocols from ports, bindings, and active objects as a way to simplify development, and to lead to concise and optimized code generation. We demonstrate the effectiveness of our work using cases studies, in which we implement Umple models using our new composite structure and concurrency constructs. We show that the amount of code required to specify complex concepts is reduced, and the generated systems are effective.