A Domain-Specific Language (DSL) is a software language specialized to a particular application domain, usually small and intuitive enough to be used directly by domain experts using the vocabulary of the problem space. Generative approaches then bridge the gap to a particular solution space, providing a clear separation of the problem definition, from its translation to a particular execution platform. Domains in which DSLs have been developed and used include (smart) cyber-physical systems, data science, and high performance computing. Research on systematic development of DSLs has produced a technology base that is robust enough to support the integration of DSL development processes into large-scale industrial system development environments. Current language workbenches (e.g., EMF, MPS, MetaEdit+) support the development of DSLs to create models that play pivotal roles in different development phases.
A large amount of DSLs have been proposed and used to describe the dynamic aspects of systems. In that context, early dynamic verification and validation (V&V) techniques, such as testing, or runtime verification, are necessary to ensure that conforming programs are correct over the (execution) time. Among dynamic V&V techniques, debugging is a common facility. It enables the observation and control of an execution to better understand a certain behavior or to look for the cause of a defect.
Recent approaches support the systematic development of debuggers, possibly omniscient, and propose common facilities such as step-by-step execution, and model state visualization (see references). However, when comes the time to debug complex behaviors with regards to specific properties, manual debugging is tremendous and automatic exhaustive model checkers are complex tools far to be developed for any DSLs. In this context, a disciplined approach to define domain-specific debugging facilities for any executable DSL with little cost would be very valuable.
In this PhD, we propose to explore the definition of domain-specific events to be defined as properties over the state of a running model, and raising arbitrarily complex behaviors when a property is activated. Possible behaviors includes:
- the definition of breakpoints (i.e. pause the execution), then continuing the execution step-by-step (forward/backward);
- the execution of domain-specific visualizations tools over the current state, its associated history, or the visited execution path; and
- the execution of specific behaviors to trace, log and visualize the rest of the execution.
The candidate will explore the definition of a new meta language to specify domain-specific events over language definition, and propose an efficient, yet non intrusive, approach to interpret them at runtime.
The main advisor of the PhD thesis will be Prof. Benoit Combemale (University of Toulouse & Inria, DiverSE team), and the co-supervisors will be Benoit Lelandais and Marie-Pierre Oudot (CEA/DAM). The PhD will be hosted at Inria in Rennes (France), with regular visits at CEA (Campus Teratec).
- Sirius Animator
- Advanced and efficient execution trace management for executable domain-specific modeling languages. Bousse, E., Mayerhofer, T., Combemale, B. et al. Softw Syst Model (SoSyM), 2017.
- Omniscient debugging for executable DSLs, by Erwan Bousse, Dorian Leroy, Benoit Combemale, Manuel Wimmer, Benoit Baudry, In Journal of Systems and Software, Volume 137, 2018.
- Bart Meyers, Romuald Deshayes, Levi Lucio, Eugene Syriani, Hans Vangheluwe, Manuel Wimmer: ProMoBox: A Framework for Generating Domain-Specific Property Languages. SLE 2014: 1-20.
- Hamoud Aljamaan, Timothy C. Lethbridge, and Miguel A. Garzón. 2015. MOTL: a textual language for trace specification of state machines and associations. In Proceedings of the 25th Annual International Conference on Computer Science and Software Engineering (CASCON ‘15).