Componentes como negocio
Questões
A tendência ao uso de componentes ocorre realmente no mercado mundial e brasileiro?
Seria o mercado
de componentes uma janela de oportunidade para o Brasil, especialmente para pequenas e médias empresas?
Quais são as barreiras e motivações para introdução de uma estratégia nacional baseada na ESBC (Engenharia de Software Baseada em Componentes)?
Coclusões:
Constatação que o reuso de software e a intercambialidade
são as razões principais do desenvolvimento da ESBC, mas que, por outro lado, há
incertezas significativas quanto à ESBC vir a ser a principal tecnologia na trajetória de reuso.
Novas tecnologias e metodologias, como plataformas orientadas a serviços, Web Services e outras, ganham espaço como forças motrizes para aumento da produtividade, aproveitamento do legado etc. Não há forças, a não ser as próprias do mercado, que evitem o progresso de uma trajetória se ela estiver direcionada para ganhos de produtividade. Reuso e intercambiabilidade apontam para esta direção.
Dentro do mercado de componentes, os modelos de negócios indicados como mais promissores são aqueles da própria indústria de software e serviços, particularmente o de integrador, elo fundamental da cadeia de valor da indústria.
Sôbre o estudo:
O objetivo geral do estudo, realizado pela SOFTEX em parceria com o Departamento de Política Científica e
Tecnológica da Unicamp e com apoio do Ministério de Ciência e Tecnologia, foi avaliar as contribuições que a
ESBC pode trazer para Indústria Brasileira de Software e Serviços em termos de sua qualificação técnica e de sua
inserção econômica no mercado global de software e serviços relacionados.
Pespectivas sôbre o tema:
a) as possibilidades de impacto dessa tecnologia na organização e na competitividade da indústria de software
e serviços; e
b) o posicionamento das políticas de fomento para reuso.
Conceitos relativos a componentes:
“Um componente (em geral) é um pacote coerente de artefatos de software que pode ser independentemente
desenvolvido e distribuído como uma unidade, e que pode ser composto, sem alterações, com
outros componentes para construir algo maior”.
características básicas de componentes:
• componentes são intercambiáveis;
• componentes são reutilizáveis;
• alguns são de uso mais geral e outros têm uso mais específico; e
• componentes interagem com outros componentes.
Tecnologia de componentes de software:
refere-se a todas as tecnologias relacionadas ao desenvolvimento
e uso de componentes de software, ou seja, todas as ferramentas que auxiliam no projeto, construção,
combinação, configuração e customização final dos componentes ou aplicações construídas a partir de componentes,
bem como o ambiente para a execução dos componentes (framework).
Atividades ligadas a componentes:
1.desenvolvimento e produção dos componentes e
2.seu uso para desenvolvimento
e produção de programas.
Classificação de componentes de software:
• Componentes genéricos: são aqueles de uso comum em muitos sistemas, tais como os componentes
de interface com os usuários (GUI);
• Componentes de serviços: são componentes que fornecem serviços especializados, mas que não são
específicos do ponto de vista de domínio de aplicação, como componentes para tratamento de erros em
comunicação de dados, criptografia, segurança, geração de gráficos, etc.;
• Componentes de domínio: são componentes específicos para domínios definidos, que implementam
regras (de simples a complexas) de negócios, como por exemplo, regras do setor financeiro ou de construção
civil.a)
Passos para o desenvolvido através da
integração de diversos componentes existentes:a)Análise dos requisitos do cliente;
b) Especificação do sistema a ser desenvolvido;
c) Aprovação da especificação pelo cliente;
d) Busca e seleção dos componentes que serão utilizados;
e) Desenvolvimento das partes que não foram atendidas por componentes já existentes;
f) Integração;
g) Testes de integração; e
h) Implantação do sistema no cliente.
Mercado de componentes de software:
• Sob encomenda: desenvolve-se completamente o software, utilizando as ferramentas e bibliotecas
oferecidas pela linguagem de programação adotada;
• Pacote: compra-se um pacote de software pronto, configurável para atender a uma parcela razoável
dos requisitos do usuário.
Perfil do mercado e padrões de concorrência
Os principais agentes dessa
estrutura produtiva são:
• desenvolvedores de componentes de software: desenvolvedores de software focados na criação
de peças de software caracterizáveis como componentes;
• integradores: desenvolvedores de software que usam componentes em seus desenvolvimentos (os
componentes podem ser criados pelos próprios integradores ou adquiridos no mercado, do grupo acima);
• clientes/usuários de softwares baseados em componentes: que usam softwares para realizar suas
atividades de negócio. Os interesses dos usuários de softwares podem influenciar fortemente esse mercado,
na medida em que a flexibilidade dos sistemas permitir maior integração, estabilidade, segurança
e qualidade;
• intermediários (brokers): reúnem a oferta de componentes e apresentam aos potenciais clientes
(neste caso, os integradores citados acima) para venda, por exemplo, por e-commerce;
• avaliadores/certificadores de qualidade: que atestam as funcionalidades e avaliam a qualidade de
componentes de terceiros para que os clientes (integradores) tenham informações adequadas para escolha;
• fornecedores de ferramentas de desenvolvimento: para desenvolvimento de componentes
Caracterização
do mercado segunda a SEI-CMU (Bass et al, 2001)
1. Mercado de componentes individuais: desenvolvimento e comercialização de componentes individuais,
por unidade, na forma de mercado de varejo. Exemplos: componentes de interface gráfica e
componentes de serviços de média granularidade.
2. Mercado de linhas de produtos: desenvolvimento e comercialização de linhas (famílias) de componentes
na forma de mercado de varejo. Estas famílias constituem linhas completas de componentes dedicadas
a um mercado vertical (domínio), como comunicação ou setor financeiro (por exemplo, a suíte
de componentes de negócios voltada para aplicações financeiras).
3. Mercado de infra-estrutura: compreendendo o conjunto de padrões, plataformas e ferramentas de
apoio ao desenvolvimento baseado em componentes. Este item pode ser dividido em:
a) Padrões de infra-estrutura: envolvem organismos e empresas interessadas em promover e definir
os padrões que formarão a infra-estrutura do desenvolvimento baseado em componentes. Exemplos:
OMG (Corba), Microsoft (COM, .NET) e Sun (EJB).
b) Plataformas e servidores de aplicação: a disponibilidade de plataformas e servidores de aplicações
(que implementam os padrões de infra-estrutura) são fundamentais em todos os ambientes em
que se deseja utilizar software baseado em componentes.
c) Mercado de ferramentas para componentes: envolvendo ferramentas para apoio ao desenvolvimento
baseado em componentes e ferramentas de gerenciamento de componentes.
4. Mercado de integração/consultoria: grandes conhecedores dos componentes, das plataformas e
ferramentas disponíveis, estes desenvolvedores podem construir aplicações de forma eficiente e rápida
para seus clientes, tornando este domínio sua vantagem competitiva. Também é o caso de fornecedores
que oferecem uma linha de componentes e têm seu modelo de negócio baseado no uso desta linha
juntamente com seu know-how para a construção de soluções.
5. Mercado de intermediação (brokerage): dedicados a oferecer uma área de compra-venda para
componentes de software desenvolvidos por terceiros, criando uma marca consolidada e facilidades
para busca e aquisição de componentes.
6. Mercado de certificação: que oferece aos consumidores de componentes garantias que os mesmos
atendem determinados padrões, efetivamente oferecem determinados serviços e/ou apresentam determinados
atributos de qualidade.
Adicionalmente, dada a realidade brasileira, pode-se acrescentar o seguinte modelo de negócio como
promissor dentro do setor no país:7
7. Treinamento/capacitação: A adoção da tecnologia de componentes pelas empresas exige profissionais
capacitados e estes recursos humanos não existem no Brasil, criando oportunidades para empresas
que forneçam cursos profissionalizantes na área, tanto para empresas quanto para pessoas físicas.
Cadeia de valor
Barreiras e riscos para a geração de componentes
• A Engenharia de Software Baseada em Componentes ainda não é de conhecimento (ou não está dentre
as práticas adotadas) da grande maioria das empresas desenvolvedoras.
• Falta de padrões estáveis para o desenvolvimento de componentes e de sistemas a partir de componentes.
• Há dificuldades para encontrar fornecedores e compradores de componentes (falta escala em ambas as
pontas).
• Há dificuldades para encontrar (ou operacionalizar) modelos de comercialização mais adequados do que
a venda de licenças.
• Alguns modelos de negócio citados são muito sofisticados (como o de certificação) para um mercado
ainda incipiente.
Trajetórias possíveis no longo prazo
• produção oligopolizada, global e coordenada, resultado da busca por produtividade e de ganhos de
escala (assumindo que a padronização dos componentes será crescente e haverá queda de preços nos
primórdios deste modelo de negócios); e
• produção atomizada, global e não coordenada, resultado da ação de desenvolvedores individuais, empresas
de pequeno e médio portes ou de comunidades de prática que colocam os componentes em
repositórios públicos ou privados.
Problemas em aberto
• Descrição de componentes: como descrever um componente (funcionalidades e restrições) para que
possa ser facilmente encontrado e utilizado? Por simples que pareça, ainda é algo que não está plenamente
estabelecido. Há necessidade de padronizações neste sentido, tanto para leitura/compreensão
humana quanto na definição de interfaces entre componentes. Esta é a tendência da padronização, cujo
grau, velocidade e direção não são bem conhecidos.
• Componentes confiáveis: como o processo de desenvolvimento do componente está fora do escopo de
influência do usuário do componente, a confiabilidade do componente é fonte de incertezas.
• Seleção de componentes e gerência de requisitos: como os componentes serão adquiridos externamente,
a seleção deste componente deve ser feita de forma cuidadosa. Provavelmente, os componentes não
atenderão a todos os requisitos necessários. Além disso, mesmo que o componente atenda perfeitamente
aos requisitos, ele pode não funcionar adequadamente quando combinado com outros componentes.
• Previsibilidade da composição: mesmo conhecendo todas as características de um componente, não há
garantia quanto ao resultado da combinação do mesmo com outros componentes no desenvolvimento
de um sistema. O aumento desta previsibilidade é uma tendência futura, mas ainda uma questão em
aberto para pesquisa.
• Certificação de componentes: certificação não garante a confiabilidade, mas é uma importante forma
de se classificar componentes e como tornar esta certificação mais eficaz é um problema a ser tratado.
• Responsabilidade por falhas: a natureza do software faz com que seja difícil separar a fonte de uma
determinada falha. Ainda há necessidade de criação de técnicas sólidas para identificar falhas geradas
por partes do sistema (componentes) ou causadas pela integração.
• Política de atualizações: quando um componente fica hospedado em um servidor e é utilizado por diversos
clientes, o upgrade do componente envolve algumas decisões, tais como, se duas versões diferentes
poderão coexistir, ou se o cliente é obrigado a utilizar sempre a última versão e se isto será feito no
momento do próximo uso.
• Riscos de mudança: dificuldade de analisar o impacto relativo à substituição de componentes.
• Modelos de negócio: a comercialização de um componente pode se dar de diversas formas. Valor fixo
com ou sem limitação de uso, cobrança por utilização (como consumo de luz e água) e diversas outras
têm surgido, trazendo, cada uma delas, uma série de complexidades técnicas para operacionalização.
Com a possibilidade de substituição de componentes com o sistema em produção, isto se torna ainda
mais difícil de equacionar.
• Suporte a longo prazo: software criado com componentes pode ficar em uso por um longo período
de tempo, mesmo quando sua tecnologia já esteja obsoleta. Desenvolvedores podem “descontinuar”
o suporte a determinados componentes em favor de componentes mais atuais (e, talvez, incompatíveis
com os componentes descontinuados). Depositar o código fonte em repositórios seguros pode ser uma
solução para este problema.
• Padrões dominantes: o surgimento de um padrão dominante geraria uma maior certeza em relação a
investimentos e poderia fazer com que a tecnologia se sedimentasse. É preciso dar tempo para que os
candidatos concorram e evoluam para que um deles se transforme em um padrão dominante.
• Suporte de ferramentas: a existência de ferramentas é essencial para o sucesso da ESBC (ferramentas de
seleção de componentes, de avaliação, repositórios, testes etc.).
• Propriedade intelectual: a combinação de componentes regidos por diferentes instrumentos de direitos
de propriedade (registro de software, patentes, software livre e de código aberto etc.) dificulta enormemente
a observação desses direitos por parte do desenvolvedor da solução e por parte do cliente.
Conclusões gerais sobre fatores de influência para a tomada de decisão, temos:
que os componentes
são vistos como um caminho para ganhos de produtividade e para ampliação de oportunidades de
negócios. O principal gargalo ainda é a incerteza sobre a maturidade da tecnologia em termos de
estandardização para interoperabilidade. Além dessa incerteza crítica, um gargalo importante a ser considerado é o da ausência de mão-de-obra qualificada no país.
Um gargalo adicional sugerido pelos grupos refere-se ao regime de propriedade intelectual, pois a gestão dos
direitos de propriedade é extremamente complexa e o quadro regulatório é incerto. Do lado de quem produz
há a dificuldade de rastreabilidade do componente. Já do lado de quem o usa, há complicações quanto à responsabilidade
jurídica, contaminação e pagamento de licenças, etc.
Modelo de negócio
Broker
Certificação
Família de componentes
Ferramentas
Integrador
Padrão infra-estrutura
Plataforma
Venda de componente
Critérios de avaliação
Complexidade tecnológica
Disponibilidade conhecimento
Exigência de capital (atual e futuro)
Nível de capacitação (Brasil e mundo)
Oportunidades de negócios em âmbito mundial (atual e futuro)
Oportunidades de negócios em âmbito nacional (atual e futuro)
Prioridade como política pública
Volume investimento (Brasil e mundo)
Dominios:
$ Finanças
GC1* Gestão de conhecimento
AE Automação de escritório
GIS Sistemas de Informação Geográfica (GIS)
AG1* Agronegócios
GM3* Entretenimento/jogos
AI Provisão de informação (agentes inteligentes)
GOV3* Governo eletrônico
BIL1* Billing
GR Gestão de recursos
BK Booking (reservas)
ON1* Suporte à operação de negócios
CAD Engenharia (CAD/CAM)
OS Sistema operacional
CASE Software de desenvolvimento
PA1* Geração de processos de automação
CC Informação ao cliente
PG Processamento gráfico
Com Comunicação
PT Processamento de transações
CP Controle de processo
SD Suporte à decisão
CV1* Comercial venda
SEG4* Segurança
D/L Distribuição/Logística
SIM Simulação
EAD2* Ensino à distância
SWD Software pessoal/coméstico
EN1* Energia
SWE Software embarcado
FT1* Gerência da força de trabalho
TL3* Telecom
De forma resumida, tem-se que os domínios mais importantes hoje e no futuro, são (por ordem decrescente
de prioridade):
1. Finanças;
2. Gestão de recursos;
3. Simulação;
4. Embarcado;
5. GIS;
6. Suporte à decisão;
7. Controle de processos;
8. Distitribuição e logística;
9. Comunicação;
10. Proc de transações;
11. Informação ao cliente; e
12. Provisão de informação.
Dimensões e incertezas
Cenário Vento em Popa:
ESBC é a trajetória principal de reuso e Brasil acompanha
Cenário Calmaria:
ESBC não avança significativamente
Cenário A Ver Navios:
ESBC avança, torna-se a trajetória dominante e Brasil fica de fora
Considerações a partir do exercício de cenários
• evolução dos modelos alternativos e complementares de reuso, como SOA;
• evolução do uso de componentes por integradores;
• crescimento dos brokers;
• evolução do ingresso de grandes empresas desenvolvedoras de software no comércio de componentes;
• evolução do número, do tamanho e dos acessos aos repositórios;
• componentização começar a fazer parte das discussões de propriedade intelectual em software e da
discussão dos padrões de interoperabilidade;
• evolução do ensino de componentização nos currículos de cursos de ciência e engenharia da computação;
• evolução do número de publicações sobre componentes na base Web of Science;
• evolução da certificação para componentes
Forças, fraquezas, oportunidades e ameaças (SWOT)
Pontos fortes
• Política nacional de software livre – especialmente porque alimenta a oferta de componentes livres;
• Competência instalada em ESBC aplicada aos domínios de finanças e gestão de recursos, tidas no Brasil
como de média alta intensidade de uso;
• Mercado interno de software de porte significativo, cerca de US$ 10 bi, e com poder de alavancagem da
cultura do reuso;
• Boa base acadêmica, dentre as maiores dos países em desenvolvimento;
• Política industrial (PITCE) voltada para software (e que inclui componentes).
Pontos fracos
• Falta de cultura de reuso – não houve preocupação na criação desta cultura com perdas de economias
de escala e escopo na indústria de software e serviços. Atualmente, os esforços neste sentido ainda são
incipientes;
• Falta de recursos humanos capacitados em número suficiente para crescimento do reuso, decorrência,
em parte, da própria falta de cultura;
• Limitação de recursos financeiros para investimento produtivo, principalmente investimento em tecnologia
(desenvolvimento e uso);
• Relativo atraso em intensidade de uso de componentes na maioria dos domínios de elevada oportunidade
em negócios;
• Baixa inserção do Brasil no mercado internacional de software e baixa probabilidade de exportação de
componentes brasileiros no curto e médio prazo;
• Ausência da participação do Brasil em fóruns de definição de padrões de mercado;
• Ausência de identidade/imagem do Brasil no exterior quanto à produção de software.
Oportunidades
• Percebem-se vantagens técnicas para desenvolvimento de software baseado em componentes, tais como
qualidade, manutenibilidade e confiabilidade;
• O reuso apresenta possibilidades de ganhos de produtividade, redução de prazo de entrega e de diversificação
de produtos e soluções;
• A componentização, se bem conduzida e associada a outros instrumentos (incentivos, etc.), pode representar
oportunidade de participação das empresas brasileiras no mercado internacional de software. A
participação poderá se dar via produção de componentes especializados para integradores e brokers que
já tenham acesso a este mercado;
• Oportunidades relacionadas à expansão do modelo de negócios “Integrador”;
• O uso de componentes pelas grandes e médias empresas traria uma maior diversificação dos produtos
e soluções ofertados, permitindo acesso a um maior numero de mercados.
Ameaças
• Perda de competitividade global pelo não aproveitamento das economias envolvidas no reuso;
• A tendência de curto prazo é de que não se comprem componentes brasileiros, pois carecem de confiança
e repercutem a ausência de imagem do país;
• A não aderência a padrões ligados a tecnologia de componentes impede a entrada nos mercados mundiais
com risco de perdas no próprio mercado interno;
• Existe a ameaça de aumento das importações de software (até de outros PEDs como China e Índia). Se
a ESBC deslanchar, corre-se o risco de o Brasil ter que importar componentes;
• Regime de propriedade intelectual é um inibidor da expansão da ESBC. Há um impasse legal e institucional
não resolvido;
• Falta de certificação específica para componentes dificulta a entrada no mercado internacional.
Considerações finais e recomendações
Chamadas públicas, encomendas (public procurement), aportes de capital, programas de estímulo devem motivar
a emergência de uma cultura em três pilares fundamentais:
• Tecnologias e estratégias voltadas à obtenção de ganhos de produtividade no desenvolvimento de programas
e soluções (componentização, web services e SOA);
• Tecnologias e estratégias voltadas à ampliação da capacidade de aproveitamento de ativos instalados
(sunk costs) (SOA, componentização, web services);
• Tecnologias e estratégias voltadas à ampliação da capacidade de diversificação de produtos e serviços
(componentização, web services e SOA).
Quantos aos repositórios de componentes:
• Repositórios públicos podem ter sucesso desde que com alimentação contínua e atualizada e com assistência
adequada aos serviços que oferece.
• Esses repositórios podem conter tanto componentes livres como proprietários e podem oferecer serviços
gratuitos e cobrados, dependendo da complexidade.
• As fontes de financiamento da continuidade e crescimento destes repositórios devem ser definidas ex ante.
clicar aqui para o artigo completo