Software Extension via Data Channel Architecture

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Software developers face significant challenges and costs when updating software applications to add new features, as existing methods often require substantial rewrites of binary code, leading to inefficient and non-native feature integration with a limited user interface.

Innovation Solution

A data channel architecture is implemented within the software application to interact with external code, allowing for the extension of features without modifying the binary code, using a trigger and extension library to establish a robust bidirectional protocol, enabling a rich and open user interface.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If traditional binary code rewriting is used to add new features, then feature functionality is improved, but development cost and time are significantly increased

Engineering Contradiction:
Improvefeature functionalityVSAvoiddevelopment cost and time
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent segments the software system into a core binary application and separate external feature modules. The binary code remains unchanged while feature functionality is divided into independent modules that can be developed, tested, and deployed separately. This segmentation allows new features to be added without rewriting the entire binary code, significantly reducing development cost and time while maintaining feature functionality.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces an intermediary component (the feature module interface layer) that bridges the core binary application and external feature modules. This intermediary enables communication and integration between the binary code and external features without requiring modifications to the binary itself, thus adding feature functionality while avoiding the complexity of binary rewriting.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Adaptability or versatility

If APIs with pre-coded protocols are used for feature integration, then feature interoperability is improved, but interface flexibility and user experience are degraded

Engineering Contradiction:
Improvefeature interoperabilityVSAvoidinterface flexibility and user experience
Core Design Contradiction:
Adaptability or versatilityVSEase of operation

Solution Approach 1:

The patent implements a dynamic interface mechanism where the binary application can adaptively load and interact with feature modules at runtime. Unlike static pre-coded APIs, this dynamic approach allows the interface to flexibly accommodate different feature types and configurations while maintaining seamless user experience. The binary code remains unchanged but can dynamically integrate with various external modules through the defined interface protocol.

Inventive Principle:
Principle #15Dynamics

3Adaptability or versatility

If substantial binary code rewriting is performed for version updates, then new features are integrated, but quality assurance effort and release time are increased

Engineering Contradiction:
Improvenew feature integrationVSAvoidquality assurance effort and release time
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

By segmenting features into separate external modules, the patent enables independent testing and validation of each module before integration. This eliminates the need to re-test the entire binary application for every feature addition, significantly reducing quality assurance effort and release time while maintaining the ability to integrate new features.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent establishes a pre-defined interface protocol between the binary application and feature modules during the initial software design. This preliminary action creates a stable integration framework that allows future features to be added without requiring subsequent binary modifications, thereby reducing both development and quality assurance time for future updates.

Inventive Principle:
Principle #10Preliminary action

4Adaptability or versatility

If plug-ins with rigid API interfaces are used, then feature addition is enabled, but user interface homogeneity and native experience are reduced

Engineering Contradiction:
Improvefeature addition capabilityVSAvoiduser interface homogeneity
Core Design Contradiction:
Adaptability or versatilityVSEase of operation

Solution Approach 1:

The patent implements interface homogeneity principles where feature modules adhere to a unified interaction protocol with the binary application. This ensures that external features present a consistent user experience matching the native application style. The homogeneous interface design allows feature addition capability while maintaining visual and operational consistency across all features.

Inventive Principle:
Principle #33Homogeneity

Data Source

PatentUS8220007B1Systems and methods for extension of software features without changing the host software binary code
Publication Date: 2012.07.10 ADOBE INC
  • US8220007B1 patent drawing
  • US8220007B1 patent drawing
  • US8220007B1 patent drawing

AI summary

Systems and methods which facilitate extension of software applications, without changing the software application binary code, through use of a data channel architecture are shown. According to embodiments, a robust bi-directional data channel is implemented within the software application allowing interaction with external code to provide extension of the software application to include one or more new and/or modified feature. Embodiments adapt a software application for loading of a trigger and an extension library for interfacing a feature module with the software application. The trigger may comprise a small piece of code, such as in a scripting language, adapted to be embedded in the software application at runtime which directs processing to a corresponding extension library. The extension library may comprise a command set, such as a scripting language dynamic link library or bundle, used for implementing a robust bidirectional protocol between the software application and external code.