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.
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.
Watch this space as I attempt to create some fancy illustrations for my articles using the app. Feedback welcomed.