Skip to content

Commit 513ef74

Browse files
Added requirement prototype
Signed-off-by: Steve Springett <[email protected]>
1 parent 9265fba commit 513ef74

File tree

1 file changed

+281
-0
lines changed

1 file changed

+281
-0
lines changed
Lines changed: 281 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,281 @@
1+
{
2+
"$schema": "https://json-schema.org/draft/2020-12/schema",
3+
"$id": "http://localhost:8080/schema/2.0/cyclonedx-requirement-2.0.schema.json",
4+
"type": "object",
5+
"title": "CycloneDX Transparency Expression Language: Engineering Requirement",
6+
"$comment": "CycloneDX JSON schema is published under the terms of the Apache License 2.0.",
7+
"additionalProperties": false,
8+
"$defs": {
9+
"requirement": {
10+
"type": "object",
11+
"title": "Requirement",
12+
"description": "A requirement represents a specific need, constraint, or capability that must be met.",
13+
"additionalProperties": false,
14+
"properties": {
15+
"bom-ref": {
16+
"$ref": "cyclonedx-common-2.0.schema.json#/$defs/refType"
17+
},
18+
"id": {
19+
"type": "string",
20+
"title": "Identifier",
21+
"description": "A unique identifier for the requirement, often used in requirement management systems (e.g., REQ-001)."
22+
},
23+
"name": {
24+
"type": "string",
25+
"title": "Name",
26+
"description": "A short name or title for the requirement."
27+
},
28+
"description": {
29+
"type": "string",
30+
"title": "Description",
31+
"description": "A detailed description of the requirement."
32+
},
33+
"type": {
34+
"type": "array",
35+
"title": "Requirement Types",
36+
"description": "The categories or classifications applicable to the requirement.",
37+
"items": {
38+
"$ref": "#/$defs/requirementType"
39+
},
40+
"uniqueItems": true
41+
},
42+
"priority": {
43+
"type": "string",
44+
"title": "Priority",
45+
"description": "The priority level of the requirement.",
46+
"enum": [
47+
"critical",
48+
"high",
49+
"medium",
50+
"low"
51+
]
52+
},
53+
"status": {
54+
"$ref": "#/$defs/requirementStatus"
55+
},
56+
"version": {
57+
"type": "string",
58+
"title": "Version",
59+
"description": "The version of the requirement."
60+
},
61+
"stakeholders": {
62+
"type": "array",
63+
"title": "Stakeholders",
64+
"description": "The individuals or groups who have an interest in the requirement.",
65+
"items": {
66+
"type": "string"
67+
}
68+
},
69+
"acceptanceCriteria": {
70+
"type": "array",
71+
"title": "Acceptance Criteria",
72+
"description": "Criteria that must be met for the requirement to be considered satisfied.",
73+
"items": {
74+
"$ref": "#/$defs/acceptanceCriterion"
75+
}
76+
},
77+
"dependencies": {
78+
"type": "array",
79+
"title": "Dependencies",
80+
"description": "Other requirements that this requirement depends on.",
81+
"items": {
82+
"$ref": "#/$defs/dependency"
83+
}
84+
},
85+
"parent": {
86+
"type": "string",
87+
"title": "Parent BOM Reference",
88+
"description": "The optional `bom-ref` to a parent requirement. This establishes a hierarchy of requirements."
89+
},
90+
"rationale": {
91+
"type": "string",
92+
"title": "Rationale",
93+
"description": "The reasoning or justification for the requirement."
94+
},
95+
"fitCriterion": {
96+
"type": "string",
97+
"title": "Fit Criterion",
98+
"description": "A measurable test that the solution must pass to be acceptable to the stakeholders."
99+
},
100+
"effort": {
101+
"type": "string",
102+
"title": "Effort Estimation",
103+
"description": "An estimation of the effort required to implement the requirement."
104+
},
105+
"risk": {
106+
"type": "string",
107+
"title": "Risk",
108+
"description": "The risk level associated with implementing or not implementing the requirement.",
109+
"enum": [
110+
"critical",
111+
"high",
112+
"medium",
113+
"low"
114+
]
115+
},
116+
"attachments": {
117+
"type": "array",
118+
"title": "Attachments",
119+
"description": "Files or documents attached to the requirement.",
120+
"items": {
121+
"$ref": "cyclonedx-common-2.0.schema.json#/$defs/attachment"
122+
}
123+
},
124+
"properties": {
125+
"type": "array",
126+
"title": "Properties",
127+
"description": "Provides the ability to document properties in a name-value store. This provides flexibility to include data not officially supported in the standard.",
128+
"items": {
129+
"$ref": "cyclonedx-common-2.0.schema.json#/$defs/property"
130+
}
131+
},
132+
"externalReferences": {
133+
"type": "array",
134+
"title": "External References",
135+
"description": "External references provide a way to document systems, sites, and information that may be relevant to the requirement.",
136+
"items": {
137+
"$ref": "cyclonedx-common-2.0.schema.json#/$defs/externalReference"
138+
}
139+
}
140+
}
141+
},
142+
"requirementType": {
143+
"type": "string",
144+
"title": "Requirement Type",
145+
"description": "The category or classification applicable to the requirement.",
146+
"enum": [
147+
"accessibility",
148+
"auditability",
149+
"availability",
150+
"business",
151+
"compatibility",
152+
"compliance",
153+
"deployment",
154+
"functional",
155+
"interoperability",
156+
"localization",
157+
"maintainability",
158+
"non-functional",
159+
"other",
160+
"performance",
161+
"portability",
162+
"privacy",
163+
"regulatory",
164+
"reliability",
165+
"scalability",
166+
"security",
167+
"system",
168+
"testability",
169+
"usability",
170+
"user"
171+
],
172+
"meta:enum": {
173+
"accessibility": "Requirements ensuring inclusive access for people with disabilities or impairments.",
174+
"auditability": "Requirements defining the capability of a system to record activities for review and compliance purposes.",
175+
"availability": "Requirements describing the uptime and operational availability of systems or services.",
176+
"business": "Requirements derived from organizational goals, strategies, or business processes.",
177+
"compatibility": "Requirements ensuring the software or system functions correctly with other systems or legacy components.",
178+
"compliance": "Requirements ensuring adherence to internal policies, industry standards, or external agreements beyond regulatory mandates.",
179+
"deployment": "Requirements related to deploying, configuring, and operating the system in production environments.",
180+
"functional": "Requirements specifying the fundamental behaviors and capabilities of the system or application.",
181+
"interoperability": "Requirements addressing the ability of the system to interact seamlessly with external systems or products.",
182+
"localization": "Requirements specifying adaptations for specific languages, cultures, or regional needs.",
183+
"maintainability": "Requirements aimed at ensuring the ease of performing maintenance, enhancements, or repairs.",
184+
"non-functional": "Requirements that define constraints or qualities such as performance, usability, reliability, etc., rather than specific functionality.",
185+
"other": "Requirements that do not clearly fit into other specified categories.",
186+
"performance": "Requirements specifying response times, throughput, or other efficiency-related aspects.",
187+
"portability": "Requirements enabling the system or components to be transferred easily across various environments or platforms.",
188+
"privacy": "Requirements specifically addressing the handling and protection of personal and sensitive data.",
189+
"regulatory": "Requirements necessary for legal compliance, dictated by laws, regulations, or standards.",
190+
"reliability": "Requirements ensuring the system consistently performs under specified conditions and duration.",
191+
"scalability": "Requirements focused on the ability of the system to grow and manage increased demand effectively.",
192+
"security": "Requirements intended to protect systems, data, and users from malicious actions or threats.",
193+
"system": "Technical requirements defining infrastructure, architecture, or underlying technologies.",
194+
"testability": "Requirements ensuring the system can be effectively validated and tested.",
195+
"usability": "Requirements addressing the ease of use, intuitiveness, and overall user experience.",
196+
"user": "Requirements captured directly from user needs, tasks, and expectations."
197+
}
198+
},
199+
"requirementStatus": {
200+
"type": "string",
201+
"title": "Status",
202+
"description": "The current status of the requirement in the development lifecycle.",
203+
"enum": [
204+
"draft",
205+
"proposed",
206+
"approved",
207+
"implemented",
208+
"verified",
209+
"deferred",
210+
"rejected",
211+
"replaced",
212+
"obsolete"
213+
]
214+
},
215+
"acceptanceCriterion": {
216+
"type": "object",
217+
"title": "Acceptance Criterion",
218+
"description": "A specific condition that must be met for the requirement to be considered satisfied.",
219+
"additionalProperties": false,
220+
"properties": {
221+
"id": {
222+
"type": "string",
223+
"title": "Identifier",
224+
"description": "A unique identifier for the acceptance criterion."
225+
},
226+
"description": {
227+
"type": "string",
228+
"title": "Description",
229+
"description": "A description of the acceptance criterion."
230+
},
231+
"status": {
232+
"type": "string",
233+
"title": "Status",
234+
"description": "The current status of the acceptance criterion.",
235+
"enum": [
236+
"pending",
237+
"passed",
238+
"failed"
239+
]
240+
}
241+
}
242+
},
243+
"dependency": {
244+
"type": "object",
245+
"title": "Dependency",
246+
"description": "A dependency on another requirement.",
247+
"additionalProperties": false,
248+
"properties": {
249+
"ref": {
250+
"oneOf": [
251+
{
252+
"title": "Ref",
253+
"$ref": "#/definitions/refLinkType"
254+
},
255+
{
256+
"title": "BOM-Link Element",
257+
"$ref": "#/definitions/bomLinkElementType"
258+
}
259+
]
260+
},
261+
"type": {
262+
"type": "string",
263+
"title": "Dependency Type",
264+
"description": "The type of dependency relationship.",
265+
"enum": [
266+
"requires",
267+
"conflicts-with",
268+
"enhances",
269+
"implements",
270+
"other"
271+
]
272+
},
273+
"description": {
274+
"type": "string",
275+
"title": "Description",
276+
"description": "A description of the dependency relationship."
277+
}
278+
}
279+
}
280+
}
281+
}

0 commit comments

Comments
 (0)