Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Eclipse 4diacWiki/Development/Detecting Model Inconsistencies in 4diac Models with OCL"

Line 7: Line 7:
 
* [https://docs.google.com/spreadsheets/d/1JFpQhYCTBrei3QrgTYtS0RLJ0daLuESjP0bE87VRZas/edit?usp=sharing Requirements]
 
* [https://docs.google.com/spreadsheets/d/1JFpQhYCTBrei3QrgTYtS0RLJ0daLuESjP0bE87VRZas/edit?usp=sharing Requirements]
 
* Precise and traceable requirement list for rules which should be validated on the Ecore models
 
* Precise and traceable requirement list for rules which should be validated on the Ecore models
 +
{| border="1" cellpadding="5" cellspacing="0" align="center"
 +
|+ '''Requirements'''
 +
|-
 +
! style="background: #CEF2CE;" width="200"  align="center"| Name
 +
! style="background: #CEF2CE;" width="200"  align="center"| Level
 +
! style="background: #CEF2CE;" width="400"  align="center"| Description
 +
! style="background: #CEF2CE;" width="200"  align="center"| Constraint type
 +
! style="background: #CEF2CE;" width="200"  align="center"| Severity
 +
! style="background: #CEF2CE;" width="200"  align="center"| Context(Ecore)
 +
! style="background: #CEF2CE;" width="200"  align="center"| Constraint Name
 +
|-
 +
! style="background: #FFFFFF;" width="200"  align="center"| Unreachable states
 +
! style="background: #FFFFFF;" width="200"  align="center"| ECC
 +
! style="background: #FFFFFF;" width="400"  align="center"| States (except start state) which do not have any input transitions 
 +
! style="background: #FFFFFF;" width="200"  align="center"| Invariant
 +
! style="background: #FFFFFF;" width="200"  align="center"| Warning
 +
! style="background: #FFFFFF;" width="200"  align="center"| ECState
 +
! style="background: #FFFFFF;" width="200"  align="center"| UnreachableState
 +
|}
 +
 
* Assigning the requirements to OCL constraints to facilitate traceability
 
* Assigning the requirements to OCL constraints to facilitate traceability
 
* OCL constraints: Invariant, pre- and postcondition, derived element, operation body, initial value
 
* OCL constraints: Invariant, pre- and postcondition, derived element, operation body, initial value

Revision as of 06:07, 24 August 2020

Overview page of GSoC 2020 Project

The aim of this project is to develop OCL constraints and well-formedness rules to the metamodels of 4diac in order to improve the usability of the IDE.

Milestones

Requirement specification

  • Requirements
  • Precise and traceable requirement list for rules which should be validated on the Ecore models
Requirements
Name Level Description Constraint type Severity Context(Ecore) Constraint Name
Unreachable states ECC States (except start state) which do not have any input transitions Invariant Warning ECState UnreachableState


Improving 4diac Ecore models

  • Adding new elements (e.g. classes and helper operations) to the Ecore models to facilitate the introduction of OCL constraints
  • Making suggestions for improvements on the Ecore models (without side-effects!)

Validity view for displaying validation results

  • Displaying the violated OCL constraints and the problematic model elements in a user-friendly way
  • View:
    • Validation Message Dialog?
    • Something like the errors and warning view?
    • Customizing built-in OCL Validation view?
  • Extra feature: Highlighting the problematic model elements in the model editor

Implementing OCL constraints

  • Developing the OCL constraints and well-formedness rules based upon the requirement list
  • Testing the newly implemented features and constraints

Idea: Function Block Constraint Language (FBCL)

  • How should we handle the constraints related to individual FB types?
  • How should we handle the semantic issues of individual FB types?
  • When creating a Function Block Type in 4diac IDE, users could specify constraints on the particular FB type using a declarative representation (not necessarily a textual DSL) or a graphical interface. e.g. something like MustHaveValue constraints or preventing loops on certain FB types)
  • The constraint elements could be saved in .fbt files. Once loaded, they could be translated to OCL constraints and additional Java code.

Back to the top