Detailed Description
In order to solve the problem that the efficiency of software testing and exception positioning in the related art is low, the embodiment of the application provides a software analysis method and electronic equipment.
The preferred embodiments of the present application will be described below with reference to the accompanying drawings of the specification, it being understood that the preferred embodiments described herein are for illustration and explanation only, and not for limitation of the present application, and embodiments of the present application and features of the embodiments may be combined with each other without conflict.
It should be noted that, in the embodiment of the present application, the software such as the Linux operating system may include a plurality of software packages, each for executing one or more specific functions, where the functions corresponding to the plurality of software packages form the functions of the software.
Referring to fig. 1, fig. 1 is a test scenario diagram provided in an embodiment of the present application, including a server 10 and a test device 20, where an operating system such as a Linux operating system may be installed in the server 10, and the test device 20 such as a server, a desktop computer, a notebook computer, etc. may be deployed with a test platform, and the test platform may be used to test whether the Linux operating system in the server 10 operates normally.
After the test scenario in the embodiment of the present application is described, the test procedure in the embodiment of the present application is described below in connection with the embodiment. Referring to fig. 2, fig. 2 is a flowchart of a software analysis method according to an embodiment of the present application, where the method is applied to the test apparatus 20 of fig. 1, and the method includes the following steps.
In step 201, a software package to be analyzed is determined, which is a software package whose code has been modified.
Wherein the software package to be analyzed may be entered by a user.
In step 202, a target object having an influence relationship with the software package to be analyzed is determined according to the software package to be analyzed and a preset influence relationship, where the influence relationship refers to that the software package to be analyzed affects the operation of the target object.
The target object may include one or more of a dependent software package, software, test items such as performance tests, stability tests, and the like.
In practical application, there may be a plurality of objects having influence relation with the software package to be analyzed, and the plurality of objects are divided into a plurality of levels according to the influence relation strength with the software package to be analyzed, so that each level corresponds to an influence relation strength, and the levels are inversely related to the influence relation strength, that is, the lower the level is, the stronger the influence relation strength is, and the higher the level is, the weaker the influence relation strength is.
In some embodiments, according to the to-be-analyzed software package and the preset influence relationship, all objects that the to-be-analyzed software package affects may be used as target objects, i.e., objects of all levels corresponding to the to-be-analyzed software package are used as target objects. In this way, missing objects can be avoided, and thus the coverage of subsequent tests is improved.
In some embodiments, the user may further input an analysis level requirement, such as an influence level number, of the software package to be analyzed, in which case, according to the software package to be analyzed and a preset influence relationship, the first N-layer object matched with the analysis level requirement may be determined as a target object, that is, an object of the software package to be analyzed within a certain influence range is taken as the target object. Therefore, the object influenced by the software package to be analyzed can be controlled through the analysis level requirement, so that the subsequent test range is controlled, the purpose of controlling the test granularity is achieved, and the test flexibility is better.
The following describes the preset influence relationship.
In the first case, the preset influence relationship includes a code dependency relationship.
Here, the code dependency refers to other software packages required by one software package in compiling, running or normal working, and the code dependency can be determined by target fields, such as requests, of a plurality of software packages in a source code repository, where the target fields are used to indicate the software packages on which the one software package depends on code.
For example, according to the extraction result of the target field in the plurality of software packages, determining the software packages on which the plurality of software packages depend on the code, and then, based on the software packages on which the plurality of software packages depend on the code, sorting the dependency relationships of the software packages to obtain a plurality of code dependency relationships with different influence relationships. That is, the code dependency may include a plurality of code dependencies having different influence relationships.
Assuming that it has been determined that software package 1 depends on software package 2 in code, software package 2 depends on software package 3 in code, and software package 3 depends on software package 4 in code. Then it can be determined that package 1 is also code dependent on package 3 and package 4, and that package 1's code dependent relationship to package 2, package 3, package 4 is in turn weaker. Similarly, it may be determined that software package 2 is also code dependent on software package 4, and that the code dependency of software package 2 on software package 3 and software package 4 is in turn weaker.
Thus, the dependency relationship among the massive software packages is automatically analyzed, and various code dependency relationships with different influence relationship strengths of the plurality of software packages can be efficiently determined.
In the second case, the preset influence relationship includes an empirical influence relationship.
Wherein the empirical influence relationship is determined by influence relationships among a plurality of software packages entered by the user.
In practical applications, for each software package, the object having an empirically influencing relation with the software package may be other objects such as software, test items, etc. besides the software package. Also, the empirically affected relationships may include a plurality of empirically affected relationships that differ in the strength of the affected relationship.
Here, the user refers to a developer, so that understanding of influence relationships among software packages accumulated by the developer is converted into a plurality of storable experience influence relationships with different influence relationships, accuracy of the experience influence relationships can be guaranteed, and influence of changes of the developer on testing can be reduced.
In a third case, the preset influence relationship includes a code dependency relationship and an experience influence relationship.
When the code dependency relationship comprises a plurality of code dependency relationships with different influence relationship strengths, and the experience influence relationship also comprises a plurality of experience influence relationships with different influence relationship strengths, combining a first object and a second object which correspond to each software package in the plurality of software packages and have the same influence relationship strength, so as to obtain objects of a plurality of influence levels of the software package, wherein the first object and the software package have the code dependency relationship with the corresponding influence relationship strength, and the second object and the software package have the experience dependency relationship with the corresponding influence relationship strength.
In this way, the code dependency relationship among the software packages and the experience influence relationship accumulated by the developer for many years are combined to form a preset influence relationship, so that a more comprehensive and accurate influence relationship can be obtained, the more comprehensive and accurate influence relationship can better provide guidance for testing, and the testing accuracy is greatly improved.
In step 203, a target operation is performed based on the software package to be analyzed and the target object.
Wherein the target operation is such as a test.
In specific implementation, test cases corresponding to the software package to be analyzed and the target object respectively can be obtained, and whether the code modification of the software package to be analyzed affects the operation of the target object can be tested by executing the test cases.
In the embodiment of the application, after the software package to be analyzed with the code modified is determined, the target object of the operation of the software package to be analyzed is determined according to the preset influence relation, and then the software package to be analyzed and the target object are tested, so that the target object of the operation of the software package to be analyzed can be quickly and accurately found and tested by means of the preset influence relation, and the supplementary test is not needed to be performed manually, thereby improving the test efficiency.
Referring to fig. 3, fig. 3 is an anomaly locating scene diagram provided by an embodiment of the present application, which includes a server 10, in which an operating system such as a Linux operating system and an anomaly locating tool may be installed in the server 10, and when an anomaly occurs in the Linux operating system, the anomaly locating tool may be used to locate where the anomaly occurs in the Linux operating system.
After the anomaly locating scene in the embodiment of the present application is described, the anomaly locating process in the embodiment of the present application is described below with reference to the embodiment. Referring to fig. 4, fig. 4 is a flowchart of another software analysis method according to an embodiment of the present application, where the execution subject of the method is the server 10, and the method includes the following steps.
In step 401, a software package to be analyzed is determined, the software package to be analyzed being a software package in which an abnormality occurs.
Generally, if an abnormality occurs in software, a code segment with the abnormality can be found, the software package to which the code segment belongs is a software package to be analyzed, then the abnormality can be located in the software package to be analyzed, and if the abnormality is not located, the subsequent operation can be executed.
In step 402, a target object having an influence relationship with the software package to be analyzed is determined according to the software package to be analyzed and a preset influence relationship, where the influence relationship refers to that the target object affects the operation of the software package to be analyzed.
The target object may include one or more of a dependent software package, software, test items such as performance tests, stability tests, and the like.
Here, according to the to-be-analyzed software package and the preset influence relation, all objects which influence the transportation of the to-be-analyzed software package can be determined to be target objects, so that more comprehensive objects can be determined, and the accuracy of subsequent abnormal positioning is improved.
The following describes the preset influence relationship.
In the first case, the preset influence relationship includes a code dependency relationship.
Here, the code dependency refers to other software packages required by one software package in compiling, running or normal working, and the code dependency can be determined by target fields, such as requests, of a plurality of software packages in a source code repository, where the target fields are used to indicate the software packages on which the one software package depends on code.
For example, according to the extraction result of the target field in the plurality of software packages, determining the software packages on which the plurality of software packages depend on the code, and then, based on the software packages on which the plurality of software packages depend on the code, sorting the dependency relationships of the software packages to obtain a plurality of code dependency relationships with different influence relationships. That is, the code dependency may include a plurality of code dependencies having different influence relationships.
Thus, the dependency relationship among the massive software packages is automatically analyzed, and various code dependency relationships with different influence relationship strengths of the plurality of software packages can be efficiently determined.
In the second case, the preset influence relationship includes an empirical influence relationship.
Wherein the empirical influence relationship is determined by influence relationships among a plurality of software packages entered by the user.
In practical applications, for each software package, the object having an empirically influencing relation with the software package may be other objects such as software, test items, etc. besides the software package. Also, the empirically affected relationships may include a plurality of empirically affected relationships that differ in the strength of the affected relationship.
Here, the user refers to a developer, so that the understanding of the influence relationship among the software packages accumulated by the developer can be converted into a plurality of kinds of storable experience influence relationships with different influence relationship strengths, the accuracy of the experience influence relationship can be ensured, and the influence of the change of the developer on the abnormal positioning can be reduced.
In a third case, the preset influence relationship includes a code dependency relationship and an experience influence relationship.
When the code dependency relationship comprises a plurality of code dependency relationships with different influence relationship strengths, and the experience influence relationship comprises a plurality of experience influence relationships with different influence relationship strengths, combining a first object and a second object which correspond to each software package in the plurality of software packages and have the same influence relationship strength, so as to obtain objects of a plurality of influence levels of the software package, wherein the first object and the software package have the code dependency relationship with the corresponding influence relationship strength, and the second object and the software package have the experience dependency relationship with the corresponding influence relationship strength.
In this way, the code dependency relationship among the software packages and the experience influence relationship accumulated by the developer for many years are combined to form a preset influence relationship, so that a more comprehensive and accurate influence relationship can be obtained, guidance can be provided for abnormality positioning better by the more comprehensive and accurate influence relationship, and the abnormality positioning accuracy is greatly improved.
In step 403, a target operation is performed based on the software package to be analyzed and the target object.
Wherein the target object is located as an anomaly.
In some embodiments, the target object includes a plurality of objects, and the plurality of objects are divided into a plurality of levels according to the influence relation strength with the software package to be analyzed, and then when no abnormality is located in the software package to be analyzed, the plurality of objects can be located abnormally from the strong to the weak rule according to the influence relation level by level.
Thus, the exception positioning is carried out layer by layer, the exception nested logic is met, and the exception positioning efficiency can be improved.
In the embodiment of the application, after the abnormal software package to be analyzed is determined, the target object which can influence the operation of the software package to be analyzed is determined according to the preset influence relation, and then the target object is abnormally positioned, so that the target object which can influence the operation of the software package to be analyzed can be rapidly found and abnormally positioned by means of the preset influence relation, and the target object is not required to be manually determined, thereby improving the abnormal positioning efficiency.
The scheme of the embodiment of the application is described below by taking analysis of a Linux operating system as an example.
Referring to fig. 5, fig. 5 is a schematic process diagram of software analysis provided in an embodiment of the present application, source codes of all software packages of a Linux operating system are stored in a source code bin, a dependency analyzer may scan the source codes of each software package in the source code bin, extract field values of request fields from the source codes (the field values are package names of the software packages on which the software package depends), thereby determining the software package on which the software package depends on the code, and then, based on the software package on which each software package depends on the code, perform a software package dependency relationship ordering to obtain a dependency relationship network between each software package, and store multiple code dependency relationships with different influence relationships in the dependency relationship network, and may generate a first dependency table and a second dependency table based on the dependency relationship network between each software package, where the first dependency table is used for storing objects with different levels that may be influenced by each software package, and the second dependency table is used for storing objects with different levels that may influence each software package. The first dependency table and the second dependency table may also be updated periodically, taking into account that subsequent dependencies may change.
And a developer can record objects of different levels, which are influenced by each software package, according to own experience and a certain format requirement to obtain an experience dependency table.
And then, the influence range list generator can merge and de-duplicate the objects with the same level in the first dependency table and the experience dependency table to obtain an influence object table, and the second dependency table is used as an influence source table.
Subsequently, the impact object table can be imported into a test platform to guide the test, and the impact source table can be imported into an anomaly locating tool to guide the anomaly location.
The above procedure is described by way of example.
First, a procedure of generating an influence object table and an influence source table will be described by way of example.
Assuming that the dependency network resulting from the package scan is as shown in fig. 6, package B depends on package a in code and is dependent on package C and package D, and package E depends on package C in code.
Assume that the code dependencies are divided into 2 levels, direct dependency L1 and indirect dependency L2 (with only one other software package in between). Then, according to the dependency network shown in fig. 6, the generated first dependency table may be as shown in table 1. Similarly, assume that the empirical influence relationship is divided into 2 levels, direct influence relationship M1 and indirect influence relationship M2 (with only one other software package in between). Then, according to the dependency network shown in fig. 6, the generated second dependency table may be as shown in table 2. In tables 1 and 2, there is no intersection between the different columns of each row, that is, one software package can only exist in one dependency level or impact level of the other software package.
TABLE 1
| Software package name |
L1 |
L2 |
| B |
C、D |
E |
| C |
E |
- |
TABLE 2
| Software package name |
M1 |
M2 |
| B |
A |
- |
| C |
B |
A |
It is assumed that the empirical dependency table is shown in table 3 that there is no intersection between different levels for data in a certain row, i.e. one influencing object can only exist in one influence range class of another software package.
TABLE 3 Table 3
| Software package name |
L1 |
L2 |
| B |
E |
Performance of |
| C |
File system |
F |
The influence range list generator is used for taking the union of all the objects corresponding to L1 for the first dependency list and the experience dependency list to form an L1-level object, then taking the union of all the objects corresponding to L2, deleting the determined L1-level object from the union to obtain an L2-level object, and the finally obtained influence object list is shown as 4, wherein the second dependency list is directly used as an influence source list, and for data in a certain row, no intersection exists between different levels, namely one influence object can only exist in one influence range level of another software package.
TABLE 4 Table 4
| Software package name |
L1 |
L2 |
| B |
C、D、E |
Performance of |
| C |
E. File system |
F |
Next, a test procedure after the impact object table is introduced into the test platform will be described.
Referring to fig. 7, fig. 7 is a schematic diagram illustrating a software testing process according to an embodiment of the present application. Assuming that the software package B is modified by the code, in order to test whether the code modification causes an abnormality, a tester may select which test granularity of the test is performed on the software package B through the test platform, if L1 is selected, may query the L1-level object of the software package B to obtain the software package C, D, E, then select the test case of the software package B, C, D, E, execute the test cases to obtain the test result and output, and if L2 is selected, may query the L2-level object of the software package B to obtain the software package C, D, E and performance, then select the test case of the software package B, C, D, E, and the test case of the performance item, execute the test cases to obtain the test result and output.
Finally, an abnormal positioning process after the influence source table is introduced into the positioning tool is introduced.
Referring to fig. 8, fig. 8 is a schematic diagram of an abnormality positioning process according to an embodiment of the present application. When an abnormality occurs in the execution of one code segment, the software package to which the code segment belongs can be determined, the code of the software package B can be checked if the software package B is assumed to be the software package B, if the abnormality cause is found, the problem point causing the abnormality can be locked, if the abnormality cause is not found, the objects of different levels corresponding to the software package B can be determined according to the influence source table, then the problem point checking is performed on the objects of different levels corresponding to the software package B level by level, and the problem point causing the abnormality is locked. Generally, for objects of different levels corresponding to the software package B, objects with the latest code changed may be checked first, and if no problem is checked, other objects are checked in order of the level from small to large.
It should be noted that, the above description is given by taking the method of the embodiment of the present application as an example applied to the Linux operating system. In fact, the method according to the embodiment of the present application may be applied to other scenarios, and the following description will exemplify other scenarios.
1. And (5) developing software in enterprises.
When the enterprise develops own software, the method provided by the embodiment of the application can optimize the test flow and improve the abnormality locating efficiency.
2. Continuous integration (Continuous Integration, CI)/continuous deployment (Continuous Delivery, CD) flow.
In an automated CI/CD process, after submitting a software version and before deploying the software, the method of the embodiment of the application can be used for testing to quickly identify potential problems caused by code change, thereby shortening the period from development to deployment.
3. Cloud services and micro-service architecture.
In cloud services or micro-service architecture-based systems, the dependency relationship between software packages and interaction between services are more complex, and the method of the embodiment of the application can also optimize the test flow and the abnormal positioning flow.
4. Internet of things (Internet of Things, ioT) device management.
IoT devices typically require remote updating and maintenance, and for each software package to which the device firmware corresponds, the method of embodiments of the present application may also optimize the test flow and anomaly localization flow during the device firmware update process.
5. And a big data analysis platform.
When a large amount of data and complex analysis tasks are processed, the method provided by the embodiment of the application can help to determine the dependency relationship among software packages corresponding to all links in a data processing flow, and can be used for rapidly positioning when an abnormality occurs.
6. And (5) security hole management.
For the identified security hole, the method of the embodiment of the application can quickly determine the range of the affected software package and accelerate the process of exception positioning and repairing.
The embodiment of the application has the following beneficial effects:
1. by combining the code dependency relationship among the software packages and the experience influence relationship among the software packages accumulated by the developer, a more accurate and comprehensive influence object table and an influence source table are constructed. Moreover, objects with different levels are constructed for each software package, and the division is finer.
2. When the influence object table is applied to a test flow, limited and accurate influence objects can be rapidly defined, so that the test efficiency can be improved, and missing objects can be avoided. In addition, the testing of different testing granularities can be realized through selecting the hierarchy, so that the coarser testing granularity can be selected when resources and time are limited, the finer testing granularity can be selected when the resources and time are abundant, and the testing flexibility is better.
3. When the influence source table is applied to abnormality positioning, the object range (namely the potential fault area) can be rapidly reduced, and the time for a developer to check the abnormality is saved.
Based on the same technical concept, the embodiment of the application also provides a software analysis device, and the principle of solving the problem of the software analysis device is similar to that of the software analysis method, so that the implementation of the software analysis device can be referred to the implementation of the software analysis method, and the repetition is omitted.
Fig. 9 is a schematic structural diagram of a software analysis device according to an embodiment of the present application, including:
A first determining module 901, configured to determine a software package to be analyzed;
the second determining module 902 is configured to determine, according to the to-be-analyzed software package and a preset influence relation, a target object having an influence relation with the to-be-analyzed software package, where the to-be-analyzed software package is a software package with a code modified, the influence relation refers to that the to-be-analyzed software package affects the operation of the target object, or the to-be-analyzed software package is a software package with an exception, and the influence relation refers to that the target object affects the operation of the to-be-analyzed software package;
The processing module 903 is configured to execute a target operation based on the software package to be analyzed and the target object.
In some embodiments, the plurality of objects having influence relation with the software package to be analyzed is provided, and the plurality of objects are divided into a plurality of layers according to the influence relation strength with the software package to be analyzed;
when the software package to be analyzed is a software package with modified codes, the first determining module 901 is further configured to obtain an analysis level requirement for the software package to be analyzed;
The first determining module 901 is specifically configured to determine, according to the to-be-analyzed software package and a preset influence relationship, the object of the first N layers that matches the analysis level requirement as the target object, where N is a positive integer greater than zero.
In some embodiments, the target object comprises one or more of a dependent software package, software, test item.
In some embodiments, the preset influence relationship comprises a code dependency relationship and/or an experience influence relationship, wherein the code dependency relationship is determined through target fields of a plurality of software packages in a source code warehouse, the target fields are used for indicating the software packages on which one software package depends on codes, and the experience influence relationship is determined through influence relationships among the plurality of software packages input by a user.
In some embodiments, the code dependencies include a plurality of code dependencies that differ in influence relationship strength, and the empirical influence relationships include a plurality of empirical influence relationships that differ in influence relationship strength.
In some embodiments, when the software package to be analyzed is a software package with modified code, if the preset influence relationship includes a code dependency relationship and an experience influence relationship, then:
And combining the first object and the second object which correspond to the software package and have the same influence relation strength aiming at each software package in the plurality of software packages to obtain objects of a plurality of influence levels of the software package, wherein the first object and the software package have code dependency relations of the influence relation strength, and the second object and the software package have experience dependency relations of the influence relation strength.
In some embodiments, the plurality of code dependencies with different impact relationships are determined according to the following steps:
Determining a software package on which the plurality of software packages depend on codes according to the extraction result of the target field in the plurality of software packages;
And based on the software packages on which the plurality of software packages depend on codes, sequencing the dependency relationships of the software packages to obtain a plurality of code dependency relationships with different influence relationships.
In some embodiments, the software package to be analyzed is a software package with modified code, and the processing module 903 is specifically configured to:
Acquiring the software package to be analyzed and a test case corresponding to the target object;
and running the test case.
In some embodiments, the software package to be analyzed is a software package with an exception, the target object includes a plurality of objects, the plurality of objects are divided into a plurality of levels according to the influence relationship with the software package to be analyzed, and the processing module 903 is specifically configured to:
And when no abnormality is positioned in the software package to be analyzed, carrying out abnormality positioning on the plurality of objects in a hierarchical manner according to a rule from strong to weak of the influence relation.
The division of the modules in the embodiments of the present application is schematically only one logic function division, and there may be another division manner in actual implementation, and in addition, each functional module in each embodiment of the present application may be integrated in one processor, or may exist separately and physically, or two or more modules may be integrated in one module. The coupling of the individual modules to each other may be achieved by means of interfaces which are typically electrical communication interfaces, but it is not excluded that they may be mechanical interfaces or other forms of interfaces. Thus, the modules illustrated as separate components may or may not be physically separate, may be located in one place, or may be distributed in different locations on the same or different devices. The integrated modules may be implemented in hardware or in software functional modules.
Having described the software analysis method and apparatus of an exemplary embodiment of the present application, next, an electronic device according to another exemplary embodiment of the present application is described.
An electronic device 100 implemented according to such an embodiment of the present application is described below with reference to fig. 10, and the electronic device 100 may be the server 10 or the test device 20. The electronic device 100 shown in fig. 10 is merely an example, and should not be construed as limiting the functionality and scope of use of the embodiments of the present application.
As shown in fig. 10, the electronic device 100 is embodied in the form of a general-purpose electronic device. The components of the electronic device 100 may include, but are not limited to, the at least one processor 101 described above, the at least one memory 102 described above, and a bus 103 that connects the various system components, including the memory 102 and the processor 101.
Bus 103 represents one or more of several types of bus structures, including a memory bus or memory controller, a peripheral bus, a processor, and a local bus using any of a variety of bus architectures.
Memory 102 may include readable media in the form of volatile memory, such as Random Access Memory (RAM) 1021 and/or cache memory 1022, and may further include Read Only Memory (ROM) 1023.
Memory 102 may also include program/utility 1025 having a set (at least one) of program modules 1024, such program modules 1024 including, but not limited to, an operating system, one or more application programs, other program modules, and program data, each or some combination of which may include an implementation of a network environment.
The electronic device 100 may also communicate with one or more external devices 104 (e.g., keyboard, pointing device, etc.), one or more devices that enable a user to interact with the electronic device 100, and/or any device (e.g., router, modem, etc.) that enables the electronic device 100 to communicate with one or more other electronic devices. Such communication may occur through an input/output (I/O) interface 105. Also, the electronic device 100 may communicate with one or more networks such as a Local Area Network (LAN), a Wide Area Network (WAN), and/or a public network, such as the Internet, through a network adapter 106. As shown, network adapter 106 communicates with other modules for electronic device 100 over bus 103. It should be appreciated that although not shown, other hardware and/or software modules may be used in connection with electronic device 100, including, but not limited to, microcode, device drivers, redundant processors, external disk drive arrays, RAID systems, tape drives, data backup storage systems, and the like.
In an exemplary embodiment, a storage medium is also provided, which when a computer program in the storage medium is executed by a processor of an electronic device, the electronic device is able to perform the above-described software analysis method. Alternatively, the storage medium may be a non-transitory computer readable storage medium, which may be, for example, ROM, random Access Memory (RAM), CD-ROM, magnetic tape, floppy disk, optical data storage device, and the like.
In an exemplary embodiment, the electronic device of the present application may include at least one processor, and a memory communicatively coupled to the at least one processor, wherein the memory stores a computer program executable by the at least one processor, which when executed by the at least one processor, causes the at least one processor to perform the steps of any of the software analysis methods provided by the embodiments of the present application.
In an exemplary embodiment, a computer program product is also provided, which, when executed by an electronic device, is capable of carrying out any one of the exemplary methods provided by the application.
Also, a computer program product may employ any combination of one or more readable media. The readable medium may be a readable signal medium or a readable storage medium. The readable storage medium can be, for example, but is not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or a combination of any of the foregoing. More specific examples (a non-exhaustive list) of a readable storage medium include an electrical connection having one or more wires, a portable disk, a hard disk, RAM, ROM, erasable programmable read-Only Memory (EPROM), flash Memory, optical fiber, compact disc read-Only Memory (Compact Disk Read Only Memory, CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing.
The program product for software analysis in embodiments of the present application may take the form of a CD-ROM and include program code that can run on a computing device. However, the program product of the present application is not limited thereto, and in this document, a readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
The readable signal medium may include a data signal propagated in baseband or as part of a carrier wave with readable program code embodied therein. Such a propagated data signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination of the foregoing. A readable signal medium may also be any readable medium that is not a readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
Program code embodied on a readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, radio Frequency (RF), etc., or any suitable combination of the foregoing.
Program code for carrying out operations of the present application may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, C++ or the like and conventional procedural programming languages, such as the "C" programming language or similar programming languages. The program code may execute entirely on the user's computing device, partly on the user's device, as a stand-alone software package, partly on the user's computing device, partly on a remote computing device, or entirely on the remote computing device or server. In the case of remote computing devices, the remote computing device may be connected to the user computing device through any kind of network, such as a local area network (Local Area Network, LAN) or wide area network (Wide Area Network, WAN), or may be connected to an external computing device (e.g., connected over the internet using an internet service provider).
It should be noted that although several units or sub-units of the apparatus are mentioned in the above detailed description, such a division is merely exemplary and not mandatory. Indeed, the features and functions of two or more of the elements described above may be embodied in one element in accordance with embodiments of the present application. Conversely, the features and functions of one unit described above may be further divided into a plurality of units to be embodied.
Furthermore, although the operations of the methods of the present application are depicted in the drawings in a particular order, this is not required or suggested that these operations must be performed in this particular order or that all of the illustrated operations must be performed in order to achieve desirable results. Additionally or alternatively, certain steps may be omitted, multiple steps combined into one step to perform, and/or one step decomposed into multiple steps to perform.
It will be appreciated by those skilled in the art that embodiments of the present application may be provided as a method, system, or computer program product. Accordingly, the present application may take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment combining software and hardware aspects. Furthermore, the present application may take the form of a computer program product embodied on one or more computer-usable storage media (including, but not limited to, disk storage, CD-ROM, optical storage, and the like) having computer-usable program code embodied therein.
The present application is described with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the application. It will be understood that each flow and/or block of the flowchart illustrations and/or block diagrams, and combinations of flows and/or blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, embedded processor, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions specified in the flowchart flow or flows and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means which implement the function specified in the flowchart flow or flows and/or block diagram block or blocks.
These computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the flowchart flow or flows and/or block diagram block or blocks.
While preferred embodiments of the present application have been described, additional variations and modifications in those embodiments may occur to those skilled in the art once they learn of the basic inventive concepts. It is therefore intended that the following claims be interpreted as including the preferred embodiments and all such alterations and modifications as fall within the scope of the application.
It will be apparent to those skilled in the art that various modifications and variations can be made to the present application without departing from the spirit or scope of the application. Thus, the present application also includes such modifications and variations provided they come within the scope of the claims and their equivalents.