Annotation-Based Code Generation for Add-In Views and Adapters

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The development of add-ins in software applications requires creating and maintaining multiple code components, including contracts, views, and adapters, which can be tedious and prone to errors due to the need for consistent updates across these components.

Innovation Solution

A framework that uses annotations in contracts to programmatically generate views and adapters, allowing developers to specify how contract members should be represented and adapted, reducing the need for manual code generation and updates.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If developers manually create and maintain multiple code components (contracts, views, adapters), then they have full control over each component, but the development process becomes tedious and error-prone due to the need for consistent updates across multiple components

Engineering Contradiction:
Improvedevelopment efficiencyVSAvoidcode maintenance complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent applies preliminary action by using annotations in the contract to pre-specify how views and adapters should be generated. The code generator reads these annotations and automatically creates the necessary code components, eliminating the need for manual creation and subsequent synchronization updates across multiple files.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent uses copying by generating view and adapter code that replicates the contract structure and functionality. The code generator creates copies of the contract interface in different forms (views for different platforms, adapters for different data formats) based on the annotations, ensuring consistency across all components.

Inventive Principle:
Principle #26Copying

2Ease of operation

If developers write source code for all five code components manually, then they can customize each component, but the time required for development and maintenance increases significantly

Engineering Contradiction:
Improveease of code generationVSAvoidtime for code maintenance
Core Design Contradiction:
Ease of operationVSLoss of time

Solution Approach 1:

The patent applies self-service by enabling the contract and its annotations to serve as the single source of truth. The code generator automatically generates views and adapters based on the annotated contract, allowing the system to self-generate code without manual intervention. When the contract changes, the generator automatically updates all derived components.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The patent applies universality by creating a single contract with annotations that serves multiple purposes: it defines the interface, specifies view generation parameters, and guides adapter creation. This single annotated contract replaces the need for separate configuration files or documentation for each code component.

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

3Adaptability or versatility

If changes are made to the contract, then the functionality can be updated, but all four other components must be updated accordingly, increasing the risk of inconsistencies

Engineering Contradiction:
Improvefunctionality adaptabilityVSAvoidcode consistency
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The patent applies feedback by implementing a code generation system that continuously reads the annotated contract and regenerates views and adapters. When the contract changes, the generator detects the changes and automatically updates all dependent components, providing feedback loops that ensure consistency across the entire codebase.

Inventive Principle:
Principle #23Feedback

Solution Approach 2:

The patent uses preliminary action by embedding generation instructions directly in the contract annotations. These annotations pre-specify how each view and adapter should be constructed, so when the contract changes, the generator already has the rules needed to automatically update all components in the correct manner, preventing inconsistencies.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS7917893B2Using a system of annotations to generate views and adapters
Publication Date: 2011.03.29 MICROSOFT TECHNOLOGY LICENSING LLC
  • US7917893B2 patent drawing
  • US7917893B2 patent drawing
  • US7917893B2 patent drawing

AI summary

Various technologies and techniques are disclosed for using annotations in contracts to generate views and adapters. A framework is provided that supports annotations that can be used in a contract to allow a user to express how one or more members of the contract should be represented in at least one view, and to express how to adapt the members in at least one adapter. Annotations can also be used to indicate which of the components should be programmatically generated. The contract is accessed and at least a portion of the at least one view and the at least one adapter are generated based on the annotations and other information contained in the contract. For example, source code can programmatically be generated for a host side view, an add-in side view, a host side adapter, and an add-in side adapter using the various contract details and the annotations.