There is a constant discussion in software engineering community about the use and usefulness of models/modeling, but often in these discussion, visual representations of models are mixed with the illustrations.
So what’s the difference?
The main purpose of model in software engineering is to answer certain questions about some object (to be built or studied), but the purpose of an illustration is to communicate certain message (which could be one of the answers provided by some model, or something else).
Both are needed, but for different purposes – visual representations of models generally do not serve as good illustrations, and illustrations do not serve as (good) models.
For automating the software engineering activities, the models need to be machine-readable, but the illustrations need always be human-readable.
There is a constant discussion in software engineering community about the use and usefulness of modeling in software development, but often in these discussion, visual representations of models are mixed with the illustrations.
So what’s the difference between an illustration (a picture) and a visual representation of a model?
The main purpose of model in software engineering (as in many other engineering disciplines) is to answer certain questions about some object (to be built or studied), but the purpose of an illustration is to communicate (make clear) a certain message (which in case of engineering can often be one of the answers provided by some model or something else).
Both are needed, but for different purposes, and therefore the properties of the good model are very different from the properties of a good illustration – visual representations of models generally do not serve as good illustrations, and illustrations do not serve as (good) models.
Do not blame an illustration, if it does not give answers to your questions, and do not blame a visual representation of a model, if it does not communicate a clear message!
An example of illustration of the idea that we should build a platform that allows a set of plugins to cooperate, could be following:
Although such illustration could convey rather well the main message, it does not help us to answer the questions of what to build as a platform, how plugins must be built, and how their interactions with the platform and between themselves would happen, as many other questions that we would like to get answers before we even start building such thing.
If we want to have answers to these questions or record the design decisions that we have made to be recorded precisely to allow different teams that might be involved in the building of platform and plugins to reach the end result that fulfills all the requirements, we need a model of the platform, plugins and possibly also model of their interactions.
Such models could have following visual representations:
First describing the static structure of the platform and two plugins (providing answers to the questions that are related to to the development and building of such system), and second describing the dynamic behavior of a plugin, it’s interaction with the platform (providing answers to the questions that are related to the ability of such system to work as required).
Because this function of the model, the most important properties of a model are correctness, consistency and completeness – model must act as a single source of truth for the development activities.
When we need to automate the software engineering (or any other engineering discipline), another important property of the models is existence of digital, machine-readable representation, which is required to be able to process models with different analysis and development tools – human-readable representations of the models does not have to be even exist.
The illustrations in other hand need always always be human-readable.
The whole activity of modeling (incl. building and analysis of the models) is very different from the activity of creating illustrations – different skills and tools are needed for both.
If there exists a model of an object, then also various illustrations could be created, but because the good illustration is not just representation of facts, but for better communication, must contains aspects that influence emotions of the intended audience, this is rather complex task, which requires artistic talents, and therefore has been more difficult to automate, than just creating a visual representation of some information taken from the model.
By trying either to use illustrations as models, to answer questions, or visual representations of models as illustrations, to communicate something, neither of the goals will be fulfilled, and we will be disappointed in the results.