openskills.info

Diagramming Technical Systems

itTechnical communication and collaboration

Diagramming Technical Systems

A technical diagram is a selective view of a system. It turns elements, relationships, boundaries, and behavior into a visual explanation.

The selection matters more than the drawing tool. One diagram cannot answer every question about a system. A useful diagram gives a named audience enough detail to understand, decide, build, review, or troubleshoot.

This course uses a fictional parcel-tracking system called ParcelFlow. The same system can support several diagrams because each diagram answers a different question.

Begin with the reader's question

Write a purpose statement before you draw:

This diagram helps <audience> answer <question> about <scope>.

For ParcelFlow, each audience asks something different:

AudienceQuestionUseful view
Product teamWho uses ParcelFlow, and which external systems connect to it?Context
DeveloperWhich applications and data stores make up ParcelFlow?Structural
Support engineerWhat happens after a customer requests a tracking update?Sequence
Security reviewerWhere does customer data cross a trust boundary?Data-flow
OperatorWhere do application instances run?Deployment

ISO/IEC/IEEE 42010 separates an architecture from its description. It connects stakeholders and their concerns to viewpoints, views, and models. This vocabulary explains why several accurate views can describe one system without competing.

The diagram is not the system. It is an answer to one question about the system.

Set the scope and abstraction

Scope defines what is inside the view. It might be one system, environment, scenario, process, or data domain.

Abstraction level defines the kinds of elements that may appear. A context view can show people and systems. A detailed structural view can show applications and data stores.

Mixing levels without explanation creates ambiguity. A customer, a software class, and a production server may all be real. Placing them side by side rarely explains how they relate.

Use several connected views instead:

context -> structure -> behavior -> deployment

The C4 model applies this idea to software structure through system context, container, component, and code views. Its supporting views cover runtime behavior and deployment. You create only the views that add value.

Choose the view by the question

Diagram types organize different kinds of evidence.

Context view

A context view shows the system as one box in its environment. It includes users, external systems, and directional relationships. It hides internal implementation.

Use it to agree on scope, ownership, and external dependencies.

Customer -> [ParcelFlow] -> [Carrier API]
                     |
                     v
              [Notification service]

Structural view

A structural view decomposes a system into major parts and relationships. The parts might be applications, data stores, modules, devices, or network zones.

Use one abstraction level at a time. In C4, a container is an application or data store. It is not necessarily an operating-system container.

[Web app] -> [Tracking API] -> [Tracking database]
                    |
                    v
               [Event worker]

Sequence view

A sequence view shows interactions in time order for one scenario. It answers questions that a static structure cannot answer.

Use it for requests, retries, asynchronous handoffs, error paths, and protocol conversations. Mermaid and UML both support sequence-diagram notation.

Customer -> Web app: requests status
Web app -> Tracking API: reads parcel
Tracking API -> Carrier API: refreshes status
Tracking API -> Web app: returns status

State view

A state view shows valid states and the events or conditions that cause transitions. Use it when behavior depends on current state.

Created -> In transit -> Delivered
              |
              v
           Delayed

This view can expose missing transitions and unclear terminal states. It does not show where the software runs.

Data-flow view

A data-flow view follows data through sources, processes, stores, sinks, and boundaries. Use it for privacy, security, lineage, and integration questions.

Name the data on each flow. Mark trust boundaries explicitly. A line labeled “customer contact details” carries more meaning than one labeled “data.”

Deployment view

A deployment view maps software instances to infrastructure in a named environment. It can show nodes, network boundaries, zones, and external infrastructure.

Keep logical structure separate from runtime placement. “Tracking API” describes a software responsibility. “Three Tracking API instances in production” describes deployment.

Give every mark a meaning

A box is useful only when the reader knows what it represents. An arrow is useful only when the reader knows its direction and intent.

Give every diagram:

  • A title that names its type and scope.
  • A short statement of its audience and question.
  • A legend for visual conventions.
  • An owner, version, and last-updated date when the view is long-lived.

Give every element:

  • A specific name.
  • An explicit type.
  • A short responsibility.
  • A technology label only when technology matters to the question.

Give every relationship:

  • One direction.
  • An action label.
  • A protocol or mechanism when it affects the reader's decision.

“Sends tracking update through HTTPS” is more precise than “Uses.” C4 notation guidance and Microsoft guidance both recommend directional, labeled relationships.

Use a legend whenever color, shape, border, line style, or arrowhead carries meaning. Consistency does not help if the reader cannot discover the rules.

Separate semantic truth from layout

The semantic layer contains the facts: elements, types, relationships, states, and boundaries.

The visual layer arranges those facts: position, size, color, line routing, and emphasis.

Do not use layout to imply a fact that the semantic layer does not state. Proximity can suggest grouping. Size can suggest importance. Color can suggest status. State those meanings in labels or a legend.

Abstraction may omit detail. It must not invent detail. A high-level view can omit network placement. It should not place a managed service inside a network boundary when that placement is false.

Mark uncertain content as proposed, assumed, or pending verification. Keep current-state and target-state diagrams separate.

Design for reading, not decoration

Use a predictable reading direction. Place related elements together. Keep labels close to their targets. Reduce line crossings and preserve whitespace.

Do not rely on color alone. Pair color with a label, shape, border, or pattern. Microsoft recommends sufficient contrast and redundant visual cues.

Provide a text alternative for readers who cannot use the rendered graphic. Mermaid supports accessible titles and descriptions in generated SVG output. A useful description states the diagram's purpose, main elements, and important relationships.

Vendor icons can identify concrete products in deployment views. They do not replace labels. Generic concepts should use generic shapes.

Choose a tool that fits the lifecycle

A whiteboard is effective for rapid group discovery. A drawing tool supports direct control over layout. A text-based diagram can live beside code and pass through version review. A modeling tool can reuse shared element definitions across views.

Graphviz DOT represents graphs as nodes, edges, subgraphs, and attributes. Mermaid provides text syntaxes for several diagram types. These tools make source changes reviewable, but generated layout still needs a reader check.

Choose based on:

  • Who authors and reviews the diagram.
  • Which diagram types and semantics you need.
  • Whether the source must be diffable.
  • Whether several views reuse the same elements.
  • Where the result must render.
  • How accessibility is supplied.
  • How long the artifact must remain current.

Tool choice does not repair an unclear question or an inaccurate model.

Review with a trace

Review the diagram as a reader, not as its author.

  1. State the audience, question, type, and scope.
  2. Identify every element and boundary without guessing.
  3. Explain every arrow in its direction.
  4. Trace one important scenario from start to finish.
  5. Compare the facts with configuration, code, runtime evidence, or system owners.
  6. Check the legend, text alternative, contrast, and monochrome meaning.
  7. Remove anything that does not help answer the declared question.

The C4 review checklist tests titles, scope, legends, element meaning, relationship labels, and visual semantics. Microsoft adds accuracy, metadata, accessibility, progressive disclosure, and version control.

Maintain or retire the diagram

A diagram is current only while its facts and question remain current. Assign an owner and define change triggers.

Review a deployment view when topology changes. Review a context view when an external dependency changes. Review a data-flow view when collection, storage, classification, or trust boundaries change.

Store long-lived source with related documentation. Link the diagram to decisions and evidence. Record a review date. Retire a diagram that no longer answers an active question.

Diagramming cannot prove that a system is correct, secure, or available. It helps people inspect a selected model. Tests, configuration, telemetry, and operational evidence provide different forms of truth.

A path to competence

  1. Turn one vague request into an audience, question, and scope statement.
  2. Draw a context view with an explicit system boundary.
  3. Add one structural view without mixing abstraction levels.
  4. Trace one runtime scenario with a sequence view.
  5. Choose a state, data-flow, or deployment view for a second concern.
  6. Review each view with a representative reader.
  7. Add ownership, versioning, accessibility, and change triggers.
  8. Explore formal notation when shared semantics justify its cost.