Engenharia Reversa e Reengenharia

Documentos relacionados
Engenharia de Software II

UNIVASF - Universidade Federal do Vale do São Francisco Manutenção de Software

Manutenção desoftware. SCE 186- Engenharia de Software Profs. José Carlos Maldonado e Elisa Yumi Nakagawa 2 o semestrede2002

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Manutenção de Software

EVOLUÇÃO DE SOFTWARE

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

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

Conceitos de Banco de Dados

Sistemas de Informação I

ENGENHARIA DE SOFTWARE I

GESTÃO DAS INFORMAÇÕES DAS ORGANIZAÇÕES MÓDULO 11

Projeto de Sistemas I

Modelo Cascata. Alunos: Bruno Nocera Zanette Pedro Taques

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS)

CENTRAL DE SERVIÇOS APOIADA EM SOFTWARE LIVRE

PROFESSOR: CRISTIANO MARIOTTI

Universidade Paulista

Análise de Sistemas. Conceito de análise de sistemas

Engenharia de Software

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi

Modelagemde Software Orientadaa Objetos com UML

Engenharia de Software: conceitos e aplicações. Prof. Tiago Eugenio de Melo, MSc tiagodemelo@gmail.com

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

UML - Unified Modeling Language

DATA WAREHOUSE. Introdução

Persistência e Banco de Dados em Jogos Digitais

Engenharia de Software

Processos de Desenvolvimento de Software

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd.

04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, MODELAGEM DE DADOS. Aula 2. Prof. Rafael Dias Ribeiro. M.Sc.

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

Requisitos de Software. Requisitos de Software. Requisitos de Software. Requisitos de Software. Requisitos de Software. Requisitos de Software

ALESSANDRO RODRIGO FRANCO FERNANDO MARTINS RAFAEL ALMEIDA DE OLIVEIRA

ESTRATEGIAS de DESENVOLVIMENTO de APLICAÇÕES

Análise e Projeto Orientados por Objetos

Engenharia de Software II

2 Diagrama de Caso de Uso

Dadas a base e a altura de um triangulo, determinar sua área.

Engenharia de Software III

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

Introdução à Computação

Documento de Arquitetura

Modelo Cascata ou Clássico

As principais características da abordagem de um banco de dados versus a abordagem de processamento de arquivos são as seguintes:

Engenharia de Software

FERRAMENTAS E SOLUÇÕES DE APOIO À GESTÃO E MANUTENÇÃO DE ATIVOS

Modelagem e Simulação Material 02 Projeto de Simulação

Análise e Projeto de Sistemas. Engenharia de Software. Análise e Projeto de Sistemas. Contextualização. Perspectiva Histórica. A Evolução do Software

Engenharia de Software II

ISO/IEC 12207: Gerência de Configuração

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Introdução. Hardware X Software. Corpo Humano Parte Física. Capacidade de utilizar o corpo em atividades especificas explorando seus componentes

Módulo 4: Gerenciamento de Dados

rosefib.webnode.com.br

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Engenharia de Requisitos Estudo de Caso

Processos de Desenvolvimento de Software. Prof. Hélio Engholm Jr

Orientação a Objetos

Programação com acesso a BD. Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br

Modelos de Sistema by Pearson Education. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 8 Slide 1.

Sistemas de Informação I

Análise de Sistemas. Visão Geral: Orientação a Objetos. Prof. José Honorato Ferreira Nunes honorato.nunes@bonfim.ifbaiano.edu.br

PRODUTO 1 (CONSTRUÇÃO DE PORTAL WEB)

MBA: Master in Project Management

Pós-Graduação em Gerenciamento de Projetos práticas do PMI

HCT Compatibilidade Manual do Usuário

Engenharia de Requisitos

Eduardo Bezerra. Editora Campus/Elsevier

2 Engenharia de Software

desenvolvimento de SI

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

Roteiro. BCC321 - Banco de Dados I. Conceitos Básicos. Conceitos Básicos. O que é um banco de dados (BD)?

UML 01. Curso Superior de Tecnologia em Banco de Dados Disciplina: Projeto de Banco de Dados Relacional 1 Prof.: Fernando Hadad Zaidan

MODELAGEM DE CASOS DE USO PARA UM SISTEMA DE CLÍNICA VETERINÁRIA

Nome: Login: CA: Cidade: UF CARTÃO RESPOSTA QUESTÃO RESPOSTA QUESTÃO RESPOSTA

Pós Graduação Engenharia de Software

04/08/2012 MODELAGEM DE DADOS. PROF. RAFAEL DIAS RIBEIRO, MODELAGEM DE DADOS. Aula 1. Prof. Rafael Dias Ribeiro. M.Sc.

! Software e Engenharia de Software! Engenharia de Software e Programação! Histórico. " Crise do Software

GereComSaber. Disciplina de Desenvolvimento de Sistemas de Software. Sistema de Gestão de Serviços em Condomínios

ARCO - Associação Recreativa dos Correios. Sistema para Gerenciamento de Associações Recreativas Plano de Desenvolvimento de Software Versão <1.

Introdução Ciclo de vida tradicional de desenvolvimento Prototipagem Pacotes de software Desenvolvimento de 4ª geração Terceirização

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

Aula 2 Revisão 1. Ciclo de Vida. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

TRABALHOS TÉCNICOS Coordenação de Documentação e Informação INOVAÇÃO E GERENCIAMENTO DE PROCESSOS: UMA ANÁLISE BASEADA NA GESTÃO DO CONHECIMENTO

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados

Engenharia de Software

Resumo do BABok 2.0 O Guia de Referência de Análise de Negócio Curso de Analista de Negócio 3.0

Introdução Fatores de Qualidade Garantia de Qualidade Rivisões de Software Conclusão. Qualidade. Plácido A. S. Neto 1

Documento de Análise e Projeto VideoSystem

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Transcrição:

Engenharia Reversa e Reengenharia SCE 186 Engenharia de Software Profa Rosana T. Vaccare Braga (material adaptado a partir do concedido pela Profa.: Rosângela Penteado, DC - UFSCar)

Fases Genéricas do Ciclo de Vida Engenharia Sistemas Análise Projeto Codificação Testes Manutenção Sistema Requisitos Desenvolvimento Sistema Requisitos Desenvolvimento porque? o que? 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 Sistema Requisitos Desenvolvimento Grau de Abstração baixo 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 Implementação - Utiliza uma linguagem de programação Código

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 quê fazer??? Quem poderá me ajudar???? Cadê o programador???? O quê será que ele quis fazer aqui?????

A cura... Engenharia Reversa Reengenharia

Será possível???? Na construção civil, ok E com sistemas de software?

Engenharia Reversa Modelo Lógico Reengenharia

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

Elementos da Engenharia Reversa 1) NÍVEL DE ABSTRAÇÃO 1) NÍVEL DE ABSTRAÇÃO conforme o nível de abstração aumenta, mais compreensíveis se tornam as informações.

Elementos da Engenharia Reversa 2) COMPLETITUDE DO PROCESSO 2) COMPLETITUDE DO PROCESSO refere-se ao nível de detalhes que é fornecido em cada nível de abstração.

Elementos da Engenharia Reversa 3) INTERATIVIDADE refere-se ao grau de participação do ser humano no processo de engenharia reversa. conforme o nível de abstração aumenta, a interatividade deve aumentar ou a completitude será prejudicada

Elementos da Engenharia Reversa 4) DIRECIONALIDADE se a direcionalidade tem sentido único, toda informação extraída a partir do código fonte é usada durante as atividades de manutenção se a direcionalidade tem sentido duplo, a informação é usada para "alimentar" uma ferramenta de 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 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) outros métodos de análise existentes

Propósitos da Engenharia Reversa 1. ENGENHARIA REVERSA X MANUTENÇÃO As atividades de manutenção fornecem a motivação para muitas ferramentas de 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. Nas manutenções adaptativas (adequar o software a novo ambiente) e evolutivas (adicionar novas funcionalidades ao software), as técnicas de engenharia reversa são usadas indiretamente, através do fornecimento de 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.

Propósitos da Engenharia Reversa 1. 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. 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. 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.

Propósitos da Engenharia Reversa 2. ENGENHARIA REVERSA X REUSO Reuso é 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 reuso é descrito por meio das atividades: Reconhecimento, Decomposição, Classificação (para povoar as bibliotecas de reuso); 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. Componentes candidatos a reuso podem ser mais facilmente reconhecidos, se forem convertidos para uma notação ou forma padrão. Mesmo que as técnicas de engenharia reversa não sejam focalizadas na identificação e composição de componentes a partir de partes reutilizáveis, ela pode ser proveitosa em completar a documentação dos novos sistemas compostos.

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

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

Finalidade: Reengenharia 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 Decisão:

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?

Reengenharia: Sem mudança de funcionalidade, Mesmo paradigma com Mudança de Linguagem de Programação Sistema Existente Já existia Modelo Lógico Recuperado do código legado Linguagem Escolhida

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

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

Reengenharia com Mudança de Orientação É necessário que se conheça bem o modelo existente para que se consiga criar o mesmo modelo porém com abordagem (paradigma) diferente. Obter o modelo de análise do sistema no paradigma desejado. Orientado a Objetos Orientado a Procedimentos etc

Reengenharia com Mudança de Orientação Orientada a Procedimentos FUSION/RE (Modelos UML) COREM Orientada a Objetos Segmentação (Sneed)

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.

Questões Econômicas de Engenharia Reversa O benefício fundamental da tecnologia de ER é o aumento do entendimento de um sistema o que facilita a atividade de manutenção e conseqüentemente causa o aumento da produtividade (vantagens financeiras) Aumento da produtividade na etapa de desenvolvimento de software através do reuso e garantia de qualidade A ER 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

Questões Econômicas de Engenharia Reversa Aplicar ER infringe a lei de propriedade intelectual? ER do próprio software é correta e legal Quando o software envolvido é de propriedade alheia? 1) direito exclusivo do proprietário 2) cópia para estudo é legal

Exercício optativo Obtenha propaganda sobre três ferramentas de engenharia reversa e faça um resumo de suas características O mesmo para ferramentas de manutenção. O mesmo para estudos sobre reengenharia de computador de grande porte para cliente/servidor