Automation of software verification
First Claim
Patent Images
1. A method, comprising:
- generating, by a hardware processor, one or more application program interface (API) call pairs based on a source code of a user module, wherein each of the one or more API call pairs comprises a first API call that invokes an associated API and a second API call that invokes the same associated API;
generating, by the hardware processor, one or more fragments based on the one or more API call pairs, wherein each of the one or more fragments represents an execution sequence that includes at least one of the one or more API call pairs, the fragments are generated further based on at least one of a prefix set or a suffix set, the prefix set includes at least one prefix in the user module, and the suffix set includes at least one suffix in the user module, and wherein the prefix set comprises an allowed prefix set and a required prefix set, and the suffix set comprises an allowed suffix set and a required suffix set, and wherein the allowed prefix set is obtained based on a union of first API calls of the one or more fragments, the allowed suffix set is obtained based on a union of last API calls of the one or more fragments, the required prefix set is obtained based on an intersection of the first API calls of the one or more fragments, and the required suffix set is obtained based on an intersection of the last API calls of the one or more fragments; and
determining, by the hardware processor, whether an assertion is violated by the one or more fragments.
5 Assignments
0 Petitions
Accused Products
Abstract
Systems, methods, and software can be used to automate software verifications. In some aspects, one or more application program interface (API) call pairs are generated based on a source code of a user module that invokes an API. Each of the one or more API call pairs comprises a first API call that invokes the API followed by a second API call that invokes the API. One or more fragments are generated based on the one or more API calls pairs. Each of the one or more fragments represents an execution sequence that includes at least one of the one or more API call pairs. The one or more fragments are verified.
12 Citations
14 Claims
-
1. A method, comprising:
-
generating, by a hardware processor, one or more application program interface (API) call pairs based on a source code of a user module, wherein each of the one or more API call pairs comprises a first API call that invokes an associated API and a second API call that invokes the same associated API; generating, by the hardware processor, one or more fragments based on the one or more API call pairs, wherein each of the one or more fragments represents an execution sequence that includes at least one of the one or more API call pairs, the fragments are generated further based on at least one of a prefix set or a suffix set, the prefix set includes at least one prefix in the user module, and the suffix set includes at least one suffix in the user module, and wherein the prefix set comprises an allowed prefix set and a required prefix set, and the suffix set comprises an allowed suffix set and a required suffix set, and wherein the allowed prefix set is obtained based on a union of first API calls of the one or more fragments, the allowed suffix set is obtained based on a union of last API calls of the one or more fragments, the required prefix set is obtained based on an intersection of the first API calls of the one or more fragments, and the required suffix set is obtained based on an intersection of the last API calls of the one or more fragments; and determining, by the hardware processor, whether an assertion is violated by the one or more fragments. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A device, comprising:
-
at least one hardware processor; and a non-transitory computer-readable storage medium coupled to the at least one hardware processor and storing programming instructions for execution by the at least one hardware processor, wherein the programming instructions, when executed, cause the at least one hardware processor to perform operations comprising; generating one or more application program interface (API) call pairs based on a source code of a user module, wherein each of the one or more API call pairs comprises a first API call that invokes an associated API and a second API call that invokes the same associated API; generating one or more fragments based on the one or more API call pairs, wherein each of the one or more fragments represents an execution sequence that includes at least one of the one or more API call pairs, the fragments are generated further based on at least one of a prefix set or a suffix set, the prefix set includes at least one prefix in the user module, and the suffix set includes at least one suffix in the user module, and wherein the prefix set comprises an allowed prefix set and a required prefix set, and the suffix set comprises an allowed suffix set and a required suffix set, and wherein the allowed prefix set is obtained based on a union of first API calls of the one or more fragments, the allowed suffix set is obtained based on a union of last API calls of the one or more fragments, the required prefix set is obtained based on an intersection of the first API calls of the one or more fragments, and the required suffix set is obtained based on an intersection of the last API calls of the one or more fragments; and determining whether an assertion is violated by the one or more fragments. - View Dependent Claims (7, 8, 9, 10)
-
-
11. A non-transitory computer-readable medium storing instructions which, when executed, cause a computing device to perform operations comprising:
-
generating one or more application program interface (API) call pairs based on a source code of a user module, wherein each of the one or more API call pairs comprises a first API call that invokes an associated API and a second API call that invokes the same associated API; generating one or more fragments based on the one or more API call pairs, wherein each of the one or more fragments represents an execution sequence that includes at least one of the one or more API call pairs, the fragments are generated further based on at least one of a prefix set or a suffix set, the prefix set includes at least one prefix in the user module, and the suffix set includes at least one suffix in the user module, and wherein the prefix set comprises an allowed prefix set and a required prefix set, and the suffix set comprises an allowed suffix set and a required suffix set, and wherein the allowed prefix set is obtained based on a union of first API calls of the one or more fragments, the allowed suffix set is obtained based on a union of last API calls of the one or more fragments, the required prefix set is obtained based on an intersection of the first API calls of the one or more fragments, and the required suffix set is obtained based on an intersection of the last API calls of the one or more fragments; and determining whether an assertion is violated by the one or more fragments. - View Dependent Claims (12, 13, 14)
-
Specification