IP Library Granted Patent US 11,513,794
Granted Patent B2
US 11,513,794 · App. 14/563,469 · Granted Nov 29, 2022

Estimating indirect interface implementation before load time based on directly implemented methods

Inventors: Shiri Semo Judelman (Kfar-Saba, IL); Asaf Dafner (Gedera, IL); Eyal Koren (Dafna, IL)
Assignee: BMC Software Israel Ltd
G06F9/00G06F8/61G06F9/449G06F9/45504
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,513,794
App. No.
14/563,469
Granted
Nov 29, 2022
Kind
B2
Abstract

According to an example implementation, a computer-readable storage medium, computer-implemented method and a system are provided to receive a first class, the first class indirectly implementing a first interface, wherein the first class extends a second class that directly implements the first interface, identify one or more directly implemented methods within the first class, determine a method signature for one or more of the directly implemented methods, estimate that the first class indirectly implements the first interface based on the method signatures for the one or more directly implemented methods, and instrument the first class based on the estimating that the first class indirectly implements the first interface.

Claims (63)

1. A non-transitory computer-readable storage medium comprising computer-readable instructions stored thereon that, when executed, are configured to cause a processor to at least:

receive a first class, the first class indirectly implementing a first interface, wherein the first class extends a second class that directly implements the first interface, the first interface including one or more first interface methods that are indirectly implemented by the first class;

identify one or more directly implemented methods within the first class;

determine a method signature for one or more of the directly implemented methods within the first class;

determine that the first class indirectly implements the first interface based on a comparison of the method signature for the one or more directly implemented methods within the first class to a method signature of the one or more first interface methods that are indirectly implemented by the first class;

instrument the first class based on the determining that the first class indirectly implements the first interface; and

load the first class into memory subsequent to instrumenting the first class.

2. The computer-readable storage medium of claim 1 wherein each method signature includes a method name and one or more method parameters.

3. The computer-readable storage medium of claim 1 wherein the computer-readable instructions configured to cause the processor to determine that the first class indirectly implements the first interface comprise instructions, that when executed, are configured to cause the processor to at least:

compare the method signature for the one or more directly implemented methods within the first class to the method signature of the one or more first interface methods; and

identify one or more of the directly implemented methods having a method signature that matches a method signature of one or more of the first interface methods that are indirectly implemented by the first class.

4. The computer-readable storage medium of claim 1 wherein the computer-readable instructions configured to cause the processor to determine that the first class indirectly implements the first interface comprise instructions, that when executed, are configured to cause the processor to at least:

for each first interface method of a plurality of the first interface methods:

determine a respective method signature for the first interface method, and

assign a weight to the respective method signature based on a number of occurrences of the method signature within a group of classes and interfaces;

compare the method signature for the one or more directly implemented methods to each respective method signature;

identify one or more of the directly implemented methods having a method signature that matches the respective method signature of one of the first interface methods;

determine a class score for the first class with respect to the first interface as a sum of the weights of matching respective method signatures;

compare the class score to a threshold; and

determine that the class score is greater than the threshold.

5. The computer-readable storage medium of claim 4 wherein the computer-readable instructions configured to cause the processor to assign a weight comprise instructions, that when executed, are configured to cause the processor to:

determine a number of occurrences of each interface method signature of the plurality of first interface methods within a group that includes at least one class or interface other than the first class, wherein one or more of the classes implements one or more interfaces; and

assign a weight to each interface method signature of the plurality of first interface methods, wherein the weight assigned to each interface method signature of the plurality of first interface methods is inversely related to the number of occurrences of the interface method signature within the group.

6. The computer-readable storage medium of claim 1 wherein the method signature includes a method name and a type of each parameter of the method.

7. The computer-readable storage medium of claim 1 wherein the first class includes byte-code, wherein the computer-readable instructions configured to cause the processor to instrument the first class comprise instructions, that when executed, are configured to cause the processor to inject additional byte-code into the first class in order to record or monitor an execution of the first class.

8. The computer-readable storage medium of claim 1 wherein the first class extends a second class that directly implements the first interface.

9. A computer implemented method performed by a processor comprising:

receiving a first class, the first class indirectly implementing a first interface, wherein the first class extends a second class that directly implements the first interface, the first interface including one or more first interface methods that are indirectly implemented by the first class;

identifying one or more directly implemented methods within the first class;

determining a method signature for one or more of the directly implemented methods within the first class;

determining that the first class indirectly implements the first interface based on a comparison of the method signature for the one or more directly implemented methods within the first class to a method signature of the one or more first interface methods that are indirectly implemented by the first class;

instrumenting the first class based on the determining that the first class indirectly implements the first interface; and

loading the first class into memory subsequent to instrumenting the first class.

10. The computer implemented method of claim 9 wherein each method signature comprises a method name and one or more method parameters for a method.

11. The computer implemented method of claim 9 wherein the determining that the first class indirectly implements the first interface comprises:

comparing the method signature for the one or more directly implemented methods within the first class to the method signature of the one or more first interface methods; and

identifying one or more of the directly implemented methods having a method signature that matches a method signature of one or more of the first interface methods that are indirectly implemented by the first class.

12. The computer implemented method of claim 9 wherein the determining that the first class indirectly implements the first interface comprises:

for each first interface method of a plurality of the first interface methods:

determining a respective method signature for the first interface method, and

assigning a weight to the respective method signature based on a number of occurrences of the method signature within a group of classes and interfaces;

comparing the method signature for the one or more directly implemented methods to each respective method signature;

identifying one or more of the directly implemented methods having a method signature that matches the respective method signature of one of the first interface methods;

determining a class score for the first class with respect to the first interface as a sum of the weights of matching respective method signatures;

comparing the class score to a threshold; and

determining that the class score is greater than the threshold.

13. The computer implemented method of claim 12 wherein the assigning a weight comprises:

determining a number of occurrences of each interface method signature of the plurality of first interface methods within a group that includes at least one class or interface other than the first class, wherein one or more of the classes implements one or more interfaces; and

assigning a weight to each interface method signature of the plurality of first interface methods, wherein the weight assigned to each interface method signature of the plurality of first interface methods is inversely related to the number of occurrences of the interface method signature within the group.

14. The computer implemented method of claim 9 wherein the method signature includes a method name and a type of each parameter of the method.

15. The computer implemented method of claim 9 wherein the first class includes byte-code, wherein the instrumenting the first class comprises injecting additional byte-code into the first class in order to record or monitor an execution of the first class.

16. The computer implemented method of claim 9 wherein the first class extends a second class that directly implements the first interface.

17. A non-transitory computer-readable storage medium comprising computer-readable instructions stored thereon that, when executed, are configured to cause a processor to at least:

receive a first class, the first class indirectly implementing a first interface, wherein the first class extends a second class that directly implements the first interface, the first interface including a plurality of first interface methods that are indirectly implemented by the first class;

identify one or more directly implemented methods within the first class;

determine a method signature for one or more of the directly implemented methods within the first class;

determine a method signature for one or more of the plurality of first interface methods that are indirectly implemented by the first class;

determine a weight for the method signature of one or more of the plurality of first interface methods;

determine that the first class indirectly implements the first interface based on the weight for the method signature of one or more of the plurality of first interface methods, and a comparison of the method signature for the one or more directly implemented methods within the first class to the method signature for one or more of the plurality of first interface methods that are indirectly implemented by the first class;

instrument the first class based on the determining that the first class indirectly implements the first interface; and

load the first class subsequent to instrumenting the first class.

18. The computer-readable storage medium of claim 17 wherein the computer-readable instructions configured to cause the processor to determine that the first class indirectly implements the first interface comprise instructions, that when executed, are configured to cause the processor to:

determine, before instrumenting or loading the first class, that the first class indirectly implements the first interface based on the weight for the method signature of one or more of the plurality of first interface methods, and a comparison of the method signature for the one or more directly implemented methods within the first class to the method signature for one or more of the plurality of first interface methods that are indirectly implemented by the first class.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 17, 2026
From: BMC SOFTWARE ISRAEL LTD
To: BMC HELIX ISRAEL LTD.
Reel/Frame 075403/0859 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 9, 2018
From: IDENTIFY SOFTWARE LTD.
To: BMC SOFTWARE ISRAEL LTD.
Reel/Frame 047465/0855 →
MERGER Recorded Nov 9, 2018
From: IDENTIFY SOFTWARE LTD.
To: BMC SOFTWARE ISRAEL LTD.
Reel/Frame 047465/0871 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 10, 2014
From: JUDELMAN, SHIRI SEMO; DAFNER, ASAF; KOREN, EYAL
To: IDENTIFY SOFTWARE LTD. (IL)
Reel/Frame 034445/0983 →
Continuity (2)
Continuation 13623593 · Sep 20, 2012
Related Publication 20150160947A1 · Jun 11, 2015