Intermediário 1 - Componentes e Outras Indústrias: Qual a relação?

Descubra a relação entre o desenvolvimento baseado em componentes com as outras indústrias que, na verdade, forneceram inspiração para as principais idéias dessa área da engenharia de software.
04-Oct-2007 12:29 GMT

Um dos maiores desafios da indústria de software é conseguir montar software da mesma forma que outras indústrias fabricam seus produtos. Muitas dessas idéias existentes em outros ramos de produção foram trazidas para a Engenharia de Software Baseada em Componentes (ESBC) como uma proposta para alcançar melhores resultados em termos de qualidade, produtividade e flexibilidade.

Considerando essa relação entre componentes e outras indústrias, podemos fazer uma analogia para compreender melhor as principais propostas definidas pela ESBC. Um bom exemplo para esse caso é a indústria de carros, que já possui mais de um século de existência. Não sei se você já percebeu, mas quando observamos as características dessa indústria, podemos destacar três diferentes tipos de produção:

  • Carros Básicos: Carros produzidos como bens de massa, onde as pessoas têm a possibilidade de escolher, para cada modelo, entre um certo conjunto de cores, potência, assessórios, etc.
  • Carros Especiais: Carros produzidos por departamentos especiais das fábricas e normalmente não levam muito em conta o custo de produção. Como exemplo, podemos citar algumas edições da Ferrari (F40, Enzo, etc) ou outros similares.
  • Carros Tunados ou Hot Rods: Carros produzidos como obra de arte, onde a grande maioria das peças é fabricada para um único projeto. A pintura e os detalhes são sempre únicos e seguem o estilo dos seus idealizadores.

Os três tipos de produção oferecem ao clientes uma escolha (básico, especial ou Hot Rod) com diferentes equações de custo-benefício. A diferença principal entre as formas de produção está na origem das peças que são usadas para montar os carros. No primeiro tipo, as peças são produzidas em massa e seguem uma especificação que atende a um ou mais modelos. No segundo tipo, as peças são mais específicas e seguem padrões mais rigorosos por questão de desempenho e outros requisitos técnicos. No último tipo, as peças são fabricadas uma a uma e normalmente causam a maior parte dos atrasos na construção, já que cada carro tem um projeto diferente.

Essas diferentes experiências foram estudadas pela área de engenharia de software, que destacou os seguintes princípios como sendo os de maior importância para as indústrias maduras:

  • Montagem: O processo de manufatura é baseado na montagem do produto através de partes previamente fabricadas, onde a escolha das peças leva em conta os desejos do usuário, os quais precisam estar dentro de um conjunto predefinido de possibilidades.
  • Mercado: A presença de um mercado que venda partes do produto é fundamental. As especificações e arquiteturas de cada parte precisam ser conhecidas, porém a qualidade e o custo podem variar para cada fabricante.
  • Substituição: Quando uma parte apresenta problemas, deve ser possível substituí-la por outra de mesma especificação. Isso muitas vezes é mais fácil e mais barato do que tentar consertar a peça defeituosa. Um exemplo disso é a substituição da placa-mãe do computador que, quando quebra, é mais vantajoso e rápido comprar outra do que tentar consertar.

Essas três características, quando observadas pelo ponto de vista dos componentes de software, aproveitam esse conhecimento e maturidade da seguinte forma:

  • Montagem: a existência de componentes inter-conectáveis é o primeiro fator a ser considerado para a montagem de software. Cada componente deve possuir um conjunto de características próprias e deve atender a um conjunto de requisitos funcionais. A criação de catálogos de componentes e soluções pré-montadas são opções certas para essas idéias.
  • Mercado: a presença de um mercado exige padrões tanto para os componentes quanto para as interações entre eles. Além disso, as especificações dos componentes precisam estar disponíveis publicamente, permitindo que fabricantes possam desenvolver e testar cada parte de forma independente.
  • Substituição: para que componentes possam ser substituídos, deve ser possível identificar aqueles que estão causando problema em um sistema e substituí-los por uma versão mais nova ou equivalente de outro fabricante. Isso exige mecanismos para provar que dois componentes fornecem a mesma funcionalidade e são compatíveis com o restante do sistema no que diz respeito a interações, requisitos não-funcionais e estados internos.

Essa análise sobre as características de uma indústria madura e suas influências sobre o desenvolvimento de software é um passo fundamental para que você inicie seus estudos sobre:

  • O que é um componente?
  • O que são modelos de componentes?
  • O que são frameworks e por quê precisamos deles?
Em breve teremos mais artigos sobre cada uma dessas perguntas.

Comments

Total: 0 comments

Name

Enter your full name.

Your Comment

Please keep your comment relevant to the subject of the story.
HTML tags are not allowed. Use [b] and [/b] for bold text.
67 + 3 =