Componentes de Software é o termo utilizado para descrever o elemento de software que encapsula uma série de funcionalidades. Um componente é uma unidade independente, que pode ser utilizado com outros componentes para formar um sistema mais complexo.

A OMG define componente como "uma parte modular, possível de ser implantada e substituível de um sistema que encapsula implementação e expõe um conjunto de interfaces".

Em programação orientada a objetos um componente é a classe que implementa uma interface e é autônomo em relação a outros componentes do sistema.

Um sistema de software pode ser formado inteiramente somente por componentes, pois estes se interligam através de suas interfaces. Este processo de comunicação entre componentes é denominado composição.

PS: um objeto não implementa uma interface; um objeto é a instância de uma classe que implementa uma interface.

Modelagem

Design de componentes é frequentemente modelado visualmente. Em UML 2.0 um componente é exibido como um retângulo, e uma interface é mostrada como um pirulito para indicar uma interface provida e como um ponto de conexão para indicar o consumo dessa interface.

História A ideia de componentes de software reutilizáveis foi proposta por Douglas McIlroy em sua apresentação na Conferências de Engenharia de Software da OTAN em 1968. (Um objetivo daquela conferência foi resolver a chamada crise do software daquele tempo.) Na década de 1970, McIlroy colocou essa ideia em prática com a adição de pipelines ao sistema operacional Unix.

redefiniu o conceito de um componente de software na década de 1980. Ele tentou criar uma infraestrutura e mercado para componentes reusáveis de terceiros inventando a linguagem de programação Objective-C.

A IBM introduziu o (SOM) no início da década de 1990. A Microsoft introduziu o Component Object Model (COM) no início da década de 1990. A Microsoft construiu muitas tecnologias de componentes específicos de domínio em COM, incluindo DCOM OLE e ActiveX.

Ver também Engenharia de software baseada em componentes Matriz CRUD

Categoria:Engenharia de software Categoria:Programação orientada a objetos Categoria:Arquitetura de software Categoria:Desenvolvimento de software