Method for deploying at least one software application, electronic device and corresponding computer program product

The method for automatic deployment of passive software applications in industrial communication networks addresses the complexity of managing multiple suppliers' systems by creating active executables that can be automatically invoked and managed, enhancing automation and efficiency.

FR3140970B1Active Publication Date: 2025-05-23ORANGE SA
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
FR2022010691
Authority / Receiving Office
FR · FR
Patent Type
Patents
Current Assignee / Owner
Filing Date
2022-10-17
Publication Date
2025-05-23
Estimated Expiration
2042-10-17

AI Technical Summary

Technical Problem

The complexity of hardware and software fleets in industrial settings, resulting from reliance on multiple external suppliers for automated solutions, leads to difficulties in maintaining an overall vision and managing these systems effectively.

Method used

A method for at least partially automatic deployment of passive software applications in a communication network, involving obtaining binary code, selecting data access, creating an active executable, and adding it to a library, allowing for automatic invocation and data exchange.

Benefits of technology

This method simplifies the deployment and management of software applications in industrial environments, reducing complexity and enabling more efficient automation of tasks such as quality control and predictive maintenance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000028_0000
    Figure 00000028_0000
  • Figure 00000028_0001
    Figure 00000028_0001
  • Figure 00000029_0000
    Figure 00000029_0000
Patent Text Reader

Abstract

Method for deploying applications, electronic device and corresponding computer program product The invention relates to a method for deploying a passive software application in a communication network, said method comprising: Obtaining the binary code of said passive application and a designation of the type(s) of data consumed and / or produced by said application; An at least partially automatic selection of access to data from at least one data source of said network and / or to at least one data consumer of said network, said selection taking into account said at least one designated type and at least one type of data expected via said access;An automatic creation of an active executable of which at least one software process comprises an invocation of said passive application with as input parameter(s) at least one data item obtained via said access and / or with as output parameter(s) at least one data item to be transmitted via said access. The invention also relates to the corresponding electronic device, system, computer program product and recording medium. Figure for the abstract: Fig. 3;
Need to check novelty before this filing date? Find Prior Art

Description

Title of the invention: Method for deploying at least one software application, electronic device and corresponding computer program product 1. Technical field

[0001] The present application relates to the general field of application deployment, in various sectors such as for example in the industrial, agricultural and / or medical sectors.

[0002] It relates in particular to a method for deploying software application(s) as well as an electronic device adapted to the implementation of such a method, and the corresponding computer program product and recording medium. 2. State of the art

[0003] Today, industry is facing more than ever environmental and societal challenges (personnel safety, lack of availability of qualified personnel, competition, etc.) pushing it to automate certain operations, such as quality control, safety and predictive maintenance tasks, in connection with production stations. To meet these challenges, manufacturers often rely on multiple external suppliers, each specialized in providing automated solutions that address a particular problem. Examples of such supplies include a computer vision defect detection application, a vibration analysis failure detection application, a passage detection application, etc.Each solution provider brings its own environment to the manufacturer: dedicated sensors, mostly wired, its own IT equipment (such as a local server to be installed in the industrial site concerned, or its own connections with the customer's machines, mostly wired, etc.).

[0004] This leads to a complexity of the hardware and software fleet of an industrialist and to difficulties in maintaining an overall vision of this fleet, for an industrialist.

[0005] The object of the present application is to propose improvements to at least some of the drawbacks of the state of the art. 3. Statement of the invention

[0006] The present application aims to improve the situation using in particular a method for at least partially automatic deployment of a passive software application in a communication network, said method comprising: - Obtaining the binary code of said passive application and a designation of the type(s) of data consumed and / or produced by said application; - An at least partially automatic selection of at least one access to data from at least one data source of said network and / or to at least one data consumer of said network, said selection taking into account said at least one designated type and at least one type of data expected via said access; - An automatic creation of an active executable of which at least one software process comprises an invocation of said passive application with as input parameter(s) at least one piece of data obtained via said access and / or with as output parameter(s) at least one piece of data to be emitted via said access.

[0007] In at least some embodiments, said method comprises adding said first created active executable to a library of active executables of said communication network. In at least some embodiments, said first added executable is associated in said library with said at least one data source and / or said at least one data consumer.

[0008] In at least some embodiments, said method comprises launching said first active executable or proposing such launching.

[0009] In at least certain embodiments, said designation is obtained by accessing a file describing the data consumed and / or produced by said application.

[0010] In at least some embodiments, said access is an access to a database. In at least some embodiments, said at least one type of data via said access is obtained by scanning said network. In at least some embodiments, said access is a channel of a data bus of said network.

[0011] In at least some embodiments, said data obtained via said channel is obtained by subscribing said software process to said data channel to receive data from said at least one data source.

[0012] In at least some embodiments, said software process comprises transmitting said data to be transmitted on said channel. In at least some embodiments, said data channels are channels of an MQTT data bus.

[0013] The features presented in isolation in the present application in connection with certain embodiments of the method of the present application may be combined with each other according to other embodiments of this method. According to another aspect, the present application also relates to an electronic device suitable for implementing the method of the present application in any of its embodiments.

[0014] For example, the present application thus relates to an electronic device comprising at least one processor configured for deployment at least partially automatic of a passive software application in a communications network, the processor being configured in particular to: - Obtaining the binary code of said passive application and a designation of the type(s) of data consumed and / or produced by said application; - An at least partially automatic selection of at least one access to data from at least one data source of said network and / or to at least one data consumer of said network, said selection taking into account said at least one designated type and at least one type of data expected via said access; - An automatic creation of an active executable of which at least one software process comprises an invocation of said passive application with as input parameter(s) at least one piece of data obtained via said access and / or with as output parameter(s) at least one piece of data to be emitted via said access.

[0015] The present application also relates, for example, to a system comprising: - at least one electronic device comprising at least one processor configured for at least partially automatic deployment of a first passive software application in a communication network, the processor being in particular configured for: - Obtaining the binary code of said passive application and a designation of the type(s) of data consumed and / or produced by said application; - An at least partially automatic selection of at least one access to data from at least one data source of said network and / or to at least one data consumer of said network, said selection taking into account said at least one designated type and at least one type of data expected via said access; - An automatic creation of an active executable of which at least one software process comprises an invocation of said passive application with as input parameter(s) at least one data item obtained via said access and / or with as output parameter(s) at least one data item to be emitted via said access. At least one source device and / or one consumer of data from said network.

[0016] The present application also relates to a computer program comprising instructions for implementing the various embodiments of the above method, when the computer program is executed by a processor and a recording medium readable by an electronic device on which the computer program is recorded.

[0017] For example, the present application thus relates to a computer program comprising instructions for implementing, when the program is executed by a processor of an electronic device, a method for at least partially automatic deployment of a first passive software application in a communications network, said method comprising: - Obtaining the binary code of said passive application and a designation of the type(s) of data consumed and / or produced by said application; - An at least partially automatic selection of at least one access to data from at least one data source of said network and / or to at least one data consumer of said network, said selection taking into account said at least one designated type and at least one type of data expected via said access; - An automatic creation of an active executable of which at least one software process comprises an invocation of said passive application with as input parameter(s) at least one piece of data obtained via said access and / or with as output parameter(s) at least one piece of data to be emitted via said access.

[0018] Furthermore, the present application also relates to a recording medium readable by a processor of an electronic device and on which is recorded a computer program comprising instructions for the implementation, when the program is executed by the processor, of a method for at least partially automatic deployment of a first passive software application in a communication network, said method comprising: - Obtaining the binary code of said passive application and a designation of the type(s) of data consumed and / or produced by said application; - An at least partially automatic selection of at least one access to data from at least one data source of said network and / or to at least one data consumer of said network, said selection taking into account said at least one designated type and at least one type of data expected via said access; - An automatic creation of an active executable of which at least one software process comprises an invocation of said passive application with as input parameter(s) at least one piece of data obtained via said access and / or with as output parameter(s) at least one piece of data to be emitted via said access.

[0019] The above-mentioned programs may use any programming language, and be in the form of source code, object code, or code intermediate between source code and object code, such as in a partially compiled form, or in any other desirable form.

[0020] The above-mentioned information carriers may be any entity or device capable of storing the program. For example, a carrier may comprise a storage means, such as a ROM, for example a CD ROM or a microelectronic circuit ROM, or a magnetic recording means.

[0021] Such a storage means may for example be a hard disk, a flash memory, etc.

[0022] On the other hand, an information medium may be a transmissible medium such as an electrical or optical signal, which may be conveyed via an electrical or optical cable, by radio or by other means. A program according to the invention may in particular be downloaded from a network such as the Internet.

[0023] Alternatively, an information carrier may be an integrated circuit in which a program is incorporated, the circuit being adapted to execute or to be used in the execution of any of the embodiments of the method which is the subject of the present patent application.

[0024] Generally speaking, by obtaining an element, is meant in the present application for example a reception of this element from a communication network, an acquisition of this element (via for example user interface elements or sensors or other measurement components), a creation of this element by various processing means such as by copying, encoding, decoding, transformation etc. and / or an access of this element from a local or remote storage medium accessible to at least one device implementing, at least partially, this obtaining. 4. Brief description of the drawings

[0025] Other characteristics and advantages of the invention will appear more clearly on reading the following description of particular embodiments, given as simple illustrative and non-limiting examples, and the appended drawings, among which:

[0026] [Fig.l] shows a simplified view of an exemplary system in which at least some embodiments of the method of the present application can be implemented.

[0027] [Fig.2] shows a simplified view of a device suitable for implementation in at least certain embodiments of the method of the present application.

[0028] [Fig. 3] shows an overview of the method of the present application, in some of its embodiments.

[0029] [Fig.4] illustrates an example of the architecture of an active executable obtained by the method of the present application, in at least some of its embodiments.

[0030] [Fig.5] illustrates an example of implementation of the method of the present application, in at least some of its embodiments. 5. Description of the embodiments

[0031] The present application proposes a method, at least partially automatic, for deploying software applications within a physical, more or less complex environment, such as an industrial complex (possibly distributed over several sites). The applications may, for example, correspond to software solutions implementing artificial intelligence (AI) techniques or to more conventional compiled and / or interpreted programs, provided by various suppliers.

[0032] In the present application, the term “passive” software application or resource means a software resource in binary or text format that executes only if another executable has invoked (or “called”) it by providing it with any input parameters that it expects. Such a resource may correspond, for example, to the binary code obtained by compiling the source code of a software method or function.

[0033] A passive resource is not designed to obtain its own input parameters. It is the executable (passive or active) that invokes it, or the operator that invokes it via a command line for example, that will assign values ​​to its input parameters. Similarly, the passive resource simply "returns", at the end of execution, its possible output parameter(s), to the executable (passive or active) or the operator that invokes it.

[0034] Conversely, here we mean by “active” application or resource, or “active” or autonomous executable, a software binary code capable of executing without being invoked by another executable, by acquiring by itself the values ​​of the variables that it uses. Such a resource may correspond for example to the binary code of a software process obtained by coupling (or “link” according to the English terminology) the binary code obtained by compiling the source code of this process and the binary codes resulting from the compilations of the methods, functions, dictionaries that it uses. Such executable code can be launched by a software application (thus creating the process that is the object of the code) and then execute in the background, by acquiring by itself the values ​​of its input parameters.

[0035] In an automated infrastructure, an active executable can for example obtain its input parameters from the raw data available on a data management infrastructure, which it knows and with which it can interact (such as a database, a data bus and / or another application). Such an interaction can be provided for example during the development of the source code of the executable, or via a configuration file. For example, it can obtain its input parameters by connecting to a database, or by subscribing to at least one channel of a data bus making data available. By “made available” data, we mean here both the data carried by the bus coming from at least one source of the data (that the executable will consume) as well as the data sent on the bus (by the executable) and likely to be consumed by other executables, or to serve as commands to machines connected to this bus.

[0036] The method of the present application aims to modify a “passive” software resource to make it an “active” executable, and this in an at least partially (or even totally) automatic manner, for example without rewriting code, and / or, at least in certain embodiments, to deploy this active executable simply, for example by offering it on a user interface.

[0037] For example, in at least some embodiments, the active executable created from the passive application may be made accessible (e.g., in an executable library) to a software platform providing a user interface for launching those active executables.

[0038] These active executables can for example be defined so as to execute continuously, in the background, by sharing between them software or hardware resources at their disposal, such as sensors, or machines that they control. Thus, several “passive” applications can share (via their encapsulation in active executables) the same data source (such as the same sensor for example).

[0039] The executables and their software or hardware resources may in some embodiments communicate with each other asynchronously.

[0040] In some embodiments, an active executable may for example have the ability to both: - to be continuously supplied with data from this or these sources (for example, data acquired by one or more sensors connected to the platform), for example via subscription mechanisms to at least one data channel carrying such data; - to invoke the passive application with input data resulting from data from this / these source(s); - transmit data resulting from the invocation of the passive application to other executables (for example via mechanisms for publishing these results in at least one channel of the data bus suitable for conveying such data).

[0041] According to the embodiments, the data coming from these data sources can be “raw” or “unprocessed” data (i.e. data acquired by this / these data source(s), for example as measured by these data sources, such as a speed when a data source is a speed sensor), or “processed” data, obtained by processing “raw” data. It can be for example data integrating an interpretation of a measured speed. by a speed sensor, as a qualification of this speed (too fast, too slow) possibly correlated with other data (condition of the tires on a car, wet or not road surface, etc.).

[0042] The passive application itself may for example be an application not implementing any asynchronous data communication mechanism (such as a subscription to, or a publication to, at least one data channel)

[0043] The invocation of the active application can for example allow the created active executable to interact (via the passive application) with equipment (for example industrial machines) connected to the platform and to which the passive application is dedicated. The transmission of the (output) data resulting from the invocation of the passive application to other executables responsible for controlling equipment such as industrial machines can also allow indirect control (via these “other” executables) of this equipment.

[0044] In at least some of its embodiments, the method can thus help to simply generate combinations of executables, to obtain for example completely automated and personalized complex functionalities, dedicated for example to the particular needs of a company.

[0045] In at least some of its embodiments, the method can help a user to implement various applications, by integrating them in a simple, at least partially automatic way, into his own environment, and this without multiplying user interfaces, hardware, etc.

[0046] The present application is now described in more detail in connection with [Fig. 1]. [Fig. 1] represents a telecommunications system 100 in which certain embodiments of the invention can be implemented. The system 100 comprises one or more electronic devices, at least some of which can communicate with each other via one or more communication networks, possibly interconnected, such as a local area network or LAN (Local Area Network) and / or a wide area network, or WAN (Wide Area Network). For example, the network may comprise a corporate or home LAN network and / or a WAN network of the internet type, or cellular, GSM - Global System for Mobile Communications, UMTS - Universal Mobile Telecommunications System, Wi-Fi - Wireless, etc.). An example of such a communication network is the data bus 420 illustrated in [Fig. 4].

[0047] As illustrated in [Fig.l], the system 100 may also comprise several electronic devices, such as terminals (such as a laptop 110, a smartphone 130, a tablet 120), connected objects 160 (for example production machines (such as electronic tools) or sensors), and / or a server 140 (for example an application server) and / or a storage device 150.

[0048] The system may also include network management and / or interconnection elements (not shown).

[0049] [Fig.2] illustrates a simplified structure of an electronic device 200 of the system 100, for example one of the devices 110, 120, 130, 140, 150, 160 of [Fig.l], suitable for implementing the method of the present application. As illustrated, depending on the embodiments, it may be a server, a terminal or a connected object. The device 200 may for example play the role of an executable management platform in the present application. In certain embodiments, it may be compatible with commercial platforms (such as the “Kubemetes” © platform) for deploying applications.

[0050] The device 200 comprises in particular at least one memory M 210 such as a buffer memory, a volatile memory, for example of the RAM type (for “Random Access Memory” according to English terminology), and / or a non-volatile memory (for example of the ROM type (for “Read Only Memory” according to English terminology). The device 200 may also comprise a processing unit UT 220, equipped for example with at least one processor P 222, and controlled by a computer program PG 212 stored in memory M 210. On initialization, the code instructions of the computer program PG are for example loaded into a RAM memory before being executed by the processor P. Said at least one processor P 222 of the processing unit UT 220 may in particular implement, individually or collectively, any one of the embodiments of the method of the present application (described in particular in relation to FIGS. 3), according to the instructions of the program PG computer..

[0051] The device may also comprise, or be coupled to, at least one input / output module LO 230, such as a communication module, allowing for example the device 200 to communicate with other devices of the system 100, via wired or wireless communication interfaces, and / or such as a module for interfacing with a user of the device (also called more simply in this application “user interface”).

[0052] By user interface of the device, we mean for example an interface integrated into the device 200, or a part of a third-party device coupled to this device by wired or wireless communication means. For example, it may be a secondary screen of the device or a set of speakers connected by wireless technology to the device.

[0053] A user interface may in particular be a user interface, called an “output” interface, adapted to a rendering (or to the control of a rendering) of an output element of a computer application used by the device 200, for example an application running at least partially on the device 200 or an “online” application. » running at least partially remotely, for example on the server 140 of the system 100. Examples of output user interface of the device include one or more screens, in particular at least one graphical screen (touch for example), one or more speakers, a connected headset.

[0054] Furthermore, a user interface may be a so-called "input" user interface, adapted to an acquisition of a command from a user of the device 200. This may in particular be an action to be performed in connection with an item rendered on an output interface of the device, and / or a command to be transmitted to a computer application used by the device 200 (for example an active executable as introduced above), for example an application running at least partially on the device 200 or an "online" application running at least partially remotely, for example on the server 140 of the system 100. Examples of input user interfaces of the device 200 include an audio and / or video acquisition means (microphone, camera (webcam) for example), a keyboard, a mouse.

[0055] Such input / output means may for example be adapted to management (creation, storage, selection, launch, configuration, etc.) of at least one executable. They may allow for example configuration of the inputs / outputs of a “passive” resource (or application) to be deployed in the form of an active executable (for example a designation of at least one data channel to be used to provide input parameters to the resource via the executable to be deployed and / or a designation of at least one data channel to be supplied, via the executable, with output parameters provided by this resource, a designation of at least one data source for this executable to be deployed and / or a data recipient for this executable).

[0056] In certain embodiments, the input / output modules may also comprise communication means adapted to receive data (for example data acquired by another device such as images, measurements, etc.) and / or means for acquiring this data. These acquisition means may comprise physical or software sensors capable of acquiring such data. Such input / output modules may in particular be adapted to consume data circulating on at least one channel 422, 424 of a data bus 420 and / or to transmit data on at least one channel 426 of a data bus 420 (see [Fig. 4]).

[0057] Said at least one microprocessor of the device 200 may in particular be adapted for at least partially automatic deployment of a first passive software application in a communication network. Said processor may in particular be configured to: - Obtaining the binary code of said passive application and a designation of the type(s) of data consumed and / or produced by said application; - An at least partially automatic selection of at least one data source of said network and / or at least one data consumer of said network, said selection taking into account said at least one designated type and at least one type of data made available and / or expected in said network; - An automatic creation of an active executable of which at least one software process comprises an invocation of said passive application with as input parameter(s) at least one piece of data made available by said selected data source and / or with as output parameter(s) at least one piece of data expected by said at least one selected consumer.

[0058] In some embodiments, the method of the present application may be implemented in a distributed manner between at least two devices 110, 120, 130, 140, 150 or 160 of the system 100. Thus, in some embodiments, a first device (for example a server 140 of the system 100) may construct an "active" executable (according to the method of the present application) which it communicates to at least one second device (for example a terminal 110 or the storage device 150 of the system 100), from which a third device (such as the terminal 110, or the server 140) may subsequently obtain this model. The executable may then be launched on the second and / or third device (for example the server 140, or another server, or the terminal 110) (according to the method of the present application).

[0059] In other embodiments, the method of the present application may be implemented locally by the device 200.

[0060] A distributed implementation of the method can allow the same executable to be deployed in parallel on several devices (for example to provide redundancy for critical processes) by sharing certain processes for obtaining the "active" executable from a passive application.

[0061] Additionally, a device-local implementation can help simplify the implementation of the solution that is the subject of the present application, and thus help limit its implementation cost. It can also help preserve the confidentiality of certain sensitive data or certain secret processes (such as manufacturing secrets that are part of a company's know-how) that one wishes to avoid disclosing.

[0062] Some of the above input-output modules are optional and may therefore be absent from the device 200 in certain embodiments. In particular, when the method is implemented locally, certain input / output modules linked to the transmission or reception of data may be absent.

[0063] The term "module" or the term "component" or "element" of the device is understood here to mean a hardware element, in particular wired, or a software element, or a combination of at least one hardware element and at least one software element. The method according to the invention can therefore be implemented in various ways, depending on its embodiments, in particular in wired form and / or in software form.

[0064] We now present, in connection with Figures 3 and 4, certain implementations of the method 300 of the present application on an electronic device (which may be similar to the device 200 of [Fig.2]), such as the server 140 or the terminal 110 of [Fig.1].

[0065] As illustrated, the method 300 may comprise obtaining 310 the characteristics of at least one software application to be deployed in said communication network.

[0066] This obtaining may include in particular an obtaining 312 of the application itself and an obtaining 314 of its description. Depending on the embodiments, these two steps may be carried out in parallel, or successively (without prejudice to their respective order), or again, these two steps may be combined into a single step, where the application and its description are obtained together (for example in the same data flow).

[0067] In certain embodiments, the application and / or its description may be received from another device (via communication means); for example downloaded from an application server (for example by an operator, via a web interface), or loaded from an internal or external storage medium (such as an external hard drive or a USB key for example). After obtaining, the application and / or its description received may for example be loaded to be stored there, on a storage medium (such as a non-transitory medium such as a hard drive) of the platform.

[0068] For example, an application provider or a provider of equipment to be controlled may provide an application (for example, an application for controlling this equipment), in the form of binary code or a text file (such as a script), and a description of the application. This description may, for example, specify whether the application has input and / or output parameters, and if so, the number, type, order, and / or possible default value of these parameters. It may, for example, be an exhaustive and ordered list (according to the order of the parameters when the application is invoked), indicating the type of each of the input and / or output parameters.

[0069] According to the embodiments, the description can be transmitted in various forms, such as a paper or electronic document, transmitted via a storage medium, or downloaded, together with the application or separately.

[0070] The format of the electronic document may differ depending on the embodiments. In the case of an electronic document, it may be a document in "pdf" format, or based on the "HTML" (for "HyperText Markup Language" in English) format, or a descriptive file that can be automatically interpreted. For example, it may use a format specific to the application provider or the equipment to be controlled or use a standard data serialization format, such as the format known as YAML, or a format using a markup language, such as HTML.

[0071] Obtaining 314 of the description may for example implement a transcription of at least part of a paper or electronic document (such as a document in “pdf” format) in an automatically interpretable format. This transcription may for example be carried out manually by an operator via a human-machine interface (such as a web interface) of the device 200 or automatically, for example via automatic document analysis techniques such as automatic character recognition techniques, syntactic and / or semantic analysis, etc.

[0072] As illustrated in [Fig.3], the method may comprise in certain embodiments, obtaining 320 a description of the data likely to be conveyed to devices of the system 100 (such as sensors, cameras etc., or other active executables of the system 100) (and therefore likely to feed, via an active executable, the application obtained 310) and vice versa data likely to be expected by devices of the system 100.

[0073] In the example of [Fig. 3], the devices of the system 100 use one or more channels of a data bus to exchange information asynchronously using, for example, a messaging protocol using a mechanism for subscribing (or subscribing) to events and / or publishing events.

[0074] According to the embodiments, the messaging protocol can be diverse, it can for example be a messaging protocol based on a standard communication protocol such as TCP / IP (from the English Transmission Control Protocol (TCP) and Internet Protocol (IP), such as MQTT (for Message Queuing Telemetry Transport).

[0075] A description of the data circulating on the data bus can for example be obtained from a data bus management entity.

[0076] For example, certain embodiments may use a “Broker” type entity in the case of an MQTT bus and / or a dynamic analysis 322 of the data actually made available on the bus.

[0077] For example, in the case of an MQTT bus, a subscription to the '#' channel allows data flowing on all active channels to be received. Each data message can then indicate, for example, the channel used.

[0078] In some embodiments, a declarative system may also be implemented to allow a data source (e.g., a sensor) to signal that it is active and using a specific channel.

[0079] Thus, a dedicated channel can for example be used to generate (and / or broadcast) a directory of available channels. Each source can for example emit a signal on this channel (for example in a well-defined format). The executables (subscribed to this channel) can then be notified of the channel used by the source and register (or not) in the recipients of the source channel.

[0080] A dynamic analysis of the channels can for example use a type detection tool (such as the “Java Data Type” type detector), in order to dynamically obtain the data type of at least one channel of the bus (for example automatically when using the method of the present application, before or during the execution of the active executable. In the case of the Java Data Type tool, the dynamic analysis of data circulating on a data channel can make it possible for example to find a primitive, low-level Java type, such as the “boolean” type, the “character” type, the “integer” type, the “floating number” type, or the “double” type. Of course, the formats identified during the dynamic analysis can vary depending on the embodiments (for example depending on the type detection tool used).

[0081] The description of the data likely to circulate on the data bus may in particular comprise an identifier of at least one device and / or process that is the source of such data (such as elements 442, 444 of [Fig. 4]) and / or of a device and / or process that is a consumer of such data (such as element 446 of [Fig. 4]), and / or at least one format of this data. It may also comprise, in certain embodiments, a probable and / or requested frequency of making such data available, a probable, minimum or maximum size of this data, etc.

[0082] In the example of [Fig.3], the method may comprise a mapping 330 between at least one portion of the description of the application, relating to the input and / or output parameters of the application, and the data likely to circulate on the data bus.

[0083] For example, when a type (primitive for example) of data circulating on the bus is identical to a type (primitive for example) of an input or output parameter of the application, the circulation channel will be considered as a possible channel for making data available (by or for an executable invoking the application) and stored in association 334 with the input or output parameter of the application concerned.

[0084] When a type of data likely to circulate on at least one of the channels of the bus is different from a type of an input or output parameter of the application, the method can comprise a reading 332 of a conversion table associating with the at least one pair consisting of a first and a second data type (primitives for example) with at least one conversion method to be used to convert data of this first type into data of this second type.

[0085] The conversion table (such as element 430 of [Fig.4]) may be stored for example on the device 200 or in a storage device such as the device 150 of the system 100).

[0086] Reading 332 of the conversion table can make it possible to identify a conversion method to be used to convert at least one piece of data circulating on at least one of the channels of the bus into at least one input parameter of the application, or to convert at least one output parameter of the application into data suitable for circulating on at least one of the channels of the bus.

[0087] If reading the conversion table makes it possible to identify a conversion method between a data channel and an input or output parameter of the application, the circulation channel will be considered as a possible channel for making data available (by or for an executable invoking the application), by means of the use of the conversion method. This data channel will then be stored in association with the input and / or output parameter of the application concerned, and the conversion method (or a link to this method) to be used.

[0088] The matching thus results, in the illustrated example, in a possible association 334, with an input or output data item, of at least one data provision channel, as well as optionally at least one associated conversion method.

[0089] When at least one input or output parameter is not associated with any channel, and, in the case of an input parameter, has no default value, the method may comprise generating an alert message and sending it to another remote device and / or rendering it to a human-machine interface of the device 200. Indeed, it may be necessary to manually assign a default value to an input parameter and / or to modify or add a channel and / or a data source to the system 100 to enable the provision of data of a corresponding type (possibly via a conversion) to the input parameter.

[0090] Note that an output parameter that is not associated with any channel can simply be ignored by the executable invoking the passive application.

[0091] In some embodiments, the method may include selecting, from among the channels associated with an input or output parameter of the application, at least one data channel to be used during an invocation of the passive application. In some embodiments, this selection may be automatic.

[0092] For example, the selection of at least one data channel may be automatic in cases where only one channel is associated with an input and / or output parameter of the application, or when the selection is based on the application of previously configured rules. For example, a rule may indicate that the data from all channels associated with an input parameter should be used as an input parameter to the application (the executable then monitoring all of these channels), or that an output parameter should be made available (emitted for example) on all channels associated with this output parameter.

[0093] In certain embodiments, the method may comprise a rendering 336 of the channels associated with a parameter of the application, as well as for example characteristics of these channels (such as an identifier of at least one source or consumer device of the data circulating on a channel), so as to allow an operator to make a choice from among the channel(s) associated with the parameter concerned and / or to confirm the (automatic) selection of one or more channels.

[0094] In such an embodiment, the method may comprise an acquisition 338 of a designation of at least one of the channels associated with the parameter. The designation may for example comprise at least one identifier of at least one data channel to be selected (or alternatively not to be used) and / or at least one identifier of at least one data source or consumer device using a data channel to be selected (or alternatively not to be used).

[0095] In the example of [Fig.3], the method may comprise an automatic creation 340 of an active executable 410 responsible for invoking the passive application using the data made available via the channels selected during the matching 330. [Fig.4] illustrates an example of the software architecture of such an executable 410 and its environment.

[0096] Such an executable 410 may comprise: - a software element providing a functionality for subscribing (or subscribing) and / or unsubscribing to at least a first channel 422, 424 of a data bus 420 (for example the channels associated with an input parameter of the application selected during the matching 330) or alternatively, more specifically, to the provision of data, via this first channel 422, 424, coming from at least a first source 442, 444 of data; - a software element responsible for permanently listening on the first channel 422, 424, and obtaining the data circulating on this first channel 422, 424 or, alternatively, the data coming from the first source 442, 444; of data using this first channel) - a software element offering a possible conversion of at least one piece of data (“raw” for example) made available on the first channel, into at least one piece of data of a known type (“primitive data”) and / or a possible conversion of at least one primitive data item into at least one data item in a format adapted to the input parameter 414 associated with the first channel 422, 424, using for example a conversion method associated with this input parameter 414 and this first channel 422, 424 during the matching 330; - a software element adapted to an invocation of the “passive” application 412 with as input parameter(s) 414 at least one piece of data obtained via listening on the first channel 422, 424 (and possibly converted) (or data depending on the data obtained) - a software element offering a possible conversion of at least one output parameter(s) 416 of the invoked application 412, using the conversion method associated with this output parameter 416 during the matching 330 and - a software element adapted to provide the output parameter 416 (or data depending on this parameter) on a second channel 426 associated with this output parameter 416 and selected during the matching 330 and possibly converted

[0097] Depending on the embodiments, the executable may include various other software elements. For example, in some embodiments, it may include a module for generating traces of the invocation of the passive application (i.e., alerts reporting this invocation) to a device of an operator.

[0098] These software elements may be implemented in separate or common software modules. For example, in some embodiments, at least some of these software elements may be implemented by a common software module subsequently called Publish / subscrib Proxy. The code of at least some of these software elements and / or module(s) may be identical regardless of the passive application of the system 100, the instantiation of the software element(s) and / or module(s) being done for example by using the description obtained 310 of the application, the description obtained 320 of the data circulated on the bus and / or the associations stored during the matching 330 of the method of the present application.

[0099] The active (or autonomous) executable can for example be created 342 automatically, from the passive application and (for example) the software module(s) above, via executable generation tools; such as tools using encapsulation techniques such as Docker © technology. Thus, in the example of [Fig.4], the active executable can be obtained via the “Docker Image” © program. Such a program can help for example to obtain an executable in a few seconds.

[0100] In the example of [Fig.3], the method may comprise a storage of the created active executable. This storage may for example comprise an addition 344 in an executable library, accessible to an operator, to allow a subsequent deployment 360 of this executable on the device 200 (or another device of the system 100). This addition may be optional in certain embodiments.

[0101] As illustrated in [Fig.3], the method may comprise a rendering 350 of information representative of the active executables available to an operator (via a library such as mentioned above for example). For example, the information representative of an active executable may include information relating to the system 100 (such as the devices present in the system, their memory and / or processing capacities, their connections (USB, serial, bus), etc.), information relating to the active executable itself (such as an identifier of the active executable and / or its memory size), information relating to the passive application from which this active executable was generated (for example information present in the description of the passive application, such as an identifier of the application, a label (explanatory for example) associated with the application,a format and / or a minimum or maximum size of at least one input or output parameter of the application), information relating to at least one device or process, source and / or consumer of data made available on a channel selected for the application (for example information present in the description of the channels of the data bus, such as an identifier and / or a label of this device or process, source and / or consumer of data, a format and / or a minimum or maximum size of at least one data item made available by / for this device on the bus, etc. An operator can thus have the possibility, for example, to check the configuration of the active executable.

[0102] Information relating to the current state of the bus, to the devices and / or processes, source and / or consumer of data, present at the current time on the bus and / or to the other executables currently running on the platform and to the devices or processes, source and / or consumer of data for these other executables can also be rendered.

[0103] Rendering may be optional in some embodiments.

[0104] In some embodiments, the method may comprise a possible update 352 of the active executable. Such an update 352 may take, for example, the form of a replacement of a previous version of an active process by a later version (generated as already disclosed by the method of the present application). In some embodiments, the active executable may, for example, receive via a specific channel of the data bus a command to unsubscribe from at least one selected channel (or alternatively a command to unsubscribe from a source of data using this channel) and a new subscription command to a new channel (or alternatively a new subscription command to a data source using this channel). The execution of such a command may for example include an automatic validation of the command, using the conversion table introduced previously.

[0105] Such an update may occur, for example, when the data from a newly present data source in the system (a sensor, for example) is more relevant than the data from a data source already present in the system.

[0106] Such an update possibility may be optional in some embodiments.

[0107] In the example illustrated in [Fig.3], the method may comprise a 360 deployment of the created active executable. This 360 deployment comprises a 362 launch of the active executable (on the platform providing access to several executables introduced above for example). Thus, in the example illustrated in [Fig.4], where the active executable is created in the form of a “Docker” © type execution environment, during the deployment of the docker, the main program (i.e. the active executable) of the docker is launched. In certain embodiments, where the matching is performed before creation of the active executable, the latter automatically subscribes to the selected channels corresponding to the input parameter(s) of the passive application.When receiving at least one piece of data via at least one of these channels, the executable possibly converts it and then invokes the "passive" executable as explained above, if it has obtained all the input parameters (or at least those without a default value) of the application. If a first piece of data corresponding to a first input parameter is received while no data is yet available for a second input parameter, the first piece of data can be stored temporarily (at least until the expiration of a first duration (time out according to English terminology) until data corresponding to the other input parameters of the application is received. The invocation of the application can therefore be carried out asynchronously with respect to the provision of data on a channel.

[0108] In some embodiments, the matching may be performed manually, for example after the active executable is launched. In such embodiments, the matching may be performed multiple times (for example when a new data channel, or a new data source appears interesting to an operator, or when a new data consumer, who may be interested in the result of the execution of the passive application, is newly present in the system). In such embodiments, which may induce a modification of subscriptions to the data bus channels, the software module may include an unsubscription of certain channels.

[0109] Such embodiments may allow, for example, modifying the data sources used as input parameters of the passive application, such as modifying the use of the execution results of the application, without stopping the execution of the active executable.

[0110] The method which is the subject of the present application has been detailed above.

[0111] Such a method, in at least some of its embodiments; can for example help an operator to build and launch (for example in a simple manner) active, or autonomous, executables, using automated procedures, and possibly to easily combine these executables (for example via action chaining functionalities offered by a human-machine interface of the platform), for example via chaining functionalities known as “low code” (such as for example the “NodeRed” tool).

[0112] An example of use of the method of the present application is presented in connection with [Fig.5]: In this example, it is assumed that the system 100 comprises an industrial machine such as a conveyor M1 512, M2 514, installed in an industrial zone ZI 510.

[0113] The method is implemented: - on the one hand to obtain a first automatic PI procedure carrying out a visual check of the quality of the parts produced by the industrial machine, with stopping of the conveyor and generation of a message (email, sms) in the event of a defect, - and on the other hand to obtain a second automatic P2 procedure limiting access to a ZI 510 zone in which the control is carried out by the PI procedure because this can present a danger for operators due to the stopping and restarting of the conveyor.

[0114] The automation of the PI procedure requires, for example, the deployment of an active executable (here a Docker Image). It creates, according to the method of the present application, from an AI1 application of a provider F1, specialized in computer vision.

[0115] For example, the passive application A1 can be an application implementing artificial intelligence (AI) techniques to detect cracks in an object, and having: - an input parameter in Base64, JPEG (for "Joint Photographic Expert Group"), PNG (for "Portable Network Graphics"), SVG (for "Scalable Vector Graphics"), or WebP (for "Web Picture") format, allowing the application to acquire a photo of the object; - an output parameter in the form of a boolean, or JSON representative of the detection or not of a crack and / or possibly of the location on the image of the crack.

[0116] In a supervision zone 530, a data collector 532 from sensors collects 522 in real time the data from the sensors. Thus, at each detection the camera C1 transmits its data (here images) to the collector 532 which distributes them via the data bus 538 (for example on specific channels) to the executables II 534 and I2 536.

[0117] The active executable II subscribes for example to a data channel SI carrying data in base 64 format (corresponding for example to images published by a camera Cl 512 located near the conveyor).

[0118] The active executable II thus receives the images from the camera Cl and uses them to invoke the application IA1 which analyzes these images.

[0119] The images can for example be conveyed in a binary format via one of the channels or be conveyed in Base64 format.

[0120] The executable II publishes, at each analysis of an image by the application IA1, the result (boolean) of this analysis in a second channel S2.

[0121] In this example, a “lowcode” executable LC1 can also be created to use the results provided via the S2 channel by the executable II. For example, the executable LC1 can subscribe to the S2 channel and each time data (“True” for example) indicating a fault is received via this channel, it sends an alert email or SMS to a contact whose contact details are accessible to the executable LC1.

[0122] Furthermore, the automation of the P2 procedure requires, for example, the deployment of an active executable (here also a Docker Image) 12 created, according to the method of the present application, from an IA2 application from a supplier F2, specialized in crossing detection.

[0123] The active executable 12 subscribes for example to the same data channel SI as the active executable II (carrying base 64 format data corresponding for example to images published by the same camera CL

[0124] The active executable 12 536 thus receives the images from the camera C1 and uses them to invoke the application IA2 which analyzes these images to detect a crossing of a zone delimiter (here Zl). The executable 12 publishes each time an image is analyzed by the application IA2 the (boolean) result of this analysis in a third channel S3. A “low code” type executable (for example the executable LC1 or another executable) subscribes to the channel S3 and each time a piece of data (“True” for example) indicating a crossing of the zone delimiter Zl is received via this channel S3, it sends an alert email or SMS to a contact whose contact details are accessible to the executable LC1. The executable IA2 publishes a piece of data (for example a Boolean data whose value corresponds to a stop command for example) in the channel of the controllers of the machines Ml and M2 which in turn detect this data and interpret this value and stop 524 the conveyors Ml and M2 (for example digital twins of the machines Ml and M2).

[0125] The example above shows the application of the method of the present application to obtain, at least partially automatically, and more easily than certain solutions of the prior art, complex control procedures, specific to the needs of a system and / or its users.

[0126] Examples of implementation have been tested by the inventors, for example: - a machine having at least 2 CPUs, 2 GB of RAM, - a latency of less than 10 ms, - a number of active executables of around ten; - USB connectors; - Ethernet connectivity capabilities; - customer industrial machines with PLC connectable via Ethernet or wirelessly; - sensors connectable via Ethernet or wirelessly; - applications involving Artificial Intelligence techniques and / or services from market suppliers.

[0127] At least some embodiments of the method of the present application can help a company / operator (or user) to limit the cost and / or impact of automating operations relating to its activity, while helping to maintain a level of performance of these operations.

[0128] At least certain embodiments of the method of the present application can, for example, help a manufacturer to limit the costs of installing or using hardware (such as sensors or servers) in connection with an application (for example, by using hardware already operational in connection with other applications).

[0129] At least some embodiments of the method of the present application may, for example, help an industrialist to limit the material density in a physical environment such as an industrial site.

[0130] At least certain embodiments of the method of the present application can, for example, help a manufacturer to limit the heterogeneity of its software and / or hardware fleet and / or to simplify the methods of monitoring, developing and / or maintaining this fleet.

[0131] At least some embodiments of the method of the present application can, for example, help an industrialist to limit access conflicts to machine controllers, the impact of which can be disastrous.

[0132] At least some embodiments of the method of the present application may for example help to obtain, in at least a relatively simple manner, end-to-end analyses of certain production chains.

[0133] The present application can be applied to various “passive” software applications and in particular applications linked to any type of equipment (such as “loT” (for “Internet of Things” according to English terminology) or industrial, fixed or mobile, etc.)

[0134] For example, the method of the present application can be implemented in industrial sites having a fleet of machines equipped with PLCs, to help automate complex procedures. Thus, it can for example create active executables from “passive” applications from various suppliers, for example suppliers specialized in the following problems:

[0135] Area security control with automated shutdown and notification of alerts to authorized personnel;

[0136] Quality control of machined parts at the exit of machining machines with isolation of defective parts (for example in different zones depending on their level and / or type of defect);

[0137] Application of automatic calibration after fault detection;

[0138] Preventive failure detection via vibration sensors and applications implementing associated Artificial Intelligence techniques

[0139] Data collection and generation of statistics and metrics

[0140] On-the-fly modifications to production procedures and measurement of the impacts of different versions of procedures.

Claims

Claims

1. A method for at least partially automatic deployment of a passive software application in a communication network, said method comprising: - Obtaining the binary code of said passive application and a designation of the type(s) of data consumed and / or produced by said application; - An at least partially automatic selection of at least one access to data from at least one data source of said network and / or to at least one data consumer of said network, said selection taking into account said at least one designated type and at least one type of data expected via said access;said method being characterized in that it comprises: - An automatic creation of an active executable of which at least one software process comprises an invocation of the binary code of said passive application with as input parameter(s) at least one piece of data obtained via said access and / or with as output parameter(s) at least one piece of data to be emitted via said access.;

2. The method of claim 1 wherein said method comprises adding said created active executable to a library of active executables of said communication network.

3. A method according to any one of claims 1 to 2 wherein said method comprises launching said active executable.

4. Method according to any one of claims 1 to 3 where said designation is obtained by accessing a file describing the data consumed and / or produced by said application.

5. A method according to any one of claims 1 to 4 wherein said access is an access to a database.

6. A method according to any one of claims 1 to 5 wherein said at least one type of data expected via said access is obtained by scanning said network.

7. A method according to any one of claims 1 to 4 or 6 wherein said access is a channel of a data bus of said network.

8. A method according to claim 7 wherein said data obtained via said channel is obtained by subscribing said software process to said data channel to receive data from said at least one data source.

9. A method according to one of claims 7 or 8 wherein said software process comprises a transmission of said data to be transmitted on said channel.

10. Electronic device comprising at least one processor configured for at least partially automatic deployment of a passive software application in a communication network, said at least one processor being configured for: - Obtaining the binary code of said passive application and a designation of the type(s) of data consumed and / or produced by said application; - At least partially automatic selection of at least one access to data from at least one data source of said network and / or to at least one data consumer of said network, said selection taking into account said at least one designated type and at least one type of data expected via said access;the device being characterized in that said at least one processor is configured for: - Automatic creation of an active executable of which at least one software process comprises an invocation of the binary code of said passive application with as input parameter(s) at least one data item obtained via said access and / or with as output parameter(s) at least one data item to be emitted via said access.;

11. System comprising at least one electronic device comprising at least one processor configured for at least partially automatic deployment of a passive software application in a communication network, said at least one processor being configured for: - Obtaining the binary code of said passive application and a designation of the type(s) of data consumed and / or produced by said application;

12. - An at least partially automatic selection of at least one access to data from at least one data source of said network and / or to at least one data consumer of said network, said selection taking into account said at least one designated type and at least one type of data expected via said access; said system being characterized in that said at least one processor is configured to: - An automatic creation of an active executable of which at least one software process comprises an invocation of the binary code of said passive application with at least one piece of data obtained via said access as input parameter(s) and / or with at least one piece of data to be emitted via said access as output parameter(s). Computer program comprising instructions for implementing, when said computer program is executed by a processor of an electronic device, a method for at least partially automatic deployment of a passive software application in a communications network, said method comprising: - Obtaining the binary code of said passive application and a designation of the type(s) of data consumed and / or produced by said application; - An at least partially automatic selection of at least one access to data from at least one data source of said network and / or to at least one data consumer of said network, said selection taking into account said at least one designated type and at least one type of data expected via said access; said computer program being characterized in that said method comprises: - An automatic creation of an active executable of which at least one software process includes an invocation of the binary code of said passive application with as input parameter(s) at least one data item obtained via

13. said access and / or with at least one piece of data to be emitted via said access as output parameter(s). Recording medium readable by a processor of an electronic device and on which is recorded a computer program comprising instructions for the implementation, when the program is executed by the processor, of a method for at least partially automatic deployment of a passive software application in a communication network, said method comprising: - Obtaining the binary code of said passive application and a designation of the type(s) of data consumed and / or produced by said application; - An at least partially automatic selection of at least one access to data from at least one data source of said network and / or to at least one data consumer of said network, said selection taking into account said at least one designated type and at least one type of data expected via said access; said recording medium being characterized in that said method comprises: - An automatic creation of an active executable of which at least one software process comprises an invocation of the binary code of said passive application with at least one piece of data obtained via said access as input parameter(s) and / or with at least one piece of data to be emitted via said access as output parameter(s).