ML-Assisted Software Task Completion From Issue and Code Context
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing software engineering tools lack the ability to automate the writing of source code that is suitably connected to requirements or specifications, and do not effectively assist developers in interpreting and refining natural language documents into coherent software designs.
Innovation Solution
A system and method that utilizes a machine-learning model to predict and automate software engineering tasks by integrating with issue trackers and code editors, leveraging project history and natural language inputs to suggest source code changes and issue report completions.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If software tools are used to assist with software engineering tasks, then developer efficiency is improved, but the tools cannot fully automate the writing of source code connected to requirements
Solution Approach 1:
The system enables self-service by training machine-learning models on project-specific data (issue reports, source code, documentation) to automatically generate task completions and source code suggestions tailored to each project's context, allowing the system to serve itself without manual intervention for each specific task
Solution Approach 2:
The system changes parameters by transforming unstructured natural language issue reports into structured task representations with predicted completions, and by adjusting the level of automation based on prediction confidence scores, allowing dynamic control over the automation extent
2Measurement precision
If machine-learning models are trained on project data to provide context-aware predictions, then prediction accuracy is improved, but data processing time and computational resources increase
Solution Approach 1:
The system performs preliminary action by pre-processing and indexing project data during idle periods or build phases, preparing training datasets and model configurations in advance so that during actual development, the models can provide predictions with minimal processing delay
Solution Approach 2:
The system applies partial action by providing predictions only for tasks where the machine-learning model confidence exceeds a threshold, avoiding unnecessary processing for low-confidence cases where manual intervention is preferred, thus balancing accuracy with processing time
3Manufacturing precision
If the system integrates with issue trackers and code editors to provide automated assistance, then task completion accuracy is improved, but system complexity increases
Solution Approach 1:
The system uses intermediaries by introducing standardized API layers and abstraction interfaces between the machine-learning models and various issue trackers or code editors, allowing integration with multiple tools without increasing core system complexity, as the intermediaries handle tool-specific protocols
4Reliability
If software tools facilitate narrow tasks with human intervention, then task reliability is improved, but full automation capability is reduced
Solution Approach 1:
The system implements feedback by monitoring prediction outcomes and user interactions (acceptances, rejections, modifications) to continuously retrain and improve the machine-learning models, creating a closed-loop system that enhances automation capability while maintaining reliability through iterative learning from actual task execution results
Data Source
AI summary
A system receives a request from a software developer's issue tracker or code editor to perform a software engineering task, and outputs an issue report which describes the software engineering task and/or source code for performing the software engineering task to the software developer. The system stores the software developer's update of the issue report and/or source code changes for the software engineering task. The system receives the software developer's request for a predicted completion of the software engineering task, retrieves the software engineering task's context data, and transforms the context data to be data format compatible with a machine-learning model that learned to assist with software engineering tasks. The machine-learning model uses the transformed context data to predict completions of the software engineering task. The system enables the software developer to complete the software engineering task by outputting the predicted completions of the software engineering task to the developer.


