📜 ⬆️ ⬇️

Interaction of software systems

image

In this article I will talk about the links between programs. Communication between programs or, to put it differently, the interaction of programs with each other in the overwhelming majority of cases consists in receiving data from one program from another . For example, an electronic bidding program may request a different exchange rate program from some other program. Or the text editor can transfer the text entered by the user to the operating system using the keyboard driver. Programs can provide a set of functions for interaction - API. Or even have entire interaction mechanisms, called protocols, when using multiple consecutive function calls, for example, for complex coordination of any parameters. A big step forward is the creation of universal structures - XML ​​and Json. Programs can interact with other programs and in an "impolite" way - without protocols and open APIs: Parry these pages in the case of grabbers, penetrating into executable files as viruses, or, conversely, killing them in the case of anti-viruses.

In information technologies, like living ecosystems, there is a very strong mutual influence of software systems on each other and, generally speaking, it can be of two types:

  1. First, the system can use the underlying layer according to the hierarchy level (in this case, as a rule, the layers located above do not affect the underlying ones).
  2. Second, the system can interact with another system at the same hierarchy level using different interfaces.

One can speak about hierarchy separately, but to simplify, here we mean layers like the following: OS (in turn with its layers), platform, program, add-ins (plug-ins), etc.

In addition, according to the nature of the interacting programs, the interaction can be of two types: different parts or the same interact. Observations show that in the first case, their number may be relatively small - for example, with a dozen organs in the body or several computer components, and if the terms are the same, usually there are a lot of cells in the organ, transistors in the processor, people in civilization, programs also consist of millions of machine commands of several dozen types. In addition, each machine command, cell, each transistor or each neuron in the neural network performs a very simple function. It can be assumed that the basis of any thing, any system at the very foundation is just such simple basic components.
')
The difference from nature is that the systems at different levels are quite independent and can continue to work when changing the underlying layer to another: for example, the website will continue to open if you change the twisted pair Ethernet to Wifi.

In general, the interaction of software systems can be of several types:


Like any other system, the program consists of components. In programming, they like to reuse components if they already have components that implement similar functionality. This is faster than writing your component, debugging and subsequently accompanying it. Sending a letter is one component, writing to the log is another component, plotting is the third, text editor on the site is tineyMCE, search is lucene. Therefore, many programs use the same components.

Often programs allow you to expand your functionality: text editors and spreadsheets allow you to create macros, browsers add extensions, all CMS add them with third-party components and plugins. Some programs go further along this path and in fact are platforms for launching other applications: for example, browsers or ibm lotus notes.

The operating system itself is a program whose sole purpose is the existence of other programs. It simplifies their existence, isolates them from hardware, provides the ability to use a graphical interface and gives access to the network, its purpose is to provide work to other programs.

At the same time, both operating systems and platforms, and even CMS, which are installed because of a single component, are in many cases much more complicated than the program for which they are used, they can include many different operational functions: share resources, provide an authorization mechanism , simplify access to the database. This is also due to its versatility (for example, the Windows operating system contains several Win32, OS / 2 subsystems) to ensure operation for all possible programs.

Versatility always leads to added complexity. This also applies to those components that programmers use when writing a program, they are much more complicated and have a much larger set of functions, many of which are not required or used. Programs are often forced to provide backward compatibility - so, in Windows, it was possible to run DOS applications. When interacting systems, several interesting effects are possible.

The first of these is called synergy and its idea is that the term is more than just the sum of the terms. That is, if you add some other technology to one technology, then with synergy, the resulting technology will exceed both the first and second. And it can be a qualitatively different product. That is, if you add an iron skeleton to a computer with a program, you will get a robot that is larger than the hardware and computer. The interaction of a large number of simple things can lead to some complex interactions. The sum of simple things gives a complex - a set of transistors creates a computer, a set of atoms creates an object, cells in the body create organs. The sum of people - civilization - is not just seven billion people, it is something more.

The second thought was voiced by Peter Norvig in the report Everything is Miscellaneous. It seemed amazing to me: if you look at a single chimpanzee and a single person, you will see that there is much in common between them. Well, that is, it is clear that chimpanzees are a bit stronger, people are a little smarter, but on the whole, their appearance is a bit similar, their physical and even if with a stretch intellectual possibilities are comparable. But now if you look at the chimpanzee culture and the culture of humanity, you will see a huge difference. The civilization of people cannot even be compared with the chimpanzee civilization. For some reason, it reminded me that 0.99 and 1.01 do not seem to be very different, but when erecting to any greater power, one number will tend to zero, and the other to infinity.

For those who just flipped through: the interaction of programs can be of different types and its result can lead to a fundamentally new level of the software system. The whole does not always reflect what is happening in the constituent parts. Thanks for attention!

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


All Articles