32
Manutenção de Software Professora: Aline Vasconcelos CEFET Campos [email protected]

Manutenção de Software Professora: Aline Vasconcelos CEFET Campos [email protected]

Embed Size (px)

Citation preview

Page 1: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

Manutenção de Software

Professora: Aline VasconcelosCEFET Campos

[email protected]

Page 2: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

2

Roteiro Definição Tipos de Manutenção Motivações Processo de Software:

A etapa de Manutenção no Ciclo de Vida do Software

Características e Documentação da Manutenção Processo de Manutenção Manutenibilidade de Software Problemas na Manutenção Métodos de Apoio

Page 3: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

3

Definição

Manutenção de Software:

“atividade durante a qual ocorrem modificações em um ou mais artefatos resultantes do desenvolvimento de um software,

buscando mantê-lo disponível, corrigir suas falhas, melhorar seu desempenho e adequá-lo aos requisitos novos ou modificados.”

(ANSI/IEEE, 1993)

Page 4: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

4

Definição

Manutenção de Software:

“o custo associado à modificação de um sistema de software ou componente depois de entregue para

corrigir falhas, melhorar o desempenho ou outros atributos, ou para adaptá-lo a um ambiente modificado.” (SEI, 2005)

Page 5: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

5

Tipos de Manutenção

Corretiva:correção de erros/falhas. Adaptativa: adaptação do software para acomodar

mudanças em seu ambiente externo, i.e. uma nova plataforma (hardware, sistema operacional) ou mudanças nas regras de negócio, leis, políticas governamentais etc.

Evolutiva (ou perfectiva): acréscimo de funcionalidades, não previstas em seu documento de requisitos original.

Preventiva (reengenharia):o software é modificado para oferecer uma base melhor para futuras manutenções. Ou seja, para melhorar a sua confiabilidade ou manutenibilidade futura.

Page 6: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

6

Quanto consome?

25%Adaptativa

50% Evolutiva

21%Corretiva

4%

Preventiva

Page 7: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

7

Motivações

Modificação de software – inevitável Surgem novos requisitos O ambiente do negócio muda Erros devem ser reparados Novo equipamento deve ser

incorporado O desempenho do software pode

ser melhorado

Page 8: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

8

Processo de Software

O trabalho associado à Engenharia de Software pode ser dividido em 3 fases genéricas (Pressman, 2001):

Definição: foco – O que? Quais são os requisitos funcionais e não-funcionais? Quais são as regras de negócio? Quais são os dados de entrada e saída? Atividades: Análise de Requisitos.

Desenvolvimento: foco – Como? Como os dados devem ser estruturados? Como deve ser a arquitetura do sistema para atender aos atributos de qualidade estabelecidos? Como as funções devem ser realizadas na arquitetura (i.e. comportamento do software)? Atividades: Projeto (Projeto de Alto Nível e Projeto Detalhado ou de Baixo Nível), Codificação (ou Implementação) e Testes.

Suporte: foco – Mudança. A fase de suporte reaplica as atividades definidas nas fases de Definição e Desenvolvimento no contexto de um software existente. Atividades:Manutenção (corretiva, adaptativa, evolutiva e preventiva).

Page 9: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

Ciclo de Vida Clássico: (Waterfall Model ou cascata)

Análise de Requisitos

Codificação

Teste de Unidade e Integração

Teste de Sistema

Teste de Aceitação

Entrega e Manutenção

Projeto do Sistema

Projeto dos Programas

-Projeto de Alto Nível

- Projeto de Baixo Nível

Características:•Seqüencial•Conceitualmente Simples•Guiado por documentos

Page 10: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

10

Contribuições x Problemas – Ciclo de Vida Clássico:

Define claramente as fases de desenvolvimento de software, permitindo a definição de métodos e atividades em cada fase.

Permite a definição dos “workproducts” ou artefatos a serem entregues em cada atividade.

Outros modelos representam simplesmente variações do ciclo clássico, incorporando loops e atividades extra.

Problemas: projetos de software na prática raramente seguem

um fluxo seqüencial; não suporta mudança de requisitos que pode ocorrer

ao longo do projeto; cliente acaba esperando muito tempo por algum

resultado concreto do trabalho.

Page 11: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

Ciclo de Vida Baseado em Desenvolvimento por Fases: Incrementos e Iterações

Sistema em DesenvolvimentoDESENVOLVEDORES

Construção da Release 1

Construção da Release 2

Construção da Release 3

Utiliza Release 1

Utiliza Release 2

Utiliza Release 3

Tempo

USUÁRIOS

Características: •Reduz o tempo de entrega, pois permite que o sistema sejaentregue em partes. •Geralmente há dois sistemas funcionando em paralelo: sistema operacional ou de produção e sistema em desenvolvimento.

Page 12: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

12

Características da Manutenção

A manutenção de software consome cerca de 70% do A manutenção de software consome cerca de 70% do orçamento de software de uma organização.orçamento de software de uma organização.

Atividades Gerais: Análise do Problema (categorização/priorização da manutenção); Avaliação do pedido de manutenção (avaliação do esforço, análise de riscos, custos etc.): Avaliação da documentação de projeto e Análise de impacto das mudanças (partes do software atingidas, efeitos colaterais); Implementação das mudanças (modelos e código); Revisão e Aceitação: Testes de Regressão (i.e. repetição de testes passados a fim de garantir que as modificações não introduziram falhas no software anteriormente operacional) e Inspeções; Migração.

Page 13: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

13

Documentos na Manutenção Formulário de Pedido de Manutenção (origem externa)Formulário de Pedido de Manutenção (origem externa): BugzillaBugzilla

Preenchido pelo usuário que deseja a manutenção. Manutenção Corretiva: descrição completa das circunstâncias

que levaram ao erro (inclusive dados de entrada e de saída, screen shots e outros materiais de apoio).

Manutenção Adaptativa ou Perfectiva: especificação da mudança (i.e. uma especificação de requisitos abreviada).

Relatório de Mudanças de Software (origem interna)Relatório de Mudanças de Software (origem interna): Esforço exigido para a manutenção. Natureza das modificações. Prioridade do pedido. Registro da modificação: itens (artefatos de software)

modificados.

Page 14: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

14

Processo de Manutenção

Um processo de Manutenção diz respeito a um conjunto de etapas bem definidas, que direcionam as atividades de manutenção de software, com o objetivo primordial de satisfazer às necessidades dos usuários de maneira planejada e controlada.

(Pigosky, 1996)

Page 15: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

15

Processo de Manutenção

Segundo a norma NBR ISO 12207, o objetivo do processo de manutenção é modificar um produto de software existente, preservando a sua integridade.

A Manutenção se inicia quando uma necessidade de modificação é identificada, ou seja, quando se necessita corrigir problemas, realizar adaptações ou melhorias.

O processo de manutenção chega ao seu final no momento da descontinuação do software, ou seja, quando não se vai mais utilizá-lo.

Page 16: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

16

Processo de Manutenção – Norma ISO 12207

Implementação do Processo

Análise da Requisição de ModificaçãoSolicitação

Implementação da Modificação

Aceitação/Revisão da Manutenção

MigraçãoDescontinuação do Software

Page 17: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

17

Processo de Manutenção – Norma ISO/IEC 12207

Implementação do ProcessoImplementação do Processo: nesta etapa, são estabelecidos planos e procedimentos

para registrar e controlar a atividade de manutenção e os pedidos feitos pelos clientes.

SolicitaçãoSolicitação: este evento ocorre quando alguma solicitação de

modificação é feita, ou pelos clientes, ou pelos próprios mantenedores.

Análise da Requisição de ModificaçãoAnálise da Requisição de Modificação: nesta etapa, é feita uma verificação minuciosa da

solicitação por parte do mantenedor, para que este possa oferecer opções de solução para o problema identificado.

Page 18: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

18

Processo de Manutenção – Norma ISO 12207

Implementação da ModificaçãoImplementação da Modificação: nesta etapa, são realizadas as tarefas propriamente ditas

de alteração do produto de software, incluindo código, documentação etc. Nela, deve-se garantir a perfeita execução para se chegar à solução proposta.

Aceitação/Revisão da ModificaçãoAceitação/Revisão da Modificação: nesta etapa, são feitas as revisões e testes a fim de

garantir a integridade do produto, bem como a homologação e aprovação junto ao solicitante para que o produto possa ser liberado.

MigraçãoMigração: nesta etapa, o produto gerado é colocado no ambiente de

produção e uma avaliação deve ser conduzida para confirmar a execução perfeita da alteração.

Page 19: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

19

Processo de Manutenção – Norma ISO 12207

Descontinuação do SoftwareDescontinuação do Software: nesta etapa, o software chega ao seu último estágio no

ciclo de vida, onde não haverá mais modificações no mesmo.

Page 20: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

Processo de Manutenção – Norma ISO 14764

Norma internacional de manutenção

Define um processo de manutenção idêntico ao da ISO 12207, mas mais detalhado

Define outros procedimentos relacionados à manutenção Definição e estrutura de um

plano de manutenção

Page 21: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

21

Visão Geral do Fluxo de Eventos

Determinar o tipo de manutençãotipo de manutenção a ser realizada. Se for manutenção corretivamanutenção corretiva, determinar a gravidade do errogravidade do erro. Se for um erro MUITO graveMUITO grave, abandonar temporariamente os

controles de manutenção e aplicar imediatamente a modificação no código (“apaga incêndio”).

Senão, avaliar, categorizar e colocar na fila.

As adaptações adaptações são avaliadas e categorizadas (priorizadas) antes de serem colocadas numa fila de pedidos de manutenção.

Os acréscimosacréscimos passam pelo mesmo processo das adaptações. Porém, nem todos os pedidos de acréscimo são levados a efeito.

Page 22: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

22

Visão Geral do Fluxo de Eventos

Uma vez formada a Fila de Pedidos de ManutençãoFila de Pedidos de Manutenção..... Implementação da Manutenção:

Seleção da próxima tarefa da fila de prioridades. Planejar, organizar, aplicar Engenharia de Software: Análise de Impacto da mudança; Avaliação de esforço, prazo e custo; Análise de Riscos; Modificação/especificação dos requisitos de software e do

projeto. Inspeções; Modificações do código e testes;

O evento final é uma Revisão que revalida a nova configuração, garantindo sua integridade, e garantindo a sarisfação do Pedido de Manutenção.

Page 23: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

23

Manutenibilidade Manutenibilidade de software: facilidade com que

um software pode ser entendido, corrigido, adaptado e/ou aumentado.

Representa um requisito não-funcional ou atributo de qualidade de um software.

Descrição das características e subcaracterísticas de qualidade utilizadas

(ISO/IEC 9126-1)

Características relacionadas a manutenibilidade do software: Refere-se ao esforço necessário para fazer modificações específicas no software. São elas:

Modificabilidade: Avalia o esforço necessário para a modificação e remoção de defeitos;

Testabilidade: Avalia o esforço necessário para validar as modificações realizadas.

Page 24: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

24

Manutenibilidade Fatores que influenciam:

Arquitetura da aplicação: Camadas, MVC, Tubos e Filtros, Cliente-Servidor etc.

Adoção de Princípios de Projeto: Modularidade (Coesão e Acoplamento), Ocultação de Informação, Encapsulamento, Separação de Objetivos, Generalização (Abstração).

Utilização de Padrões de Projeto.

Utilização de Padrões de Programação.

Comentários em Programas.

Documentação de Análise e Projeto atualizadas.

Page 25: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

25

Manutenibilidade Medida indireta de software.

Medida através dos atributos da atividade de manutenção que podem ser medidos.

Métricas: Tempo gasto para o reconhecimento do problema. Tempo gasto na análise do problema (análise da solução,

análise de impacto) Tempo gasto na especificação das mudanças (documentos). Tempo de correção ou modificação (implementação). Tempo de testes.

Outras métricas podem ser utilizadas como esforço (em homens-hora) da manutenção, métricas de projeto (coesão, acoplamento), métricas de complexidade do software (ex: McCabe).

Page 26: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

26

Problemas na Manutenção Geralmente, a única fonte de informação disponível sobre o

software é o código fonte. Código é complexo e de difícil leitura sem uma documentação

de apoio. Documentação de análise (requisitos) e projeto desatualizada. Dificuldade em avaliar o impacto da manutenção pela falta de

modelos do software. Dificuldade em se realizar Testes de Regressão quando não

existe nenhum registro de testes. Os mantenedores, em geral, não são os mesmos profissionais

que desenvolveram o software e os desenvolvedores originais nem sempre se encontram disponíveis.

Page 27: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

27

Problemas na Manutenção Baixa estima dos mantenedores: geralmente os

profissionais acham que é mais “nobre” a tarefa de desenvolver novos sistemas do que a tarefa de manter sistemas existentes.

A maioria do software não é projetada para sofrer mudanças.

Page 28: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

28

Métodos para Apoio à Manutenção

Engenharia Reversa.

Reengenharia.

Gerência de Configuração.

Reutilização de Software.

Page 29: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

29

Engenharia Reversa

Engenharia ReversaEngenharia Reversa: : processo de análise dos componentes do sistema e dos seus relacionamentos, a fim de descrever este sistema em um nível de abstração mais alto do que o código fonte original (GANNOD, 1999).

Page 30: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

30

Reengenharia

ReengenhariaReengenharia: : recuperação de informações de projeto de um software existente, a fim de reconstituir o sistema de modo a melhorar a sua qualidade global. Envolve: Engenharia Reversa, Reestruturação e Engenharia Progressa.

Page 31: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

31

Gerência de Configuração

Gerência de ConfiguraçãoGerência de Configuração: : “Disciplina aplicando direcionamento técnico e administrativo para identificar e documentar as características físicas e funcionais de um item de configuração, controlar as modificações sobre estas características, gravar e relatar o processamento da mudança e o status da sua implementação, e verificar a sua adequação aos requisitos especificados.” [IEEE]

Page 32: Manutenção de Software Professora: Aline Vasconcelos CEFET Campos aline.vasconcelos@terra.com.br

32

Reutilização de Software

ReutilizaçãoReutilização: : Processo de Incorporar em um novo Produto: código, especificações de requisito e de projeto, planos de teste, qualquer produto gerado durante desenvolvimentos anteriores (Werner, 2002).