@rse/ase 0.9.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dst/ase-bash.js +618 -0
- package/dst/ase-hook.js +27 -0
- package/package.json +1 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.github/plugin/plugin.json +1 -1
- package/plugin/meta/ase-format-arch.md +667 -0
- package/plugin/meta/ase-format-meta.md +39 -0
- package/plugin/meta/ase-format-spec.md +994 -0
- package/plugin/meta/ase-skill.md +8 -0
- package/plugin/package.json +1 -1
- package/plugin/skills/ase-code-craft/SKILL.md +4 -3
- package/plugin/skills/ase-code-refactor/SKILL.md +4 -3
- package/plugin/skills/ase-code-resolve/SKILL.md +4 -3
- package/plugin/skills/ase-meta-brainstorm/SKILL.md +2 -2
- package/plugin/skills/ase-task-condense/SKILL.md +267 -0
- package/plugin/skills/ase-task-condense/help.md +77 -0
- package/plugin/skills/ase-task-edit/SKILL.md +26 -26
- package/plugin/skills/ase-task-edit/help.md +10 -10
- package/plugin/skills/ase-task-grill/SKILL.md +8 -8
- package/plugin/.claude/settings.local.json +0 -7
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"homepage": "http://github.com/rse/ase",
|
|
7
7
|
"repository": { "url": "git+https://github.com/rse/ase.git", "type": "git" },
|
|
8
8
|
"bugs": { "url": "http://github.com/rse/ase/issues" },
|
|
9
|
-
"version": "0.9.
|
|
9
|
+
"version": "0.9.1",
|
|
10
10
|
"license": "GPL-3.0-only",
|
|
11
11
|
"author": {
|
|
12
12
|
"name": "Dr. Ralf S. Engelschall",
|
|
@@ -0,0 +1,667 @@
|
|
|
1
|
+
|
|
2
|
+
@./ase-format-meta.md
|
|
3
|
+
|
|
4
|
+
Architecture (ARCH)
|
|
5
|
+
===================
|
|
6
|
+
|
|
7
|
+
The **Artifact Set** **Architecture (ARCH)** specifies the "input"
|
|
8
|
+
and the "how" of the Software Engineering project.
|
|
9
|
+
|
|
10
|
+
Each **Artifact** of the **Artifact Set** **Architecture (ARCH)**
|
|
11
|
+
is stored under `docs/arch/ARCH-<artifact-id/>-<artifact-slug/>.md`,
|
|
12
|
+
relative to the project root directory, and with <artifact-slug/> being
|
|
13
|
+
derived from <artifact-name/> (see below) by lower-casing and using `-`
|
|
14
|
+
characters instead of spaces.
|
|
15
|
+
|
|
16
|
+
Each **Artifact** contains two timestamps: the <timestamp-created/>
|
|
17
|
+
is the timestamp when this **Artifact** was created. The
|
|
18
|
+
<timestamp-modified/> is the timestamp when this **Artifact** was last
|
|
19
|
+
modified. Both use an ISO-style format value. The value of both can be
|
|
20
|
+
determined by a call to the `ase_timestamp(format: "yyyy-LL-dd HH:mm")`
|
|
21
|
+
tool of the `ase` MCP server and use the `text` field of its response.
|
|
22
|
+
Whenever an **Artifact** is updated, the <timestamp-modified/> *MUST* be
|
|
23
|
+
updated, too.
|
|
24
|
+
|
|
25
|
+
The **Artifact Set** **Architecture (ARCH)** consists of the following
|
|
26
|
+
distinct **Artifact**s (listed under their <artifact-name/> and their
|
|
27
|
+
<artifact-id/>):
|
|
28
|
+
|
|
29
|
+
- **Context View (CV)**:
|
|
30
|
+
The relationships, dependencies, and interactions between the solution
|
|
31
|
+
and its environment, defining the system's scope, external entities,
|
|
32
|
+
and boundaries.
|
|
33
|
+
|
|
34
|
+
- **Functionality View (FV)**:
|
|
35
|
+
The functional elements of the solution, their responsibilities,
|
|
36
|
+
interfaces, and primary interactions, describing *what* the system does
|
|
37
|
+
at runtime.
|
|
38
|
+
|
|
39
|
+
- **Information View (IV)**:
|
|
40
|
+
The way the solution stores, manages, manipulates, and distributes
|
|
41
|
+
information, defining the static data structure and dynamic information
|
|
42
|
+
flow.
|
|
43
|
+
|
|
44
|
+
- **Concurrency View (CO)**:
|
|
45
|
+
The concurrency structure of the solution, mapping functional elements
|
|
46
|
+
to processes and threads, and defining how they coordinate and
|
|
47
|
+
communicate.
|
|
48
|
+
|
|
49
|
+
- **Development View (DV)**:
|
|
50
|
+
The architecture supporting the software development process, defining
|
|
51
|
+
the module organization, build approach, and codeline conventions.
|
|
52
|
+
|
|
53
|
+
- **Deployment View (DP)**:
|
|
54
|
+
The environment into which the solution is deployed, mapping software
|
|
55
|
+
elements to the runtime platform, hardware, and network topology.
|
|
56
|
+
|
|
57
|
+
- **Operations View (OV)**:
|
|
58
|
+
The way the solution is operated, administered, and supported in
|
|
59
|
+
production, defining installation, monitoring, and management concerns.
|
|
60
|
+
|
|
61
|
+
- **Quality Perspectives (QP)**:
|
|
62
|
+
How the Non-Functional Requirements (NR) are addressed.
|
|
63
|
+
|
|
64
|
+
Context View (CV)
|
|
65
|
+
-----------------
|
|
66
|
+
|
|
67
|
+
The relationships, dependencies, and interactions between the solution
|
|
68
|
+
and its environment, defining the system's scope, external entities,
|
|
69
|
+
and boundaries.
|
|
70
|
+
|
|
71
|
+
- Format:
|
|
72
|
+
|
|
73
|
+
<format>
|
|
74
|
+
|
|
75
|
+
# ARCHITECTURE: CONTEXT VIEW (ARCH-CV)
|
|
76
|
+
|
|
77
|
+
✳ Created: **<timestamp-created/>**
|
|
78
|
+
✎ Modified: **<timestamp-modified/>**
|
|
79
|
+
|
|
80
|
+
<arch-cv-entity/>
|
|
81
|
+
<arch-cv-entity/>
|
|
82
|
+
[...]
|
|
83
|
+
|
|
84
|
+
</format>
|
|
85
|
+
|
|
86
|
+
- <arch-cv-entity/> format:
|
|
87
|
+
|
|
88
|
+
<format>
|
|
89
|
+
|
|
90
|
+
## ENTITY ARCH-CV-<arch-cv-entity-id/>: <arch-cv-entity-name/>
|
|
91
|
+
|
|
92
|
+
- Kind: <arch-cv-entity-kind/>
|
|
93
|
+
- Direction: <arch-cv-entity-direction/>
|
|
94
|
+
- Interface: <arch-cv-entity-interface/>
|
|
95
|
+
- Data: <arch-cv-entity-data/>
|
|
96
|
+
|
|
97
|
+
<arch-cv-entity-description/>
|
|
98
|
+
(why: <arch-cv-entity-rationale/>)
|
|
99
|
+
|
|
100
|
+
</format>
|
|
101
|
+
|
|
102
|
+
- <arch-cv-entity/> details:
|
|
103
|
+
|
|
104
|
+
- <arch-cv-entity-id/>: per-artifact unique "slug" of always 1-3
|
|
105
|
+
lower-cased words (concatenated with "-" characters and
|
|
106
|
+
in total not longer than 30 characters), derived from
|
|
107
|
+
<arch-cv-entity-name/>.
|
|
108
|
+
|
|
109
|
+
- <arch-cv-entity-name/> is a short (2-5 word) summary of the
|
|
110
|
+
external entity the solution interacts with (e.g. `Payment
|
|
111
|
+
Gateway`, `Identity Provider`, `End User`).
|
|
112
|
+
|
|
113
|
+
- <arch-cv-entity-kind/> is one of:
|
|
114
|
+
|
|
115
|
+
- `Person`: A human actor interacting with the solution.
|
|
116
|
+
- `System`: An external software system the solution integrates with.
|
|
117
|
+
- `Service`: A third-party or managed service the solution consumes.
|
|
118
|
+
- `Datastore`: An external data repository the solution reads from or writes to.
|
|
119
|
+
- `Device`: A physical device or sensor the solution communicates with.
|
|
120
|
+
- `Organization`: An external organizational party (e.g. regulator, vendor).
|
|
121
|
+
|
|
122
|
+
- <arch-cv-entity-direction/> is the flow of interaction relative to
|
|
123
|
+
the solution: `Inbound` (entity drives the solution), `Outbound`
|
|
124
|
+
(solution drives the entity), or `Bidirectional` (both directions).
|
|
125
|
+
|
|
126
|
+
- <arch-cv-entity-interface/> is how the interaction happens
|
|
127
|
+
(e.g. REST API, message queue, file exchange, web UI).
|
|
128
|
+
|
|
129
|
+
- <arch-cv-entity-data/> is the principal information exchanged
|
|
130
|
+
across the boundary with this entity.
|
|
131
|
+
|
|
132
|
+
- <arch-cv-entity-description/> is a concise paragraph (1-3
|
|
133
|
+
sentences) of prose describing the relationship and dependency
|
|
134
|
+
between the solution and the external entity.
|
|
135
|
+
|
|
136
|
+
- <arch-cv-entity-rationale/> is the 1-sentence rationale ("why")
|
|
137
|
+
for the entity being part of the system context.
|
|
138
|
+
|
|
139
|
+
- In case the rationale is not present, the
|
|
140
|
+
entire `(why: [...])` chunk is omitted.
|
|
141
|
+
|
|
142
|
+
Functionality View (FV)
|
|
143
|
+
-----------------------
|
|
144
|
+
|
|
145
|
+
The functional elements of the solution, their responsibilities,
|
|
146
|
+
interfaces, and primary interactions, describing *what* the system does
|
|
147
|
+
at runtime.
|
|
148
|
+
|
|
149
|
+
- Format:
|
|
150
|
+
|
|
151
|
+
<format>
|
|
152
|
+
|
|
153
|
+
# ARCHITECTURE: FUNCTIONALITY VIEW (ARCH-FV)
|
|
154
|
+
|
|
155
|
+
✳ Created: **<timestamp-created/>**
|
|
156
|
+
✎ Modified: **<timestamp-modified/>**
|
|
157
|
+
|
|
158
|
+
<arch-fv-element/>
|
|
159
|
+
<arch-fv-element/>
|
|
160
|
+
[...]
|
|
161
|
+
|
|
162
|
+
</format>
|
|
163
|
+
|
|
164
|
+
- <arch-fv-element/> format:
|
|
165
|
+
|
|
166
|
+
<format>
|
|
167
|
+
|
|
168
|
+
## ELEMENT ARCH-FV-<arch-fv-element-id/>: <arch-fv-element-name/>
|
|
169
|
+
|
|
170
|
+
- Kind: <arch-fv-element-kind/>
|
|
171
|
+
- Responsibility: <arch-fv-element-responsibility/>
|
|
172
|
+
- Interface: <arch-fv-element-interface/>
|
|
173
|
+
- Depends On: <arch-fv-element-dependency/>, [...]
|
|
174
|
+
|
|
175
|
+
<arch-fv-element-description/>
|
|
176
|
+
(why: <arch-fv-element-rationale/>)
|
|
177
|
+
|
|
178
|
+
</format>
|
|
179
|
+
|
|
180
|
+
- <arch-fv-element/> details:
|
|
181
|
+
|
|
182
|
+
- <arch-fv-element-id/>: per-artifact unique "slug" of always 1-3
|
|
183
|
+
lower-cased words (concatenated with "-" characters and
|
|
184
|
+
in total not longer than 30 characters), derived from
|
|
185
|
+
<arch-fv-element-name/>.
|
|
186
|
+
|
|
187
|
+
- <arch-fv-element-name/> is a short (2-5 word) summary of the
|
|
188
|
+
functional element (e.g. `Authentication Service`, `Order
|
|
189
|
+
Processor`, `Notification Dispatcher`).
|
|
190
|
+
|
|
191
|
+
- <arch-fv-element-kind/> is one of:
|
|
192
|
+
|
|
193
|
+
- `Component`: A cohesive unit of functionality with a defined interface.
|
|
194
|
+
- `Service`: An independently deployable provider of functionality.
|
|
195
|
+
- `Module`: A logical grouping of related functionality within a component.
|
|
196
|
+
- `Connector`: A mediator that conveys interactions between elements (e.g. bus, gateway).
|
|
197
|
+
- `Subsystem`: A larger composite grouping several components.
|
|
198
|
+
|
|
199
|
+
- <arch-fv-element-responsibility/> is the 1-sentence statement of
|
|
200
|
+
the single, primary responsibility the element owns.
|
|
201
|
+
|
|
202
|
+
- <arch-fv-element-interface/> is how other elements interact with
|
|
203
|
+
this element (e.g. REST API, library API, message topic, CLI).
|
|
204
|
+
|
|
205
|
+
- <arch-fv-element-dependency/> is an `ARCH-FV-<arch-fv-element-id/>`
|
|
206
|
+
reference to another functional element this element depends on
|
|
207
|
+
at runtime.
|
|
208
|
+
|
|
209
|
+
- <arch-fv-element-description/> is a concise paragraph (1-3
|
|
210
|
+
sentences) of prose describing *what* the element does and how it
|
|
211
|
+
collaborates with the elements it depends on.
|
|
212
|
+
|
|
213
|
+
- <arch-fv-element-rationale/> is the 1-sentence rationale ("why")
|
|
214
|
+
for the element's existence and boundary.
|
|
215
|
+
|
|
216
|
+
- In case an element has no dependencies at all, the
|
|
217
|
+
entire `- Depends On:` bullet point is omitted.
|
|
218
|
+
|
|
219
|
+
- In case the rationale is not present, the
|
|
220
|
+
entire `(why: [...])` chunk is omitted.
|
|
221
|
+
|
|
222
|
+
Information View (IV)
|
|
223
|
+
---------------------
|
|
224
|
+
|
|
225
|
+
The way the solution stores, manages, manipulates, and distributes
|
|
226
|
+
information, defining the static data structure and dynamic information
|
|
227
|
+
flow.
|
|
228
|
+
|
|
229
|
+
- Format:
|
|
230
|
+
|
|
231
|
+
<format>
|
|
232
|
+
|
|
233
|
+
# ARCHITECTURE: INFORMATION VIEW (ARCH-IV)
|
|
234
|
+
|
|
235
|
+
✳ Created: **<timestamp-created/>**
|
|
236
|
+
✎ Modified: **<timestamp-modified/>**
|
|
237
|
+
|
|
238
|
+
<arch-iv-aspect/>
|
|
239
|
+
<arch-iv-aspect/>
|
|
240
|
+
[...]
|
|
241
|
+
|
|
242
|
+
</format>
|
|
243
|
+
|
|
244
|
+
- <arch-iv-aspect/> format:
|
|
245
|
+
|
|
246
|
+
<format>
|
|
247
|
+
|
|
248
|
+
## ASPECT ARCH-IV-<arch-iv-aspect-id/>: <arch-iv-aspect-name/>
|
|
249
|
+
|
|
250
|
+
- Concern: <arch-iv-aspect-concern/>
|
|
251
|
+
- Entities: <arch-iv-aspect-entity/>, [...]
|
|
252
|
+
- Owner: <arch-iv-aspect-owner/>
|
|
253
|
+
- Lifecycle: <arch-iv-aspect-lifecycle/>
|
|
254
|
+
|
|
255
|
+
<arch-iv-aspect-description/>
|
|
256
|
+
(why: <arch-iv-aspect-rationale/>)
|
|
257
|
+
|
|
258
|
+
</format>
|
|
259
|
+
|
|
260
|
+
- <arch-iv-aspect/> details:
|
|
261
|
+
|
|
262
|
+
- <arch-iv-aspect-id/>: per-artifact unique "slug" of always 1-3
|
|
263
|
+
lower-cased words (concatenated with "-" characters and
|
|
264
|
+
in total not longer than 30 characters), derived from
|
|
265
|
+
<arch-iv-aspect-name/>.
|
|
266
|
+
|
|
267
|
+
- <arch-iv-aspect-name/> is a short (2-5 word) summary of the
|
|
268
|
+
information aspect (e.g. `Order Persistence`, `Event Stream`,
|
|
269
|
+
`Cache Coherency`).
|
|
270
|
+
|
|
271
|
+
- <arch-iv-aspect-concern/> is the information-handling concern the
|
|
272
|
+
aspect addresses, one of `Persistence`, `Flow`, `Ownership`,
|
|
273
|
+
`Consistency`, `Replication`, `Caching`, `Retention`, or
|
|
274
|
+
`Migration`.
|
|
275
|
+
|
|
276
|
+
- <arch-iv-aspect-entity/> is a `SPEC-DM-<spec-dm-entity-id/>`
|
|
277
|
+
reference to a corresponding entity of the Data Model **Artifact**
|
|
278
|
+
the aspect governs.
|
|
279
|
+
|
|
280
|
+
- <arch-iv-aspect-owner/> is an `ARCH-FV-<arch-fv-element-id/>`
|
|
281
|
+
reference to the functional element that owns this information.
|
|
282
|
+
|
|
283
|
+
- <arch-iv-aspect-lifecycle/> is how the information comes into
|
|
284
|
+
being, changes, and is disposed of (e.g. `created on order,
|
|
285
|
+
retained 7 years, then purged`).
|
|
286
|
+
|
|
287
|
+
- <arch-iv-aspect-description/> is a concise paragraph (1-3
|
|
288
|
+
sentences) of prose describing how the solution stores, manages,
|
|
289
|
+
or distributes the information and how its consistency is upheld.
|
|
290
|
+
|
|
291
|
+
- <arch-iv-aspect-rationale/> is the 1-sentence rationale ("why")
|
|
292
|
+
for handling the information this way.
|
|
293
|
+
|
|
294
|
+
- In case the entity or owner references are not present, the
|
|
295
|
+
respective bullet point is omitted.
|
|
296
|
+
|
|
297
|
+
- In case the rationale is not present, the
|
|
298
|
+
entire `(why: [...])` chunk is omitted.
|
|
299
|
+
|
|
300
|
+
Concurrency View (CO)
|
|
301
|
+
---------------------
|
|
302
|
+
|
|
303
|
+
The concurrency structure of the solution, mapping functional elements
|
|
304
|
+
to processes and threads, and defining how they coordinate and
|
|
305
|
+
communicate.
|
|
306
|
+
|
|
307
|
+
- Format:
|
|
308
|
+
|
|
309
|
+
<format>
|
|
310
|
+
|
|
311
|
+
# ARCHITECTURE: CONCURRENCY VIEW (ARCH-CO)
|
|
312
|
+
|
|
313
|
+
✳ Created: **<timestamp-created/>**
|
|
314
|
+
✎ Modified: **<timestamp-modified/>**
|
|
315
|
+
|
|
316
|
+
<arch-co-unit/>
|
|
317
|
+
<arch-co-unit/>
|
|
318
|
+
[...]
|
|
319
|
+
|
|
320
|
+
</format>
|
|
321
|
+
|
|
322
|
+
- <arch-co-unit/> format:
|
|
323
|
+
|
|
324
|
+
<format>
|
|
325
|
+
|
|
326
|
+
## UNIT ARCH-CO-<arch-co-unit-id/>: <arch-co-unit-name/>
|
|
327
|
+
|
|
328
|
+
- Kind: <arch-co-unit-kind/>
|
|
329
|
+
- Hosts: <arch-co-unit-element/>, [...]
|
|
330
|
+
- Multiplicity: <arch-co-unit-multiplicity/>
|
|
331
|
+
- Coordination: <arch-co-unit-coordination/>
|
|
332
|
+
|
|
333
|
+
<arch-co-unit-description/>
|
|
334
|
+
(why: <arch-co-unit-rationale/>)
|
|
335
|
+
|
|
336
|
+
</format>
|
|
337
|
+
|
|
338
|
+
- <arch-co-unit/> details:
|
|
339
|
+
|
|
340
|
+
- <arch-co-unit-id/>: per-artifact unique "slug" of always 1-3
|
|
341
|
+
lower-cased words (concatenated with "-" characters and
|
|
342
|
+
in total not longer than 30 characters), derived from
|
|
343
|
+
<arch-co-unit-name/>.
|
|
344
|
+
|
|
345
|
+
- <arch-co-unit-name/> is a short (2-5 word) summary of the
|
|
346
|
+
concurrency unit (e.g. `Web Worker Pool`, `Background Scheduler`,
|
|
347
|
+
`Ingest Queue Consumer`).
|
|
348
|
+
|
|
349
|
+
- <arch-co-unit-kind/> is one of:
|
|
350
|
+
|
|
351
|
+
- `Process`: An independent OS process with its own address space.
|
|
352
|
+
- `Thread`: A thread of execution within a process.
|
|
353
|
+
- `Pool`: A managed group of interchangeable workers.
|
|
354
|
+
- `Queue`: An asynchronous buffer decoupling producers and consumers.
|
|
355
|
+
- `EventLoop`: A single-threaded cooperative scheduler of tasks.
|
|
356
|
+
|
|
357
|
+
- <arch-co-unit-element/> is an `ARCH-FV-<arch-fv-element-id/>`
|
|
358
|
+
reference to a functional element that runs inside this
|
|
359
|
+
concurrency unit.
|
|
360
|
+
|
|
361
|
+
- <arch-co-unit-multiplicity/> is how many instances of the unit run
|
|
362
|
+
(e.g. `1`, `1 per CPU core`, `0..n auto-scaled`).
|
|
363
|
+
|
|
364
|
+
- <arch-co-unit-coordination/> is the mechanism by which the unit
|
|
365
|
+
coordinates or communicates with other units (e.g. `shared queue`,
|
|
366
|
+
`mutex`, `message passing`, `optimistic locking`).
|
|
367
|
+
|
|
368
|
+
- <arch-co-unit-description/> is a concise paragraph (1-3 sentences)
|
|
369
|
+
of prose describing how the unit executes and how it avoids or
|
|
370
|
+
manages contention, races, and deadlocks.
|
|
371
|
+
|
|
372
|
+
- <arch-co-unit-rationale/> is the 1-sentence rationale ("why") for
|
|
373
|
+
the chosen concurrency structure.
|
|
374
|
+
|
|
375
|
+
- In case the unit hosts no functional elements, the
|
|
376
|
+
entire `- Hosts:` bullet point is omitted.
|
|
377
|
+
|
|
378
|
+
- In case the rationale is not present, the
|
|
379
|
+
entire `(why: [...])` chunk is omitted.
|
|
380
|
+
|
|
381
|
+
Development View (DV)
|
|
382
|
+
---------------------
|
|
383
|
+
|
|
384
|
+
The architecture supporting the software development process, defining
|
|
385
|
+
the module organization, build approach, and codeline conventions.
|
|
386
|
+
|
|
387
|
+
- Format:
|
|
388
|
+
|
|
389
|
+
<format>
|
|
390
|
+
|
|
391
|
+
# ARCHITECTURE: DEVELOPMENT VIEW (ARCH-DV)
|
|
392
|
+
|
|
393
|
+
✳ Created: **<timestamp-created/>**
|
|
394
|
+
✎ Modified: **<timestamp-modified/>**
|
|
395
|
+
|
|
396
|
+
<arch-dv-aspect/>
|
|
397
|
+
<arch-dv-aspect/>
|
|
398
|
+
[...]
|
|
399
|
+
|
|
400
|
+
</format>
|
|
401
|
+
|
|
402
|
+
- <arch-dv-aspect/> format:
|
|
403
|
+
|
|
404
|
+
<format>
|
|
405
|
+
|
|
406
|
+
## ASPECT ARCH-DV-<arch-dv-aspect-id/>: <arch-dv-aspect-name/>
|
|
407
|
+
|
|
408
|
+
- Category: <arch-dv-aspect-category/>
|
|
409
|
+
|
|
410
|
+
<arch-dv-aspect-description/>
|
|
411
|
+
(why: <arch-dv-aspect-rationale/>)
|
|
412
|
+
|
|
413
|
+
</format>
|
|
414
|
+
|
|
415
|
+
- <arch-dv-aspect/> details:
|
|
416
|
+
|
|
417
|
+
- <arch-dv-aspect-id/>: per-artifact unique "slug" of always 1-3
|
|
418
|
+
lower-cased words (concatenated with "-" characters and
|
|
419
|
+
in total not longer than 30 characters), derived from
|
|
420
|
+
<arch-dv-aspect-name/>.
|
|
421
|
+
|
|
422
|
+
- <arch-dv-aspect-name/> is a short (2-5 word) summary of the
|
|
423
|
+
development aspect (e.g. `Module Layering`, `Build Pipeline`,
|
|
424
|
+
`Branching Model`).
|
|
425
|
+
|
|
426
|
+
- <arch-dv-aspect-category/> is the development concern the aspect
|
|
427
|
+
governs, one of `Structure` (module/package organization),
|
|
428
|
+
`Build` (compilation and packaging), `Dependency` (dependency
|
|
429
|
+
management and layering rules), `Codeline` (branching, merging,
|
|
430
|
+
versioning), `Standardization` (coding standards and conventions),
|
|
431
|
+
or `Tooling` (development tools and automation).
|
|
432
|
+
|
|
433
|
+
- <arch-dv-aspect-description/> is a concise paragraph (1-3
|
|
434
|
+
sentences) of prose describing the development convention or
|
|
435
|
+
structure and the rule developers must follow.
|
|
436
|
+
|
|
437
|
+
- <arch-dv-aspect-rationale/> is the 1-sentence rationale ("why")
|
|
438
|
+
for the development aspect.
|
|
439
|
+
|
|
440
|
+
- In case the rationale is not present, the
|
|
441
|
+
entire `(why: [...])` chunk is omitted.
|
|
442
|
+
|
|
443
|
+
Deployment View (DP)
|
|
444
|
+
--------------------
|
|
445
|
+
|
|
446
|
+
The environment into which the solution is deployed, mapping software
|
|
447
|
+
elements to the runtime platform, hardware, and network topology.
|
|
448
|
+
|
|
449
|
+
- Format:
|
|
450
|
+
|
|
451
|
+
<format>
|
|
452
|
+
|
|
453
|
+
# ARCHITECTURE: DEPLOYMENT VIEW (ARCH-DP)
|
|
454
|
+
|
|
455
|
+
✳ Created: **<timestamp-created/>**
|
|
456
|
+
✎ Modified: **<timestamp-modified/>**
|
|
457
|
+
|
|
458
|
+
<arch-dp-node/>
|
|
459
|
+
<arch-dp-node/>
|
|
460
|
+
[...]
|
|
461
|
+
|
|
462
|
+
</format>
|
|
463
|
+
|
|
464
|
+
- <arch-dp-node/> format:
|
|
465
|
+
|
|
466
|
+
<format>
|
|
467
|
+
|
|
468
|
+
## NODE ARCH-DP-<arch-dp-node-id/>: <arch-dp-node-name/>
|
|
469
|
+
|
|
470
|
+
- Kind: <arch-dp-node-kind/>
|
|
471
|
+
- Platform: <arch-dp-node-platform/>
|
|
472
|
+
- Hosts: <arch-dp-node-element/>, [...]
|
|
473
|
+
- Network: <arch-dp-node-network/>
|
|
474
|
+
|
|
475
|
+
<arch-dp-node-description/>
|
|
476
|
+
(why: <arch-dp-node-rationale/>)
|
|
477
|
+
|
|
478
|
+
</format>
|
|
479
|
+
|
|
480
|
+
- <arch-dp-node/> details:
|
|
481
|
+
|
|
482
|
+
- <arch-dp-node-id/>: per-artifact unique "slug" of always 1-3
|
|
483
|
+
lower-cased words (concatenated with "-" characters and
|
|
484
|
+
in total not longer than 30 characters), derived from
|
|
485
|
+
<arch-dp-node-name/>.
|
|
486
|
+
|
|
487
|
+
- <arch-dp-node-name/> is a short (2-5 word) summary of the
|
|
488
|
+
deployment node (e.g. `Web Tier`, `Database Cluster`, `Edge CDN`).
|
|
489
|
+
|
|
490
|
+
- <arch-dp-node-kind/> is one of:
|
|
491
|
+
|
|
492
|
+
- `Server`: A physical or virtual machine.
|
|
493
|
+
- `Container`: A containerized runtime (e.g. Docker, OCI).
|
|
494
|
+
- `Cluster`: A managed group of nodes (e.g. Kubernetes cluster).
|
|
495
|
+
- `Function`: A serverless / function-as-a-service runtime.
|
|
496
|
+
- `Device`: An edge or client device.
|
|
497
|
+
- `Managed`: A managed cloud service (e.g. managed database, queue).
|
|
498
|
+
|
|
499
|
+
- <arch-dp-node-platform/> is the runtime platform of the node
|
|
500
|
+
(e.g. `Linux x86-64`, `Kubernetes 1.30`, `AWS Lambda (Node.js)`).
|
|
501
|
+
|
|
502
|
+
- <arch-dp-node-element/> is an `ARCH-FV-<arch-fv-element-id/>`
|
|
503
|
+
reference to a functional element deployed onto this node.
|
|
504
|
+
|
|
505
|
+
- <arch-dp-node-network/> is the network placement and connectivity
|
|
506
|
+
of the node (e.g. `public subnet, TLS 443`, `private VLAN`).
|
|
507
|
+
|
|
508
|
+
- <arch-dp-node-description/> is a concise paragraph (1-3 sentences)
|
|
509
|
+
of prose describing the node, its sizing, and its place in the
|
|
510
|
+
deployment topology.
|
|
511
|
+
|
|
512
|
+
- <arch-dp-node-rationale/> is the 1-sentence rationale ("why") for
|
|
513
|
+
the node's placement and platform choice.
|
|
514
|
+
|
|
515
|
+
- In case the node hosts no functional elements, the
|
|
516
|
+
entire `- Hosts:` bullet point is omitted.
|
|
517
|
+
|
|
518
|
+
- In case the rationale is not present, the
|
|
519
|
+
entire `(why: [...])` chunk is omitted.
|
|
520
|
+
|
|
521
|
+
Operations View (OV)
|
|
522
|
+
--------------------
|
|
523
|
+
|
|
524
|
+
The way the solution is operated, administered, and supported in
|
|
525
|
+
production, defining installation, monitoring, and management concerns.
|
|
526
|
+
|
|
527
|
+
- Format:
|
|
528
|
+
|
|
529
|
+
<format>
|
|
530
|
+
|
|
531
|
+
# ARCHITECTURE: OPERATIONS VIEW (ARCH-OV)
|
|
532
|
+
|
|
533
|
+
✳ Created: **<timestamp-created/>**
|
|
534
|
+
✎ Modified: **<timestamp-modified/>**
|
|
535
|
+
|
|
536
|
+
<arch-ov-concern/>
|
|
537
|
+
<arch-ov-concern/>
|
|
538
|
+
[...]
|
|
539
|
+
|
|
540
|
+
</format>
|
|
541
|
+
|
|
542
|
+
- <arch-ov-concern/> format:
|
|
543
|
+
|
|
544
|
+
<format>
|
|
545
|
+
|
|
546
|
+
## CONCERN ARCH-OV-<arch-ov-concern-id/>: <arch-ov-concern-name/>
|
|
547
|
+
|
|
548
|
+
- Category: <arch-ov-concern-category/>
|
|
549
|
+
- Element: <arch-ov-concern-element/>, [...]
|
|
550
|
+
|
|
551
|
+
<arch-ov-concern-description/>
|
|
552
|
+
(why: <arch-ov-concern-rationale/>)
|
|
553
|
+
|
|
554
|
+
</format>
|
|
555
|
+
|
|
556
|
+
- <arch-ov-concern/> details:
|
|
557
|
+
|
|
558
|
+
- <arch-ov-concern-id/>: per-artifact unique "slug" of always 1-3
|
|
559
|
+
lower-cased words (concatenated with "-" characters and
|
|
560
|
+
in total not longer than 30 characters), derived from
|
|
561
|
+
<arch-ov-concern-name/>.
|
|
562
|
+
|
|
563
|
+
- <arch-ov-concern-name/> is a short (2-5 word) summary of the
|
|
564
|
+
operational concern (e.g. `Rolling Deployment`, `Metrics
|
|
565
|
+
Collection`, `Backup and Restore`).
|
|
566
|
+
|
|
567
|
+
- <arch-ov-concern-category/> is the category of the concern,
|
|
568
|
+
one of `Installation`, `Configuration`, `Provisioning`,
|
|
569
|
+
`Monitoring`, `Logging`, `Alerting`, `Backup`, `Recovery`,
|
|
570
|
+
`Upgrade`, or `Support`.
|
|
571
|
+
|
|
572
|
+
- <arch-ov-concern-element/> is an `ARCH-FV-<arch-fv-element-id/>`
|
|
573
|
+
or `ARCH-DP-<arch-dp-node-id/>` reference to the functional
|
|
574
|
+
element or deployment node the concern applies to.
|
|
575
|
+
|
|
576
|
+
- <arch-ov-concern-description/> is a concise paragraph (1-3
|
|
577
|
+
sentences) of prose describing how the concern is handled in
|
|
578
|
+
production and which procedures or tools support it.
|
|
579
|
+
|
|
580
|
+
- <arch-ov-concern-rationale/> is the 1-sentence rationale ("why")
|
|
581
|
+
for the operational approach.
|
|
582
|
+
|
|
583
|
+
- In case the element reference is not present, the
|
|
584
|
+
entire `- Element:` bullet point is omitted.
|
|
585
|
+
|
|
586
|
+
- In case the rationale is not present, the
|
|
587
|
+
entire `(why: [...])` chunk is omitted.
|
|
588
|
+
|
|
589
|
+
Quality Perspectives (QP)
|
|
590
|
+
-------------------------
|
|
591
|
+
|
|
592
|
+
How the Non-Functional Requirements (NR) are addressed.
|
|
593
|
+
|
|
594
|
+
- Format:
|
|
595
|
+
|
|
596
|
+
<format>
|
|
597
|
+
|
|
598
|
+
# ARCHITECTURE: QUALITY PERSPECTIVES (ARCH-QP)
|
|
599
|
+
|
|
600
|
+
✳ Created: **<timestamp-created/>**
|
|
601
|
+
✎ Modified: **<timestamp-modified/>**
|
|
602
|
+
|
|
603
|
+
<arch-qp-perspective/>
|
|
604
|
+
<arch-qp-perspective/>
|
|
605
|
+
[...]
|
|
606
|
+
|
|
607
|
+
</format>
|
|
608
|
+
|
|
609
|
+
- <arch-qp-perspective/> format:
|
|
610
|
+
|
|
611
|
+
<format>
|
|
612
|
+
|
|
613
|
+
## PERSPECTIVE ARCH-QP-<arch-qp-perspective-id/>: <arch-qp-perspective-name/>
|
|
614
|
+
|
|
615
|
+
- Quality: <arch-qp-perspective-quality/>
|
|
616
|
+
- Addresses: <arch-qp-perspective-requirement/>, [...]
|
|
617
|
+
- Tactic: <arch-qp-perspective-tactic/>
|
|
618
|
+
- Affects: <arch-qp-perspective-element/>, [...]
|
|
619
|
+
|
|
620
|
+
<arch-qp-perspective-description/>
|
|
621
|
+
(why: <arch-qp-perspective-rationale/>)
|
|
622
|
+
|
|
623
|
+
</format>
|
|
624
|
+
|
|
625
|
+
- <arch-qp-perspective/> details:
|
|
626
|
+
|
|
627
|
+
- <arch-qp-perspective-id/>: per-artifact unique "slug" of always
|
|
628
|
+
1-3 lower-cased words (concatenated with "-" characters and
|
|
629
|
+
in total not longer than 30 characters), derived from
|
|
630
|
+
<arch-qp-perspective-name/>.
|
|
631
|
+
|
|
632
|
+
- <arch-qp-perspective-name/> is a short (2-5 word) summary of the
|
|
633
|
+
quality perspective (e.g. `Horizontal Scaling`, `Defense in
|
|
634
|
+
Depth`, `Graceful Degradation`).
|
|
635
|
+
|
|
636
|
+
- <arch-qp-perspective-quality/> is the quality attribute the
|
|
637
|
+
perspective addresses, one of `Performance`, `Scalability`,
|
|
638
|
+
`Reliability`, `Availability`, `Security`, `Privacy`,
|
|
639
|
+
`Usability`, `Accessibility`, `Maintainability`, `Portability`,
|
|
640
|
+
`Compatibility`, or `Compliance` (aligned with the Non-Functional
|
|
641
|
+
Requirements categories).
|
|
642
|
+
|
|
643
|
+
- <arch-qp-perspective-requirement/> is a
|
|
644
|
+
`SPEC-NR-<spec-nr-requirement-id/>` reference to the corresponding
|
|
645
|
+
Non-Functional Requirement (NR) **Aspect** the perspective addresses.
|
|
646
|
+
|
|
647
|
+
- <arch-qp-perspective-tactic/> is the architectural tactic or
|
|
648
|
+
strategy applied to achieve the quality (e.g. `stateless
|
|
649
|
+
replication behind a load balancer`, `read-through cache`, `circuit
|
|
650
|
+
breaker`).
|
|
651
|
+
|
|
652
|
+
- <arch-qp-perspective-element/> is an `ARCH-FV-<arch-fv-element-id/>`
|
|
653
|
+
or `ARCH-DP-<arch-dp-node-id/>` reference to the functional
|
|
654
|
+
element or deployment node the tactic affects.
|
|
655
|
+
|
|
656
|
+
- <arch-qp-perspective-description/> is a concise paragraph (1-3
|
|
657
|
+
sentences) of prose describing how the architecture satisfies the
|
|
658
|
+
quality attribute across the affected elements.
|
|
659
|
+
|
|
660
|
+
- <arch-qp-perspective-rationale/> is the 1-sentence rationale
|
|
661
|
+
("why") for the chosen tactic over alternatives.
|
|
662
|
+
|
|
663
|
+
- In case the element reference is not present, the
|
|
664
|
+
entire `- Affects:` bullet point is omitted.
|
|
665
|
+
|
|
666
|
+
- In case the rationale is not present, the
|
|
667
|
+
entire `(why: [...])` chunk is omitted.
|