Acronym | Name | Description |
---|---|---|
SMALL | Small Project | small project with < 50 KLOC or 200 < classes |
MEDIUM | Medium Project | medium project with (50 KLOC <= project <= 250 KLOC) or (200 <= classes <= 1000) |
LARGE | Large Project | large project with > 250 KLOC or > 1000 classes |
Acronym | Name | Description |
---|---|---|
NOC | Number of Types/Classes | Good: <= 11; Regular: between 11 and 28; Bad: > 28 |
NAC | Number of Abstract Types/Classes | without references |
Acronym | Name | Description |
---|---|---|
SLOC | Type/Class Line of Code | Bad: > 500 |
NOM | Number of Functions/Methods | Good: <= 6; Regular: between 6 and 14; Bad: > 14 |
NPM | Number of Public Methods | Good: <= 10; Regular: between 11 and 40; Bad: > 40 |
WMC | Weighted Methods per Class | Good: <= 20; Regular: between 20 and 100; Bad: > 100 |
DEP | Number of external (external APIs, frameworks, libs) types/classes dependencies | Bad: > 20 |
I-DEP | Number of other internal types/classes dependencies | Bad: > 15 |
FAN-IN | Number of other types that depend on a given type | Bad: > 10 |
FAN-OUT | Number of other types referenced by a type | Bad: > 15 |
NOA | Number of Attributes/Fields | Good: <= 3; Regular: between 3 and 8; Bad: > 8 |
LCOM3 | Lack of Cohesion in Methods | Good: = 0; Regular: between 0 and 1; Bad: > 1 |
Acronym | Name | Description |
---|---|---|
MLOC | Method Lines of Code | Good: lt;= 10; Regular: between 10 and 30; Bad: > 30 |
CYCLO | Cyclomatic Complexity | Good: <= 2; Regular: between 2 and 10; Bad: > 10 |
CALLS | Number of Invocations | Bad: > 5 |
NBD | Nested Block Depth | Good: <= 1; Regular: between 1 and 3; Bad: > 3 |
PARAM | Number of Parameters | Good: <= 2; Regular: between 2 and 4; Bad: > 4 |
Acronym | Name | Description |
---|---|---|
CA | Afferent Coupling | Good: <= 7; Regular: between 7 and 39; Bad: > 39 |
CE | Efferent Coupling | Good: <= 6; Regular: between 6 and 16; Bad: > 16 |
I | Package Instability | range between 0=Maximally stability and 1=Maximally instability |
A | Abstractness Degree | range between 0=Minimally abstractness and 1=Maximally abstractness |
D | Normalized Distance | range between 0=exactly located in the main sequence and 1=far from the main sequence |
Acronym | Name | Description |
---|---|---|
DEP | Number of external (external APIs, frameworks, libs) types/classes dependencies | Bad: > 20 |
I-DEP | Number of other internal types/classes dependencies | Bad: > 15 |
FAN-IN | Number of other types that depend on a given type | Bad: > 10 |
FAN-OUT | Number of other types referenced by a type | Bad: > 15 |
References |
---|
Danijel Radjenović, Marjan Heričko, Richard Torkar, Aleš Živkovič, Software fault prediction metrics: A systematic literature review, Information and Software Technology, Volume 55, Issue 8, 2013 |
Mariza A.S. Bigonha, Kecia Ferreira, Priscila Souza, Bruno Sousa, Marcela Januário, Daniele Lima, The usefulness of software metric thresholds for detection of bad smells and fault prediction, Information and Software Technology, Volume 115, 2019 |
T. Filo, M. Bigonha, and K. Ferreira, A catalogue of thresholds for object-oriented software metrics, in Advances and Trends in Software Engineering, 2015 The First International Conference on. IARIA, 2015 |
Kecia A.M. Ferreira, Mariza A.S. Bigonha, Roberto S. Bigonha, Luiz F.O. Mendes, Heitor C. Almeida, Identifying thresholds for object-oriented software metrics, Journal of Systems and Software, Volume 85, Issue 2, 2012 |
Rangasamy, R.Selvarani & Nair, T.R. & Ramachandran, Muthu & Prasad, Kamakshi. Software Metrics Evaluation Based on Entropy. Handbook of Research on Software Engineering and Productivity Technologies: Implications of Globalization, 2010 |
Robert C. Martin and Micah Martin. 2006. Agile Principles, Patterns, and Practices in C# (Robert C. Martin). Prentice Hall PTR, Upper Saddle River, NJ, USA |
P. Oliveira, M. T. Valente and F. P. Lima, Extracting relative thresholds for source code metrics, 2014 Software Evolution Week - IEEE Conference on Software Maintenance, Reengineering, and Reverse Engineering (CSMR-WCRE), Antwerp, 2014 |
G. Vale, A benchmark-based method to derive metric thresholds, Master's Dissertation, UFMG, 2015 |
di Biase, M., Rastogi, A., Bruntink, M., & van Deursen, A. The Delta Maintainability Model: Measuring Maintainability of Fine-Grained Code Changes. In TechDebt 2019 - International Conference on Technical Debt, 2019 |
E. Lima, A. Resende, T. Lethbridge, The Uncomfortable Discrepancies of Software Metric Thresholds and Reference Values in Literature, ICSEA 2016 : The Eleventh International Conference on Software Engineering Advances, 2016 |
Checkstyle - Size Violations. https://checkstyle.sourceforge.io/config_sizes.html, 2019 |