35
Manutenção de Software Wagner Zaparoli [email protected]

Manutenção de Software

Embed Size (px)

Citation preview

Manutenção de

Software

Wagner [email protected]

Manutenção de Software 2

Agenda

Manutenção de Software 3

Parte 1 – Manutenção de Software

Manutenção de Software 4

Cenário

Manutenção de Software 5

Passado – Presente Os sistemas legados respondem pela maior parte do processamento de dados mundial.

Entre 60% e 70% dos sistemas estão em COBOL, estima-se em 200 milhões de linhas1.

1 SEACORD et al, 2003 e ULRICH, 2002

A participação do custo de manutenção no custo total de um

sistema tem crescido de 40%, nos anos 70, até 90%, atualmente2.

Destes custos, cerca de 20% são consumidos com correções e

80% com melhorias diversas.

2 PIGOSKI, 1996

Manutenção de Software 6

Futuro

Tempo

Lin

has

-Có

dig

o

Manutenções Inevitáveis

Manutenção de Software 7

Motivações

• Surgem novos requisitos.

• O ambiente do negócio muda.

• Erros devem ser reparados.

• Nova infra-estrutura deve ser incorporada.

• O desempenho do software pode ser melhorado.

Manutenção de Software 8

Fundamentos

Manutenção de Software 9

Conceito*

* IEEE, 1998

Manutenção de Software 10

Classificação*

* Pressman, 2002

Corretiva Adaptativa

Perfectiva Preventiva

Manutenção de Software 11

Corretiva

Visa corrigir defeitos de funcionalidade, incluindo os acertos emergenciais

Manutenção de Software 12

Adaptativa

Visa adequar o software ao seu ambiente externo (SO, infra-estrutura, periféricos, integrações)

Manutenção de Software 13

Perfectiva

Objetiva acrescentar novos recursos de funcionalidades ao software, normalmente

solicitados pelo usuário

Manutenção de Software 14

Preventiva

Visa modificar o software para melhorar a confiabilidade ou a manutenibilidade futura, ou para oferecer uma base melhor para futuras

ampliações

Manutenção de Software 15

Quando Executar?

Pós-desenvolvimento

Desenvolvimento

Pré-desenvolvimento

Estudo Preliminar

ProjetoAnáliseConcepção

Construção Teste/Docum. Homologação Implantação

Planejamento

Manutenção

GESTÃO

Manutenção de Software 16

Como Executar?

Receber, validar e categorizar pedido

Executar a manutenção

Controlador de Manutenção

Supervisor de Sistemas

Pessoal deManutenção

Manutenção de Software 17

Receber, Validar e Categorizar

Gravidade

Ação

Tipo?

Tipo?

Avaliar, categorizar e colocar na fila

Avaliar e categorizar

Informar solicitante

Priorizar e colocar na fila

Apagar incêndio no alto da fila

Avaliar, categorizar e colocar na fila

Pedido Manutenção

Outro Erro

AcréscimoAdaptação Muita Não muita

FazerCancelar

Manutenção de Software 18

Executar Manutenção

Faltam tarefas?

Selecionar próxima tarefa

da fila

Planejar, organizar e aplicar engenharia de

software

Sim

Registrar e encerrar atividade

Não

Manutenção de Software 19

Pontos de Atenção

Manutenção de Software 20

Problemas

Gerência Infra-estrutura

Humanos Software

Manutenção de Software 21

Fatores de Gerência

• Visão diferenciada entre equipe de desenvolvimento e equipe de manutenção.

• Dificuldades de comunicação entre equipe de manutenção e organização.

• Treinamento inadequado da equipe.

• Sobrecarga de tarefas.

• Estimativas equivocadas.

• Dificuldade em medir e avaliar desempenho da equipe de manutenção.

• Contratação de temporários para auxiliar execução da manutenção.

Manutenção de Software 22

Fatores de Infra-estrutura

• Estagnação do ambiente de trabalho.

• Falta de tecnologia operacional adequada.

• Falta de tecnologia gerencial adequada.

Manutenção de Software 23

Fatores Humanos

• Elevada rotatividade de profissionais.

• Falta de uma esquipe de manutenção.

• Preferência da equipe por trabalho de desenvolvimento.

• Falhas de comunicação com usuários.

• Mudanças frequentes de prioridades por parte do usuário.

• Métodos inadequados de teste.

Manutenção de Software 24

Fatores de Software

• Baixa qualidade da documentação do software original.

• Má qualidade do fonte-original.

• Necessidade de integração com softwares incompatíveis.

Alternativas de Mitigação

Manutenção de Software 25

• Processos

Implantar a filosofia de projeto para manutenção.

Enfatizar que todo código esteja cuidadosamente documentado.

Planejar cronogramas que incluam documentação e testes.

Promover os sucessos e evitar fracassos anteriores com lições aprendidas.

Instituir e reforçar práticas de qualidade.

Melhorar a relação entre equipe técnica e clientes.

Melhorar seleção de fornecedores e monitorar processos, planos de estratégias, e tomadas de decisões.

Alternativas de Mitigação

Manutenção de Software 26

• Pessoas

Associar pessoas a papéis adequados.

Melhorar o prestígio das tarefas de manutenção.

Tornar mais efetivo o treinamento, especialmente em relação ao uso de ferramentas, documentação e padrões.

Melhorar o projeto de comunicação e incentivar às pessoas a utilizarem-no.

Alternativas de Mitigação

Manutenção de Software 27

• Tecnologia

Investir em ferramentas mais efetivas, que abarcam engenharia reversa, reengenharia, testes, gerência de configuração e documentação.

Melhorar a qualidade das ferramentas desenvolvidas internamente.

Melhorar as atividades e ferramentas que centralizem comunicação entre projetos.

Encorajar equipe técnica a comunicar suas necessidades de ferramentas.

Manutenção de Software 28

Manutenibilidade

Manutenção de Software 29

Conceito*

* Pressman, 2002

É a meta principal que orienta os passos de um processo de engenharia de um software

Manutenção de Software 30

Fatores Controladores

* Pressman, 2002

Ambiente de Desenvolvimento

Medidas Quantitativas

Revisões

Manutenção de Software 31

Ambiente de Desenvolvimento

Disponibilidade de um pessoal de software qualificado.

Estrutura de sistema compreensível.

Facilidade de manuseio do sistema.

Uso de linguagem de programação padronizada.

Estrutura de documentação padronizada.

Disponibilidade de casos de teste.

Facilidades de depuração embutidas.

Disponibilidade de um ambiente (sw/hw) adequado para realizar a manutenção.

Planejamento para a manutenibilidade.

Manutenção de Software 32

Medidas Quantitativas

Tempo de reconhecimento do problema.

Tempo de retardo administrativo.

Tempo de coleta de ferramenta de manutenção.

Tempo de análise do problema.

Tempo de especificação das mudanças.

Tempo de correção ativa.

Tempo de testes locais.

Tempo de testes globais.

Tempo de revisão de manutenção.

Tempo de recuperação total.

Manutenção de Software 33

Revisões

Revisão dos requisitos Anotar possíveis acréscimos.

Discutir as questões de portabilidade.

Considerar interfaces que impactam.

Revisão da arquitetura Projeto de dados, projeto arquitetural, projeto procedimental e interfaces são avaliadas quanto à facilidade de modificação.

Revisão do Código Estilo.

Documentação.

Testes Conhecer partes do software que necessitam de manutenção antes do deploy.

Sugestões Bibliográficas

• Seacord, Robert C., Plakosh, Daniel, Lewis, Grace A., Modernizing Legacy Systems: Software Technologies, Engineering Processes, and Business Practices, Addison-Wesley, 2003.

• Pigoski, T. M., Practical Software Maintenance: Best Practices for Managing Your

Software Investiment, John Wiley & Sons, Inc., 1996.

• ISO/IEC 14764, Information technology - Software Maintenance,1999.

• Pressman, R. S., Engenharia de Software. 5. ed. São Paulo: Makron Books, 2002.

• Ulrich, William M., Legacy Systems: Transformation Strategies, 2002 Prentice-Hall

PTR, 2002.

• Lientz, B. P., Swanson, E. B., Software Maintenance Management, Reading, MA,

Addison-Wesley, 1980.

• IEEE Computer Society. Swebok – Guide to the Software Engineering Body of

Knowledge, 2004.

Manutenção de Software 34

Manutenção de

Software

Wagner [email protected]