Uploaded by Mayla Cristine

manuencaodesoftware-120413204708-phpapp02

advertisement
Entendendo a Manutenção
Qual a origem maior do trabalho de
manutenção?
Quais são as maiores dificuldades na
realização da manutenção?
O que torna um software acessível ou difícil
de manter?
Manutenção de Software
Definições de Manutenção
“Qualquer trabalho no software feito depois
que ele se torna operacional ou passa para
a produção” - Parikh
Correção de Erros;
Revisão dos Requisitos Originais;
Aumento de função e performance.
Manutenção de Software
Definições de Manutenção
Modificação de um software com objetivo de corrigir falhas,
aperfeiçoar ou adaptar o software;
Mecanismo de combate à deterioração do software que
pode tornar o software desestruturado, precário e
resistente à alterações;
Modificação de um programa existente para refletir novas
obrigações ou características adicionais;
Adaptação do software para constante modificação às
necessidades de trabalho;
Ação de fazer com que o software que foi liberado seja
mantido em funcionamento de uma maneira satisfatória.
Manutenção de Software
Sinônimos de Manutenção
Modificação;
Acréscimos;
Refinamentos;
Remoção de defeitos;
Adições no sistema;
Remendos e correções;
Suporte;
Evoluções;
Manutenção de Software
Ajustes;
Extensão;
Expansão;
Revisão;
Atualização;
Re-programação;
Re-desenvolvimento;
Melhorias;
Alterações.
Tipos de Manutenção
(Causa)
Corretiva:
Deficiência;
Adaptativa:
Mudança de Ambiente;
Aperfeiçoadora:
Requisição de manutenção do usuário.
Manutenção de Software
Manutenção Preventiva
Prevenir futuras manutenções (3 tipos)
Melhorar a capacidade de manutenção manutenibilidade
Manutenção de Software
Estudos sobre Manutenção
Lieth e Swanson:
Dinardo:
1980
1988
487 Empresas
25 empresas c/
Mainframe IBM
Corretiva: 20%
Adaptativa: 25%
Aperfeiçoadora: 55%
Manutenção de Software
Corretiva: 17%
Adaptativa: 70%
Aperfeiçoadora: 13%
Fatores que afetam o trabalho
de manutenção
Tamanho do Sistema;
Idade do Sistema;
Experiência e Conhecimento dos
Mantenedores.
Manutenção de Software
Atividades Típicas do
Mantenedor
Estudar especificações e projetos do sistema;
Interagir com os usuários;
Examinar programas e sua documentação;
Descobrir erros e deficiências nos programas
fontes;
Projetar uma alteração em programa;
Modificar um programa;
Revalidar um programa;
Atualizar a documentação do programa.
Manutenção de Software
Funções Básicas na
Alteração de Software
a) Entender o software e a mudança a ser
feita (50%);
b) Modificar o software para incorporar a
mudança (25%);
c) Revalidar o software (25%).
Manutenção de Software
Custos do Software
Desenvolvimento ................ 30 - 40 %
Manutenção ........................ 70 - 60 %
Manutenção de Software
Alternativas para Reduzir a
Manutenção de Software
Não fazer nada. Apenas continuar como está;
Adicionar mais pessoal para o desenvolvimento e
manutenção para reduzir BackLog;
Planejar a manutenção de software focalizando
novas tecnologias para construir sistemas mais
fáceis de se manter e gradativamente substituir os
atuais;
Adotar um plano agressivo para reescrever sistemas
atuais o quanto possível;
Adotar ferramentas automatizadas para melhorar a
manutenção e tecnologia dos sistemas atuais.
Manutenção de Software
Modelo de Manutenção
CONTROLE DAS REQUISIÇÕES
CONTROLE DAS MUDANÇAS
CONTROLE DE VERSÕES
Manutenção de Software
Controle das Requisições
Coletar informações sobre cada requisição;
Definir mecanismos para categorização das
requisições;
Utilizar análise de impacto para avaliar requisições
em termos de custos X benefícios;
Determinar grau de prioridade para cada requisição.
Manutenção de Software
Controle das Mudanças
Selecionar uma atividade de mudança necessária da
lista de prioridades;
Reproduzir o problema;
Analisar a especificação e o código-fonte;
Projetar as mudanças e testes;
Realizar atividades de garantia de qualidade
(revisões e inspeções).
Manutenção de Software
Controle de Versões
Determinação da Versão;
Construção de uma nova versão (gerência de
configuração)
Testes completos;
Distribuição do programa;
Teste de Aceitação.
Manutenção de Software
Indicadores de Manutenção
Tempo utilizado para resolver uma mudança;
Programas mais afetados;
Requisições atendidas e em aberto;
Usuários mais atendidos;
Estimativa de tempo e complexidade da manutenção
(FPA).
Manutenção de Software
Exercício 1
Quais as principais dificuldades na
realização das atividades de manutenção
de software?
Apresente um conjunto de ações para
amenizar estas dificuldades.
Que outros indicadores poderiam ser
utilizados para monitorar a manutenção?
Manutenção de Software
Premissas da Reengenharia
Sistemas existentes são uma vantagem
valiosa da qual a corporação depende e
portanto deveriam ser apropriadamente
gerenciados;
A manutenção de software poderá ser mais
efetiva e eficientemente realizada com ajuda
de ferramentas poderosas;
É uma manutenção automatizada;
Fundamentos da Reengenharia
Premissas da Reengenharia
Envolve a melhoria dos processos de
manutenção de software e melhoria dos
sistemas atuais pela aplicação de novas
tecnologias e ferramentas para a
manutenção de software;
Sugere um estratégia de manutenção a
longo prazo ao invés de simplesmente
procurar por uma imediata mudança na
manutenção de Software;
Oferece uma maneira de organizar o
software e mantê-lo organizado.
Fundamentos da Reengenharia
Conceito
“Reengenharia é o processo de examinar
software existente e/ou modificá-lo com
ajuda de ferramentas automatizadas para:
Melhorar sua futura manutenção;
Atualizar sua tecnologia;
Estender sua expectativa de vida;
Aumentar a produtividade da manutenção.
Fundamentos da Reengenharia
Outros Conceitos
“É o estudo e alteração de um determinado sistema
para reconstruí-lo numa nova forma e subseqüente
implementação dessa nova forma”;
“Modificação em código e estrutura de dados
existentes usando os princípios de engenharia de
software atuais para aumentar a capacidade de
manutenção e capacidade de adaptação do sistema”.
“Combinação de técnicas e ferramentas que facilitam
a análise, melhoria, redesenho e reutilização de
sistemas existentes para suportar as necessidades de
informação”;
Fundamentos da Reengenharia
Outros Conceitos
“Meio para melhorar sistemas existentes sem causar
impactos na sua funcionalidade atual, plataforma ou
arquitetura técnica”;
“Conjunto de técnicas e ferramentas orientadas à
avaliação, reposicionamento e transformação de
sistemas existentes, com o objetivo de estender-lhes a
vida útil e ao mesmo tempo, proporcionar-lhes uma
melhor qualidade técnica e funcionalidade” (Furlan);
Fundamentos da Reengenharia
Objetivos da Reengenharia
Criar um inventário dos sistemas existentes;
Fornecer assistência automatizada para a
manutenção;
Reduzir custos e erros de manutenção;
Tornar o sistema mais fácil de compreender,
modificar e testar.
Fundamentos da Reengenharia
Objetivos da Reengenharia
Facilitar a conversão e migração do sistema;
Reforçar a aderência a padrões;
Melhorar a resposta às solicitações de
manutenção;
Melhorar o ânimo do pessoal de manutenção;
Proteger e estender a vida do sistema;
Utilizar CASE para suportar sistemas atuais;
Reutilizar componentes de sistemas existentes.
Fundamentos da Reengenharia
Razões para Reengenharia
Freqüentes falhas de produção;
Problemas de desempenho;
Tecnologia obsoleta;
Problemas de integração de sistemas;
Qualidade técnica ruim;
Dificuldades para testar e caro para
manter;
Problemas crescentes no sistema.
Fundamentos da Reengenharia
Razões para se refazer o
sistema (Engenharia)
Não confiável;
Algoritmos ruins ou incorretos;
Não atende as necessidades dos
usuários.
Fundamentos da Reengenharia
Sistemas Candidatos à
Reengenharia
São de importância crítica da empresa; São
alvo de manutenção freqüente e requerem
um grande percentual de recursos de
manutenção;
São compreensíveis e podem seguramente
ser modificados por poucos membros da
equipe de software;
Contém erros que ninguém pode encontrar;
Requerem uma melhoria considerável.
Fundamentos da Reengenharia
Exercício 2
Que sistemas poderiam ser alvo de
reengenharia? Justifique.
Quais as principais razões para
Reengenharia ou Engenharia?
Manutenção de Software
Áreas de Atuação da
Reengenharia
Análise;
Reestruturação;
Engenharia Reversa;
Migração;
Reutilização.
Fundamentos da Reengenharia
Análise
É o processo de examinar os
sistemas atuais a fim de
compreender os componentes do
sistema e como seus programas
funcionam.
O propósito principal é identificar
programas prioritários para
Reengenharia e medir sua
qualidade.
Fundamentos da Reengenharia
ReestruturaçãoÉ o
processo de alterar a forma do
software (Ex: definição e nomes
de dados e código do programa)
sem alterar sua funcionalidade.
O propósito principal é tornar o
programa mais fácil de ser
compreendido.
Fundamentos da Reengenharia
Engenharia Reversa
É
o processo de analisar o software para
reconstruir uma descrição de seus
componentes e seus relacionamentos.
Uma descrição de alto nível do
programa é obtida a partir do
programa físico.
O propósito é redocumentar o sistema e
descobrir informações do projeto com
o
auxílio
na
melhoria
da
compreensão
do
programa.
Fundamentos da Reengenharia
Migração
É o processo de converter um software
de uma linguagem para outra, mover
de um ambiente operacional para
outro ou atualizar sua tecnologia.
O propósito principal é amenizar o
impacto de adoção de novos
ambientes e tecnologias.
Fundamentos da Reengenharia
Reutilização
É o processo de sistematicamente
reaproveitar os diversos elementos
criados durante o desenvolvimento de
software (código, projeto,
especificações, documentação).
O propósito principal é acelerar o
desenvolvimento de novos sistemas e
melhorar sua qualidade.
Fundamentos da Reengenharia
Exercício 3
Que experiências de reengenharia você
conhece? Classifique-as.
Quais as principais dificuldades
enfrentadas nestas experiências ?
Download