Tipos de Fábrica de Software



A área de Informática é uma área “sui generis”, talvez até com uma certa crise de identidade, pois não consegue criar suas próprias definições a cerca de metodologias, técnicas e até de perfis profissionais afeitos ao seu trabalho. Busca sempre a analogia. É de se desconfiar se isso é para uma maior compreensão dos “não iniciados” ou se realmente não consegue chegar a uma definição genuinamente “sua”. Da Arquitetura busca a definição do “Arquiteto de Software”, da Engenharia Civil a definição do “Engenheiro de Software” e do processo de “Engenharia de Software” e de uns tempos para cá foi buscar na Indústria o conceito de “Fábrica de Software”. Particularmente não haveria problemas nisso se a “adaptação” fosse bem realizada e, mais que isso, devidamente explicada e compreendida. Conceitualmente foram feitos grandes progressos em relação à arquitetura e engenharia de software estando estas “disciplinas” bem definidas, razoavelmente entendidas e praticadas. Quando se fala em “Fábrica de Software” o assunto complica.
Muito se especula sobre o tema, pouco se explica e pouquíssimos praticam adequadamente. Componentização e reutilização, pilares de um processo fabril, já eram preocupações desde os primórdios da Informática, mas de difícil prática.
No Brasil, no início dos anos 90 começam a surgir linguagens e metodologias de orientação a objeto, facilitando a adoção destes conceitos o que levou algumas empresas do setor de prestação de serviços em informática a re-estruturar suas áreas de desenvolvimento pensando em “fabricar software” para si e, por que não, para terceiros. Apesar disto muito poucas levaram a cabo estes planos, fundamentalmente por ausência ou deficiência de processos de controle e execução de desenvolvimento sob esta ótica. Nestes mesmos anos 90 deflagram-se as “ondas” da Re-engenharia, “Down-sizing” e “Outsourcing” com reflexos enormes para a área de Informática. As primeiras iniciativas de “Outsourcing” nas áreas de Informática foram catastróficas, pois as empresas entregaram às contratadas (talvez porque os profissionais da área de Informática não tiveram a competência em explicar seus custos e, principalmente, por muitas vezes desenvolverem coisas totalmente desconectadas dos objetivos de negócio) todo o processo de operação e desenvolvimento dos seus sistemas, abrindo mão da gestão dos mesmos. Não bastasse o peso da questão gestão, constatou-se da pior forma possível que as empresas contratadas não tinham, mais uma vez, processos eficientes e eficazes para este tipo de serviço. Os processos de comunicação com a empresa contratante eram “paupérrimos”, os processos para gestão das demandas idem, as metodologias e processos de desenvolvimento idem. Muitas empresas “assumiram” que Informática era um “mal” necessário e muito do que foi “para fora” voltou “para dentro”. Em alguns casos, salvou-se o processo de operação do sistema (esta modalidade de prestação de serviços já era praticada por algumas empresas e estas já possuíam processos razoavelmente definidos para esta finalidade), criando-se o conceito de “hosting” de computadores, ou seja, os computadores e toda infra-estrutura necessária a sua operação ficaram de posse da contratada, o uso dos sistemas e seu desenvolvimento com a contratante. Outras empresas seguiram um caminho diverso, desligaram funcionários e passaram a alocar recursos terceirizados em suas dependências. O que a princípio parecia ser um bom negócio pela redução do “head-count”, com o passar do tempo mostrou-se ineficiente e perigoso, pois as pessoas alocadas por terceiros além de ocupar fisicamente postos de trabalho com todos os custos associados (luz, água, telefone, aluguel, computador, etc) não raro acabavam por assimilar conhecimentos imprescindíveis à empresa, sendo estas muito mais suscetíveis aos “humores” do mercado de trabalho, trocando de empresa às vezes por diferenças mínimas em seu valor hora de remuneração. Não bastasse isto o risco trabalhista na manutenção de pessoas nestas condições era enorme para as empresas. Neste princípio de século as empresas, inseridas cada vez mais em mercados globalizados e altamente competitivos, são impelidas a serem extremamente enxutas e produtivas, focando todos os seus esforços para seu negócio fim (“core business”) o que as impele, para o caso da Informática tratada em muitas empresas como área de suporte, a continuar a procurar alternativas de terceirização dos serviços relacionados.
Muitas empresas prestadoras de serviço na área de Informática, que até possuem competência técnica, ainda hoje oferecem o serviço de “Fábrica de Software” sem ter processos estruturados para poder realizar esta atividade. Um outro agravante é que existe uma confusão enorme em relação à abrangência do que realmente é uma “Fábrica de Software”, uns acham que a designação se refere apenas à codificação de programas, outros que se refere ao projeto físico do “software” e outros ainda que se refere ao projeto de “software” como um todo (projeto lógico, projeto físico, construção, testes e implantação). Esta confusão, por incrível que pareça, ocorre tanto por parte das empresas que contratam os serviços de Informática, como por parte das contratadas, gerando desgastes incomensuráveis a ambas. Para cada tipo de demanda, na prática se tem um tipo diferente de “Fábrica” a ser utilizado. É fundamental esta distinção quando da negociação para contratação de serviços, deixando claro para as partes envolvidas quais os insumos e produtos adequados ao tipo de demanda solicitada. Neste tipo de negociação é recomendável inclusive que ao invés de se utilizar genericamente o termo “Fábrica de Software” se passe a utilizar a nomenclatura associada ao tipo de demanda, ou seja, se for para uma demanda de um projeto completo utilizar “Fábrica de Projeto de Software”, se for para codificação de programas utilizar “Fábrica de Programas” e assim por diante. Estas nomenclaturas existem na prática por conta de como as empresas contratantes colocam suas demandas no mercado, pois a rigor se a analogia de conceituação com a Indústria fosse total, o termo “Fábrica” só poderia ser aplicado a programas, objetos, componentes e testes, únicos elementos passíveis de serialização em linha de produção. Um projeto industrial como, por exemplo, o de uma montadora de automóveis, é único, passando por etapas de pesquisa e desenvolvimento, sendo que após sua homologação inicia-se a produção dos veículos de forma seriada. Seguindo esta linha de avaliação da analogia, demandas de manutenção de sistemas normalmente também endereçadas a “Fábrica” não poderiam ser tratadas desta forma, ou alguém já fez manutenção de seu carro nas dependências de uma montadora?
Tudo indica que estes modelos de contratação de serviços de informática, através de “Fábricas”, está evoluindo em sua maturidade. As empresas de prestação de serviços em informática têm as mesmas necessidades (ou talvez até maiores por conta da natureza “virtual” de seus serviços) de enfrentamento de concorrência acirrada em mercados globalizados. Por conta destas necessidades, estas empresas passaram também a adotar modelos de qualidade para desenvolvimento de “software” (CMMI, ISO, PMI, etc) os quais preconizam a criação de processos bem definidos e gerenciados para tratamentos de demandas desde sua colocação. Hoje a relação “cliente-fornecedor” de muitas destas empresas, além de estarem embasadas nestes modelos, encontram-se reguladas através de acordos de níveis de serviço e indicadores de projetos e processos que permitem uma transparência muito maior às partes envolvidas. Adicionalmente estão começando a perceber que para que existam ganhos substanciais de produtividade será também necessária à estruturação de modelos de “Fábrica” adequados ao tipo de demanda, como os que aqui foram apresentados.
Para os que desejam uma ótima literatura sobre o assunto, ver o livro “Fábrica de Software – Implantação e Gestão de Operações”, dos professores Aguinaldo Fernandes e Descartes Teixeira, Editora Atlas.
Autor: Antônio Rafael de Alcântara da Rocha


Artigos Relacionados


Mda

Scrum - Manisfesto Ágil

Engenharia De Componentes

O Software Parou Na Hora Do Pique?

Evolução De Software Usando Genexus

Engenharia De Software - Visão Geral

A Essencialidade Da Engenharia De Software