Automated Component Discovery from Source Code

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Manual component discovery in large-scale applications is challenging due to complexity and variability, often leading to inconsistent results and difficulties in achieving a component-level view, especially when documentation is lacking or outdated.

Innovation Solution

An automated component discovery system that analyzes object-oriented source code to identify business classes, extract features, estimate similarity, cluster classes, determine interfaces, and generate a visual depiction of components, using machine-readable instructions to facilitate objective component identification and visualization without requiring runtime information or empirical tests.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If manual component discovery is used in large-scale applications, then human understanding and flexibility are maintained, but the process becomes challenging and inconsistent due to complexity and lack of documentation

Engineering Contradiction:
Improvecomponent identification accuracyVSAvoidmanual discovery difficulty
Core Design Contradiction:
Measurement precisionVSEase of operation

Solution Approach 1:

The patent replaces manual mechanical analysis with automated static analysis technology. The system uses machine learning models and algorithms to automatically discover components, interfaces, and dependencies from source code without requiring human execution or runtime information, thereby improving consistency and accuracy while reducing manual effort

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

Solution Approach 2:

The system enables the codebase to reveal its own structure through automated analysis. By extracting features directly from source code and using clustering algorithms, the system allows the application itself to define its component boundaries and relationships without external manual intervention, achieving objective and reproducible results

Inventive Principle:
Principle #25Self-service

2Reliability

If automated component discovery is implemented, then consistency and accuracy are improved, but the system complexity increases due to multiple analysis steps and algorithms

Engineering Contradiction:
Improvecomponent discovery consistencyVSAvoidsystem architecture complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent divides the component discovery process into distinct modular stages: feature extraction, similarity estimation, clustering, and validation. Each stage handles a specific aspect of the analysis, making the overall complex system manageable and maintainable while ensuring consistent and reliable results through structured processing

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system employs a unified static analysis framework that can handle multiple types of code elements (classes, methods, interfaces) and generate comprehensive component views simultaneously. The same core algorithms and processing pipeline work across different codebases and application types, reducing the need for separate specialized tools and simplifying the system architecture

Inventive Principle:
Principle #6Universality (Multi-functionality)

3Productivity

If static analysis without runtime information is used, then productivity is improved by avoiding empirical tests, but measurement precision may be affected by lack of execution data

Engineering Contradiction:
Improvecomponent discovery speedVSAvoidfunctional accuracy
Core Design Contradiction:
ProductivityVSMeasurement precision

Solution Approach 1:

The system performs comprehensive feature extraction and analysis on the static codebase before any runtime execution. By pre-computing all necessary features, dependencies, and relationships from source code alone, the system prepares complete component models in advance, achieving both high productivity and accurate functional understanding without requiring empirical tests

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent introduces feature extraction and similarity estimation algorithms as intermediaries between the static source code and the final component models. These intermediaries transform raw code into meaningful representations that capture functional relationships, enabling accurate component discovery purely from static analysis without needing runtime behavior data

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS9323520B2Component discovery from source code
Publication Date: 2016.04.26 ACCENTURE GLOBAL SERVICES LTD
  • US9323520B2 patent drawing
  • US9323520B2 patent drawing
  • US9323520B2 patent drawing

AI summary

A method for component discovery from source code may include receiving source code, and determining business classes by excluding packages and classes in the source code identified as belonging to a presentation layer, as belonging to a data access layer, as models and/or as utilities. The method may further include extracting multi-dimensional features from the business classes, estimating similarity for business class pairs based on the extracted multi-dimensional features, clustering the business classes based on the similarity and mapping functional concepts to the clusters. The clusters generated by the clustering may represent components of the source code. The method may also include determining interfaces for the components based on the clustering.