Facet

Table of Contents

A facet is "a container for a set of related file artefacts, all belonging to the same technical space". It groups the artefacts that give a logical entity one particular capability or role in physical space — its serialisation, its hashing, its persistence, its UI — and was introduced as the mechanism that implements the composition of trivial structural functions.

In the four-level physical-space address —

[technical space].[part].[facet].[archetype]

— the facet is the third segment.

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.

masd_facet_taxonomy.png

Figure 1: Figure 16 (Dogen): a sample facet taxonomy. Source: Domain Architecture.

See Domain Architecture for the formal treatment.

SRPP: what a facet encodes

Before any template is written, the analyst identifies a Schematic and Repetitive Pattern in Physical Space (SRPP) — a class of infrastructure code that varies predictably across entities but is otherwise mechanically identical. A pattern is judged an SRPP operationally: by reproducing it through automated means. A facet is where the SRPPs that confer one role are collected; each archetype within the facet is the mechanical extraction of one such pattern.

A facet aligns with the trivial functions of input variability. The composition rule is strict: "a generated artefact may only be composed of zero or one trivial structural functions and zero or more trivial non-structural functions" — so each distinct structural pattern earns its own archetype.

Archetypes

A facet contains one or more archetypes — the generating functions and templates for individual files. An archetype produces exactly one output file per logical entity and is parameterised by the logical model: entity name, fields, namespace, and containment. The archetype is the abstract template (a region of physical space); the file it produces for a specific entity is the artefact (an instance). See Physical Space for the archetype-versus-artefact distinction and the metamodelling levels.

Activation

Which facets are active for a given entity is not fixed: it is configured through the variability model. Each logical entity type has a default active facet set (see Logical Space), and that default is overridden — enabled or disabled — per product, per component, or per element. Disabling a facet suppresses all of its archetypes' output.

See also

  • MASD — methodology overview and the conceptual model.
  • Physical Space — the TS→Part→Facet→Archetype hierarchy and the PMM.
  • Technical Space — the language ecosystem whose artefacts a facet groups.
  • Logical Space — the entities a facet's artefacts express.
  • Variability — how facets are activated and configured.
  • Applied MASD — the concrete facet catalogue of one product.

Emacs 29.1 (Org mode 9.6.6)