Fábricas de Software
Fábrica de Software A área de Informática busca sempre a analogia. 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. Da Indústria o conceito de Fábrica de Software.
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.
Fábrica de Software 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.
Wikipedia A software factory is an organizational structure that specializes in producing computer software applications or software components according to specific, externally defined end user requirements through an assembly process. A software factory applies manufacturing techniques and principles to Software Development to mimic the benefits of traditional manufacturing. Software factories are generally involved with outsourced software creation.
Histórico O termo foi cunhado em 1969 pela Hitachi. Foi usado em 1975 pela NEC 1976 pela Toshiba 1977 pela Fujitsu
Histórico 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.
Histórico 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.
Histórico As primeiras iniciativas de Outsourcing nas áreas de Informática foram catastróficas, pois as empresas entregaram às contratadas todo o processo de operação e desenvolvimento dos seus sistemas, abrindo mão da gestão dos mesmos.
Histórico 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.
Histórico Os processos de comunicação com a empresa contratante eram paupérrimos, os processos para gestão das demandas também, as metodologias e processos de desenvolvimento idem.
Histórico Muitas empresas assumiram que Informática era um mal necessário e muito do que foi para fora voltou para dentro.
Histórico 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 que já possuíam processos razoavelmente definidos para esta finalidade) Criou 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.
Histórico Outras empresas seguiram um caminho diverso: desligaram funcionários e passaram a alocar recursos terceirizados em suas dependências.
Histórico 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.
Histórico Não bastasse isto, o risco trabalhista na manutenção de pessoas nestas condições era enorme para as empresas.
Histórico conclusão 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.
Fábrica de Software Situação 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.
Variantes Um outro agravante é que existe uma confusão enorme em relação à abrangência do que realmente é uma Fábrica de Software. Codificação de programas? Projeto físico do software? Projeto de software como um todo (projeto lógico, projeto físico, construção, testes e implantação)?
Esta confusão 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.
Exemplo: Justiça Federal de Santa Catarina Analistas de Sistema da JFSC levantam requisitos, identificam casos de uso, expandem casos de uso e fazem o modelo conceitual. A Fábrica de Software contratada (por licitação), faz o projeto físico e implementa o software.
Exemplo Os analistas da JFSC além de especificarem os casos de uso também estimam o esforço de desenvolvimento aplicando Pontos de Caso de Uso. Desta forma, as licitações podem ser feitas com maior propriedade.
Tipos de Fábrica de Software Na negociação é recomendável 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: 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?
Mercado Tudo indica que estes modelos de contratação de serviços de informática, através de Fábricas, está evoluindo em sua maturidade.
Mercado 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.
Mercado Por conta destas necessidades, estas empresas passaram também a adotar modelos de qualidade para desenvolvimento de software (CMMI, ISO, MPS BR, etc) os quais preconizam a criação de processos bem definidos e gerenciados para tratamentos de demandas desde sua colocação.
Mercado 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.
Mercado 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.