-
Notifications
You must be signed in to change notification settings - Fork 9
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
allow optional up-linking #10
Comments
Note: The parsing of the "trace to" keyword is happening here: lobster/lobster/config/parser.py Line 192 in c87654f
Currently the config parser uses the lobster/lobster/config/parser.py Line 188 in c87654f
A possible refactoring is to use a list of levels instead of a Boolean value. The list will then include all levels. But it is unclear how to compute the "downstream" coverage if one of the incoming connections is optional. graph TD;
level1[Level 1];
level2[Level 2.a];
level3[Level 3];
level4[Level 2.b];
level5[Level 5];
level1 --> level2 --> |or| level3;
level1 --> level4 --> |or| level3;
level2 --> level5;
Here the arrows shall indicate the resulting tracing policy. That is, the Now assume that |
Use CasesHere is a summary of use cases that we need to support. Upstream AlternativesImagine a project allows several database alternatives for their software requirements, like TRLC, Codebeamer, IBM Doors. flowchart BT
PR[Product Requirements]
Solution1[Codebeamer]
Solution2[TRLC]
Solution3[IBM Doors]
SWR[Implementation]
SWR-->|Path A|Solution1-->|Path A|PR
SWR-->|Path B|Solution2-->|Path B|PR
SWR-->|Path C|Solution3-->|Path C|PR
All three paths A, B, and C must be possible individually. That means, one of the paths could be used, but is not mandatory. Level Self ReferencesIt must be possible to allow self-references within one level. flowchart BT
subgraph Software Requirements
SWR1[SW Req 1]-->SWR2[SW Req 2]-->SWR3[SW Req 3]
SWR4[SW Req 4]
end
subgraph System Requirements
SYSR1[Sys Req 1]
SYSR2[Sys Req 2]
end
subgraph Implementation
Impl1[Implementation 1]-->SWR1
Impl2[Implementation 2]-->SWR4
end
SWR3-->SYSR1
SWR4-->SYSR2
Possible Feature DesignThe new feature to support these use cases could behave as follows:
ExampleLet's look at an example policy. flowchart BT
ProdReq[Product Requirements]
CB[Codebeamer]
TRLC[TRLC]
DOORS[IBM Doors]
Impl[Implementation]
or_after_CB{or}
or_after_impl{or}
or_after_TRLC{or}
or_after_DOORS{or}
Impl --> or_after_impl
TRLC --> or_after_TRLC
DOORS --> or_after_DOORS
CB --> or_after_CB
or_after_impl --> CB
or_after_impl --> TRLC
or_after_impl --> DOORS
or_after_CB --> CB
or_after_CB --> ProdReq
or_after_TRLC --> TRLC
or_after_TRLC --> ProdReq
or_after_DOORS --> DOORS
or_after_DOORS --> ProdReq
In this example the config part where TRLC requires itself or Product Requirements looks like this:
Everything mandatorySo far all
If any of these downstream references is missing, then the product requirement shall be counted as "not okay" in the coverage. Introduce conditional downstreamsIf the user wants to give a choice how to break down the product requirement (instead of enforcing all three lower levels),
This now overwrites the enforced trace from Product Requirements to Codebeamer by a conditional trace that only at least one downstream must be found, but not all three at the same time. flowchart BT
subgraph "trace to (upstream)"
direction BT
ProdReq[Product Requirements]
CB[Codebeamer]
TRLC[TRLC]
DOORS[IBM Doors]
Impl[Implementation]
or_after_CB{or}
or_after_impl{or}
or_after_TRLC{or}
or_after_DOORS{or}
Impl --> or_after_impl
TRLC --> or_after_TRLC
DOORS --> or_after_DOORS
CB --> or_after_CB
or_after_impl -.-> CB
or_after_impl -.-> TRLC
or_after_impl -.-> DOORS
or_after_CB -.-> CB
or_after_CB -.-> ProdReq
or_after_TRLC -.-> TRLC
or_after_TRLC -.-> ProdReq
or_after_DOORS -.-> DOORS
or_after_DOORS -.-> ProdReq
ProdReq --> ProdReq
end
subgraph "requires (downstream)"
direction TB
Impl2[Implementation]
ProdReq2[Product Requirements]
CB2[Codebeamer]
TRLC2[TRLC]
DOORS2[IBM Doors]
or_below_ProdReq{or}
or_below_codebeamer{or}
or_below_TRLC{or}
or_below_DOORS{or}
ProdReq2 --> or_below_ProdReq
or_below_ProdReq -.-> |conditional| CB2
or_below_ProdReq -.-> |conditional| TRLC2
or_below_ProdReq -.-> |conditional| DOORS2
or_below_ProdReq -.-> |conditional| ProdReq2
CB2 --> or_below_codebeamer
or_below_codebeamer -.-> Impl2
or_below_codebeamer -.-> CB2
TRLC2 --> or_below_TRLC
or_below_TRLC -.-> TRLC2
or_below_TRLC -.-> Impl2
DOORS2 --> or_below_DOORS
or_below_DOORS -.-> DOORS2
or_below_DOORS -.-> Impl2
end
The complete tracing policy file would look like this:
Summary
|
New proposal: The configuration file shall only support the following rules:
Advantages:
Disadvantage:
Examples:
An item is not OK, if:
Justifications
|
lobster.config accepts multi line kewords which considere it to be and the requires keyword has been changed to trace from Resolves bmw-software-engineering#10
lobster.config accepts multiline keywords which considered to be "and" the "requires" keyword has been changed to "trace from" Resolves bmw-software-engineering#10
lobster.config accepts multiline keywords which considered to be "and" the "requires" keyword has been changed to "trace from" Resolves bmw-software-engineering#10
lobster.config accepts multiline keywords which considered to be "and" the "requires" keyword has been changed to "trace from" Resolves bmw-software-engineering#10
lobster.config accepts multiline keywords which considered to be "and" the "requires" keyword has been changed to "trace from" Resolves bmw-software-engineering#10
lobster.config accepts multiline keywords which considered to be "and" the "requires" keyword has been changed to "trace from" Resolves bmw-software-engineering#10
It shall be possible to define a tracing policy where several upstream targets can be specified via
trace to:
, but the coverage shall be satisfied as soon as one link to at least one target is found.Example:
Trace to itself shall be allowed.
The text was updated successfully, but these errors were encountered: