Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ The failure modes to consider are defined by the SCORE process:

> [FMEA Fault Models — Process Description](https://eclipse-score.github.io/process_description/main/process_areas/safety_analysis/guidance/fault_models_guideline.html#id1)

The fault models cover three categories: **messages** (send/receive behaviour), **time constraints** (too early / too late), and **execution** (wrong result, loss, delay, corruption, non-determinism). The `GuideWord` enum in the `ScoreReq` model maps each category to a structured label used in the `FailureMode` records.
The fault models cover three categories: **messages** (send/receive behaviour), **time constraints** (too early / too late), and **execution** (wrong result, loss, delay, corruption, non-determinism). The `guidewords` enum in the `ScoreReq` model maps each category to a structured label used in the `FailureMode` records.

The description below covers the FMEA-based **safety** analysis for a software module.

Expand Down Expand Up @@ -78,7 +78,7 @@ package MySeooc
import ScoreReq

ScoreReq.FailureMode FM_001 {
guideword = ScoreReq.GuideWord.LossOfFunction
guidewords = [ScoreReq.guidewords.LossOfFunction]
description = "Key-value store returns stale data after power loss"
failureeffect = "Incorrect system state at startup"
safety = ScoreReq.Asil.B
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ package SampleLibrary
import ScoreReq

ScoreReq.FailureMode SampleFailureMode{
guideword = ScoreReq.GuideWord.LossOfFunction
guidewords = [ScoreReq.guidewords.LossOfFunction]
description = "SampleFailureMode takes over the world"
failureeffect = "The world as we know it will end"
version = 1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ enum Status {
///////////////////////////////

abstract type Requirement "Base type for all S-CORE requirements." {
description "The normative requirement text. Must express an obligation (shall/should)."
description "Detailed description of this element."
Markup_String
version "Monotonically increasing version counter. Increment on every content change."
Integer
Expand Down Expand Up @@ -93,7 +93,7 @@ tuple CompReqId {
// Safety Analyses
///////////////////////////////

enum GuideWord "HAZOP-style guide words used to categorize failure mode." {
enum guidewords "HAZOP-style guide words used to categorize failure mode." {

// -------------------------------------------------------------------------
// Message fault models (MF_01_xx)
Expand Down Expand Up @@ -145,15 +145,13 @@ enum GuideWord "HAZOP-style guide words used to categorize failure mode." {

}

type FailureMode "A potential failure of a system function, described using a HAZOP guide word." extends ScoreReq.RequirementSafety {
guideword "HAZOP guide word classifying the nature of this failure."
GuideWord
type FailureMode "A potential failure of a system function, described using one or more HAZOP guide words." extends ScoreReq.RequirementSafety {
guidewords "One or more HAZOP guide words classifying the nature of this failure."
guidewords[1 .. *]
failureeffect "Description of the consequence of this failure mode on the system or its users."
String
rationale "Explanation of why this failure mode is considered relevant."
optional String
potentialcause "Description of the root cause or triggering condition for this failure mode."
optional String
interface "The system interface or signal that is affected by this failure mode."
optional String
}
Expand Down Expand Up @@ -181,22 +179,3 @@ type AoU "Assumption of Use — a safety-relevant condition that a caller must f

// abstract type StdReq extends Requirement {
// }


///////////////////////////////
// Checks
///////////////////////////////

checks Requirement {

not matches(description, "(shall|should)"),
warning "The description must include (shall|should)",
description

}

checks AssumedSystemReq {

rationale != null implies len(rationale) >= 5, "rationale too short"

}
Loading