PublicouFernanda De Mello Alterado mais de 6 anos atrás
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? 21% Corretiva 25% Adaptativa Preventiva 50% Evolutiva
4% Preventiva 50% Evolutiva
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).
9 Teste de Unidade e Integração
Ciclo de Vida Clássico: (Waterfall Model ou cascata) Análise de Requisitos Projeto do Sistema Projeto de Alto Nível Projeto dos Programas - Projeto de Baixo Nível Codificação Teste de Unidade e Integração Características: Seqüencial Conceitualmente Simples Guiado por documentos Teste de Sistema Teste de Aceitação Entrega e Manutenção
10 Contribuições x Problemas – Ciclo de Vida Clássico:
11 Ciclo de Vida Baseado em Desenvolvimento por Fases:
12 Características da Manutenção
A manutenção de software consome cerca de 70% do 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): Bugzilla 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): 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)
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 Implementação da Modificação Análise da Requisição de Modificação Solicitação Aceitação/Revisão da Manutenção Descontinuação do Software Migração
17 Processo de Manutenção – Norma ISO/IEC 12207
Implementaçã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çã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çã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çã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çã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çã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 Software: nesta etapa, o software chega ao seu último estágio no ciclo de vida, onde não haverá mais modificações no mesmo.
20 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ção a ser realizada. Se for manutenção corretiva, determinar a gravidade do erro. Se for um erro MUITO 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 são avaliadas e categorizadas (priorizadas) antes de serem colocadas numa fila de pedidos de manutenção. Os acré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çã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 ) 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. Métricas:
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 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 Reengenharia: 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çã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çã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).