To support users in their safety work, Architects can configure various graphs, grids, and charts, etc. This article provides some examples.

Example Configurable Views
Safety Graph

<Graph>
<Options>
<ObjIcons/>
</Options>
<NodeStyles>
<NodeStyle name="SafetyGoal" fillColor="#F5DEB3" fillColor2="#ffffff" borderThickness="1" borderColor="#000000" />
<NodeStyle name="HazardousEvent" fillColor="#ffcccc" fillColor2="#ffffff" borderThickness="2" borderColor="#000000" />
<NodeStyle name="Hazard" fillColor="#ffff00" fillColor2="#fdfac5" borderThickness="4" borderColor="#000000" />
<NodeStyle name="Item" fillColor="#f00f00" fillColor2="#fdfac5" borderThickness="4" borderColor="#FF0000" />
<NodeStyle name="Context" borderThickness="0" visibleHeader="false" />
</NodeStyles>
<NodeGroups>
<NodeGroup name="hazards" caption="Hazards" style="Context"/>
<NodeGroup name="hazevs" caption="Hazards" style="Context"/>
<NodeGroup name="safegoals" caption="Hazards" style="Context"/>
</NodeGroups>
<EdgeStyles>
<EdgeStyle name="trace" color="blue" thickness="2" lineType="dash" toArrowType="default"/>
</EdgeStyles>
<Parameters>
<Parameter caption="Analysis Area" name="p1" hintContextPath="I2AHA"/>
<ForEachPathReference path="I2AHA">
<AddParameterValue name="p1"/>
</ForEachPathReference>
</Parameters>
<Function name="AsilValue" as="String">
<Parameter name="asil" as="String"/>
<Value select="if $asil = 'QM' then NewLine + 'QM' else (if $asil != '' then NewLine + 'ASIL ' + $asil else '')"/>
</Function>
<Context name="HARAContext">
<AddParts owner="main" sid="DEIT" part="AnalysisToItem" defobj="Item"/>
<AddParts owner="main" sid="DEHA" part="AnalysisToHazard" defobj="Haz"/>
<AddParts owner="main" sid="DEHE" part="AnalysisToHazEv" defobj="HazEv"/>
<AddParts owner="Item" sid="I2SID" part="ItemToDetail" defobj="Detail"/>
<AddParts owner="Item" sid="I2IRQ" part="ItemToDetail" defobj="+Detail"/>
<AddParts owner="main" sid="DESG" part="AnalysisToSafetyGoal" defobj="SafetyGoal"/>
<AddParts owner="SafetyGoal" sid="SGDF" part="SafetyGoalToHazEv" defobj="+HazEv"/>
<AddParts owner="HazEv" sid="HEH" part="HazEvToHaz" defobj="+Haz"/>
<AddParts owner="Haz" sid="I2HO" part="HazToDetail" defobj="Detail"/>
<AddParts owner="Haz" sid="I2HARQ" part="HazToDetail" defobj="Detail"/>
</Context>
<Node style="Item" >
<Variable name="AnalyzedComponentAndSignals" as="[Item]" select="/DEIT/I2SID[SID='2SE91' or SID='2SE90']"/>
<Variable name="System" as="[Item]" select="$p1/I2FP/2IS148"/>
<Variable name="SystemComponentAndSignals" as="[Item]" select="$System/2IS182*/2IS150* union $System/2IS182*/2IS151*"/>
<If test="any $AnalyzedComponentAndSignals satisfies (. in $SystemComponentAndSignals)">
<ForEach select="$System">
<ApplyTemplate name="ImplicitConnection_Template">
<WithParam name="Signals" select="$AnalyzedComponentAndSignals"/>
</ApplyTemplate>
</ForEach>
</If>
<ForEach select="/DEIT/I2IRQ">
<Node/>
</ForEach>
<ForEach select="$AnalyzedComponentAndSignals[not . in $SystemComponentAndSignals]">
<Node/>
</ForEach>
</Node>
<ForEachInContext name="HARAContext" group="SafetyGoal">
<Node style="SafetyGoal" group="safegoals" caption="#{?Name + AsilValue(@26AS)}"/>
<Edge from="." to="Context:/SafetyGoalToHazEv"/>
</ForEachInContext>
<ForEachInContext name="HARAContext" group="HazEv">
<Node style="HazardousEvent" group="hazevs" caption="#{?Name + AsilValue(@EAA1)}"/>
<Edge from="." to="Context:/HazEvToHaz"/>
</ForEachInContext>
<ForEachInContext name="HARAContext" group="Haz">
<Node style="Hazard" group="hazards">
<ForEach select="Context:/HazToDetail[SID='2SE91']">
<InPort connection="."/>
</ForEach>
</Node>
<Edge from="." to="Context:/HazToDetail"/>
</ForEachInContext>
<Template name="ImplicitConnection_Template">
<Parameter name="Signals" as="[Item]"/>
<Node>
<ForEach select="/2IS182[(any (/2IS182*/2IS150 union /2IS182*/2IS151) satisfies . in $Signals) or (any /2IS182* satisfies . in $Signals)]">
<ApplyTemplate name="ImplicitConnection_Template">
<WithParam name="Signals" select="$Signals"/>
</ApplyTemplate>
</ForEach>
<ForEach select="/part::2IS150[(DefObj in $Signals) or (Owner in $Signals)]">
<InPort connection="DefObj"/>
</ForEach>
<ForEach select="/part::2IS151[(DefObj in $Signals) or (Owner in $Signals)]">
<OutPort connection="DefObj"/>
</ForEach>
</Node>
</Template>
</Graph>Safety Grid

<Grid>
<Options>
<CellAutoHeight/>
<HeaderAutoHeight/>
</Options>
<Columns>
<ItemNameColumn caption="Safety goal" font="Normal8pt" width="100" cellMerge ="True" readOnly="False" objectName="safetyGoal" />
<DescriptionColumn caption="Description" font="Normal8pt" width="100" cellMerge ="True" readOnly="False" objectName="safetyGoal" />
<ItemNameColumn caption="Safe mode" font="Normal8pt" width="100" cellMerge ="True" readOnly="False" objectName="mode"/>
<AttributeColumn caption="ASIL rationale" font="Normal8pt" width="100" cellMerge ="True" readOnly="False" objectName="safetyGoal" type="26AR"/>
<AttributeColumn caption="ASIL" font="Normal8pt" width="50" cellMerge ="True" readOnly="False" objectName="safetyGoal" type="26AS"/>
<ItemNameColumn caption="Hazardous event" font="Normal8pt" width="100" cellMerge ="True" readOnly="False" objectName="hazardousEvent" />
<DescriptionColumn caption="Description" font="Normal8pt" width="100" cellMerge ="True" readOnly="False" objectName="hazardousEvent" />
<TextColumn caption="Consequence" font="Normal8pt" width="100" cellMerge ="True" readOnly="True" objectName="consequence" multiValueStyle="Bullets">#{Name}#{?if @2BSE != '' then ' (' + @2BSE + ')' else ''}</TextColumn>
<TextColumn caption="Situation" font="Normal8pt" width="100" cellMerge ="True" readOnly="True" objectName="situation" multiValueStyle="Bullets">#{Name}#{?if @2BEC != '' then ' (' + @2BEC + ')' else ''}</TextColumn>
<!--ItemNameColumn caption="Situation" font="Normal8pt" width="100" cellMerge ="True" multiValueStyle="Bullets" objectName="situation"/-->
<ItemNameColumn caption="Operation mode" font="Normal8pt" width="100" cellMerge ="True" objectName="failureMode"/>
<AttributeColumn caption="Severity" font="Normal8pt" width="30" cellMerge ="True" readOnly="False" objectName="hazardousEvent" type="2BSE"/>
<AttributeColumn caption="Exposure" font="Normal8pt" width="30" cellMerge ="True" readOnly="False" objectName="hazardousEvent" type="2BEC"/>
<AttributeColumn caption="Controllability" font="Normal8pt" width="30" cellMerge ="True" readOnly="False" objectName="hazardousEvent" type="2BCY"/>
<AttributeColumn caption="ASIL rational" font="Normal8pt" width="60" cellMerge ="True" readOnly="False" objectName="hazardousEvent" type="26AR"/>
<AttributeColumn caption="ASIL" font="Normal8pt" width="50" cellMerge ="True" readOnly="False" objectName="hazardousEvent" type="EAA1"/>
<ItemNameColumn caption="Hazard" font="Normal8pt" width="100" cellMerge ="True" readOnly="False" objectName="hazard" />
<DescriptionColumn caption="Description" font="Normal8pt" width="100" cellMerge ="True" readOnly="False" objectName="hazard" />
<ItemNameColumn caption="Flawed Item part" font="Normal8pt" width="100" cellMerge ="True" readOnly="False" objectName="flawedItem" multiValueStyle="NewLineSeparated"/>
<ItemNameColumn caption="Guideword" font="Normal8pt" width="100" cellMerge ="True" readOnly="False" objectName="guideword"/>
</Columns>
<ForEach select="/DESG">
<RowObject name="safetyGoal">
<ForEach select="/part::SGDF">
<Row>
<DefObj>
<ApplyTemplate name="HazEv"/>
</DefObj>
<ForEach select="/owner::/SGMS">
<RowObject name="mode"/>
</ForEach>
</Row>
</ForEach>
</RowObject>
</ForEach>
<Context name="HARAContext">
<AddParts owner="main" sid="DEHE" part="AnalysisToHazEv" defobj="HazEv"/>
<AddParts owner="main" sid="DESG" part="AnalysisToSafetyGoal" defobj="SafetyGoal"/>
<AddParts owner="SafetyGoal" sid="SGDF" part="SafetyGoalToHazEv" defobj="+HazEv"/>
<AddParts owner="main" sid="DEHA" part="AnalysisToHazard" defobj="Haz"/>
<AddParts owner="HazEv" sid="HEH" part="HazEvToHaz" defobj="+Haz"/>
</Context>
<ForEachInContext name="HARAContext" group="HazEv">
<ForEach select="Context:.[not /back::SafetyGoalToHazEv]">
<Row>
<ApplyTemplate name="HazEv"/>
</Row>
</ForEach>
</ForEachInContext>
<ForEachInContext name="HARAContext" group="Haz">
<ForEach select="Context:.[not /back::HazEvToHaz]">
<Row>
<ApplyTemplate name="Hazard"/>
</Row>
</ForEach>
</ForEachInContext>
<Template name="HazEv">
<RowObject name="hazardousEvent">
<ForEach select="/HEH">
<ApplyTemplate name="Hazard"/>
</ForEach>
<ForEach select="/HEOM">
<RowObject name="failureMode"/>
</ForEach>
<ForEach select="/I2GH">
<RowObject name="consequence"/>
</ForEach>
<ForEach select="/I2CMPST">
<RowObject name="situation"/>
</ForEach>
</RowObject>
</Template>
<Template name="Hazard">
<RowObject name="hazard">
<ForEach select="/I2HO union /I2HARQ">
<RowObject name="flawedItem"/>
</ForEach>
<ForEach select="/I2GW">
<RowObject name="guideword"/>
</ForEach>
</RowObject>
</Template>
</Grid> Safety Coverage Chart

<Charts>
<PieChart>
<Slices>
<Slice name="realized" caption="Realized in FSC" color="blue"/>
<Slice name="unrealized" caption="Not in FSC" color="red"/>
<Slice name="version" caption="Version inconsistent" color="yellow"/>
<Slice name="orphan" caption="In FSC but not in HARA" color="olive"/>
</Slices>
<Variable name="currentSafetyGoals" select="/I2SA/I2AHA/DESG" as="[Item]"/>
<Variable name="realizedGoals" select="/I2SA/I2AFTA/2IFW/2IFI*/(IBRA|I2FTRQ)[SID='EASG']" as="[Item]"/>
<Variable name="versionMismatch" select="$currentSafetyGoals[(not Handle in $realizedGoals.Select(Handle)) and (AncestorHandle in $realizedGoals.Select(AncestorHandle))]" as="[Item]"/>
<Counter name="My Pie">
<ForEach select="$realizedGoals[. in $currentSafetyGoals]">
<AddToSlice name="realized"/>
</ForEach>
<ForEach select="$currentSafetyGoals - $realizedGoals - $versionMismatch">
<AddToSlice name="unrealized"/>
</ForEach>
<ForEach select="$versionMismatch">
<AddToSlice name="version"/>
</ForEach>
<ForEach select="$realizedGoals - $currentSafetyGoals - $versionMismatch">
<AddToSlice name="orphan"/>
</ForEach>
</Counter>
</PieChart>
</Charts>