Uma Abordagem Para Reestruturação de Sistemas de Software Orientados a Objetos

  • Danilo Santos UFLA
  • Paulo Afonso Júnior UFLA
  • Heitor Costa UFLA

Resumo


A qualidade de software é uma das principais preocupações desde as fases iniciais de desenvolvimento do software. Para isso, o software deve evoluir constantemente para atender as necessidades dos usuários e do ambiente (lei da mudança contínua). Por isso, são realizadas manutenções no software. Mas, se as manutenções forem conduzidas em discordância aos padrões de projeto empregados e às melhores práticas de programação, o software se tornará progressivamente mais acoplado e menos coeso, degradando sua qualidade, pois se torna menos modularizado. Assim, neste artigo, é proposta uma abordagem para reestruturar sistemas de software baseada na movimentação de classes entre pacotes para aprimorar a modularização e a manutenibilidade desses sistemas, melhorando sua qualidade estrutural. A movimentação de classes é determinada por uma heurística de otimização combinatória (Simulated Annealing). O resultado da avaliação indica que essa abordagem aprimora simultaneamente o acoplamento e a coesão do software, movimentando baixo percentual de classes, sem afetar estrutura de pacotes do software.
Palavras-chave: Reestruturação, Software, Orientados a Objetos

Referências

Arnold, R. S. Software Restructuring. In: IEEE. pp. 607-617. 1989.

Barbosa, N.; Hirama, K. Assessment of Software Maintainability Evolution Using C&K Metrics. In: IEEE Latin America Transactions. pp. 1232-1237. 2013.

Bhatt, P.; Shroff, G.; Misra, A. K. Dynamics of Software Maintenance. In: SIGSOFT Software Engineering Notes, pp. 1-5. 2004.

Bianchi, A.; Caivano, D.; Lanubile, F.; Visaggio, G. Evaluating Software Degradation through Entropy. In: International Software Metrics Symposium. pp. 210-219. 2001.

Bieman, J. M.; Kang, B. K. Cohesion and Reuse in an Object-Oriented System. In: Software Engineering Notes ACM. pp. 259-262, 1995.

Bryton, S.; Abreu, F. B. Modularity-Oriented Refactoring. In: Software Maintenance and Reengineering. pp. 294-297. 2008.

Chidamber, S. R.; Kemerer, C. F. A Metrics Suite for Object Oriented Design. In: IEEE Transactions on Software Engineering. pp. 476-493. 1994.

Du Bois, B.; Demeyer, S.; Verelst, J. Refactoring-Improving Coupling and Cohesion of Existing Code. In: Reverse Engineering. pp. 144-151. 2004.

Erdil, K.; Finn, E.; Keating, K.; Meattle, J.; Park, S. Software Maintenance as Part of the Software Life Cycle. In: Comp180: Software Engineering Project. pp. 1-49. 2003.

Erlikh, L. Leveraging Legacy System Dollars for e-Business. In: IT professional. pp. 17-23. 2000.

Ernst, M. D. Static and Dynamic Analysis: Synergy and Duality. In: International Conference on Software Engineering Workshop on Dynamic Analysis. pp. 24-27. 2003.

Focus, M. Measures and Metrics. Disponível em: http://supportline.microfocus.com/documentation/books/ev56/ev56books/acrobat/Measures %20and%20Metrics.PDF. Acessado em: Março de 2016.

Gurp, V. J.; Bosch, J. Design Erosion: Problems and Causes. In: Journal of Systems and Software. pp. 105-119. 2002.

Gyimothy, T. To Use or Not to Use? The Metrics to Measure Software Quality (Developers’ View). In: European Conference on Software Maintenance and Reengineering. pp. 3-4. 2009. Hitz, M.; Montazeri, B. Measuring Coupling and Cohesion in Object-Oriented Systems. In: International Symposium on Applied Corporate Computing. pp. 1-10. 1995.

Honglei, T.; Wei, S.; Yanan, Z. The Research on Software Metrics and Software Complexity Metrics. In: Computer Science-Technology and Applications. pp. 131-136. 2009.

ISO/IEC 25000. Systems and Software Engineering Systems and Software Quality Requirements and Evaluation. 2014.

Kan, S. H. Metrics and Models in Software Quality Engineering. In: Addison-Wesley.560p. 2002. Kirkpatrick, S. Optimization by simulated annealing: Quantitative studies. Journal of Statistical Physics pp. 671-680. 1983.

Lanza, M.; Marinescu, R. Object-Oriented Metrics in Practice: Using Software Metrics to Characterize, Evaluate, and Improve the Design of Object-Orientated Systems. 206p. 2006.

Lee Y.; Liang B.; Wu S.; Wang F. Measuring the Coupling and Cohesion of an Object-Oriented Program Based on Information Flow. In: International Conference on Software Quality. pp. 81-90. 1995.

Lehman, M. Program, Life-Cycle, and the Law of Program Evolution. In: IEEE. pp. 1060-1076. 1980.

Lima, E. D. C.; Resende A. M. P. Uma Análise dos Valores de Referência de Algumas Medidas de Software. 192p. Dissertação. Universidade Federal de Lavras. Brasil. 2014.

Martin, R. OO design quality metrics. An analysis of dependencies. In: Workshop Pragmatic and Theoretical Directions in Object-Oriented Software Metrics. pp. 151-170. 1994.

Opdyke, W.F. Refactoring Object-Oriented Frameworks. 206p. Dissertação. University of Illinois.1992.

Palomba, F.; Tufano, M.; Bavota, G.; Oliveto, R.; Marcus, A.; Poshyvanyk, D.; De Lucia, A. Extract Package Refactoring in ARIES. In: International Conference on Software Engineering. pp. 669-672. 2015.

Pinto, F.; Costa, H. 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. pp. 194-208. 2014.

Pressman, R.; Maxim, B. Software Engineering: A Practitioner's Approach. McGraw-Hill. 976p. 2014.

Santos, D. B.; Resende, A.; Junior, P. A., Costa, H. Attributes and Metrics of Internal Quality that Impact the External Quality of Object-Oriented Software: A Systematic Literature Review. In: Latin American Computing Conference. 2016.

Silva, R.; Costa, H. Graphical and Statistical Analysis of the Software Evolution Using Coupling and Cohesion Metrics An Exploratory Study. In: Latin American Computing Conference.pp. 1-9. 2015.

Sneed, H.M.; Brössler, P. Critical Success Factors in Software Maintenance: A Case Study. In: International Conference on Software Maintenance. pp. 190-198. 2003.

Sommerville, I. Software Engineering. Addison-Wesley. 792p. 2010.

Swanson, E. B. IS “Maintainability”: Should it Reduce the Maintenance Effort?. ACM SIGMIS.pp. 65-76. 1999.

Zanetti, M. S.; Tessone, C. J.; Scholtes, I.; Schweitzer, F. Automated Software Remodularization Based on Move Refactoring. In: International Conference on Modularity. pp. 73-84. 2014.
Publicado
24/10/2016
SANTOS, Danilo; AFONSO JÚNIOR, Paulo; COSTA, Heitor. Uma Abordagem Para Reestruturação de Sistemas de Software Orientados a Objetos. In: SIMPÓSIO BRASILEIRO DE QUALIDADE DE SOFTWARE (SBQS), 15. , 2016, Maceió. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2016 . p. 286-300. DOI: https://doi.org/10.5753/sbqs.2016.15141.