@rse/ase 0.9.20 → 0.9.21
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/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.21",
|
|
10
10
|
"license": "GPL-3.0-only",
|
|
11
11
|
"author": {
|
|
12
12
|
"name": "Dr. Ralf S. Engelschall",
|
|
@@ -9,10 +9,11 @@ and the "how" of the Software Engineering project.
|
|
|
9
9
|
|
|
10
10
|
Each **Artifact** of the **Artifact Set**
|
|
11
11
|
**Architecture (ARCH)** is stored under
|
|
12
|
-
|
|
13
|
-
relative to the project root directory, with <
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
`<basedir/>/ARCH-<artifact-no/>-<artifact-id/>-<artifact-slug/>.md`,
|
|
13
|
+
relative to the project root directory, with <basedir/> being the
|
|
14
|
+
`project.artifact.arch.basedir` config variable, <artifact-no/> being
|
|
15
|
+
the zero-padded, two-digit sequence number of the **Artifact** (starting
|
|
16
|
+
at `01`) according to the order of the **Artifact** list below, and with
|
|
16
17
|
<artifact-slug/> being derived from <artifact-name/> (see below) by
|
|
17
18
|
Pascal-casing each word (upper-casing its first letter) and using `-`
|
|
18
19
|
characters instead of spaces (e.g. `Context-View`).
|
|
@@ -74,6 +75,12 @@ distinct **Artifact**s (listed under their <artifact-name/> and their
|
|
|
74
75
|
The major decisions related to the architecture, each recording the
|
|
75
76
|
forces at play, the chosen response, and the reasoning that justifies it.
|
|
76
77
|
|
|
78
|
+
10. **Technology Stack (TS)**:
|
|
79
|
+
The concrete technology products the solution is built upon, organized
|
|
80
|
+
by tier and lifecycle phase, recording for each component its chosen
|
|
81
|
+
product, its purpose, and the alternatives that were considered but not
|
|
82
|
+
chosen.
|
|
83
|
+
|
|
77
84
|
The **Artifact**s have the following cross-references:
|
|
78
85
|
|
|
79
86
|
```text
|
|
@@ -89,6 +96,8 @@ ARCH-08-QP Quality Perspectives ──(affects)─► ARCH-02-FV Functionalit
|
|
|
89
96
|
ARCH-08-QP Quality Perspectives ──(affects)─► ARCH-06-DP Deployment View
|
|
90
97
|
ARCH-09-DR Decision Record ──(affects)─► ARCH-02-FV Functionality View
|
|
91
98
|
ARCH-09-DR Decision Record ──(affects)─► ARCH-06-DP Deployment View
|
|
99
|
+
ARCH-10-TS Technology Stack ──(realizes)─► ARCH-02-FV Functionality View
|
|
100
|
+
ARCH-10-TS Technology Stack ──(realizes)─► ARCH-06-DP Deployment View
|
|
92
101
|
```
|
|
93
102
|
|
|
94
103
|
Context View (CV)
|
|
@@ -897,3 +906,262 @@ forces at play, the chosen response, and the reasoning that justifies it.
|
|
|
897
906
|
- **Rejected alternatives when the rejection is non-obvious.** If
|
|
898
907
|
you considered GraphQL and picked REST for subtle reasons, record it -
|
|
899
908
|
otherwise someone will suggest GraphQL again in six months.
|
|
909
|
+
|
|
910
|
+
Technology Stack (TS)
|
|
911
|
+
---------------------
|
|
912
|
+
|
|
913
|
+
The concrete technology products the solution is built upon, organized by
|
|
914
|
+
tier and lifecycle phase, recording for each component its chosen product,
|
|
915
|
+
its purpose, and the alternatives that were considered but not chosen.
|
|
916
|
+
|
|
917
|
+
- Format:
|
|
918
|
+
|
|
919
|
+
<format>
|
|
920
|
+
|
|
921
|
+
# ARCHITECTURE: TECHNOLOGY STACK (ARCH-TS)
|
|
922
|
+
|
|
923
|
+
✳ Created: **<timestamp-created/>**
|
|
924
|
+
✎ Modified: **<timestamp-modified/>**
|
|
925
|
+
|
|
926
|
+
<arch-ts-component/>
|
|
927
|
+
<arch-ts-component/>
|
|
928
|
+
[...]
|
|
929
|
+
|
|
930
|
+
</format>
|
|
931
|
+
|
|
932
|
+
- <arch-ts-component/> format:
|
|
933
|
+
|
|
934
|
+
<format>
|
|
935
|
+
|
|
936
|
+
## COMPONENT: <arch-ts-component-name/> <a id="ARCH-TS-<arch-ts-component-id/>"></a>
|
|
937
|
+
|
|
938
|
+
- When: <arch-ts-component-when/>
|
|
939
|
+
- Tier: <arch-ts-component-tier/>
|
|
940
|
+
- Coverage: <arch-ts-component-coverage/>
|
|
941
|
+
- Product: <arch-ts-component-product/>
|
|
942
|
+
- Realizes: <arch-ts-component-element/>[, ...]
|
|
943
|
+
- Alternatives: <arch-ts-component-alternative/>[, ...]
|
|
944
|
+
|
|
945
|
+
<arch-ts-component-description/>,
|
|
946
|
+
**BECAUSE** <arch-ts-component-rationale/>.
|
|
947
|
+
|
|
948
|
+
</format>
|
|
949
|
+
|
|
950
|
+
- <arch-ts-component/> details:
|
|
951
|
+
|
|
952
|
+
- <arch-ts-component-id/>: per-artifact unique "slug" of always 1-3
|
|
953
|
+
lower-cased words (concatenated with "-" characters and
|
|
954
|
+
in total not longer than 30 characters), derived from
|
|
955
|
+
<arch-ts-component-name/>.
|
|
956
|
+
|
|
957
|
+
- <arch-ts-component-name/> is a short (2-5 word) summary of the
|
|
958
|
+
technology component (e.g. `UI Framework`, `Web Server`, `Relational
|
|
959
|
+
Database`).
|
|
960
|
+
|
|
961
|
+
- <arch-ts-component-when/> is the lifecycle phase in which the
|
|
962
|
+
component is relevant, one of:
|
|
963
|
+
|
|
964
|
+
- `Build-Time`: Used during development, compilation, or packaging.
|
|
965
|
+
- `Run-Time`: Used while the solution executes in production.
|
|
966
|
+
|
|
967
|
+
- <arch-ts-component-tier/> is the architectural tier the component
|
|
968
|
+
belongs to, one of:
|
|
969
|
+
|
|
970
|
+
- `Client`: Runs on the client side (e.g. browser, desktop, mobile).
|
|
971
|
+
- `Server`: Runs on the server side (e.g. backend, application, API).
|
|
972
|
+
|
|
973
|
+
- <arch-ts-component-coverage/> is either one or more of the
|
|
974
|
+
*Client Aspects* or one or more of the *Server Aspects* defined
|
|
975
|
+
below. The general goal is to achieve a maximum coverage of all
|
|
976
|
+
aspects per <arch-ts-component-tier/> with the minimum total
|
|
977
|
+
number of <arch-ts-component-product/>.
|
|
978
|
+
|
|
979
|
+
- <arch-ts-component-product/> is the concrete product, library, or
|
|
980
|
+
framework chosen for this component (e.g. `VueJS`, `Node.js`,
|
|
981
|
+
`PostgreSQL`).
|
|
982
|
+
|
|
983
|
+
- <arch-ts-component-element/> is an `ARCH-FV-<arch-fv-component-id/>`
|
|
984
|
+
or `ARCH-DP-<arch-dp-node-id/>` reference to the functional element
|
|
985
|
+
or deployment node this product realizes.
|
|
986
|
+
|
|
987
|
+
- <arch-ts-component-alternative/> is a product that would also fit
|
|
988
|
+
this component but was not chosen (e.g. `React`, `Svelte`).
|
|
989
|
+
|
|
990
|
+
- <arch-ts-component-description/> is a concise paragraph (1-3
|
|
991
|
+
sentences) of prose describing how the product is used within the
|
|
992
|
+
solution and how it fits into the overall technology stack.
|
|
993
|
+
|
|
994
|
+
- <arch-ts-component-rationale/> is the 1-sentence rationale ("why")
|
|
995
|
+
for choosing this product over the alternatives.
|
|
996
|
+
|
|
997
|
+
- In case the element reference is not present, the
|
|
998
|
+
entire `- Realizes:` bullet point is omitted.
|
|
999
|
+
|
|
1000
|
+
- In case no alternatives were considered, the
|
|
1001
|
+
entire `- Alternatives:` bullet point is omitted.
|
|
1002
|
+
|
|
1003
|
+
- In case the rationale is not present, the
|
|
1004
|
+
entire `, **BECAUSE** [...]` clause is omitted.
|
|
1005
|
+
|
|
1006
|
+
- The known *Client Aspects* which usually have to covered (at least for
|
|
1007
|
+
clients in a Rich-Client architecture):
|
|
1008
|
+
|
|
1009
|
+
- **Interface Theme**:
|
|
1010
|
+
Style Reset, Shape, Color, Gradient, Shadow, Font, Icon.
|
|
1011
|
+
|
|
1012
|
+
- **Interface Widgets**:
|
|
1013
|
+
Icon, Label, Text Paragraph, Image, Form, Text-Field, Text-Area,
|
|
1014
|
+
Date Picker, Toggle, Radio Button, Checkbox, Select List, Slider,
|
|
1015
|
+
Progress Bar, Hyperlink, Popup Menu, Dropdown Menu, Toolbar, Tooltip,
|
|
1016
|
+
Tab, Pill, Breadcrumb, Pagination, Badge, Alert, Panel, Modal, Table,
|
|
1017
|
+
Scrollbar, Carousel.
|
|
1018
|
+
|
|
1019
|
+
- **Interface Layouting**:
|
|
1020
|
+
Responsive Design, Media Query, Frame, Grid, Padding, Border,
|
|
1021
|
+
Margin, Alignment, Force, Magnetism.
|
|
1022
|
+
|
|
1023
|
+
- **Interface Effects**:
|
|
1024
|
+
Transition, Transformation, Keyframes, Easing Function, Sound
|
|
1025
|
+
Effect, Physics.
|
|
1026
|
+
|
|
1027
|
+
- **Interface Interactions**:
|
|
1028
|
+
Mouse, Keyboard, Touchscreen, Gesture, Clipboard, Drag & Drop.
|
|
1029
|
+
|
|
1030
|
+
- **Interface States**:
|
|
1031
|
+
Rendered, Enabled, Visible, Focused, Warning, Error, Floating.
|
|
1032
|
+
|
|
1033
|
+
- **Interface Mask**:
|
|
1034
|
+
Markup Loading, Markup Generation, Virtual DOM, Text, Bitmaps,
|
|
1035
|
+
Vectors, 2D/3D Canvas, Accessibility.
|
|
1036
|
+
|
|
1037
|
+
- **Interface Internationalization**:
|
|
1038
|
+
Text Internationalization (I18N).
|
|
1039
|
+
|
|
1040
|
+
- **Data Conversion**:
|
|
1041
|
+
Value Formatting, Value Parsing, Localization (L10N).
|
|
1042
|
+
|
|
1043
|
+
- **Data Binding**:
|
|
1044
|
+
Reactive, Observer, Unidirectional, Bidirectional, Incremental.
|
|
1045
|
+
|
|
1046
|
+
- **Presentation Model**:
|
|
1047
|
+
Parameter Value, Command Value, State Value, Data Value, Event
|
|
1048
|
+
Value, Value Validation, Presentation Logic.
|
|
1049
|
+
|
|
1050
|
+
- **Dialog Navigation**:
|
|
1051
|
+
Deep Linking, Routing, Dialog Flow.
|
|
1052
|
+
|
|
1053
|
+
- **Dialog Automation**:
|
|
1054
|
+
Dialog Macros, Click-Through, Smoke Testing.
|
|
1055
|
+
|
|
1056
|
+
- **Dialog Communication**:
|
|
1057
|
+
Service, Event, Model, Socket, Hooks.
|
|
1058
|
+
|
|
1059
|
+
- **Dialog Life-Cycle**:
|
|
1060
|
+
Component States, Component State Transitions.
|
|
1061
|
+
|
|
1062
|
+
- **Dialog Structure**:
|
|
1063
|
+
Component, Model/View/Controller Roles, Hierarchical Composition.
|
|
1064
|
+
|
|
1065
|
+
- **State Persistence**:
|
|
1066
|
+
Local Storage, Cookies, Caching.
|
|
1067
|
+
|
|
1068
|
+
- **Business Model**:
|
|
1069
|
+
Entity, Field, Relationship, Universally Unique Identifiers (UUID).
|
|
1070
|
+
|
|
1071
|
+
- **Use-Case Authorization**:
|
|
1072
|
+
User Experience, Dialog Restriction, User, Group, Role, Use-Case,
|
|
1073
|
+
Data, Access.
|
|
1074
|
+
|
|
1075
|
+
- **Client Networking**:
|
|
1076
|
+
Request/Response, Synchronization, Push, Pull, Pulled-Push,
|
|
1077
|
+
REST, GraphQL, Authentication, Session.
|
|
1078
|
+
|
|
1079
|
+
- **Environment Detection**:
|
|
1080
|
+
Runtime Detection, Feature Detection.
|
|
1081
|
+
|
|
1082
|
+
- The known *Server Aspects* which usually have to covered (at least for
|
|
1083
|
+
servers, sometimes called Thin-Servers, in a Rich-Client architecture):
|
|
1084
|
+
|
|
1085
|
+
- **Environment Detection**:
|
|
1086
|
+
Detect the run-time environment, like underlying operating
|
|
1087
|
+
system, execution platform, network topology, feature toggles, etc.
|
|
1088
|
+
|
|
1089
|
+
- **Argument Parsing**:
|
|
1090
|
+
Parse options and arguments of the Command-Line Interface (CLI)
|
|
1091
|
+
to bootstrap application parameters.
|
|
1092
|
+
|
|
1093
|
+
- **Configuration Parsing**:
|
|
1094
|
+
Load and parse directives from configuration file to bootstrap
|
|
1095
|
+
application parameters.
|
|
1096
|
+
|
|
1097
|
+
- **Process Daemonizing**:
|
|
1098
|
+
Detach from the startup terminal and host process in order to run
|
|
1099
|
+
fully independently.
|
|
1100
|
+
|
|
1101
|
+
- **Process Management**:
|
|
1102
|
+
(Pre-)fork child processes and/or threads of execution and monitor
|
|
1103
|
+
and control them during the life-cycle of the application.
|
|
1104
|
+
|
|
1105
|
+
- **Component Management**:
|
|
1106
|
+
Structure the code into components, instantiate them under run-time
|
|
1107
|
+
and manage them in a stateful component life-cycle.
|
|
1108
|
+
|
|
1109
|
+
- **Component Communication**:
|
|
1110
|
+
Provide inter-component communication mechanisms like events, hooks,
|
|
1111
|
+
registry, etc.
|
|
1112
|
+
|
|
1113
|
+
- **Server Networking**:
|
|
1114
|
+
Listen to network sockets, accept connections and manage
|
|
1115
|
+
request/response and message communication.
|
|
1116
|
+
|
|
1117
|
+
- **Peer Information**:
|
|
1118
|
+
Determine unique identification and add-on information about the
|
|
1119
|
+
client peer.
|
|
1120
|
+
|
|
1121
|
+
- **Session Handling**:
|
|
1122
|
+
Manage secured per-connection sessions to keep state between
|
|
1123
|
+
communication requests and/or client sessions.
|
|
1124
|
+
|
|
1125
|
+
- **User Authentication**:
|
|
1126
|
+
Determine and validate the unique identity of the user communicating
|
|
1127
|
+
over the current network connection.
|
|
1128
|
+
|
|
1129
|
+
- **Request Validation**:
|
|
1130
|
+
Validate the syntactical and semantical compliance of the requests
|
|
1131
|
+
and sanitize the requests.
|
|
1132
|
+
|
|
1133
|
+
- **Request Processing**:
|
|
1134
|
+
Process the request by dispatching execution according to the
|
|
1135
|
+
provided request and determined context information.
|
|
1136
|
+
|
|
1137
|
+
- **Role Authorization**:
|
|
1138
|
+
Determine whether the role of the current user is allowed to execute
|
|
1139
|
+
the current request.
|
|
1140
|
+
|
|
1141
|
+
- **Client Networking**:
|
|
1142
|
+
Provide mechanisms to connect to peers over the network and perform
|
|
1143
|
+
request/response and/or publish/subscribe communication.
|
|
1144
|
+
|
|
1145
|
+
- **Task Scheduling**:
|
|
1146
|
+
Schedule and execute recurring tasks independent of regular I/O
|
|
1147
|
+
operations.
|
|
1148
|
+
|
|
1149
|
+
- **Execution Tracing**:
|
|
1150
|
+
Provide mechanisms for tracing the execution by logging event and
|
|
1151
|
+
measurement information at certain points of interest.
|
|
1152
|
+
|
|
1153
|
+
- **Database Access**:
|
|
1154
|
+
Map in-memory domain entities onto data store dependent persistent
|
|
1155
|
+
data structure.
|
|
1156
|
+
|
|
1157
|
+
- **Database Connectivity**:
|
|
1158
|
+
Locally or remotely connect the database access layer to the
|
|
1159
|
+
underlying data store.
|
|
1160
|
+
|
|
1161
|
+
- **Database Schema**:
|
|
1162
|
+
Create, update or downgrade the data schema inside the underlying
|
|
1163
|
+
data store.
|
|
1164
|
+
|
|
1165
|
+
- **Database Bootstrapping**:
|
|
1166
|
+
Create, update or downgrade both mandatory bootstrapping and optional
|
|
1167
|
+
domain-specific data inside the underlying data store.
|
|
@@ -9,10 +9,11 @@ and the "what" of the Software Engineering project.
|
|
|
9
9
|
|
|
10
10
|
Each **Artifact** of the **Artifact Set**
|
|
11
11
|
**Specification (SPEC)** is stored under
|
|
12
|
-
|
|
13
|
-
relative to the project root directory, with <
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
`<basedir/>/SPEC-<artifact-no/>-<artifact-id/>-<artifact-slug/>.md`,
|
|
13
|
+
relative to the project root directory, with <basedir/> being the
|
|
14
|
+
`project.artifact.spec.basedir` config variable, <artifact-no/> being
|
|
15
|
+
the zero-padded, two-digit sequence number of the **Artifact** (starting
|
|
16
|
+
at `01`) according to the order of the **Artifact** list below, and with
|
|
16
17
|
<artifact-slug/> being derived from <artifact-name/> (see below) by
|
|
17
18
|
Pascal-casing each word (upper-casing its first letter) and using `-`
|
|
18
19
|
characters instead of spaces (e.g. `Customer-Journey`).
|
package/plugin/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.21",
|
|
10
10
|
"license": "GPL-3.0-only",
|
|
11
11
|
"author": {
|
|
12
12
|
"name": "Dr. Ralf S. Engelschall",
|