Melhoria da Qualidade da Estrutura Interna de Sistemas de Software por Redução do Nível de Acoplamento entre Pacotes
Resumo
Sistemas de software devem possuir alto grau de manutenibilidade para que eles sejam facilmente evoluídos de modo a atender novas necessidades do usuário, corrigir erros ou adaptá-los a novas tecnologias. Uma das características intrínsecas a ser melhorada é a independência modular, em que o software deve apresentar baixo acoplamento e alta coesão. Com as constantes alterações no software, essa característica tende a não ser mais adequada e a estrutura interna do software deteriora-se. O que se pode fazer é realizar refatorações no código para que a estrutura interna readquira essa independência modular. Neste artigo, o objetivo é apresentar uma abordagem para reestruturar os pacotes de sistemas de software, por meio da movimentação de classes entre pacotes, de forma a melhorar a qualidade da sua estrutura interna. A abordagem foi utilizada (i) considerando e (ii) não considerando uma ordem de análise das classes. Cinco sistemas de software foram utilizados para avaliar a abordagem proposta, cujas classes com alto acoplamento e baixa coesão nos pacotes tiveram suas medidas melhoradas e, consequentemente, tiveram melhora na qualidade dos sistemas.
Palavras-chave:
Estrutura, Redução, Acoplamento, Pacotes
Referências
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.
Publicado
04/08/2014
Como Citar
PINTO, Francielli; COSTA, Heitor.
Melhoria da Qualidade da Estrutura Interna de Sistemas de Software por Redução do Nível de Acoplamento entre Pacotes. In: SIMPÓSIO BRASILEIRO DE QUALIDADE DE SOFTWARE (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.