diff --git a/bazel/rules/rules_score/test/fixtures/seooc_test/safety_measures_fixtures.trlc b/bazel/rules/rules_score/test/fixtures/seooc_test/safety_measures_fixtures.trlc index c81da33e..e42fe2ca 100644 --- a/bazel/rules/rules_score/test/fixtures/seooc_test/safety_measures_fixtures.trlc +++ b/bazel/rules/rules_score/test/fixtures/seooc_test/safety_measures_fixtures.trlc @@ -29,6 +29,9 @@ ScoreReq.ControlMeasure SomeBasicEvent { } ScoreReq.PreventiveMeasure SomePreventiveMeasure { + safety = ScoreReq.Asil.B + description = "A preventive measure that stops a failure mode from occurring (no mitigates field)" + version = 1 } ScoreReq.Mitigation SomeMitigation { diff --git a/bazel/rules/rules_score/trlc/config/score_requirements_model.rsl b/bazel/rules/rules_score/trlc/config/score_requirements_model.rsl index 3a2d44ce..67ae8959 100644 --- a/bazel/rules/rules_score/trlc/config/score_requirements_model.rsl +++ b/bazel/rules/rules_score/trlc/config/score_requirements_model.rsl @@ -44,11 +44,14 @@ abstract type RequirementSafety "Extension of Requirement that carries an ASIL c Asil } +abstract type CompReqSource "Base type for requirements that may serve as a source for a component requirement." extends RequirementSafety { +} + /////////////////////////////// // S-Core Requirements Model /////////////////////////////// -type AssumedSystemReq "System-level requirement received from the wider operational context (e.g. platform)." extends RequirementSafety { +type AssumedSystemReq "System-level requirement received from the wider operational context (e.g. platform)." extends CompReqSource { rationale "Explanation of why this system-level requirement exists and how it was derived." String } @@ -59,7 +62,7 @@ tuple AssumedSystemReqId { version Integer } -type FeatReq "High-level feature requirement derived from one or more AssumedSystemReq items." extends RequirementSafety { +type FeatReq "High-level feature requirement derived from one or more AssumedSystemReq items." extends CompReqSource { derived_from "One or more versioned references to the AssumedSystemReq items this feature requirement is derived from." AssumedSystemReqId[1 .. *] } @@ -71,7 +74,7 @@ tuple FeatReqId { } tuple CompReqSourceId { - item [FeatReq, AssumedSystemReq] + item CompReqSource separator @ version Integer } @@ -154,26 +157,23 @@ type FailureMode "A potential failure of a system function, described using one optional String } -type ControlMeasure "A design or operational measure that detects, prevents, or limits a failure mode." extends RequirementSafety { - mitigates "Reference to the FailureMode or safety concern that this requirement mitigates." - optional String +abstract type Measure "Base type for safety measures referenced from safety analyses." extends RequirementSafety { } -type PreventiveMeasure "A measure that prevents a failure mode from occurring in the first place." { +type ControlMeasure "A design or operational measure that detects, prevents, or limits a failure mode." extends Measure { } -type Mitigation "A measure that reduces the severity or probability of a failure mode's effect." extends AssumedSystemReq { - mitigates "Reference to the FailureMode or safety concern that this requirement mitigates." - optional String +type PreventiveMeasure "A measure that prevents a failure mode from occurring in the first place." extends Measure { } -type AoU "Assumption of Use — a safety-relevant condition that a user must fulfil." extends ControlMeasure { +type Mitigation "A measure that reduces the severity or probability of a failure mode's effect." extends Measure { + rationale "Explanation of why this mitigation is considered effective or necessary." + optional String } -tuple Measure { - item [ControlMeasure, PreventiveMeasure, Mitigation] - separator @ - version Integer +type AoU "Assumption of Use — a safety-relevant condition that a user must fulfil." extends ControlMeasure { + mitigates "Reference to the FailureMode or safety concern that this requirement mitigates." + optional String } ///////////////////////////////