Reengenharia de software: o que, por quˆ e e como Ana Elisa Tozetto Piekarski e Marcos Antonio Quin´ aia Departamento de Inform´atica - UNICENTRO 85010-990 Guarapuava, PR (Recebido em 3 de maio de 2000) Resumo: Este artigo tem como objetivo fornecer um embasamento sobre o processo de manuten¸c˜ ao de software, mais especicamente sobre reengenharia e engenharia reversa, sendo destinado basicamente para apoio did´atico a essa parte da Engenharia de Software. Devido a isso, s˜ao apresentadas asdeni¸c˜ oes - o“o que”s˜ao essas modalidades de manuten¸c˜ ao, os casos em que se aplicam o “por que” utiliz´a-las e a forma de adot´a-las o “como” realiz´a-las. Palavras-chave: Manuten¸c˜ ao de software, reengenharia de software, engenharia reversa Abstract: This paper aims to provide a basement about software maintenance process, specially on reengineering and reverse engineering. It was developed regarding pedagogical use for Software Engineering classes. The concepts presented were organized to answer three basic points: “what” are the maintenance categories, “why” use them and “how” to implement them. Key words: Software maintenance, software reengeneering, reverse engineering. 1 Introdu¸c˜ ao Segundo Osborne e Chikofsky (1990), a variedade de problemas que envolve manuten- ¸ ao de software cresce constantemente, sendo queas solu¸c˜ oes n˜ ao acompanham essa evolu¸ ao. Esses problemas s˜ao resultantes de c´odigo fonte e documenta¸c˜ ao mal elaborados, al´ em da falta de compreens˜ao do sistema. A partir do momento em que um sistema come¸ ca a ser utilizado, ele entra em um estado cont´ ınuo de mudan¸ca. Mesmo que tenha sido constru´ ıdo aplicando as melhores t´ ecnicas de projeto e codica¸ ao existentes, os sistemas v˜ ao se tornando obsoletos em vista das novas tecnologias que s˜ ao disponibilizadas.