IP Library Granted Patent US 11,947,957
Granted Patent B2
US 11,947,957 · App. 17/574,450 · Granted Apr 2, 2024

Grouping software applications based on technical facets

Inventors: Phillip Steven Woods (Orange Beach, AL); Joseph G Szodfridt (Yardley, PA); Christopher Michael Umbel (Pittsburgh, PA); Shaun Anderson (Golden, CO); Rohit Bajaj (Sandy Springs, GA)
Assignee: VMware LLC
G06F8/75G06F8/30G06F18/2137
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,947,957
App. No.
17/574,450
Granted
Apr 2, 2024
Kind
B2
Abstract

Embodiments of the present disclosure provide to techniques for automatically grouping software applications based on their technical patterns/characteristics (i.e., technical facets) via machine learning (ML) algorithms. For instance, a first set of software applications that exhibit a high prevalence of one or more first technical facets may be grouped into a first category, a second set of software applications that exhibit a high prevalence of one or more second technical facets may be grouped into a second category, and so on. Once grouped into categories, the software applications in a given category may be assessed, analyzed, and/or processed together for various purposes.

Claims (53)

1. A method comprising:

receiving, by a computer system, source code or binaries for a plurality of software applications;

parsing, by the computer system, the source code or binaries and, based on the parsing, extracting information regarding occurrences of a plurality of technical facets in the source code or binaries, a technical facet being a technical pattern or characteristic found in a software application;

creating, by the computer system, a file based on the extracted information, the file comprising a plurality of entries that record counts of the occurrences;

converting, by the computer system, contents of the file into a matrix that presents the plurality of entries in a cross-tabular format, the matrix including a row for each software application in the plurality of software applications, a column for each technical facet in the plurality of technical facets, and a value at an intersecting cell of each row and each column indicating a number of times the technical facet of said each column was found in the software application of said each row;

processing, by the computer system, the matrix using a machine learning (ML)-based dimensionality reduction algorithm, the processing using the ML-based dimensionality reduction algorithm resulting in output of a dimensionally reduced matrix;

processing, by the computer system, the dimensionally reduced matrix using a ML-based clustering algorithm, the processing using the ML-based clustering algorithm resulting in output of a set of clusters that each includes one or more of the plurality of software applications; and

generating, by the computer system, one or more visualizations or reports that present the plurality of software applications in categories based on the set of clusters.

2. The method of claim 1 wherein the plurality of technical facets include packages or libraries imported by the plurality of software applications.

3. The method of claim 1 wherein the plurality of technical facets include methods or functions invoked by the plurality of software applications.

4. The method of claim 1 wherein the plurality of technical facets include annotations or tags present in the source code or binaries of the plurality of software applications.

5. The method of claim 1 further comprising, prior to converting the contents of the file into the matrix, modifying the plurality of entries by:

disregarding occurrences of technical facets that correspond to commonly used packages or libraries; and

modifying names of technical facets that correspond to packages or libraries to remove non-descriptive portions in the names.

6. The method of claim 1 further comprising, prior to converting the contents of the file into the matrix, modifying the plurality of entries by:

de-skewing the counts by computing a natural log of each count twice.

7. The method of claim 1 wherein the one or more visualizations include a heatmap for each cluster that presents most commonly occurring technical facets in said each cluster and a per-application count of each of the most commonly occurring technical facets.

8. A non-transitory computer readable storage medium having stored thereon program code executable by a computer system, the program code embodying a method comprising:

receiving source code or binaries for a plurality of software applications;

parsing the source code or binaries and, based on the parsing, extracting information regarding occurrences of a plurality of technical facets in the source code or binaries, a technical facet being a technical pattern or characteristic found in a software application;

creating a file based on the extracted information, the file comprising a plurality of entries that record counts of the occurrences;

converting contents of the file into a matrix that presents the plurality of entries in a cross-tabular format, the matrix including a row for each software application in the plurality of software applications, a column for each technical facet in the plurality of technical facets, and a value at an intersecting cell of each row and each column indicating a number of times the technical facet of said each column was found in the software application of said each row;

processing the matrix using a machine learning (ML)-based dimensionality reduction algorithm, the processing using the ML-based dimensionality reduction algorithm resulting in output of a dimensionally reduced matrix;

processing the dimensionally reduced matrix using a ML-based clustering algorithm, the processing using the ML-based clustering algorithm resulting in output of a set of clusters that each includes one or more of the plurality of software applications; and

generating one or more visualizations or reports that present the plurality of software applications in categories based on the set of clusters.

9. The non-transitory computer readable storage medium of claim 8 wherein the plurality of technical facets include packages or libraries imported by the plurality of software applications.

10. The non-transitory computer readable storage medium of claim 8 wherein the plurality of technical facets include methods or functions invoked by the plurality of software applications.

11. The non-transitory computer readable storage medium of claim 8 wherein the plurality of technical facets include annotations or tags present in the source code or binaries of the plurality of software applications.

12. The non-transitory computer readable storage medium of claim 8 wherein the method further comprises, prior to converting the contents of the file into the matrix, modifying the plurality of entries by:

disregarding occurrences of technical facets that correspond to commonly used packages or libraries; and

modifying names of technical facets that correspond to packages or libraries to remove non-descriptive portions in the names.

13. The non-transitory computer readable storage medium of claim 8 wherein the method further comprises, prior to converting the contents of the file into the matrix, modifying the plurality of entries by:

de-skewing the counts by computing a natural log of each count twice.

14. The non-transitory computer readable storage medium of claim 8 wherein the one or more visualizations include a heatmap for each cluster that presents most commonly occurring technical facets in said each cluster and a per-application count of each of the most commonly occurring technical facets.

15. A computer system comprising:

a processor; and

a non-transitory computer readable medium having stored thereon program code that, when executed, causes the processor to:

receive source code or binaries for a plurality of software applications;

parse the source code or binaries and, based on the parsing, extract information regarding occurrences of a plurality of technical facets in the source code or binaries, a technical facet being a technical pattern or characteristic found in a software application;

create a file based on the extracted information, the file comprising a plurality of entries that record counts of the occurrences;

convert contents of the file into a matrix that presents the plurality of entries in a cross-tabular format, the matrix including a row for each software application in the plurality of software applications, a column for each technical facet in the plurality of technical facets, and a value at an intersecting cell of each row and each column indicating a number of times the technical facet of said each column was found in the software application of said each row;

process the matrix using a machine learning (ML)-based dimensionality reduction algorithm, the processing using the ML-based dimensionality reduction algorithm resulting in output of a dimensionally reduced matrix;

process the dimensionally reduced matrix using a ML-based clustering algorithm, the processing using the ML-based clustering algorithm resulting in output of a set of clusters that each includes one or more of the plurality of software applications; and

generate one or more visualizations or reports that present the plurality of software applications in categories based on the set of clusters.

16. The computer system of claim 15 wherein the plurality of technical facets include packages or libraries imported by the plurality of software applications.

17. The computer system of claim 15 wherein the plurality of technical facets include methods or functions invoked by the plurality of software applications.

18. The computer system of claim 15 wherein the plurality of technical facets include annotations or tags present in the source code or binaries of the plurality of software applications.

19. The computer system of claim 15 wherein the program code further causes the processor to, prior to converting the contents of the file into the matrix, modifying the plurality of entries by:

disregard occurrences of technical facets that correspond to commonly used packages or libraries; and

modify names of technical facets that correspond to packages or libraries to remove non-descriptive portions in the names.

20. The computer system of claim 15 wherein the program code further causes the processor to, prior to converting the contents of the file into the matrix, modifying the plurality of entries by:

de-skew the counts by computing a natural log of each count twice.

21. The computer system of claim 15 wherein the one or more visualizations include a heatmap for each cluster that presents most commonly occurring technical facets in said each cluster and a per-application count of each of the most commonly occurring technical facets.

Assignments (2)
CHANGE OF NAME Recorded Feb 27, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 066692/0103 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 17, 2022
From: WOODS, PHILLIP STEVEN; SZODFRIDT, JOSEPH G; UMBEL, CHRISTOPHER MICHAEL; ANDERSON, SHAUN; BAJAJ, ROHIT
To: VMWARE INC.
Reel/Frame 058673/0783 →