sábado, 3 de outubro de 2009

Engenharia Reversa de Software

Pessoal, dando continuidade aos conceitos que envolvem a melhora da Qualidade num processo de desenvolvimento de software, gostaria de lhes apresentar os conceitos sobre um trabalho muito importante praticado principalmente em software legados ou cujo desenvolvimento não foi concebido utilizando-se das melhores práticas. Trata-se da Engenharia Reversa de Software.


A variedade de problemas que envolvem manutenção de softwares cresce constantemente e as soluções não conseguem acompanhar esta evolução. Estes problemas ocorrem em virtude de código fonte e documentação mal elaborada, além da falta de compreensão do sistema (OSBORNE; CHIKOFSKY, 1990).


Além de correções de erros, é comum que os sistema sofram migrações para novas plataformas, ajustes para novas tecnologias de hardware ou sistema operacional, além de extensões para atender aos usuários. Normalmente, estas mudanças são realizadas sem haver preocupações com arquitetura geral do sistema, produzindo estruturas mal projetadas, documentações desatualizadas, lógica e codificações ruins. Conseqüentemente, dificultam a manutenção de um sistema (OSBORNE; CHIKOFSKY, 1990).


Quando um sistema torna-se difícil de ser mantido, instável, mas ainda contém grande utilidade, ele deve ser reconstruído. Isto é, a partir do sistema existente, a partir da análise do código-fonte, interface e ambiente, são abstraídas as suas funcionalidades e são construídos os modelos de análise e projeto do sistema. A realização deste processo é chamada de Engenharia Reversa de Software (PIEKARSKI; QUINÁIA, 2000).


O principal objetivo da Engenharia Reversa de Software consiste em auxiliar na compreensão da estrutura interna de sistemas complexos (PRESSMAN, 2001).


A aplicação da Engenharia Reversa consiste na análise de um programa de computador que permite representá-lo numa abstração mais elevada do que o código-fonte. Ou seja, é um processo de recuperação de um projeto a partir da análise de código-fonte e extração de abstrações de processo, banco de dados e interface. As ferramentas de engenharia reversa extraem informações do projeto de dados, da arquitetura e dos procedimentos para um determinado programa (PRESSMAN, 2001). A FIGURA 1 demonstra o processo de Engenharia Reversa.


Além disso, a Engenharia Reversa de Software possibilita a reorganização e modificação de sistemas de software existentes, parcial ou totalmente, para possibilitar uma manutenção mais fácil do sistema. Com efeito, é possível reduzir o risco do software, revisando o que foi desenvolvido anteriormente e corrigindo se necessário. Além do mais, o custo do trabalho de reengenharia, visando melhorar o software, é insignificante ao custo necessário para desenvolver um novo software (SOMMERVILLE, 2003).


FIGURA 1 - O Processo de Engenharia Reversa (PRESSMAN, 2001)


Bibliografia:


OSBORNE, P.W.; CHIKOFSKY, E.J. Fitting Pieces to the Maintenance Puzzle. IEEE Software, v. 7, n. 1, 1990, p. 11-12.


PIEKARSKI, Ana E. T; QUINÁIA, Marcos A. Reengenharia de Software: o que, por quê e como. Guarapuava: Departamento de Informática – UNICENTRO, 2000.


PRESSMAN, R. S. Software Engineering: A Practitioner’s Approach. 5th ed. New York: McGraw-Hill, 2001.


SOMMERVILLE, Ian. Engenharia de Software. 6ª ed. São Paulo: Pearson Addison Wesley, 2003.


Cordialmente,


Marcelo Schumacher

http://isosoftware.blogspot.com

4 comentários:

  1. Prezado Marcelo,

    Mais uma vez trazendo para o blog um assunto dentro da realidade prática do nosso dia a dia em TI; prazos curtos, muitas vezes baixo capital para investimentos e temos que dar resultados satisfatórios.

    Porém, nem sempre o sistema sai da melhor forma ou, porque não, assumimos funções onde já haviam processos em andamento e não podemos nos queixar devemos ajustar os trabalhos, alinhar o foco da equipe e dar resultados dentro dos prazos e funcionamento esperados.
    Logo, a engenharia reversa nos trás uma teoria que podemos aplicar na prática para alinhar o software e recuperar aquilo que foi mal formulado.

    Confesso-te que apenas tive aulas sobre engenharia reversa nas cadeiras de banco de dados, nunca havia pensado desta forma que colocou; digo, para profissionais que trabalham ou virão a trabalhar em setor de manutenção essa técnica é uma chave preciosa.

    Abraços,

    Thiago Corrêa

    ResponderExcluir
  2. Olá, Thiago.

    Obrigado mais uma vez pelo apoio nos tópicos postados.

    Eu particularmente trabalho com dois produtos de software que necessitam de engenharia reversa constantemente para conseguirmos compreender o que precisamos nos preocupar em ajustar quando desenvolvemos um novo recurso, por exemplo.

    Existem algumas técnicas que ajudam a realizar a Engenharia Reversa, mas, na prática, vai muito da experiência que os profissionais de desenvolvimento possuem sobre o software. É por isso que normalmente os profissionais mais experientes são sempre os consultados para no mínimo avaliar o que acham que deve ser verificado se um determinado recurso for desenvolvido. Sem querer, apenas pelo fato de pensar a respeito, estes profissionais já estão iniciando um trabalho de Engenharia Reversa.

    Abraço,

    Marcelo Schumacher

    ResponderExcluir
  3. Rapaz,

    Parabens pelo post. Cheguei ao seu blog sem querer, pesquisando um pouco para um trabalho acadêmico.

    Você articula muito bem e transparece facilmente o que os autores falam. Muito bom.

    []s,

    Bruno Rocha
    Soft. Eng.

    ResponderExcluir
  4. Olá, Bruno.

    Obrigado pelo incentivo! É muito importante receber apoios como este. Motiva-me ainda mais a dedicar meu tempo e meus estudos transformando-os em informações para serem compartilhadas e até mesmo utilizadas por pessoas interessadas nos assuntos.

    Eu procuro criar os posts seguindo posições conceituas dos autores da área para manter a integridade das informações de tal forma que o conteúdo possa até mesmo ser usado em trabalhos acadêmicos sem restrições.

    Uma das idéias do blog isoSoftware é que o conteúdo ajude estutantes, profissionais da área e interessados no assunto.

    Acompanhe e participe do Blog isoSoftware. Fico a disposição para discutirmos os assuntos.

    Abraço,

    Marcelo Schumacher
    http://isosoftware.blogspot.com

    ResponderExcluir