Distributed Software Support System Using Crowdsourced Code Fixes

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Companies face challenges in providing high-quality software support while managing the costs and maintaining consistency, especially when software development is outsourced or when in-house teams leave, leading to loss of technical knowledge.

Innovation Solution

A distributed software development model where a community of motivated developers submit updated versions of faulty software programs, with a competition-based approach to select the best fix, using a structured development methodology and rating system to ensure quality and efficiency.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If companies hire large numbers of programmers and support technicians to develop and support released code, then the quality and reliability of software support is improved, but the cost of maintaining such a staff becomes prohibitive

Engineering Contradiction:
Improvesoftware support qualityVSAvoidnumber of employees
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The patent creates virtual copies of expert programmers through a distributed network where multiple independent developers contribute code fixes. Instead of hiring one expensive expert full-time, the system replicates expertise across many lower-cost contributors, selecting the best solutions through automated evaluation. This transforms a resource-intensive hiring problem into a scalable crowdsourcing problem.

Inventive Principle:
Principle #26Copying

Solution Approach 2:

The patent merges the functions of multiple independent programmers into a unified support system. By combining code submissions from distributed developers and evaluating them through automated testing frameworks, the system achieves the reliability of a large expert team while maintaining the cost efficiency of smaller, distributed contributors working independently.

Inventive Principle:
Principle #5Merging (Combining)

2Ease of operation

If companies outsource software programming and support activities to consulting firms or third parties, then the burden of managing individual employees is relieved, but the quality and consistency of the work becomes suspect

Engineering Contradiction:
Improveemployee management easeVSAvoidwork quality consistency
Core Design Contradiction:
Ease of operationVSReliability

Solution Approach 1:

The patent implements automated feedback mechanisms where code submissions are automatically tested against existing test cases and production data. The system provides immediate feedback on code quality, functionality, and compatibility, allowing continuous selection and refinement of solutions. This automated feedback loop ensures consistent quality without requiring manual management of external vendors.

Inventive Principle:
Principle #23Feedback

Solution Approach 2:

The system enables self-service quality control where the automated testing framework independently evaluates and selects code submissions. The process is self-regulating, with the system automatically determining which code fixes are acceptable based on predefined criteria and test results, eliminating the need for human managers to oversee external vendor work quality.

Inventive Principle:
Principle #25Self-service

3Adaptability or versatility

If individual programmers leave the company, then operational flexibility is improved, but much of the technical and industrial knowledge is lost

Engineering Contradiction:
Improvestaff flexibilityVSAvoidtechnical knowledge loss
Core Design Contradiction:
Adaptability or versatilityVSLoss of information

Solution Approach 1:

The patent creates a universal knowledge base where code fixes, test cases, and production data are stored in a shared repository accessible to all contributors. This universal archive ensures that technical knowledge is not tied to individual employees but is instead preserved in the system's collective memory, allowing new contributors to access and learn from previous work without requiring former employees to remain.

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

4Productivity

If a competition model is used where distributed developers submit code fixes, then the cost-effectiveness of software support is improved, but the complexity of managing and evaluating submissions increases

Engineering Contradiction:
Improvesupport cost-effectivenessVSAvoidprocess complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent replaces manual code review and evaluation processes with automated mechanical systems. Automated testing frameworks, static analysis tools, and build systems automatically evaluate code submissions against predefined criteria, eliminating the need for human managers to manually review each submission. This mechanical automation handles the complexity of evaluating numerous submissions while maintaining high cost-effectiveness.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

Data Source

PatentUS8776042B2Systems and methods for software support
Publication Date: 2014.07.08 TOPCODER
  • US8776042B2 patent drawing
  • US8776042B2 patent drawing
  • US8776042B2 patent drawing

AI summary

This invention relates to methods and a system for supporting software. In one embodiment, a method for providing an updated version of a software program includes receiving an indication of a fault in a software program, distributing the faulty software program to a distributed community of programmers, receiving updated versions of the faulty software program from a subset of the distributed community of programmers, and determining a preferred updated software program from the received updated versions of the software program. In another embodiment, a system for providing an updated version of a software program includes a communication server for communicating faulty software programs and updates of the programs to and from the distributed community of programmers, a component storage module for storing the faulty software program, and a software testing module for determining a preferred updated version of the faulty software program.