IP Library › Granted Patent US 11,474,817
Granted Patent B2
US 11,474,817 · App. 16/401,635 · Granted Oct 18, 2022

Provenance-based reuse of software code

Inventors: Vitor Sousa (Niterói, BR); Jonas F. Dias (Rio de Janeiro, BR); Adriana Bechara Prado (Niterói, BR)
Assignee: EMC IP Holding Company LLC
G06F8/751G06F8/36G06F8/73
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,474,817
App. No.
16/401,635
Granted
Oct 18, 2022
Kind
B2
Abstract

Techniques are provided for provenance-based software script reuse. One method comprises extracting provenance data from source code including, for example, source code fragments, wherein the extracted provenance data indicates a control flow and a data flow of the source code; encapsulating source code fragments from the source code that satisfy one or more similarity criteria as a reusable source code fragment; and providing a repository of encapsulated reusable source code fragments for reuse during a development of new software scripts. The repository of encapsulated reusable source code fragments optionally comprises a searchable database further including, for example, the provenance data, data annotations, input parameters and generated results for the corresponding source code fragment.

Claims (32)

1. A method, comprising:

extracting provenance data from source code in a source code corpus, wherein the source code comprises a plurality of source code fragments, and wherein the extracted provenance data indicates a control flow of the source code and a data flow of the source code;

encapsulating two or more source code fragments from the source code that satisfy one or more similarity criteria as a reusable source code fragment; and

providing a repository of a plurality of the encapsulated reusable source code fragments for reuse during a development of new software scripts, wherein the repository of encapsulated reusable source code fragments further comprises a searchable database comprising the extracted provenance data indicating the control flow of the source code and the data flow of the source code, wherein the data flow of the source code indicates data generated by past executions of the source code such that at least one encapsulated reusable source code fragment is identified in the repository that: (i) generates a given dataset and (ii) has one or more given input parameters, wherein the given dataset and the one or more given input parameters are identified in a query submitted to identify one or more of the at least one encapsulated reusable source code fragment for reuse in another source code, and wherein a processing of the query comprises identifying the given dataset, identified in the query, in the indicated data generated by the past executions of the source code in the extracted provenance data;

wherein the method is performed by at least one processing device comprising a processor coupled to a memory.

2. The method of claim 1 , further comprising storing data annotations made to the source code by a software developer as metadata for the source code.

3. The method of claim 1 , wherein the extracted provenance data comprises information about code structures of the source code and a sequential order of procedures executed by the source code.

4. The method of claim 1 , wherein the encapsulating the two or more source code fragments from the source code that satisfy the similarity criteria as the encapsulated reusable source code fragment further comprises performing a pairwise comparison of pairs of the source code fragments to identify similar source code fragments.

5. The method of claim 1 , wherein the encapsulating the two or more source code fragments from the source code that satisfy the similarity criteria as the encapsulated reusable source code fragment further comprises clustering similar lines of software code from multiple source code scripts using a distance metric relative to a centroid of a given cluster to select at least a subset of source code fragments in the given cluster and encapsulating the selected subset of source code fragments of the given cluster as the encapsulated reusable source code fragments.

6. The method of claim 1 , wherein the searchable database further comprises data annotations, the input parameters and the data generated by the past executions of the source code for a corresponding source code fragment.

7. The method of claim 6 , wherein at least a portion of the repository of encapsulated reusable source code fragments follows a standard data model to provide one or more of interoperability, reliability, and reproducibility of the new software scripts.

8. The method of claim 1 , wherein the data flow of the source code is used to identify data to store in a faster storage class relative to at least one additional storage class.

9. A computer program product, comprising a tangible processor-readable storage medium having encoded therein executable code of one or more software programs, wherein the one or more software programs when executed by at least one processing device perform the following steps:

extracting provenance data from source code in a source code corpus, wherein the source code comprises a plurality of source code fragments, and wherein the extracted provenance data indicates a control flow of the source code and a data flow of the source code;

encapsulating two or more source code fragments from the source code that satisfy one or more similarity criteria as a reusable source code fragment; and

providing a repository of a plurality of the encapsulated reusable source code fragments for reuse during a development of new software scripts, wherein the repository of encapsulated reusable source code fragments further comprises a searchable database comprising the extracted provenance data indicating the control flow of the source code and the data flow of the source code, wherein the data flow of the source code indicates data generated by past executions of the source code such that at least one encapsulated reusable source code fragment is identified in the repository that: (i) generates a given dataset and (ii) has one or more given input parameters, wherein the given dataset and the one or more given input parameters are identified in a query submitted to identify one or more of the at least one encapsulated reusable source code fragment for reuse in another source code, and wherein a processing of the submitted query comprises identifying the given dataset, identified in the submitted query, in the indicated data generated by the past executions of the source code in the extracted provenance data.

10. The computer program product of claim 9 , wherein the extracted provenance data comprises information about code structures of the source code and a sequential order of procedures executed by the source code.

11. The computer program product of claim 9 , wherein the step of encapsulating the two or more source code fragments from the source code that satisfy the similarity criteria as the encapsulated reusable source code fragment further comprises a step of performing a pairwise comparison of pairs of the source code fragments to identify similar source code fragments.

12. The computer program product of claim 9 , wherein the step of encapsulating the two or more source code fragments from the source code that satisfy the similarity criteria as the encapsulated reusable source code fragment further comprises a step of clustering similar lines of software code from multiple source code scripts using a distance metric relative to a centroid of a given cluster to select at least a subset of source code fragments in the given cluster and encapsulating the selected subset of source code fragments of the given cluster as the encapsulated reusable source code fragments.

13. The computer program product of claim 9 , wherein the searchable database further comprises data annotations, the input parameters and the data generated by the past executions of the source code for a corresponding source code fragment.

14. The computer program product of claim 13 , wherein at least a portion of the repository of encapsulated reusable source code fragments follows a standard data model to provide one or more of interoperability, reliability, and reproducibility of the new software scripts.

15. An apparatus, comprising:

a memory; and

at least one processing device, coupled to the memory, operative to implement the following steps:

extracting provenance data from source code in a source code corpus, wherein the source code comprises a plurality of source code fragments, and wherein the extracted provenance data indicates a control flow of the source code and a data flow of the source code;

encapsulating two or more source code fragments from the source code that satisfy one or more similarity criteria as a reusable source code fragment; and

providing a repository of a plurality of the encapsulated reusable source code fragments for reuse during a development of new software scripts, wherein the repository of encapsulated reusable source code fragments further comprises a searchable database comprising the extracted provenance data indicating the control flow of the source code and the data flow of the source code, wherein the data flow of the source code indicates data generated by past executions of the source code such that at least one encapsulated reusable source code fragment is identified in the repository that: (i) generates a given dataset and (ii) has one or more given input parameters, wherein the given dataset and the one or more given input parameters are identified in a query submitted to identify one or more of the at least one encapsulated reusable source code fragment for reuse in another source code, and wherein a processing of the submitted query comprises identifying the given dataset, identified in the submitted query, in the indicated data generated by the past executions of the source code in the extracted provenance data.

16. The apparatus of claim 15 , further comprising a step of storing data annotations made to the source code by a software developer as metadata for the source code.

17. The apparatus of claim 15 , wherein the extracted provenance data comprises information about code structures of the source code and a sequential order of procedures executed by the source code.

18. The apparatus of claim 15 , wherein the step of encapsulating the two or more source code fragments from the source code that satisfy the similarity criteria as the encapsulated reusable source code fragment further comprises a step of performing a pairwise comparison of pairs of the source code fragments to identify similar source code fragments.

19. The apparatus of claim 15 , wherein the step of encapsulating the two or more source code fragments from the source code that satisfy the similarity criteria as the encapsulated reusable source code fragment further comprises a step of clustering similar lines of software code from multiple source code scripts using a distance metric relative to a centroid of a given cluster to select at least a subset of source code fragments in the given cluster and encapsulating the selected subset of source code fragments of the given cluster as the encapsulated reusable source code fragments.

20. The apparatus of claim 15 , wherein the searchable database further comprises data annotations, the input parameters and the data generated by the past executions of the source code for a corresponding source code fragment.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (050724/0466) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 060753/0486 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053311/0169) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060438/0742 →
RELEASE OF SECURITY INTEREST AT REEL 050405 FRAME 0534 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058001/0001 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 053311/0169 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Oct 15, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 050724/0466 →
SECURITY AGREEMENT Recorded Sep 17, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 050405/0534 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 2, 2019
From: SOUSA, VITOR; DIAS, JONAS F.; PRADO, ADRIANA BECHARA
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 049064/0289 →
Continuity (1)
Related Publication 20200348929A1 · Nov 5, 2020
Cited By (3)
US 12,197,912 US 12,271,866 US 12,277,126