Skip to content

Architecture Overview

This page provides a high-level map of the etcion codebase and its class hierarchy. For full API details see the API Reference.

Module Map

Module Responsibility
metamodel/concepts.py Root ABCs: Concept, Element, Relationship
metamodel/elements.py Abstract element hierarchy (ActiveStructure, Behavior, etc.)
metamodel/business.py Business layer concrete elements
metamodel/application.py Application layer concrete elements
metamodel/technology.py Technology layer concrete elements
metamodel/physical.py Physical layer concrete elements
metamodel/strategy.py Strategy layer concrete elements
metamodel/motivation.py Motivation layer concrete elements
metamodel/implementation_migration.py Implementation & Migration layer elements
metamodel/relationships.py All 11 relationship types + Junction
metamodel/model.py Model container, QueryBuilder
metamodel/viewpoints.py Viewpoint, View, Concern
metamodel/viewpoint_catalogue.py Predefined viewpoint definitions
metamodel/profiles.py Profile, Specialization, extended attributes
metamodel/notation.py NotationMetadata
metamodel/mixins.py Shared mixins
validation/permissions.py Appendix B permission table, is_permitted()
validation/rules.py ValidationRule base
derivation/engine.py DerivationEngine
serialization/xml.py XML serialization (Exchange Format)
serialization/json.py JSON serialization
serialization/registry.py Type registry for deserialization
comparison.py diff_models(), ModelDiff, ConceptChange
conformance.py ConformanceProfile
enums.py Layer, Aspect, AccessMode, etc.
exceptions.py PyArchiError hierarchy

Class Hierarchy

The diagram below shows the core type hierarchy to two levels of depth. Concrete layer-specific elements (e.g. BusinessActor, ApplicationComponent) inherit from the abstract nodes shown here -- see the Elements API reference for the full taxonomy.

classDiagram
    Concept <|-- Element
    Concept <|-- Relationship
    Concept <|-- RelationshipConnector

    Element <|-- ActiveStructureElement
    Element <|-- BehaviorElement
    Element <|-- PassiveStructureElement
    Element <|-- CompositeElement
    Element <|-- MotivationElement
    Element <|-- StructureElement

    ActiveStructureElement <|-- ExternalActiveStructureElement
    ActiveStructureElement <|-- InternalActiveStructureElement

    BehaviorElement <|-- ExternalBehaviorElement
    BehaviorElement <|-- InternalBehaviorElement
    BehaviorElement <|-- Event

    Relationship <|-- StructuralRelationship
    Relationship <|-- DependencyRelationship
    Relationship <|-- DynamicRelationship
    Relationship <|-- OtherRelationship

    RelationshipConnector <|-- Junction

Reading the diagram

  • Element subtypes map to the ArchiMate aspect classification (active structure, behavior, passive structure).
  • Relationship subtypes follow the specification's four relationship categories.
  • RelationshipConnector contains only Junction, used to combine relationships.