Code Annotating System for Generator Output Stream Debugging

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Developing and maintaining complex software generators that produce documents in various formats is challenging due to their complexity, requiring lengthy training and specialized skills, which limits developer productivity and attracts fewer talents, especially in commercial and open-source applications.

Innovation Solution

A code annotating system that includes a code wrapper engine and an annotator engine to automatically annotate output streams with source information, creating an annotated document that maps relationships between code fragments and source code, facilitating easier debugging and maintenance by excluding irrelevant information and displaying call stacks for quick analysis.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If developers work on complex software generators without annotation tools, then they can maintain the generators, but it requires lengthy training and familiarization resulting in low productivity

Engineering Contradiction:
Improvedeveloper productivityVSAvoidgenerator complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent introduces an annotation engine as an intermediary tool between developers and complex generator code. This engine automatically generates annotations that map source code statements to output document fragments, serving as a mediator that simplifies the interaction and reduces the learning curve for developers working with complex generators.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system creates annotated copies of the generator output that include mappings back to the source code. These annotations are essentially copies of the generation process information, allowing developers to understand the complex generator behavior without directly analyzing the complex source code, thereby improving productivity.

Inventive Principle:
Principle #26Copying

2Reliability

If developers rely on more experienced developers and test automation for complex generators, then they can maintain the system, but it creates a very small pool of talent with retention concerns

Engineering Contradiction:
Improvesystem reliabilityVSAvoidgenerator complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The annotation engine enables self-service by automatically generating documentation and mappings that help developers understand the generator code independently. This reduces reliance on experienced developers for knowledge transfer and makes the system more self-documented, allowing broader talent pools to contribute.

Inventive Principle:
Principle #25Self-service

3Adaptability or versatility

If open source applications lack annotation support, then they can be developed freely, but it creates a serious impediment to attracting developer interest and generating momentum

Engineering Contradiction:
Improvedeveloper attractionVSAvoidgenerator complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The annotation engine serves as an intermediary that translates complex generator operations into understandable annotations, making open source projects more accessible and attractive to potential contributors by reducing the perceived complexity barrier.

Inventive Principle:
Principle #24Intermediary (Mediator)

4Adaptability or versatility

If the generator includes many thousands of lines of code, then it can produce complex documents, but it becomes difficult to develop, debug, and maintain

Engineering Contradiction:
Improvedocument generation capabilityVSAvoiddebugging ease
Core Design Contradiction:
Adaptability or versatilityVSEase of operation

Solution Approach 1:

The system creates annotated copies of the generation process that map output fragments back to source code statements. This copying mechanism provides a simplified view for debugging and maintenance, allowing developers to trace issues without navigating through thousands of lines of complex generator code directly.

Inventive Principle:
Principle #26Copying

Solution Approach 2:

The annotation system segments the complex generator code into manageable units by creating mappings between source code statements and specific output document fragments. This segmentation allows developers to focus on specific portions of the code that affect particular output elements, making debugging and maintenance more manageable.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS10635434B2Annotating generator output stream with source code information of the generator
Publication Date: 2020.04.28 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US10635434B2 patent drawing
  • US10635434B2 patent drawing
  • US10635434B2 patent drawing

AI summary

A code annotating system includes a code wrapper engine configured to receive an output stream of target coding language converted from source code. The system further includes an annotator engine configured to automatically annotate a copy of the output stream with source information to create an annotated output document by collecting a call stack associated with a code fragment in the output stream, analyzing the call stack by excluding any information that does not emit content in the target coding language, and annotating the copy with the analyzed call stack, the source information mapping a relationship between the code fragment in the annotated output document and the source code. The system further includes a memory device configured to store the source information.