Technical Space
Table of Contents
A technical space (TS) is a programming language or platform together with its associated metamodel — C++, C#, Java, SQL, and so on. Each TS carries a coherent set of conventions: file extensions, directory layout, toolchain, build system, and idioms. It is the broadest grouping in physical space: everything the generator produces for a given language lives under its TS.
This concept originates in Model-Driven Engineering. Kurtev et al. define it as a working context with a set of associated concepts, body of knowledge, tools, required skills, and possibilities; Mens and Van Gorp refine it as determined by the meta-meta-model used at the M3 level. MASD keeps the definition concrete — a TS is identified by the metamodel the generator emits against, not by a free-standing M3 specification.
Figure 1: Figure 2 (Dogen): MDE analysis versus MASD physical analysis. Source: Domain Architecture.
See From Problem Space to Solution Space for the original derivation.
Position in the physical address
Within the physical space address —
[technical space].[part].[facet].[archetype]
— the TS is the outermost segment. The Physical Metamodel (PMM) encodes which technical spaces exist and which facets are defined within each.
Figure 2: Figure 25 (Dogen): technical space composition. Source: Domain Architecture.
How facets relate to a technical space
A facet is "a container for a set of related file artefacts, all belonging to the same TS". This is the precise sense in which a facet — and the part that holds it — "belongs" to a technical space: the TS's language and conventions are what express the artefacts the facet groups.
Not a subdivision of the technical space. Parts and facets are arbitrary partitionings of the logical space — choices about how to classify a problem domain's entities by the role each artefact plays. They "belong" to a technical space only because the TS's language is used to express the partitioning. See Physical Space for the full treatment.
Projecting into many technical spaces
A single logical entity typically projects into several technical spaces at once. A domain concept might project into a C++ TS (struct, serialisation, UI), a SQL TS (DDL, triggers), and a build TS (a compile target) simultaneously. Each TS projection is independent: disabling one suppresses its artefacts without affecting the others.
See also
- MASD — methodology overview and the conceptual model.
- Physical Space — the TS→Part→Facet→Archetype hierarchy and the PMM.
- Logical Space — the meta-model that logical entities live in.
- Facet — named partitioning of artefacts within a TS.
- Variability — how technical spaces and facets are enabled or disabled.
- Applied MASD — the concrete technical spaces of one product.