Links and tools: November 2015


Debating the value of the canonical model, looking at how we can draw better software architecture diagrams, and a cool app for producing great illustrations.

Here are the articles and apps that I’ve been checking out this month.

The canonical debate

The canonical model is a design pattern that aims to reduce complexity by standardising the way that business objects are defined within an organisation.

Or, if you’d like that in plain English: the canonical model is the idea of coming up with one standard definition of a “thing” that your organisation works with – such as a Customer, or a Product, or an Account.

The idea is that once this standard definition has been agreed upon and set in stone, it’s easier to integrate systems together that depend on this Customer/Product/Account object, because there’s less transformation and less faffing about.

Seems a pretty sensible thing to aim for, right? The reality is that this is very hard, and the outcome isn’t always the utopia that we’re promised.

The pattern usually starts with attempting to get agreement from across the organisation on what a standard Customer actually is. And then it just gets harder from there.

Stefan Tilkov’s blog post Why You Should Avoid a Canonical Model offers some compelling arguments against using a canonical model and what you can do to address some of the problems you’ll run into.

The case for more meaningful boxes and lines

I spend a lot of my time drawing integration design and architecture diagrams in Visio (the horror!). I use a free set of Enterprise Integration Pattern stencils for Visio designed by Matthew Oskowis to represent integration patterns, such as the splitter, message queue and so on.

However while designers and architects love box and line diagrams, everyone seems to use their own style, and consequently diagrams can often be interpreted in different ways by different people. Not to mention they are often very fugly.

Simon Brown’s new ebook The Art of Visualising Software Architecture is an interesting read, especially the examples of odd diagrams in the first chapter. There are lots of recommendations for how to approach diagramming at all levels of software design, and I look forward to trying to incorporate these approaches into my own diagrams.

He also has an online tool Structurizr (and its accompanying source code on Github) for building simple and clear looking diagrams from code.

Illustrations made simple

Finally, I’m hooked on the Assembly app from Pixite. It’s a quick and quite addictive way to build illustrations, by simply dragging pre-built shapes onto a canvas.

It comes with some in-built shapes, but the rest – yep, you guessed it – have to be unlocked through in-app purchases. You can’t (yet) add your own shapes, but you can still make decent illustrations using the built-in sets.

Creating an illustration for the site in the Assembly app
Creating an illustration for the site in the Assembly app

Watch this space as I attempt to create some fancy illustrations for my articles using the app. Feedback welcomed.

Leave a Comment

You can use Markdown in your comment. To write code, indent lines by 4 spaces.