5 Tipos de manutenção: CORRETIVA, ADAPTATIVA, PERFECTIVA. O conceito de manutenibilidade. - franAnder/Engenharia-de-software-FACIMP GitHub Wiki
A manutenção de software é hoje um assunto presente em organizações que desenvolvem e mantém software. Isso se deve á necessidade de sempre ajustar e melhorar o produto de software de acordo com as mais diversas necessidades. Diante desse fato, entender o significado e abrangência do termo manutenção de software pode auxiliar organizações e profissionais interessados no tema a melhor conduzir seus esforços quando precisam manter seus produtos.
A manutenção de software é um processo de melhoria de software já desenvolvido, ou que está sendo desenvolvido. Com a manutenção também é possível corrigir erros que são encontrados durante a utilização do sistema pelo usuário ou por testes realizados pelos desenvolvedores.
Sabemos que a vida de um software não termina após a sua implantação. Ele ainda viverá durante muito tempo. Será utilizado por anos, e com certeza, terá muitas atualizações, gerando novas versões do sistema. Nesse sentido, a manutenção é caraterizada pela modificação do software já entregue ao cliente, ou seja, a manutenção é qualquer alteração no software após sua entrada em produção. Embora a definição de manutenção de software trate genericamente qualquer produto de software, existem diferenças entre a manutenção de software com propósitos distintos. Uma primeira classificação representa aqueles softwares construídos com base na rigidez e bem definidos. Um exemplo, é um software construído para realizar operações com matrizes(adição, multiplicação e inversão). Nesse tipo de software, uma vez que tenha sido construído considerando a correta implementação do método, dificilmente haverá a necessidade de manutenções.
Já em um segunda classificação, são agrupados os software que constituem implementações de soluções aproximadas para problemas do mundo real, uma vez que soluções completas somente são conseguidas na teoria nesses casos. 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 e 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. O objetivo da manutenção de software é diferente da manutenção de produtos industrializados, pois a manutenção realizada não é feita para reparar danos causados pelo tempo de uso do software. Defeitos não são introduzidos pelo tempo e nem pela carga de utilização. Os defeitos encontrados já existiam, antes do software entrar em produção. Por algum motivo, não forma detectados em fases anteriores. Mas a manutenção não se caracteriza apenas por correções.
- O conceito de manutenibilidade, também conhecida como mantenabilidade, é essencial para os processos de manutenção industrial. Ela também é capaz de assegurar a qualidade dos produtos e serviços da empresa. É ela que garante maior segurança e facilidade na execução dos serviços de manutenção, bem como outros benefícios. François Monchy, grande nome na área da manutenção, coloca a manutenibilidade, como a probabilidade de um equipamento com falhas ser reparado dentro de um tempo pré estabelecido. Uma outra definição possível para a manutenibilidade é a estratégia que permite a não repetição de erros e falhas nos processos de manutenção. Dessa forma, ela pode ser vista como um conceito que permite uma dinâmica de melhoramento e otimização da manutenção, gerando uma gestão de manutenção cada vez mais eficaz.
Corretiva
Bastante comum em todos os tipos de software, a manutenção corretiva tem a clara finalidade de promover correções em bugs ou qualquer elemento do código que não esteja funcionando de maneira satisfatória. São falhas existentes desde as primeiras etapas de engenharia e que, por motivos diversos, só foram identificadas após a entrega.
Adaptativa
Modificações adaptativas são necessárias quando o software tem de cumprir novos requisitos. Esses requisitos são decorrentes de mudanças no ambiente em que o programa é executado, do surgimento de ameaças cibernéticas de leis ou normas técnicas nas quais ele se enquadra.
Perfectiva
Modificações não previstas no documento de requisitos original do software. Tem por intuito melhorar a qualidade do software, acrescentando novas funcionalidades, melhorando seu desempenho, ou até mesmo modificando seu código-fonte buscando obter melhor legibilidade ou adequação e alguns paradigmas de programação.