# Model-Driven Architecture

> An approach in which a formal model is the source of truth and the implementation is generated from it by transformation rules.

Record: `architecture:model-driven-architecture`
Kind: approach
Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)
Severity: contextual
Scope: system, code generation, domain model
Canonical: https://banes-lab.com/ontology#architecture-model-driven-architecture

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Language-Oriented Programming](https://banes-lab.com/records/architecture/language-oriented-programming.md) and before [Artificial Intelligence Architecture](https://banes-lab.com/records/architecture/artificial-intelligence-architecture.md).

## Repair

- Refactored by: Regenerate, Lock Generated Files, Update Model
- Detected by: model-code drift
- Violated by: generated code manually edited/diverged
- Measured by: generation conformance
- Enforced by: generation CI

## Requires

- [Formal Model](https://banes-lab.com/records/lexicon/formal-model.md)
- [Transformation Rules](https://banes-lab.com/records/lexicon/transformation-rules.md)

## Reinforces

- [Metadata-Driven Design](https://banes-lab.com/records/architecture/metadata-driven-design.md)

## Enables

- [Generated Implementations](https://banes-lab.com/records/lexicon/generated-implementations.md)

## Conflicts with

- [Handwritten Divergence](https://banes-lab.com/records/lexicon/handwritten-divergence.md)

## Severity

- [contextual](https://banes-lab.com/records/vocabulary/severity-contextual.md)

## Category

- [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/records/architecture-category/metaprogramming-language-oriented-architecture.md)

## Linked from

- [Metadata / Self-Description / Declarative Systems](https://banes-lab.com/ontology/principles/architecture-category-metadata-self-description-declarative-systems.md)
- [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
