Schematex
umlclass·OMG UML 2.5.1 §9–§11·software, education·complexity 2/3·since v0.6.4

Packages and namespaces

Group classifiers into labelled containment frames with namespace blocks — dot-notation auto-creates parent packages, and blocks nest, so a layered architecture reads as nested boxes the way an architect draws it.

For the architect documenting module boundaries

Open in Playground →
umlclass·§
↘ preview
100%
Layered packages UML class diagram: 3 class; 2 directed. Layered packages Platform Auth Data UserService + login() + logout() Repository + find() + save() Gateway + route() delegates delegates delegates delegates
UTF-8 · LF · 24 lines · 290 chars✓ parsed·5.6 ms·6.6 KB SVG

What this shows

A namespace block groups its classifiers into a labelled bounding frame. Frames are computed as the union of their members plus any nested sub-packages, padded, with a label band on top — the same C4-style containment Schematex uses for the network engine's site/zone boundaries. Here Platform contains Auth and Data, each holding one service; Gateway lives outside the package and delegates into both.

Frames never overlap and always enclose. A package-clustering pass keeps same-package classifiers contiguous within each layout rank, so the frame stays a clean rectangle instead of a ragged shape that swallows unrelated boxes.

Dot-notation also works. Writing namespace Company.Engineering.Backend { … } auto-creates Company and Company.Engineering as parent frames, so you can declare a deep package in one line. An explicit label is available too: namespace plat["Platform Layer"] { … }.

UML class diagram syntax