Evaluating programmer efficiency in maintaining software systems
AssigneeInfosys Limited
InventorsSantonu Sarkar, Girish Maskeri Rama, Nagaraja Nanjegowda Siddaramappa, Avinash C. Kak, Shubha Ramachandran
Life of this patent
Estimating the term…
Abstract
Quality of modularization of source code is tested using different perspectives such as a structural modularity perspective, an architectural modularity perspective, a size perspective, and a similarity of purpose perspective. A history of changes in modularization may be kept such that the degree to which given source code is well-modularized can be determined over time. The changes made to the code by individual programmers may be kept, such that the degree to which their coding enhanced or harmed modularization may be tracked.
Claims20
A computer-implemented system for evaluating programmer performance comprising:
- at least one processor;
- and
- memory, the memory comprising:
- a programmer history of at least one programmer;
- a model extractor configured to extract a source code model from source code;
- and
- a performance evaluator configured to produce a programmer performance evaluation using the programmer history and the source code model, wherein the production of the programmer performance evaluation comprises calculating a cyclic dependency index at least by dividing a number of strongly connected components in a directed module dependency graph by a number of nodes in the directed module dependency graph, the directed module dependency graph comprising arcs indicating module dependencies and nodes corresponding to modules;
- wherein the production of the programmer performance evaluation further comprises determining a change in a metric produced from the source code model from the source code and calculating a metric from a source code model from the source code after the source code is changed.
A computer enabled method for quantitatively evaluating programmer modification of source code comprising:
- receiving data representing source code modification history;
- extracting programmer coding history;
- and
- measuring programmer performance over at least one modularization perspective using at least a portion of the programmer coding history and the source code modification history in producing a programmer performance measure, wherein producing the programmer performance measure comprises calculating a cyclic dependency index at least by dividing a number of strongly connected components in a directed module dependency graph by a number of nodes in the directed module dependency graph, the directed module dependency graph comprising arcs indicating module dependencies and nodes corresponding to modules;
- wherein producing the programmer performance measure further comprises measuring a change in a metric value produced from a portion of source code and a metric value produced from the portion of source code after the portion of source code is modified.
A non-transitory computer-readable storage medium having computer-executable instructions for performing a method when executed by a computer, the method comprising:
- receiving data representing source code modification history, the source code modification history comprising a name of a programmer;
- extracting programmer coding history;
- measuring programmer performance over at least one modularization perspective using at least a portion of the programmer coding history and the source code modification history in producing a programmer performance measure, wherein producing the programmer performance measure comprises calculating a cyclic dependency index at least by dividing a number of strongly connected components in a directed module dependency graph by a number of nodes in the directed module dependency graph, the directed module dependency graph comprising arcs indicating pairwise module dependencies and nodes corresponding to modules, wherein a strongly connected component comprises a set of nodes in the directed module dependency graph in which there exists a path from all nodes in the set of nodes to all other nodes in the set of nodes;
- ranking the programmer against at least one other programmer based at least on the programmer performance measure;
- and
- generating a programmer performance report based at least on the programmer performance measure;
- wherein producing the programmer performance measure further comprises measuring a change in a metric value produced from a portion of source code and a metric value produced from the portion of source code after the portion of source code is modified.
A method for identifying modularity changes produced by a programmer comprising:
- measuring modularity of source code to produce a first modularity measurement, wherein measuring modularity of the source code comprises calculating a cyclic dependency index at least by dividing a number of strongly connected components in a directed module dependency graph by a number of nodes in the directed module dependency graph, the directed module dependency graph comprising arcs indicating module dependencies and nodes corresponding to modules;
- receiving modified source code, the modified source code modified by the programmer;
- measuring the modularity of the modified source code to produce a second modularity measurement;
- and
- evaluating the programmer based on the first and second modularity measurements, wherein evaluating the programmer comprises determining a difference between the first and second modularity measurements.
A computer-readable storage memory having computer-executable instructions for performing a method when executed by a computer, the method comprising:
- measuring modularity of source code to produce a first modularity measurement, wherein measuring modularity of the source code comprises calculating a cyclic dependency index at least by dividing a number of strongly connected components in a directed module dependency graph by a number of nodes in the directed module dependency graph, the directed module dependency graph comprising arcs indicating module dependencies and nodes corresponding to modules;
- receiving modified source code;
- the modified source code modified by the programmer;
- measuring the modularity of the modified source code to produce a second modularity measurement;
- and
- evaluating the programmer based on the first and second modularity measurements, wherein evaluating the programmer comprises determining a difference between the first and second modularity measurements.
Dependencies are inferred from the claim text.