Why should you draw Software Architectures ?

Thoughts & Experiences for Drawing Software Architecture

Most Architects represent their thoughts in the form of diagrams. These are of varied types and formats.

  • Some like to represent in the form of mixed formats representing Data flow, Applications, and Infrastructure all in a single view while others are often selective about what is captured
  • Some will focus on the direction of arrows, strength(thickness) of lines, color of lines while others might doodle away
  • Choosing the amount of detail presented is a choice that is individual too unless stronger standards exist

All of them are correct and there’s always more than a single diagram that can communicate. But why are diagrams so effective in describing architectures? The answer lies in a definition or more so understanding of the Term.

While there are many I love the definition by Mr. Martin Fowler, “the shared understanding that the expert developers have of the system design” ..! In a complex system with multiple services and varied tech stack this defination helps intutively understand why there is a need to draw.

Softwares evolve and are constantly under change. With this there is a natural need to understand the impact of a change on the overall system. This is critical to maintaining stability and continuity of the system. How many times has it happened that we find ourselves changing a piece scared to death about it causing a cascading impact in production, or blowing off a downstream system due to lack of awareness of the overall picture. This awareness is what Architecture diagram brings in.

So next time if you have a change ensure that the first activity within your sprint is to assess the architecture impact. Even if there is none it is important to capture a simple ADR (Architecture decision record) describing the requirement and capturing the conversation.

Best Practises out of personal experience

  • Use colours to represent changing states
  • Ensure that arrows follow a single convention (Data flow, Call Flow etc)
  • Group multiple interfaces and move them to a different diagram basis the interoperability method (All external REST APIs are grouped under a single group)
  • Different environments can have different diagrams with a graduation process guiding them
  • Limit the details (Focus on requirements and eliminate the noise)

In the next post, I will try to a take a sample app draw it as I think might be good. Stay tuned.