📜 ⬆️ ⬇️

In search of the Holy Grail of business analysis

I sing what I see, or see what I sing?


The main task of the business analyst in developing new software is the study of the subject area and the formal description of the information received in the form of a model (Domain Model). The analyst must sing what he sees and what he wants to see. For this, he must have a language in which he will perform his song. However, the analyst is not always familiar with the appropriate language, and therefore often uses other languages. This is partly due to the fact that the project is managed not from the point of view of the subject area, but from the point of view of implementation. And then misfortune can happen to the analyst: he can stop seeing what needs to be sung and start seeing only what there are words in the vocabulary of the language he uses. Everything else ceases to exist for him. Then, instead of singing what he sees, the analyst begins to see what he is singing. I must immediately note that I am not against languages, I am against the narrowing of the field of analysis that occurs due to the insufficiency of these languages.




')

What you need to remember?


To study and describe the subject area, the analyst should know:


Since, to record the results, the analyst does not always have the opportunity to use the FM , the analyst should also know this:



Unsolved problems



Corollary:

It is considered that the languages ​​UML, as well as ER-models can be used to simulate subject areas without restrictions. Therefore, analysts are trying to model the subject area in UML, or ER, even when the restrictions imposed by the modeling language do not allow it to be done correctly.

For those analysts who understand the voiced problem, the Holy Grail would be a tool that allows you to simultaneously simulate both the subject area and the implementation in the program code. Therefore, scientists continue to move in a circle, creating new ontological standards, and, at the same time, creating programming languages ​​that would support these ontologies. But for now the gap is great.

History tour


In Europe, Aristotle was the first to try to answer the question of how we structure the results of our thinking. He decided that our consciousness works like this: all objects that we see, we refer to certain types. A type is, according to Aristotle, a list of attributes that describe instances of this type. Each instance is represented in the model by the ordered values ​​of these attributes. The assumption of Aristotle was born on the basis that the record of the objects of our world was originally conducted in the form of data plates. Aristotle gave a picture, but he did not possess the knowledge that we now possess, and therefore his picture of types must be complemented by another property. This property, I have not yet announced, leaving it to you. In this way:


If you see an empty table, then you have a type and its description, you see a filled table, then, in addition to the type and its description, a description of specific instances of this type. This picture is given at the beginning of the article.

We also meet the following tables:



What is shown on this table? The answer to the question can be given in two ways. And both will be true. I'll let you think about the question yourself: what does this table model? And what does the data in this table mean?

Two different meanings of the same statement


As a result, Aristotle gave us the terms: type of objects and an instance of the type of objects. As soon as you hear the term instance, it means we are talking about types. For example, suppose there is a saying: “I am holding a copy of the book The Three Musketeers.” It is interpreted as follows: there is a type of books "Three Musketeers", and there is a specific instance of this type of objects - a specific book. This statement can be abbreviated to: “I am holding the book“ The Three Musketeers ”. This statement can be interpreted in two ways:


In the representation of Aristotle, we work only in an intensional context, where all objects have certain properties. This class of representations is fixed in the ontological standard MOF . On this standard is built and ER-models, and the PLO. Question: Does this method of object typing really give us an idea of ​​how we think and how we structure our knowledge? In order to figure this out, we need to conduct an experiment.

Employees and experiments


Suppose there is a group of employees of the laboratory of experimental physics, and a series of experiments that are conducted by the laboratory staff. Let us ask ourselves: how to model this subject area in terms of Aristotelian logic? The first thing that comes to mind is for each employee to start the “Experiment” feature, the start date and the end date, in which it will be written, from what time for which and in which experiment the employee is busy. That is, in the logic of Aristotle, an experiment would be a sign of an employee. This means that the question "What kind of employee?" Can be answered: "Employed in the experiment."



Exactly until the employee starts working on two experiments at once. Then we will not be able to create the “Experiment” parameter, because the relations between the employees and the experiments immediately become many to many.
It is no longer possible to model this relationship in terms of signs. We'll have to create a new type of entity “Communication”, which stores the link to the employee and the experiment, but in itself means nothing. Such objects are simply not in nature!



In addition, we got a certain leap in the model. Up to a certain point, we managed with two types of entities, but at the moment when it turned out that employees could work on several experiments at once, it turned out that these entities were not enough. Our brain doesn't work that way. For him there is no difference over one, or several experiments, employees work. In my head, the model of reality does not change. This means that this class of models has limitations.
Quantum leap in the model
Sometimes we turn our ideas about things upside down. For example, quantum mechanics has shown us a paradox in which we have to admit that the past can be changed. And then we change our picture of the world. When we learn that employees work in different projects, this does not change our picture of the world. However, this knowledge leads to a qualitative leap in data modeling!

Perhaps OOP will give us the answer to the question of how to model the world? To do this, consider another example. Let's try to model apple trees, varieties of apple trees and their habitat ranges.

Apple trees and habitats


Suppose we have apples and it is necessary to model the range of their growth. Let me remind you that specific apples can not know anything about the range. They know only the coordinates of their place of growth. The area is determined on the class of apple trees and only on the class. Question: which object in the OOP model will store the value of the “Area” parameter? OOP allows you to do this in a variety of ways.
Ambiguity of the model implementation
The fact that this is realized in different ways already tells us that the PLO does not model our vision of the world. Our vision is unique. We lined up this vision for centuries together by the whole European world, and came to certain models. These models are unambiguous. Therefore, if there is a design methodology that leads us to different models, then this methodology is not suitable for us to model the subject area.

The first implementation


You can create a static variable in the class "Apple trees". What does this variable mean? This variable is created for objects of this class one for all. Question: is this class variable, or class objects? Logically, we can conclude: if the value of a variable is available to class objects, then it is a variable of class objects, not a class of objects! That is, creating a static variable does not solve the task of creating a class variable. Thus, we come to the second way to implement the task.

The second implementation


Create a class "Apple Subclasses", which will declare the parameter "Area". The object "Class of Apple Trees", which is an object of the class "Apple Subclasses", will contain the value of the parameter "Area". Add the "List of apple trees" parameter in the class "Apple Subclasses". Then the object "Apple Class" will have a list of links to objects of the class "Apple Trees". What can we do now, thanks to the new structure? We will establish a new object of the class “Subclasses of apple trees” under the name “Pear” and associate with this object a list of objects of the class “Apple trees” that we need to mark as pears. Thus, we can design a subclass of apple trees - a class of pears, and by adding the necessary operations on lists, we can operate with classes, not just class objects. This will give us the opportunity to study the intersection of the habitats of different varieties of apples, as well as their association. What is wrong with this approach?

What's wrong?



Was there a boy?
You are now looking at the monitor. True? Actually you look nowhere. Just the mind interprets the signals received from the eyes, decrypts them and makes a comparison with those images that are stored in his memory. Having chosen the right one, he checks whether the received image contradicts the signals from other perception channels. If the signals from different channels do not contradict each other, that is, they do not cause dissonance, then the mind gives a solution: we have an object, which by its characteristics can be attributed to the class of monitors. But it may happen that the brain produces a different solution, taking the object to the class of tomato. And then the subject will poke a finger at the monitor with the words - a tomato. But the object does not change its properties, the perception of this object will change. Therefore, in nature there are no dogs, no cats, no monitors. There is an entity that we interpret as a set of parts, the parts are called objects, and then we classify them and the relations between them.


findings



Let's see how set theory handles these tasks (To be continued) .

PS You might think that I am against modeling the subject area in classical notations. No, I just want us to be able to think, to be able to convey these thoughts and reflect them in the model in the correct way.

Source: https://habr.com/ru/post/245241/


All Articles