Screenshot Preview

O que são componentes?

Uma explicação sobre componentes de software - os tijolos do software - uma exploração de desenvolvimento baseado em componentes (CBD), componentes de caixa preta, componentes de mercado aberto e serviços da Web.

Segundo o dicionário Houaiss, a palavra Componente é definida como:

1: que ou o que compõe ou ajuda na composição de algo; que ou o que é parte constituinte de um sistema Veja Ingrediente

Eles falam sobre a etimologia da palavra componente: Componente em latin-, componens, particípio presente de componere para juntar.

Esta definição é adequada a Componentes de software porque eles estão realmente se tornando os "ingredientes dos aplicativos", e você "junta" esses ingredientes para realizar seu trabalho. Outra definição para um componente de software atualmente é qualquer parte de código pré-escrito que defina interfaces que podem ser chamadas para fornecer a funcionalidade encapsulada pelo componente. Normalmente, essas interfaces são empacotadas em formatos "padrão do setor" para que várias linguagens ou vários ambientes possam chamá-las. Normalmente, os componentes são criados como componentes Microsoft® .NET ou Microsoft Component Object Model™ (COM), componentes Java™ 2 Platform Enterprise Edition (J2EE) ou JavaBeans™, Borland Delphi™ VCLs, ou como um número de outras arquiteturas menos conhecidas. Os componentes baseados em .NET/COM e J2EE/Java são os mais usados, porque existe um grande número de programadores que usam esses ambientes compatíveis para programação. O novo paradigma de montar componentes e escrever código para fazer esses componentes funcionarem tem um nome e, obviamente, um acrônimo, CBD (Component-Based Development - Desenvolvimento baseado em componentes).

CBD (Component-Based Development)

CBD é realmente a ideia de criar aplicativos de software usando componentes. O desenvolvedor, durante a fase de design e especificação, usa componentes desenvolvidos internamente e componentes de mercado aberto, a fim de fornecer o máximo de funcionalidade possível a seus aplicativos. Depois, os desenvolvedores escrevem os componentes adicionais necessários e o código de ligação (glue code) que junta todos os componentes. Eles podem colocar os novos componentes que criaram em um repositório de uma empresa para que outras pessoas possam usar a funcionalidade que criaram. Isto pode ajudar na reutilização de software, o que pode reduzir os custos de desenvolvimento. Por exemplo, se um programador criar um componente para acessar um cliente em um banco de dados corporativo, nenhum outro programador terá que escrever tal funcionalidade novamente. Eles podem encontrar aquele componente de Cliente em seu repositório e usá-lo em seus aplicativos para obter essa funcionalidade.

Componentes de caixa preta e caixa branca

Existem duas categorias principais de componentes: componentes de caixa branca e componentes de caixa preta. Os componentes de caixa branca são código-fonte. Eles são legíveis e diretamente alteráveis pelos programadores que os utilizam. Os componentes de caixa preta estão normalmente no formato compilado ou binário. Eles são componentes discretos que não podem ser diretamente alterados. Todos os programadores conhecem esses componentes e a documentação que descreve sua funcionalidade, bem como suas interfaces publicadas "publicamente conhecidas". Essas interfaces podem incluir propriedades (ou atributos) que podem ser exibidas, ou novos valores podem ser colocados nelas. Em segundo lugar, Métodos, que permitem que um componente execute uma ação previamente descrita. Finalmente, Eventos, que avisam quando o componente deseja notificar ao programador a ocorrência de uma ação. Os benefícios de usar componentes de caixa preta são maiores que os benefícios de usar componentes de caixa branca. Os componentes de caixa preta não podem ser diretamente modificados por um programador. Eles estendem a funcionalidade criando um novo componente "wrapper" para empacotar e estender o componente existente. Isto mantém a funcionalidade original intacta, para que as atualizações, correções de bugs, etc. feitas pelo desenvolvedor original possam ser implementadas. Se você começasse a alterar a fonte de um componente de caixa branca, teria um novo fluxo de fonte, e os bugs antigos não seriam corrigidos e propagados em novas instâncias de componentes.

Componentes de mercado aberto

No início dos anos 90, surgiu um novo tipo de componente. Esses eram os componentes comercialmente disponíveis que podiam ser comprados. A ComponentSource inventou um novo termo para descrever esses tipos de componentes: componentes de mercado aberto. Os componentes de mercado aberto são reutilizáveis e disponíveis para comprar e usar. Os componentes são baseados em arquitetura de componentes padrão, como COM ou Java, e você pode comprar esses componentes sem ter que comprar suporte, integração ou outros tipos de serviços. Eles são componentes verdadeiramente plug-n-play. Eu tive o prazer de trabalhar no primeiro componente de mercado aberto comercial em 1991. Chama-se VBTools™ da empresa MicroHelp. Ele era baseado no modelo de componente do Microsoft Visual Basic™ (ou VBXs). Esse modelo evoluiu para componentes baseados em COM (OCXs) e, hoje em dia, evoluiu para componentes .NET. Existe uma abundância de componentes de mercado aberto disponíveis, milhares no exato momento, para facilitar o trabalho de um programador e permitir que ele se concentre na programação de suas tarefas principais de sua competência implementando seus processos ou funcionalidades comerciais definidos pela corporação, em vez de terem que escrever todos os tipos de componentes ou rotinas para realizar ações comuns, como exibição de dados, gráficos, cálculos, algoritmos e muitas outras que estão disponíveis no mercado aberto. Explore nosso marketplace e terá uma ideia do que eu estou falando. Reutilização está se tornando uma realidade porque você é capaz de reutilizar componentes de mercado aberto, o que é realmente apenas código que alguém já escreveu, testou e documentou.

Serviços da Web

Serviços da Web são uma proposta de extensão natural futura de um ambiente de componentes distribuídos, onde a rede de área local se torna a Internet. Em vez de os componentes de um aplicativo ficarem armazenados em um servidor, em algum lugar na rede, eles poderiam ficar armazenados em algum lugar na Web. Os serviços da Web são, efetivamente, o equivalente de componente de uma solução hospedada. Em vez de hospedar um aplicativo completo, você pode simplesmente ter componentes individuais hospedados. Isto oferece simplicidade atrativa no que diz respeito a implantação, administração e licenciamento.

Desde junho de 2000, os grandes fornecedores de plataformas anunciaram suas propostas aqui, notavelmente .NET da Microsoft, Sun ONE da Sun, eServices da HP, eSpeak da Oracle e software Websphere da IBM. Fornecimento completo dessas tecnologias, contudo, ainda levará um ano (na ocasião da criação deste artigo).

Tamanho é importante?

Granularidade tornou-se um novo termo falado pelos programadores que usam componentes. Granularidade é a palavra que descreve quanta funcionalidade é fornecida por um componente (ou conjunto de componentes) que funcionam juntos. Para um exemplo simplificado, um componente de granularidade baixa poderia oferecer a funcionalidade de adição de três números. É também pequeno e compacto com custo baixo e, muito provavelmente, pouco personalizável. Sua funcionalidade é muito discreta. Um componente de granularidade alta ofereceria uma parcela maior de funcionalidade. Esse pode ser uma biblioteca de acesso a arquivos, um componente de banco de dados ou uma funcionalidade "quase completa" baseada em estrutura, como um sistema CRM, ERP, Comércio eletrônico ou outro. Por exemplo, um componente de Comércio eletrônico pode oferecer 80% ou 90% da funcionalidade de um sistema de Comércio eletrônico completo, incluindo registro, carrinho de compras, serviços de catálogo, faturamento, correspondência etc. Ele pode ser acessado como um componente individual, mas na realidade ele é uma estrutura de componentes integrados para fornecer uma solução de granularidade alta.

Então, qual é a melhor: granularidade baixa ou alta. Ambas têm seus pontos positivos e negativos. Apesar de os componentes de granularidade alta poderem oferecer uma grande parcela de funcionalidade em seu aplicativo, normalmente eles não são tão personalizáveis quanto um conjunto de vários componentes de granularidade baixa. Normalmente, isto ocorre porque os componentes de granularidade baixa são discretos e você acaba escrevendo mais códigos de ligação que fazem esses componentes funcionarem juntos da maneira como você deseja. Ou seja, gastará mais tempo escrevendo códigos. Em um componente de granularidade alta, o código de ligação é escrito no interior do componente, e não tem como você personalizá-lo. Você pode definir as propriedades/atributos que o desenvolvedor da estrutura lhe permitir, para que possa personalizar o modo como a estrutura funciona.

Conclusão

Com o uso das técnicas de CBD, seu processo de desenvolvimento de aplicativos pode ser simplificado. Você pode usar, comprar e criar ativos reutilizáveis no formato de componentes e códigos. Isto levará o seu departamento de desenvolvimento para o século 21 da programação, um esforço realmente colaborativo que melhorará sua produtividade e trará todos os benefícios de reutilização, compartilhamento de códigos e, principalmente, tempo para levantar problemas referentes ao desenvolvimento de seus aplicativos.

Destaques:

  • O dicionário Houaiss define um componente como uma parte constituinte de um sistema; ingrediente
  • Caixa preta vs. caixa branca: Os componentes de caixa preta são reutilizáveis. Os componentes de caixa branca são basicamente código-fonte.
  • CBD é a ideia de criar aplicativos de software usando componentes. Isto pode ajudar a levar à reutilização de software, o que reduz o custo de desenvolvimento.
  • Os componentes de mercado aberto são reutilizáveis, comercialmente disponíveis e prontos para compra "na caixa." A ComponentSource inventou este termo para descrever esses tipos de componentes quando surgiram nos anos 90.
  • Serviços da Web são uma extensão futura de um ambiente de componentes distribuídos, onde a rede de área local se torna a Internet. Os serviços da Web são, efetivamente, o equivalente de componente de uma solução hospedada.