Apr 17, 2015
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
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)
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)
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.
6
Quanto consome?
25%Adaptativa
50% Evolutiva
21%Corretiva
4%
Preventiva
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
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).
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
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.
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.
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.
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.
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)
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.
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
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.
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.
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.
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
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.
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.
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.
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.
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).
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.
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.
28
Métodos para Apoio à Manutenção
Engenharia Reversa.
Reengenharia.
Gerência de Configuração.
Reutilização de Software.
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).
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.
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]
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).