Source Code Topic Identification via LDA Keyword Extraction

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Complex software systems with millions of lines of source code are difficult to understand and maintain due to lack of documentation, making it challenging to add new features or fix bugs, as existing program analysis techniques fail to convey the functional intent of the system.

Innovation Solution

Applying Latent Dirichlet Allocation (LDA) to identify domain-specific keywords in source code, which are then used to extract topics, allowing for the association of keywords with program elements and facilitating changes by mapping source code entities to LDA model inputs, thereby improving comprehension and maintenance efficiency.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If manual browsing of source code is used to understand functional architecture, then comprehension of small software systems is achieved, but it becomes impossible for large software systems with millions of lines of code

Engineering Contradiction:
Improveease of understanding software systemVSAvoidsoftware system size
Core Design Contradiction:
Ease of operationVSDevice complexity

Solution Approach 1:

The patent extracts domain-specific keywords from source code identifiers (function names, variable names, class names) and organizes them into topics using LDA. This extraction process transforms the complex source code into a simplified topic representation that can be easily browsed and understood, separating the essential functional information from the complex code structure.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent introduces an intermediary layer between the source code and the user understanding process. This intermediary consists of generated topics and keyword associations that mediate between the raw source code complexity and the user's need for functional architecture understanding, making the system accessible without requiring manual code browsing.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Measurement precision

If program analysis techniques (call graph, control flow, data flow) are used to understand structural intricacies, then structural understanding is improved, but functional intent remains unclear

Engineering Contradiction:
Improveprecision of structural understandingVSAvoidfunctional intent information
Core Design Contradiction:
Measurement precisionVSLoss of information

Solution Approach 1:

The patent applies local quality by analyzing specific local elements (identifiers, keywords) within the source code to determine their domain-specific meaning. By examining the local context of individual keywords and their associations, the system captures functional intent that is lost in global structural analysis alone.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The patent changes the parameter of analysis from structural relationships (call graphs, control flow) to semantic relationships (domain-specific keyword associations). This parameter transformation enables the system to capture functional intent by analyzing the meaning of identifiers rather than just their structural connections.

Inventive Principle:
Principle #35Parameter changes

3Adaptability or versatility

If no documentation exists in large software systems, then system flexibility and adaptability are maintained, but maintenance difficulty increases significantly

Engineering Contradiction:
Improvesoftware system flexibilityVSAvoidmaintenance efficiency
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

The patent enables the software system to serve itself by automatically generating documentation-like topic representations from the source code. The system extracts keywords and organizes them into topics that describe functional architecture, providing self-documentation without requiring manual authoring and maintaining this documentation as code evolves.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The patent performs preliminary action by extracting and organizing domain-specific keywords into topics before maintenance activities begin. This pre-processing creates an understandable representation of the system architecture that maintenance personnel can use immediately, eliminating the need to read through millions of lines of code during maintenance tasks.

Inventive Principle:
Principle #10Preliminary action

4Measurement precision

If domain specific keywords are extracted from source code identifiers, then topic identification accuracy is improved, but processing time and computational complexity increase

Engineering Contradiction:
Improveaccuracy of topic identificationVSAvoidprocessing time
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

The patent extracts only the most relevant domain-specific keywords from source code identifiers, filtering out generic programming terms. By selectively extracting only the meaningful keywords rather than processing all identifiers uniformly, the system achieves high accuracy while reducing processing time.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent applies partial action by processing only the necessary portions of the source code (identifiers and their keywords) rather than analyzing the entire codebase in detail. This selective processing approach provides sufficient accuracy for topic identification without the computational cost of exhaustive analysis.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS8209665B2Identification of topics in source code
Publication Date: 2012.06.26 INFOSYS LTD
  • US8209665B2 patent drawing
  • US8209665B2 patent drawing
  • US8209665B2 patent drawing

AI summary

Topics in source code can be identified using Latent Dirichlet Allocation (LDA) by receiving source code, identifying domain specific keywords from the source code, generating a keyword matrix, processing the keyword matrix and the source code using LDA, and outputting a list of topics. The list of topics is output as collections of domain specific keywords. Probabilities of domain specific keywords belonging to their respective topics can also be output. The keyword matrix comprises weighted sums of occurrences of domain specific keywords in the source code.