Architectures fail from poor visibility more often than from bad code. You spend so long on the implementation that the structure and distribution go unseen. These diagrams make the “where” and “what” visible, and they live in the same Git repo as the code.

Component diagrams

When a system grows past a handful of classes, component diagrams model the logical parts and their interfaces.

@startuml
package "Office Stamper" {
  [CLI] ..> [Engine] : uses
  [Engine] ..> [ImageIO Plugins] : loads
}
database "Template Store" {
  [DOCX Templates]
}
[Engine] --> [DOCX Templates]
@enduml

I show these in dev meetings instead of code. A new joiner sees the module boundaries and why we don’t allow circular dependencies between the CLI and the engine.

Deployment diagrams

A good architecture on paper is useless if the deployment is a mystery. Deployment diagrams map software artifacts to hardware and execution environments.

@startuml
node "User Desktop" {
  artifact "Office Stamper CLI"
}
cloud "Enterprise Cloud" {
  node "Worker Node" {
    component "Stamper Engine"
  }
}
"Office Stamper CLI" -> "Stamper Engine" : RMI/HTTPS
@enduml

I keep a PlantUML file open during architecture meetings and update it live. The minutes of the meeting are a versionable diagram.

Class diagrams

Class diagrams define the static structure of a system.

@startuml
interface ImageReader {
  +read(InputStream): BufferedImage
}
class EmfReader implements ImageReader
class WmfReader implements ImageReader

class ImageIORegistry {
  +register(ImageReader)
}
@enduml

These are the backbone of Domain-Driven Design discussions, keeping everyone on the same mental model of the domain.

Object diagrams

Class diagrams show what can be; object diagrams show what is. They’re snapshots of a system at a point in time.

When I debug the IIORegistry, I add a small helper that prints the current registry state as PlantUML. Seeing the actual instances and their connections is better than reading a stack trace.

Archimate

At enterprise scale, Archimate links technical implementation to business goals and strategic capabilities.