layout: true
.hiddenlink[[MODELS 2020](http://modelsconference.org/)] — Virtual Event — October 16-23, 2020
--- class: center, middle # .hiddenlink[[Designing, Animating, and Verifying Partial UML Models](https://conf.researchr.org/details/models-2020/models-2020-technical-track/35/Designing-Animating-and-Verifying-Partial-UML-Models)] ### Frédéric Jouault
1
, Valentin Besnard
1
, Théo Le Calvar
2
, ### Ciprian Teodorov
3
, Matthias Brun
1
, and Jerome Delatour
1
1
ERIS, ESEO-TECH, Angers, France, *firstname*.*lastname*@eseo.fr
2
LERIA, Université d’Angers, Angers, France, *firstname*.*lastname*@univ-angers.fr
3
Lab-STICC UMR CNRS 6285, ENSTA Bretagne, Brest, France, *firstname*.*lastname*@ensta-bretagne.fr --- class: bigger # Context and Problem * Early model validation is useful to fix design mistakes before they become costly -- count: false * This requires models to be executable in some way * In particular, a significant subset of UML has a standardized precise execution semantics (with [fUML](https://www.omg.org/spec/FUML), [PSCS](https://www.omg.org/spec/PSCS), and [PSSM](https://www.omg.org/spec/PSSM)) -- count: false * However, most existing approaches typically only work with relatively consistent and complete models * Reaching this level of consistency and completeness is generally hard -- count: false * How could we help modelers with their inconsistent and incomplete models? --- class: bigger # Approach Overview * Objectives * Making models **executable as early as possible** * Instead of only relying on typically inconsistent mental simulations -- count: false * Means: making partial models executable by **relaxing modeling language compliance** -- count: false * Rationale * Makes it possible to **incrementally improve testable models** * Until they become complete and consistent (standard compliant, verifiable) * While providing designers with **tool support** during the whole process -- count: false * Coming next: application to UML --- # Relaxation Point: Instances Before Classifiers
--- # Making it Easier by Borrowing from Communication Diagrams
.bigger[ (and showing [clickable](javascript:alert("You may want to click on diagram elements, not on this link style example."%29) elements) ]
--- # More Relaxation Points * Receiving undeclared messages * Time triggers may always match
--- # Relaxation Point: Message Triggers May Find Messages
--- # Relaxing Actions and Expressions * They may be non-executable * All guards may be considered true
--- # Relaxing Inter-object Communication * Messages may transit through the *ether* instead of via event pools
??? Shortcuts: * s: switch to TCSVG sequence diagram * p: switch to PlantUML sequence diagram * t: switch to PlantUML timing diagram --- # More Features: Methods & Available State Machine Actions
--- # Advanced Usage Example: Verification
--- # Tool Support * Approach implemented as a web application * https://github.com/fjouault/AnimUML * Includes a link to a public server to try without installing -- count: false * Usable to create interactive documents * Including interactive slide decks like this very presentation -- count: false * Some features * Share model by link (with or without current execution trace) * Export diagrams (e.g., as PlantUML code, SVG) * Generate code * To tUML, which can be imported into Eclipse UML (notably for use in Papyrus) * To other languages (work in progress) * Import from Eclipse UML * Analyse models directly in-browser * Connect to more powerful remote analysis engines (http://www.obpcdl.org/) * Connect to remote execution engines (http://www.obpcdl.org/bare-metal-uml/) * Node.js compatible (e.g., to create command line tools) --- class: bigger # Conclusion * AnimUML: a tool-supported approach for early model execution * Model animation, testing, verification -- count: false * Animating models is actually useful to discover inconsistencies, or missing elements -- count: false * Some possible perspectives * Semi-automatic inference of a model's missing parts -- count: false * Application to teaching * Teachers can create interactive AnimUML tutorials * Students can play with models (modify, execute, repeat) * To gain insight into notation and semantics * (Semi-)automatic grading with analysis tool? -- count: false * Application to SysML v2? --- # Questions?