Ask somebody in the building industry to visually communicate the architecture of a building and you'll be presented with site plans, floor plans, elevation views, cross-section views and detail drawings. In contrast, ask a software developer to communicate the software architecture of a software system using diagrams and you'll likely get a confused mess of boxes and lines. I've asked thousands of software developers to do just this over the past decade and continue to do so today. The results from these software architecture sketching workshops still surprise me, anecdotally suggesting that effective visual communication of software architecture is a skill that's sorely lacking in the software development industry.
Of course, as an industry, we do have the Unified Modeling Language (UML), but asking whether this provides an effective way to communicate software architecture is often irrelevant because many teams have already thrown out UML in favour of much simpler "boxes and lines" diagrams. Abandoning UML is one thing but, perhaps in the race for agility, many software development teams have lost the ability to communicate visually. This talk explores the visual communication of software architecture based upon my experience of working with software development teams across the globe. We'll look at what is commonplace today, the importance of creating a shared vocabulary, diagram notation, the value of creating a model plus how to use tooling and static analysis techniques to automate diagram generation.
YOU MAY ALSO LIKE:
- The lost art of software design (SkillsCast recorded in December 2019)
- Software Architecture Gathering Digital 2021 (Online Conference on 13th - 14th October 2021)
- Architects live in the first derivative (SkillsCast recorded in September 2019)
- When citizen experience meets OpsTech in Service Journey (SkillsCast recorded in September 2019)
The Art of Visualising Software Architecture
Simon Brown is the founder of Coding the Architecture and either a software architect who codes or a software developer who understands architecture