Method Ranking via Call Stack Dependency Analysis
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Developers and users face inefficiencies in analyzing and determining the importance of software code or method changes in large and complex software systems, often relying on intuition due to the lack of effective tools for assessing impact and importance.
Innovation Solution
A framework that tracks method invocations through marking records to rebuild a call stack, generating a calling dependency representation, and ranking methods based on this representation, allowing for the identification of important and impacted methods.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Measurement precision
If developers analyze all code or methods in large software systems, then complete coverage is achieved, but analysis efficiency deteriorates due to system complexity and size
Solution Approach 1:
The patent segments the large software system into individual methods and organizes them into a call stack hierarchy. By dividing the codebase into discrete, analyzable units (methods) and their dependency relationships (call stack), the system enables focused analysis of specific code segments rather than requiring analysis of the entire codebase at once, thus maintaining completeness while improving efficiency
Solution Approach 2:
The patent extracts only the necessary code elements (methods and their invocation relationships) from the complete software system to create a calling dependency representation. This extraction process isolates the critical information needed for impact analysis from the rest of the codebase, allowing developers to work with a simplified model that preserves essential relationships while reducing overall complexity
2Productivity
If developers rely on intuition to determine method importance, then analysis speed is maintained, but measurement accuracy deteriorates due to subjective judgment
Solution Approach 1:
The patent implements a feedback mechanism by automatically tracking method invocations through marking records and using this empirical data to objectively determine method importance. The system continuously collects invocation information, rebuilds call stacks, and updates the calling dependency representation, providing factual feedback that replaces subjective intuition with measurable, data-driven assessments of code importance
Solution Approach 2:
The patent replaces the mechanical process of human intuition and subjective judgment with an automated computational system. The marking records, call stack reconstruction, and ranking algorithms collectively substitute the human cognitive process with a deterministic mechanical system that consistently evaluates method importance based on objective invocation data rather than subjective assessment
3Reliability
If comprehensive code change impact analysis is performed, then change risk is reduced, but time consumption increases for maintaining and releasing software
Solution Approach 1:
The patent performs preliminary action by continuously tracking method invocations and maintaining an up-to-date calling dependency representation during normal software operation. This pre-computation of invocation patterns and dependency relationships means that when a code change is proposed, the impact analysis can be performed quickly by querying the pre-built call stack and ranking information, rather than conducting comprehensive analysis from scratch at the time of each change
Solution Approach 2:
The patent implements a dynamic system where the calling dependency representation is continuously updated as the software is executed and marked records are collected. The method rankings and call stack information adapt dynamically to reflect actual runtime behavior, allowing the impact analysis to remain current and accurate without requiring periodic comprehensive re-analyses, thus reducing the time cost of maintenance activities
Data Source
AI summary
Disclosed herein is a framework for analyzing and determining the impact and importance of software code or method changes. In accordance with one aspect, invocations of methods are tracked by generating marking records. The marking records may be used to rebuild a call stack, which can be used to organize the methods to generate a calling dependency representation. The methods may then be ranked based on such calling dependency representation.


