Εργαλεία

Τα δεδομένα των μετρικών υπολογίστηκαν με τη βοήθεια του λογισμικού SourceMeter (https://www.sourcemeter.com). Ο υπολογισμός των μετρικών έγινε για κάθε commit που πραγματοποιήθηκε, σε χρονολογική σειρά σύμφωνα με το χρόνο που έγινε το commit. Η ανάλυση των αποτελεσμάτων και ο σχεδιασμός των γραφημάτων πραγματοποιήθηκε με τη χρήση του GNU R (http://r-project.org/).

Μετρικές

Χρησιμοποιήθηκαν οι παρακάτω μετρικές:

Logical Lines Of Code (LLOC)

Η μετρική LLOC υπολογίστηκε σε επίπεδο έργου έργου για κάθε commit αλλά και σε επίπεδο κλάσης/enumeration για το τέλος κάθε sprint.

Method: number of non-empty and non-comment code lines of the method; however, its anonymous and local classes are not included.

Class: number of non-empty and non-comment code lines of the class, including the non-empty and non-comment lines of its local methods; however, its nested, anonymous, and local classes are not included.

Package: number of non-empty and non-comment code lines of the package; however, its subpackages are not included.

Clone Coverage (CC)

Η μετρική CC υπολογίστηκε σε επίπεδο έργου έργου για κάθε commit. Πρόκειται για μετρική επανάληψης κώδικα.

Ratio of code covered by code duplications in the source code element to the size of the source code element, expressed in terms of the number of syntactic entities (statements, expressions, etc.).

McCabe’s Cyclomatic Complexity (McCC)

Η μετρική McCC υπολογίστηκε σε επίπεδο έργου έργου για κάθε commit αλλά και σε επίπεδο κλάσης/enumeration για το τέλος κάθε sprint. Πρόκειται για μετρική πολυπλοκότητας.

Complexity of the method expressed as the number of independent control flow paths in it. It represents a lower bound for the number of possible execution paths in the source code and at the same time it is an upper bound for the minimum number of test cases needed for achieving full branch test coverage. The value of the metric is calculated as the number of the following instructions plus 1: if, for, foreach, while, do-while, case label (which belongs to a switch instruction), catch, conditional statement (?:). Moreover, logical “and” (&&) and logical “or” (||) expressions also add 1 to the value because their short-circuit evaluation can cause branching depending on the first operand. The following instructions are not included: else, switch, default label (which belongs to a switch instruction), try, finally.

Lack of Cohesion in Methods 5 (LCOM5)

Η μετρική LCOM5 υπολογίστηκε σε επίπεδο έργου έργου για κάθε commit αλλά και σε επίπεδο κλάσης/enumeration για το τέλος κάθε sprint. Πρόκειται για μετρική συνεκτικότητας.

Νumber of functionalities of the class. One of the basic principles of object-oriented programming is encapsulation, meaning that attributes belonging together and the operations that use them should be organized into one class, and one class shall implement only one functionality, i.e. its attributes and methods should be coherent. This metric measures the lack of cohesion and computes into how many coherent classes the class could be split. It is calculated by taking a non-directed graph, where the nodes are the implemented local methods of the class and there is an edge between the two nodes if and only if a common (local or inherited) attribute or abstract method is used or a method invokes another. The value of the metric is the number of connected components in the graph not counting those, which contain only constructors, destructors, getters, or setters.

Coupling Between Object classes (CBO)

Η μετρική CBO υπολογίστηκε σε επίπεδο έργου έργου για κάθε commit αλλά και σε επίπεδο κλάσης/enumeration για το τέλος κάθε sprint. Πρόκειται για μετρική σύζευξης.

Νumber of directly used other classes (e.g. by inheritance, function call, type reference, attribute reference). Classes using many other classes highly depend on their environment, so it is difficult to test or reuse them; furthermore, they are very sensitive to the changes in the system.

Αποτελέσματα

LLOC

CC