A software identification method and device

By determining the recognition process corresponding to the software's development language, and combining the language process relation library and database information, the problem of inaccurate recognition when the software changes is solved, and efficient and accurate extraction of software asset information is achieved.

CN122195499APending Publication Date: 2026-06-12HUAWEI CLOUD COMPUTING TECHNOLOGIES CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
HUAWEI CLOUD COMPUTING TECHNOLOGIES CO LTD
Filing Date
2024-12-10
Publication Date
2026-06-12

AI Technical Summary

Technical Problem

Existing software identification programs cannot accurately identify software when it changes, affecting the accuracy of identification.

Method used

The recognition process corresponding to the software's development language is determined by computing devices. The language flow relation library and file feature matching are used, combined with database information, to extract the software's asset information.

Benefits of technology

While maintaining the same software development language, this method accurately identifies software asset information, improving both the accuracy and efficiency of the identification process.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN122195499A_ABST
    Figure CN122195499A_ABST
Patent Text Reader

Abstract

A software identification method and device are disclosed, and relate to the technical field of cloud computing. A computing device uses different identification processes to determine asset information of software developed in different development languages. The identification processes correspond to the development languages used by the software, but do not correspond to the software. In the case where the software changes but the development language used by the software remains unchanged, the software can still be accurately identified to determine the asset information of the software, thereby providing a guarantee for accurately obtaining the asset information of the software. Moreover, the identification processes correspond to the development languages used by the software, and the asset information of the software is determined by classification, thereby improving the accuracy and efficiency of obtaining the asset information of the software.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This application relates to the field of cloud computing technology, and in particular to a software identification method and apparatus. Background Technology

[0002] Software asset identification refers to the process of identifying and verifying various valuable software-related elements (such as name, version, and dependency information) involved in software development, deployment, and operation. Typically, software developers customize software identification programs based on how the software is used during runtime. These programs are used to identify the software and obtain its name, version, dependency information, etc. However, because these programs are customized for each software, they may fail to accurately identify the software when changes occur, affecting the accuracy of software asset identification. Summary of the Invention

[0003] This application provides a software identification method and apparatus to solve the technical problem that customized software identification programs cannot accurately identify software when software changes, thus affecting the accuracy of software identification.

[0004] Firstly, this application provides a software identification method. This method can be executed by a computing device, a computing device cluster comprising multiple computing devices, or a component of the computing device, such as its processor, chip, or chip system. It can also be implemented by a logic module or software capable of performing all or part of the functions of the computing device. Taking the execution of this software identification method by a computing device as an example, the software identification method provided in the first aspect includes: the computing device reading a software file, the file including program code or instructions for performing tasks of the software; the computing device determining the development language used in the file; the computing device determining the identification process corresponding to the development language; and the computing device determining the software's asset information based on the identification process. The asset information includes one or more of the following: software name, version number, and dependency information. The dependency information is used to indicate information supporting the normal operation of the software.

[0005] In the first aspect of this application, the computing device uses different identification processes to determine the asset information of software using different programming languages. The identification process corresponds to the programming language used by the software, but not to the software itself. This ensures accurate identification of the software and determination of its asset information even when the software changes but the programming language remains the same, thus guaranteeing accurate acquisition of software asset information. Furthermore, the correspondence between the identification process and the programming language used by the software, and the categorization and determination of software asset information, improves the accuracy and efficiency of acquiring software asset information.

[0006] In one possible implementation, the computing device determines the recognition process corresponding to the development language by: the computing device determining the recognition process corresponding to the development language based on a language process relation library. The language process relation library includes: a correspondence between at least one software development language and at least one recognition process. The at least one software development language includes the development language itself. Thus, the computing device determines the recognition process based on the language process relation library containing the correspondence between software development languages ​​and recognition processes. This method of determining the recognition process is simple and low in complexity, providing a guarantee for the rapid and accurate identification of software asset information.

[0007] In another possible implementation, the computing device determines the software's asset information based on an identification process, including: the computing device determining the file storing the asset information based on the identification process; and the computing device extracting first information from the file storing the asset information. The first information includes one or more of the following: software name, version number, and dependencies. If the first information includes specified information, the computing device determines that the first information is the software's asset information. In this way, the computing device first determines the file storing the asset information and directly extracts the first information from that file, without needing to read other files, thus shortening the time required to obtain software-related information such as software name, version number, and dependencies, and improving the efficiency of determining the software's asset information.

[0008] In another possible implementation, the computing device determines the file storing asset information based on an identification process, including: the computing device determining the software package corresponding to the software based on the identification process. The software package includes files associated with the software. The computing device determines the file storing asset information based on the software package. Thus, the computing device first determines the software package storing asset information based on the identification process, and then determines the file storing asset information based on the software package. This classification and identification shortens the time required to obtain the file storing asset information and improves the efficiency of determining the asset information of the software.

[0009] In another possible implementation, the method further includes: if the first information includes a first portion of the specified information, the computing device retrieves second information from a database. The database stores the software name, version number, dependency information, installation location, and permission information of the software. The installation location indicates the installation path of the software on the computing node. The permission information indicates the operation permissions of the software supported by the computing node on the computing node. The second information includes a second portion of the specified information. The computing device then determines the software's asset information based on the first and second information. Thus, the computing device extracts the software's asset information from the database, ensuring the acquisition of complete asset information.

[0010] In another possible implementation, the method further includes: if the computing device fails to determine the development language used by the file, then determining the development language based on the matching relationship between file features and development languages. The matching relationship includes multiple development languages ​​and the file features corresponding to each of these languages. The file features indicate the usage rules of the development language. In this way, the computing device determines the development language used by the file based on the matching relationship, providing a guarantee for subsequent identification of software asset information using the corresponding development language.

[0011] In another possible implementation, the method further includes: if determining the development language of the file based on the matching relationship between file characteristics and development language fails, the computing device retrieves the software's asset information from the database. This ensures the successful acquisition of the software's asset information.

[0012] In another possible implementation, the asset information also includes: installation location and / or permission information. The installation location indicates the installation path of the software on the compute node, and the permission information indicates the operational permissions of the software supported by the compute node. This extends the application scenarios of the software identification method provided in this application.

[0013] In another possible implementation, the software file is the compiled file corresponding to the software's source file. The software source file is the file that stores the software's source code. Thus, even when the software source code is unavailable, the software identification method provided in this application can still be used to obtain the software's asset information, expanding its application scenarios.

[0014] Secondly, this application provides a software identification apparatus. The apparatus includes modules for performing the software identification method described in the first aspect or any possible design of the first aspect.

[0015] Thirdly, this application provides a processor. The processor includes an interface circuit and a control circuit, wherein the interface circuit is used to read software files and cooperate with the control circuit to implement the operation steps of the method in the first aspect or any possible design in the first aspect.

[0016] Fourthly, this application provides a computing device cluster. The computing device cluster includes at least one computing device, each computing device including a processor and a memory. The processor of the at least one computing device is configured to execute instructions stored in the at least one memory, causing the computing device cluster to perform operational steps of the software identification method in the first aspect or any possible design of the first aspect.

[0017] Fifthly, this application provides a computer-readable storage medium, comprising: computer software instructions; which, when executed in a computing device, cause the computing device to perform operational steps of the method as described in the first aspect or any possible implementation thereof.

[0018] Sixthly, this application provides a computer program product. When the computer program product is run on a computer, it causes a computing device to perform the operational steps of the method as described in the first aspect or any possible implementation thereof.

[0019] The beneficial effects of aspects two through six above can be described with reference to the first aspect or any implementation thereof, and will not be repeated here. Based on the implementations provided in the above aspects, this application can be further combined to provide more implementations. Attached Figure Description

[0020] Figure 1 A schematic diagram of the architecture of a software recognition system provided in this application;

[0021] Figure 2 This application provides a schematic diagram of the structure of a chip;

[0022] Figure 3 A flowchart illustrating the first software identification method provided in this application;

[0023] Figure 4 Example diagram of the first identification process provided in this application;

[0024] Figure 5 Example diagram of the second identification process provided in this application;

[0025] Figure 6 A flowchart illustrating a software recognition method provided in this application;

[0026] Figure 7 A schematic diagram of the structure of a software identification device provided in this application;

[0027] Figure 8 A schematic diagram of the structure of a computing device provided in this application;

[0028] Figure 9 This application provides a schematic diagram of the structure of a computing device cluster;

[0029] Figure 10 This is a schematic diagram of the connection between computing devices provided in this application. Detailed Implementation

[0030] This application provides a software identification method in which a computing device uses different identification processes to determine the asset information of software developed in different languages. The identification process corresponds to the development language used by the software, but not to the software itself. This ensures accurate identification of the software and determination of its asset information even when the software changes but the development language remains the same, thus guaranteeing accurate acquisition of software asset information. Furthermore, the correspondence between the identification process and the development language used by the software, and the categorization and determination of software asset information, improves the accuracy and efficiency of acquiring software asset information.

[0031] To ensure clarity and brevity in the description of the following embodiments, some concepts that may be involved in this application will be briefly introduced first.

[0032] (1) Software development languages.

[0033] A software development language is a type of computer programming language. It is used to write computer programs to accomplish specific functions or tasks. Software development languages ​​include, but are not limited to: assembly language, combined programming language (C), object-oriented programming language Java, high-level programming language Python, open-source programming language Go, open-source server-side scripting application (Hypertext Preprocessor, PHP), dynamic programming language JavaScript, object-oriented scripting languages ​​Ruby, C++, and C#. In some cases, a software development language may also be referred to as: development language, software programming language, programming language, computer language, etc.

[0034] (2) Computer program.

[0035] A computer program is a sequence of instructions that a computer can recognize and execute to accomplish a specific task or achieve a specific function.

[0036] Based on the brief introduction of the relevant concepts above, the following is a brief introduction to the relevant technologies.

[0037] Typically, software developers create custom software identification programs for their software, which are then used to identify the software and obtain its asset information. However, if the software undergoes changes, the custom software identification program may fail to recognize the altered software, affecting the accuracy of the identification process.

[0038] Based on this, this application provides a software identification method. The software identification method provided in this application can be applied to a software identification system. Figure 1 A schematic diagram of the architecture of a software recognition system provided in this application is shown below. Figure 1As shown, the software identification system 100 includes a computing device 110. The computing device 110 can be a common computer device, such as a personal computer, tablet computer, server with external display device, etc. The computing device 110 can acquire input data (such as reading software files), process the input data (such as determining the software's asset information based on the identification process corresponding to the file-based development language), and obtain and output the results (such as the software's asset information).

[0039] The computing device 110 includes a communication interface 114, a processor 111, a memory 112, and a bus 116. The communication interface 114 is used to communicate with devices located outside the computing device 110. For example, a user inputs software files to the computing device 110 through the communication interface 114 to obtain software asset information. This communication interface can be an input / output (I / O) interface.

[0040] Processor 111 is the core of computing device 110 for both computation and control. It may include: a central processing unit (CPU), a specific integrated circuit, other general-purpose processors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), or other programmable logic devices, discrete gate or transistor logic devices, discrete hardware components, etc. In practical applications, computing device 110 may also include multiple processors. Processor 111 may include one or more processor cores. An operating system and other software programs are installed in processor 111, enabling it to access memory 112 and various peripheral component interconnect (PCIe) devices.

[0041] The processor 111 is connected to the memory 112 via bus 116. Memory 112 is the main memory of computing device 110. Bus 116 can be a double data rate (DDR) bus or other types of bus. Memory 112 is typically used to store various running software in the operating system. To improve the access speed of the processor 111, memory 112 needs to have the advantage of high access speed. In traditional computer devices, dynamic random access memory (DRAM) is usually used as memory 112. In addition to DRAM, memory 112 can also be other random access memory, such as static random access memory (SRAM). Alternatively, memory 112 can also be read-only memory (ROM). For example, read-only memory can be programmable read-only memory (PROM) or erasable programmable read-only memory (EPROM). This embodiment does not limit the number or type of memory 112.

[0042] In some possible scenarios, the computing device 110 may also include a display 118. The display 118 may display a configuration interface and, in response to user operations on the configuration interface, retrieve language flow relational libraries, etc. The display 118 may also display an asset information interface, which includes software asset information. The display 118 may be a liquid crystal display (LCD), etc.

[0043] In some possible scenarios, in order to persistently store data (such as software asset information), the software identification system 100 also includes a data storage system 113, which may be located outside the computing device 110 (e.g., Figure 1 As shown, the data storage system 113 exchanges data with the computing device 110 via a network. Optionally, the data storage system 113 can also be located inside the host, such as the data storage system 113 exchanging data with the processor 111 via the bus 116. In this case, the data storage system 113 manifests as a hard disk.

[0044] In some possible scenarios, the software identification system 100 may also include a client device 120. In this case, the computing device 110 can read software files from the client device 120. The client device 120 may be a device with data storage capabilities, including but not limited to: USB flash drive, personal computer, server, mobile phone, tablet computer, or smart car, etc.

[0045] For example, Figure 1 The processor 111 in the middle can be implemented through a chip, such as Figure 2 As shown, Figure 2 This is a schematic diagram of the structure of a chip provided in this application. For example, the chip 200 includes a core 201, a CPU 202, a system buffer 203, an input / output (I / O) device 205, and a DDR 206.

[0046] The CPU 202 is used to accept tasks (such as compression tasks, decompression tasks, software identification tasks, etc.) and call core 201 to execute the task. When chip 200 has multiple cores 201, the CPU 202 is also used for scheduling tasks. For example, the CPU 202 can be implemented by an ARM processor, which is small in size, low in power consumption, uses a 34-bit reduced instruction set, and has simple and flexible addressing. Of course, in some implementations, the CPU 202 can also be implemented by other processors.

[0047] Core 201 provides the computational power required for software identification tasks. In one optional configuration, core 201 includes a load / store unit (LSU), a cube computing unit, a scalar computing unit, a vector computing unit, and buffers. The LSU loads data to be processed and stores processed data. It also manages read / write operations between different buffers within the core and performs format conversions. The cube computing unit provides the core computational power for matrix multiplication. The scalar computing unit is a single-instruction single-data (SISD) processor, processing only one data item (typically an integer or floating-point number) at a time. The vector computing unit, also known as an array processor, allows direct manipulation of arrays or vectors for computation. Buffers may be one or more, primarily referring to a level 1 buffer (L1 buffer). These buffers temporarily store data that core 201 uses repeatedly, reducing bus read / write operations. Additionally, certain data format conversion functions require the source data to reside in the buffer. In this embodiment, since the buffer is located in the core, the distance between the cube computing unit in the core and the storage area where the data is located is reduced, the cube computing unit accesses DDR 206, thereby reducing the data access latency and the core data processing latency.

[0048] System buffer 203 mainly refers to the secondary cache, which is used to temporarily store input data, intermediate results or final results that have passed through the chip.

[0049] DDR 206 is an off-chip memory that can be replaced by high-bandwidth memory (HBM) or other off-chip memory. Located between the chip and external memory, DDR 206 overcomes the access speed limitations of shared memory read / write operations in computing resource sharing.

[0050] The I / O devices 205 included in chip 200 refer to the hardware that performs data transmission, or devices that interface with the I / O interface. Common I / O devices include network cards, printers, keyboards, and mice. All external storage devices can also be used as I / O devices, such as hard drives, floppy disks, and optical discs.

[0051] Core 201, CPU 202, system buffer 203, I / O devices 205, and DDR 206 are connected via a bus. The bus may include a pathway for transmitting information between the aforementioned components (such as CPU 202 and system buffer 203). In addition to a data bus, the bus may also include a power bus, control bus, and status signal bus. However, for clarity, the bus may be a PCIe bus, or an extended industry standard architecture (EISA) bus, a unified bus (Ubus or UB), a compute express link (CXL), a cache coherent interconnect for accelerators (CCIX), etc. For example, core 201 can access these I / O devices 205 via the PCIe bus. Core 201 is connected to system buffer 203 via the DDR bus. Here, different system buffers 203 may use different data buses to communicate with core 201; therefore, the DDR bus can also be replaced with other types of data buses. This embodiment does not limit the bus type.

[0052] For example, after the CPU 202 loads the data to be processed by the software identification task (such as software files) into DDR 206, the LSU in core 201 reads (loads) the data from DDR 206, processes the data, and obtains the processing result (such as software asset information). After obtaining the processing result, the LSU then loads (stores) the processing result into DDR 206, and sends it to the data storage system 113 for persistent storage via the network interface card.

[0053] It is understood that the structures illustrated in this embodiment do not constitute a specific limitation on the computing device or chip. In other embodiments, the computing device and chip may include more or fewer components than illustrated, or combine some components, or split some components, or have different component arrangements. The illustrated components may be implemented in hardware, software, or a combination of software and hardware.

[0054] The following is combined with Figure 1 and Figure 2 The content shown provides a detailed description of the software identification method provided in this application.

[0055] Figure 3This is a flowchart illustrating the first software identification method provided in this application. This software identification method can be executed by a computing device, a computing device cluster, a component of the computing device (such as a processor, chip, or chip system), or it can be implemented by a logic module or software. When the software identification method is executed by a computing device, the computing device can be… Figure 1 The computing device 110 and client device 120 are shown. For the hardware implementation of the computing device, please refer to the foregoing. Figure 1 The description of that will not be repeated here. When the software identification method is executed by a component of a computing device, that computing device component can be... Figure 2 The chip shown is an example. For details on the chip's hardware implementation, please refer to the preceding text. Figure 2 The description of the software identification method will not be repeated here. In some optional examples, the software identification method can also be executed by other computing devices; the hardware implementation of other computing devices can be found in the foregoing. Figure 1 and Figure 2 The description of that will not be repeated here.

[0056] This explanation uses the example of a computing device executing the software identification method provided in this embodiment. Figure 3 As shown, the software identification method provided in this embodiment includes the following steps S310 to S340.

[0057] S310, the computing device reads software files.

[0058] The files include program code or instructions used to perform tasks for the software.

[0059] In some possible cases, the software files are the compiled files corresponding to the software source files. The software source files are files that store the software's source code. The software files can be stored on a computing device or on other devices that are communicatively connected to the computing device; this application does not limit this.

[0060] S320, the development language used in the computing device's documentation.

[0061] Computing devices can determine the programming language of a file in various ways, including but not limited to: checking the file extension, analyzing the structure of the program code in the file used to perform the software tasks, viewing compiler / interpreter information, using decompilation tools, detecting external libraries or dependencies, and viewing documentation or metadata. The following examples a and b illustrate the process by which a computing device determines the programming language of a file.

[0062] Example a: The computing device determines the development language used by a file based on the matching relationship between file characteristics and development language.

[0063] The matching relationships include multiple programming languages ​​and file characteristics corresponding to each programming language. File characteristics indicate the usage rules of the programming languages. The matching relationships can be preset or set by the user according to the needs of the actual application; this application does not limit this. Depending on the needs of the actual application, the computing device can use various methods to store the matching relationships; this application does not limit this, such as using a feature library to store the matching relationships.

[0064] Computing devices can determine the development language of a file based on the matching relationship between file characteristics and development language, using various development language determination strategies. Examples of several development language determination strategies are given below.

[0065] For example, the development language determination strategy is as follows: if the difference between the number of file features of a file and the number of file features of the first development language is less than or equal to a difference threshold, the file is determined to use the first development language. For instance, file 1 of software 1 has file features 1 to m, and the file features corresponding to development language 1 include file features 1 to n, where 1 ≤ m ≤ n, and m and n are integers. The difference between n and m is i. The difference threshold is j. i ≥ 1, j ≥ 1, and i and j are integers. If i ≤ j, then the computing device determines that file 1 uses development language 1.

[0066] For example, the development language determination strategy is as follows: if the percentage of the number of file features in a file to the number of file features in the first development language is greater than or equal to a percentage threshold, the file is determined to use the first development language. For instance, file 1 of software 1 has file features 1 to m, and the file features corresponding to development language 1 include file features 1 to n, where 1 ≤ m ≤ n, and m and n are integers. The percentage between n and m is i. The percentage threshold is j. 0 ≥ i ≥ 1, 0 ≥ j ≥ 1. If i ≥ j, then the computing device determines that file 1 uses development language 1.

[0067] For example, the development language determination strategy is as follows: if a file has a first file characteristic, the file is determined to use a first development language. For example, if file 1 of software 1 has file characteristic 1, then the computing device determines that file 1 uses development language 1.

[0068] The above provides examples of several methods by which a computing device determines the programming language of a file based on the matching relationship between file characteristics and programming languages. Depending on the needs of the actual application, the computing device may also use other methods to determine the programming language of a file based on the matching relationship between file characteristics and programming languages; this application does not limit this method.

[0069] Example b: The computing device uses code analysis tools to determine the programming language used in the files.

[0070] In this scenario, the computing device can use code analysis tools to analyze the program code or instructions included in the file that are used to perform the tasks of the software, in order to determine the development language used by the software.

[0071] The above provides examples of two possible methods for a computing device to determine the development language used in a file. Depending on the needs of the actual application, the computing device may also use other methods to determine the development language used in a file, and this application does not limit this. For example, the computing device may combine the methods given in Example a and Example b to determine the development language used in a file. In this case, the computing device can use the method shown in Example b to determine the development language used in the file. If the computing device fails to determine the development language used in the file using the method shown in Example b, the computing device can use the method shown in Example a to determine the development language used in the file. The above describes the process of the computing device determining the development language used in a file, and after the computing device determines the development language used in the file, it can execute S330 and S340 to determine the software's asset information. In some possible cases, if the computing device fails to determine the development language used in the file, the computing device can determine the software's asset information based on a database, that is, the computing device extracts the software's asset information from the database. The software's asset information includes one or more of the following: software name, version number, dependency information, installation location, and permission information. Dependency information is used to indicate information that supports the normal operation of the software. The installation location is used to indicate the installation path of the software on the computing node. Permission information indicates the operational permissions that the software supported by the compute node has for the compute node. The database stores information such as the software name, version number, dependencies, installation location, and permission information of the software.

[0072] S330, the computing device determines the recognition process corresponding to the development language.

[0073] In this scenario, the computing device can determine the recognition process corresponding to the development language based on a language flow relation library. This language flow relation library includes the correspondence between at least one software development language and at least one recognition process. The at least one software development language includes the development language itself. This language flow relation library can be preset or set according to the needs of the actual application; this application does not limit its scope.

[0074] An identification process can refer to a scheme for obtaining software asset information. A scheme for obtaining software asset information may include one or more of the following: the steps to be performed to obtain software asset information, the file names and / or field names to be parsed, etc. Depending on the needs of the actual application, one software development language may correspond to one identification process (e.g., Java corresponds to one identification process), and multiple software development languages ​​may also correspond to one identification process (e.g., C and C++ correspond to the same identification process); this application does not limit this.

[0075] In some cases, the software may use different development languages, resulting in different storage files for storing software-related information. This software-related information includes, but is not limited to: code programs or instructions used to perform the software's tasks, dependency files that support the software's normal operation (such as third-party libraries), configuration information, and so on.

[0076] In some possible scenarios, the way to manage the storage files containing software-related information can differ depending on the software's development language. For example, if the software uses Java, PHP, C, or C++, a package manager can be used to manage the storage files containing software-related information. Table 1 shows an example of using a package manager to manage storage files.

[0077] Table 1. An example of how a package manager manages stored files.

[0078] Programming Language Package Manager Storage Files Java JAR, WAR, PAR, EAR, pom.xml pom.properties, MANIFEST.MF, pom.xml PHP Composer composer.json, composer.lock C / C++ Binaries Binaries

[0079] The preceding text explained the concept of the identification process and the methods for managing storage files. As discussed above, the storage files containing software-related information vary depending on the programming language used by the software. Therefore, different identification processes can be employed to extract software asset information from storage files for software using different programming languages.

[0080] Depending on whether a package manager is used and the type of package manager employed, computing devices can use different identification processes to determine software asset information. The following section uses Java, Python, PHP, and Go as examples to further explain the identification processes used by computing devices to determine software asset information.

[0081] Example 1 uses Java as the development language and employs a package manager to manage and store files in JAR, WAR, and pom.xml formats.

[0082] The identification process corresponding to the Java programming language is identified as the first identification process. In this case, the first identification process includes: the computing device extracting software asset information based on the package manager (JAR, WAR) and / or the package manager (pom.xml). Specifically, the computing device can obtain one or both of the following files: "MANIFEST.MF" and "pom.properties" from files with the suffixes ".Jar" and ".War" based on the package manager (JAR, WAR). The computing device can extract software asset information from one or both of "MANIFEST.MF" and "pom.properties". If the computing device can only extract a portion of the software asset information from "MANIFEST.MF" and / or "pom.properties", it can also extract other content of the software asset information from the database. This other content includes all the content of the software asset information except for the partial content. The database stores all the content of the software asset information. The computing device can also extract software asset information from the file directory and relativePath fields based on the package manager (pom.xml). Similarly, if the computing device can only extract a portion of the software's asset information using the above process, it can also extract other content of the software's asset information from the database. This other content refers to all the information included in the software's asset information except for the partially defined portion. For example, the asset information of software 1 includes: software name 1, version number 1, and dependency 1. The computing device extracts version number 1 and dependency 1 from "MANIFEST.MF" and "pom.properties" based on package managers (JAR and WAR), and extracts software name 1 based on package manager (pom.xml). The computing device then determines the asset information of software 1 based on software name 1, version number 1, and dependency 1.

[0083] Depending on the needs of the actual application, computing devices can use various methods to extract software asset information based on JAR, WAR, and pom.xml. Figure 4 Example diagrams of the first identification process provided in this application are shown below. Figure 4 Two possible methods for extracting software asset information from computing devices based on JAR, WAR, and pom.xml files are illustrated by example.

[0084] Example 1: The computing device extracts software asset information from "MANIFEST.MF", "pom.properties", and "pom.xml" in sequence, based on JAR, WAR, and pom.xml.

[0085] like Figure 4As shown in (a), the computing device extracts the software's asset information in the order of "MANIFEST.MF", "pom.properties", and "pom.xml". Specifically: The computing device obtains "MANIFEST.MF" based on the package manager JAR / WAR. If the computing device successfully obtains "MANIFEST.MF", it extracts the software's asset information from "MANIFEST.MF". If the computing device can only extract a portion of the software's asset information from "MANIFEST.MF", it extracts the remaining content of the software's asset information from the database. The remaining content refers to the content of the software's asset information excluding the partially extracted content. If the computing device fails to obtain "MANIFEST.MF", it obtains "pom.properties" based on the package manager JAR / WAR. If the computing device successfully obtains "pom.properties", it extracts the software's asset information from "pom.properties". Similarly, if the computing device can only extract a portion of the software's asset information from "pom.properties", it extracts the remaining content of the software's asset information from the database. If the computing device fails to obtain "MANIFEST.MF" and "pom.properties", it will extract the software's asset information from the file directory and relativePath fields based on the package manager pom.xml. Similarly, if the computing device can only extract part of the software's asset information from the file directory and relativePath fields, it will extract the other part of the software's asset information from the database.

[0086] Example 2: The computing device extracts software asset information in parallel from "MANIFEST.MF", "pom.properties", and "pom.xml" based on the package manager JAR, WAR, and pom.xml.

[0087] like Figure 4 As shown in (b), the computing device extracts software asset information in parallel from "MANIFEST.MF", "pom.properties", and "pom.xml". Specifically, the computing device extracts software asset information from "MANIFEST.MF" and "pom.properties" based on package managers (JAR and WAR), and extracts software asset information from file directories and relativePath fields based on package manager (pom.xml). If the computing device cannot extract complete software asset information using the above process, it extracts the software asset information from the database to obtain complete software asset information.

[0088] Example 2, developed using Python.

[0089] The identification process corresponding to the Python programming language is defined as the second identification process. In this case, the second identification process includes: the computing device extracts the software's asset information based on the storage file containing the software's associated information.

[0090] When the software is developed using Python, to ensure consistent performance, version information (such as version number) and information about third-party libraries it depends on are typically stored in a file named "requirement.txt". Based on this, computing devices can use... Figure 5 The second identification process shown determines the software's asset information.

[0091] Figure 5 Example diagram of the second identification process provided in this application, such as Figure 5 As shown, the second identification process may include: the computing device obtaining "requirement.txt" from the storage file containing software-related information, and extracting the software's asset information from "requirement.txt".

[0092] Example 3 uses PHP as the development language and Composer as the package manager to manage and store files.

[0093] The identification process corresponding to the development language PHP is identified as the third identification process. In this case, the third identification process includes: the computing device extracts the software's asset information based on the package manager Composer.

[0094] When the software uses PHP as its development language, it often uses "Composer.json" to store the software's metadata, dependency information, configuration information, etc. Based on this, the third identification process may include: the computing device obtains one or both of "composer.json" and "composer.lock" based on the package manager composer, and extracts the software name, required, require-dev, and version information from one or both of "composer.json" and "composer.lock", and obtains the software's asset information based on the obtained information.

[0095] Example 4, developed in Go.

[0096] The identification process corresponding to the development language Go is determined as the fourth identification process. In this case, the fourth identification process includes: the computing device extracts the software's asset information based on the storage file containing the software's associated information.

[0097] When the software uses Go as its development language, a file named "go.mod" is often used to store the software's module paths, dependencies, and version information. Based on this, a fourth identification process can be used to extract the software's asset information. This fourth identification process can include: the computing device retrieving the "go.mod" file from the storage file containing the software's associated information; the computing device extracting the module name, dependencies, replacement modules, and version information from the "go.mod" file; and obtaining the software's asset information based on the extracted information.

[0098] S340, the computing device determines the software's asset information based on the identification process.

[0099] For details regarding software asset information, please refer to the relevant description in S320 above; it will not be repeated here. The computing device can determine the software asset information using the following ① to ③.

[0100] ① The computing device determines the file storing asset information based on the identification process.

[0101] In this scenario, the computing device can determine the corresponding software package based on the identification process. The software package includes files associated with the software. These associated files can refer to storage files containing software-related information, as well as files used by the computing device to determine the storage of asset information based on the software package.

[0102] For example, the software uses Java as its development language and JAR, WAR, and pom.xml as its package manager. In this case, the computing device determines the identification process corresponding to the software as the first identification process. Based on the first identification process, the computing device determines the package software based on the package manager being JAR or WAR, the file extensions being ".Jar" or ".War", and the file corresponding to the package manager pom.xml. Furthermore, the computing device determines the files storing asset information, "MANIFEST.MF", "pom.properties", and "pom.xml", based on the package software. For a more detailed description of the above process, please refer to the description of the first identification process above; it will not be repeated here.

[0103] For example, the software uses PHP as its development language. In this case, the computing device determines that the identification process corresponding to the software is the third identification process. Based on the third identification process, the computing device determines the software package corresponding to the package manager, and based on the software package, determines the files "composer.json" and "composer.lock" that store asset information. For a more detailed description of the above process, please refer to the description of the third identification process above, which will not be repeated here.

[0104] For example, the software uses Python as its development language. In this case, the computing device determines that the identification process corresponding to the software is the second identification process. Based on the second identification process, the computing device determines the file storing software-related information (i.e., the software package), and based on the software package, determines the file "requirement.txt" storing asset information. For a more detailed description of the above process, please refer to the description of the second identification process above, which will not be repeated here.

[0105] For example, the software uses the Go programming language. In this case, the computing device determines that the identification process corresponding to the software is the fourth identification process. Based on the fourth identification process, the computing device determines the file storing software-related information (i.e., the software package), and based on the software package, determines the file "go.mod" storing asset information. For a more detailed description of the above process, please refer to the description of the fourth identification process above; it will not be repeated here.

[0106] ②The computing device extracts the first information from the file storing asset information.

[0107] The first piece of information includes one or more of the following: software name, version number, and dependencies.

[0108] Depending on the programming language used in the software, the computing device can extract primary information from different files. The following example, using Java, Phython, PHP, and Go as examples, illustrates the process of the computing device extracting primary information.

[0109] For example, if the software uses the Java programming language, the computing device can extract the initial information from pom.properties, MANIFEST.MF, and pom.xml.

[0110] For example, if the software uses the Phython programming language, the computing device can extract the first information from requirement.txt.

[0111] For example, if the software uses the PHP programming language, the computing device can extract the initial information from Composer.json.

[0112] For example, if the software uses the Go programming language, the computing device can extract the initial information from go.mod.

[0113] ③ If the first information includes specified information, the computing device determines that the first information is the software's asset information.

[0114] The specified information can refer to the asset information of the software to be acquired. Depending on the needs of the actual application, the asset information of the software to be acquired may include all or part of the content included in the software's asset information. That is to say, depending on the needs of the actual application, the specified information may include one or more of the following: software name, version number, dependency information, installation location, and permission information. For example, the specified information may be the software name, version number, and dependency information. In this case, if the first information includes the software name, version number, and dependency information, the computing device determines that the software name, version number, and dependency information are the software's asset information.

[0115] In some possible scenarios, after executing the aforementioned identification process, the computing device may only be able to obtain a portion of the specified information. In this case, the computing device can retrieve another portion of the specified information from the database. The computing device then determines the software's asset information based on the portion obtained during the identification process and the other portion retrieved from the database. Specifically, if the first information includes a first portion of the specified information, the computing device retrieves second information from the database. This second information includes a second portion of the specified information. The computing device then determines the software's asset information based on the first and second information.

[0116] For example, the specified information includes the software name, version number, and dependency information. After executing an identification process corresponding to the development language used by the software, the computing device extracts the software name and dependency information. In this case, the computing device can extract the software version number from the database. The computing device then uses the software name, dependency information obtained from the identification process, and the version number extracted from the database as the software's asset information.

[0117] The above text combined Figures 1 to 5 The software recognition method provided in this application is described below, in conjunction with... Figure 6 This application provides a general description of the software identification method. Figure 6 A flowchart of a software recognition method provided in this application is shown below. Figure 6 As shown, the method includes the following ① to ⑤.

[0118] ① The computing device reads the software file.

[0119] ② The computing device determines the development language of the file.

[0120] In this scenario, the computing device can determine the development language of a file based on the matching relationship between file characteristics and development language. Alternatively, the computing device can determine the development language of a file based on code analysis tools. Or, the computing device can determine the development language of a file based on both the matching relationship between file characteristics and development language and code analysis tools. This application does not limit this approach. For more details on this part, please refer to the relevant description above, which will not be repeated here.

[0121] ③ If the computing device fails to determine the development language of the file, then retrieve the software's asset information from the database.

[0122] ④ If the computing device successfully determines the development language of the file, it then determines the recognition process corresponding to the development language.

[0123] ⑤ The computing device identifies asset information based on the identification process software.

[0124] The above text combined Figures 1 to 6 The software identification method provided in this application has been described in detail. The software identification method provided in this application is illustrated below with reference to Tables 2 to 4.

[0125] In this example, the test group includes group 1 and group 2. Group 1 includes software 1 to software 4, and group 2 includes software 5. Among them, software 1 to software 4 are software with known software names, development languages, and version numbers, while software 5 is software with unknown software names and version numbers. The process of testing software 1 to software 5 using the software identification method provided in this application is described below using (1) to (3).

[0126] (1) Test the development languages ​​used by software 1 to software 4.

[0127] In this scenario, the computing device can use code analysis tools to analyze files 1 to 4 corresponding to software 1 to software 4 to obtain the development languages ​​used by software 1 to software 4. If the above process cannot obtain the development languages ​​used by software 1 to software 4, the computing device can determine the development languages ​​used by software 1 to software 4 based on a language flow relation library. The development languages ​​used by software 1 to software 4 determined by the computing device based on the language flow relation library are shown in Table 2 below.

[0128] Table 2 Test results of the development languages ​​used in Software 1 to Software 4

[0129] Software Name The actual development language used The development language used for the measurement Software 1 Java Java Software 2 PHP PHP Software 3 Python Python Software 4 go go

[0130] As shown in Table 2, the software identification method provided in this application can accurately identify the development language used by the software.

[0131] (2) Test the version numbers of software 1 to software 4.

[0132] In this scenario, the computing device can execute the first to fourth identification processes described above on software 1 to software 4 respectively, based on the Java, PHP, Python, and Go versions of software 1 to software 4, to determine the version numbers of software 1 to software 4 as shown in Table 3 below.

[0133] Table 3 Test results for software versions 1 to 4

[0134] Software Name Actual version number Measured version number Software 1 9.0.86 9.0.86 Software 2 6.5.2 6.5.2 Software 3 2.27.1 2.27.1 Software 4 2.0.0 2.0.0

[0135] As shown in Table 3, the software identification method provided in this application can accurately identify the software version number.

[0136] (3) Test software 5 software name and version number.

[0137] In this scenario, the operator can manually analyze software 5 to determine its software name and version number. Alternatively, the operator can use a computing device to determine the software name and version number of software 5 using the software identification method provided in this application. The software name and version number of software 5 determined using the above two methods are shown in Table 4 below.

[0138] Table 4 shows the test results for software name and version number of software 5.

[0139]

[0140] As shown in Table 4, the software name and version number identified by the software identification method provided in this application are consistent with the software name and version number determined by manual analysis of the software. In other words, the software identification method provided in this application can accurately determine the software name and version number of the software.

[0141] In this embodiment, the computing device uses different identification processes to determine the asset information of software using different programming languages. The identification process corresponds to the programming language used by the software, but not to the software itself. This ensures accurate identification of the software and determination of its asset information even when the software changes but the programming language remains the same, thus guaranteeing accurate acquisition of software asset information. Furthermore, the correspondence between the identification process and the programming language used by the software, along with the categorized determination of software asset information, improves the accuracy and efficiency of acquiring such information.

[0142] It is understood that, in order to achieve the functions in the above embodiments, the computing device includes hardware structures and / or software modules corresponding to the execution of each function. Those skilled in the art should readily recognize that, based on the units and method steps described in conjunction with the embodiments disclosed in this application, this application can be implemented in hardware or a combination of hardware and computer software. Whether a function is executed in hardware or by computer software driving hardware depends on the specific application scenario and design constraints of the technical solution.

[0143] The above text combines Figures 1 to 6 The software identification method provided according to this embodiment is described in detail below. Figure 7 This describes the software identification device provided according to this embodiment.

[0144] Figure 7 A schematic diagram of the structure of a software identification device provided in this application is shown below. Figure 7 As shown, the software identification device 700 includes a reading module 710 and a processing module 720. The reading module 710 is used to: read software files. The files include program code or instructions for performing tasks of the software. The processing module 720 is used to: determine the development language used by the file. The processing module 720 is also used to: determine the identification process corresponding to the development language. The processing module 720 is also used to: determine the software's asset information based on the identification process. The asset information includes one or more of the following: software name, version number, and dependency information. The dependency information is used to indicate information supporting the normal operation of the software.

[0145] In some possible scenarios, processing module 720 is specifically used to: determine the recognition process corresponding to the development language based on a language flow relation library. The language flow relation library includes: a correspondence between at least one software development language and at least one recognition process. The at least one software development language includes the development language.

[0146] In some possible scenarios, processing module 720 is specifically used to: determine the file storing asset information based on the identification process. Processing module 720 is specifically used to: extract first information from the file storing asset information. The first information includes one or more of the following: software name, version number, dependencies. If the first information includes specified information, processing module 720 is further specifically used to: determine that the first information is software asset information.

[0147] In some possible scenarios, processing module 720 is specifically used to: determine the software package corresponding to the software based on the identification process. The software package includes files associated with the software. Processing module 720 is also specifically used to: determine the file storing asset information based on the software package.

[0148] In some possible scenarios, if the first information includes a first portion of the specified information, the processing module 720 is further configured to: retrieve second information from a database. The database stores the software name, version number, dependency information, installation location, and permission information of the software. The installation location indicates the installation path of the software on the compute node. The permission information indicates the operation permissions of the software supported by the compute node on the compute node. The second information includes a second portion of the specified information. The processing module 720 is further configured to: determine the software's asset information based on the first and second information.

[0149] In some possible scenarios, if determining the development language used by the file fails, the processing module 720 further determines the software's asset information based on the matching relationship between file characteristics and development languages. The matching relationship includes multiple development languages ​​and the file characteristics corresponding to each of these languages. The file characteristics indicate the usage rules of the development language.

[0150] In some possible scenarios, if determining the development language used by a file based on the correspondence between file characteristics and development languages ​​fails, the processing module 720 is also used to: obtain the software's asset information from the database.

[0151] In some possible scenarios, asset information may also include: installation location and / or permissions information. Installation location indicates the installation path of the software on the compute node. Permission information indicates the operational permissions that the software supported by the compute node has over the compute node.

[0152] In some cases, the software files are the compiled files corresponding to the software's source files. The software source files are the files that store the software's source code.

[0153] For more details on the reading module 710 and the processing module 720, please refer to the above description of the software identification method; they will not be repeated here.

[0154] When the software identification device 700 corresponds to the steps performed by the computing device in the software identification method described in the embodiments of this application, the above and other operations and / or functions of each module in the software identification device 700 are respectively to implement the method flow performed by the computing device in the foregoing figures.

[0155] It is worth noting that if the above-mentioned software identification devices are implemented through software modules, for example, the software module can be provided to users through a cloud service subscription model, and users can choose different subscription levels according to their needs; or, for example, the software module can also provide enterprise-level customized services with professional domain customization, interface personalization and extended functions according to the needs of users or enterprises.

[0156] In addition, the software identification device 700 provided in this application can also be provided to users as a value-added service, and this application does not limit this.

[0157] The software identification device in this application embodiment can also be implemented in hardware, such as a computing device, chip, or processor. For specific implementation details regarding computing devices, please refer to [reference needed]. Figure 1 For a description of the chip and processor's specific implementation, please refer to [link / reference]. Figure 2 The description of that will not be repeated here.

[0158] The method steps in this embodiment can be implemented in hardware or by a processor executing software instructions. The software instructions can consist of corresponding software modules, which can be stored in random access memory (RAM), flash memory, read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), registers, hard disks, portable hard disks, CD-ROMs, or any other form of storage medium known in the art. An exemplary storage medium is coupled to the processor, enabling the processor to read information from and write information to the storage medium. Of course, the storage medium can also be a component of the processor. The processor and storage medium can reside in an ASIC. Alternatively, the ASIC can reside in a computing device. Of course, the processor and storage medium can also exist as discrete components in a network device or terminal device.

[0159] This application also provides a computing device, such as Figure 8 As shown, Figure 8 This application provides a schematic diagram of a computing device. The computing device 800 includes a bus 816, a processor 811, a memory 812, and a communication interface 814. The processor 811, memory 812, and communication interface 814 are interconnected via the bus 816. The computing device 800 can be a server or a terminal device, etc. It should be understood that this application does not limit the number of processors and memories in the computing device 800. For example, the computing device 800 can be the aforementioned computing device 110.

[0160] The 816 bus can be a PCIe bus or an Extended Industry Standard Architecture (EISA) bus, etc. Buses can be divided into address buses, data buses, control buses, etc. For ease of representation, Figure 7 The bus 816 may be represented by a single line, but this does not mean that there is only one bus or one type of bus. The bus 816 may include a path for transmitting information between various components of the computing device 800 (e.g., processor 811, memory 812, communication interface 814).

[0161] The processor 811 may include any one or more processors such as CPU, GPU, FPGA, microprocessor (MP) or DSP.

[0162] The memory 812 may include volatile memory, such as RAM. The processor 811 may also include non-volatile memory, such as ROM, flash memory, HDD, or SSD.

[0163] The memory 812 stores executable program code, and the processor 811 executes the executable program code to implement the functions of the aforementioned reading module 710 and processing module 720, thereby realizing the software identification method. That is, the memory 812 stores instructions for executing the software identification method.

[0164] The communication interface 814 uses transceiver modules such as, but not limited to, network interface cards and transceivers to enable communication between the computing device 800 and other devices or communication networks.

[0165] In some possible scenarios, the computing device 800 may also include a display 818. The display 818 may display a configuration interface and, in response to user actions on the configuration interface, retrieve language flow relational libraries, etc. The display 818 may also display an asset information interface, which includes software asset information. The display 818 may be a liquid crystal display (LCD), etc.

[0166] This application also provides a computing device cluster. The computing device cluster includes at least one computing device, which may be a server with a display. In some embodiments, the computing device may also be a terminal device such as a desktop computer, laptop computer, or smartphone.

[0167] like Figure 9 As shown, Figure 9 This application provides a schematic diagram of a computing device cluster, which includes at least one computing device 800. The memory 812 of one or more computing devices 800 in the computing device cluster may store the same instructions for executing software identification methods.

[0168] In some possible implementations, the memory 812 of one or more computing devices 800 in the computing device cluster may also store partial instructions for executing the software identification method. In other words, a combination of one or more computing devices 800 can jointly execute the instructions for executing the software identification method.

[0169] It should be noted that the memory 812 in different computing devices 800 within the computing device cluster can store different instructions, each used to execute a portion of the computing device's functions. That is, the instructions stored in the memory 812 of different computing devices 800 can implement the functions of one or more units in the read module 710 and the process module 720.

[0170] In some possible implementations, one or more computing devices in a computing device cluster can be connected via a network. This network can be a wide area network (WAN) or a local area network (LAN). Figure 10 One possible implementation is shown. For example... Figure 10 As shown, Figure 10 This application provides a schematic diagram of a connection between computing devices, where two computing devices 800A and 800B are connected via a network. Specifically, they are connected to the network through communication interfaces in each computing device. In this possible implementation, the instructions stored in the memory 812 of computing device 800A can implement the functions implemented by the read module 710. Simultaneously, the instructions stored in the memory 812 of computing device 800B can implement the functions implemented by the processing module 720.

[0171] This application also provides a computer program product containing instructions. The computer program product may be a software or program product containing instructions capable of running on a computing device or stored on any usable medium. When the computer program product is run on at least one computing device, it causes the at least one computing device to perform a software identification method.

[0172] This application also provides a computer-readable storage medium. The computer-readable storage medium can be any available medium capable of being stored by a computing device, or a data storage device such as a data center containing one or more available media. The available medium can be a magnetic medium (e.g., floppy disk, hard disk, magnetic tape), an optical medium (e.g., DVD), or a semiconductor medium (e.g., solid-state drive). The computer-readable storage medium includes instructions that instruct a computing device to perform a software identification method.

[0173] This application also provides a chip. The chip includes an interface circuit and a control circuit. The interface circuit is used to read software files, and the control circuit is used to implement the functions of the computing device in the software identification method.

[0174] In the above embodiments, implementation can be achieved entirely or partially through software, hardware, firmware, or any combination thereof. When implemented using software, it can be implemented entirely or partially in the form of a computer program product. The computer program product includes one or more computer programs or instructions. When the computer program or instructions are loaded and executed on a computer, the processes or functions described in the embodiments of this application are performed entirely or partially. The computer can be a general-purpose computer, a special-purpose computer, a computer network, a network device, a user equipment, or other programmable device. The computer program or instructions can be stored in a computer-readable storage medium or transferred from one computer-readable storage medium to another. For example, the computer program or instructions can be transferred from one website, computer, server, or data center to another website, computer, server, or data center via wired or wireless means. The computer-readable storage medium can be any available medium that a computer can access or a data storage device such as a server or data center that integrates one or more available media. The available medium can be a magnetic medium, such as a floppy disk, hard disk, or magnetic tape; it can also be an optical medium, such as a digital video disc (DVD); or it can be a semiconductor medium, such as a solid-state drive (SSD).

[0175] The above description is merely a specific embodiment of this application, but the scope of protection of this application is not limited thereto. Any person skilled in the art can easily conceive of various equivalent modifications or substitutions within the technical scope disclosed in this application, and these modifications or substitutions should all be covered within the scope of protection of this application. Therefore, the scope of protection of this application should be determined by the scope of the claims.

Claims

1. A software recognition method, characterized in that, The method includes: Read the software's files; the files include program code or instructions for performing tasks of the software; Determine the development language used in the document; Determine the recognition process corresponding to the development language; The asset information of the software is determined based on the identification process; the asset information includes one or more of the following: software name, version number, and dependency information, wherein the dependency information is used to indicate information that supports the normal operation of the software.

2. The method according to claim 1, characterized in that, The identification process for determining the corresponding development language includes: The recognition process corresponding to the development language is determined based on the language process relation library; The language process relation library includes a correspondence between at least one software development language and at least one recognition process, wherein the at least one software development language includes the development language.

3. The method according to claim 1 or 2, characterized in that, The process of determining the software's asset information based on the identification procedure includes: Based on the identification process, determine the file storing the asset information; Extract first information from the file storing the asset information; the first information includes one or more of the following: software name, version number, and dependencies; If the first information includes specified information, then the first information is determined to be the asset information of the software.

4. The method according to claim 3, characterized in that, The step of determining the file storing the asset information based on the identification process includes: Based on the identification process, the software package corresponding to the software is determined; the software package includes the files associated with the software. Based on the software package, determine the file that stores the asset information.

5. The method according to claim 3 or 4, characterized in that, The method further includes: If the first information includes the first part of the specified information, the second information is obtained from the database; the second information includes the second part of the specified information; the database stores the software name, version number, dependency information, installation location, and permission information of the software, the installation location is used to indicate the installation path of the software on the computing node, and the permission information is used to indicate the operation permissions of the software on the computing node supported by the computing node. Based on the first information and the second information, the asset information of the software is determined.

6. The method according to any one of claims 1-5, characterized in that, The method further includes: If it is determined that the development language used by the file is unsuitable, then the development language used by the file is determined based on the matching relationship between file characteristics and development languages; The matching relationship includes multiple development languages ​​and file features corresponding to each of the multiple development languages, wherein the file features are used to indicate the usage rules of the development languages.

7. The method according to claim 6, characterized in that, The method further includes: If the matching relationship between file characteristics and development language determines that the development language used by the file fails, then the asset information of the software is retrieved from the database.

8. The method according to any one of claims 1-7, characterized in that, The asset information also includes: installation location and / or permission information; the installation location is used to indicate the installation path of the software on the computing node, and the permission information is used to indicate the operation permissions of the software supported by the computing node on the computing node.

9. The method according to any one of claims 1-8, characterized in that, The software file is the compiled file corresponding to the software's source file, and the software's source file is the file that stores the software's source code.

10. A software identification device, characterized in that, The device includes: A reading module is used to: read software files; the files include program code and instructions for performing tasks of the software; The processing module is used to: determine the development language used in the file; The processing module is further configured to: determine the recognition process corresponding to the development language; The processing module is further configured to: determine the asset information of the software based on the identification process; the asset information includes one or more of the following: software name, version number, and dependency information, wherein the dependency information is used to indicate information that supports the normal operation of the software.

11. The apparatus according to claim 10, characterized in that, The processing module is specifically used to: determine the recognition process corresponding to the development language based on a language flow relation library; wherein, the language flow relation library includes: a correspondence between at least one software development language and at least one recognition process, and the at least one software development language includes the development language.

12. The apparatus according to claim 10 or 11, characterized in that, The processing module is specifically used for: Based on the identification process, determine the file storing the asset information; Extract first information from the file storing the asset information; the first information includes one or more of the following: software name, version number, and dependencies; If the first information includes specified information, then the first information is determined to be the asset information of the software.

13. The apparatus according to claim 12, characterized in that, The processing module is specifically used for: Based on the identification process, the software package corresponding to the software is determined; the software package includes the files associated with the software. Based on the software package, determine the file that stores the asset information.

14. The apparatus according to claim 12 or 13, characterized in that, The processing module is further configured to: If the first information includes the first part of the specified information, the second information is obtained from the database; the second information includes the second part of the specified information; the database stores the software name, version number, dependency information, installation location, and permission information of the software, the installation location is used to indicate the installation path of the software on the computing node, and the permission information is used to indicate the operation permissions of the software on the computing node supported by the computing node. Based on the first information and the second information, the asset information of the software is determined.

15. The apparatus according to any one of claims 10-14, characterized in that, The processing module is further configured to: If it is determined that the development language used by the file is unsuitable, then the development language used by the file is determined based on the matching relationship between file characteristics and development languages; The matching relationship includes multiple development languages ​​and file features corresponding to each of the multiple development languages, wherein the file features are used to indicate the usage rules of the development languages.

16. The apparatus according to claim 15, characterized in that, The processing module is further configured to: if the matching relationship between file characteristics and development language determines that the development language used by the file fails, then obtain the asset information of the software from the database.

17. The apparatus according to any one of claims 10-16, characterized in that, The asset information also includes: installation location and / or permission information; the installation location is used to indicate the installation path of the software on the computing node, and the permission information is used to indicate the operation permissions of the software supported by the computing node on the computing node.

18. The apparatus according to any one of claims 10-17, characterized in that, The software file is the compiled file corresponding to the software's source file, and the software's source file is the file that stores the software's source code.

19. A computing device cluster, characterized in that, The computing device cluster includes at least one computing device, and each computing device includes a processor and memory; The processor of the at least one computing device is configured to execute instructions stored in the memory of the at least one computing device to cause the cluster of computing devices to perform the method as described in any one of claims 1-9.

20. A computer-readable storage medium, characterized in that, The computer-readable storage medium includes computer instructions; when the computer instructions are executed in a computing device, the computing device performs the method of any one of claims 1-9.

21. A computer program product, characterized in that, When the computer program product is run in a computing device, the computing device performs the method of any one of claims 1-9.