IP Library Granted Patent US 11,836,486
Granted Patent B2
US 11,836,486 · App. 17/525,126 · Granted Dec 5, 2023

Method for identifying open-source software components at the source-code level

Inventors: Heejo Lee (Seongnam-si, KR); Seunghoon Woo (Seoul, KR)
Assignee: Korea University Research and Business Foundation
G06F8/751
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,836,486
App. No.
17/525,126
Granted
Dec 5, 2023
Kind
B2
Abstract

According to some exemplary embodiments of the present disclosure, a method for identifying open source software (OSS) components using a processor of a computing device is disclosed. The method for identifying open source software (OSS) components may include: constructing a component database by performing redundancy elimination for each of a plurality of open source software; and identifying a component of target software by using the component database.

Claims (83)

1. A method for identifying open source software (OSS) components using a processor of a computing device, the method comprising:

performing redundancy elimination for each of a plurality of open source software;

constructing a component database based on the plurality of open source software with the redundancy elimination; and

identifying a component of target software by using the component database,

wherein the identifying of the component of the target software by using the component database includes:

segmenting a source code included in each of the plurality of open source software into an application code part and a borrowed code part, wherein the application code part includes a code recognized as not prepared in another open source software and the borrowed code part includes code recognized as a code first prepared in another open source software, and

comparing a target source code included in the target software and the application code part included in each of the plurality of open source software to extract at least one second open source software used when preparing the target software among the plurality of open source software, and

wherein the segmenting of the source code included in each of the plurality of open source software into the application code part and the borrowed code part includes:

recognizing one or more first functions which appear in a first source code included in third open source software among the plurality of open source software to be subjected to code segmentation,

selecting fourth open source software among the plurality of open source software to be analyzed through a comparison with the third open source software,

recognizing one or more second functions which appear in a second source code included in the fourth open source software,

comparing the one or more first functions and the one or more second functions, and extracting one or more common functions recognized to be the same,

recognizing one or more third functions which appear earlier in the fourth open source software among the one or more common functions, and

removing the one or more third functions from a second dictionary data structure related to the third open source software in the component database.

2. The method of claim 1 , wherein the constructing of the component database by performing the redundancy elimination for each of the plurality of open source software includes

when performing the redundancy elimination for first open source software among the plurality of open source software, recognizing at least one function which appears in each of at least one version of the first open source software, and

setting a hash value of each of the at least one function as a key and setting at least one version in which each of the at least one function appears to a value for the key, and storing the key value in a first dictionary data structure for the first open source software.

3. The method of claim 2 , wherein the first dictionary data structure is distinguished into different groups according to the number of versions in which the function appears.

4. The method of claim 1 , wherein the removing of the one or more third functions from the second dictionary data structure related to the third open source software in the component database includes

when a value calculated based on a first number of the one or more second functions and a second number of the one or more third functions is equal to or more than a predetermined value, removing the one or more third functions from the one or more first functions included in the second dictionary data structure.

5. The method of claim 1 , wherein the comparing of the target source code included in the target software and the application code part included in each of the plurality of open source software to extract at least one second open source software used when preparing the target software among the plurality of open source software includes

recognizing each code similarity value between each of the plurality of open source software and the target software based on a third number of functions commonly included in the function included in the target source code and the function of the application code part of each of the plurality of open source software subjected to the code segmentation and a fourth number of functions of the application code part of each of the plurality of open source software subjected to the code segmentation, and

extracting at least one second open source software in which the code similarity value is equal to or more than a predetermined value among the plurality of open source software subjected to the code segmentation.

6. The method of claim 5 , wherein the code similarity value is determined based on a first equation,

the first equation is

Φ

=

"\[LeftBracketingBar]"

T

S

"\[RightBracketingBar]"

"\[LeftBracketingBar]"

S

"\[RightBracketingBar]"

,

and

the ϕ represents the code similarity value, the T represents the function of the target software, and the S represents the function of the application code part of the plurality of open source software subjected to the code segmentation.

7. A device for identifying open source software components, the device comprising:

a processor configured to perform redundancy elimination for each of a plurality of open source software; and

a component database unit storing a result of performing the redundancy elimination,

wherein the processor is configured to identify a component of target software by using the component database unit,

wherein the processor

segments a source code included in each of the plurality of open source software into an application code part and a borrowed code part, wherein the application code part includes a code recognized as not prepared in another open source software and the borrowed code part includes code recognized as a code first prepared in another open source software, and

compares the target source code included in the target software and the application code part included in each of the plurality of open source software to extract at least one second open source software used when preparing the target software among the plurality of open source software, and

wherein the processor

recognizes one or more first functions which appear in a first source code included in third open source software among the plurality of open source software to be subjected to code segmentation,

selects fourth open source software among the plurality of open source software to be analyzed through a comparison with the third open source software,

recognizes one or more second functions which appear in a second source code included in the fourth open source software,

compares the one or more first functions and the one or more second functions and extracts one or more common functions recognized to be the same,

recognizes one or more third functions which appear earlier in the fourth open source software among the one or more common functions, and

removes the one or more third functions from a second dictionary data structure related to the third open source software in the component database unit.

8. The device of claim 7 , wherein the processor

when performing the redundancy elimination for first open source software among the plurality of open source software, recognizes at least one function which appears in each of at least one version of the first open source software, and

sets a hash value of each of the at least one function as a key and sets at least one version in which each of the at least one function appears to a value for the key, and stores the key value in the component database unit as a first dictionary data structure for the first open source software.

9. The device of claim 8 , wherein the first dictionary data structure is distinguished into different groups according to the number of versions in which the function appears.

10. The device of claim 7 , wherein the processor removes the one or more third functions from the one or more first functions included in the second dictionary data structure when a value calculated based on a first number of the one or more second functions and a second number of the one or more third functions is equal to or more than a predetermined value.

11. The device of claim 7 , wherein the processor

recognizes each code similarity value between each of the plurality of open source software and the target software based on a third number of functions commonly included in the function included in the target source code and the function of the application code part of each of the plurality of open source software subjected to the code segmentation and a fourth number of functions of the application code part of each of the plurality of open source software subjected to the code segmentation, and

extracts at least one second open source software in which the code similarity value is equal to or more than a predetermined value among the plurality of open source software subjected to the code segmentation.

12. The device of claim 11 , wherein the code similarity value is determined based on a first equation,

the first equation is

Φ

=

"\[LeftBracketingBar]"

T

S

"\[RightBracketingBar]"

"\[LeftBracketingBar]"

S

"\[RightBracketingBar]"

,

and

the ϕ represents the code similarity value, the T represents the function of the target software, and the S represents the function of the application code part of the plurality of open source software subjected to the code segmentation.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 12, 2021
From: LEE, HEEJO; WOO, SEUNGHOON
To: KOREA UNIVERSITY RESEARCH AND BUSINESS FOUNDATION
Reel/Frame 058097/0676 →
Priority Claims (1)
KR 10-2021-0010585 · Jan 26, 2021 · national
Continuity (1)
Related Publication 20220236984A1 · Jul 28, 2022
Cited By (1)
US 12,282,766