leitura: cap26 - 27 - 28: sommerville; cap20: pressmanmaria/arqan/2011-1/cap8-manut.pdf ·...

47
Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 1/47 Engenharia de Software 3º Edição / Roger Pressman Engenharia de Software 1º Edição / Ariadne Carvalho Leitura: Cap26 - 27 - 28: Sommerville; cap20: Pressman

Upload: others

Post on 24-Mar-2020

12 views

Category:

Documents


0 download

TRANSCRIPT

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 1/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

���������

Leitura:Cap26 - 27 - 28: Sommerville; cap20: Pressman

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 2/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

� É modificar um programa depois que ele foi colocado em uso.

� A manutenção normalmente não envolve grandes mudanças na arquitetura do sistema

� As mudanças são implementadas modificando os componentes existentes e adicionando novos componentes ao sistema

Manutenção de software

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 3/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

� Manutenção Corretiva - Identificar e corrigir erros.

� Manutenção Adaptativa - Adaptar o software ao ambiente.

� Manutenção Perfectiva - Atender pedidos do usuário para modificar funções existentes ou incluir novas funções.

� Manutenção Preventiva - Melhorar a manutenibilidade ou confiabilidade futuras.

Tipos de Manutenção de Software

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 4/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Mudança de Software

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 5/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Estratégias de mudança de software

� Manutenção de software• Mudanças são feitas em resposta a requisitos

modificados, mas a estrutura fundamental do SW permanece estável.

� Transformação de arquitetura• A arquitetura do sistema é modificada geralmente de

uma centralizada p/ uma distribuída

� Reengenharia de software• Nenhuma funcionalidade é adicionada ao sistema,

mas ele é re-estruturado e re-organizado p/ facilitar mudanças futuras

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 6/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

� A dinâmica de evolução de programas é o estudo da mudança do sistema

� As leis de Lehman são aplicadas a todos os sistemas enquanto eles evoluem.

� As leis são derivadas das observações aplicadas a sistemas de larga escala desenvolvidos por grandes organizações

Dinâmica de evolução de programas –Leis de Lehman

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 7/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

5 Leis de Lehman� Mudança contínua – um programa num ambiente real

necessariamente muda ou torna-se progressivamente menos útil nesse ambiente.

� Aumento da complexidade – com a evolução do programa sua estrutura tende a ficar mais complexa.

� Evolução de programas de larga escala – a evolução de um programa é um processo auto-regulador.

� Estabilidade organizacional – mudanças de

staff/recursos tem poucos efeitos na evolução do sistema.

� Conservação da familiaridade - a mudança incremental é constante.

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 8/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Distribuição do esforço de manutenção

Adição ou modificação de funcionalidade

(65%)

Reparação de Falhas (17%)

Adaptação deSW (18%)

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 9/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Modelo espiral p/ manutenção

especificação

Release 1

Release 2

Release 3operação

implementação

validação

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 10/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Custos de manutenção

0 50 100 150 200 250 300 350 400 450 500 $

Sistema1

Sistema2

Custos de desenvolvimento Custos de manutenção

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 11/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

� Estabilidade da equipe - Custos de manutenção são menores se a mesma equipe está envolvido com o sistema.

� Responsabilidade contratual – Se os engenheiros de SW não tem nenhuma responsabilidade contratual p/ a manutenção, não há incentivo em documentar o SW p/ garantir mudança futura.

� Habilidades da equipe - A equipe de manutenção éinexperiente e tem conhecimento limitado do domínio.

� Idade e estrutura do programa - Enquanto o programa envelhece, sua estrutura se degrada tornando-o mais difícil de compreender e mudar.

Manutenção - Fatores de custos

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 12/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

O processo de manutenção

Planejamento de release

Pedidos de alterações

Análise de impacto

Implementação de mudança

Release do sistema

Reparo de defeitos

Adaptação da

plataforma

Incrementode sistema

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 13/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Pedidos de mudança

� São feitos pelos utilizadores, clientes ou gerentes.

� Na prática, alguns pedidos devem ser implementados urgentemente:• Reparar falhas • Mudanças no ambiente • Mudanças urgentes do negócio

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 14/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Implementação de mudança

Validaçãode requisitos

Mudançaspropostas

Análise de requisitos

Desenvolvimento do Software

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 15/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Reparação de emergência

Modifique o código-fonte

Pedido de alteração

Análise o código-fonte

Libere o sistema modificado

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 16/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Previsão de mudança� A previsão de mudança preocupa-se em avaliar

as partes do sistema que podem causar problemas e ter custos de manutenção altos• A aceitação da mudança depende da facilidade de manutenção

dos componentes afetados pela mudança.

• Implementar mudanças degrada o sistema e reduz sua a facilidade de manuteção.

• Custos de manutenção dependem do número de mudanças e os custos de implementação das mudanças dependem da facilidade de manuteção dos componentes do sistema.

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 17/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Previsão de mudança

Previsão de facilidade demanutenção

Previsão de custo de

manutenção

Previsão de mudança de

sistema

Que partes serão afetadas pelos pedidos de mudança?Quantos pedidos de mudança podem ser esperados?

Que partes do sistema serão mais dispendiosas para se manter?

• Quais serão os custosmanutenção durante o tempo de vida útil desse sistema?

• Quais os custos demanutenção desse sistema no próximo ano?

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 18/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Evolução da arquitetura

� Há uma necessidade de converter muitos sistemas legados de uma arquitetura centralizada p/ uma cliente-servidor

� Razões • Custos de HW. • Expectativas quanto à interface com o usuário• Acesso distribuído aos sistemas

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 19/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Evolução da arquitetura

� Fatores de distribuição• A importância do negócio

• A idade do sistema (quanto mais velho mais difícil)

• Estrutura do sistema (quanto mais modularizado, mais fácil)

• Política de suprimento de HW (substituição dos mainframes por servidores)

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 20/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Sistemas Legados� Antigos sistemas que ainda são essenciais

para a empresa.

� Todos os sistemas de software úteis inevitavelmente são modificados quando as empresas passam por mudanças.

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 21/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Risco de substituir um Sistemas Legados

� Sistemas de legado, raramente, têm uma especificação completa.

� Os processos corporativos e o modo como os sistemas legados operam estão sempre entrelaçados.

� O sistema pode embutir regras corporativas que não estão documentadas formalmente em outro lugar.

� Desenvolvimento de software novo é arriscado e pode não ter êxito.

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 22/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Mudanças em um Sistemas Legados

� Partes diferentes implementadas por diferentes equipes.

� Linguagem de programação obsoleto. � A documentação de sistema está desatualizada. � A estrutura de sistema corrompida por muitos

anos de manutenção (utilização de técnicas para economizar espaço ou aumentar a velocidade).

� Estruturas de arquivo usadas podem ser incompatíveis.

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 23/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Sistemas Legados de Aplicação

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 24/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Sistemas Centrados em Bancos de Dados

Programa 1

Programa 2

Programa 3

Programa 4

Sistema de Gerenciamento

de banco de dados

Modelos de dados lógicos

e físicosdescreve

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 25/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Avaliação dos Sistemas Legados• Descartar completamente o sistema.

• escolhida quando o sistema não estiver prestando uma contribuição efetiva aos processos.

• Continuar a manter o sistema.• sistema é necessário e sem grande número de modificações.

• Transformar o sistema de alguma maneira para melhorar sua facilidade de manutenção.• qualidade do sistema foi degradada por modificações regulares.

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 26/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Avaliação dos Sistemas Legados

Qualidade de sistema

Val

or d

e ne

góci

os

12

3

910

6

78

45

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 27/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Estrutura de Sistemas Legados

Interface com ousuário

serviços

Banco de dados

Modelo ideal Sistema legados reais

Banco de dados

serviços

Interface com ousuário

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 28/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Distribuição de Sistemas Legados

BD

Sistema legado

middlewareServiço de aplicação

IU

Sistema legado

Terminais a caractere

Aplicação em operação em clientes PC

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 29/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Modelo de Distribuição em Camadas

Apresentação

Validação de dados

Controle de interação

Serviços da aplicação

Base de dados

Organização de tela p/ usuário final

Verificar entrada/saída de dados

Gerencia seqüência de operação/telas

Fornece cálculos básicos

Fornece gerenciamento eArmazenamento de dados

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 30/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Opções de distribuição

� O modelo de distribuição mais simples é a distribuição da interface do utilizador onde somente a interface é implementada no servidor

� A opção mais complexa é onde o servidor provê gestão dos dados e os serviços são implementados no cliente

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 31/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Spectrum de opções de distribuição Servidor:

1- Controle de interaçãoValidação de dadosServiçosBanco de dados

2- ServiçosBanco de dados

3- Banco de dados

Cliente:1- Apresentação 2- Apresentação

Controle de interaçãoValidação de dados

3- ApresentaçãoControle de interaçãoValidação de dadosServiços

Custo e esforço crescente

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 32/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Distribuição da interface com o usuário

� A distribuição da interface com o usuário tira vantagem da capacidade de processamento local dos PCs p/ implementar interfaces gráficas

� Onde há uma separação clara entre a interface e a aplicação então o sistema legado pode ser modificado para distribuir a interface

� Caso contrário um middleware p/ gerenciamento de tela pode traduzir interfaces textuais p/ gráficas

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 33/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Distribuição da interface do utilizador

BD Middlewarede gerenciamento de tela

Serviço de aplicação

IU

Sistema legado

Cliente desktop PC com interface GUI

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 34/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Manutenção de Código Alienígena

� Programas com muitos fluxos de controle. � Módulos muito grandes.� Poucos linhas de comentários significativos.� Não existe nenhum outro elemento da

configuração de software, além do código.� Nenhum membro do pessoal atual de

manutenção trabalhou no desenvolvimento do programa.

� Nenhuma metodologia de desenvolvimento foi aplicada.

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 35/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Solução

Engenharia Reversa e Reengenharia

Manutenção de Código Alienígena

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 36/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

� ENGENHARIA REVERSA• processo de análise de um software,

partindo-se inicialmente da implementação para um nível mais alto de abstração

� REENGENHARIA• implica no exame e na alteração do software

para reconstruí-lo em uma nova forma.

Engenharia Reversa e Reengenharia

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 37/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Engenharia Reversa e Reengenharia

requisito projeto implementação

Eng. progressiva Eng. progressiva

Eng. reversa Eng. reversa

Reengenharia Reengenharia

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 38/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

� Re-estruturar ou re-escrever parte ou todo um sistema legado, sem alterar a sua funcionalidade.

� Aplicável quando alguns subsistemas de um sistema mais amplo requerem uma manutenção freqüente.

� A re-engenharia envolve a adição de esforço de modo a tornar esses sistemas mais fáceis de manter. Os sistemas poderão ser re-estruturados e re-documentados.

Reengenharia

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 39/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

� Risco reduzido: Re-desenvolvimento de software essencial constitui um risco elevado, devido ao papel crítico do software na organização

� Custo reduzido: Algumas estimativas sugerem que o custo de re-engenharia ésignificativamente inferior ao custo de re-desenvolvimento do sistema, provavelmente 4 vezes inferior

Vantagens da Reengenharia

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 40/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Distinção entre Reengenharia e o Novo Desenvolvimento de Software

Sistema de Softexistente

SistemaAlterado

(reengenheirado)

Compreensãoe transformação

Reengenharia de software

Especificação do sistema

Novo sistema

Projeto eimplementação

Novo sistema

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 41/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

Processo de ReengenhariaPrograma

original

Tradução deCódigo-fonte

Document.de programa

Programamodularizado

Dadosoriginais

Programaestruturado

Dadosreengenheirados

Engenhariareversa

Melhoria de estrutura do prog

Modularizaçãode programa

Reengenharia de dados

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 42/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

� A qualidade do software que deve passar pelo processo de reengenharia

� Ferramentas disponíveis ao processo de reengenharia

� A extensão de conversão de dados requerida

� A disponibilidade de pessoal habilitado.

Fatores de Custo de Reengenharia

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 43/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

� Analisar o software com o objetivo de recuperar o seu projeto e a sua especificação a partir de seu código-fonte.

Engenharia Reversa

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 44/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

O processo da Engenharia Reversa

Análiseautomatizada

Diagrama deestrutura de programa

Geração dedocumentos

Anotaçãomanual

Diagrama deestrutura de

dados

Matrizes derastreamento

Sistema a serreengenheirado

Repositóriode

Informaçõesdo

Sistema

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 45/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

� Perda de comentários / Perda de documentação.

� A reestruturação não ajuda na presença de uma modularização pobre, onde componentes relacionados estão dispersos pelo código

� A compreensão de programas orientados a dados poderá não ser melhorada através da reestruturação

Problemas com a Re-estruturação

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 46/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

� É o processo de reorganizar um programa, de modo que as partes relacionadas sejam coletadas e consideradas um único módulo.

� Tipos de módulos:• Abstrações de dados;• Módulos de hardware;• Módulos funcionais; • Módulo de apoio ao processo.

Modularização de programa

Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000 Slide 47/47Engenharia de Software 3º Edição / Roger PressmanEngenharia de Software 1º Edição / Ariadne Carvalho

� Envolve a análise e a reorganização das estruturas de dados (e, por vezes, dos valores dos dados) num programa.

� Razões para usar a reengenharia de dados:• Limpeza de dados;• Extensão de dados;• Migração de dados.

Reengenharia de Dados