Intermediary Module for Legacy Application Undo Redo

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Legacy software applications with inseparable front-end UIs and back-end transactional logic pose challenges for upgrading to include new UIs and undo/redo functionality, requiring significant programming efforts and often making it difficult to integrate newer software with older systems.

Innovation Solution

A method that uses an intermediary module to map user inputs from a new UI to a legacy UI, storing commands in a command stack to enable undo and redo operations, allowing the system to serially run through the stack to revert or restore previous states, thereby extending legacy software with modern UI and undo/redo capabilities.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If legacy software applications are upgraded to include new UI and undo/redo functionality, then software modernization and user interface improvement are achieved, but programming effort and integration complexity increase significantly

Engineering Contradiction:
Improvesoftware modernizationVSAvoidintegration complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

An intermediary module is introduced between the new UI and the legacy application. This module captures user inputs from the new UI, translates them into commands compatible with the legacy application, and manages a command stack to enable undo/redo functionality. The intermediary acts as a mediator that decouples the new UI from the legacy transactional logic, allowing modernization without requiring complex integration or rewriting of the legacy codebase.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Adaptability or versatility

If new UI is integrated with legacy application, then user interface modernization is achieved, but separation of UI and transactional logic becomes difficult

Engineering Contradiction:
ImproveUI modernizationVSAvoidUI-logic integration
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The intermediary module serves as a buffer that receives user inputs from the new UI and translates them into legacy application commands. This creates a clear separation where the new UI handles user interaction while the intermediary manages the translation layer, and the legacy application maintains its transactional logic unchanged. The intermediary effectively decouples the UI layer from the transactional logic without requiring integration complexity.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Adaptability or versatility

If undo/redo functionality is added to stateless legacy applications, then functional capability is improved, but modification effort and system complexity increase

Engineering Contradiction:
Improvefunctional capabilityVSAvoidsystem complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The intermediary module performs preliminary action by capturing and storing user inputs in a command stack before the legacy application executes them. Each user input is pushed onto the command stack, creating a history of commands. When undo is requested, the system pops commands from the stack and reverses them in reverse order. This preliminary capture and storage of commands enables undo/redo functionality without modifying the stateless legacy application, adding minimal complexity while significantly improving functional capability.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentEP1906303B1System and method for extending legacy applications with undo/redo functionality
Publication Date: 2017.02.22 SAP SE
  • EP1906303B1 patent drawingFigure 1
  • EP1906303B1 patent drawingFigure 2
  • EP1906303B1 patent drawingFigure 3

AI summary

In a system and method for recalling a state in an application, a processor may store in a memory data representing a first set of previously executed commands, the first set representing a current application state, and, for recalling a previously extant application state different than the current application state, the processor may modify the data to represent a second set of commands and may execute in sequence the second set of commands.