27
Troy Costa Kohwalter [email protected]

Troy Costa Kohwalter [email protected]

  • Upload
    others

  • View
    23

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Troy Costa Kohwalter troy@ic.uff

Troy Costa Kohwalter

[email protected]

Page 2: Troy Costa Kohwalter troy@ic.uff

Cenário atual

Troy Kohwalter Manutenção de Software 2

90% do custo total [Erlikh 2000]

60% do esforço total [Pressman 1997]

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

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

Page 3: Troy Costa Kohwalter troy@ic.uff

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

manutenção é gasto 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

Troy Kohwalter Manutenção de Software 3

Page 4: Troy Costa Kohwalter troy@ic.uff

Leis de Lehman

• Mudança contínua: – software deve ser continuamente adaptado, senão torna-se

menos satisfatório

• Complexidade crescente: – se não forem tomadas medidas para reduzir complexidade, ela

irá aumentar progressivamente

• Crescimento contínuo: – software deve ter funcionalidades ampliadas para manter a

satisfação dos seus usuários

• Declínio da qualidade: – software se deprecia se eles não receberem as mudanças

necessárias

Troy Kohwalter Manutenção de Software 4

Page 5: Troy Costa Kohwalter troy@ic.uff

O que é a manutenção?

Troy Kohwalter Manutenção de Software 5

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

Page 6: Troy Costa Kohwalter troy@ic.uff

Refatoração vs otimização• Refatoração:

– Mudança realizada nas estruturas internas do programa

– Facilitar seu entendimento e baratear suas alterações

– Não modifica seu comportamento

• Otimização:

– Não altera comportamento

– Altera estruturas internas• Melhorar desempenho

– Porém...

• Torna o código mais difícil de manter

Troy Kohwalter Manutenção de Software 6

https://www.desenvolvimentoagil.com.br/xp/praticas/refatoracao

Page 7: Troy Costa Kohwalter troy@ic.uff

Quando inicia a manutenção?

Troy Kohwalter Manutenção de Software 7

Desenvolvimento ManutençãoRelease

Page 8: Troy Costa Kohwalter troy@ic.uff

Quando inicia a manutenção?

Troy Kohwalter Manutenção de Software 8

Desenvolvimento ManutençãoRelease

Desenv.

Manut.

Release

Desenv. Release

Manut.

Desenv.

Page 9: Troy Costa Kohwalter troy@ic.uff

Quais são os tipos de

manutenção?

Manutenção de Software 9Troy Kohwalter

Manutenção

Correção Evolução

Emergencial Corretiva Adaptativa PerfectivaPreventiva

Page 10: Troy Costa Kohwalter troy@ic.uff

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

• Manutenção emergencial

– Não programada

– Mantém temporariamente o sistema funcionando

– Necessita uma manutenção corretiva posterior

• Manutenção corretiva

– Reativa

– Corrige problemas reportados

– Faz o software voltar a atender aos requisitos

Troy Kohwalter Manutenção de Software 10

Page 11: Troy Costa Kohwalter troy@ic.uff

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

– Geralmente cliente solicita modificações devido aalterações (e.x.: domínio, plataformas)

• Manutenção perfectiva– Provê melhorias para o usuário

– Melhora atributos de qualidade do software

Troy Kohwalter Manutenção de Software 11

Page 12: Troy Costa Kohwalter troy@ic.uff

Processo de manutenção

Manutenção de Software 12Troy Kohwalter

Solicitação de

Modificação

Análise

Implementação

Revisão

Planejamento

Migração

(reengenharia)

Descontinuidade

Page 13: Troy Costa Kohwalter troy@ic.uff

REENGENHARIA

Troy Kohwalter Manutenção de Software 13

Page 14: Troy Costa Kohwalter troy@ic.uff

Reengenharia• Reconstruir o sistema

• Objetivo de melhorar

– Desempenho

– Manutenabilidade

– Segurança

– Estruturas e entendimento

– Documentação

– Etc.

• Sistemas legados

Troy Kohwalter Manutenção de Software 14

https://www.ordorite.com/outdated-technology-damaging-your-furniture-business/

Page 15: Troy Costa Kohwalter troy@ic.uff

Software Legado

• Valioso ($)

• Linguagem de programação antiga – E.x.: COBOL, PHP

• Tecnologia obsoleta

• Mudou muito– Mostra sinais de adaptações

• Não pode ser descartado nem atualizado – Custoso

Troy Kohwalter Manutenção de Software 15

Page 16: Troy Costa Kohwalter troy@ic.uff

Benefícios da Reengenharia

• Reduzir a complexidade de sistemas legados... • Exemplos:

– Portar para nova plataforma

– Melhorar performance

– Extrair modelos

– Explorar novas tecnologias

– Reduzir dependência humana

Troy Kohwalter Manutenção de Software 16

Page 17: Troy Costa Kohwalter troy@ic.uff

Benefícios da Reengenharia

• Reduzir riscos:

– Risco de desenvolver o sistema novamente é alto

– Podem ocorrer erros de especificação ou problemas no desenvolvimento

Troy Kohwalter Manutenção de Software 17

Page 18: Troy Costa Kohwalter troy@ic.uff

Benefícios da Reengenharia

• Reduzir custos:

– Custo de reengenharia pode ser muito menor que o custo de desenvolvimento

– Ferramentas podem automatizar uma parte

Troy Kohwalter Manutenção de Software 18

Page 19: Troy Costa Kohwalter troy@ic.uff

Custo-benefício da Reengenharia

• Determinado quantitativamente...

• Manter estado atual: – Custo de suporte + manutenção ($$$)

• Aplicar reengenharia: – Custo da reengenharia + suporte + manutenção ($)

• Compensa quando? – Quando o sistema tem vida longa e pouca manutenibilidade

Troy Kohwalter Manutenção de Software 19

Page 20: Troy Costa Kohwalter troy@ic.uff

Quando aplicar Reengenharia?

• Documentação obsoleta – Ou não existe...

• Desenvolvedores deixaram empresa – Ninguém mais sabe como foi feito

• Conhecimento limitado do sistema

• Muito tempo gasto para realizar pequenas mudanças

• Correção de defeitos frequente

• Problemas de manutenção– Constantes...

Troy Kohwalter Manutenção de Software 20

Page 21: Troy Costa Kohwalter troy@ic.uff

Engenharia x Reengenharia

Troy Kohwalter Manutenção de Software 21

Especificação do sistema

Sistema de software existente

Projeto e Implementação

Compreensão e transformação

Novo sistema

Sistema de reengenharia

Page 22: Troy Costa Kohwalter troy@ic.uff

Processo de Reengenharia

1. Análise de Inventário– Toda organização tem um inventário de aplicações

– Priorizar sistemas candidatos

– Alocar recursos

2. Reestruturação de Documentação– Documentação fraca e escassa é a marca de sistemas

legados

– Opções: • Não fazer nada

• Documentar apenas mudanças

• Documentar o mínimo necessário

Troy Kohwalter Manutenção de Software 22

Page 23: Troy Costa Kohwalter troy@ic.uff

Processo de Reengenharia

3. Engenharia Reversa

– Processo de extrair informação a partir do código existente

– Informação extraída pode ser provida para o Engenheiro de software e/ou ferramentas

– Entender:

• Dados interno x global

• Processamento: abstrações procedurais (com ferramentas)

• Interface com o usuário: estrutura e comportamento da UI

Troy Kohwalter Manutenção de Software 23

Page 24: Troy Costa Kohwalter troy@ic.uff

Processo de Reengenharia

4. Reestruturação de Código e Dados– Modifica código ou dados – Não altera arquitetura – Código: mesma funcionalidades, mais qualidade – Dados: projeto de dados mais efetivo

5. Engenharia Avante– Recupera o projeto de software – Melhora a qualidade do sistema – Adiciona novas funcionalidades – Modifica arquitetura – Resultado: nova configuração do sistema

Troy Kohwalter Manutenção de Software 24

Page 25: Troy Costa Kohwalter troy@ic.uff

Principais Referências Bibliográficas

• Bennett, K. H. and V. T. Rajlich (2000). Software maintenance and evolution: a roadmap. International Conference on Software Engineering, The Future of Software Engineering, Limerick, Ireland, ACM Press.

• Edelstein, D. (1993). "Report on the IEEE 1219-1993- Standard for Software Maintenance." ACM SIGSOFT Software 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, “Software Engineering – Software Life Cycle Processes –Maintenance”.

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

• Pressman, R. S. (1997). Software Engineering: A Practitioner's Approach, McGraw-Hill.

• Sommerville, I. (2000). Software Engineering, Addison-Wesley.

Troy Kohwalter Manutenção de Software 25

Page 26: Troy Costa Kohwalter troy@ic.uff

Agradecimentos

• Baseado em material gentilmente cedido por Prof. Leonardo Murta (UFF)

Troy Kohwalter Manutenção de Software 26

Page 27: Troy Costa Kohwalter troy@ic.uff

Troy Costa Kohwalter

[email protected]