Executable Code Branch Annotations for Objective Verification

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current software testing methods, such as code coverage techniques, are insufficient in determining whether code branches execute as intended, especially when the original purpose and conditions of code branches are forgotten or altered, leading to undetected errors and inefficiencies.

Innovation Solution

A code branch tracking module that annotates each code branch with pass evaluation macros, dynamically tracking execution and maintaining a pass indicator status to ensure code branches execute according to the developer's intent, providing objective verification and automatic communication of branch efficacy.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of manufacture

If manual test plans are used to check code branches, then testing can be performed with simple tools, but the accuracy and comprehensiveness of branch verification deteriorates

Engineering Contradiction:
Improvesimplicity of testing approachVSAvoidaccuracy of branch verification
Core Design Contradiction:
Ease of manufactureVSMeasurement precision

Solution Approach 1:

The patent introduces an intermediary component (code branch tracking module with annotations) that mediates between the simple manual testing approach and the need for accurate branch verification. The annotations embedded in the code act as intermediaries that automatically track and report branch execution status, eliminating the need for complex manual tracking while ensuring accurate verification of all code branches.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The code branches perform self-service by containing embedded annotations that automatically track their own execution status. Each code branch has an associated annotation that increments a counter when executed, allowing the code to self-report its execution status without external intervention, thereby maintaining simplicity while achieving comprehensive verification.

Inventive Principle:
Principle #25Self-service

2Reliability

If comprehensive manual testing of all code branches is attempted, then branch coverage improves, but the time and cost required increases significantly

Engineering Contradiction:
Improvecode branch coverageVSAvoidtesting time and cost
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent applies preliminary action by embedding execution tracking annotations into the code during the development phase, before actual testing occurs. This pre-prepared infrastructure of annotations and counters is already in place when testing begins, eliminating the need for time-consuming manual setup and tracking during the testing phase itself.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The code branches automatically track their own execution through embedded annotations that increment counters when executed. This self-service mechanism eliminates the need for external tools or manual tracking, significantly reducing testing time and cost while achieving comprehensive branch coverage.

Inventive Principle:
Principle #25Self-service

3Measurement precision

If developers annotate each code branch with execution conditions, then verification accuracy improves, but the complexity of code maintenance increases

Engineering Contradiction:
Improvebranch execution verificationVSAvoidcode annotation complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The patent applies local quality by placing simple execution counters only at specific locations (code branches) where verification is needed, rather than throughout the entire codebase. Each annotation is localized to its associated code branch and contains only the essential increment operation, keeping individual annotation complexity low while achieving comprehensive verification.

Inventive Principle:
Principle #3Local quality

4Productivity

If automated test data generation using assertions is used, then testing efficiency improves, but the ability to verify original developer intent deteriorates

Engineering Contradiction:
Improvetesting efficiencyVSAvoidverification of developer intent
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent segments the verification function into two distinct parts: (1) automated execution tracking through embedded annotations that verify developer intent, and (2) assertion-based testing that improves efficiency. By separating these functions, the system can use automated assertion testing for general efficiency while maintaining dedicated annotation-based tracking for verifying original developer intent, thus resolving the contradiction between efficiency and intent verification.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentEP3977288B1Executable code branch annotations for objective branch verification
Publication Date: 2024.01.10 MICROSOFT TECHNOLOGY LICENSING LLC
  • EP3977288B1 patent drawingFigure 1
  • EP3977288B1 patent drawingFigure 2
  • EP3977288B1 patent drawingFigure 3

AI summary

A method for objective code branch verification executes code branch annotations to assess developer-specified pass conditions for each code branch that are indicative of whether or not the code branch is functioning as originally intended by the author of the code. The method includes maintaining and dynamically updating both a counter value and a pass indicator status in association with each of multiple annotated code branches defined within a code body during execution of the code body. The counter value for each annotated code branch represents a number of times the annotated code branch has executed within a current run-time environment, and the pass indicator status indicates satisfaction or non-satisfaction of a pass condition identified within the code branch that is determined based on the counter value for the associated code branch.