Post on 17-Apr-2015
Engenharia Reversa e Engenharia Reversa e Reengenharia SoftwareReengenharia Software
Engenharia de Software
Prof. Rodrigo
Manoel Ricardo Vieira
Edilson M Bortoletto
Gabriel M Guerra
Juliano Hideo
A manutenção software está cercada de dificuldades, sendo q as soluções não acompanham essa evolução. O código fonte e documentação mal elaborada, além da falta de compreensão do sistema são problemas
constantes. A partir do momento em que um sistema começa a ser utilizado, ele entra em um estado contínuo de mudança. Mesmo que tenha sido
construído aplicando as melhores técnicas de projeto e codificação existentes, os sistemas vão se tornando
obsoletos em vista das novas tecnologias que são disponibilizadas.
IntroduçãoIntrodução
O que é Reengenharia de SoftwareO que é Reengenharia de Software
Primeiramente devemos considerar três conceitos dependentes: a existência de um processo de desenvolvimento de software, a presença de um sistema a ser analisado e a identificação de níveis de abstração.
Figura 1‑1 Relacionamentos no Ciclo de Desenvolvimento de Software.Figura 1‑1 Relacionamentos no Ciclo de Desenvolvimento de Software.
Engenharia ReversaEngenharia Reversa
Definições
O processo inverso à engenharia progressiva, caracterizado pelas atividades retroativas do ciclo de vida, que partem de um baixo nível de abstração para um alto nível de abstração, é conhecido como engenharia reversa.
Visões do SoftwareVisões do Software
Software visualizado de diferentes maneiras–Visão a nível implementacional: caracteristicas
da linguagem;–Visão a nível estrutural: detalhes da linguagem–Visão a nível funcional: função de um
componente–Visão a nível domínio: contexto de operação do
sistema
A representação extraída do código pode diferir de uma representação similar
Visões do SoftwareVisões do Software
Visões do SoftwareVisões do Software
Visões do SoftwareVisões do Software
As vezes é nescessário acrescentar:
– Informações do código– Informações provenientes de
conhecimento humano
CategoriasCategorias
As categorias são divididas em:–Visualização do código–Entendimento do programa
Visualização do códigoVisualização do código
Fase de redocumentação–Representação a partir do código fonte– Inteção de recuperar documentação–Visualização do código, não transcende
a visão em nível estrutural
Entendimento do ProgramaEntendimento do Programa
Recuperação do projeto: a partir da compbinação entre:–Código–Documentação existente –Experiências pessoais–Conhecimentos gerais sobre o problema
e o domínio de aplicação
Entendimento do ProgramaEntendimento do Programa
Um completo entendimento de programa busca reconstruir não somente a função do sistema, mas também o processo pelo qual o sistema foi desenvolvido.
A categoria de entendimento de programa é a forma mais crítica de engenharia reversa, pois tenta aproximar-se do raciocínio humano na busca do entendimento.
Entendimento do ProgramaEntendimento do Programa
ReengenhariaReengenharia
Definições:
Chiskofsky (1990) – alteração de um sistema de software;
Wander (1992) – melhoramento do sistema, sem alterações de suas funções;
Premerlani e Blaha (1994) – reduzir custos de manutenção e melhoria na flexibilidade do software;
Pressman (1995) – reconstrução do sistema preservando as funções existentes, ao mesmo tempo que se adiciona novas funções;
ObjetivoObjetivo
Construir um sistema novo com maior facilidade de manutenção e a engenharia reversa é usada como parte do processo re reengenharia, pois fornece o atendimento do sistema a ser reconstruido.
CategoriasCategorias
Reengenharia de Processos Administrativos
Reengenharia de Processos Produtivos
Reengenharia de Sistemas de Software ou Produtos
O Porque da ReengenhariaO Porque da Reengenharia
Necessidade de melhoria nos serviços e produtos oferecidos;
Compressão na margem de lucro;
Redução do clico de vida dos produtos;
Explosão tecnológica;
Desgaste de Software
Software LegadoSoftware LegadoSoftware antigos, onde nenhuma pessoa que participou da sua elaboração
esta mais na equipe
Falta de Documentação
Desestruturação e dificuldade de entendimento do código, muitas vezes porque o software foi desenvolvido antes da introdução dos métodos de programação estruturada;
Programadores que não participaram do desenvolvimento de um produto de software sentem dificuldade em entender e mapear a funcionalidade para o código fonte;
Documentação desatualizada, não auxiliando em nada a equipe de manutenção;
Dificuldade de predizer as conseqüências de efeitos colaterais;
Dificuldade de administrar múltiplas alterações concorrentes.
Migrar software de plataformas centralizadas para ambientes distribuído
Emprego da Reengenharia
A programação orientada a objetos tem muitas vantagens sobre
a programação procedimental,
Sistemas flexíveis, adaptáveis e extensíveis. Possui uma coleção rica de
mecanismos composicionais para formação de classes, instanciação de
objetos, propriedades de heran₤a, polimorfismo e ocultamento de informa₤ões
Reengenheriar consome tempo e dinheiro. Pode-se tornar uma atividade que dura meses ou alguns anos.
Como Realizar a Reengenharia Constituído de duas fases distintas
“Desmontado” - visando seu entendimentoReconstruído - na forma desejada
Reengenharia = Engenharia Reversa + Engenharia Progressiva
pode ser de dois tipos:
-Alterações parciais de funcionalidade
-Alterações de implementação
Considerações num processo de reengenharia:
- Executado se existir um argumento aceitável de custo/benefício
- Implica melhoria através de reprojeto;
- Remover projetos ruins, e manter projetos bons e simples
- Problemas, os quais necessitam ser identificados;
- Ferramentas adequadas aos processos de reengenharia e não
os processos adequados às ferramentas.
Processo de Reengenharia
-Realizar a engenharia reversa e identificar
os componentes do sistema
-Decidir sobre alterações na funcionalidade
-Reprojetar o sistema progressiva reimplementando
o sistema
Modelo de Reengenharia de Processos O modelo do processo de Reengenharia de Software define seis atividades:
-Análise de inventário:
-Reestruturação de Documentação
-Engenharia Reversa
-Reestruturação de código
-Reestruturação de dados
-Forward Engineering: também chamada de renovação
Aplica₤ões da Reengenharia de Software
- documentar os softwares atuais; - melhorar a leitura do código ; - redesenhar as bases de dados ; - alterar a plataforma de hardware ; - converter linguagens ; - adicionar novas funcionalidades e/ou capacidades; - facilitar os processos de manutenção; - evoluir os softwares num ambiente CASE.
Desire / Decode / Art / Docket / Macs / Newcomb
Muito tem que se desenvolver sobre as Ferramentas de Auxílio à Reengenharia