Manutenção de Software

32
UENF – Engenharia de Software Vinicius Luiz do Nascimento Passos MANUTENÇÃO DE SOFTWARE 1. Introdução Os desenvolvedores de software se esforçam para obter um resultado satisfatório para os usuários de seus produtos, atendendo às suas respectivas necessidades. Uma vez em funcionamento os programas podem mudar ou evoluir. Descobrem- se defeitos, a interface pode se alterar, e novas necessidades podem surgir. Esse ciclo de mudanças é chamado de manutenção de software. O processo de manutenção de um software é uma das partes que integram o ciclo de vida de um programa, porém ele não recebe uma devida atenção, diferentemente de outras demais partes. No contexto histórico, o desenvolvimento de software tem mais ênfase

description

.

Transcript of Manutenção de Software

Page 1: Manutenção de Software

UENF – Engenharia de SoftwareVinicius Luiz do Nascimento Passos

MANUTENÇÃO DE SOFTWARE

1. Introdução

Os desenvolvedores de software se esforçam para obter um resultado satisfatório para os usuários de seus produtos, atendendo

às suas respectivas necessidades. Uma vez em funcionamento os programas podem mudar ou evoluir. Descobrem-se defeitos, a interface pode se alterar, e novas necessidades podem surgir. Esse ciclo de mudanças é chamado de manutenção de software.

O processo de manutenção de um software é uma das partes que integram o ciclo de vida de um programa, porém ele não recebe uma devida atenção, diferentemente de outras demais partes. No contexto histórico, o desenvolvimento de software tem mais ênfase em relação à manutenção do mesmo, mas isso ultimamente tem mudado em organizações, no intuito de manter o software operante durante um bom tempo, reduzindo assim o custo de investimento em novos aplicativos. Esse fato tem ocorrido ainda mais com a introdução do paradigma de softwares de código aberto. Com isso, dizemos que a manutenção de um software se baseia em alterações no mesmo após a sua introdução no mercado.

Apesar do conceito de manutenção é definido para qualquer produto destinado a software em geral, existem diferenças entre a manutenção com propósitos distintos.

Page 2: Manutenção de Software

2. Tipos de SoftwareAntes de entrarmos mais afundo no conceito de manutenção

de software, devemos saber os diversos tipos de software que encontramos para executarmos alterações. Primeiramente, podemos citar aqueles softwares desenvolvidos com base em uma especificação de maneira bem definida e rígida, com resultados exatos e conhecidos. Nesse modelo de aplicativo as manutenções dificilmente são necessárias, pelo fato de ter sido gerado através de uma implementação correta do método. Um exemplo simples é um software para realizar operações matemáticas.

Outro tipo de software é aquele que precisam de soluções aproximadas para problemas do mundo real, uma vez que as resoluções dos problemas são conseguidas somente na teoria nesses casos. Como exemplo, pode-se citar um jogo de xadrez. Embora suas regras sejam bem definidas, não é possível construir um software que calcule a cada passo todos os possíveis movimentos de peças do tabuleiro, de forma a determinar o melhor movimento. Isso porque o número de movimentos possíveis é muito grande para ser calculado em um intervalo de tempo relativamente curto. A técnica utilizada para desenvolver esse tipo de solução baseia-se em descrever o problema de forma abstrata e então definir os requisitos de software a partir dessa abstração.

A última classe de softwares consiste em alterações onde o software vai ser utilizado, característica essa que não existe nas outras classificações. Programas criados com esse propósito são gerados com base em um modelo dos processos abstratos envolvidos no sistema, e precisará mudar sempre que ocorrer mudanças nesses modelos, sendo, portanto, parte do ambiente que ele modela. Um exemplo de software dessa classificação é aquele que mostra as informações sobre a economia sobre um determinado país. À partir da compreensão maior da economia, o modelo de software se modifica e o problema se torna mais abstrato, o que causa necessidade inevitável de manutenção no sistema. Esta classificação possui interesse particular nesse tipo de atividade.

Page 3: Manutenção de Software

3. Fundamentos de Manutenção de Software

Aqui serão apresentados os conceitos que formam uma base para compreendermos melhor o papel da manutenção de software. Os tópicos a seguir mostram como é necessário o uso da manutenção e como são fundamentais suas respectivas características. Na figura abaixo podemos ver os aspectos de uma manutenção de software completa.

Page 4: Manutenção de Software

3.1 Definição e Terminologia

De acordo com o padrão internacional, (ISO / IEC / IEEE 14764), a manutenção de software é essencialmente um dos processos técnicos da engenharia de software.

O objetivo dessa metodologia é modificar um programa já existente, preservando sua integridade. O padrão internacional também afirma a importância da manutenção preventiva antes da entrega final do produto.

3.2 Natureza da Manutenção

A manutenção de um software sustenta seu produto em todo o seu ciclo de vida. Quando pedidos de modificação surgem, eles são monitorados, o impacto das alterações propostas é determinado, códigos e objetos são modificados, testes realizados e então uma nova versão do software é liberada. Além disso, são fornecidos aos usuários apoio e suporte para os usuários. O funcionário responsável pela manutenção é quem realiza essas atividades.

O padrão IEEE 14764 identifica as principais atividades da manutenção de software como a implementação de processos e alterações, análise e modificação de problemas, revisão e aceitação de mudanças, migração e retirada de circulação. Essas atividades serão discutidas mais detalhadamente em um outro tópico.

Para a vida útil de um software se manter constante, os responsáveis pela manutenção devem estar sempre em contato com os desenvolvedores, para haver compartilhamento de informações necessárias.

Page 5: Manutenção de Software

3.3 Necessidades de Manutenção

A manutenção é necessária para assegurar que o determinado programa possa continuar a satisfazer as necessidades dos usuários. Ela é aplicável a todo software que não possui solução única (citado no capítulo 2), independente do seu tipo de ciclo de vida.

O processo de manutenção deve ser realizada a fim de: • corrigir falhas;

• melhorar o design;• implementar melhorias;• Interface com outros softwares;• adaptar os programas para diferentes modelos de

hardware, software, sistemas de recursos e de telecomunicações;• migrações; • e finalizar software.

Os responsáveis pela manutenção possuem cinco aspectos-chave para se manterem ativos em suas tarefas:

• manter o controle sobre as funções diárias do software;

• manter o controle sobre as modificações • aperfeiçoar as funções existentes;• identificação de ameaças à segurança;• e prevenir o mau desempenho insesperado do

software

3.4 Maioria dos Custos em Manutenção

A manutenção consome uma parte importante nos recursos financeiros em um ciclo de vida de software. Cerca de 80% da manutenção ocorre em decorrência de alterações sem correção. Compreender as categorias da manutenção de software e os fatores que influenciam na capacidade da manutenção pode ajudar a conter custos. Fatores ambientais e sua relação com os custos de manutenção também podem ser incluídos:

Page 6: Manutenção de Software

• Ambiente de operacional: hardware e software,

• ambiente organizacional: refere-se a políticas,concorrência, o processo, o produto e pessoal.

3.5 Evolução do Software

Por volta do fim dos anos 60 foi abordado o primeiro processo de manutenção de software. Ao longo de 20 anos levou-se a formulação de oito “Leis da evolução” (mudança contínua, complexidade crescente, auto-regulação, conservação da estabilidade organizacional, conservação de familiaridade, crescimento contínuo, qualidade, feedback).

Os principais resultados da evolução incluem uma proposta em que a manutenção é desenvolvimento evolutivo e que as decisões de manutenção tem auxílio da compreensão do software com o tempo. Alguns afirmam que a manutenção é de desenvolvimento contínuo, em outras palavras, um programa de grande porte nunca é completo e continua evoluindo constantemente.

3.6 Tipos de Manutenção de Software

Programadores e engenheiros de software executam uma série de funções de manutenção para manter os programas funcionando com a menor quantidade possível de problemas. Os envolvidos na manutenção também procuram melhorar a confiabilidade e funcionalidade dos softwares constantemente. Diferente da manutenção de produtos desenvolvidos pela indústria, a manutenção de software não é realizada para reparar danos causados pelo tempo de uso, mas sim para corrigir erros que já existiam antes de entrar em produção. Estes erros não haviam sido detectados antes, por algum motivo. Porém, a manutenção não consiste apenas em corrigir erros, como veremos agora, classificando os tipos de

Page 7: Manutenção de Software

manutenção em quatro tipos: Adaptativas, Corretivas, Evolutivas e Preventivas.

• Adaptativas: são alterações onde o software mantém-se atualizado em paralelo às novas realidades ou ambiente externo. Podemos exemplificar como adaptativa a manutenção de um sistema onde novas leis e normas são implementadas, seja pelo governo local ou por determinada organização. Versões mais recentes de aplicativos e introdução de processadores mais potentes também são exemplos de manutenções adaptativas.

• Corretivas: têm como objetivo a reparação de erros no programa detectados geralmente pelos próprios usuários do mesmo. O erro em si é corrigido, porém normalmente a correção só é implementada em uma nova versão do software. É basicamente o processo de correção de erros que não foram antes identificados, como foi citado anteriormente. Correção de danos no hardware também pode ser considerada manutenção corretiva.

• Evolutivas: também chamadas de Manutenções Perfectivas, consistem em mudanças que promovem novas aplicações ao sistema, com o objetivo de trazer melhoria e novas funcionalidades, para trazer assim maior legibilidade e/ou adequações aos paradigmas de programação. Essas modificações geralmente não estão previstas no documento de requisitos do software original. A integração de um sistema com outro também é considerada uma evolução.

• Preventivas: como seu nome já diz, tem como intuito prevenir erros que podem surgir no futuro. A utilização dessa abordagem antecipa, em sua maioria das vezes, o uso dos outros tipos de manutenção. Assim como em uma empresa de veículos, os programadores testam seus softwares para garantirem a adaptação com altas cargas de dados e outras operações estressantes. Eles também fazem testes de compatibilidade do software com outros programas

Page 8: Manutenção de Software

que podem estar presentes no computador para não haver novos problemas. O conhecido conceito de Engenharia Reversa é a base da Manutenção Preventiva.

Neste gráfico acima podemos ver uma minoria notável na quantidade de manutenções preventivas que são realizadas, o que é uma gravidade. A proporção de uso de manutenção preventiva precisa necessariamente aumentar, para evitar o uso das demais manutenções. Podemos dizer que a partir desse gráfico, os programadores estão mais preocupados, respectivamente, em melhorar o software, mantê-lo atualizado ao ambiente e corrigir pequenos erros, em vez que prevenir a aplicação de todos esses aspectos.

4. Aspectos fundamentais da manutenção de software

Uma série de fatores importantes deve ser tratada para ocorrer garantia da manutenção efetiva de um software. Para promover uma boa manutenção, diversas questões devem ser abordadas:

• questões técnicas,

Page 9: Manutenção de Software

• questões de gestão,• estimativa de custo,• e medição.

4.1 Questões Técnicas

4.1.1 Entendimento Limitado

Uma compreensão limitada se refere à velocidade que um engenheiro de software pode entender o que ou onde executar uma alteração ou correção no software que ele não desenvolveu. O entendimento se torna ainda mais complicado se não houver uma documentação detalhada do programa, ou se os desenvolvedores na estão disponíveis para qualquer explicação, caso que muitas vezes acontece.

4.1.2 Testes

O custo de repetir o teste completo em uma grande parte do software é significativo em termos monetários. A fim de validar seus relatórios, o responsável pela manutenção deve verificar os problemas realizando os testes adequados. O teste regressivo (análise seletiva de um componente para verificar se a modificação causa ou não efeito no programa) é um conceito importante nesse quesito. Existem desafios nessa questão, como muitas pessoas trabalhando em problemas diferentes, o até mesmo a falta de tempo para fazer testes.

4.1.3 Análise de Impacto

A análise de impacto se refere à análise de como as mudanças aplicadas afetaram no software modificado. As solicitações de mudança no software podem ser chamadas de Solicitação de Modificação (MR) ou Relatório de Problemas (PR). Essas solicitações são concretizadas através da análise e

Page 10: Manutenção de Software

tradução, em termos de software. O padrão internacional define a análise de impacto da seguinte maneira:

• analisar MRs/PRs;• replicar ou verificar o problema;• desenvolver opções para modificação;• documentar MR/PR, os resultados e as opções de

execução;• obter a aprovação da opção selecionada

4.1.4 Conservação

O IEEE 14764 define a conservação de requisitos como a capacidade do software em relação a modificações. Como uma característica de software principal, a conservação dever ser especificada, revisada e controlada durante o processo de desenvolvimento do software, com o objetivo de reduzir os custos de manutenção. A capacidade de conservação do software nem sempre são atingidas com facilidade porque durante o desenvolvimento não se foca muito nas subcaracterísticas do software. Os desenvolvedores se preocupam mais com outras atividades e assim ignoram a conservação de requisitos. Conseqüentemente, outras coisas também são ignoradas como a documentação e testes no ambiente do software, o que leva à falta de compreensão do programa e problemas na análise de impacto.

4.2 Questões de gestão

4.2.1 Alinhamento com os problemas da organização

Os objetivos de uma organização descrevem como demonstram o retorno sobre o investimento em atividades de manutenção de software. O desenvolvimento inicial de um software se baseia no tempo definido e no orçamento do projeto. As necessidades do cliente nem sempre pode ser atendidas, pelo

Page 11: Manutenção de Software

fato desses dois aspectos não serem compatíveis com o grau de possibilidade do desenvolvedor.

4.2.2 Escolha de pessoal

Refere-se à forma de atrair pessoas para uma equipe de manutenção e como mantê-las. Muitas das vezes o membro da equipe pode ser menosprezado ou até sobrecarregado de trabalho, o que leva à desistência de muitos.

4.2.3 Processo

O processo de ciclo de vida do software é um conjunto de atividades, métodos, práticas e transformações que as pessoas usam para desenvolver e manter o software e seus produtos associados . Ao nível do processo, atividades de manutenção de software têm muito em comum com desenvolvimento de software ( por exemplo, gerenciamento de configuração de software é uma atividade crucial para ambos). A manutenção também requer várias atividades que não são encontrados no desenvolvimento de software. Estas atividades apresentam desafios para a gestão.

4.2.4 Aspectos organizacionais de manutenção

Aspectos organizacionais descrevem como identificar que organização e/ou função será responsável pela manutenção do software. A equipe que desenvolve o software não é necessariamente colocada para manter o software , uma vez que é operacional.

Page 12: Manutenção de Software

Ao decidir onde a manutenção de software será feita, organizações de engenharia de software podem, por exemplo, ficar com o desenvolvedor original ou ter uma equipe de manutenção fixa. Tendo uma equipe permanente tem muitos benefícios, como:

• permite a especialização ;• cria canais de comunicação ;• promove uma atmosfera mais amigável;• reduz a dependência de indivíduos;• permite verificações periódicas da auditoria.

Uma vez que existem muitos prós e contras de cada opção, a decisão deve ser feita dependendo do caso. O que é importante é a atribuição da responsabilidade a uma manutenção para um único grupo ou pessoa, independentemente da organização da estrutura.

4.2.5 Terceirização

Organizações de manutenção terceirizadas se tornou uma grande indústria. O maior desafio dessas empresas é manter a regularidade na qualidade de seus serviços, e consequentemente, seus clientes. Para se iniciar uma empresa dessa área exige um investimento inicial significativo e um processo de manutenção na qual é exigido automação.

4.3 Estimativa nos custos de manutenção

Os engenheiros de software devem compreender as diferentes categorias de manutenção de software a fim de abordar a questão do custo de manutenção estimado, fator muito importante para o planejamento de manutenção.

4.3.1 Custo estimado

Os custos de manutenção são afetados por diversos fatores, tanto técnicos quanto não técnicos. O padrão 14764 diz que através da utilização de modelos paramétricos e

Page 13: Manutenção de Software

uso de experiência ajudam na estimativa de custos. Uma combinação dos dois fatores também pode ser feito.

4.3.2 Modelos paramétricos

A modelagem de custos paramétricos (modelos matemáticos) é uma aplicação da manutenção de software. Ela consiste no uso e calibração de dados históricos de manutenções anteriores através de modelos matemáticos.

4.3.3 Experiência

A experiência é freqüentemente usada para estimar a capacidade do agente responsável pela manutenção. Claramente, a melhor abordagem para estimar a manutenção é combinar dados e experiência histórica.

4.3.4 Métricas da Manutenção de Software

Entidades relacionadas à manutenção de software, cujos atributos podem ser submetidos a medição, incluem processo, recurso e produto. Atribuidos a esses aspectos, devem tomar as seguintes métricas para promover uma boa manutenção de sotware: tamanho da mudança, complexidade, qualidade, facilidade de compreensão, conservação e esforço. Medidas de complexidade também podem ser obtidas usando ferramentas comerciais.

4.3.5 Métricas Específicas

O responsável pela manutenção deve determinar quais medidas são adequadas para uma determinada organização baseando-se no contexto da própria organização. Para seguir os padrões de um software de qualidade é preciso cumprir as seguintes métricas para as subcaracteristicas de manutenção:

Page 14: Manutenção de Software

•Analisabilidade: o responsável analisa e diagnostica deficiências ou causas de falhas para identificar o erro a ser corrigido.

• Mutabilidade: responsabilizada pela especificação de determinada modificação no software.

• Estabilidade: são executadas quando ocorre um comportamento inesperado no software

• Testabilidade: adotada pelo responsável e pelos usuários para testar uma certa modificação

• Outras métricas: tamanho do software, complexidade, compreensão e conservação

5. Processo de manutenção

Os processos de manutenção proporcionam atividades necessárias e entradas/saídas para essas atividades, segundo a descrição no padrão internacional. As atividades do processo de manutenção incluem:

• implementação do processo ,• problema e análise de modificação,• implementação de mudança, • revisão / aceitação da manutenção,• migração e• retirada de circulação.

Page 15: Manutenção de Software

Processo de Manutenção de Software

Recentemente, metodologias ágeis que promovem processos leves foram também adaptadas para manutenção. Este requisito surge a partir da crescente demanda por retorno rápido em serviços de manutenção.

5.1 Atividades de Manutenção

O processo de manutenção contém as atividades e tarefas necessárias para modificar um software existente, preservando sua integridade. Essas atividades são realizadas pelo responsável pela manutenção do software. Atividades de manutenção podem ser semelhantes a atividades de desenvolvimento, como a análise, projeto, codificação, testes e

Page 16: Manutenção de Software

documentação. O controle de atividades deve ser feito assim como no desenvolvimento. Apesar de parecidos, o processo de manutenção de software possui alguns processos exclusivos.

5.1.1 Atividades únicas

Há uma boa quantidade de atividades, práticas e processos exclusivos na manutenção de software:

• Compreensão do software: são as atividades necessárias para obter um conhecimento geral do que um software faz e como as partes trabalham juntas.

• Transição : uma controlada e coordenadaseqüência de atividades, na qual o software é transferido progressivamente do desenvolvedor para o responsável pela manutenção.

• Pedido de aceitação ou rejeição de mudança: modificações solicitando trabalho além de um certotamanho / esforço / complexidade pode ser rejeitadopor mantenedores e reencaminhadas para um desenvolvedor .

• Central de Ajuda da manutenção: o usuário solicita ajuda ao responsável pela manutenção

• Análise de impacto : uma técnica para identificar as áreas impactadas por uma mudança potencial;

• Acordos de Manutenção de serviço de nível (SLAs) e licenças de manutenção e contratos : acordos contratuais que descrevem os serviços e objectivos de qualidade .

5.1.2 Atividades de suporte

Page 17: Manutenção de Software

Os funcionários responsáveis pela manutenção também podem exercer atividades de suporte, tais como documentação, configuração, gestão, verificação e validade, resolução de problemas, garantia de qualidade de software, avaliações e auditorias. Outra função importante é o treinamento de funcionários da área e usuários.

5.1.3 Atividades de planejamento

O planejamento é uma atividade importante na manutenção de software. Os responsáveis devem abordar questões associadas a uma série de perspectivas (níveis) de planejamento, incluindo:

• planejamento de negócios ( nível organizacional ) ,

• planejamento de manutenção ( nível de transição ) ,

• planejamento de versão (nível de software ), e

• planejamento individual de solicitação de mudança no software ( nível de solicitação ) .

No nível individual, o planejamento é realizado durante a análise de impacto. Isso requer que o responsável possa:

• coletar as datas disponíveis para pedidos individuais,

• concordar com os usuários sobre o conteúdo das próximas versões do software

• identificar conflitos e desenvolver alternativas ,

• avaliar os riscos de uma determinada versão e desenvolver um plano de recuperação caso ocorra erros e

• informar todos as stakeholders.Considerando que os projetos de

desenvolvimento de software podem durar de alguns meses a alguns anos, a fase de manutenção geralmente dura anos. A

Page 18: Manutenção de Software

decisão de desenvolver novas versões exige uma documentação necessária contendo as estimativas de recursos e objetivos na parte qualitativa. No documento deve conter:

• contexto da manutenção de software,• adaptação do processo da manutenção de

software,• organização da manutenção de software e• estimativa de custos de manutenção.

O próximo passo consiste em desenvolver um plano de manutenção de software. Este plano deve ser preparado durante o desenvolvimento do software e deve especificar como os usuários devem solicitar mudanças no mesmo ou reportar problemas apresentados no uso. O IEEE 14764 fornece diretrizes para a um plano de organização padrão.

No ultimo nível a organização da manutenção terá de realizar planejamentos de negócios (financeiros, orçamentais e de RH).

5.1.4 Gestão de configuração de software

O padrão internacional descreve a configuração de software como um elemento crítico do processo de manutenção. No gerenciamento dos procedimentos da configuração de software devem prever a verificação, validação e auditoria de cada etapa necessária para identificar, autorizar, implementar e colocar o produto no mercado.

Os pedidos de modificações e relatórios de problemas não são suficientes para a gestão de configuração. O software desenvolvido e quaisquer alterações feitas nele devem ser controlados, através da Gestão de Configuração de Software (SCM, sigla em inglês). O SCM fornece detalhes e discute o processo pelo qual o software é modificado, e como essas mudanças são submetidas, avaliadas e aprovadas. O SCM de uma manutenção de software é diferente de um SCM de um desenvolvimento de software.

5.1.5 Qualidade de software

Page 19: Manutenção de Software

A qualidade de um software não vai surgir simplesmente realizando a manutenção. Os funcionários da manutenção devem ter em mãos um programa destinado para a qualidade de software. Para alcançar o nivel desejado de qualidade, este programa deve realizar processos de SQA (traduzido, Garantia de Qualidade de Software), processos de V&V (verificação e validação), revisão e auditorias.

6. Técnicas para manutenção

6.1 Compreensão do programa

Programadores gastam muito tempo lendo tentando entender o conteúdo dos programas, a fim de implementar coisas novas ou alterar outras já existentes. Navegadores de código são instrumentos fundamentais para o programa compreensão e são usadas para organizar e apresentar código fonte. Documentação clara e concisa também pode auxiliar na compreensão programa .

6.2 Reengenharia

O exame e alteração de software para reconstruí-lo em outra forma e incluir a nova aplicação em um novo formulário. A refatoração é um processo de reengenharia que visa reorganizar um software sem mudar seu comportamento, com o objetivo de melhorar sua estrutura. Essa técnica pode ser usada durante pequenas alterações no software.

6.3 Engenharia reversa

Page 20: Manutenção de Software

A engenharia reversa é o processo de análise do software para identificar os seus componentes e suas inter-relações e criar representações do software através de outra forma ou em níveis mais altos de abstração. Esse processo é passivo, ou seja, ele não altera o programa e nem se resulta a um novo. Como processos de engenharia reversa, podemos citar a redocumentação e a recuperação de projetos (recriação de abstrações de design através de combinações de códigos).

6.4 Migração

Durante o tempo de vida de um software, ele pode ser modificado para ser executado em diferentes ambientes. Para efetuar uma migração bem sucedida é preciso determinar as ações necessárias e em seguida desenvolver e documentar seus passos. Um plano de migração inclui requisitos, ferramentas, conversão do produto e de dados, execução, verificação e apoio. A migração também pode implicar uma série de atividades adicionais, como:

• notificação de intenção: uma declaração explicando o motivo da mudança de ambiente, e a descrição detalhada do novo a ser utilizado.

• operações paralelas: mudança de ambiente aos poucos, sem ocorrer mudanças drásticas imediatas

• notificação de conclusão: quando a migração planejada é concluída, um notificação é enviada a todos os interessados

• avaliação pós-operatório : avaliação das operações paralelas e o impacto da mudança para o novo ambiente ;

• arquivamento de dados : armazenar os dados da versão anterior do software

6.5 Retirada de circulação

Page 21: Manutenção de Software

Uma vez que o tempo de vida útil de um software tenha chegado ao fim, ele deve ser aposentado. Para ocorrer uma retirada de circulação do software sem arrependimentos, se deve seguir um plano de aposentadoria que abrange requisitos de retirada, impacto, substituição, cronograma e esforço. Arquivo de cópias de dados também pode ser incluído. A retirada de um software de circulação implica uma série de atividades ligadas à migração de software.

7. Ferramentas de manutenção de software

Aqui abordaremos sobre as ferramentas que são particularmente importantes na manutenção de software, onde o já mesmo existente está sendo modificado.

• Programas de corte, que selecionam apenas partes de um programa afectado por uma alteração ;

• analisadores estáticos, que permitem a visualização geral e resumos de conteúdo do programa;

• analisadores dinâmicos, que permitem que o responsável pela manutenção rastreie o caminho de execução de um programa;

• analisadores de fluxo de dados, que permitem que o funcionário da manutenção acompanhe todos os fluxos de dados possíveisprograma;

Page 22: Manutenção de Software

• referências cruzadas, que geram índices de componentes do programa; e

• analisadores de dependência , que ajudam os funcionários a analisar e compreender as inter-relações entre os componentes de um programa.

Ferramentas de engenharia reversa auxiliam o processo, assim como seus processos também contribuem para gerar um novo produto a partir de um antigo. Funcionários da manutenção também podem usar de testes, configurações, documentações e ferramentas métricas.