C
C
Chesheersky2015-04-29 14:31:19
Software design
Chesheersky, 2015-04-29 14:31:19

To what class can the described system be attributed?

I'll start the question with a description of the sore.
Now I work in a medical equipment company. We have about 4 types of devices. Each of the devices has a certain set of versions. Each version has a slightly different protocol for communicating with the outside world. We also have software that communicates with these devices. The software also has different versions. It is required to maintain compatibility between the most different versions of devices and software.
So far we have been successfully coping with all this zoo, but it's worth the trouble. Something tells me that the growth of the zoo will lead to a disproportionate increase in labor costs. And it causes concern =)
The question may seem ridiculous, but I'll ask it anyway. Is there any name for this class of systems? Are there any books or articles on the subject?

Answer the question

In order to leave comments, you need to log in

3 answer(s)
V
Vladimir Martyanov, 2015-04-29
@vilgeforce

The name is a mess :-) It is necessary to somehow solve the issue of compatibility of protocol versions ...

T
Timur Shemsedinov, 2015-04-29
@MarcusAurelius

There is a task to untie the hardware from the software as much as possible. Of course, the software must know about the structure and capabilities of the hardware, but this knowledge can be generalized and a specialized intermediary language can be developed, i.e. metalanguage for formal description of protocols (software interfaces) of devices. Moreover, you don’t need to make your own syntactic constructions, it’s better to take the syntax for which common and optimized parsers have already been developed, for example, JSON. Thus, the software will not know the interface of the equipment, but the description language of this interface. More precisely, generalized interface elements, each of which is associated with higher-order generalizations: command (procedure, method), parameter, sensor, measurement, etc. In this metalanguage, it is possible to provide not only declarative constructions of a descriptive nature, but also active, by including scripts in it, for example, in JavaScript, which can describe algorithms for working with the same structures that the metalanguage describes. From the declarative part, you can dynamically build a user interface and associate it with the formation of specific commands sent to the device. I can’t describe in more detail, because. I do not know the specifics of your tasks. You can read more about metaprogramming here:habrahabr.ru/post/227753 and here: habrahabr.ru/post/137446 well, maybe even here: habrahabr.ru/post/154891

M
Maxim Kuznetsov, 2015-04-29
@max-kuznetsov

I'm afraid I can not give a clear solution to the problem, too little data. But maybe my experience will help.
At one time he made an integrated security system. It was a boxed product, 4 versions were released with me. The system needed to bind a bunch of equipment: video cameras, readers, access control systems, document scanners and other victuals. The problem was solved simply: unified abstract classes were created for each class of equipment: for scanners (receiving scans of documents), for ACS (information about passages), for readers (events of reading cards, tickets, biometrics), for cameras (receiving video and photo images) , for image recognition systems... Abstract classes had abstract methods for receiving input data and implementing methods for further processing information corresponding to this class of devices. The implementation of specific classes for specific device models was pulled into plugins that were dynamically hooked up.
We always knew which devices we support and made appropriate plugins for them. Interfaces and abstract classes did not need to be redone, they did not change. Suppose there were several readers: magnetic cards of several types, tickets with a barcode, fingerprints ... But they were all needed to perform one function: to identify the owner of the presented identifier. Therefore, the implementation of the plug-in was different for each device, but the interface for its interaction with the system core was the same for all devices.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question