# Manutenção de software

Em engenharia de software, manutenção de software é o processo de melhoria e otimização de um software já desenvolvido (versão de produção), como também reparo de defeitos. A manutenção do software é uma das fases do processo de desenvolvimento de software, e ocorre a seguir a entrada do software em produção.
Esta fase envolve:
* mudanças no software para corrigir defeitos e deficiências que foram encontrados durante a utilização pelo usuário
* novas funcionalidades para melhorar a aplicabilidade e usabilidade do software.
A manutenção do software para atividades de correção de anomalias aponta para falhas no Processo de Desenvolvimento de Software - PDS que devem ser identificadas e tratadas, visando a melhoria contínua do processo. As anomalias são inseridas pelo processo em si ou pelo não entendimento dos requisitos do produto.
Para os requisitos do produto, isso significa que você pode ter um PDS de muita qualidade e ainda assim gerar produtos de péssima qualidade. Maximizar o tempo e o esforço gastos para entender os requisitos junto ao cliente garante a qualidade do produto final, pois qualidade se traduz em atendimento pleno dos requisitos.
E, para o PDS, as anomalias podem estar associadas à: testes ineficazes, gaps de conhecimento técnico não identificados (fator hunano, e de responsabilidade da liderança), falhas nos mecanismos de comunicação entre os membros da equipe, falta de ferramentas apropriadas, entre outros.
A manutenção do software envolve inúmeras técnicas específicas. Uma das técnicas é separação estática, a qual é usada para identificar todos os códigos de programa que são afetados por alguma variável. Isto é geralmente útil em programas de refatoração de código que foram especialmente
A fase de manutenção de software é uma parte explicita do modelo em cascata do processo de desenvolvimento de software a qual foi criada durante a fase de programação estruturada da ciência da computação. O outro modelo principal, o modelo em espiral, foi desenvolvido durante a fase de orientação ao objeto da engenharia de software, não faz nenhuma menção explicita a fase de manutenção. Independentemente disto, esta atividade é importante, considerando o fato que dois terços do custo do ciclo de vida do sistema de software envolve manutenções.
No ambiente de desenvolvimento de software formal, a equipe ou organização de desenvolvimento deverá ter algum mecanismo para documentar e rastrear os defeitos e deficiências. O software é disponibilizado com problemas porque a organização decide a utilidade e valor do software a um nível de qualidade particular pesando o impacto de deficiências ou defeitos desconhecidos.
Os problemas conhecidos são normalmente registrados em um documento de considerações operacionais ou notas de implantação de forma que os usuários do software são capazes de contornar os problemas conhecidos e que irão ser descobertos quando o uso do software incapacitar tarefas particulares.
Com a implantação do software, outros defeitos e deficiências não documentadas serão descobertos pelos usuários de software, Tão logo tais problemas sejam reportados para a organização de desenvolvimento, eles passaram a fazer parte do rastreamento de defeitos do sistema.
As pessoas envolvidas na fase de manutenção de software irão trabalhar no problemas conhecidos, localizá-los, e preparar novas versões do software, conhecidas como versões de manutenção, a qual ira atualizar a documentação de problemas.