Engenharia Reversa e Reengenharia Software

Slides:



Advertisements
Apresentações semelhantes
GERENCIAMENTO DE MANUTENÇÃO
Advertisements

Desenvolvimento de aplicativos Orientados a Objetos: Definição e Características THIAGO IDEALI.
Manutenção em software Conceitos básicos
Entendendo a Manutenção
Rational Unified Process
Engenharia de Software
Tipos de sistemas de Lehman
Análise e Projeto de Sistemas I
Engenharia de Software
Processos de Software Introdução
Maurício Edgar Stivanello
INTRODUÇÃO A INFORMÁTICA
FACULDADE DOS GUARARAPES
Mitos e Problemas Relacionados ao Software
Projeto de Sistemas de Software
Faculdade de Ciências Sociais de Aplicadas de Petrolina – FACAPE
Faculdade de Ciências Sociais e Aplicadas de Petrolina – FACAPE
O Papel da Informação na Estratégia das Organizações
Metodologias Orientadas a Agentes
André Rangel de Matos Raquel Pereira Crespo PÓS-GRADUAÇÃO LATO SENSU EM ANÁLISE, PROJETO E GERÊNCIA DE SISTEMAS DE INFORMAÇÃO Especificação e Manutenção.
Reengenharia de Software Caso Prático
Reutilização de Software
Análise Estruturada O mais amplamente usado dos métodos de modelagem de requisitos Modelos que retratam fluxo e o conteúdo da informação (dados e controle)
Engenharia Reversa É o processo de derivar as especificações lógicas dos componentes do sistema a partir de sua descrição física com auxílio de ferramentas.
Programação orientada a objetos com Java
TIPOS DE TESTES APLICÁVEIS E NÃO APLICÁVEIS AO PROJETO
Configuração de manutenção
MANUTENÇÃO DE SOFTWARE
Seminário de Engenharia de Usabilidade
Aula 1 Minicurso: Astah Ministrantes: André Martins; Camila Brondani;
Engenharia de Software
Prof.Alfredo Parteli Gomes
Banco de Dados Aplicado ao Desenvolvimento de Software
Projeto de Sistemas de Software
Fase de Elaboração: Fluxo de Requisitos
Análise e Projeto de Sistemas
Linguagem de Programação II
- Engenharia Reversa - Reengenharia
Fabíola Guerra Nakamura Vitor Alcântara Batista
Modelos de Processo de Software
Engenharia de Software
Programação Orientada à Objetos
O Processo de desenvolvimento de software
Paradigmas de Linguagens de Programação Aula 2
SISTEMAS DISTRIBUIDOS Aula 4
O Processo Unificado (UP)
Banco de Dados Aplicado ao Desenvolvimento de Software
ANÁLISE ESTRUTURADA DE SISTEMAS
Campus de Caraguatatuba Aula 2: Introdução a Tecnologia de BD
Engenharia de Software
Introdução a Banco de Dados Aula 04
Engenharia de Software
Diogo Krejci Frederico Argolo Renato Kalman
Trabalho de Engenharia de Software II
UML e a Ferramenta Astah
1 Padrões de Reengenharia Orientada a Objetos Nome: Gewerton J. Gomes da Cruz Silva Prof: Fabio Kon.
Engenharia de Software
Processo e Qualidade.
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ANÁLISE E PROJETO DE SISTEMAS Aula /08/2012 Professor Leomir J. Borba-
Projeto de Banco de Dados
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
Erton W. Vieira Metodologias Ágeis, Qualidade de Software e Design Centrado no usuário: Pontos de Interação Erton W. Vieira.
Aula 02 de Eng. de Requisitos
Análise e Projeto de Sistemas Análise e Projeto de Sistemas Aula 2 Professor: Italo Rodrigues Castro.
IF 718 Análise e Projeto de Sistemas Augusto Sampaio Vitor Braga (Estágio docência) Camila Sá (Monitora) Parte do material cedido pela Qualiti Software.
TÉCNICAS DE ESTIMATIVAS
Processos de Software Ludimila Monjardim Casagrande 1º Semestre Desenvolvimento e Qualidade.
1 Especificação de Sistemas de Software e a UML. 2 Modelagem de sistema A modelagem de sistema auxilia o analista a entender a funcionalidade do sistema.
CMMI Capability Maturity Model Integration
Modelagem de Banco de Dados: Conceitos
Transcrição da apresentação:

Engenharia Reversa e Reengenharia Software Engenharia de Software Prof. Rodrigo Manoel Ricardo Vieira Edilson M Bortoletto Gabriel M Guerra Juliano Hideo

Introdução 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.

O 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.

Engenharia 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 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

Visões do Software A representação extraída do código pode diferir de uma representação similar

Visões do Software

Visões do Software As vezes é nescessário acrescentar: Informações do código Informações provenientes de conhecimento humano

Categorias As categorias são divididas em: Visualização do código Entendimento do programa

Visualizaçã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 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 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 Programa

Reengenharia 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;

Objetivo 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.

Categorias Reengenharia de Processos Administrativos Reengenharia de Processos Produtivos Reengenharia de Sistemas de Software ou Produtos

O 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 Legado Software 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.

mecanismos composicionais para formação de classes, instanciação de Emprego da Reengenharia Migrar software de plataformas centralizadas para ambientes distribuído 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.

Reengenharia = Engenharia Reversa + D Engenharia Progressiva Como Realizar a Reengenharia Constituído de duas fases distintas “Desmontado” - visando seu entendimento Reconstruído - na forma desejada Reengenharia = Engenharia Reversa + D Engenharia Progressiva D 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. Muito tem que se desenvolver sobre as Ferramentas de Auxílio à Reengenharia Desire / Decode / Art / Docket / Macs / Newcomb