Superclass Behavior Analysis for Dynamic Code Architecture Drift
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Dynamic programming languages pose challenges in code analysis due to their dynamic nature, leading to architecture drift where implementation differs from the expected operation at runtime, making it difficult to verify proper application operation before deployment.
Innovation Solution
A monitoring environment is provided to analyze objects of classes depending from a superclass, generating a value-transition graph to determine and confirm the behavior of the superclass and its dependent classes, identifying any deviations from intended behavior.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If dynamic programming languages are used to provide flexibility and runtime adaptability, then adaptability is improved, but architecture drift occurs making verification difficult
Solution Approach 1:
The system performs preliminary static analysis on the dynamic programming code before runtime to generate a value-transition graph that captures all possible execution paths and value changes. This preliminary action creates a verification model that can be used to detect architecture drift during runtime without sacrificing the language's dynamic flexibility.
Solution Approach 2:
The patent introduces an intermediary monitoring environment that sits between the dynamic programming code and its execution. This intermediary captures runtime values, compares them against the pre-generated value-transition graph, and detects deviations without interfering with the code's dynamic behavior or requiring static compilation.
2Measurement precision
If static analysis is performed on dynamic programming code, then code verification capability is improved, but the dynamic nature of the language makes resolution of transition points difficult
Solution Approach 1:
The patent segments the code analysis process into distinct phases: static analysis phase where the value-transition graph is generated, and runtime monitoring phase where actual values are captured and compared. This segmentation allows static analysis tools to work on simplified representations rather than the full complexity of dynamic code execution.
Solution Approach 2:
The patent transforms the dynamic runtime behavior into a static graphical representation (value-transition graph) that adds a new dimension for analysis. By representing all possible execution paths and value transitions in a graph structure, the system enables static analysis tools to verify dynamic code without directly executing it.
3Reliability
If runtime monitoring is implemented to detect architecture drift, then reliability is improved, but performance overhead increases
Solution Approach 1:
The system performs the computationally intensive work of analyzing all possible execution paths and value transitions during the static analysis phase before runtime. The generated value-transition graph serves as a pre-computed reference model, allowing runtime monitoring to simply capture actual values and compare them against the pre-analyzed graph, significantly reducing runtime overhead.
Data Source
AI summary
A method of interpreting superclass behavior in dynamic language computer code includes generating a first code object including a first class of a plurality of classes defined by a common superclass in code of application in a dynamic programming language, generating a second code object including a second class of the plurality of classes defined by the common superclass and generating an analyzable dynamic language computer code including the first code object and the second code object. The method further includes resolving an attribute in the analyzable dynamic language computer code for each of the first code object and the second code object, performing a comparison of the attribute resolved for the first code object and the second code object, and identifying a deviation in behavior of the first class or the second class based on the comparison of the first attribute and the second attribute.


