/
SOFTWARE.sadl
123 lines (103 loc) · 4.68 KB
/
SOFTWARE.sadl
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/* Copyright (c) 2020, General Electric Company, Galois, Inc.
*
* All Rights Reserved
*
* This material is based upon work supported by the Defense Advanced Research
* Projects Agency (DARPA) under Contract No. FA8750-20-C-0203.
*
* Any opinions, findings and conclusions or recommendations expressed in this
* material are those of the author(s) and do not necessarily reflect the views
* of the Defense Advanced Research Projects Agency (DARPA).
*/
uri "http://arcos.rack/SOFTWARE" alias sw.
import "http://arcos.rack/PROV-S".
import "http://arcos.rack/FILE".
import "http://arcos.rack/AGENTS".
CODE_DEVELOPMENT
(note "An ACTIVITY that produces source code FILEs")
is a type of FILE_CREATION.
referenced (note "ENTITY(s) (e.g. REQUIREMENT) that were referenced during this ACTIVITY") describes CODE_DEVELOPMENT with values of type ENTITY.
referenced is a type of used.
governedBy (note "ENTITY(s) (e.g. REQUIREMENT) that gave rise to this ACTIVITY") describes CODE_DEVELOPMENT with values of type ENTITY.
governedBy is a type of used.
BUILD
(note "Describes a set of ACTIVITYs (e.g. CODE_GEN, COMPILE, ...) that together form some logical building unit")
is a type of FILE_CREATION.
step (note "A BUILD may be comprised of any number of sub-ACTIVITY(s)") describes BUILD with values of type ACTIVITY.
step is a type of wasInformedBy.
CODE_GEN
(note "ACTIVITY of running a CODE_GENERATOR to create source code FILEs")
is a type of FILE_CREATION.
COMPILE
(note "ACTIVITY of running a a COMPILER to produce executable and object FILEs")
is a type of FILE_CREATION.
compileInput (note "Source files that contributed to the compilation") describes COMPILE with values of type FILE.
compileInput is a type of used.
PACKAGE
(note "ACTIVITY of running a PACKAGER to produce a package FILE")
is a type of FILE_CREATION.
packageInput (note "Source files used when generating the package output") describes PACKAGE with values of type FILE.
packageInput is a type of used.
SWCOMPONENT_TYPE
(note "An open/extensible set of types of software components")
is a type of THING.
// A few common instances:
SourceFunction
(note "A function or procedure declared or defined in source code.")
is a SWCOMPONENT_TYPE
has identifier "SourceFunction".
BinaryFunction
(note "A function in a binary, as defined by the appropriate ABI.")
is a SWCOMPONENT_TYPE
has identifier "BinaryFunction".
SourceGlobalVariable
(note "A global variable declared or defined in source code.")
is a SWCOMPONENT_TYPE
has identifier "SourceGlobalVariable".
BinaryGlobalVariable
(note "A global variable (generally in the .data or .bss sections).")
is a SWCOMPONENT_TYPE
has identifier "BinaryGlobalVariable".
BinaryBasicBlock
(note "A basic block at the binary level.")
is a SWCOMPONENT_TYPE
has identifier "BinaryBasicBlock".
ClassDefinition
(note "A class in an object-oriented language.")
is a SWCOMPONENT_TYPE
has identifier "ClassDefinition".
ClassMethod
(note "A method attached to a class in an object-oriented language.")
is a SWCOMPONENT_TYPE
has identifier "ClassMethod".
ClassMemberVariable
(note "A variable attached to the instances of a class in an object-oriented language.")
is a SWCOMPONENT_TYPE
has identifier "ClassMemberVariable".
ClassConstructor
(note "A constructor in an object-oriented language.")
is a SWCOMPONENT_TYPE
has identifier "ClassConstructor".
Module
(note "A collection of related code, usually grouped in a lexical scope.")
is a SWCOMPONENT_TYPE
has identifier "Module".
Namespace
(note "A collection of related code, usually grouped in a lexical scope.")
is a SWCOMPONENT_TYPE
has identifier "Namespace".
SWCOMPONENT
(note "A concrete software component")
is a type of ENTITY.
componentType (note "Type of software component")
describes SWCOMPONENT with a single value of type SWCOMPONENT_TYPE.
valueType (note "The type of this value, if applicable (e.g. for functions or variables).")
describes SWCOMPONENT with values of type string.
/* How components relate to each other */
mentions (note "A component referenced by this one, e.g., a callee or variable being used.")
describes SWCOMPONENT with values of type SWCOMPONENT.
partOf (note "A structural sub-component, e.g., a function might be a subcomponent / part of a module.")
describes SWCOMPONENT with values of type SWCOMPONENT.
/* How components relate to the system as a whole */
instantiates (note "What logical component (system) does this physical component (code) instantiate or implement?")
describes SWCOMPONENT with values of type ENTITY.