segunda-feira, 15 de dezembro de 2008

Reengenharia de Software

Olá pessoal, para quem tem dúvidas do que é reengenharia de software, existe um artigo muito bom que eu encontrei que pode ajudar a entender mais sobre esse assunto. O título é "Reengenharia, o quê, por quê e como?". De Ana Elisa Tozetto Piekarski e Marcos Antonio Quináia. Data do ano de 2000.
Nele os autores conseguem definir muito bem, o que é redocumentação, engenharia reversa e refatoração ou reestruturação.

Relacionamentos no Ciclo de Desenvolvimento de Software (CHIKOFSKY e CROSS, 1990)

Reproduzerei alguns trechos abaixo.

Quando o sistema não é fácil de ser mantido sendo, porém, de grande utilidade, ele deve ser reconstruído. Partindo-se do sistema existente (via código-fonte, interface ou ambiente), são abstraídas as suas funcionalidades e são construídos o modelo de análise e o projeto do software. Esse processo é denominado reengenharia de software.

Redocumentação: como uma sub-área da engenharia reversa, é a criação ou revisão de uma representação semanticamente equivalente, dentro do mesmo nível relativo de abstração, sendo que as formas resultantes de representação são consideradas como visões alternativas, utilizadas para uma melhor compreensão humana do sistema analisado;

Recuperação de projeto: é uma sub-área da engenharia reversa na qual o conhecimento do domínio da aplicação, informações externas e dedução são adicionadas às observações referentes ao programa, para se extrairem abstrações significativas de mais alto nível, além daquelas obtidas através da observação direta do sistema;

Reestruturação: é a transformação de uma forma de representação, para outra no mesmo nível de abstração relativo, preservando o comportamento externo do sistema (funcionalidade e semântica). Geralmente usada como uma forma de manutenção preventiva, a reestruturação é aplicada em sistemas que tenham sido desenvolvidos de forma desestruturada, resultando uma representação que preserva as características do sistema, porém de forma mais bem estruturada;

Engenharia reversa: é o processo de analisar um sistema com a finalidade de criar sua representação de uma forma diferente ou em um nível mais alto de abstração do que o código fonte.

Reengenharia: é a reconstrução de algo do mundo real, tendo como propósito a busca por melhorias que permitam produzir algo de qualidade melhor ou comparável ao produto inicial

No processo de manutenção, quando se trata de reconstruir um software (ou seja, realizar sua reengenharia), é necessário, portanto, que se proceda à engenharia reversa do sistema em questão, a fim de obter os modelos de análise baseados no software existente. Esses modelos, com as devidas correções/alterações, serão o ponto de partida para a engenharia progressiva.

Vale a pena dar uma lida no artigo.

http://www.unicentro.br/editora/revistas/recenv1n2/Reengenharia.pdf


Nenhum comentário: