Engenharia Reversa e Reengenharia. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2015

Documentos relacionados
Engenharia Reversa e Reengenharia. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2017

- Engenharia Reversa - Evolução de Sofware. Desenvolvimento como. Requisitos o que. Sistema porque. Profa. Dra. Sandra Fabbri. operacional.

Manutenção de Software

Problemas na Manutenção

Engenharia Reversa e Reengenharia Software 13/05/2015

Disciplina: Engenharia de Software. 3 Bimestre Aula 2: EVOLUÇÃO DE SOFTWARE

ISO/IEC 12207: Manutenção

UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA. Sistemas Distribuídos

Manutenção Leitura: Sommerville; Pressman

Manutenção de Software. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2015

Leitura: Cap : Sommerville; cap20: Pressman

Manutenção de Software. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2016

Capítulo 20 - Manutenção de Software. Os Fatores de Qualidade de Software focalizam três aspectos importantes do Software Produto: (ISO 9126)

Prof. Ms. Ronaldo Martins da Costa

Análise e Projeto de Sistemas

Processos de Software

Reengenharia de Software

REENGENHARIA E ENGENHARIA REVERSA

Visão Geral da UML. SSC Engenharia de Software I Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2012

Frameworks. SSC-526 Análise e Projeto Orientados a Objeto Profa. Dra. Elisa Yumi Nakagawa 2º semestre de 2013

Manutenção de Software. Técnicas de Gestão da. Manutenção de Software. Sistemas legados. Manutenção

Engenharia de Software

PROJETO DE BANCO DE DADOS

Título PROCESSO LABES ESPECIALIZADO PARA DESENVOLVIMENTO SEGUNDO O PARADIGMA ESTRUTURADO. Projeto. Analista; Requisitos Funcionais Escopo; Cliente;

Modernização de Legados

Engenharia de Software Processo de Desenvolvimento de Software

Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS

Engenharia Reversa e Reengenharia

Engenharia Software. Ení Berbert Camilo Contaiffer

Bibliografia. Quais são os problemas? capacidade de construção. acompanha a demanda por novos programas. ameaçada por projetos ruins.

REUSO E REUSABILIDADE

Engenharia de Software I Processos de desenvolvimento de SW. profa. Denise Neves

Introdução. Introdução. Introdução. Planejamento da disciplina. Modelagem de Processos de Negócio. Prof.: Clarindo Isaías Pereira da Silva e Pádua

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

Processos de software

PDS. Aula 1.4 Modelos de Processo. Prof. Dr. Bruno Moreno

2 Fluxos no Ciclo de Vida do Processo Unificado. O Processo Unificado consiste da repetição de uma série de ciclos durante a vida de um sistema.

Perguntas da Aula 2. Respostas da Pergunta 2. Respostas da Pergunta 1. Respostas da Pergunta 4. Respostas da Pergunta 3. Processos de Software

Requisitos de sistemas

Manutenção e Reengenharia de Software

Engenharia de Software

AVALIAÇÃO DA QUALIDADE DO PROCESSO DE MANUTENÇÃO DE SOFTWARE UTILIZANDO A NORMA NBR ISO/IEC 12207

Técnicas de Reutilização. Reutilização em Programação Orientada a Objetos. Considere três classes... Reuso de Classes.

CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

Profa. Reane Franco Goulart

Ciência da Computação ENGENHARIA DE SOFTWARE. Capítulo 1 Introdução

DESENVOLVIMENTO BASEADO EM COMPONENTES

Instituto Federal da Bahia Análise e Desenvolvimento de Sistemas INF022 Tópicos Avançados. Evolução de Software

MANUAL PARA DESENVOLVIMENTO DE SOFTWARE TRABALHO DE CONCLUSAO DE CURSO EM SISTEMAS DE INFORMAÇÃO

- 1ª Lista de Exercícios -

INF1013 MODELAGEM DE SOFTWARE

Arquitetura de Software: Introdução

Ferramentas CASE. CASE fornece ao engenheiro de software a habilidade de automatizar atividades manuais e de aperfeiçoar o conhecimento de engenharia.

UML. Rodrigo Leite Durães.

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Prof. Fabiano Papaiz IFRN

Princípios da Engenharia de Software aula 03

3ª Aula. Processo de Projeto em SE Exemplo de projeto: Sistema de Mapa GPS. Introdução. PSI3441 Arquitetura de Sistemas Embarcados

Modelos de Processo de Software. SSC Engenharia de Software 1 Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2012

Linguagens de Programação. Introdução. Carlos Bazilio

Paradigmas de Software

Técnicas para Reutilização de Software Prof. Eduardo Figueiredo Estagiário: Johnatan Oliveira

Análise de Sistemas Aula 4

Fábricas de Software. Processos de Software. Fábricas de Software. Fábricas de Software 17/08/2010. Jorge Dias

Banco de Dados. SGBD - Sistema de Gerenciamento de Banco de Dados Parte 1. Prof. Leonardo Vasconcelos

Repositório. de Componentes em Delphi. Josiane Gianisini Orientador Marcel Hugo

Matéria Introdutória. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

6.1. Teste Baseado em Gramática e Outras Abordagens de Teste

Técnicas para Reutilização de Software

6.CONCLUSÕES CONCLUSÕES

Qualidade de Software: Visão Geral. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa

PROJETO DE PROGRAMAS. Projeto de Programas PPR0001

Gerência e Planejamento de Projeto. Engenharia de Software Profa. Elisa Yumi Nakagawa 1 o semestre de 2016

As 10 Áreas da Engenharia de Software, Conforme o SWEBOK Prof. Elias Ferreira

4 Caso de Uso no Ambiente Oracle

Estágio II. Aula 01 Qualidade de Software. Prof. MSc. Fred Viana

CAPÍTULO 1 O AMBIENTE DE DESENVOLVIMENTO DE SISTEMAS. Tereza Gonçalves Kirner

Introdução à Gestão de Processos de Negócios

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos

PROJETO DE PROGRAMAS. Projeto de Programas PPR0001

Reuso de Software Aula Maio 2012

Engenharia de Software II

ENGENHARIA DE REQUISITOS. SSC 121 Engenharia de Software I Profa. Dra. Elisa Yumi Nakagawa

Unidade II MODELAGEM DE PROCESSOS. Profa. Gislaine Stachissini

Engenharia de Software. Projeto de Arquitetura

ANÁLISE E PROJETO DE SISTEMAS

Engenharia de Software

Introdução à Engenharia de Software

Instituto Federal Sul-rio-grandense. Placa universal para controle de máquinas de lavar roupa Plano de Projeto - versão 1.0

IFSC/Florianópolis - CTI - Projeto de Sistemas - prof. Herval Daminelli

3.1 Reflexão Computacional

Agenda do Curso. Reuso de Software. Agenda da Aula. Tipos de Reuso. Vantagens de Reuso. Reuso de Software. Eduardo Figueiredo

Ciclos de Vida de Software

SSC Engenharia de Software. Prof. Paulo C. Masiero

Rational Unified Process (RUP)

Tópicos da Aula. O que é anunciado. Falha de Comunicação no Desenvolvimento de Software. Engenharia de Software: Conceitos Fundamentais

Gerência e Planejamento de Projeto. Engenharia de Software I Profa. Elisa Yumi Nakagawa 1 o semestre de 2015

Teste de Software. Prof. Camila. Pedro de Assis Sobreira Jr.

Transcrição:

Engenharia Reversa e Reengenharia Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2015

Fases Genéricas do Ciclo de Vida Engenharia Sistemas Análise Projeto Codificação Testes Manutenção Sistema Requisitos Desenvolvimento Sistema porque? Requisitos o que? Desenvolvimento como?

Abstração Definição de Abstração: habilidade de se ignorar os aspectos de assuntos não relevantes para o propósito em questão Nível de Abstração: Cada passo no processo de desenvolvimento de software é um refinamento do nível de abstração do software. Nos estágios iniciais do ciclo de vida as informações possuem alto nível de abstração e nos estágios finais baixo nível de abstração Grau de Abstração: Está relacionado a uma mesma atividade no ciclo de vida do software. Informações numa forma mais global possuem alto grau de abstração, numa forma mais detalhada possuem baixo grau de abstração alto Grau de Abstração baixo Sistema Requisitos Desenvolvimento alto Nível de Abstração baixo

Engenharia Progressiva x Engenharia Reversa Engenharia Progressiva: Processo tradicional de engenharia de software, caracterizado pelas atividades progressivas do ciclo de vida, que partem de um alto nível de abstração, para um baixo nível de abstração. Engenharia Reversa: O processo inverso a 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. alto Grau de Abstração Sistema Requisitos Desenvolvimento Eng. Progressiva Eng. Reversa Eng. Progressiva Eng. Reversa baixo alto Nível de Abstração baixo

Software Produzido Análise - o quê o sistema deve fazer. Documento de Especificação Projeto - Utiliza o documento de especificação e define como o comportamento especificado será obtido Documento de Arquitetura e de Projeto Implementação - Utiliza uma linguagem de programação Código fonte

Mas nem sempre funciona assim Sistemas sem documentação Dificuldade de manutenção Erros gerando outros erros Código duplicado

Necessidade de Manutenção no Software O que fazer??? Quem poderá me ajudar? Cadê o programador???? O que será que ele quis fazer aqui?????

Possível cura... Engenharia Reversa e Reengenharia

Será possível???? Na construção civil?? Sim... E em sistemas de software?

Engenharia Reversa Reengenharia

Requisitos (restrições, objetivos, regras do negócio) Engenharia Avante Engenharia Reversa Projeto Recuperado Projeto Engenharia Avante Engenharia Reversa Projeto Recuperado Implementação Reestruturação Reengenharia (Renovação) Reestruturação Reengenharia (Renovação) Reestruturação Relacionamento entre os termos

Engenharia Reversa O termo Engenharia Reversa tem sua origem na análise de hardware, pois é comum a prática de decifrar projetos de produtos finalizados com intuito de duplicá-los. O conceito de Engenharia Reversa de Software é similar. Porém, tradicionalmente o objetivo dessa engenharia reversa é obter apenas um entendimento do sistema.

Engenharia Reversa Definição de Engenharia Reversa: Processo de exame e compreensão do software existente, para recapturar ou recriar o projeto e decifrar os requisitos atualmente implementados pelo sistema, apresentando-os em um nível ou grau mais alto de abstração. Por meio da engenharia reversa um software pode ser visualizado em diferentes níveis de abstração. Cada VISUALIZAÇÃO abstrai características próprias da fase do ciclo de vida correspondente à abstração.

Engenharia Reversa Quais os documentos utilizados para realizar engenharia reversa? - código fonte - informações de usuários e/ou analista - documentação existente (manual de usuário, manual de sistema, DFDs, fluxogramas, etc.)

Como começa a engenharia reversa? - obtendo-se as informações necessárias para o completo entendimento do sistema O que fazer com essas informações? só para manutenção mesmo paradigma e mudança de linguagem mudança de paradigma (só modelo lógico) mudança de paradigma e de linguagem Reengenharia

Finalidade: manutenção do sistema Reunir todas as informações de modo que sejam expressas através de alguma ferramenta disponível. Pseudocódigos DFDs (se abordagem for procedimental) outras técnicas de análise e projeto existentes

ENGENHARIA REVERSA X MANUTENÇÃO As atividades de manutenção fornecem a motivação para a condução da engenharia reversa. Essa motivação é proveniente da elevada proporção de tempo e custos despendida no entendimento e exame do software a ser mantido. É estimado que mantenedores gastam entre 42 a 67% de seu tempo tentando entender o software.

ENGENHARIA REVERSA X MANUTENÇÃO Nas manutenções adaptativas (adequar o software a novo ambiente) e perfectiva (adicionar novas funcionalidades ao software), as técnicas de engenharia reversa são usadas indiretamente. A Engenharia Reversa fornece visões do software, para localizar os componentes onde serão realizadas as mudanças e adições necessárias e para auxiliar no controle da estrutura global do sistema modificado, através da produção de documentação.

ENGENHARIA REVERSA X MANUTENÇÃO Nas manutenções corretivas (correção de erros), as técnicas de engenharia reversa não servem para detectar, remover ou corrigir erros. Porém, auxiliam indiretamente o programador na localização do componente defeituoso, através de melhorias da compreensibilidade do software.

ENGENHARIA REVERSA X MANUTENÇÃO Para mudanças preventivas (redução de esforços em futuras mudanças), ferramentas de engenharia reversa podem fornecer um discernimento de onde e como realizar mudanças apropriadas, através da produção de visões do software.

ENGENHARIA REVERSA X MANUTENÇÃO Os maiores benefícios de engenharia reversa serão mais reconhecidos quando manutenções futuras tiverem como apoio a documentação produzida numa manutenção anterior.

ENGENHARIA REVERSA X REÚSO Reúso é uma atividade que se destina a identificar software reutilizável. Envolve também a correta importação, reconfiguração e adaptação deste software para uma nova aplicação em um sistema de computação. O processo de reúso é descrito por meio das atividades: Reconhecimento, Decomposição, Seleção, Adaptação e Composição. Técnicas de engenharia reversa disputam o papel principal no apoio a esses passos; contudo, o foco principal é nos três primeiros passos.

Reengenharia de Software é qualquer atividade que: (1) Melhore o entendimento do software (2) Prepare ou melhore o software em si, aumentando sua manutenção, seu reúso e sua extensão Chikofsky e Cross definem reengenharia: O exame e a alteração de um sistema para reconstituí-lo de uma nova forma, seguida pela sua implementação Sinônimos de Reengenharia: melhoramento, renovação, modernização, engenharia de re-desenvolvimento, engenharia de reúso

Modelo de Processo de Reengenharia de So7ware Engenharia avante Análise do inventário Reestruturação dos dados Reestruturação de documentos Reestruturação do código Engenharia reversa

Conhecimento do Usuário Processo de Reengenharia Re- Documentação Eng. de Software Sistema Legado (código fonte) Engenharia Reversa + Recuperação do Projeto = Reengenharia Documentação?

Passos para se realizar reengenharia Engenharia Reversa Estudo das possibilidades existentes Reengenharia: sem mudança de funcionalidade mudança parcial de funcionalidade mudança total de funcionalidade

Reengenharia: Sem mudança de funcionalidade Mesmo paradigma Mudança de linguagem de programação Sistema Existente Recuperado do código fonte legado Modelo Lógico Linguagem Escolhida

Reengenharia: Com mudança parcial de funcionalidade Parte do sistema continua com a sua funcionalidade e uma parte será alterada, mas o mesmo paradigma será utilizado. O que é necessário nesse caso? Que haja integração entre as duas partes.

Reengenharia: Com mudança parcial de funcionalidade Pode ocorrer que parte do sistema continue operando na abordagem antiga e novas funções sejam inseridas de acordo com a nova abordagem Mudança de Paradigma em parte do sistema Obter o modelo do sistema atual de acordo com a nova abordagem Deve-se escolher linguagens compatíveis Integrar as duas partes.

Reengenharia: Com mudança total de funcionalidade Engenharia Avante Métodos de Desenvolvimento escolha o seu!

Questões Econômicas de Engenharia Reversa O benefício fundamental da Engenharia Reversa é: aumento do entendimento de um sistema o que facilita a atividade de manutenção e, consequentemente, causa o aumento da produtividade (vantagens financeiras). A Engenharia Reversa pode: facilitar novos desenvolvimentos pelo exame de como sistemas similares foram construídos e, assim, as equipes de projetistas podem obter mais informações para as decisões a serem tomadas nos novos projetos.

Ferramental Dificuldade de executar reengenharia e engenharia reversa manualmente Existem diversas ferramentas de apoio: Engenharia Reversa: criação de diagramas a partir do código, reconhecimento de padrões Exemplos??? Reengenharia: geradores baseados em transformações Exemplos???