Vamos Falar sobre Manutenção de Software

Este texto é um resumo do artigo “Introdução à Manutenção de Software” o qual eu li na disciplina de Manutenção de Software, porém não me recordo do nome do autor. Enfim, vamos ao que interessa.

Conceito

A manutenção de software consiste na atividade de modificar um software (sistema) já “finalizado” e operando, com o intuito de corrigir problemas ou adaptá-lo à um ambiente modificado.

Categorização

A manutenção pode ser classificada em três categorias, que são de acordo com o propósito do software:

  1. Sistemas com base em uma especificação rígida e bem definida, em que sua natureza não exija modificações.
  2. Softwares que procuram solucionar de forma aproximada problemas do mundo real.
  3. Sistemas que mudam de acordo com o ambiente em que estão inseridos.

Interação Entre Partes

No processo de execução de uma manutenção de software é necessário que haja a interação entre algumas partes, sendo elas:

  • Organização Cliente, que compra o produto e solicita a manutenção;
  • Mantenedor, que fornece a manutenção;
  • E o Usuário, que faz de fato o uso do sistemas, podendo ser uma pessoa como também uma organização.

Leis da Evolução de Software

A evolução de um sistema corresponde na sucessão de melhorias aplicadas no processo de manutenção. Segundo Lehman, há oito leis da evolução de software. Vale ressaltar que essas leis que são aplicáveis apenas dentro do contexto de grandes organizações. Veja quais são abaixo:

  • Evolução contínua;
  • Aumento de complexividade conforme seu desenvolvimento;
  • Auto-regulação do processo de evolução de software;
  • Conservação da estabilidade organizacional;
  • Conservação da familiaridade;
  • Contínuo crescimento de software;
  • Característica de qualidade decrescente do software;
  • E Característica do sistema de retorno.

Tipos de Manutenção

Quando se deseja aplicar a manutenção em um software, é porque há a necessidade de evitar a sua deterioração. No sentido de objetos e funcionalidades não se adequarem ao ambiente externo.

As atividades relacionadas com o processo de manutenção de software foram classificadas segundo Lientz & Swanson, em três categorias, sendo elas:

  • Corretivas, que consiste na correção de problemas de funcionalidade, o que inclui acertos emergenciais do sistema;
  • Adaptativas, que diz respeito à adequação do software ao ambiente externo;
  • E as Perfectivas, que objetivam adicionar novos recursos de funcionalidade ao sistema.

Segundo Pressman, existe ainda uma quarta categoria, a Preventiva, que consiste na identificação prévia de possíveis fontes de problemas.

Dificuldades 1.0

No ciclo de vida de um software, a manutenção é responsável pela maioria dos custos envolvidos. Logo é uma atividade importante. Evolve um esforço maior se comparado com as outras atividades da engenharia de software. Seu custo elevado se dá pelo fato da natureza da operação ser caracterizada pela imprevisibilidade.

As principais dificuldades encontradas na manutenção de software é prever quando ela será necessária e controlá-la. Na maioria dos casos ela é feita por empresas terceirizadas, que não possuem nenhum contato com o projeto inicial do software. A complexividade dos software também é um fator que dificulta a previsão da manutenção, ainda mais quando se fala dos sistemas legados.

Norma ISO/IEC 12207

A norma ISO/IEC 12207 provê um conjunto de processos de engenharia de software que uma organização deve utilizar para adquirir, fornecer, desenvolver ou manter software, ou seja, ela documenta os processos do ciclo de vida de software em um modelo de referência de processos. A manutenção de software aparece na norma como um dos processos dentro da categoria de processos fundamentais. Suas atividades são:

  • Implantação do processo;
  • Análise do problema e da modificação;
  • Implantação da modificação;
  • Revisão/aceitação da modificação;
  • Migração e descontinuação do software.

Gerenciando a Manutenção

No gerenciamento da manutenção de software, deve ser levado em consideração algumas questões essenciais para esse processo:

  • Programadores, que envolvem questões relacionadas à equipe de engenheiros de software;
  • Atitude Gerencial, responsável por ditar os rumos e o sucesso ou fracasso do ambiente de manutenção;
  • Código-Fonte, envolve questões relacionadas à definição de critérios de qualidade para o código-fonte;
  • E Usuários, que devem participar do processo de manutenção, com o objetivo de dar credibilidade ao trabalho do programador.

Paradigmas

Existem ainda três paradigmas diferentes para tratar a manutenção de software. O Concerto Rápido, que consiste em aplicar primeiro as mudanças necessárias no código fonte e então depois atualizar a documentação. A Melhoria Interativa propões aplicar primeiro adequar e atualizar a documentação de alto nível, para então depois realizá-las no código-fonte. E Reuso Total, que é a prática da construção de um novo software, fazendo uso do antigo ou de outros disponíveis.

Dificuldades 2.0

Uma outra dificuldade de gerencia da manutenção de software é estimar o esforço necessário para a realização da atividade. Para auxiliar na tomada de decisão é preciso argumentar sobre sobre as melhores opções para a organização. Tal auxílio envolve considerações como:

  • Reavaliar a eficiência de processos de manutenção;
  • Tratar a manutenção ou reengenharia;
  • Fundamentar as decisões tomadas;
  • E Planejar o orçamento de equipe e avaliar a rotatividade.

Principais Problemas da Manutenção

Segundo pesquisas feitas por diversos autores, chegou-se à conclusão dos principais problemas de manutenção enfrentados pelas organizações:

  • Baixa qualidade da documentação dos sistemas;
  • Necessidade constante dos usuários por melhorias e novas funcionalidades;
  • Falta de uma equipe de manutenção;
  • Falta de comprometimentos com cronogramas;
  • Treinamento inadequado do pessoal de manutenção;
  • E Rotatividade dos profissionais.