Code Suggestion System Using Automated Database Retrieval

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Programmers face inefficiencies in writing code and debugging due to the need to search for similar past code examples or error resolutions, which can be time-consuming and labor-intensive, often relying on manual searches or colleague interactions.

Innovation Solution

Automating the creation and use of code suggestion databases that provide relevant code continuation and error correction suggestions by analyzing interactions with IDEs and other tools, allowing for the capture and retrieval of previously successful coding practices and error resolutions.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of information

If programmers manually search for similar past code examples or error resolutions through software bug databases, articles, email threads, and logs, then they can find relevant information, but the process becomes time-consuming and labor-intensive

Engineering Contradiction:
Improveaccess to past code examples and error resolutionsVSAvoidtime spent searching for code examples and error resolutions
Core Design Contradiction:
Loss of informationVSLoss of time

Solution Approach 1:

The system performs preliminary actions by automatically collecting, organizing, and indexing code examples and error resolutions from multiple sources (software bug databases, articles, email threads, logs) before they are needed. This pre-processing creates a structured knowledge base that can be quickly queried, eliminating the need for programmers to manually search through unorganized sources when they encounter coding problems.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent introduces an intermediary system (the code suggestion system with automated search and retrieval mechanisms) that acts as a mediator between programmers and the vast amount of scattered coding information. This intermediary automatically queries multiple sources, filters relevant results, and presents consolidated suggestions to programmers, reducing their search effort while maintaining comprehensive access to past code examples and error resolutions.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Loss of information

If programmers search through multiple sources including software bug databases, articles, email threads, and logs to find error resolutions, then they can access comprehensive information, but the complexity of the search process increases

Engineering Contradiction:
Improvecomprehensive access to error resolution informationVSAvoidcomplexity of search process
Core Design Contradiction:
Loss of informationVSDevice complexity

Solution Approach 1:

The system merges multiple information sources (software bug databases, articles, email threads, logs) into a unified search interface and consolidated results presentation. Instead of requiring programmers to separately access and cross-reference multiple complex sources, the system combines these sources and presents integrated suggestions, maintaining comprehensive information access while simplifying the search process to a single unified operation.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The code suggestion system is designed with multi-functionality to handle various types of coding information from diverse sources simultaneously. It can process and retrieve code examples, error messages, resolutions, and contextual information from different source types through a single universal interface, eliminating the need for source-specific search procedures and reducing overall process complexity.

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

3Reliability

If programmers rely on manual searches and colleague interactions to solve coding problems, then they can obtain accurate solutions, but programmer productivity decreases

Engineering Contradiction:
Improveaccuracy of code solutionsVSAvoidprogrammer productivity
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The system implements feedback mechanisms by analyzing programmer interactions with code suggestions, tracking which suggestions are accepted or rejected, and using this information to continuously improve the quality and relevance of suggestions. This feedback loop ensures that the system learns from actual usage patterns and colleague interactions, maintaining high solution accuracy while automatically serving more programmers simultaneously, thereby increasing overall productivity without sacrificing reliability.

Inventive Principle:
Principle #23Feedback

Solution Approach 2:

The system creates and distributes copies of proven code solutions and error resolutions from past successful implementations to multiple programmers simultaneously. Instead of relying on individual programmers to manually find and share solutions through colleague interactions, the system automatically replicates and distributes verified code patterns and fixes across the entire user base, maintaining solution accuracy through proven patterns while dramatically increasing productivity by serving many programmers at once.

Inventive Principle:
Principle #26Copying

Data Source

PatentUS9383973B2Code suggestions
Publication Date: 2016.07.05 MICROSOFT TECHNOLOGY LICENSING LLC
  • US9383973B2 patent drawing
  • US9383973B2 patent drawing
  • US9383973B2 patent drawing

AI summary

Code suggestion technique embodiments are presented that improve the productivity of a programmer by assisting in both the writing of code and in debugging the code as it is being written. In general, this is accomplished by automating a search of a database of the past work and problem solving activities of programmers to make suggestion to a programmer currently writing code. For example, as a programmer enters code, suggested ways of finishing a line or code section are presented based on how previous programmers finished a similar line or code section. Another example involves a programmer who encounters an error message while writing code. In such a case, the programmer is provided with a suggested fix or fixes, based on the actions taken by previous developers when encountering a similar problem.