Manutenção de Software
作者:CARLOS RANIERI BARBOSA
1. A manutenção de software é um processo de melhoria de um 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.
2. Uma primeira classificação representa aqueles softwares construídos com base em uma especificação rígida e bem definida, cujos resultados esperados são bem conhecidos. Por 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.
3. Já em uma segunda classificação, são agrupados os softwares 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. 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. Percebe-se que esse tipo de sistema já abre espaço para diferentes interpretações por parte do desenvolvedor, o que tende a produzir software com maior necessidade de manutenção do que quando comparado aos da classificação anterior. Por considerar uma abstração para especificação de requisitos, a necessidade de mudança pode aparecer caso a abstração mude, na medida em que um maior entendimento do problema seja alcançado.
4. Tipos
4.1. • Adaptativas: são alterações que visam adaptar o software a uma nova realidade ou novo ambiente externo, normalmente imposto. Um exemplo claro seriam mudanças de leis ou regras, definidas pelo governo e/ou órgãos reguladores. • Corretivas: como o próprio nome diz, servem para eliminar as falhas encontradas em produção. É bastante comum, principalmente quando o processo de desenvolvimento não se preocupou de maneira adequada com a qualidade do software. • Evolutivas: são alterações que visam agregar novas funcionalidades e melhorias para os usuários que as solicitaram. Não se deve confundir esse tipo de manutenção com as entregas programadas de um processo de desenvolvimento interativo. A integração com outros sistemas também é considerada um tipo de evolução. As migrações para novas tecnologias, sejam de hardware ou software, podem causar dúvidas quanto à classificação do tipo de manutenção. Se a tecnologia foi imposta, a manutenção é classificada como adaptativa. Se a tecnologia é uma solução de melhoria do sistema, é classificada como evolutiva.
5. Soluções em manutenção de Servidor Firewall. • Criação de regras de acesso, • Elaboração de politicas de acesso externo. • Elaboração de politicas de acesso interno. • Filtro de páginas por categoria.
6. 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 foram detectados em fases anteriores. Mas a manutenção não se caracteriza apenas por correções.
7. Uma terceira e última classe de softwares considera mudanças no ambiente onde o software vai ser utilizado, característica não existente nas duas classificações anteriores. Um software integrante da terceira classificação corresponde àquele criado 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 desse tipo de software seria aquele que apresenta informações da economia de um país. À medida que a economia passa a ser mais bem compreendida, o modelo muda e com ele a abstração do problema, causando uma necessidade inevitável de manutenção no software. Esse tipo de software, comumente encontrado no dia-a-dia das organizações, tem interesse particular neste trabalho.
8. Os problemas, como pode ser observado, foram classificados de acordo com sua natureza em problemas gerenciais e técnicos. Problemas Gerenciais Ausência de um processo de manutenção de software Grande expectativa dos usuários Elevada rotatividade de membros e funções dentro da equipe Sobrecarga de tarefas Estimativa de prazo não condizente com a complexidade do software Baixa motivação entre profissionais de manutenção Ausência de manutenção preventiva Falhas de comunicação com o usuário Atrasos na entrega Problemas Técnicos Registro inexistente ou superficial de manutenções anteriores Ausência de um ambiente computacional específico para manutenção Validação insuficiente de manutenções efetuadas Documentação insuficiente ou superficial Falta de compreensão do software e suas estruturas