Problemas na Manutenção

Documentos relacionados
Engenharia Reversa e Reengenharia Software 13/05/2015

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

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

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

REENGENHARIA E ENGENHARIA REVERSA

REUSO E REUSABILIDADE

Manutenção de Software

Leitura: Cap : Sommerville; cap20: Pressman

Manutenção Leitura: Sommerville; Pressman

Reengenharia de Software

INF1013 MODELAGEM DE SOFTWARE

INSTITUTO FEDERAL DE SÃO PAULO CAMPUS PRESIDENTE EPITÁCIO MODELO DOS PROCESSOS DE SOFTWARE

Prof. Esp. Fabiano Taguchi

Análise de Sistemas. Aula 5

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

CONCEITOS BÁSICOS E MODELO DE PROJETO

CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

2

Computadores e Sociedade Aula X: Direitos autorais em software

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

DESENVOLVIMENTO BASEADO EM COMPONENTES

Model Driven Development (MDD)

Engenharia de Software I

Sistemas Operacionais II. Prof. Gleison Batista de Sousa Aula 01

Definições e ciclo de vida

Sistemas Operacionais II. Prof. Gleison Batista de Sousa Aula 01

MODELAGEM DE SISTEMAS. Introdução a Computação e Engenharia de Software. Profa. Cynthia Pinheiro

Manutenção e Reengenharia de Software

Universidade Federal da Bahia Instituto de Matemática Departamento de Ciência da Computação

Unidade II MODELAGEM DE PROCESSOS. Profa. Gislaine Stachissini

Introdução ao Linux. Thiago Yukio Kikuchi Oliveira

Prof. Ms. Ronaldo Martins da Costa

Universidade Regional de Blumenau

Modelagem de Dados MODELAGEM DE DADOS. Sistemas de Banco de Dados. Profa. Rosemary Melo

MODELOS DE PROCESSOS (PARTE 2)

Notas de Aula 03: Introdução a Orientação a Objetos e a UML

Filosofia e conceitos de Software Livre

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

BCC Engenharia de Software Professor Rodrigo Andrade

Engenharia de Software II

Informática. Conceitos de Software Livre. Professor Márcio Hunecke.

DIREITOS AUTORAIS, SOFTWARE, SOFTWARE LIVRE,

Requisitos de Software e UML Básico. Janaína Horácio

DIAGRAMAS DE CLASSE UML

Apresentação do Capítulo 4 MDA (Model-Driven Archtecture) ALUNO: DOMENICO SCHETTINI FILHO NÚMERO USP:

UML e seus diagramas

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

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

Princípios da Engenharia de Software aula 03

Informática I. Aula Baseada no Capítulo 2 do Livro Introdução a Informática Capron e Johnson

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

Rational Unified Process (RUP)

Projeto de software Estrutura do software e arquitetura SWEBOK

Reengenharia, Refatoração e Bad Smell

OUTROS TRABALHOS EM:

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

Aula 1 - Introdução à disciplina e Processos de desenvolvimento de software e suas atividades básicas

3 Uma Arquitetura Distribuída via WEB

Software: na visão da ES

Engenharia de Software II

Processo de Desenvolvimento de Software

INFORMÁTICA EDUCATIVA. CAPÍTULO II Software. Protocolos de criptografia para redes. Profº. Claudio Campos

UML (Unified Modelling Language)

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

Histórico de Linguagens de Programação

Engenharia Software. Ení Berbert Camilo Contaiffer

27) Em relação aos Projetos de Sistemas de Software, assinale a sequência correta de desenvolvimento de um sistema:

1. INTRODUÇÃO A MODELAGEM DE DADOS

Análise e projeto de sistemas

Modernização de Legados

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

Modelagem De Sistemas

PADRÕES DE PROJETO: DESIGN PATTERNS

REA RECURSOS EDUCACIONAIS ABERTOS

POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos

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

Análise e Projeto Orientado a Objetos

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 15 PROFª BRUNO CALEGARO

Processos de software

Qualidade e Certificação em Software. Prof. Cesar 1

A Linguagem UML. A Linguagem UML. De onde surgiu? Fundadores da UML. História da UML. O que é modelagem?

UML Unified Modeling Language Linguagem de Modelagem Unificada

QUESTÕES TESTES. Questão 1. O modelo de ciclo de vida em cascata:

Prof. Luiz A. Nascimento

Levantamento, Análise e Gestão Requisitos. Aula 03

Princípios de Análise e Projeto Orientados a Objetos com UML

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

Laboratório de Engenharia de Software I

! Introdução. " Motivação para Processos de Software. ! Processo Unificado (USDP) " Definições " RUP x USDP " Características do Processo Unificado

15/04/2013. Pensar Orientado a Objetos. Projeto Orientado a Objetos. Características de Objetos. Classe de Objetos. Comunicação entre Objetos

132 6 Conclusão 6.1. Contribuições da Tese

Introdução a Teste de Software

Aula 12. Aquisição de Hardware

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

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.

Reuso de Software Aula Maio 2012

POO. Programação Orientada a Objeto. Introdução a POO. Professor Jarbas Araújo

Transcrição:

ENGENHARIA REVERSA E REENGENHARIA Manutenção de Software Profa. Cynthia Pinheiro Problemas na Manutenção Código fonte mal elaborado e documentação imprecisa, ultrapassada ou inexistente Falta de compreensão do sistema e suas funcionalidades. Muitas vezes, a tecnologia se tornou obsoleta Necessidade de mudar o paradigma de construção de software para melhorar o processo de Engenharia de Software. 1

Motivação Recuperar as informações de projetos existentes. Objetivo: esforço para melhorar a qualidade do sistema. Motivação Como fazer? através do exame e compreensão do software existente, em um caminho oposto ao desenvolvimento Recriar o projeto e recuperar os requisitos atualmente implementados, apresentando-os em um grau mais alto de abstração. 2

A partir do conhecimento em diversos níveis de abstração, um novo produto poderia ser desenvolvido. Níveis de Abstração: Código, Projeto, Requisitos. Funções antigas poderiam ser refeitas segundo novas técnicas e tendências. Engenharia Progressiva Processo tradicional de Engenharia de Software Características: atividades progressivas do ciclo de vida Partem de um nível de abstração mais alto para um nível de abstração mais baixo. Processo inverso ao da Engenharia Progressiva Características: atividades retroativas ao Ciclo de Vida Partem de um nível de abstração mais baixo para um nível de abstração mais alto. 3

Engenharia Progressiva x Engenharia Progressiva x Engenharia Progressiva 4

em Hardware Decifrar projetos de produtos acabados, para duplicá-los ou obter um entendimento de sua arquitetura. em Software Processo de exame e compreensão do software existente Recapturar ou recriar o projeto e decifrar os requisitos implementados em um nível de abstração mais alto. Baseadas nos níveis de abstração, as visões para a são classificadas em quatro tipos: Visão em nível implementacional Visão em nível estrutural Visão em nível funcional Visão em nível de domínio 5

Software visualizado de diferentes maneiras: Visão em nível implementacional: Características da linguagem Visão em nível estrutural: Detalhes da linguagem Visão em nível funcional: Função de um componente Visão em nível de domínio: Contexto de operação do sistema. Visões de Software 6

Etapas da Núcleo da : Ler o código sem ou com pouca documentação em diferentes níveis de abstração: sistema, programa, componente, padrão etc.) Entradas: Código fonte Dicionário de dados DDL (Linguagem de definição de dados) Saídas: Desenho do Banco de Dados Estrutura física dos dados Diagrama Entidade-Relacionamento Modelo de dados normalizado Especificações do Projeto 7

Etapas da : Etapa 1: Visualização do Código Fase de Redocumentação Representação a partir do código fonte Intenção de recuperar a documentação Visualização do código: não transcende a visão em nível estrutural Etapas da : Etapa 2: Entendimento do Programa Recuperação do Projeto A partir de uma combinação entre: Código Documentação existente Experiências pessoais e conhecimentos gerais sobre o problema e o domínio da aplicação 8

Etapas da : x Ética e Direitos Autorais Dúvida: Aplicar técnicas de em código de terceiros constitui um infração da Legislação de Propriedade Industrial ou Intelectual de Software? 9

x Ética e Direitos Autorais A prática será legal se: O desenvolvedor encerrou as atividades legais e não existe empresa sucessora Para estudos sem finalidade comercial, a menos que o proprietário declare expressamente o contrário. Quando tratar-se de Software Livre e sejam atendidas as quatro liberdades da GPL (General Public Licence) x Ética e Direitos Autorais Liberdades da General Public Licence (GPL): Liberdade 1: Executar o programa para qualquer propósito Liberdade 2: Estudar como o programa funciona e adaptálo a suas necessidades: Liberdade 3: Redistribuir cópias do programa Liberdade 4: Modificar o programa e distribuir suas melhorias para o público em geral, para que todos possam se beneficiar 10

Conceito Compreende uma série de atividades como: Inventário das aplicações Reestruturação da Documentação Reestruturação de Código e Dados Ponto de partida: Projeto ou versão executável caixa preta. Intenção: criar novas versões dos produtos mais críticos, com alta qualidade e melhor manutenibilidade. Algumas definições: Chiskofsky (1990): alteração de um sistema de software. Wander (1992): melhoramento do sistema, sem alteração 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. 11

Objetivos: Construir um sistema novo com maior facilidade de manutenção. Engenharia reversa é usada como parte do processo de Reengenharia. + Reengenharia 12

Por que a Reengenharia? Surgiu a necessidade de melhoria nos serviços e produtos oferecidos Houve uma compressão na margem de lucro das empresas Há redução do ciclo de vida dos produtos Explosão tecnológica Desgaste natural do software Usos da Reengenharia Migrar software de plataformas centralizadas para ambientes distribuídos Mudança de paradigma: a Programação Orientada a Objetos tem mais vantagens já que com ela os sistemas são mais flexíveis, adaptáveis e extensíveis (classes, objetos, herança e polimorfismo) No entanto, consome tempo e dinheiro, podendo durar alguns meses ou anos. 13

Como realizar a Reengenharia Duas fases distintas: Desmontado : visando o entendimento do programa Reconstruído : para ficar na forma desejada Reengenharia = + Engenharia Progressiva Como realizar a Reengenharia 14

Bibliografia Esta aula foi retirada dos seguintes livros/artigos: Software Maintenance: Concepts and Practice. PENNY GRUBB and ARMSTRONG A. TAKANG. Material de Engenharia de Software do Prof. Dr. José Oscar F. de Carvalho. 15