52
Manutenção Manutenção de Software de Software SCE 186 - Engenharia de Software Profs. José Carlos Maldonado e Elisa Yumi Nakagawa 2 o semestre de 2002

(Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

Embed Size (px)

Citation preview

Page 1: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

ManutençãoManutençãode Softwarede Software

SCE 186 - Engenharia de Software

Profs. José Carlos Maldonado e Elisa Yumi Nakagawa

2o semestre de 2002

Page 2: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

2

Ciclo de Vida de SoftwareCiclo de Vida de Software

Page 3: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

3

Manutenção de SoftwareManutenção de Software

n AlteraçõesAlterações efetuadas no software

depois de sua liberação.

n As alterações ocorrem por diversas

razões.

n As razões para as alterações

determinam a categoria de

manutenção.

Page 4: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

4

Categorias de ManutençãoCategorias de Manutenção

1) Identificar e Corrigir Erros

Manutenção CorretivaManutenção Corretiva

Page 5: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

5

Categorias de ManutençãoCategorias de Manutenção

2) Adaptar o Software ao Ambiente

Manutenção AdaptativaManutenção Adaptativa

Page 6: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

6

Categorias de ManutençãoCategorias de Manutenção

3) Atender Pedidos do Usuário para Modificar Funções Existentes, Incluir Novas Funções e Efetuar Melhoramentos Gerais

Manutenção PerfectivaManutenção Perfectiva

Page 7: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

7

Categorias de ManutençãoCategorias de Manutenção

4) Melhorar a manutenibilidade ou

confiabilidade futuras e fornecer

uma base melhor para futuros

melhoramentos

Manutenção PreventivaManutenção Preventiva

Page 8: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

8

A Fase de Manutenção deA Fase de Manutenção deSoftwareSoftware

n Fase mais problemática do Ciclo de Vida de Software

n Pode despender mais de 70% de todo esforço de uma Organização

n Esses sistemas devem continuar rodando e as alterações são inevitáveis

Page 9: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

9

A Fase de Manutenção deA Fase de Manutenção deSoftwareSoftware

n Por que é exigida tanta Manutenção e por que é despendido tanto Esforço nessa atividade?

u Idade Média de 10 a 15 anos

u Quando foram implementados , o tamanho

do programa e espaço de armazenamento eram o principal interesse

u Migração para novas plataformas

u Sistemas mal estruturados

Page 10: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

10

A Fase de Manutenção deA Fase de Manutenção deSoftwareSoftware

n Por que é exigida tanta Manutenção e por que é despendido tanto Esforço nessa atividade? (cont)

u Melhoramentos para atender novas necessidades

u Nenhuma preocupação com a arquitetura global

u Codificação, lógica e documentação ruins

Page 11: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

11

Manutenção Estruturada xManutenção Estruturada xNão-EstruturadaNão-Estruturada

Page 12: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

12

Custo de ManutençãoCusto de Manutenção

n Custo da manutenção como uma porcentagem do orçamento do software

Lientz e Swanson ( 1980)

Arfa et alii (1988-1989)

Manutenção 48,8 % 44,63%Desenvolvimento 43,3 % 46,59 %Outros 7,9 % 8,78 %

Page 13: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

13

Custo de ManutençãoCusto de Manutenção

n Outros Custos não Monetários

u Adiamento de oportunidades de desenvolvimento

u Redução da qualidade global do software

u Insatisfação do cliente

u Insatisfação do pessoal de manutenção

Page 14: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

14

Custo de ManutençãoCusto de Manutenção

n Custo Final da Manutenção u Diminuição dramática na

produtividade

n (Boehm ) u Custo do desenvolvimento $250.00

por linha de código

u Custo da manutenção $1000.00 por linha de código

Page 15: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

15

Custo de ManutençãoCusto de Manutenção

n O Custo de manutenção pode ser dividido em:

u tentar entender o que o software faz

u interpretar as estruturas de dados, as características de interface e limites de desempenho

u analisar, avaliar, projetar, codificar e testar as modificações

(Atividades Produtivas)

Page 16: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

16

Custo de ManutençãoCusto de Manutenção

MODELO DE ESFORÇO DE MANUTENÇÃO [Belady72]MODELO DE ESFORÇO DE MANUTENÇÃO [Belady72]

no qual,F M = Esforço total

F p = Esforço produtivo

F k = Constante empírica

F c = Medida de complexidade atribuída à falta de bom projeto e documentação

F d = Medida do grau de familiaridade com o software

M � p ke

c � d

Crescimento exponencial….

Page 17: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

17

Problemas da ManutençãoProblemas da Manutenção

n A maioria dos problemas com a manutenção do software é causada por deficiências na maneira como o software foi planejado e desenvolvido

Page 18: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

18

Problemas da ManutençãoProblemas da Manutenção

PROBLEMAS CLÁSSICOSPROBLEMAS CLÁSSICOS

n É difícil ou impossível traçar a evolução do software através das várias versões. As alterações não são adequadamente documentadas

n É difícil ou impossível rastrear o processo através do qual o software foi criado.

Page 19: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

19

Problemas da ManutençãoProblemas da Manutenção

PROBLEMAS CLÁSSICOS (cont.)PROBLEMAS CLÁSSICOS (cont.)n É muito difícil entender programas

"de outras pessoas". A dificuldade aumenta conforme o número de elementos na configuração de software diminui.

n "As outras pessoas" freqüente-mente não estão presentes para explicar.

Page 20: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

20

Problemas da ManutençãoProblemas da Manutenção

PROBLEMAS CLÁSSICOS (cont.)PROBLEMAS CLÁSSICOS (cont.)n A documentação não existe, é

incompreensível ou está desatualizada.

n A maioria dos softwares não foram projetados para apoiar alterações.

n A manutenção não é vista como um trabalho “glamoroso”.

Page 21: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

21

ManutenibilidadeManutenibilidade

n A Manutenibilidade pode ser

definida qualitativamente como a

facilidade com que o software pode

ser entendido, corrigido, adaptado e

ou melhorado

Page 22: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

22

ManutenibilidadeManutenibilidade

n A manutenibilidade é afetada por muitos fatores:u cuidado inadequado com o projeto,

codificação e teste

u configuração de software ruim

u disponibilidade de pessoal qualificado de software

Page 23: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

23

ManutenibilidadeManutenibilidade

n A manutenibilidade é afetada por muitos fatores: (cont)u facilidade de manusear o sistema

u uso de linguagens de programação padronizadas

u uso de sistemas operacionais padronizados

u estruturas padronizadas de documentação

Page 24: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

24

ManutenibilidadeManutenibilidade

n A manutenibilidade é afetada por muitos fatores: (cont)u disponibilidade de um computador

próprio para a manutenção

u disponibilidade da pessoa ou grupo que desenvolveu o software

u o planejamento para manutenibilidadeo planejamento para manutenibilidade

(fator mais importante que afeta a manutenibilidade)

Page 25: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

25

Medidas Quantitativas de Medidas Quantitativas de

ManutenibilidadeManutenibilidade n Difícil de quantificar

n Pode-se determinar a manutenibilidade indiretamente considerando-se atributos das atividades de manutenção que podem ser medidos

Page 26: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

26

Medidas Quantitativas de Medidas Quantitativas de

ManutenibilidadeManutenibilidade Métricas de Manutenibilidade (Gilb)

u tempo de reconhecimento do problema

u tempo de demora administrativa

u tempo de coleta de ferramentas de manutenção

u tempo de análise do problema

u tempo de especificação da alteração

u tempo de correção ou modificação

u tempo de teste local e global

u tempo de revisão da manutenção

Page 27: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

27

Medidas Quantitativas de Medidas Quantitativas de

ManutenibilidadeManutenibilidade n A manutenibilidade pode ser

medida indiretamente considerando

medidas da estrutura do projeto e

medidas da complexidade do

software

Page 28: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

28

Revisões de Revisões de

Manutenibilidade Manutenibilidade

n A manutenibilidade deve ser considerada em cada nível do

processo de revisão da engenharia de software.

Page 29: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

29

Revisões de Revisões de

Manutenibilidade Manutenibilidade

ETAPA DE REVISÃO DE REQUISITOSETAPA DE REVISÃO DE REQUISITOS

observar:

n áreas de melhoramentos futuros

n aspectos de portabilidade do software

n interfaces que poderiam impactar a manutenção

Page 30: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

30

Revisões de Revisões de

Manutenibilidade Manutenibilidade

ETAPA DE REVISÃO DE PROJETOETAPA DE REVISÃO DE PROJETO

avaliar:

u projeto arquitetural

u projeto procedimental

u projeto de interfaces e

u projeto de dados

quanto à facilidade de manutenção e à qualidade global.

Page 31: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

31

Revisões de Revisões de

Manutenibilidade Manutenibilidade

ETAPA DE REVISÃO DE CÓDIGOETAPA DE REVISÃO DE CÓDIGO

dar ênfase:

u ao estilo

u à documentação interna

Page 32: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

32

Revisões de Revisões de

Manutenibilidade Manutenibilidade

ETAPA DE REVISÃO DE TESTEETAPA DE REVISÃO DE TESTE

n Cada passo do teste pode fornecer indícios sobre partes do software que poderiam exigir manutenção preventiva

Page 33: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

33

Fatores de Qualidade de Fatores de Qualidade de Software Software

(Norma ISO 9126)

n Os fatores de qualidade de software focalizam três aspectos importantes do software produto

Page 34: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

34

Tarefas de ManutençãoTarefas de Manutenção

1) Estabelecer uma organização para a

manutenção (“de fato" ou formal)

Page 35: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

35

Tarefas de ManutençãoTarefas de Manutenção

2) Descrever procedimentos de avaliação e de comunicação

3) Definir seqüências padronizadas de eventos (para os pedidos de manutenção)

Page 36: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

36

Seqüência de Eventos

Page 37: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

37

Tarefas de ManutençãoTarefas de Manutenção

4) Estabelecer procedimentos para registrar a história das atividades de manutenção

Page 38: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

38

Exemplo de Dados que podem ser Exemplo de Dados que podem ser

ArmazenadosArmazenados (Swanson) (Swanson)

• identificação do programa• número de comandos fonte• linguagem de programação usada • data da instalação do programa• número de execuções do programa desde a instalação• número de falhas de processamento associadas ao item

anterior• nível e identificação da alteração no programa• número de comandos fonte adicionados por alteração no

programa• número de pessoas-horas despendidos na manutenção• identificação do pedido de manutenção• tipo de manutenção• datas de início e fim da manutenção

Page 39: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

39

Tarefas de ManutençãoTarefas de Manutenção

5) Definir critérios de revisão e avaliação

Page 40: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

40

MEDIDAS de DESEMPENHO e MANUTENÇÃOMEDIDAS de DESEMPENHO e MANUTENÇÃO (Swanson)

n número médio de falhas de processamento por execução do programa

n pessoas-horas despendido em cada categoria de manutenção

n número médio de pessoas-horas despendido por comando fonte adicionado ou retirado devido a manutenção

n tempo médio de processamento para um pedido de manutenção

n porcentagem de pedidos de manutenção por tipo

Page 41: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

41

Tarefas de ManutençãoTarefas de Manutenção

5) Definir critérios de revisão e avaliação

Arcabouço Quantitativo

Técnicas de Desenvolvimento,

Linguagens,

Esforço de Manutenção,

Alocação de Recursos40

MEDIDAS de DESEMPENHO e MANUTENÇÃOMEDIDAS de DESEMPENHO e MANUTENÇÃO(Swanson)� número médio de falhas de processamento por

execução do programa�pessoas-horas despendido em cada categoriade manutenção�número médio de pessoas-horas despendidopor comando fonte adicionado ou deletado

devido a manutenção�tempo médio de processamento para umpedido de manutenção�porcentagem de pedidos de manutenção por

tipo

Page 42: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

42

Manutenção de Código Manutenção de Código AlienígenaAlienígena

n Os programas “alienígenas” são assim chamados porque:

u Programas com fluxo de controle equivalente a uma tigela de espaguete

u Módulos muito grandes

u Poucos linhas de comentários significativos

Page 43: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

43

Manutenção de Código Manutenção de Código AlienígenaAlienígena

n Os programas “alienígenas” são assim chamados porque: (cont.)

u Não existe nenhum outro elemento da configuração de software, além do código

u Nenhum membro do pessoal atual de manutenção trabalhou no desenvolvimento do programa

Page 44: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

44

Manutenção de Código Manutenção de Código AlienígenaAlienígena

n Os programas “alienígenas” são assim chamados porque: (cont.)

u Nenhuma metodologia de desenvolvimento foi aplicada:F Projeto de dados e projeto arquitetural

ruinsF Documentação e registro histórico das

alterações incompletos

Page 45: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

45

Manutenção de Código Manutenção de Código AlienígenaAlienígena

O QUE PODE SER FEITO COM CÓDIGO O QUE PODE SER FEITO COM CÓDIGO

"ALIENÍGENA" ?"ALIENÍGENA" ?

Engenharia Reversa e Engenharia Reversa e

ReengenhariaReengenharia

Page 46: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

46

Engenharia ReversaEngenharia Reversa

ENGENHARIA REVERSAENGENHARIA REVERSA

n processo de análise de um software, partindo-se inicialmente da implementação para um nível mais alto de abstração

Page 47: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

47

ReengenhariaReengenharia

REENGENHARIA REENGENHARIA

n implica no exame e na alteração do software para reconstruí-lo em uma nova forma.

Page 48: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

48

Engenharia Reversa e Engenharia Reversa e ReengenhariaReengenharia

Page 49: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

49

Elementos da Engenharia Elementos da Engenharia ReversaReversa

1) NÍVEL DE ABSTRAÇÃO1) NÍVEL DE ABSTRAÇÃOn conforme o nível de abstração

aumenta, mais compreensíveis se tornam as informações.

Page 50: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

50

Elementos da Engenharia Elementos da Engenharia ReversaReversa

2) COMPLETITUDE DO PROCESSO2) COMPLETITUDE DO PROCESSO

n refere-se ao nível de detalhes que é fornecido em cada nível de abstração.

Page 51: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

51

Elementos da Engenharia Elementos da Engenharia ReversaReversa

3) INTERATIVIDADE3) INTERATIVIDADEn refere-se ao grau de participação do

ser humano no processo de engenharia reversa.

n conforme o nível de abstração aumenta, a interatividade deve aumentar ou a completitude será prejudicada

Page 52: (Manuten??o de Software Engenharia de Software) · processo de revisão da engenharia de software. 29 ... ser humano no processo de engenharia reversa. n conforme o nível de abstração

52

Elementos da Engenharia Elementos da Engenharia ReversaReversa

3) DIRECIONALIDADE3) DIRECIONALIDADEn se a direcionalidade tem sentido único,

toda informação extraída a partir do código fonte é usada durante as atividades de manutenção

n se a direcionalidade tem sentido duplo, a informação é usada para "alimentar" uma ferramenta de reengenharia.