Nossa visão
por Juan J. Hierro, Telefónica I+D
Introdução
Tal qual afirma Gary Hamel, reconhecido guru na área de inovação de conceitos empresariais, “Aqueles que querem ser revolucionários, desejosos de encontrar espaços competitivos não explorados, pensam no futuro de forma muito distinta aos prognosticadores e planificadores de cenários. Sua meta é menos entender o futuro e mais entender o presságio revolucionário no que já está mudando. Concretamente, buscam coisas em que o ritmo de mudanças esteja se transformando: buscam pontos de inflexão que anunciem descontinuidades significativas. Aqueles que não logrem dar-se conta destas descontinuidades nascentes serão despertados bruscamente por aqueles que estiveram atentos”.
Na área de TI, o fenômeno do software livre, também denominado software de código aberto (ou de fonte aberta), constitui sem duvida alguma uma das descontinuidades mais significativas. Em termos muito formais, software livre é o termo com o qual se denomina programas que concedem a seus usuários a liberdade de executá-los para qualquer propósito, estudá-los e modificá-los, assim como distribuí-los em sua forma original ou modificada, podendo realizar tudo isso sem ter que pagar por ele. Dados extraídos do documento ‘Why Open Source Software / Free Software (OSS/FS)? Look at the Numbers!’1 ressaltam a presença predominante de aplicações baseadas em software de código aberto no domínio dos servidores web na internet, assim como o rápido incremento do sistema operacional GNU/Linux dentro dos sistemas operacionais utilizados em servidores dentro dos ambientes acadêmico, empresarial e industrial. Analisados por categorias, a presença de software de código aberto é majoritária em servidores Web (Apache), de e-mail (Sendmail), de direcionamento de equipamentos (DNS), em linguagens de script para soluções Web (PHP) e em ferramentas de administração que contemplem segurança (OpenSSH). Em categorias fundamentais como nos sistemas operacionais para servidores (GNU/Linux) e os sistemas de gestão de base de dados (MySQL) o crescimento resulta espetacular, ocupando um destacado segundo e terceiro lugar em participação do mercado, respectivamente. Na Espanha também se confirma essa tendência, tal qual se destaca no documento “Libro Blanco Del Software Libre en España 2004 2. Hoje em dia, firmas de consultoria estratégica, tão relevantes como o Gartner Group fazem eco da liderança alcançada pelo software de código aberto e antecipam um uso crescente deste tipo de software na área dos sistemas de informação empresariais3
No lado do usuário final, a diferença de participação do mercado entre o sistema operacional GNU/Linux e o sistemas operacionais da Microsoft é ainda muito grande, ainda que os avanços quanto à usabilidade e funcionalidade fazem com que o GNU/Linux comece a apresentar-se como alternativa real na área de definição do posto de trabalho nas empresas ou como alternativa de ambientes desktop em clientes residenciais. No entanto, mais relevante é o incremento no uso que estão experimentando ferramentas e produtos de software de código aberto que não somente estão disponíveis para ambientes desktop baseados em GNU/Linux, mas também para ambientes baseados em sistemas operacionais da Microsoft como são os navegadores (com Mozilla Firefox à frente, que alcançou 10% de participação no mercado de navegadores web), as ferramentas de clientes de e-mail (Mozilla Thunderbird), as suítes de escritório (OpenOffice) ou as ferramentas P2P (com ferramentas como eMule). Por outro lado, a notável redução de custos totais de aquisição (TCO – Total Cost of Ownership) que implica na escolha de software de código aberto na estação do usuário final, quando se contempla a implantação em grande escala, está sendo aproveitada pela administração publica em numerosos paises no desenvolvimento de estratégias de alfabetização digital. Neste ponto, cabe destacar as iniciativas impulsionadas por certas administrações publicas na Espanha que resultaram na criação e divulgação de distribuições baseadas em Debian, direcionadas ao cidadão e a centros de ensino (LinEx na Extremadura, Guadalinex na Andalucía, MoLinux em Castilla la Mancha, etc.)
No presente documento se analisa as oportunidades que, em volta do desenvolvimento de software de código aberto, estão sendo exploradas na comunidade Morfeo. Sublinhamos que estas oportunidades se concentram ao redor de desenvolver software sob um modelo de código aberto. Não contemplamos aqui a analise das oportunidades ou benefícios que se derivam de usar software de código aberto desenvolvido por terceiros.
As oportunidades em volta do software de código aberto que se analisaram são:
- Consolidação de padrões.
- Criação de novas oportunidades em integração de soluções.
- Impulso ao desenvolvimento de atividades de Pesquisa e Desenvolvimento (P&D).
Consolidação de Padrões
O conceito de Plataforma de Software é um conceito que tem evoluído ao longo da história, proporcionando em cada momento uma abstração cada vez maior das capacidades sobre as quais qualquer aplicação de software se apóia, seja na área dos sistemas de informação ou na área dos serviços de telecomunicações. Estas capacidades são:
- capacidade de processamento: a plataforma proporcionará um modelo que estabeleça quem entidades compõem uma aplicação e como se gerencia seu ciclo de vida (criação, inicio/ativação, execução, parada/desativação e destruição).
- capacidade de armazenamento: a plataforma proporcionará um modelo que estabeleça como guardar, recuperar e administrar dados que representem os estados das entidades da aplicação ou que estas entidades devam manipular.
- capacidade de conectividade: a plataforma proporcionará um modelo que estabeleça tanto a forma de localizar entidades da aplicação em um ambiente distribuído, como a forma em que estas entidades podem comunicar-se e cooperar com o objetivo de implementar a funcionalidade da aplicação.
- capacidade de interação com o usuário final: a plataforma proporcionará um modelo que estabeleça canais de acesso à funcionalidade da aplicação por parte do usuário através de distintos tipos de terminais.
Além de componentes que abstraiam uma ou varias das capacidades que acabamos de mencionar, o conceito de Plataforma de Software também engloba aqueles componentes de aplicação que podem reutilizar-se de uma aplicação para outra. Nesse sentido, o conceito de Plataforma de Software está fortemente relacionado com o conceito de reutilização de componentes no desenvolvimento de sistemas.
Como se indicou anteriormente, o conceito de Plataforma de Software é um conceito em constante evolução. Novos componentes se incorporam à plataforma oferecendo um maior nível de abstração com relação às capacidades antes mencionadas, apoiando-se na funcionalidade de componentes já existentes. Assim mesmo, a fronteira entre plataforma e aplicação está em constante redefinição, sobre tudo na área de plataformas especificas associadas a determinados sistemas de informação ou serviços, na medida em que surgem novos componentes de aplicação reutilizáveis que resolvam parte da funcionalidade final das aplicações.
Quando falamos de componentes de plataforma é possível distinguir entre componentes de propósito gerais, que constituem o que denominaríamos Plataforma de Software Básica e componentes orientados a tipos de aplicação concretos, que constituem plataformas verticais (especificas) tanto na área de sistemas de informação como na área dos serviços de telecomunicações. A Plataforma de Software Básica inclui componentes que vão desde o sistema operacional que proporciona capacidades básicas de processamento, armazenamento, conectividade e interação com o usuário sobre o hardware subjacente, até componentes situados no nível de aplicação (um módulo de gestão de usuários, por exemplo), passando por níveis intermediários onde se inscreveriam componentes relacionados com middleware, base de dados, etc. Sobre a Plataforma de Software básica, as plataformas verticais incorporam componentes ligados a uma área de aplicação determinada, como pode ser o associado a Serviços de Gestão de conteúdo ou Sistema de Gestão de Forças de Trabalho (ver Figura 1). Neste espaço, muitos dos componentes estão orientados a resolver parte da funcionalidade final do sistema e incluso proporcionam, pré-fabricada, a parte correspondente a interface do usuário final. Por isso, esse tipo de componentes recebe a denominação de micro aplicações em alguns contextos. O objetivo das plataformas verticais é facilitar a construção rápida de aplicações, fruto da junção dos componentes (micro aplicações) proporcionados como parte da plataforma, para posteriormente abordar um esforço de adaptação e configuração das necessidades de um cliente ou contexto de uso concreto. Assim, a construção de um sistema de gestão de forças de trabalho pode propor-se como a junção de micro aplicações padrão que forma parte de uma plataforma vertical que resolvem a funcionalidade final associada aos distintos módulos que compõem um sistema deste tipo: Módulo de Despacho, Módulo de Gestão de Recursos Humanos e Materiais, Módulo de Informes e Seguimento de Indicadores, etc.
O desenvolvimento de aplicações se baseia no uso de interfaces de programação (APIs – Application Programming Interfaces) que oferecem um ou mais componentes da plataforma. O objetivo final de qualquer plataforma é facilitar a construção de aplicações, minimizando prazos e custos de desenvolvimento, assim como proporcionar um ambiente de execução robusto e eficiente, de forma que se minimizem os custos de exploração. Em contrapartida, a dependência de qualquer aplicação com relação à plataforma sobre a qual se baseia é elevada. Por isso, as decisões no âmbito das plataformas, são decisões de caráter estratégico.










