Manutenção de Software



Documentos relacionados
Engenharia Reversa e Reengenharia

EVOLUÇÃO DE SOFTWARE

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

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

ENGENHARIA DE SOFTWARE I

Engenharia de Software II

Engenharia de Requisitos

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

Universidade Paulista

Reengenharia. Fabrício de Sousa

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

GARANTIA DA QUALIDADE DE SOFTWARE

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

Referências internas são os artefatos usados para ajudar na elaboração do PT tais como:

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

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

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

Fábrica de Software 29/04/2015

1. Desenvolver o software iterativamente. Um pouco de reflexão: Acabou aí? 31/08/2010

Engenharia de Software II

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

LISTA DE VERIFICAÇAO DO SISTEMA DE GESTAO DA QUALIDADE

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

Processo de Desenvolvimento de Software

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

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

Como é o desenvolvimento de Software?

Processos de Desenvolvimento de Software

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

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

Introdução à Computação

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

Objetivos. Processos de Software. Tópicos abordados. O processo de software. Modelos genéricos de modelos de processo de software.

PROFESSOR: CRISTIANO MARIOTTI

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

Planejamento de Projetos. Professor Gabriel Baptista ( gabriel.baptista@uninove.br ) ( )

Metodologia de Desenvolvimento de Sistemas

CONCURSO PÚBLICO ANALISTA DE SISTEMA ÊNFASE GOVERNANÇA DE TI ANALISTA DE GESTÃO RESPOSTAS ESPERADAS PRELIMINARES

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

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

Modernização e Evolução do Acervo de Software. Gustavo Robichez de Carvalho guga@les.inf.puc-rio.br

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

Projeto de Sistemas I

Modelo Cascata. Alunos: Bruno Nocera Zanette Pedro Taques

Conceitos de Banco de Dados

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite (81 )

CENTRAL DE SERVIÇOS APOIADA EM SOFTWARE LIVRE

Introdução à Engenharia de Software

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

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

Engenharia de Software. Parte I. Introdução. Metodologias para o Desenvolvimento de Sistemas DAS

Unidade VI. Validação e Verificação de Software Teste de Software. Conteúdo. Técnicas de Teste. Estratégias de Teste

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

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador>

Ciclo de Vida Clássico ou Convencional CICLOS DE VIDA DE DESENVOLVIMENTO DE SISTEMAS. Ciclo de Vida Clássico ou Convencional. Enfoque Incremental

Feature-Driven Development

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

Gerenciamento de Problemas

FACULDADE DE TECNOLOGIA SENAC PELOTAS CURSO TÉCNICO EM INFORMÁTICA PRONATEC PROFESSOR: NATANIEL VIEIRA ALUNOS: ANA CAROLINA, ROMÁRIO, WAGNER.

O Impacto da Engenharia de Requisitos no Processo de Métricas. Fátima Cesarino CAIXA

CHECK LIST DE AVALIAÇÃO DE FORNECEDORES Divisão:

Prova de Conhecimento para Consultores de Implementação MPS.BR INSTRUÇÕES

CONCORRÊNCIA AA Nº 05/2009 BNDES ANEXO X PROJETO BÁSICO: DESCRIÇÃO DOS PROCESSOS DE TI

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

Engenharia de Software II

UNIDADE 4. Introdução à Metodologia de Desenvolvimento de Sistemas

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

Engenharia de Software II

Hardware & Software. SOS Digital: Tópico 2

Sistemas ERP. Profa. Reane Franco Goulart

5 Mecanismo de seleção de componentes

Módulo 4: Gerenciamento de Dados

Capítulo 2. Processos de Software Pearson Prentice Hall. Todos os direitos reservados. slide 1

Documento de Arquitetura

Tipos de teste de software

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

CHECK - LIST - ISO 9001:2000

Requisitos de Software

Introdução à ES - Continuação

Requisitos de Software

Ciência da Computação ENGENHARIA DE SOFTWARE. Análise dos Requisitos de Software

ENGENHARIA DE SOFTWARE

QUALIDADE DE SOFTWARE. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 27 Slide 1

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

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

Engenharia de Software

Introdução à Qualidade de Software. Profº Aldo Rocha

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

Gerenciamento de Projeto

Objetivos. Requisitos de Software. Tipos de Requisitos. O que é um requisito? Requisitos Funcionais e Não- Funcionais. Requisitos Funcionais

PROCEDIMENTO DA QUALIDADE

AULA 1 INTRODUÇÃO - ENGENHARIA DE SOFTWARE. Prof. Msc. Hélio Esperidião

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

Transcrição:

Tema da Aula Manutenção de Prof. Cristiano R R Portella portella@widesoft.com.br Manutenção de 9 Durante as fases de desenvolvimento, defeitos podem ser inadvertidamente gerados. A revisão (testes) pode falhar ao tentar descobrir os novos erros bem como os erros provenientes de fases anteriores. 9 Erros oriundos de fases anteriores, normalmente têm seus efeitos ampliados à medida em que a construção do produto de software avança (por exemplo, uma falha na estrutura de dados, irá se replicar pelo código de todos os programas que tratem essa estrutura). 1

Manutenção de A eficiência percentual na detecção de erros durante cada fase, aumenta na medida em que Técnicas de Testagem e padrões para Garantia da Qualidade são aplicados. Cálculo do percentual de erros remanescentes: Manutenção de 2

Ampliação de Defeitos 1 Sem revisão Ampliação de Defeitos 2 Com Revisões Técnicas Formais 3

Introdução Ainda que reparar defeitos seja a grande atividade da fase de Manutenção, existem outras causas que acabam por gerar a necessidade do produto de software passar por uma manutenção, tais como:. 9 Mudança na legislação pertinente ao sistema; 9 Mudança na tecnologia de TI/SI; 9 Mudança no processo-alvo; 9 Mudança no produto; 9 Mudança na clientela; 9 Mudança na direção; 9 Mudança nos modelos de gestão etc. Introdução Grande parte do software do qual dependemos atualmente tem, em média, de 1 a 15 anos de idade... Criados quando o tamanho e o espaço de armazenagem eram a principal preocupação Portados para novas plataformas Ajustados às novas tecnologias de SO, HW etc Ampliados para atender às novas necessidades dos usuários Condições em que essas manutenções se deram? (Def.Reqs, Análise, Projeto, Documentação, Testes etc etc???) 4

Definição Diferentes causas geram manutenções de tipos diferentes, que podem ser classificadas em: 9 Manutenção Corretiva 9 Manutenção Adaptativa 9 Manutenção Perfectiva 9 Manutenção Preventiva (Engenharia Reversa e Reengenharia) 9 Manutenção Corretiva: Corrigir defeitos (erros latentes) Definição 9 Manutenção Adaptativa: Adaptar-se a novas tecnologias (TI/SI), metodologias, modelos de gestão, legislação etc 9 Manutenção Perfectiva: Incluir novas funções (ampliações) 9 Manutenção Preventiva: Melhorar manutebilidade futura (Engenharia Reversa e Reengenharia) 5

Manutenção Estruturada x Não-Estruturada Existe Configuração configuração completa de sofware. Avaliar o PROJETO Será aplicada uma abordagem Planejar ABORDAGEM metodológica. Modificar o PROJETO Avaliar o CÓDIGO? Só existe código Fonte; não existe documenta ção do projeto. RECODIFICAR RECODIFICAR REVISÃO REVISÃO Configuração de Configuração completa de : 9 Estrutura de dados (Dic.Dados, Descrição das tabelas, MER, Cross-Reference etc. 9 Estrutura do software (diagrama estrutural, descrição de módulos x funcionalidade, descrição de classes e s/ métodos etc. 9 Interfaces do sistema (integração com outros SI s) 9 Restrições de projeto 9 Registro dos testes realizados 9 Registro das modificações realizadas Documentação Atualizada 6

Configuração de Manutenção Estruturada: 9 Solicitação do usuário; 9 Definir requisitos e especifica-los; 9 Analisar projeto; 9 Modificar projeto; 9 Revisar modificações; 9 Implementar código fonte; 9 Testes (unitário, integração, validação e sistema); 9 Registrar alterações (documentação e versão); e 9 Liberar nova versão do sistema. Custo de Manutenção Custo crescente da manutenção em relação ao custo total da área de Informática. % 197 198 % 199 2 4 6 8 1 7

Custo de Manutenção 9 Custos Intangíveis: Desenvolvimento postergado ou perdido. O maior custo da manutenção de software é uma drástica diminuição de produtividade em relação ao desenvolvimento de novos produtos. Redução da qualidade global do software. Insatisfação do cliente. 9 Um esforço de desenvolvimento que custe 25, por linha de código, pode custar 1, por linha mantida. Custo de Manutenção O esforço total de manutenção pode ser dividido em: 1. Atividades produtivas: Análise do projeto, avaliação da solicitação de manutenção, alteração do projeto, codificação. 2. Atividades improdutivas: Tentar entender o que o código faz, tentar interpretar as estruturas de dados, tentar descobrir as restrições originais do projeto, etc. 8

Custo de Manutenção Modelo de esforço em Manutenção: Em = p + Ke ( c d ) onde: Em = esforço total gasto em manutenção p = esforço produtivo Ke = constante empírica c = medida de complexidade atribuída à falta de um bom projeto e de uma documentação completa e atualizada d = medida do grau de familiaridade do profissional com o projeto Custo de Manutenção Estudo de três casos onde não ocorra variação no esforço produtivo (p = 1) e na constante empírica (Ke = 2) 1o Caso: Falta um bom projeto e uma documentação completa e atualizada (c = 7). O profissional tem baixa familiaridade com o software (d = 2). Em = 1 + 2 Em = 1 + 2 Em = 42 (7 2) 5 9

Custo de Manutenção Estudo de três casos onde não ocorra variação no esforço produtivo (p = 1) e na constante empírica (Ke = 2) 2o Caso: O projeto é pior que o do primeiro caso (c = 15), porém o profissional tem familiaridade com o software (d = 1). A falta de abordagem (15 1) metodológica Em = 1 + 2 é compensada com a 5 ancoragem do Em = 1 + 2 profissional de desenvolvimento, na Em = 42 atividade de manutenção. Custo de Manutenção Estudo de três casos onde não ocorra variação no esforço produtivo (p = 1) e na constante empírica (Ke = 2) 3o Caso: O projeto é ruim (c = 15). Como agravante existe um alto turnover na equipe de desenvolvedores (rotatividade de pessoal), gerando uma baixa familiaridade com o software (d = 2). Em = 1 + 2 Em = 1 + 2 Em = 8192 (15 2) 13 O esforço de manutenção eleva-se de maneira exponencial, pela falta de uma abordagem apoiada em princípios de Eng.. 1

Custo de Manutenção Agravantes: 9 Freqüentemente é difícil senão impossível rastrear a evolução do software através de muitas versões (falta de gerenciamento de versão). 9 A codificação feita por profissionais imaturos profissionalmente ou sem formação ampla, não apresente legibilidade e manutebilidade. 9 Geralmente as manutenções são feitas de maneira desestruturada e empírica (tentativa e erro). 9 A maioria dos SW não é projetada para mudanças. 9 A manutenção não é vista como um trabalho interessante. Manutebilidade Manutebilidade: Facilidade com que um software pode ser entendido, corrigido, adaptado ou ampliado. Medidas indiretas da manutebilidade de um software (Métricas de Manutenção): Tempo de Reconhecimento do problema Tempo de Análise do problema Tempo de Especificação das mudanças Tempo de Correção Tempo de Testes Tempo de Revisão da manutenção Tempo de Recuperação total 11

Tarefas de Manutenção 9 Organização para a Manutenção Porta Única 9 Relatórios Relatório de Problemas de SW (Pedido de Manutenção feito pelo usuário) Relatório de Mudanças de SW (Relatório interno realizado a partir da solicitação do usuário. Será encaminhado para a Supervisão da área de Informática) 9 Fluxo de Eventos 9 Conservação de Registros 9 Avaliação Tarefas de Manutenção Porta Única Porta única 12

Demais tipos de manutenção Tarefas de Manutenção Fluxo de Eventos Manutenção Corretiva e Adaptativa por força de lei. Tarefas de Manutenção Conservação de Registros Da conservação de registros da atividade de Manutenção dependerá: 9 Melhorar a precisão da estimativa de tempo para realizar futuras manutenções 9 Analisar a efetividade das técnicas aplicadas em manutenção 9 Realizar a atividade de Melhoria Contínua sobre os processos e controles 13

Tarefas de Manutenção Conservação de Registros Medidas em potencial, cujos dados devem ser registrados e armazenados por Sistema programa desenvolvedor: Número médio de falhas/tempo (MTBF) Tempo médio em manutenção (MTTM) Total de horas gastas por tipo de manutenção Sistemas com maior incidência de manutenção Tempo médio para atendimento de manutenção Manutenção Efeitos Colaterais Qualquer mudança introduzida num procedimento lógico complexo aumenta seu potencial de erros e tende a descaracterizar o projeto original. Assim, pode-se esperar efeitos colaterais Na Codificação (tratamento de arquivos, flags, operadores lógicos, testes insuficientes etc.) Nos Dados (redundâncias, perda de integridade, erro em sistemas integrados etc) Na Documentação (falta de atualização, mudança de padrão etc) 14

Manutenção Códigos Alienígenas Também conhecido como código legado. 9 Características: Nenhum membro atual trabalhou no desenvolvimento Nenhuma metodologia de projeto foi aplicada Documentação é incompleta e registro das mudanças passadas superficial ou inexistente Tecnologia obsoleta Esse tipo de manutenção pede cautela (analise e teste primeiro, não elimine o código antigo, documente tudo, faça testes exaustivos). Formas exóticas de Manutenção Ao longo de anos, correções, adaptações e expansões, aliadas às boas práticas de ES, levaram as aplicações à instabilidade, qualquer nova mudança causa uma série de efeitos inesperados, o tempo médio em manutenção é excessivamente alto. Esses produtos legados têm: Projeto pobre Codificação pobre Lógica pobre Documentação pobre São produtos pré era da. 15

Formas exóticas de Manutenção A questão a ser analisada é: a aplicação deve continuar a receber manutenções (reformas) ou ser reconstruída?? sim não 1-Manutenção ou 2-Reestruturar código/dados 3-Engenharia Reversa ou 4-Reengenharia 1 - Reestruturar Código e Dados Reestruturar Código significa reescrever o código de alguns módulos dentro do produto de software, que estão gerando mais problemas (instáveis) ou que a manutenção exige mais esforço. Normalmente não é escrever todo o programa, mas apenas as partes que violam regras de estruturação (por isso o termo reestruturar o código). Reestruturar Dados significa alterar estruturas de dados. Geralmente as estruturas de dados impactam mais, a longo prazo, a viabilidade de um programa, que o código fonte. 16

1 - Reestruturar Código e Dados Para reestruturar dados devemos analisar a estrutura atual, definir um modelo de dados e por fim refazer as estruturas normalizando-as. Uma alteração nas estruturas de dados implica em mudanças de projeto e de codificação. Por isso, uma reestruturação deve começar pelos dados e depois passar para o código. 2 - Engenharia Reversa Engenharia Reversa (Forward Engineering ou Renovation ou Reclamation*) é uma forma de refazer um produto de software recuperando-se as informações de projeto existentes, as quais serão usadas para alterar o SI, num esforço de melhorar sua qualidade. Através do exame e compreensão do software existente, num caminho oposto ao do desenvolvimento, vamos recriar o projeto e decifrar os requisitos atualmente implementados pelo sistema, apresentando-os em um nível ou grau mais alto de abstração. (*) renovação 17

2 - Engenharia Reversa A partir do conhecimento obtido em diferentes níveis de abstração do produto (código, componentes, funcionalidade, escopo etc), um novo produto será desenvolvido, tendo as funções antigas refeitas segundo novas técnicas e tendências, além de receber novas funções, adicionadas para atender necessidades dos usuários e das novas tecnologias. 2 - 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. Requisitos Projeto Código Engenharia Progressiva Engenharia Progressiva Engenharia Reversa Engenharia Reversa 18

2 - Engenharia Reversa O conceito de Engenharia Reversa de é similar a sua aplicação em hardware (decifrar projetos de produtos acabados, com o intuito de duplica-los ou apenas obter um entendimento de sua arquitetura). 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 2 - Engenharia Reversa Por meio da engenharia reversa um software pode ser visualizado em diferentes níveis de abstração (código, projeto, requisitos).cada VISUALIZAÇÃO abstrai características próprias da fase do ciclo de vida correspondente à abstração. Baseado nos níveis de abstração, as visões são classificadas em 4 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 19

2 - Engenharia Reversa Visão em Nível de Domínio Requisitos Visão em Nível Funcional Projeto ENGENHARIA PROGRESSIVA Código ENGENHARIA REVERSA Visão em Nível Estrutural Visão em Nível Implementacional 2 - Engenharia Reversa Visão em Nível Implementacional Abstrai características da linguagem de programação e características específicas da implementação (informações s/ sintaxe, semântica e implementação). Visão em Nível Estrutural Abstrai detalhes da linguagem de programação para revelar sua estrutura a partir de diferentes perspectivas. O resultado é uma representação explícita das dependências entre os componentes do sistema (grafos tipo DFD, de Controle, projeto arquitetural etc). 2

2 - Engenharia Reversa Visão em Nível Funcional Abstrai a função de um componente, isto é, sua característica comportamental. Essa visão relaciona partes do programa às suas funções procurando revelar as relações lógicas entre elas (diferentemente das relações sintáticas ou da estrutura), como por exemplo a relação entre processos e fluxo de dados no DFD ou a relação entre processos fluxo de controle entre eles através do Diagrama de Fluxo de Controle. 2 - Engenharia Reversa Visão em Nível de Domínio Abstrai o contexto em que o sistema esta operando, ou seja, as necessidades do usuário, o suporte prestado ao processo-alvo, as inter-relações entre sistemas e as restrições do contexto. 21

2 - Engenharia Reversa Núcleo da Eng. Reversa: Ler o código geralmente sem documentação, em diferentes níveis de abstração: (sistema, programa, componente, padrão etc.) Código fonte sujo Reestruturar código Código fonte limpo Extrair abstrações Especificação inicial Refinar e simplificar Especificação final Funcional, de dados e de interface Manutenção e Eng. Reversa Manutenção (normal) e Engenharia Reversa: Mesmo durante o desenvolvimento de alguns tipos de manutenção, aplicamos (ou pelo menos podemos aplicar) técnicas de Engenharia Reversa. Por exemplo: Manutenção Corretiva: Localizar componente defeituoso através da melhoria na compreensão do software. 22

Manutenção e Eng. Reversa Manutenção Adaptativa: Usar Eng.Reversa para obter visões do software a fim de localizar os componentes que receberão as mudanças/adições ou para criar a documentação necessária. Manutenção Preventiva: Através de visões do produto, definir onde e como realizar mudanças apropriadas. Nas futuras manutenções (preventiva), utilizar-se da documentação gerada via Eng.Reversa. Eng. Reversa e 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 compreende as atividades: Reconhecimento Decomposição Classificação (para povoar as bibliotecas de reuso) Seleção Adaptação e Composição. Técnicas de engenharia reversa ajudam o desenvolvimento das fases de Reconhecimento, Decomposição e Classificação. 23

Eng. Reversa e Reuso Componentes candidatos a reuso podem ser mais facilmente reconhecidos, se forem convertidos para uma notação ou forma padrão, a exemplo da técnica denominada Tecnologia de Grupo utilizada na Engenharia Mecânica/Manufatura. 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 de novos sistemas gerados a partir de componentes reutilizáveis (COTS) de várias origens (outros sistemas, bibliotecas de terceiros, Internet etc). Eng. Reversa e Ética/Direitos Autorais Engenharia Reversa e Questões Éticas e Legais. Aplicar técnicas de Engenharia Reversa constitui-se numa infração da Legislação de Propriedade Industrial ou Intelectual de? A prática será legal se: 1. Temos Direito de Propriedade do. Não confundir com Direito de Uso. 2. No caso de Livre (GNU-Free ) desde que sejam atendidas as 4 liberdades dos Termos GNU(*). 3. O desenvolvedor do software encerrou suas atividades e não existem empresas sucessoras. 4. Cópia para estudo é legal, a menos que o proprietário declare expressamente o contrário. 24

General Public License (GPL) Liberdade 1: Executar o programa com qualquer propósito; Liberdade 2: Estudar como o programa funciona e adapta-lo às suas necessidades. O acesso ao código fonte é um prérequisito para que se possa estudar o software; Liberdade 3: Redistribuir cópias do programa; e Liberdade 4: Modificar o programa e distribuir suas melhorias para o público em geral, de maneira que a comunidade em geral possa se beneficiar disso General Public License (GPL) O autor de um software inicialmente distribuído na condição de Livre, não pode se arrepender dessa atitude e tentar revogar as liberdades. Se isso puder ser feito, o software não atende as condições dos termos GPL. Um Livre pode ser distribuído com regras restritivas, desde que essas restrições não entrem em conflito com as quatro liberdades. Por exemplo, o COPYLEFT éuma regra restritiva que garante que essas quatro liberdades sempre existam. A licença do produto original não pode ser modificada e o usuário deve ter acesso à mesma, na íntegra. 25

General Public License (GPL) O código fonte deve estar disponível, em conjunto com a versão executável, ou o distribuidor deve informar ao usuário que ele pode adquiri-lo (ou apenas copia-lo sem custo), num período máximo de 3 anos, por um valor não superior ao do meio físico de armazenagem mais custos de reprodução e embalagem. Não é permitida utilizar-se de partes do código de um software licenciado pela GPL em um software proprietário. Para que isso seja possível, o software proprietário como um todo deverá passar a ser software livre, além de necessitar autorização formal do autor do componente utilizado. 2 - Engenharia Reversa em Código Objeto Executável Quando o produto é de terceiros e não temos acesso ao código fonte, a atividade de Engenharia Reversa fica semelhante àquela executada em hardware (caixa preta): a partir de entradas projetadas obtém-se saídas que serão analisadas, de forma a deduzirmos o processamento de transformação realizado. 1 1 1 1???? 1 Fluxo normal. Fluxo inverso.? 26

Reengenharia de Sistemas Reengenharia de Sistemas: Compreende uma série de atividades como: inventário das aplicações, reestruturação da documentação, reestruturação de código e dados, engenharia reversa a partir de projeto e do tipo caixa preta, com a intenção de criar novas versões dos produtos mais críticos, dotando-as de alta qualidade e melhor manutebilidade. Reengenharia de Sistemas Reengenharia de Sistemas: A rigor, a aplicação de conceitos de Reengenharia, implica em fazer um novo produto sem copiar características do produto existente (até porque nesse caso teríamos um caso de Engenharia Reversa). A Reengenharia preconiza estudar o processo e criar um novo produto, com características radicalmente inovadoras (portanto não copiadas do produto existente). 27

Exercício I Exercício I 1. Quais tipos de manutenção o usuário deve pagar (através de débito ao seu centro de custo ou no contrato de manutenção) e quais tipos o desenvolvedor deve arcar com seu custo? 2. Qual(ais) tipo(s) são normalmente coberto(s) pelos Contratos de Manutenção? 28

Exercício II Exercício II 1. Usando a tabela a seguir, aplicar o modelo do Pressman para calcular a quantidade de defeitos latentes. 2. O que pode explicar: a) O decréscimo do fator de ampliação de erros? b) O aumento de erros gerados na fase, em relação às 3 primeiras fases? c) O crescimento do percentual de detecção de erros na fase, em relação às 3 primeiras fases? 29

Exercício II Fases 1 2 3 4 5 Def.Requisitos 2 2 Análise e Projeto 6 1 2, 3 5 Teste unitário 2 8 1,5 38 6 Teste de integração 4 Teste de validação 4 Teste de sistema 4 Exercício II Legenda da Tabela 1 Erros passados para a próxima fase, sem ampliação 2 Erros passados para a próxima fase, com ampliação 3 - Fator de ampliação 4 Novos erros criados na fase 5 Percentual de detecção de erros da fase Observação: Nas divisões, considere apenas a parte inteira do número resultante. 3