• Nenhum resultado encontrado

Reengenharia de Software

N/A
N/A
Protected

Academic year: 2021

Share "Reengenharia de Software"

Copied!
5
0
0

Texto

(1)

Reengenharia de Software

Fernando F. N. Junior12

1Faculdade de Ciências Sociais e Aplicadas Campina Grande – PB – Brasil

²Instituto Federal da Paraíba Campina Grande – PB – Brasil

fernandojr.ifcg@live.com

Abstract. This paper aims to give the reader an overview of re-engineering

concepts and approaches. It is intended to serve as a basis for understanding the basics process of re-engineering (reverse engineering and progressive engineering). It also discusses the importance of re-engineering for software maintenance that influences the software cost and, consequently, competitiveness that is desired by organizations.

Resumo. Este artigo tem como objetivo fornecer ao leitor uma visão geral dos

conceitos e abordagens da reengenharia de software. Destina-se a servir de base para a compreensão dos processos básicos da reengenharia (engenharia reversa e progressiva). Aborda também a importância da reengenharia para a manutenção de software, na qual, influencia diretamente no custo do software e, consequentemente, na competitividade que é desejada pelas organizações.

1. Introdução

O fenômeno da globalização, a competitividade e o aumento da exigência relativamente a produtos ou serviços tendem a que num futuro próximo, todos os aspectos das organizações possam influenciar o seu próprio posicionamento competitivo, em especial, a eficácia dos seus sistemas de informação (Dinis 2009, apud Landon & Landon 2003).

Quando o número de novos requisitos, ou alterações de requisitos, cresce muito, ou quando as tarefas auxiliadas pelo sistema mudam tornando-o pouco eficiente ou simplesmente inutilizável, surge a necessidade de uma nova solução, um novo sistema. Esta renovação, ou recuperação, do sistema pode ser feita via reengenharia, com a qual "você criará um produto com funcionalidade adicionais, melhor performance e confiabilidade, e facilidade de manutenção melhorada" (Allebrandt 2004 apud Pressman 2000).

A seção 2 descreve o que é a reengenharia de software, a seção 3 aborda algumas técnicas de reengenharia de software, a seção 4 finaliza o artigo com as considerações finais.

2. Reengenharia de Software

(2)

estado contínuo de mudança. Mesmo que ele tenha sido desenvolvido aplicando boas técnicas de projeto e codificações existentes, os sistemas vão se tornando obsoletos devido a novas tecnologias que são utilizadas. Conforme Piekarski et al. (2000), as mudanças mais comuns que os sistemas sofrem são correções de erros, migrações para novas plataformas, ajustes para mudanças de tecnologia de hardware ou sistema operacional e extensões em sua funcionalidade para atender os usuários.

Em geral, essas mudanças são realizadas sem que haja preocupação com a arquitetura geral do sistema, produzindo estruturas mal projetadas, documentação desatualizada, lógica e codificação ruins, sendo esses os focos que dificultam a manutenção em um sistema (Piekarski et al. 2000, apud Osborne et al. 1990). Dinis (2009, apud Pressman 2005) aponta que a atividade de manutenção consome cerca de 70% de todo o esforço de software despendido durante o ciclo de vida do software.

A reengenharia de software, conhecida também como renovação ou reconstrução, é o exame e alteração de um sistema de software, para reconstituí-lo em uma nova forma, e a subsequente implementação dessa nova forma (Sousa & Leite 2012).

Conforme Jesus (1999), a reengenharia de software possibilita recuperar as informações do projeto de um sistema existente (via código-fonte, interface ou ambiente) e usar estas informações para reconstrui-lo, procurando melhorar sua qualidade global e reduzir custos com manutenção.

Mazzanti (2008, apud Sommerville 2003) ressalta que a reengenharia de software pode ser uma maneira viável de garantir que sistemas possam continuar em uso e que pode ser muito dispendioso e arriscado seguir outra abordagem para a evolução do sistema.

Uma unaminidade entre os autores é que um processo de reengenharia, geralmente, inclui algum subprocesso de engenharia reversa, seguida por um subprocesso de engenharia progressiva ou reestruturação (Rosenberg 1998; Piekarski et al. 2000; Sousa & Leite 2012).

Os níveis de abstração que fundamentam o processo de desenvolvimento de software também fundamentam o processo de reengenharia de software: conceitual, requisitos, projeto e implementação (Rosenberg 1998). A Figura 1 ilustra um modelo geral de reengenharia de software que indica os subprocessos para todos os níveis de reengenharia.

(3)

O modelo aplica três principios da reengenharia: abstração, alteração e refinamento. A abstração é um aumento gradual do nível abstrato do sistema. A representação do sistema é criado pela substituição sucessiva da informação detalhada existente pela informação mais abstrata. Este movimento ascendente é denominado engenharia reversa. Alteração é a realização de uma ou mais mudanças na representação do sistema sem alterar o grau de abstração, incluindo adição, eliminação e modificação da informação, mas não a funcionalidade. Refinamento é a diminuição gradual do nível abstrato da representação do sistema e é causado pela substituição sucessiva da informação do sistema existente com mais informações detalhadas. Este movimento descentente é denominado engenharia progressiva e se assemelha ao desenvolvimento de um novo código, mas com alguns processos de refinamentos (Rosenberg 1998).

3. Abordagens

Existem diversas maneiras de conduzir a reengenharia de software uma delas depende de quão crítico é o problema que deve ser resolvido (Cagnin 2005). Nessa perspectiva, três abordagens foram apresentadas por Rosenberg (1998): abordagem de reengenharia “big bang”, incremental e evolutiva.

3.1. Big Bang

A abordagem “Big Bang” substitui todo o sistema de uma vez, como ilustra a Figura 2, e é frequentemente usada por projetos que precisam resolver um determinado problema imediatamente, como a migração para uma arquitetura de sistema diferente.

A vantagem desta abordagem é que o sistema é levado a um novo ambiente de uma só vez. Nenhuma interface entre velhos e novos componentes deve ser desenvolvida, nenhum ambiente misto deve ser operado e mantido. A desvantagem é que o resultado tende a ser projetos monoliticos que podem nem sempre ser adequadas (Rosenberg 1998).

3.2. Incremental

Na abordagem incremental, ilustrada na Figura 3, seções do sistema são reengenheirados e adicionados incrementalmente como novas versões do sistema para satisfazer novos objetivos. O projeto é dividido em seções de reengenharia baseadas nas seções do sistema existente (Rosenberg 1998).

Figura 2: Abordagem "Big Bang" (Rosenberg 1998)

(4)

3.3. Evolutiva

Na abordagem evolutiva, assim como na incremental, seções do sistema existente são substituidos com novas seções reengenheiradas. Entretanto, as seções são escolhidas com base em suas funcionalidades, não na estrutura do sistema existente. A Figura 4 ilustra os componentes do sistema existente divididos pelas funcionalidades e reengenheirados em novos componentes no sistema alvo (Rosenberg 1998).

As vantagens da abordagem evolutiva são o resultadodo projeto modular e redução do escopo para um único componente. Uma desvantagem é que funções similares devem ser identificadas por meio do sistema existente para então serem refinadas como uma unidade única funcional (Rosenberg 1998).

4. Considerações Finais

Este artigo é uma breve revisão bibliográfica da reengenheria de software, o qual, procura identificar a importância da reengenharia de software: possibilitar a reutilização do conhecimento existente e dimuição de riscos, manutenção e custos pela não adoção ao desenvolvimento de um novo sistema.

O artigo procura apresentar, ainda, algumas abordagens para aplicação da mesma. No entanto, vale considerar que a reengenharia é uma disciplina estruturada da engenharia/desenvolvimento de software de diferentes abordagens e fases e tarefas específicas. Portanto, um trabalho mais detalhado é necessario.

Referências

Allebrandt, P. C. (2004). Reengenharia de Sistemas com RUP Estudo de Caso: APUFSC. Monográfia de graduação. Florianópolis.

Cagnin, M. I. (2005). PARFAIT: uma contribuição para a reengenharia de software baseada em linguagens de padrões e frameworks. Dissertação de doutorado. USP. São Carlos.

Dinis, A. S. A. (2009). Reengenharia de software - Caso de estudo da fundação para a divulgação das tecnologias de informação. Dissertação de mestrado. Vila Real.

Jesus, E. S. Fukuda, A. P. Prado, A. F. (1999). Reengenharia de software para plataformas distribuídas orientadas a objetos. Simpósio Brasileiro de Engenharia de Software, v. 13. Florianópolis.

Mazzanti, E. S. (2008). Técnicas de reengenharia de software aplicadas em uma ferramenta de representação 3D da distribuição de cores de imagens digitais.

(5)

Monográfia de graduação. Universidade Federal de Santa Maria. Santa Maria.

Piekarski, A. E. T. Quináia, M. A. (2000). Reengenharia de software: o que, por quê e como. Revista Ciências Exatas e Naturais.

Rosenberg, L. H. (1998). Software Re-engineering. Unisys Federal Systems.

Sousa, H. P. Leite, J. C. S. P. (2012). Aplicação da Engenharia Reversa e Reengenharia de Software no Desenvolvimento de plugins para a Ferramenta Oryx. Monográfia de Graduação. PUC. Rio de Janeiro.

Referências

Documentos relacionados

1. Etnografia Concorrente: São realizados estudos curtos e interativos antes do inicio do desenvolvimento, para que sejam colhidos os requisitos iniciais e a geração dos

Houve um período na pré-história humana, em que os indivíduos se assemelhavam a crianças de zero a três anos, ou seja, não possuíam zona consciente. desenvolvida, nos seus

Já desde Celestino antes del Alba 1967 é anunciada toda a herança de força indispensável a esse testemunho de resistência, de recusa vital e de sobrevivência, como se se tratasse

Nesses termos, por um critério de razoabilidade, e sopesando o conjunto da prova produzida, assim como a ausência de prestação de serviços em dias do mês,

A partir da análise de elementos textuais (verbais e não verbais), podemos fazer considerações acerca das representações no nível das práticas discursivas e sociais. É

a !idr"lise #cida o amido é con$ertido, completamente, em glicose, isso ocorre a !idr"lise #cida o amido é con$ertido, completamente, em glicose, isso ocorre porque o

O tema da maturidade dos processos de desenvolvimento de software foi ganhando força na comunidade da engenharia de software, em conseqüência dos resultados práticos obtidos

Como futuros trabalhos, pretende-se aplicar os processos definidos, partindo de metadados existentes em ferramentas de desenvolvimento de software, como J2EE, e também utilizar