Project:
PROJECT
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
NAMESPACE
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
TYPE
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
METHOD
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
NAMESPACE COUPLING
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
TYPE COUPLING
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 USED TO METRIC THRESHOLDS
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