Software: Fabricar Ou Não Fabricar, Eis A Questão!



Certamente todos que trabalham na área de desenvolvimento de software já ouviram o termo Fábrica de Software. Sim, mas o que é isso? Quais as implicações? As empresas realmente empregam esse conceito como deve ser? E os clientes, eles têm consciência de como deve ser contratada uma fábrica de software e qual o valor que isso pode agregar?

Provavelmente a resposta para a maioria das perguntas acima será a clássica: Depende!

Para ilustrar um processo fabril devemos começar por Henry Ford que mostrou, entre várias outras, duas coisas muito importantes: a eficiência da especialização de funções; e a eficiência no uso de padrões para os processos.

Se levarmos esses conceitos para a produção de software o que teremos?

  • Especialização das funções de uma fábrica de software é uma tarefa mais fácil, porém nem sempre executada como deve ser porque envolve disponibilidade de profissionais especializados para executar determinadas tarefas. O que nem sempre é verdade no Brasil, onde conhecemos e temos notícias de empresas que se dizem Fábrica de Software porém utilizando Analista de Requisitos que além de requisitos fazem modelagem de Banco de Dados; Arquitetura de Sistemas; etc. 

  • Quanto à padronização dos processos o paralelo para a fábrica de software pode ser melhor obtido na utilização de Orientação a Objetos e Componentização. Utilizando-se esses dois conceitos uma fábrica de software consegue aumentar a sua produtividade com a reutilização de objetos e componentes. Porém para implementar esses conceitos é necessário investimento e muito trabalho, não se alcança essa padronização de processos produtivos da noite para o dia.

Em matéria recente, que infelizmente não lembro onde li para conseguir dar o devido crédito aqui, li a seguinte frase sobre o tema Fábrica de Software: ...muito de especula, pouco se explica e pouquíssimos praticam adequadamente.... É verdade, os problemas são muitos, e dois deles são clássicos:

Clientes que não sabem contratar e Fábricas que não sabem ser contratadas!

Essa é fácil de entender! Um cliente quando contrata uma Fábrica de Software precisa entender que está contratando uma linha de produção onde os processos e componentes estão pré-estabelecidos e teoricamente funcionam com qualidade se executados dentro daquele modelo. A vantagem na contratação de uma fábrica de software é a qualidade obtida através da especialização, produtividade e conseqüentemente preço já que se trata de uma linha de montagem em escala.

Não sou um especialista em linha de produção de carros, mas imagino que ela deve começar pelo chassi do carro e os últimos itens devem ser o acabamento (vamos supor que essa seqüência esteja correta). Algum de nós poderia entrar em uma loja da Ford e pedir um EcoSport, mas determinar que a linha de produção deve primeiro colocar todos os acabamentos, pintar e só então trabalhar no motor e chassi? Qual a possibilidade desse carro ter problemas na linha de produção?

O mesmo acontece com clientes que tentam contratar uma fábrica de software especialista em Java, por exemplo, e com processos extremamente bem definidos. Mas ele exige que:

  • Projeto desenvolvido em .Net;
  • Processo de desenvolvimento deve seguir os padrões do cliente;
  • Os componentes e ferramentas devem ser determinados pelo cliente.

A fábrica então terá que fazer tudo diferente do que ela normalmente faria (o seu processo com qualidade, componentização padrão etc.). Mas hora, assim teremos que construir uma outra fábrica? Qual a chance desse projeto fracassar?

E nesse ponto entra a outra parte do título desse tópico ...Fábricas que não sabem ser contratadas. Porque essas fábricas aceitam esses contratos? E porque esses clientes contratam fábricas se o que eles procuram não é um modelo de fábrica?

Porque eu contrato um especialista em gesso e exijo que ele utilize cimento? E porque esse pedreiro aceita fazer a obra, mesmo sabendo que não vai fazer bem feito e o seu nome pode ser afetado por isso? É quase uma questão filosófica!

Especialização na Função

Esse é um conceito muito difícil de ser empregado no setor de Informática, porque esse conceito não está ligado apenas ao conhecimento das técnicas que devem ser empregadas, e sim ao processo da fábrica.

Vamos imaginar um desenvolvedor que trabalha em uma determinada fábrica há 5 anos, conhece todos os processos e componentes. Pois bem, esse desenvolvedor pode ser trocado de uma hora para outra impunemente? Sem afetar a produtividade e qualidade do projeto? Acredito que deve ser claro que essa troca vai provocar impactos durante o prazo de aceleração (conhecimento dos processos, componentes etc.) do novo recurso.

Como no setor de informática o canibalismo impera, e além disso a maioria das empresas não costumam primar pela iniciativa de manter os colaboradores. A possibilidade de ganhar produtividade em função da Especialização na Função se torna cada vez mais difícil.

Um ponto determinante para o sucesso na montagem de uma fábrica de software, seja contratando ou oferecendo esse tipo de serviço, é a tomada de algumas decisões acerca da sua implementação. Essas decisões afetam diretamente na correta utilização do modelo e conseqüentemente no sucesso da operação. Vamos ver alguns itens:

Qual o escopo e linha de serviço que a operação deve atender?
Autor: André JB Rodrigues (PMP, ITIL)


Artigos Relacionados


Tipos De Fábrica De Software

Scrum - Manisfesto Ágil

Evolução De Software Usando Genexus

Projeto De ImplantaÇÃo De Um Organograma Para Departamento De Suprimentos De Uma Fabrica.

O Que é Software Livre

Desenvolvimento De Software Utilizando Metodologias ágeis

A Essencialidade Da Engenharia De Software