Custo de software, qual a melhor maneira de reduzí-lo?

Todos desejamos reduzir custos de qualquer tipo, tanto os pessoais como o de empresas. Na área de TI, podemos utilizar o TCO (Total Cost of Ownership) para nos ajudar a verificar custos e ações gerenciais para reduzi-los, relacionados a sistemas da empresa.

Utilizado pela primeira vez em 1987, o TCO  foi criado pelo Gartner Group, como medida e aproximação para gerenciamento e redução de custos, envolvendo pessoas, processos e tecnologia. Neste cenário, precisamos estar cientes que os custos relacionados a sistemas, não estão restritos apenas aos custos de aquisição ou desenvolvimento dos mesmos.

Na verdade, o ciclo de vida de um sistema incorpora o ciclo de desenvolvimento do mesmo além do custo operacional que considera os envolvidos em manutenções, tanto corretivas quanto evolutivas.

Neste contexto, a ISO/IEC 12207 considera o desenvolvimento e manutenção do software como processos que compõem o ciclo de vida de software, desde sua criação até a descontinuação do mesmo, compondo o TCO relacionado ao produto de software.

Deste modo, o custo de manutenção torna-se um ponto de grande importância para as empresas. No dia a dia percebe-se que muitas pessoas não possuem um sentimento claro, do quanto pode custar a manter um sistema de baixa qualidade em operação após sua implantação.

Já presenciei empresas com legado composto por diversos sistemas sem documentação, baixa qualidade e que, frequentemente, apresentam problemas de funcionamento. Além das paradas no negócio da empresa, estes sistemas geram perdas imensuráveis, relacionadas à sua imagem perante o mercado e clientes. Isto quando os usuários previstos para o sistema acabam nunca utilizando o mesmo, devido a ele cair em descrédito. Neste caso, todo o investimento é perdido por desinteresse em sua utilização.

Você continuaria utilizando uma operadora de telefonia celular que vivesse fora do ar? Para quantas pessoas você falaria mal desta empresa e qual seria o impacto no negócio da mesma? Qual o prejuízo gerado para ela?

O que já vi algumas vezes e que infelizmente acabarei vendo novamente, são pessoas acreditando que desenvolver software utilizando processos e o paradigma Orientado a Objetos, não são necessários e até mesmo, bobagem. Simplesmente acham que não vale a pena gastar e esperar mais, para ter seus sistemas desenvolvidos utilizando as melhores práticas de Engenharia de Software de mercado.

A verdade é que tudo que deixa de se gastar desenvolvendo software AD HOC, se gasta muitas vezes mais nos processos de manutenção dos sistemas, além de eventuais impactos imensuráveis de imagem junto ao usuário e/ou cliente.

Mas pense bem, se fosse realmente bobagem utilizar metodologias e orientação a objetos, por exemplo, por que grandes empresas como a Sun Microsystems, atualmente adquirida pela Oracle, teria gasto tanto esforço de excelentes profissionais nesta área?

Estudos mostram que cerca de 50% do tempo gasto em manutenções é gasto no processo de entendimento do código a ser manutenido (Fjeldstad & Hamlen, 1983; Standish, 1984). Isto evidencia a importância de um código bem implementado e documentado.

Redução de custos, o que todos desejam

Com o propósito de reduzir custos, podemos mesclar uma série de opções, tais como, renegociar com fornecedores, trocar fornecedores, ajustar Acordos de Nível de Serviço, realizar (re)engenharia de processos de negócios, rastrear gastos, considerar alternativas de Outsourcing, trocar recursos para localização de custos mais baixos substituir tecnologias/sistemas ultrapassados, gerenciar portfólio TI e minimizar custos operacionais com TI.

Dos pontos apresentados acima, percebemos que substituir tecnologias/sistemas ultrapassados, através de outras mais alinhadas ao negócio da empresa e minimizar custos operacionais com TI, através da utilização de sistemas com custos de manutenção menor e maior qualidade, estão alinhados aos objetivos da Engenharia de Software.

A grosso modo, todas as empresas querem e precisam gastar o mínimo possível na aquisição e manutenção de sistemas.

Também as empresas que desenvolvem software querem produzi-los no menor custo e prazo.

Novamente, a Engenharia de Software pode ajudar muito para se atingir estas metas.

Mas como aumentar a qualidade do software?

Podemos citar algumas sugestões, tais como, utilização de uma Metodologia de Desenvolvimento de Sistemas faseada, que possua processo formal de testes/qualidade e documentação, esta para agilizar eventuais manutenções evolutivas e correção de bugs. Primordialmente devemos ter um eficaz levantamento e gerenciamento de requisitos, utilizar equipes de desenvolvimento e testes com pelo menos um profissional sênior, utilizar as melhores práticas de mercado, utilizar design patterns que são soluções de mercado testadas e utilizadas por centenas de profissionais e empresas há muito tempo.

Para saber mais, leia o livro Engenharia de Software na Prática: Editora Novatec, 2010. ISBN 978-85-7522-217-1


2 Comentários

Frederico Augusto de Camargo
1

Hélio, concordo com seu ponto de vista. Mas acredito que a adoção da OO nos projetos de software não garante a qualidade interna. O ideal é que a equipe esteja acostumada a utilizar TDD no dia-a-dia e não ter vergonha ou receio de trabalhar em pares. Invariavelmente isso reduz também o custo de uma equipe de testes, visto que os testes unitários detectam problemas básicos já na programação, fazendo com que a equipe de testes fique desafogada.

Hélio Engholm Jr
2

Amigos. Na verdade, costumo dizer que orientação a objetos, engenharia de software, metodologias, PMBOK, … são procedimentos que existem para aumentar as chances de sucesso, mas que, infelizmente, não garantem absolutamente nada. Como todos sabemos, existem muitos outros fatores envolvidos e é nosso desafio tratar de todos eles.
Abraço a todos, HEngholmJr

Deixe seu comentário

Seu endereço de e-mail não será publicado. Campos com * são obrigatórios!