pyArchimate Architecture Diagrams

This directory contains UML diagrams documenting the modularized architecture of pyArchimate following the 001-modularize-model feature specification.

Diagrams

package.puml

Module Structure - Shows how pyArchimate is organized:

  • model.py, view.py, element.py, relationship.py - Core domain modules

  • helpers/ - Focused utility modules (diagram, properties, logging)

  • readers/, writers/ - External format adapters

  • pyArchimate.py - Package entry point and public API shim

This diagram answers: β€œWhat modules exist and how do they connect?”

class.puml

Domain Model - Shows the core data structures:

  • Model - Root container for elements, relationships, views, and profiles.

  • Element - Represents an ArchiMate element concept.

  • Relationship - Represents a connection between concepts (Elements or other Relationships).

  • View, Node, Connection - Diagram visualization structures in view.py.

  • Profile - Tagging/specialization metadata for elements and relationships.

This diagram answers: β€œWhat classes and data structures does the domain use?”

Why Modularized?

After modularization, the codebase is better organized:

  • Clean module separation - Domain logic is decoupled from visualization and IO.

  • Explicit dependencies - Layers are enforced (e.g., core domain cannot import from readers/writers).

  • Facade pattern - pyArchimate.py provides a stable interface for library consumers.

  • Improved Maintainability - Clearer boundaries make the system easier to test and extend.

Rendering

To render diagrams to PNG/SVG, install PlantUML and run:

plantuml docs/diagrams/package.puml
plantuml docs/diagrams/class.puml

Or use the online editor: https://www.plantuml.com/plantuml/uml/

Key Architectural Properties

βœ… Clean module separation - Each module has a single responsibility
βœ… No circular imports - By design (module dependencies flow one direction)
βœ… Testable in isolation - Helpers and readers/writers can be tested independently
βœ… Backward compatible - Old import paths continue to work (via pyArchimate.py)


Last Updated: 2026-04-16
Status: Modularized Production Architecture