Conceitos Relacionados Objetivos
Áreas de Atuação
Premissas da Reengenharia
• Sistemas existentes são uma vantagem valiosa da qual a corporação depende e portanto
deveriam ser apropriadamente gerenciados;
• A manutenção de software poderá ser mais
efetiva e eficientemente realizada com ajuda de ferramentas poderosas;
• É uma manutenção automatizada;
Premissas da Reengenharia
• Envolve a melhoria dos processos de manutenção de software e melhoria dos sistemas atuais pela aplicação de novas tecnologias e ferramentas para a manutenção de software;
• Sugere um estratégia de manutenção a longo prazo ao invés de simplesmente procurar por uma
imediata mudança na manutenção de Software;
• Oferece uma maneira de organizar o software e mantê-lo organizado.
Conceito
• “Reengenharia é o processo de examinar
software existente e/ou modificá-lo com ajuda de ferramentas automatizadas para:
▫ Melhorar sua futura manutenção;
▫ Atualizar sua tecnologia;
▫ Estender sua expectativa de vida;
▫ Aumentar a produtividade da manutenção.
Outros Conceitos
• “É o estudo e alteração de um determinado sistema para reconstruí-lo numa nova forma e subseqüente implementação dessa nova forma”;
• “Modificação em código e estrutura de dados
existentes usando os princípios de engenharia de software atuais para aumentar a capacidade de manutenção e capacidade de adaptação do
sistema”.
• “Combinação de técnicas e ferramentas que facilitam a análise, melhoria, redesenho e
reutilização de sistemas existentes para suportar as necessidades de informação”;
Outros Conceitos
• “Meio para melhorar sistemas existentes sem causar impactos na sua funcionalidade atual, plataforma ou arquitetura técnica”;
• “Conjunto de técnicas e ferramentas orientadas à avaliação, reposicionamento e transformação de sistemas existentes, com o objetivo de
estender-lhes a vida útil e ao mesmo tempo,
proporcionar-lhes uma melhor qualidade técnica e funcionalidade” (Furlan);
Objetivos da Reengenharia
• Criar um inventário dos sistemas existentes;
• Fornecer assistência automatizada para a manutenção;
• Reduzir custos e erros de manutenção;
• Tornar o sistema mais fácil de compreender, modificar e testar.
Objetivos da Reengenharia
• Facilitar a conversão e migração do sistema;
• Reforçar a aderência a padrões;
• Melhorar a resposta às solicitações de manutenção;
• Melhorar o ânimo do pessoal de manutenção;
• Proteger e estender a vida do sistema;
• Utilizar CASE para suportar sistemas atuais;
• Reutilizar componentes de sistemas existentes.
Razões para Reengenharia
• Freqüentes falhas de produção;
• Problemas de desempenho;
• Tecnologia obsoleta;
• Problemas de integração de sistemas;
• Qualidade técnica ruim;
• Dificuldades para testar e caro para manter;
• Problemas crescentes no sistema.
Razões para se refazer o sistema (Engenharia)
• Não confiável;
• Algoritmos ruins ou incorretos;
• Não atende as necessidades dos
usuários.
Sistemas Candidatos à Reengenharia
• São de importância crítica da empresa;
• São alvo de manutenção freqüente e requerem um grande percentual de recursos de
manutenção;
• São compreensíveis e podem seguramente ser modificados por poucos membros da equipe de software;
• Contém erros que ninguém pode encontrar;
• Requerem uma melhoria considerável.
Reengenharia e Software Legado
• O que é um software legado?
▫ Executam tarefas úteis para a organização, mas que foram desenvolvidos utilizando-se técnicas atualmente consideradas obsoletas.
• Importância da reengenharia
▫ É uma modernização do software, uma
abordagem disciplinada para migrar softwares legados em softwares evolutivos.
▫ O processo de R.SW. aplica os princípios da
engenharia de software em um software legado
Uso correto da Reengenharia
• Não é aplicável quando um sistema de software legado possui alta qualidade técnica e baixo valor de negócio.
• Em sistemas como esse, deve ser aplicada a evolução de software.
• Com tais características é dispensada a
necessidade de esforço de mudança.
O que é a Evolução de Software?
• A evolução de software é uma atividade de mudança de software, que pode ser desde a inserção de um campo na base
de dados até a completa reimplementação do software.
• A evolução de software pode ser dividida em três categorias: manutenção,
modernização e substituição de
Processo da manutenção
• A manutenção de software é um processo incremental e repetitivo, onde alterações são feitas no software.
• Essas alterações envolvem eliminação de erros e melhorias funcionais.
• A manutenção é necessária para suportar
a evolução de qualquer software, mas não
deve envolver mudanças estruturais.
Processo da manutenção
• Manutenção:
▫ Corretiva, adaptativa, melhoria e preventiva.
• Modernização:
▫ É utilizada quando o software legado requer mudanças mais extensas e
significativas do que aquelas realizadas
pela manutenção, mas preserva uma
Processo da manutenção
• Substituição:
▫ requer a construção do software legado desde o início, e é apropriada quando o software legado não consegue mais
atender às necessidades do negócio e quando a modernização não é possível ou não vale a pena em relação aos
custos.
Como definir cada processo?
• Sistemas de softwares legados com alta qualidade técnica e alto valor de
negócio são candidatos a evolução do sistema utilizando práticas de evolução de sistemas.
• Devido a tais características há uma
preocupação com as mudanças, mas não
há necessidade de esforço.
Como definir cada processo?
• Os sistemas legados com baixa qualidade técnica e alto valor de negócio são bons
candidatos à reengenharia de software após uma análise rigorosa.
▫ A análise é essencial para priorizar sistemas candidatos à reengenharia e qual será a
estratégia de desenvolvimento.
▫ A maior justificativa de reengenharia é o alto risco de falhas, problemas de desempenho, confiabilidade, etc.
Áreas de Atuação da Reengenharia
• Análise;
• Reestruturação;
• Engenharia Reversa;
• Migração;
• Reutilização.
Análise
• É o processo de examinar os sistemas atuais a fim de compreender os componentes do
sistema e como seus programas funcionam.
• O propósito principal é identificar programas prioritários para Reengenharia e medir sua qualidade.
Reestruturação
• É o processo de alterar a forma do software (Ex:
definição e nomes de dados e código do programa) sem alterar sua funcionalidade.
• O propósito principal é tornar o programa mais fácil de ser compreendido.
Engenharia Reversa
• É o processo de analisar o software para reconstruir uma descrição de seus
componentes e seus relacionamentos. Uma descrição de alto nível do programa é obtida a partir do programa físico.
• O propósito é redocumentar o sistema e
descobrir informações do projeto com o auxílio na melhoria da compreensão do programa.
Migração
• É o processo de converter um software de uma linguagem para outra, mover de um ambiente operacional para outro ou atualizar sua
tecnologia.
• O propósito principal é amenizar o impacto de adoção de novos ambientes e tecnologias.
Reutilização
• É o processo de sistematicamente reaproveitar os diversos elementos criados durante o
desenvolvimento de software (código, projeto, especificações, documentação).
• O propósito principal é acelerar o
desenvolvimento de novos sistemas e melhorar sua qualidade.
Exercício 3
• Que experiências de reengenharia você conhece? Classifique-as.
• Quais as principais dificuldades enfrentadas nestas experiências ?