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.

masd_versus_mde_physical_analysis.png

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.

masd_technical_space_composition.png

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.

Emacs 29.1 (Org mode 9.6.6)