Logomarca IETEC

Buscar no TecHoje

Preencha o campo abaixo para realizar sua busca

:: Gestão e Tecn. da Informação

Fábrica de software

Jorge Batista Piazarollo

Pós-graduado em Gestão de Projetos pelo Ietec.

Resumo

O conceito de Fábrica de Software não é novo e vem evoluindo desde os anos sessenta na procura de um modelo que atenda as expectativas de Fabricantes e do mercado. Nos dias atuais, diversos fatores têm favorecido a sua afirmação como produtora de software. Exemplos disso são: a consolidação das técnicas de engenharia de software e o amadurecimento dos padrões de qualidade.

Podendo existir como setores em grandes empresas ou como empresa independente, sua concepção está fortemente baseada em aspectos como processos-padrão definidos, melhoria contínua de processos, perfis funcionais adequados às funções, reaproveitamento de código, garantia e controle da qualidade e boa comunicação. Para isto, lança mão de ferramentas de apoio e das boas práticas retiradas do conjunto de conhecimentos em gerenciamento de projetos (PMBOK) como planejamento adequado, padronização de processos; gerenciamento da qualidade, recursos humanos, comunicações e riscos.


Introdução


Com um mercado consumidor de TI cada vez mais exigente quanto aos aspectos de produtividade, custo e qualidade, as organizações fornecedoras têm procurado se transformar buscando um novo modelo que supra com eficiência a estas necessidades.  

Fatores como padrões e especificações abertas (sem custo), esforços em pesquisas na área de TI em todo mundo, a consolidação das técnicas de engenharia de software, o refinamento dos ambientes de desenvolvimento, o amadurecimento dos padrões de qualidade, a evolução de ferramentas CASE (geradores de código), facilidade de comunicação e compartilhamento da informação, a alta competitividade do mercado, a desvalorização cambial, o aumento da demanda por software, a tendência à terceirização de serviços, o fácil acesso a novas tecnologias e sobretudo o apoio encontrado no conjunto de conhecimentos em gerenciamento de projetos, encontrado no PMBOK [1], têm contribuído para o surgimento de uma nova proposta para atender as necessidades do mercado consumidor de produtos de TI: A Fábrica de Software.

Assim, neste contexto, muitos modelos desta estrutura de produção têm sido apresentados e implementados visando o atendimento das necessidades tanto do mercado quanto as dos produtores de software.

Este artigo ira apresentar algumas tendências encontradas na concepção de Fábricas de Software pesquisadas em livros, apresentação de simpósios e congressos, artigos e relatórios de projetos-piloto; e como o conjunto de conhecimentos sobre gerenciamento de projetos contidos no PMBOK pode auxiliar nestas tarefas.

O artigo está organizado em 11 seções. Na primeira, esta introdução. A seção 2 descreve o conceito de uma Fábrica de Software. A seção 3 relata sobre os processos mais utilizados. Na seção 4 estão descritos os recursos humanos necessários. A seção 5 contém informações sobre o planejamento e gerenciamento.

A seção 6 mostra alguns fatores de sucesso. A seção 7 relaciona uma série de ferramentas de apoio utilizadas. Na seção 8 serão apresentados alguns aspectos da qualidade. A seção 9 apontará riscos. A seção 10 apresenta as conclusões do trabalho e a seção 11, as referências bibliográficas.


Fábrica de software


O termo “Fábricas de Software” vem sendo abordado e estudado desde 1960 na procura de um modelo que atenda aos objetivos de minimizar os custos e aumentar a qualidade e produtividade na elaboração de produtos de software.

Dos textos pesquisados, várias definições foram encontradas com o objetivo de descrevê-las. Ficaremos com a concepção de Fernandes[4], que assim as definiu:

“Um processo estruturado, controlado e melhorado de forma contínua, considerando abordagens de engenharia industrial, orientado para o atendimento a múltiplas demandas de natureza e escopo distintas, visando à geração de produtos de software, conforme os requerimentos documentados dos usuários e/ou cliente, da forma mais produtiva e econômica possível”.

Segundo o PMBOK, projeto é um empreendimento realizado para criar um produto ou serviço único. O projeto se caracteriza por temporalidade e resultado, serviço ou produto único e elaboração progressiva. Esta definição representa perfeitamente o produto de uma Fábrica de Software.

Fábricas de Software podem ser constituídas como núcleos de desenvolvimento dentro de uma grande empresa ou formadas independentemente como uma empresa especializada. Quanto ao desenvolvimento dos produtos, este pode ser centralizado ou remoto. O primeiro, facilita a comunicação e possibilita uma visão geral dos projetos por parte de toda equipe.

O segundo, facilitado principalmente pelos avanços tecnológicos e pelo grau de modularidade de definição do trabalho, pode ser constituído por equipes remotas ou disperso, com desenvolvedores isolados cumprindo as tarefas determinadas pelo gerente de projetos.

Em seu escopo, é aconselhável que sejam previstos requisitos [3] como os descritos a seguir:

Definir os perfis funcionais e as respectivas atividades a serem desempenhadas; Definir a Metodologia de desenvolvimento de software a ser utilizada, artefatos e métricas; Definir um plano de processos contendo a descrição das atividades, relacionando-as com os artefatos e perfis funcionais responsáveis por sua execução; Definir ferramentas de apoio necessárias.

Outros ainda, são considerados básicos para Fernandes [4]:

Processo definido e padrão; esquema de interação controlada com o cliente; padronização das solicitações de serviço à fábrica; estimativas de custos e prazos baseadas no conhecimento real da capacidade produtiva com métodos de obtenção baseados em dados históricos; estabelecer métodos para controle rigoroso dos recursos envolvidos em cada demanda da fábrica; definir bibliotecas para controle e armazenamento de itens de software; definir esquema para controle de situações e execução de todas as demandas; equipe treinada e capacitada nos processos organizacionais e produtivos; planejamento do controle da qualidade do produto; estabelecimento de processos para atendimento ao cliente; definição de métricas e controle para acordos de nível de serviço a serem definidos  com o cliente.

A seguir, um modelo de fábrica de software sugerido por Fernandes [4]:

FIGURA1


Sobre os Processos


As iniciativas de definição e padronização de processos para construção de software surgidas através do Software Enginnering Institute (SEI) da Universidade de Carnegie Mellon com a criação do CMMI, bem como a proposta brasileira de melhoria dos processos de software – MPS-BR, patrocinado pela SOFTEX (Sociedade Brasileira para Promoção da Exportação de Software), ambos com um bom nível de conformidade com as recomendações do PMBOK, tem contribuído no momento da escolha dos processos que melhor se adeqüem a uma fábrica desta natureza.

O Guia MPS-BR[2] define processo como “Um conjunto de atividades inter-relacionadas, que transforma entradas em saídas” e o PMBOK[1], como um conjunto de ações e atividades inter-relacionadas realizadas para obter um conjunto especificado de produtos, resultados ou serviços.

O sucesso das atividades de um Fábrica de Software será alcançado a partir da adoção de processos que definam as tarefas, produtos e responsáveis pelo ciclo de vida do software.

Nos trabalhos pesquisados, um dos processos adotados mais citados foi o RUP (Rational Unified Process). Este processo permite que os custos e prazo sejam definidos no início do projeto. Oferece um framework de processos centralizado e é baseado em boas práticas de desenvolvimento.

Processos podem ser classificados como tradicionais (como o RUP supracitado), assim categorizados por possuírem, além das características já citadas, uma previsibilidade dos requisitos do sistema. Nesse tipo de processo, a especificação de requisitos é uma etapa importante e sua  tônica consiste em um planejamento detalhado com fases seqüenciais e  geração de artefatos para alimentar a fase seguinte. São empregados principalmente nas fábricas de projeto e outsourcing. 

Outro tipo é chamado processo ágil ou leve. Esses processos possuem o foco na eficiência, sendo menos rigorosos que os processos tradicionais. Pregam uma constante reavaliação dos requisitos levando a planejamentos constantes. Seu foco principal é a codificação. Exemplos desta linha de processos são encontrados no XP (Extreming Programming) e o SCRUM. São indicados para fábricas de código e de componentes.


Recursos humanos


O PMBOK recomenda que os recursos humanos sejam planejados e bem treinados para as tarefas para as quais estiverem alocados e alinhados ao tipo de demanda no que diz respeito à natureza e complexidade do trabalho. O seu controle deverá ser realizado conforme a alocação, disponibilidade e necessidade futura.

A descrição de uma possível equipe funcional requerida para uma fábrica de software e suas respectivas atividades é encontrada em [3]:

Gerente de Negócios: prospecção do mercado e venda dos serviços; Gerente de Projeto: gerenciamento dos riscos, das atividades em desenvolvimento, dimensionamento e alocação  de recursos, interação com o cliente e o gerente de negócios; Analista de Sistemas: Levantamento de requisitos, análise, definição da arquitetura e documentação do sistema a ser desenvolvido; Analista de Qualidade: revisão dos artefatos gerados, controle de mudanças,  definição e validação da qualidade e acurácia do processo utilizado; Engenheiro de Software: Implementação do sistema conforme as especificações e documentação, seguindo o processo de desenvolvimento definido; Engenheiro de Software: desenvolvimento, validação e execução de testes de software visando assegurar a qualidade e acurácia do software produzido; Líder de Equipe: Coordenação e atribuição de tarefas dentro de um grupo específico, relatando periodicamente ao gerente de projetos o andamento das atividades.


Planejamento e Gerenciamento


É recomendada a utilização de um profissional que se ocupe exclusivamente o cargo de gerente do projeto, atuando fortemente na interface com o cliente tanto no recebimento das demandas quanto na entrega dos produtos.

Processos de iniciação, planejamento, execução, monitoramento e controle, e encerramento – recomendados pelo PMBOK[1] – devem ser integrados e aplicados pelo gerente de projeto procurando identificar as necessidades; estabelecer objetivos; balancear demandas de qualidade, escopo, tempo e custo além de adaptar especificações e planos às necessidades das diversas partes interessadas.

Desta forma, cada fase do projeto deverá ser cuidadosamente planejada de acordo com as orientações contidas na metodologia de desenvolvimento adotada. O gerente ainda deverá atuar em uma série de fatores visando garantir um produto final coerente com requisitos estabelecidos e de sua qualidade, procurando seguir métodos e padrões de estimativas baseados em históricos; estabelecer tempos padrões de atendimento de acordo com a tecnologia, tamanho e domínio da demanda; manter o controle da situação das múltiplas demandas com possibilidade de rastreamento da execução de cada uma delas; possuir mecanismos de apuração, apropriação e controle de custos e absoluto controle sobre os níveis de serviço.


Fatores de sucesso


No material pesquisado, foram encontrados diversos fatores que podem conduzir uma fábrica de software ao sucesso esperado [6], [8].  

Adoção de processos de desenvolvimento que definam as tarefas, definição de produtos e responsáveis pelas etapas do ciclo de vida do software, uma boa comunicação com o cliente e entre os membros da equipe, prever mecanismos visando assegurar demanda contínua fazendo uso do máximo possível da capacidade, prever mecanismos de controle e melhoria contínua dos processos, gestão do conhecimento, adequada alocação de perfis, utilização de bibliotecas para reutilização de código e componentes, treinamento adequado para cada perfil (mão de obra qualificada).   


Ferramentas de apoio


Para o desenvolvimento das tarefas pertinentes a uma fábrica de software, é recomendada a utilização de ferramentas para garantir uma maior produtividade e suporte à comunicação com o cliente, como as descritas a seguir [3]:

Ferramentas de desenvolvimento e modelagem; Ferramentas para relatar bugs durante o desenvolvimento; Ferramentas de gerenciamento de projetos; Ferramentas para comunicação entre os participantes e disseminação do conhecimento como o instant messaging (MSN, ICQ); Ferramentas para controle de versão, possibilitando uma melhor organização de documentos e atividades distribuídas; Sistema Gerenciador de Banco de Dados.


Qualidade


Conforme orienta o PMBOK[1], a qualidade dos produtos desenvolvidos deverá ser planejada, garantida e controlada. Isto poderá ser alcançado com a adoção de processos adequados e padronizados como os encontrados no CMMI e MPS-BR.

Segundo descrito no guia MPS-BR, a qualidade do produto irá depender da qualidade do processo, devendo a garantia da qualidade contemplar tanto a gerência do projeto quanto a construção dos produtos de trabalho.

Para tanto é aconselhável avaliar objetivamente os processos executados, produtos de trabalho e serviços em relação à descrição dos processos, padrões e procedimentos; identificar e documentar itens de não-conformidades; manter informados gerentes e equipe do projeto sobre as atividades relativas à garantia da qualidade e assegurar que as não conformidades serão corrigidas.


Riscos


Diante de um mercado fornecedor extremamente dinâmico e consumidores cada vez mais exigentes quanto a prazos, custos e qualidade o maior risco que corre uma empresa Fabricante de software é ver malogrado o seu negócio por negligenciar recomendações que são fundamentais para se adquirir um bom nível de competitividade.

No processo de estruturação de uma fábrica de software, os riscos devem ter seu gerenciamento bem planejado e depois de identificados, definidas ações de prevenção ou redução da probabilidade de sua ocorrência. 

Neste contexto, poderia ser considerado como risco, o não cumprimento de qualquer um dos requisitos abaixo:

Emprego de processos adequados ao negócio; Recursos bem treinados e corretamente alocados às tarefas; Adoção de processos que conduzam a uma boa estimativa de prazos e custos; Adoção de biblioteca para armazenar itens de software visando sua adequada reutilização; Controle de qualidade; Métricas bem definidas; Mecanismos definidos para uma boa comunicação com o cliente e entre membros da equipe; Aquisição de boas ferramentas de apoio para acompanhamento e controle dos processos e automação do desenvolvimento.

É importante ressaltar ainda a necessidade de uma visão holística envolvendo todos os fatores acima citados. Embora o termo Fábrica de Software possa remeter à idéia das fábricas tradicionais, uma está bem distante da outra em termos de operação. Enquanto nas fábricas clássicas as pessoas atuam em tarefas pré-determinadas e repetitivas, cada produto de software criado é único, sendo normalmente reutilizados apenas alguns componentes ou fragmentos de código, fato que exige atenção redobrada no controle da produção.  


Conclusão


Este artigo apresentou aspectos gerais de uma fábrica de software, mostrando seu conceito, principais requisitos para sua concepção e como os processos recomendados pelo guia PMBOK[1] podem auxiliar nesta tarefa. Foram ainda abordados os tipos de processos mais utilizados na produção e como estes podem diferir dependendo do tipo de foco da fábrica e descritos resumidamente alguns tópicos referentes às áreas de conhecimento do PMBOK[1], como escopo, recursos humanos, qualidade e riscos.

Com a crescente demanda por serviços de desenvolvimento de sistemas, as Fábricas de Software se apresentam com modelos de estruturação fortemente coesos, cujos processos de produção podem e devem se apoiar no conjunto de conhecimentos em gerenciamento de projetos oferecido pelo PMBOK[1], possibilitando um grau de evolução elevado o bastante para se firmar como uma alternativa de solução viável aos anseios de prazo, custo e qualidade requeridos pelo mercado consumidor.


Referências


[1] GUIA PMBOK, Um Guia do Conjunto de Conhecimentos em Gerenciamento de Projetos - Terceira edição 2004 Project Management Institute, Four Campus Boulevard, Newtown Square, PA 19073-3299 EUA

[2] SOFTEX. MPS-BR – Melhoria do Processo de Software Brasileiro – Guia Geral. Maio/ 2006.

[3] MEDEIROS, V. N.; ANDRADE C.A.R.; ALMEIDA, E. S.; ALCUQUERQUE, J.; MEIRA S. Construindo uma fábrica de Software: da Concepção às Lições Aprendidas. Centro de Informática da Universidade Federal de Pernambuco.Disponível em: http://www.cin.ufpe.br/~in953/publications/papers

[4] FERNANDES, A. A, Teixeira, D.S. (2004). Fábrica de Software: Implantação e gestão de Operações, Atlas, São Paulo.

[5] FERNANDES, A. A, Teixeira. Afinal, o que é uma Fábrica de Software? SPIN São Paulo.Disponível em: http://www.spinsp.com/Fábrica.pdf, 2005b

[6] ROCHA, t.a; OLIVEIRA, S.R.B.; VASCONCELOS, A.M.L.Adequação de Processos para Fábricas de Software. VI Simpósio Internacional de Melhoria de Processos de Software. Disponível em : http://www.simpros.com.br/Apresentacoes_PDF/Artigos/Art_12_Simpros2004.pdf

[7] NOMURA, LUZIA; SPINOLA M.M.; HIKAGE, OSVALDO; TONINI A.C. FS-MDP: Um Modelo de Definição de Processos de Fábrica de Software. XXVI ENEGEP – Fortaleza, 2006. Disponível em: http://www.abepro.org.br/biblioteca/ENEGEP2006_TR450304_7257.pdf

[8] CARVALHO, T.A R. Fábricas de Software – Momentos de Reflexão. Apresentação de Pesquisa. Disponível em: http://www.cin.ufpe.br/~in953/lectures/slides/FábricasSoftware.pps.

[9] GREENFIELD J., SHORT K. (2003). Software Factories – Assembling Applications with Patterns, Models, Framworks and Tools, OOPSLA’03, ACM, California.

 

Indique este artigo a um amigo

Indique o artigo