The Bongard problem is simple. The name comes from computer scientist Mikhail Moiseevich Bongard, the first to put in use a meta-rational approach to problem-solving.
It’s a drawing split into two parts. On both sides of it, usually, six geometrical pictures are drawn. The problem aims to find one, and only one solution that explains the similarity between the two pairs of six pictures.
The problem could look similar to any IQ logic test provided to students in the past decades. But, it’s not.
There are some elements characterizing the Bongard problem.
First, even if there are many parts of pictures only the aggregate of it on one of the two sides counts. The person facing the problem should not focus on every single particular element but analyze the overall space given.
Let’s see one example.
On the left, one circle passes through the center of the other one, while on the right, no circle passes through the center of the other one.
The second element is that only one statement should be a solution to the problem. In other words, the Bongard system is described unambiguously in a single sentence.
So what is of use for Domain-Driven Design?
First of all, a Domain is described, in a natural language, as all the activities, the know-how, and the subject area of interest.
To deal with it, a model is implied. A system of abstractions that simplifies particular aspects of the domain and will be used to automatize or solve sub-problems.
In order to create a model, an ubiquitous language is defined. It’s a domain-specific language, mostly derived from any particular natural language, and focused on the domain model. It fits the usage and particular culture of the Domain and reflects all the activities of the team involved in the project and also all people living in the shade of the domain.
Every part of the domain is defined by creating bounding contexts, simply looking at how the same abstract object is named in a different context. A change of vocabulary signifies a change of boundaries.
For instance, a single document, a list with items, could be an Order, an Invoice, or a Business Report, depending on how is used in a different context.
Since the beginning of any project is dependent on the plain description of the model, there are difficulties describing it. Any concrete writing of the document that will describe the Domain itself is bound to be ambiguous. And this for some clear reason. Any natural-language is ambiguous. Also, as Saussure suggested at the beginning of the century, there is no way to derive the signified of a sign since the correlation between the mark and the meaning is arbitrary.
And even, if the French linguist, Émile Benveniste suggests, that rather than an “arbitrary” connection, the link between the signifier and the signified is so culturally bound and fast, to be, instead, necessary, always the cultural context of the interpreter comes in.
It’s not a case that Peirce’s Triadic Model highlights the interpreter as the real balance in the construction of signs.
To make things more interesting in Umberto Eco’s theory of semiotics, the notions of text and its interpretation are closely interwoven: it is impossible to define one without referring to the other.
There are two things the reader could do. The first is using the text.
For instance, he can burn it, help a wobbling table, or change it in toilet paper. And these are only “physical,” but there is also a cultural and social usage.
There is no way to say that a particular use is not legitimate. The reader has total freedom in it.
Second, the reader could read the text. In this process, an interpretation of it is generated.
Any text could generate an infinity of interpretations since a single text contains in itself a small universe. A text is always an “open” text.
So given some interpretations, it’s impossible to say which one is the best, but it’s easy to spot the bad ones.
If we use a little bit of common sense, we should be able to discard what is NOT a good interpretation.
The problem with an open text is to understand what the Author says through the “opera” itself. It’s called the intention of the text. When A. Dumas says: “Tous pour un, un pour tous!” in the “Les trois mousquetaires” we can translate it into “one for all, or all for one” but are we aware that the original motto is in Latin: “Unus pro omnibus, omnes pro uno”?
Is Dumas referring to it? Are we missing something when we translate it into English? The point is, the open text starts to explode if we don’t take into account the overall economical structure of the society in which the author lives and writes. The context is very very important.
Now, we know, fortunately, a lot about Dumas and his times.
Also, we are obliged to understand and inquire about the specific domain in which we are going to program the Model.
But even if common sense can be very helpful, how could we overcome these problems?
Meta-rationality affirms that reality is both intelligible and chaotic.
Understanding it is not hopeless but a total systematical approach is doomed to failure. Any meta-rational approach somehow denies any internal reality of the text and observes it from the outside.
So if the Domain is presented as two different text parts like in the Bongard problem, there could be a third statement that describes it in a forthcoming way!
So given A and B, that implies C. It can be read as equivalence since there is only one C that solves (A, B).
Now if the domain is described in a meta-rationality way with a series of texts, A, B, C, D… etc then it’s clear that ambiguity would be set aside and the implied final statement could be loud and clear.
(A,B,C,D,E) => M
where M is the model required to push forward the overall project.