Improving the Quality of the Internal Structure of Software Systems by Reducing the Level of Coupling Between Packages
Abstract
Software should have high degree of maintainability to be easily extended to meet new needs of the user, fix errors and adapt to new technologies. One of the intrinsic characteristics to be improved is the modular independence: software should have low coupling and high cohesion. With the constant changes in software, this characteristic tends to be inappropriate and software internal structure is deteriorated. Refactorings in the source code should be done to recover modular independence. In this paper, the purpose is to present an approach to restructure software packages, by moving classes among packages to improve the internal structure quality. The approach was used (i) considering and (ii) not considering an order of analysis of classes. Five software systems were used to evaluate the proposed approach, whose classes with high coupling and low cohesion in the package level had seen measures improved and, consequently, software quality improved.
Keywords:
Structure, Reduction, Coupling, Packages
References
Ahmed, M. A.; Abubakar, A.; Alghamdi, J. S. (2011) A Study on Uncertainly Inherent in Class Cohesion Measuments. In: Journal of Systems Arctecture, v. 57, pp. 474-484.
Alkhalid, A.; Alshayeb, M.; Mahmoud, S. A. (2011) Software Refactoring at the Package Level using Clustering Techniques. In: IET Software, v. 5. pp. 276-284.
Barker, R.; Tempero, E. (2007) A Large-Scale Empirical Comparison of Object-Oriented Cohesion Metrics. In: Asia-Pacific Software Engineering Conference, pp. 414-421.
Basili, V. R.; Briand, L. C.; Melo, W. L. (1996) A Validation of Object-Oriented Design Metrics as Quality Indicators. In: IEEE Transactions on Software Engineering, v. 22, pp.751-761.
Bavota, G.; De Lucia, A.; Marcus, A.; Oliveto, R. (2012) Using Structural and Semantic Measures to Improve Software Modularization. In: Empirical Software Engineering.
Benlarbi, S.; El Emam, K.; Goel, N.; Raí, S. (2000) Thresholds for Object-Oriented Measures. In: International Symposium on Software Reliability Engineering, pp. 24-38.
Briand, L. C.; Wust, J.; Lounis, H. (2001) Replicated Case Studies for Investigating Quality Factors in Object-Oriented Designs. In: Empirical Software Engineering, v.6, pp.11-58.
Bruntink, M.; van Deursen, A. (2004) Predicting Class Testability using Object-Oriented Metrics. In: IEEE International Workshop on Source Code Analysis and Manipulation, pp. 136-145.
Chidamber, S. R.; Kemerer, C. F. (1994) A Metrics Suite for Object Oriented Design. In: IEEE Transaction on Software Engineering, v. 20, n. 6, pp. 476-493.
Crosby, P. (1980) Quality Is Free: The Art of Making Quality Certain. McGraw-Hill. 270p.
Dagpinar, M.; Jahnke, J. H. (2003) Predicting Maintainability with Object-Oriented Metrics An Empirical Comparison. In: Working Conference Reverse Engineering, pp. 155-164.
El-Emam, K.; Garro, I. (2000) Estimating the Extent of Standards Use: The Case of ISO/IEC15504. In: Journal of Systems and Software. v. 53, Is. 2, pp. 137-143.
Fowler, M. (1999) Refactoring: Improving the Design of Existing Code. Addison-Wesley Professional. 464p.
ISO/IEC 14598. (1999) Information Technology - Software Product Evaluation.
ISO/IEC 25000. (2005) Software Engineering - Software Product Quality Requirements and Evaluation (SQuaRE) - Guide to SquaRE.
ISO/IEC 9126-1. (2001) Software Engineering - Product Quality - Part 1: Quality Model.
MPS (2005) Melhoria de Processo do Software Brasileiro. Guia Geral, v. 1.
Ragab, S. R.; Ammar, H. H. (2010) Object Oriented Design Metrics and Tools a Survey. In: International Conference on Informatics and Systems, pp. 1-7.
SEI. CMMI for Development (CMMI-DEV) Version 1.3. Software Engineering Institute. Technical Report CMU/SEI-2010-TR-033. Pittsburgh, PA: Software Engineering Institute, Carnegie Mellon University, 2010.
Shah, S. M. A.; Dietrich, J.; McCartin, C. (2012) Making Smart Moves to Untangle Programs. In: European Conference on Software Maintenance and Reengineering, pp. 359-364.
Tahvildari, L.; Singh, A. (2000) Categorization of Object-Oriented Software Metrics. In: Canadian Conference on Electrical and Computer Engineering, v. 1, pp. 235-239.
Alkhalid, A.; Alshayeb, M.; Mahmoud, S. A. (2011) Software Refactoring at the Package Level using Clustering Techniques. In: IET Software, v. 5. pp. 276-284.
Barker, R.; Tempero, E. (2007) A Large-Scale Empirical Comparison of Object-Oriented Cohesion Metrics. In: Asia-Pacific Software Engineering Conference, pp. 414-421.
Basili, V. R.; Briand, L. C.; Melo, W. L. (1996) A Validation of Object-Oriented Design Metrics as Quality Indicators. In: IEEE Transactions on Software Engineering, v. 22, pp.751-761.
Bavota, G.; De Lucia, A.; Marcus, A.; Oliveto, R. (2012) Using Structural and Semantic Measures to Improve Software Modularization. In: Empirical Software Engineering.
Benlarbi, S.; El Emam, K.; Goel, N.; Raí, S. (2000) Thresholds for Object-Oriented Measures. In: International Symposium on Software Reliability Engineering, pp. 24-38.
Briand, L. C.; Wust, J.; Lounis, H. (2001) Replicated Case Studies for Investigating Quality Factors in Object-Oriented Designs. In: Empirical Software Engineering, v.6, pp.11-58.
Bruntink, M.; van Deursen, A. (2004) Predicting Class Testability using Object-Oriented Metrics. In: IEEE International Workshop on Source Code Analysis and Manipulation, pp. 136-145.
Chidamber, S. R.; Kemerer, C. F. (1994) A Metrics Suite for Object Oriented Design. In: IEEE Transaction on Software Engineering, v. 20, n. 6, pp. 476-493.
Crosby, P. (1980) Quality Is Free: The Art of Making Quality Certain. McGraw-Hill. 270p.
Dagpinar, M.; Jahnke, J. H. (2003) Predicting Maintainability with Object-Oriented Metrics An Empirical Comparison. In: Working Conference Reverse Engineering, pp. 155-164.
El-Emam, K.; Garro, I. (2000) Estimating the Extent of Standards Use: The Case of ISO/IEC15504. In: Journal of Systems and Software. v. 53, Is. 2, pp. 137-143.
Fowler, M. (1999) Refactoring: Improving the Design of Existing Code. Addison-Wesley Professional. 464p.
ISO/IEC 14598. (1999) Information Technology - Software Product Evaluation.
ISO/IEC 25000. (2005) Software Engineering - Software Product Quality Requirements and Evaluation (SQuaRE) - Guide to SquaRE.
ISO/IEC 9126-1. (2001) Software Engineering - Product Quality - Part 1: Quality Model.
MPS (2005) Melhoria de Processo do Software Brasileiro. Guia Geral, v. 1.
Ragab, S. R.; Ammar, H. H. (2010) Object Oriented Design Metrics and Tools a Survey. In: International Conference on Informatics and Systems, pp. 1-7.
SEI. CMMI for Development (CMMI-DEV) Version 1.3. Software Engineering Institute. Technical Report CMU/SEI-2010-TR-033. Pittsburgh, PA: Software Engineering Institute, Carnegie Mellon University, 2010.
Shah, S. M. A.; Dietrich, J.; McCartin, C. (2012) Making Smart Moves to Untangle Programs. In: European Conference on Software Maintenance and Reengineering, pp. 359-364.
Tahvildari, L.; Singh, A. (2000) Categorization of Object-Oriented Software Metrics. In: Canadian Conference on Electrical and Computer Engineering, v. 1, pp. 235-239.
Published
2014-08-04
How to Cite
PINTO, Francielli; COSTA, Heitor.
Improving the Quality of the Internal Structure of Software Systems by Reducing the Level of Coupling Between Packages. In: BRAZILIAN SOFTWARE QUALITY SYMPOSIUM (SBQS), 13. , 2014, Blumenau.
Anais [...].
Porto Alegre: Sociedade Brasileira de Computação,
2014
.
p. 195-209.
DOI: https://doi.org/10.5753/sbqs.2014.15253.
