What diagram should I know as a software engineer?
Tags: abotwrotethis, architecture, productivity, devops
Published: 2022-12-28 18:10:04

## Prerequisite
{% embed https://www.youtube.com/watch?v=WnMQ8HlmeXc&t=1063s&ab_channel=freeCodeCamp.org %}

As a software engineer, **it's important to be familiar with a variety of diagrams and notations that are used to design, model, and document software systems**. Some common types of diagrams that you may encounter include:

## Class diagrams
{% embed https://dev.to/jfeliu007/how-to-turn-your-golang-programs-into-uml-class-diagrams-1e5o %}

Class diagrams are used to model the static structure of a system, showing the relationships between classes, interfaces, and other objects.

## Component diagrams
Component diagrams show the relationships between the components of a system, often used to model the structure of a software system.

## Object diagrams
Object diagrams show the relationships between objects in a system, often used to model the static structure of a system at a specific point in time.

## Communication diagrams
Communication diagrams show the interactions between objects or components in a system, often used to model the communication between objects in a system.

## Sequence diagrams
{% embed https://dev.to/mhmxs/sequence-diagrams-are-so-powerful-4i2k %}

Sequence diagrams show the interactions between objects or components in a system, showing the order in which messages are sent and received.

## State diagrams
{% embed https://www.geeksforgeeks.org/unified-modeling-language-uml-state-diagrams/ %}
State diagrams show the possible states of a system and the transitions between those states, often used to model the behavior of a system.

## Activity diagrams
[Activity diagrams](https://www.smartdraw.com/activity-diagram/) show the flow of activities or actions within a system, often used to model business processes or workflows.

## Use case diagrams
{% embed https://www.geeksforgeeks.org/use-case-diagram-for-online-banking-system/ %}

Use case diagrams show the interactions between a system and its users, showing the different ways that a system can be used.

## Deployment diagrams
[Deployment diagrams](https://www.tutorialspoint.com/uml/uml_deployment_diagram.htm) show the physical components of a system and how they are deployed on hardware, often used to model the architecture of a distributed system.

## Data flow diagrams
{% embed https://www.geeksforgeeks.org/what-is-dfddata-flow-diagram/ %}

Data flow diagrams show the flow of data within a system, showing the input, output, and processing of data.

## Entity relationship diagrams

{% embed https://www.geeksforgeeks.org/introduction-of-er-model/ %}

Entity relationship diagrams show the relationships between entities in a database, used to model the structure of a database.

## Collaboration diagrams
Collaboration diagrams show the interactions between objects or components in a system, often used to model the dynamic behavior of a system.

## Network diagrams

{% embed https://www.smartdraw.com/network-diagram/ %}

Network diagrams show the connections between devices on a network, often used to model the topology of a network.

## Interaction overview diagrams
Interaction overview diagrams show the flow of messages between objects or components in a system, often used to model the overall flow of interactions in a system.

## Timing diagrams
Timing diagrams show the behavior of a system over time, often used to model the timing and duration of events in a system.

## Object constraint language (OCL) diagrams
OCL diagrams use a specialized notation to describe constraints on the behavior of a system, often used to specify the behavior of a system in more detail. It is an advanced concept, so here is the [lecture note.](http://st.inf.tu-dresden.de/files/general/OCLByExampleLecture.pdf)

## Graphical user interface (GUI) diagrams
Graphical user interface (GUI) diagrams are visual representations of the user interface (UI) of a software application or system. GUI diagrams show how the UI is organized and how it interacts with the user. These diagrams can be used to design and document the UI of a software application, and they can also be helpful for understanding and navigating an existing UI.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/obmvpoysszf8aa3ca3ly.png)

**GUI diagrams typically include elements such as windows, dialog boxes, buttons, menus, and other interactive elements that are used to interact with the software.** They may also include representations of data and other information that is displayed to the user. GUI diagrams are often created using specialized diagramming tools, and they may be included in software design documents or used as part of the development process.

Surprise! This article is written by ChatGPT! I added some useful links to further read more about these diagrams.