-
Notifications
You must be signed in to change notification settings - Fork 59
Expand file tree
/
Copy path11b-Safety and Security Feature Views.sysml
More file actions
66 lines (57 loc) · 1.57 KB
/
11b-Safety and Security Feature Views.sysml
File metadata and controls
66 lines (57 loc) · 1.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
private import Views::*; // private import library package, not internal Views package!
package '11b-Safety and Security Feaure Views' {
private import ScalarValues::*;
package AnnotationDefinitions {
metadata def Safety {
attribute isMandatory : Boolean;
}
metadata def Security;
}
package PartsTree {
public import AnnotationDefinitions::*;
part vehicle {
part interior {
part alarm {@Security;}
part seatBelt[2] {@Safety{isMandatory = true;}}
part frontSeat[2];
part driverAirBag {@Safety{isMandatory = false;}}
}
part bodyAssy {
part body;
part bumper {@Safety{isMandatory = true;}}
part keylessEntry {@Security;}
}
part wheelAssy {
part wheel[2];
part antilockBrakes[2] {@Safety{isMandatory = false;}}
}
}
}
package ViewDefinitions {
public import AnnotationDefinitions::*;
view def SafetyFeatureView {
/* Parts that contribute to safety. */
filter @Safety;
render asTreeDiagram;
}
view def SafetyOrSecurityFeatureView {
/* Parts that contribute to safety OR security. */
filter @Safety | @Security;
}
}
package Views {
private import ViewDefinitions::*;
private import PartsTree::vehicle;
view vehicleSafetyFeatureView : SafetyFeatureView {
expose vehicle;
}
view vehicleMandatorySafetyFeatureView :> vehicleSafetyFeatureView {
expose vehicle::*::**;
filter @Safety and (as Safety).isMandatory;
}
view vehicleMandatorySafetyFeatureViewStandalone {
expose vehicle::**[@Safety and (as Safety).isMandatory];
render asElementTable;
}
}
}