Escolar Documentos
Profissional Documentos
Cultura Documentos
Roteiro
Mtodos de Apoio
Definio
Manuteno de Software: atividade durante a qual ocorrem modificaes em um ou mais artefatos resultantes do desenvolvimento de um software, buscando mant-lo disponvel, corrigir suas falhas, melhorar seu desempenho e adequ-lo aos requisitos novos ou modificados. (ANSI/IEEE, 1993)
3
Definio
Manuteno de Software: o custo associado modificao 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)
4
Tipos de Manuteno
Corretiva:correo de erros/falhas. Adaptativa: adaptao do software para acomodar mudanas em seu ambiente externo, i.e. uma nova plataforma (hardware, sistema operacional) ou mudanas nas regras de negcio, leis, polticas governamentais etc. Evolutiva (ou perfectiva): acrscimo de funcionalidades, no previstas em seu documento de requisitos original. Preventiva (reengenharia):o software modificado para oferecer uma base melhor para futuras manutenes. Ou seja, para melhorar a sua confiabilidade ou manutenibilidade futura.
Quanto consome?
Corretiva Preventiva
21% 25%
Adaptativa
4%
50%
Evolutiva
Motivaes
Modificao de software inevitvel Surgem novos requisitos O ambiente do negcio muda Erros devem ser reparados Novo equipamento deve ser incorporado O desempenho do software pode ser melhorado
7
Processo de Software
O trabalho associado Engenharia de Software pode ser dividido em 3 fases genricas (Pressman, 2001):
Definio: foco O que? Quais so os requisitos funcionais e no-funcionais? Quais so as regras de negcio? Quais so os dados de entrada e sada? Atividades: Anlise 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 funes devem ser realizadas na arquitetura (i.e. comportamento do software)? Atividades: Projeto (Projeto de Alto Nvel e Projeto Detalhado ou de Baixo Nvel), Codificao (ou Implementao) e Testes. Suporte: foco Mudana. A fase de suporte reaplica as atividades definidas nas fases de Definio e Desenvolvimento no contexto de um software existente. Atividades:Manuteno (corretiva, adaptativa, evolutiva e preventiva).
Ciclo de Vida Clssico: (Waterfall Model ou cascata) Anlise de Requisitos Projeto do Sistema
Teste de Unidade e Integrao Caractersticas: Seqencial Conceitualmente Simples Guiado por documentos Teste de Sistema
Teste de Aceitao
Entrega e Manuteno
Define claramente as fases de desenvolvimento de software, permitindo a definio de mtodos e atividades em cada fase. Permite a definio dos workproducts ou artefatos a serem entregues em cada atividade. Outros modelos representam simplesmente variaes do ciclo clssico, incorporando loops e atividades extra. Problemas: projetos de software na prtica raramente seguem um fluxo seqencial; no suporta mudana de requisitos que pode ocorrer ao longo do projeto; cliente acaba esperando muito tempo por algum resultado concreto do trabalho.
10
Sistema em Desenvolvimento
DESENVOLVEDORES
Construo da Release 1
Construo da Release 2
Construo da Release 3
Tempo
Utiliza Release 1
USURIOS
Utiliza Release 2
Utiliza Release 3
Caractersticas: Reduz o tempo de entrega, pois permite que o sistema seja entregue em partes. Geralmente h dois sistemas funcionando em paralelo: sistema operacional ou de produo e sistema em desenvolvimento.
Caractersticas da Manuteno
A manuteno de software consome cerca de 70% do oramento de software de uma organizao. Atividades Gerais: Anlise do Problema (categorizao/priorizao da manuteno); Avaliao do pedido de manuteno (avaliao do esforo, anlise de riscos, custos etc.): Avaliao da documentao de projeto e Anlise de impacto das mudanas (partes do software atingidas, efeitos colaterais); Implementao das mudanas (modelos e cdigo); Reviso e Aceitao: Testes de Regresso (i.e. repetio de testes passados a fim de garantir que as modificaes no introduziram falhas no software anteriormente operacional) e Inspees; Migrao.
12
Documentos na Manuteno
Manuteno Corretiva: descrio completa das circunstncias que levaram ao erro (inclusive dados de entrada e de sada, screen shots e outros materiais de apoio).
Manuteno Adaptativa ou Perfectiva: especificao da mudana (i.e. uma especificao de requisitos abreviada). Esforo exigido para a manuteno. Natureza das modificaes.
Prioridade do pedido.
Registro da modificao: itens (artefatos de software) modificados.
13
Processo de Manuteno
Um processo de Manuteno diz respeito a um conjunto de etapas bem definidas, que direcionam as atividades de manuteno de software, com o objetivo primordial de satisfazer s necessidades dos usurios de maneira planejada e controlada.
(Pigosky, 1996)
14
Processo de Manuteno
Segundo a norma NBR ISO 12207, o objetivo do processo de manuteno modificar um produto de software existente, preservando a sua integridade. A Manuteno se inicia quando uma necessidade de modificao identificada, ou seja, quando se necessita corrigir problemas, realizar adaptaes ou melhorias. O processo de manuteno chega ao seu final no momento da descontinuao do software, ou seja, quando no se vai mais utiliz-lo.
15
Solicitao
Aceitao/Reviso da Manuteno
Descontinuao do Software Migrao
16
Implementao do Processo:
nesta etapa, so estabelecidos planos e procedimentos para registrar e controlar a atividade de manuteno e os pedidos feitos pelos clientes. este evento ocorre quando alguma solicitao de modificao feita, ou pelos clientes, ou pelos prprios mantenedores.
Solicitao:
nesta etapa, feita uma verificao minuciosa da solicitao por parte do mantenedor, para que este possa oferecer opes de soluo para o problema identificado.
17
Implementao da Modificao:
nesta etapa, so realizadas as tarefas propriamente ditas de alterao do produto de software, incluindo cdigo, documentao etc. Nela, deve-se garantir a perfeita execuo para se chegar soluo proposta. nesta etapa, so feitas as revises e testes a fim de garantir a integridade do produto, bem como a homologao e aprovao junto ao solicitante para que o produto possa ser liberado. nesta etapa, o produto gerado colocado no ambiente de produo e uma avaliao deve ser conduzida para confirmar a execuo perfeita da alterao.
18
Aceitao/Reviso da Modificao:
Migrao:
Descontinuao do Software:
nesta etapa, o software chega ao seu ltimo estgio no ciclo de vida, onde no haver mais modificaes no mesmo.
19
Norma internacional de manuteno Define um processo de manuteno idntico ao da ISO 12207, mas mais detalhado Define outros procedimentos relacionados manuteno Definio e estrutura de um plano de manuteno
Determinar o tipo de manuteno a ser realizada. Se for manuteno corretiva, determinar a gravidade do erro.
Se for um erro MUITO grave, abandonar temporariamente os controles de manuteno e aplicar imediatamente a modificao no cdigo (apaga incndio).
As adaptaes so avaliadas e categorizadas (priorizadas) antes de serem colocadas numa fila de pedidos de manuteno. Os acrscimos passam pelo mesmo processo das adaptaes. Porm, nem todos os pedidos de acrscimo so levados a efeito.
21
Implementao da Manuteno: Seleo da prxima tarefa da fila de prioridades. Planejar, organizar, aplicar Engenharia de Software: Anlise de Impacto da mudana; Avaliao de esforo, prazo e custo; Anlise de Riscos; Modificao/especificao dos requisitos de software e do projeto. Inspees; Modificaes do cdigo e testes; O evento final uma Reviso que revalida a nova configurao, garantindo sua integridade, e garantindo a sarisfao do Pedido de Manuteno.
22
Manutenibilidade
Manutenibilidade de software: facilidade com que um software pode ser entendido, corrigido, adaptado e/ou aumentado. Representa um requisito no-funcional ou atributo de qualidade de um software. Descrio das caractersticas e subcaractersticas de qualidade utilizadas (ISO/IEC 9126-1)
Caractersticas relacionadas a manutenibilidade do software: Referese ao esforo necessrio para fazer modificaes especficas no software. So elas: Modificabilidade: Avalia o esforo necessrio para a modificao e remoo de defeitos; Testabilidade: Avalia o esforo necessrio para validar as modificaes realizadas.
23
Manutenibilidade
Arquitetura da aplicao: Camadas, MVC, Tubos e Filtros, Cliente-Servidor etc. Adoo de Princpios de Projeto: Modularidade (Coeso e Acoplamento), Ocultao de Informao, Encapsulamento, Separao de Objetivos, Generalizao (Abstrao). Utilizao de Padres de Projeto. Utilizao de Padres de Programao. Comentrios em Programas. Documentao de Anlise e Projeto atualizadas.
24
Manutenibilidade
Medida atravs dos atributos da atividade de manuteno que podem ser medidos.
Mtricas:
Tempo gasto para o reconhecimento do problema. Tempo gasto na anlise do problema (anlise da soluo, anlise de impacto) Tempo gasto na especificao das mudanas (documentos). Tempo de correo ou modificao (implementao). Tempo de testes. Outras mtricas podem ser utilizadas como esforo (em homenshora) da manuteno, mtricas de projeto (coeso, acoplamento), mtricas de complexidade do software (ex: McCabe).
25
Problemas na Manuteno
Cdigo complexo e de difcil leitura sem uma documentao de apoio. Documentao de anlise (requisitos) e projeto desatualizada. Dificuldade em avaliar o impacto da manuteno pela falta de modelos do software.
Dificuldade em se realizar Testes de Regresso quando no existe nenhum registro de testes. Os mantenedores, em geral, no so os mesmos profissionais que desenvolveram o software e os desenvolvedores originais nem sempre se encontram disponveis.
26
Problemas na Manuteno
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 no projetada para sofrer mudanas.
27
28
Engenharia Reversa
Engenharia Reversa: processo de anlise dos componentes do sistema e dos seus relacionamentos, a fim de descrever este sistema em um nvel de abstrao mais alto do que o cdigo fonte original (GANNOD, 1999).
29
Reengenharia
Reengenharia: recuperao de informaes de projeto de um software existente, a fim de reconstituir o sistema de modo a melhorar a sua qualidade global. Envolve: Engenharia Reversa, Reestruturao e Engenharia Progressa.
30
Gerncia de Configurao
Gerncia de Configurao: Disciplina aplicando direcionamento tcnico e administrativo para identificar e documentar as caractersticas fsicas e funcionais de um item de configurao, controlar as modificaes sobre estas caractersticas, gravar e relatar o processamento da mudana e o status da sua implementao, e verificar a sua adequao aos requisitos especificados. [IEEE]
31
Reutilizao de Software
Reutilizao: Processo de Incorporar em
um novo Produto: cdigo, especificaes de requisito e de projeto, planos de teste, qualquer produto gerado durante desenvolvimentos anteriores (Werner, 2002).
32