Model-Level Debugging in the Context of the Model-Driven Development
Mojtaba Bagherzadeh
Thursday, September 5, 2019, 9:30 AM
Supervisor: Juergen Dingel, School of Computing
Head's Delegate: Farhana Zulkernine, School of Computing
Internal Examiner: Yuan Tian, School of Computing
Internal/External Examiner: Ying Zou, Electrical and Computer Electronics
External Examiner: Lionel Briand, Centre for ICT, University of Luxembourg
Abstract
Model-driven Development (MDD) is a software development approach that advocates using models rather than source code. MDD can decrease complexity by raising the level of abstraction, and increase productivity by automation, e.g., code generation.
Developers spend around 50% of their time on debugging and fixing bugs, and the cost of debugging, testing, and verification account for almost 50-75% of the software development budget. Existing MDD tools do not provide proper support for the debugging of models. Thus, developers often debug the generated source code in order to debug their models, which contradicts MDD principles, as many of the benefits of the abstraction are lost. This thesis introduces a novel approach to platform-independent model-level debugging, with the help of model transformation that equips the model with support for debugging services. The approach does not rely on program debuggers, and any changes to, e.g., the code generator or the hardware platform, leave the debugger unaffected. Based on the approach, a model-level debugger MDebugger is created that allows the debugging of UML-RT models.
The typically iterative and incremental nature of software development implies that many development artifacts are incomplete until later stages of development. None of the model-level debuggers, including MDebugger, allows the debugging of incomplete (i.e., partial) models, because the model execution techniques (interpretation and code generation) cannot execute partial models. This often prevents useful analyses that would allow the detection of design flaws and bugs early in the development process, when they are easiest to fix. We propose a conceptual framework to execute partial models. Based on the framework, an execution engine of partial models (PMExec) is developed that allows the debugging and execution of partial UML-RT models at any stage of the software development process, assuming that the structural models are defined and proper input is provided.
Finally, to keep pace with program debugging services, and optimize the PMExec and MDebugger we introduce a new approach for live modeling that allows the updating of model elements during the execution.