Manutenção de Software
Prof. Giuliano Prado
giucontato@gmail.com
www.professorgiuliano.vai.la Manutenção de Software
Programa da disciplina
• Definição e características de manutenção de software.
• Manutenabilidade.
• Manutenção corretiva e preventiva.
• Evolução de Software.
• Depuração de software.
• Processos de manutenção de software.
• Desenvolvimento de software visando a manutenção.
• Gerência de configuração de software.
Bibliografia
• PFLEEGER, Shari Lawrence. Engenharia de software: teoria e prática. 2.ed. São Paulo-SP:
Prentice-Hall, 2007. 537p.
• SOMMERVILLE, Ian. Engenharia de software.
8.ed. São Paulo: Pearson, 2007. 552p.
• PRESSMAN, Roger S.. Engenharia de
software. 6.ed. São Paulo: McGraw-Hill do Brasil, 2006. 720p.
Avaliações
• P1 – 100 pts – 24/09
• P2 – 100 pts – 26/11
• Trabalho – 100 pts:
▫ Seminários de apresentação de temas relativos aos conceitos de Manutenção.
▫ Datas a definir no decorrer do semestre.
Conceito de Manutenção de SW Características mais relevantes Controles de versão
Reengenharia Exercícios
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?
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.
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;
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;
• 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 Preventiva
• Prevenir futuras manutenções (3 tipos)
• Melhorar a capacidade de manutenção - manutenibilidade
Tipos de manutenção
• Muito se discute sobre os tipos de manutenção existentes e não e difícil encontrar empresas em que existem tantas derivações que ate confundem os mantenedores, levando-os a executarem uma tarefa meramente pela ordem sem nem mesmo entender o que estão fazendo.
Método PEMAT
• PEMAT - Planejamento Estratégico para Manutenção
• Planejamento Estratégico e um tema comum da área de administração, logo a ideia é adapta-lo ao espaço de gerenciamento da manutenção
• Existem milhares de descrições sobre os tipos de manutenção, onde varias vezes são semelhantes, mas adaptados de acordo com a cultura da
empresa ou ate mesmo imposta pela diretoria
Método PEMAT
Manutenção Preventiva
• Um dos métodos mais conhecidos e mesmo assim ainda causa grande confusão entre as gerencias de manutenção.
• A descrição é bem simples, Manutenção Preventiva é aquele que se baseia no tempo onde o principal objetivo é se antecipar a falha, efetuando a troca de componentes baseando-se no tempo.
Manutenção Preditiva
• Um método que revolucionou a forma de fazer manutenção, mas ainda em crescimento.
• É talvez o método de manutenção mais eficiente entre os diversos outros e que seu custo pode ser considerado insignificante,
Manutenção Preditiva
• Conceito: é aquele em que se consegue detectar uma falha antes que ela acontece através de análises cientificas.
• Estas análises são efetuadas através de softwares específicos, onde pode-se identificar com clareza uma possível falha apontando até mesmo o período em que ira acontecer.
Manutenção Autônoma
• Um dos temas mais recente e muito debatido, Manutenção Autônoma é aquela em que os programadores de um determinado componente ou módulo de software executam as manutenções básicas como refatoração, organização, pequenos reparos ou ajustes
▫ O segredo da manutenção Autônoma está no envolvimento das gerências das diversas áreas
Rotas de Verificação
• Consiste em executar uma série de
procedimentos antes, durante ou depois
da produção, com intuito de detectar se as
condições de funcionamento encontradas
estão iguais as programadas.
Manutenção Corretiva
• Este é o método de manutenção mais antigo do mundo e deve ser divido em alguns tipos específicos para que se entenda a correta natureza das falhas e se consiga elaborar analises de falhas eficientes.
• As derivações de corretivas são:
Manutenção Corretiva Natural
• É aquela em que, devido a estudos, se
comprova que é melhor esperar a falha
acontecer para só depois tomar as ações
necessárias.
Manutenção Corretiva
Emergencial
• Falha que ocorre fora da programação e
que deve ser sanada de imediato.
Manutenção Corretiva
Provenientes
• Estas corretivas acontecem quando da
execução de outros métodos de
manutenção como preventiva, preditiva,
autônoma, etc. se detectar uma falha que
não pode ser sanada de imediato, mas
que pode ser programada para uma
intervenção futura.
Melhoria
• Manutenção executada para efetuar uma
melhoria em uma instalação, como a
mudança de uma linha de produção
visando melhorar a velocidade de
produção.
Porque identificar o tipo de manutenção a ser feita?
• Pode-se gerencia com maior eficiência e
eficácia os serviços executados, entendo
melhor onde estão sendo gastos os
homens hora, e se os planos de
manutenção existentes estão surtindo os
efeitos esperados, alem de se ter um
ambiente mais preciso para as possíveis
análises de falhas que podem vir a
ocorrer.
Estudos sobre Manutenção
• Lieth e Swanson:
▫ 1980
▫ 487 Empresas
• Dinardo:
▫ 1988
▫ 25 empresas c/ Mainframe IBM
Corretiva: 17%
Adaptativa: 70%
Corretiva: 20%
Adaptativa: 25%
Fatores que afetam o trabalho de manutenção
▫ Tamanho do Sistema;
▫ Idade do Sistema;
▫ Experiência e Conhecimento dos Mantenedores.
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;
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%).
Custos do Software
• Desenvolvimento ... 30 - 40 %
• Manutenção ... 70 - 60 %
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.
Modelo de Manutenção
• CONTROLE DAS REQUISIÇÕES
• CONTROLE DAS MUDANÇAS
• CONTROLE DE VERSÕES
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.
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
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.
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).
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?