Quando participamos de um projeto, as pessoas em geral presumem que este terá começo, meio e fim. No entanto, quando se trata de desenvolvimento de software, sabemos que não existe um fim definitivo. Seja por necessidades tecnológicas ou de negócios, a manutenção de software é uma atividade que acompanhará a vida toda de um sistema.
Atualmente, as empresas investem muito em TI, e a maior parte desse recurso é destinado para a evolução e manutenção de software. Segundo Sommerville (2011), as pesquisas em geral apontam que a manutenção detém cerca de dois terços do orçamento de TI.
Isso porque os sistemas são fundamentais para que os negócios operem, e para garantir seu funcionamento adequado e evolução conforme as necessidades da empresa, é necessário uma equipe qualificada dedicada a essa função.
Nesse artigo vamos abordar o conceito, importância, tipos e as principais técnicas para auxiliar no processo de manutenção de software.
O que é manutenção de software?
Manutenção de software é o processo de melhorias e correções de um software em desenvolvimento ou já desenvolvido. Ou seja, qualquer alteração após o software estar disponível em produção.
A vida do software não termina após sua implantação. Para um software permanecer útil ao longo do tempo, é necessário investir em manutenção.
Por que fazer manutenção?
Um dos principais objetivos em realizar a manutenção de software é o aperfeiçoamento tecnológico do sistema. Ao realizar essa atividade, o sistema se tornará cada vez mais estável, diminuindo sua velocidade de envelhecimento.
Os negócios estão sempre em mudanças, e o software deve acompanhar esse movimento. Dessa forma, é fundamental que o produto se adapte a novas regras de negócios, e acumule novas funcionalidades de acordo com as necessidades das partes envolvidas.
Quais são os tipos de manutenção de software?
De modo geral, existem 3 tipos de manutenção de software: Adaptativas, Corretivas e Evolutivas. Todas elas podem ocorrer em paralelo e serem executadas pela mesma equipe.
Adaptativas
São alterações que visam adaptar o software a uma nova regra de negócio. Ou seja, tem a finalidade de adequar o sistema ao ambiente no qual está inserido.
Por exemplo, antes da reforma trabalhista, um sistema de Recursos Humanos não permitia parcelar as férias em três vezes. Com a mudança da lei, isso passou a ser permitido, e o sistema teve que se adequar a esse cenário.
Corretivas
Como o nome diz, tem como objetivo solucionar defeitos encontrados no software. Os problemas de funcionalidade são comuns e em alguns casos devem ser corrigidos de forma emergencial.
Mesmo que equipe de desenvolvimento utilize as melhores técnicas e etapas de testes, os problemas poderão acontecer.
Evolutivas
São alterações que visam agregar novas funcionalidades e melhorias para o software.
Num mercado cada vez mais dinâmico e concorrido, é natural que sejam exigidas novas funcionalidades e mudanças para um produto se manter competitivo.
Técnicas para manutenção de software
Muitas ferramentas e técnicas auxiliam no processo de manutenção de software, evitando erros gerais durante o desenvolvimento, sustentação e evolução do sistema.
Documentação
Muitas vezes negligenciada, a documentação tem grande importância não só no momento de criação do software, mas também durante sua manutenção. Um dos motivos para manter uma boa documentação de um software está relacionado a mudanças de equipes de desenvolvimento. Com a documentação, o processo de transferência de conhecimento sobre o sistema se torna mais eficaz, não dependendo de pessoas especificas que já passaram pelo projeto.
Versionamento
Toda vez que há um processo de build e deploy, uma nova versão de um software é disponibilizada. O versionamento de uma aplicação tem como objetivo documentar as alterações feitas em cada entrega, de modo que seja possível resgatar versões anteriores em caso de erros.
Status Reporting
Status Reporting é um documento que visa o alinhamento entre os envolvidos no projeto em relação a situação atual do desenvolvimento. Nele é registrado o que foi realizado pela equipe de desenvolvimento em determinado período, assim como pontos de atenção relacionados ao sistema.
Codificação
Boas práticas de codificação ajudam muito na legibilidade, e auxiliam também para que o ciclo de evolução seja mais ágil e fácil. Indentação e comentários no código podem parecer detalhes não muito relevantes, mas irão auxiliar muito no entendimento do código-fonte. O uso de pacotes, orientação a objetos e padrões de projeto também contribuem na organização e divisão das responsabilidades para reaproveitamento de código, aumentando a produtividade das equipes de desenvolvimento.