Collaborative software development systems and methods providing automated programming assistance
AssigneeInternational Business Machines Corporation
InventorsYoussef Drissi, Daby M. Sow
Life of this patent
Estimating the term…
Abstract
Collaborative program development systems are provided which implement methods for providing automated programming assistance to code developers in a collaborative program development environment. In particular, systems and methods for automated programming assistance are supported by leveraging a database or library of shared code snippets that are classified according to code patterns and rating scores that are derived from feedback and input from various code developers within a collaborative program development environment.
Claims32
A non-transitory computer readable storage medium embodying instructions executable by a processor to perform method steps for supporting multi-user collaborative program development, the method steps comprising:
- inputting a code snippet, wherein the code snippet is software program source code;
- automatically classifying the code snippet in at least one of a plurality of predefined classes by comparing the code snippet with code pattern templates of the plurality of predefined classes;
- automatically assigning a quality score to the code snippet according to an authoring developer of the code snippet;
- storing the classified and scored code snippet in a code repository, wherein the code repository maintains a plurality of classified code snippets of software program source code that are shared, wherein the classified code snippets are organized in the code repository using a multi-level class hierarchy structure;
- and
- providing automated programming assistance by searching the code repository for one or more code snippets in the code repository having the same class of the code snippet and having a quality score greater than the quality score assigned to the code snippet, wherein the one or more code snippets are output in response to the input code snippet.
A non-transitory computer readable storage medium embodying instructions executable by a processor to perform method steps for providing automated programming assistance for proposing alternative code snippets, the method comprising:
- maintaining a code repository of code snippets, wherein the code snippets are software program source code;
- receiving quality scores corresponding to the code snippets;
- providing automated programming assistance by utilizing the code snippets and associated quality scores, wherein providing automated programming assistance comprises,
- processing program code input to identify a code pattern, wherein the input program code is a code snippet of software program source code;
- and
- retrieving from the code repository at least one different code snippet for replacing the code input, the at least one different code snippet having a code pattern that is similar to an identified code pattern of the input program code and having a higher quality score.
A method for supporting multi-user collaborative program development, the method comprising:
- obtaining a code snippet, wherein the code snippet is software program source code;
- classifying, automatically, by a processor, the code snippet;
- storing the classified code snippet in a code repository, wherein the code repository maintains a plurality of classified code snippets of software program source code that are shared among the developers;
- and
- providing automated programming assistance by the processor, wherein the automated programming assistance includes one or more classified code snippets in the code repository, wherein providing automated programming assistance comprises,
- processing the code snippet to identify a code pattern and a quality score;
- and
- retrieving from the code repository, at least one different code snippet having a similar code pattern and a higher quality score than the code snippet.
Dependencies are inferred from the claim text.