Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Relation between session model verification and prevention of unnecessary checks in generated code #1153

Closed
treiher opened this issue Aug 24, 2022 · 1 comment
Assignees
Labels
architectural decision Discussion of design decision

Comments

@treiher
Copy link
Collaborator

treiher commented Aug 24, 2022

Context and Problem Statement

For the session model verification (#633) as well as for the prevention of unnecessary checks in the generated SPARK code (#1131), the semantics of actions must be known. The information about the necessary pre- and post-conditions of single actions is currently only known in SPARK Model (i.e., the Python representation of the generated code).

Current approach:

Specification ⇾ Model ⤵
                     SPARK Model ⇾ SPARK Code
          Integration ⤴

Use Cases

Considered Options

O1 Analysis on SPARK Model

+ Takes integration-specific values (buffer sizes) into account
Analysis results specific to SPARK and not directly applicable to other future code generators
Mapping of errors on Model may be difficult

O2 Analysis on Model

Requires to move information about semantics of actions (like pre- and post-conditions) into the model.

+ Independent of programming language specific properties enables adding support for different code generators
Some cases cannot be detected due to missing integration-specific knowledge (buffer sizes) in Model

O3 Analysis on Intermediate Representation

New approach:

Specification ⇾ Model ⤵
                     Intermediate Representation ⇾ SPARK Model ⇾ SPARK Code
          Integration ⤴

+ Independent of programming language specific properties enables adding support for different code generators
+ Takes integration-specific values (buffer sizes) into account
+ Enables applying generic code optimizations independent of specific code generator

Decision Outcome

O3 (#1204)

@treiher treiher added the architectural decision Discussion of design decision label Aug 24, 2022
@treiher treiher self-assigned this Aug 24, 2022
@treiher treiher added this to To do in RecordFlux 0.6 via automation Aug 24, 2022
@treiher treiher moved this from To do to Design in RecordFlux 0.6 Aug 24, 2022
@senier senier removed this from Design in RecordFlux 0.6 Aug 30, 2022
@senier senier added this to To do in RecordFlux 0.7 via automation Aug 30, 2022
@treiher treiher moved this from To do to Design in RecordFlux 0.7 Sep 15, 2022
@treiher
Copy link
Collaborator Author

treiher commented Sep 27, 2022

The design and implementation of the intermediate representation will be tracked in #1204.

@treiher treiher closed this as completed Sep 27, 2022
RecordFlux 0.7 automation moved this from Design to Done Sep 27, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
architectural decision Discussion of design decision
Projects
No open projects
Development

No branches or pull requests

1 participant