Visual Designer Extension Framework for IDE Extensibility

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Modern Integrated Development Environments (IDEs) face challenges in extensibility, particularly in visual designers, where adding new feature types or variations is cumbersome or impossible, limiting productivity and customization options for software development.

Innovation Solution

The implementation of a dynamic design-time extension support system within IDEs, allowing for the addition of new feature types through extension server objects and variations of existing feature types via extension objects, managed by an editing factory and extension manager, providing a flexible and adaptable visual designer architecture.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If modern IDE visual designers are designed to be comprehensive and feature-rich, then they provide useful functions for a wide range of scenarios, but they become difficult or impossible to extend with new feature types

Engineering Contradiction:
ImproveextensibilityVSAvoidvisual designer architecture
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The visual designer is segmented into distinct modular components: editing factory, extension manager, extension server objects, and extension objects. Each component has a specific responsibility, allowing the system to be extended by adding new extension objects without modifying the core visual designer architecture. This modular segmentation enables comprehensive functionality while maintaining extensibility.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The extension manager and extension server objects provide universal interfaces that work with multiple types of extensions. The editing factory creates different kinds of editable objects through a unified process, and the extension manager handles various extension objects through standardized mechanisms. This universality allows the visual designer to serve multiple purposes while remaining easily extensible.

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

2Productivity

If the visual designer includes many built-in feature types to cover all programming needs, then it reduces the need for extensions, but it increases the size and complexity making it unsuitable for individual programmers

Engineering Contradiction:
Improvedevelopment productivityVSAvoidIDE size and complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The visual designer employs dynamic extensibility where the set of available features is not fixed but can be extended at runtime by loading new extension objects. The editing factory dynamically creates editable objects, and the extension manager dynamically registers and manages extension server objects and extension objects. This dynamic architecture allows the IDE to start with a manageable core size while enabling comprehensive functionality through extensions when needed.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system prepares for future extensions by establishing a predefined extensibility framework with editing factory, extension manager, and extension object interfaces before any extensions are needed. This preliminary action creates a ready-to-extend architecture that can accommodate new feature types without requiring structural changes, balancing current simplicity with future expandability.

Inventive Principle:
Principle #10Preliminary action

3Reliability

If the visual designer architecture is made rigid and stable, then it provides reliable consistent behavior, but it becomes impossible to add completely new feature types

Engineering Contradiction:
Improvebehavior consistencyVSAvoidability to add new feature types
Core Design Contradiction:
ReliabilityVSAdaptability or versatility

Solution Approach 1:

The extension server objects and extension manager act as intermediaries between the stable core visual designer architecture and new extension objects. The editing factory serves as an intermediary that creates editable objects according to stable interfaces. These intermediary components absorb the variability of extensions while presenting consistent behavior to the core system, maintaining reliability while enabling adaptability.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The extensibility mechanism is extracted as a separate, independent component from the core visual designer. Extension objects, extension server objects, and the extension manager form an extractable module that can be added or removed without affecting the stability of the core architecture. This extraction allows the core visual designer to remain rigid and reliable while the extracted extension system provides flexibility and adaptability.

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentUS8762936B2Dynamic design-time extensions support in an integrated development environment
Publication Date: 2014.06.24 MICROSOFT TECHNOLOGY LICENSING LLC
  • US8762936B2 patent drawing
  • US8762936B2 patent drawing
  • US8762936B2 patent drawing

AI summary

An Integrated Development Environment (IDE) is provided which comprises a visual designer that supports at least two avenues of extension. First, the visual designer may be extended with entirely new features by adding a visual designer extension. The visual designer extension is a deriving class of an extension server object. The extension server object may be provided along with the IDE. The visual designer extension manages a list of extension objects, and exposes a service provider to such extension objects. The visual designer extension can request and publish services through the service provider. Second, the visual designer may be extended with new variations of existing features by adding additional extension objects that derive from, and are managed by, an existing visual designer extension. These two modes of extension are supported by a novel visual designer framework described herein.