Leitura:
Cap26 - 27 - 28: Sommerville; cap20: Pressman
Auxiliadora Freire
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 1/47
Manutenção de software
É 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
Auxiliadora Freire
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 2/47
Tipos de Manutenção de Software
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.
Auxiliadora Freire
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 3/47
Mudança de Software
Auxiliadora Freire
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 4/47
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
•
Auxiliadora Freire
Nenhuma funcionalidade é adicionada ao sistema,
mas ele é re-estruturado e re-organizado p/ facilitar
mudanças futuras
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 5/47
Dinâmica de evolução de programas –
Leis de Lehman
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
Auxiliadora Freire
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 6/47
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
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 7/47
Distribuição do esforço de
manutenção
Reparação de
Falhas (17%)
Adaptação de
SW (18%)
Auxiliadora Freire
Adição ou modificação
de funcionalidade
(65%)
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 8/47
Modelo espiral p/ manutenção
implementação
especificação
Release 1
Release 2
operação
Auxiliadora Freire
validação
Release 3
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 9/47
Custos de manutenção
Sistema1
Sistema2
0
50 100 150 200 250 300 350 400 450 500
Custos de desenvolvimento
Auxiliadora Freire
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
$
Custos de manutenção
Slide 10/47
Manutenção - Fatores de custos
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.
Auxiliadora Freire
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 11/47
O processo de manutenção
Pedidos de
alterações
Auxiliadora Freire
Análise de
impacto
Planejamento
Implementação
de release
de mudança
Reparo de
defeitos
Adaptação
da
plataforma
Incremento
de sistema
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Release
do sistema
Slide 12/47
Pedidos de mudança
São feitos pelos utilizadores, clientes ou
gerentes.
Na prática, alguns pedidos devem ser
implementados urgentemente:
•
•
•
Auxiliadora Freire
Reparar falhas
Mudanças no ambiente
Mudanças urgentes do negócio
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 13/47
Implementação de mudança
Mudanças
propostas
Auxiliadora Freire
Análise de
requisitos
Validação
de requisitos
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Desenvolvimento
do Software
Slide 14/47
Reparação de emergência
Pedido de
alteração
Auxiliadora Freire
Análise o
códigofonte
Modifique o
código-fonte
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Libere o sistema
modificado
Slide 15/47
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
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 16/47
Previsão de mudança
Que partes do sistema serão mais dispendiosas para se manter?
Previsão de
facilidade de
manutenção
Previsão de
mudança de
sistema
Previsão de
custo de
manutenção
• Quais serão os custos
manutenção durante o
tempo de vida útil
desse sistema?
• Quais os custos de
manutenção desse
sistema no próximo
ano?
Que partes serão afetadas pelos pedidos de mudança?
Quantos pedidos de mudança podem ser esperados?
Auxiliadora Freire
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 17/47
Evolução da arquitetura
Há uma necessidade de converter muitos
sistemas legados de uma arquitetura
centralizada p/ uma cliente-servidor
Razões
•
•
•
Auxiliadora Freire
Custos de HW.
Expectativas quanto à interface com o usuário
Acesso distribuído aos sistemas
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 18/47
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
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 19/47
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
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 20/47
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
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 21/47
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
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 22/47
Sistemas Legados de Aplicação
Auxiliadora Freire
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 23/47
Sistemas Centrados em
Bancos de Dados
Programa
1
Programa
2
Programa
3
Sistema de
Gerenciamento
de banco de dados
Auxiliadora Freire
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Programa
4
descreve
Modelos
de dados lógicos
e físicos
Slide 24/47
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
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 25/47
Avaliação dos Sistemas Legados
6
9
7
Valor de negócios
10
5
2
1
8
3
4
Qualidade de sistema
Auxiliadora Freire
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 26/47
Estrutura de Sistemas Legados
Interface com o
usuário
Interface com o
usuário
serviços
serviços
Banco de dados
Banco de dados
Modelo ideal
Sistema legados reais
Auxiliadora Freire
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 27/47
Distribuição de Sistemas Legados
Aplicação em operação em clientes PC
Sistema legado
Serviço de
aplicação
BD
IU
middleware
Sistema
legado
Terminais a caractere
Auxiliadora Freire
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 28/47
Modelo de Distribuição em Camadas
Apresentação
Organização de tela p/ usuário final
Validação de dados
Verificar entrada/saída de dados
Controle de interação
Auxiliadora Freire
Gerencia seqüência de operação/telas
Serviços da aplicação
Fornece cálculos básicos
Base de dados
Fornece gerenciamento e
Armazenamento de dados
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 29/47
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
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 30/47
Spectrum de opções de distribuição
Servidor:
1- Controle de interação 2- Serviços
Validação de dados
Banco de dados
Serviços
Banco de dados
3- Banco de dados
Cliente:
1- Apresentação
2- Apresentação
Controle de interação
Validação de dados
3- Apresentação
Controle de interação
Validação de dados
Serviços
Custo e esforço crescente
Auxiliadora Freire
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 31/47
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
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 32/47
Distribuição da interface do
utilizador
Cliente desktop PC com interface GUI
Sistema legado
Serviço de
aplicação
BD
IU
Auxiliadora Freire
Middleware
de gerenciamento de tela
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 33/47
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
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 34/47
Manutenção de Código
Alienígena
Solução
Engenharia Reversa e Reengenharia
Auxiliadora Freire
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 35/47
Engenharia Reversa e
Reengenharia
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.
Auxiliadora Freire
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 36/47
Engenharia Reversa e
Reengenharia
requisito
projeto
Eng. progressiva
Eng. progressiva
Eng. reversa
Eng. reversa
Reengenharia
Auxiliadora Freire
implementação
Reengenharia
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 37/47
Reengenharia
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.
Auxiliadora Freire
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 38/47
Vantagens da Reengenharia
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 redesenvolvimento do sistema, provavelmente 4
vezes inferior
Auxiliadora Freire
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 39/47
Distinção entre Reengenharia e o Novo
Desenvolvimento de Software
Novo sistema
Especificação do
sistema
Projeto e
implementação
Novo
sistema
Reengenharia de software
Sistema de Soft
existente
Auxiliadora Freire
Compreensão
e transformação
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Sistema
Alterado
(reengenheirado)
Slide 40/47
Processo de Reengenharia
Document.
de programa
Programa
original
Programa
modularizado
Dados
originais
Engenharia
reversa
Modularização
de programa
Tradução de
Código-fonte
Melhoria de
estrutura do prog
Auxiliadora Freire
Programa
estruturado
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Reengenharia
de dados
Dados
reengenheirados
Slide 41/47
Fatores de Custo de
Reengenharia
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.
Auxiliadora Freire
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 42/47
Engenharia Reversa
Analisar o software com o objetivo de
recuperar o seu projeto e a sua
especificação a partir de seu código-fonte.
Auxiliadora Freire
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 43/47
O processo da Engenharia
Reversa
Diagrama de
estrutura de
programa
Análise
automatizada
Repositório
de
Informações
do
Sistema
Sistema a ser
reengenheirado
Geração de
documentos
Anotação
manual
Auxiliadora Freire
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Diagrama de
estrutura de
dados
Matrizes de
rastreamento
Slide 44/47
Problemas com a Reestruturação
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
Auxiliadora Freire
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 45/47
Modularização de programa
É o processo de reorganizar um programa,
de modo que as partes relacionadas sejam
coletadas e consideradas um único
módulo.
Tipos de módulos:
•
•
•
•
Auxiliadora Freire
Abstrações de dados;
Módulos de hardware;
Módulos funcionais;
Módulo de apoio ao processo.
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 46/47
Reengenharia de Dados
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:
•
•
•
Auxiliadora Freire
Limpeza de dados;
Extensão de dados;
Migração de dados.
Fonte: Engenharia de Software 6º Edição / ©Ian Sommerville 2000
Engenharia de Software 3º Edição / Roger Pressman
Engenharia de Software 1º Edição / Ariadne Carvalho
Slide 47/47
Download

Manutenção - DEINF/UFMA