AgradecimentosAgradeço a Deus por tudo o quanto tem me feito e por sua misericórdia infinita.À minha esposa Ana, pelo seu constante apoio manifesto de inúmeras maneiras e pela sua preocupação com o desenvolvimento deste trabalho. Também ao Pedro, nosso pequeno filho, por contribuir mantendo a minha cabeça fria.Aos meus pais, José Eduardo e Claudete, por todo esforço que já fizeram em meu favor. Agradeço particularmente ao meu pai por me incentivar, por intermédio da minha mãe, como de costume, me fazendo saber que ele não ficaria nada contente se eu não terminasse o mestrado.À professora Rosely Sanches, por ter verdadeiramente me orientado e por suas atitudes sempre humanas (no melhor sentido que esse adjetivo possa ter) e compreensivas.Aos professores Adenilso e João Batista, pelo código-fonte cedido.À professora Rosana Vaccare Braga, pela oportunidade de trabalho que me permitiu dedicar mais tempo à escrita deste texto.A Glauco Carneiro, da Universidade Salvador, por ter me enviado sua dissertação a respeito de refatoração.Ao Professor Bill Opdyke, autor da primeira tese sobre refatoração, e ao seu orientador de doutorado, Professor Ralph Johnson, por responderem os e-mails a respeito de refatoração que lhes enviei no início deste trabalho.Ao mais leve comedor de alface mineiro-paulistano-araraquarense, Sidney Leal, e à sua inseparável fornecedora de origamis, Ana Nakamura, por terem dedicado parte do seu escasso tempo à realização do estudo de caso apresentado neste trabalho.Ao André Scandaroli, pela sua mania esquisita e contagiosa de conversar em voz passiva que acabou sendo muito útil para a escrita deste texto acadêmico.A todos que já aplicaram seus esforços no desenvolvimento de software de código aberto, por terem viabilizado a execução deste trabalho sobre uma plataforma totalmente livre. Em particular, à empresa Red Hat pelas fontes livres Liberation, metricamente equivalentes a outras fontes proprietárias tomadas como padrão em diversos contextos.A todos que de alguma maneira contribuíram, ainda que inconscientemente, para a realização deste trabalho.
ResumoÉ rara a preocupação com a qualidade de implementação de software. Pode-se observar que as estruturas internas dos softwares são freqüentemente complexas e desorganizadas, especialmente no caso dos softwares que são ditos orientados a objetos. Essa complexidade afeta diretamente a manutenibilidade e a susceptibilidade a erros, dificultando a alteração e a adição de novas funcionalidades aos softwares. As próprias alterações, inerentes aos softwares, os tornam mais complexos, o que agrava o problema. Neste contexto, acredita-se que o controle da complexidade pode levar a produtos de software de melhor qualidade. Assim, trata-se neste trabalho da manutenção preventiva, implementada por meio de inspeções, refatorações e análise de métricas. São estudadas falhas de manutenibilidade em uma amostra de programas orientados a objetos e, a partir dos resultados, são propostos artefatos de apoio para um processo de inspeção de software e modelos para os pr...