Definições de Componentes
- Seguem definições de Componentes que apareceram em várias fontes
- Cada uma oferece uma perspectiva particular
- A definição "oficial" dada numa conferência sobre Componentes em 1996:
- "Um componente é uma unidade de composição com interfaces especificadas
contratualmente e com dependências de contexto explícitas apenas Um componente de
software pode ser implantado [deployed] de forma independente e está sujeito à
composição por terceiros"
- Jed Harris, President of CI Labs
- "Um componente é um pedaço de software pequeno o suficiente para criar e manter,
grande o suficiente para implantar (deploy) e suportar e com interfaces padrão
para a interoperabilidade."
- Grady Booch, um dos "Três Amigos" da UML
- "Um componente é uma parte de um sistema que seja não trivial, quase-independente
e substituível que desempenha uma função clara... Pode ser usado para montar [assemble]
uma arquitetura [ou aplicação] bem definida ... Um componente obedece e provê a
realização física [implementação] de um conjunto de interfaces que especificam alguma
abstração lógica (i.e., comportamento do sistema)."
- Anne Thomas, analista do Patricia Seybold Group
- "Componentes são pedaços pré-desenvolvidos de código de aplicação que podem
ser montados em aplicações."
- Mary Kirtland, um programador no time da Microsoft que desenvolve COM dá duas
definições:
- "Quando falo de um componente, quero dizer um corpo de código que pode criar e
fornecer objetos de um tipo particular em tempo de execução.Usando esta definição, um
componente seria implementado como classe na maioria das linguagens modernas de
programação orientadas a objeto."
- "...unidade de código binário que cria objetos COM incluindo código de packaging,
código de registration, uma factory de classes, etc."
- Judith Hurwitz, Presidente e CEO de Hurwitz Group
- "Um objeto de granularidade grossa (relativamente a um objeto) é um
"pacote" de software que contém uma coleção de serviços relacionados e
atributos que abrangem a funcionalidade completa de algum problema do negócio."
- Desmond D'Souza, famoso pelo processo de desenvolvimento Catalysis oferece três
definições: uma para Component-Based Development, uma para componentes em geral e
uma para componentes de implementação
- Component-Based Development: "Uma forma de desenvolver software na qual todos os
artefatos - desde o código executável até as especificações de interfaces,
arquiteturas e modelos de negócios; e com escalas variando de aplicações e sistemas
completo até pequenas partes - podem ser construídos com montagem [assembly],
adaptação, "ligando" entre si componentes existentes numa variedade de
configurações."
- Componente geral: "Um pacote coerente de artefatos de software que pode ser
desenvolvido independentemente e entregue como unidade e que pode ser composto, sem
mudança, com outros componentes para construir algo maior."
- Componente de implementação: "Um pacote coerente de implementação de software
que (a) pode ser desenvolvido independentemente e entregue como unidade; (b) tem
interfaces explícitas e bem definidas para os serviços que oferece; (c) tem interfaces
explícitas e bem definidas para os serviços que requer; e (d) podem ser composto com
outros componentes, talvez após a customização de algumas propriedades mas sem
modificar os componentes em si."
- Clemens Szperski
- "Um componente é uma unidade independente de implantação, uma unidade de
composição por terceiros, e não tem estado persistente."
- Robert Orfali, Dan Harkey e Jeri Edwards, especialistas conhecidos sobre OOD e CBD
- Apareceu no livro "The Essential Distributed Objects Survival Guide (1996)"
- "Já que componentes significam coisas diferentes para pessoas diferentes,
definiremos as funções que um componente mínimo deve prover ... É uma entidade
marketeável ... Não é uma aplicação completa ... Pode ser usada em várias
combinações ... Tem uma interface bem definida ... É um objeto interoperável ... Em
suma, um componente é um pedaço de software reusável, auto-contido que é independente
de qualquer aplicação."
- Eles então descrevem componentes inteligentes ou super-componentes:
- "Segurança
Licenciamento... Controle de versão
Gerência de ciclo de
vida
Suporte para palhetas abertas de ferramentas
Notificação de eventos
Gerência de configuração e de propriedades
Scripting
Metadados e introspecção
Controle de transação e concorrência
Persistência
Relacionamentos
facilidade de uso
Auto-testes
Mensagens semânticas
Auto-instalável."