Uma Abordagem Para Reestruturação de Sistemas de Software Orientados a Objetos - Santos, Danilo; Afonso Júnior, Paulo; Costa, Heitor (Anais do Simpósio Brasileiro de Qualidade de Software (SBQS); 2016: Anais do XV Simpósio Brasileiro de Qualidade de SoftwareDO - 10.5753/sbqs.2016.15141, 2016)
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.