Troy Costa Kohwalter troy@ic.uff

Preview:

Citation preview

Troy Costa Kohwalter

troy@ic.uff.br

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]

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

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

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

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

Quando inicia a manutenção?

Troy Kohwalter Manutenção de Software 7

Desenvolvimento ManutençãoRelease

Quando inicia a manutenção?

Troy Kohwalter Manutenção de Software 8

Desenvolvimento ManutençãoRelease

Desenv.

Manut.

Release

Desenv. Release

Manut.

Desenv.

Quais são os tipos de

manutenção?

Manutenção de Software 9Troy Kohwalter

Manutenção

Correção Evolução

Emergencial Corretiva Adaptativa PerfectivaPreventiva

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

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

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

REENGENHARIA

Troy Kohwalter Manutenção de Software 13

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/

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

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

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

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

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

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

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

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

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

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

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

Agradecimentos

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

Troy Kohwalter Manutenção de Software 26

Troy Costa Kohwalter

troy@ic.uff.br