# Best tools to create software architecture diagrams

As software engineers, our day-to-day work involves creating diagrams to explain the thought process. These diagrams include software architecture, database design & UML diagrams. In this post, I'll discuss different tools available to draw these diagrams.

# Software Architecture Diagram Tools

## Excalidraw

**[excalidraw.com](https://excalidraw.com)** is one of the emerging tools that started as an open-source. The best part of it is we can use it to collaborate with other people easily.

### Pros

1. Open-source
2. Lot of shapes, tools available and highly customizable
3. Easily import and export drawings
4. Lot of libraries available
5. Able to collaborate with others easily

### Cons

1. You need excalidraw+ (paid subscription) to save the drawings in the cloud
2. To save a diagram, you need to export the `.excalidraw` file and save it by yourself

### Adding extra shapes

Go to [Excalidraw Libraries](https://libraries.excalidraw.com) and just click on "Add to Excalidraw" on any libraries you like.

Here are a few must-have libraries I use.

[System Design Components](https://libraries.excalidraw.com/?theme=light&version=2&sort=default#rohanp-system-design)

[Software Architecture](https://libraries.excalidraw.com/?theme=light&version=2&sort=downloadsTotal#youritjang-software-architecture)

[Software Logos](https://libraries.excalidraw.com/?theme=light&version=2&sort=downloadsTotal#drwnio-drwnio)

[Database](https://libraries.excalidraw.com/?theme=light&sort=default#oehrlis-db-eng)

[Cloud Icons](https://libraries.excalidraw.com/?theme=light&sort=default#cloud-cloud)

[AWS Icons](https://libraries.excalidraw.com/?theme=light&sort=new#narhari-motivaras-aws-architecture-icons)

Once you added them, click on the library icon and start using them (illustrated with the image below)


![SCR-20220407-cwu.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1649303339604/lrO2Nlkyn.png)


### Live Collaboration

Step 1

Click on the library icon to browse

![SCR-20220407-d45.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1649303856971/96ND--fr-.png)

Step 2

Drag and drop any icon to start using it

![SCR-20220407-d59.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1649303914580/XUPbAt81C.png)


## Diagrams.net

[Diagrams.net](https://diagrams.net) (formerly known as [Draw.io](https://draw.io)) has a lot of features that many people are unaware of. I used to think it has only very basic shapes, but after I spent some time and explored, found that there are so many shapes available.

### Pros

1. Free to use
2. Lot of shapes available
3. Easily connect with google drive and any cloud storage to backup
4. Collaborate with others (requires google drive or one drive account)

### Cons

Nothing as of now

### Adding extra shapes

Step 1

Click on "More Shapes"


![SCR-20220406-mmk.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1649322921106/xI2nn0SQl.png)


Step 2

Browse the shapes and drag-and-drop


![SCR-20220407-kfw.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1649322954236/Cu3-PpqaB.png)


## Lucid

[Lucid.app](https://lucid.app) is an ecosystem of multiple applications such as lucid chart and lucid spark for visual communication. They aimed at enterprises with paid plans, but they also have a freemium model with limited features. You can see their pricing [here](https://lucid.app/user/165903926#/subscriptionLevel/chart/levelType)

### Pros

1. Lot of shapes and tools available
2. Ease of diagramming

### Cons

1. Not free, most of the features require paid subscription


### Adding extra shapes

Step 1

After logging in, create a new Lucidchart document


![SCR-20220407-ks4.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1649323788715/v0yi4kaP-.png)


Step 2

Search for a shape and add it to the diagram


![SCR-20220407-ku8.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1649329590413/j2Q9Eoy26.png)


## Diagrams as a code

If you like to represent diagrams using code, then there are tools like [Mingrammer](https://diagrams.mingrammer.com/).

### Pros

1. Huge availability of tools including on-premise, AWS etc...
2. Easily draw diagrams
3. Open-source

### Cons

1. Learing curve
2. Supports only `python3`

There are some examples given here - [https://diagrams.mingrammer.com/docs/getting-started/examples](https://diagrams.mingrammer.com/docs/getting-started/examples)


