16
Leonardo Gresta Paulino Murta [email protected]ff.br

Leonardo(Gresta(Paulino(Murta [email protected]ff.br(leomurta/courses/2015.1/es2/aula8.pdf · • Indentação e espaçamento • Evitar o uso de armadilhas clássicas das linguagens

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Leonardo(Gresta(Paulino(Murta leomurta@ic.uff.br(leomurta/courses/2015.1/es2/aula8.pdf · • Indentação e espaçamento • Evitar o uso de armadilhas clássicas das linguagens

Leonardo  Gresta  Paulino  Murta  [email protected]  

Page 2: Leonardo(Gresta(Paulino(Murta leomurta@ic.uff.br(leomurta/courses/2015.1/es2/aula8.pdf · • Indentação e espaçamento • Evitar o uso de armadilhas clássicas das linguagens

Cenário atual

Leonardo Murta Manutenção de Software 2

90% do custo total [Erlikh 2000]

60% do esforço total [Pressman 1997]

250 bilhões de linhas de código em manutenção [Sommerville 2000]

70 bilhões de dólares anuais nos EUA [Edelstein 1993]

Page 3: Leonardo(Gresta(Paulino(Murta leomurta@ic.uff.br(leomurta/courses/2015.1/es2/aula8.pdf · • Indentação e espaçamento • Evitar o uso de armadilhas clássicas das linguagens

Cenário Mundial •  Somente 21% do esforço de manutenção é

despendido em correções de erros (Bennett and Rajlich 2000)

•  Manutenção é necessária mesmo em sistema com qualidade – Adaptação para novas regulamentações legais – Novos requisitos – Torná-lo mais simples de compreender e manter

Leonardo Murta Manutenção de Software 3

Page 4: Leonardo(Gresta(Paulino(Murta leomurta@ic.uff.br(leomurta/courses/2015.1/es2/aula8.pdf · • Indentação e espaçamento • Evitar o uso de armadilhas clássicas das linguagens

Cenário Brasileiro

•  Manutenção no Brasil [MCT 2006] –  2500 empresas

entrevistadas –  95% de

confiabilidade –  Erro máximo de 5,5%

0%

5%

10%

15%

20%

25%

30%

1997 1999 2001 2005

Gestão demudançaGerência deconfiguração

Manutenção de Software 4 Leonardo Murta

Page 5: Leonardo(Gresta(Paulino(Murta leomurta@ic.uff.br(leomurta/courses/2015.1/es2/aula8.pdf · • Indentação e espaçamento • Evitar o uso de armadilhas clássicas das linguagens

O que é a manutenção? O processo de modificar um sistema de

software ou componente, depois da entrega, para corrigir falhas, melhorar desempenho ou outros atributos, ou adaptar a mudanças no ambiente.

IEEE Std 620.12 1990

Leonardo Murta Manutenção de Software 5

Page 6: Leonardo(Gresta(Paulino(Murta leomurta@ic.uff.br(leomurta/courses/2015.1/es2/aula8.pdf · • Indentação e espaçamento • Evitar o uso de armadilhas clássicas das linguagens

Quando inicia a manutenção?

Leonardo Murta Manutenção de Software 6

Desenvolvimento Manutenção Release

Page 7: Leonardo(Gresta(Paulino(Murta leomurta@ic.uff.br(leomurta/courses/2015.1/es2/aula8.pdf · • Indentação e espaçamento • Evitar o uso de armadilhas clássicas das linguagens

Quando inicia a manutenção?

Leonardo Murta Manutenção de Software 7

Desenvolvimento Manutenção Release

Desenv.

Manut.

Release

Desenv. Release

Manut.

Desenv.

Page 8: Leonardo(Gresta(Paulino(Murta leomurta@ic.uff.br(leomurta/courses/2015.1/es2/aula8.pdf · • Indentação e espaçamento • Evitar o uso de armadilhas clássicas das linguagens

Quais são os tipos de manutenção?

Manutenção de Software 8 Leonardo Murta

Manutenção

Correção Evolução

Emergencial Corretiva Adaptativa Perfectiva Preventiva

Page 9: Leonardo(Gresta(Paulino(Murta leomurta@ic.uff.br(leomurta/courses/2015.1/es2/aula8.pdf · • Indentação e espaçamento • Evitar o uso de armadilhas clássicas das linguagens

Quais são os tipos de manutenção?

•  Manutenção corretiva – Reativa – Corrige problemas reportados – Faz o software voltar a atender aos requisitos

•  Manutenção emergencial – Não programada – Mantém temporariamente o sistema funcionando – Necessita uma manutenção corretiva posterior

Leonardo Murta Manutenção de Software 9

Page 10: Leonardo(Gresta(Paulino(Murta leomurta@ic.uff.br(leomurta/courses/2015.1/es2/aula8.pdf · • Indentação e espaçamento • Evitar o uso de armadilhas clássicas das linguagens

Quais são os tipos de manutenção?

•  Manutenção preventiva – Pró-ativa – Corrige problemas latentes

•  Manutenção adaptativa – Mantém o software usável após mudanças no

ambiente •  Manutenção perfectiva

– Provê melhorias para o usuário – Melhora atributos de qualidade do software

Leonardo Murta Manutenção de Software 10

Page 11: Leonardo(Gresta(Paulino(Murta leomurta@ic.uff.br(leomurta/courses/2015.1/es2/aula8.pdf · • Indentação e espaçamento • Evitar o uso de armadilhas clássicas das linguagens

Processo de manutenção

Manutenção de Software 11 Leonardo Murta

Solicitação de Modificação

Análise

Implementação

Revisão

Planejamento

Migração

Descontinuidade

Page 12: Leonardo(Gresta(Paulino(Murta leomurta@ic.uff.br(leomurta/courses/2015.1/es2/aula8.pdf · • Indentação e espaçamento • Evitar o uso de armadilhas clássicas das linguagens

Contratos de manutenção •  Tipo 1

–  Um único contrato para desenvolvimento e manutenção –  Valor fixo, disponível para todos os tipos de manutenção

•  Tipo 2 –  Contrato separado para manutenção –  Período de manutenções corretivas predefinido –  Cada manutenção preventiva, adaptativa ou perfectiva

contratada separadamente

Leonardo Murta Manutenção de Software 12

Page 13: Leonardo(Gresta(Paulino(Murta leomurta@ic.uff.br(leomurta/courses/2015.1/es2/aula8.pdf · • Indentação e espaçamento • Evitar o uso de armadilhas clássicas das linguagens

Boas práticas para manutenção (de código)

•  Legibilidade •  Estruturação •  Redução da complexidade •  Comentários precisos •  Indentação e espaçamento •  Evitar o uso de armadilhas clássicas das linguagens

–  Ex.: Goto, herança múltipla, etc. •  Usar técnicas que ajudam a rastrear erros

–  Ex.: Controle de exceções

Leonardo Murta Manutenção de Software 13

Page 14: Leonardo(Gresta(Paulino(Murta leomurta@ic.uff.br(leomurta/courses/2015.1/es2/aula8.pdf · • Indentação e espaçamento • Evitar o uso de armadilhas clássicas das linguagens

Boas práticas para manutenção (de código)

•  Rastreabilidade – Código para requisitos, análise e projeto – Código para solicitações de modificação

•  Padronização •  Inspeções •  Testes •  Atualização da documentação

– Ex.: Modelos

Leonardo Murta Manutenção de Software 14

Page 15: Leonardo(Gresta(Paulino(Murta leomurta@ic.uff.br(leomurta/courses/2015.1/es2/aula8.pdf · • Indentação e espaçamento • Evitar o uso de armadilhas clássicas das linguagens

Principais  Referências  Bibliográficas  •  Benne?,  K.  H.  and  V.  T.  Rajlich  (2000).  SoLware  maintenance  and  evoluOon:  a  

roadmap.  InternaOonal  Conference  on  SoLware  Engineering,  The  Future  of  SoLware  Engineering,  Limerick,  Ireland,  ACM  Press.  

•  Edelstein,  D.  (1993).  "Report  on  the  IEEE  1219-­‐1993-­‐  Standard  for  SoLware  Maintenance."  ACM  SIGSOFT  SoLware  Engineering  Notes  18(4):  94-­‐95.  

•  Erlikh,  L.  (2000).  "Leveraging  Legacy  System  Dollars  for  E-­‐Business."  ITProfessional  2(3):  17-­‐23.  

•  IEEE  Std  14764-­‐2006,  “SoLware  Engineering  –  SoLware  Life  Cycle  Processes  –  Maintenance”.  

•  MCT  (2006).  Qualidade  e  ProduOvidade  no  Setor  de  SoLware  Brasileiro.  Brasília,  DF,  Ministério  de  Ciência  e  Tecnologia,  Secretaria  de  PolíOca  de  InformáOca.  

•  Pressman,  R.  S.  (1997).  SoLware  Engineering:  A  PracOOoner's  Approach,  McGraw-­‐Hill.  

•  Sommerville,  I.  (2000).  SoLware  Engineering,  Addison-­‐Wesley.  

Leonardo Murta Manutenção de Software 15

Page 16: Leonardo(Gresta(Paulino(Murta leomurta@ic.uff.br(leomurta/courses/2015.1/es2/aula8.pdf · • Indentação e espaçamento • Evitar o uso de armadilhas clássicas das linguagens

Leonardo  Gresta  Paulino  Murta  [email protected]