An integrated meta-modeling based software engineering framework
(Revival of the Cadena research project for typing-based meta-modeling in component-oriented architectures and model driven development)
Model driven development and meta-modeling is a novel approach to software engineering that focuses on radical modularization and consistent, multi-level, abstraction and concretization (i.e., development) of software artifacts through hierarchic modeling. The aims of the model driven development paradigm are
-
a better management of the enormous complexity of modern-day software,
-
better re-use of existing software in various contexts,
-
better maintainability of software systems,
-
increased reliability of software systems, and
-
a substantial decrease in the costs of software development.
In this topic, Cadena, a model-based software engineering framework developed at Kansas State University will be enhanced and recreated as an Eclipse plugin. The name of the project is Cadena_e, where 'e' can stand for version 5, "enhanced", "embedded systems", or "Egypt", whichever you like best.
All projects and tasks within this topic will require you to use Java, Git, Eclipse, some teamwork, and of course LaTeX
CADENA_e is based on a component oriented programming paradigm. Components are software artifacts that form the primary building blocks of a system (comparable to objects in object oriented programming), they are defined by their interfaces and can be easily plugged together or interchanged. Component diagrams specify how various components interact within a larger system. The structural modeling tools in CADENA_e should allow to design component diagram styles, create components, and assemble the components into scenarios.
You will use the graph editing features in eclipse to build a three tier component graph creation and editing feature for CADENA_e.
You will use the form editing features in eclipse to build a three tier component graph creation and editing feature for CADENA_e.
The original CADENA featured only structural modeling. However, a generic, abstract, behavioral specification in form of activity graphs will mark an important step towards pure model driven development (where actual coding can be reduced to a minimum or even eliminated). In this project, graph-based and form-based editors for behavioral modeling based on lightweight process coordination will be implemented.
You will implement a creation and editing tool for processes based on the Eclipse graph libraries and lightweight process coordination.
You will use the form editing tools in Eclipse to implement an editing feature for various process algebras or similar process description formalisms.
You will animate the behavioral specifications (or even execute the various processes) in a test-run environment for validating and debugging.
A major advantage of model driven development is that the "code" (i.e., the models) are abstract enough to easily introduce well established formal verification procedures without much preprocessing. This project will enable model checking on the given behavioral models.
You will translate the given behavioral description in CADENA_e into the input syntax of a well known model-cheking tool. Infrastructure to automatically run the model checker is required, editing support or backwards translation would be a bonus.
Some advanced input artifacts of modern lightweight formal verification tools are not easy to use for a software engineer without specific training. In this task, you will break down the generation of LTL formulas to simple time-line manipulations that are intuitive to use.
Sensors measure physical sizes or quantities. These quantities are generally compromised of a scalar value and a unit. The units, in turn, are related to each other by their physical dimension. For example, length is measured in meters, so when measuring a distance the result would be a scalar X and the unit Meter (Xm). Speed for example is the distance per time unit (the first derivation of length over time). Therefore, the dimension of speed is length divided by time. Likewise, the dimension of acceleration is speed divided by time, or length by time square. The source of some of the most frequently occurring errors in the usage of sensors and unit-carrying values are conversion errors that could be avoided by the proven technique of typing. This project aims to create a dimensional typing system for a plug and play sensor service and component system.
You will develop and implement a dimensional type system for physical quantities. It should allow assignments such as "speed = (1km + 25m) / 20s".
Some features projected for CADENA_e are independent from the conceptual part and mainly serve editing and visualization convenience. In this project, such features will be implemented.
Graph-based editing of complex systems often suffers from the size of the resulting graphs and the lack of structure and overview. In this task, you will implement a specialized graph layouter based on various standard graph layouting algorithms with added features such as subgraph-folding, fixing of specific nodes, sorting of nodes according to specific properties, etc.
We will build an example and experimentation system that will gradually include the ideas of model driven development for testing the concepts of CADENA_e in practice.
You will implement a multi-sensor tracking and analysis tool for a specific physical workout routine to track performance and fitness level of a practitioner over a single and over multiple sessions.