Você está na página 1de 10

15/3/2009 15/3/2009

11
C Componentes omponentes de de
Software Software
Viso Viso Geral Geral
Interfaces Interfaces
Polimorfismo Polimorfismo
Composio Composio
Continer Continer
Unidade II
Comunicao Comunicao
Desenvolvimento Desenvolvimento
Distribuio Distribuio
Implantao Implantao
Viso Geral Viso Geral
A estrutura de um componente definida A estrutura de um componente definida
por um modelo seguido na implementao por um modelo seguido na implementao
Um Um modelo de componentes modelo de componentes define: define:
A forma como componentes so vistos A forma como componentes so vistos
externamente externamente
Aspectos da estrutura interna dos componentes Aspectos da estrutura interna dos componentes
Os servios que o suporte de execuo deve Os servios que o suporte de execuo deve
fornecer aos componentes fornecer aos componentes
O mecanismo usado para comunicao entre os O mecanismo usado para comunicao entre os
componentes componentes
O processo de desenvolvimento, de distribuio O processo de desenvolvimento, de distribuio
e de implantao de componentes e de implantao de componentes
Viso Geral Viso Geral
Estrutura interna de um componente Estrutura interna de um componente
Cdigo funcional Cdigo funcional
Responsvel pela implementao dos Responsvel pela implementao dos
servios fornecidos pelo componente servios fornecidos pelo componente
Escrito pelo desenvolvedor Escrito pelo desenvolvedor
Cdigo no Cdigo no- -funcional funcional
Responsvel por interagir com o suporte de Responsvel por interagir com o suporte de
comunicao e de execuo padronizado comunicao e de execuo padronizado
pelo modelo de componentes pelo modelo de componentes
Pode ser gerado automaticamente pelo Pode ser gerado automaticamente pelo
suporte de desenvolvimento suporte de desenvolvimento
Viso Geral Viso Geral
Componentes fornecem Componentes fornecem servios servios a a
terceiros atravs de suas terceiros atravs de suas interfaces interfaces
Um servio uma atividade bem definida Um servio uma atividade bem definida
executada pelo componente executada pelo componente
A interface de um componente define como A interface de um componente define como
terceiros terceiros podem solicitar os servios do podem solicitar os servios do
componente componente
Viso Geral Viso Geral
Componentes rodam sobre um Componentes rodam sobre um suporte de suporte de
execuo execuo definido pelo modelo definido pelo modelo
Componentes Componentes podem interagir com o podem interagir com o
suporte de execuo atravs de suporte de execuo atravs de::
Continers: Continers: para usar servios do para usar servios do suporte suporte de de
execuo execuo
Interfaces de Interfaces de callback callback: para receber chamadas : para receber chamadas
do suporte de execuo do suporte de execuo ((upcalls upcalls) )
Viso Geral Viso Geral
Componentes podem possuir Componentes podem possuir dados de dados de
estado estado
Stateless Stateless: componentes sem estado : componentes sem estado
Stateful Stateful: componentes com estado : componentes com estado
Estado do componente pode ser Estado do componente pode ser
externalizado externalizado
Estado interno: dados privados do Estado interno: dados privados do
componente componente
Estado externo: dados acessveis atravs da Estado externo: dados acessveis atravs da
interface interface
15/3/2009 15/3/2009
22
Viso Geral Viso Geral
Estado pode ser persistente ou voltil Estado pode ser persistente ou voltil
Estado persistente: mantido em memria Estado persistente: mantido em memria
persistente (HD, BD, etc.) e restaurado em persistente (HD, BD, etc.) e restaurado em
execues subsequentes execues subsequentes
Estado voltil (no Estado voltil (no- -persistente): dados so persistente): dados so
perdidos entre uma execuo e outra perdidos entre uma execuo e outra
Viso Geral Viso Geral
OOs s mecanismos de comunicao mecanismos de comunicao devem ser devem ser
padronizados padronizados para que componentes para que componentes
possam interagir possam interagir
Os principais mecanismos utilizados so: Os principais mecanismos utilizados so:
Chamada de procedimento/mtodo Chamada de procedimento/mtodo
Notificao de eventos/mensagens Notificao de eventos/mensagens
Comunicao entre componentes pode ser: Comunicao entre componentes pode ser:
Local: componentes em uma mesma mquina Local: componentes em uma mesma mquina
Remota: componentes em mquinas diferentes Remota: componentes em mquinas diferentes
Viso Geral Viso Geral
O processo de O processo de desenvolvimento desenvolvimento, ,
distribuio distribuio e e implantao implantao de componentes de componentes
segue regras bem definidas, podendo segue regras bem definidas, podendo
utilizar utilizar- -se de: se de:
Metodologias de desenvolvimento Metodologias de desenvolvimento
Compiladores e geradores de cdigo Compiladores e geradores de cdigo
Servidores de aplicao Servidores de aplicao
Mecanismos de distribuio Mecanismos de distribuio
etc. etc.
Interfaces Interfaces
Os servios fornecidos pelo componente Os servios fornecidos pelo componente
so disponibilizados atravs de uma ou so disponibilizados atravs de uma ou
mais interfaces claramente definidas mais interfaces claramente definidas
Na interface do componente so descritos: Na interface do componente so descritos:
Propriedades: as caractersticas configurveis Propriedades: as caractersticas configurveis
dos componentes, que sero levadas em dos componentes, que sero levadas em
conta durante a sua execuo conta durante a sua execuo
Mtodos: rotinas chamadas por Mtodos: rotinas chamadas por terceiros terceiros para para
solicitar os servios fornecidos pelo solicitar os servios fornecidos pelo
componente componente
Interfaces Interfaces
Outras informaes podem constar da Outras informaes podem constar da
interface do componente interface do componente
Nmero de verso e de srie Nmero de verso e de srie
Linguagem de programao Linguagem de programao
Dependncias de outros componentes/servios Dependncias de outros componentes/servios
Mecanismos de comunicao/invocao Mecanismos de comunicao/invocao
etc. etc.
Conhecendo a inteface de um componente, Conhecendo a inteface de um componente,
possvel utiliz possvel utiliz- -lo para compor aplicaes lo para compor aplicaes
Interfaces Interfaces
Descrio das interfaces de componentes Descrio das interfaces de componentes
Na linguagem de programao, nos modelos Na linguagem de programao, nos modelos
que utilizam somente uma linguagem que utilizam somente uma linguagem
Em uma linguagem de descrio de interface Em uma linguagem de descrio de interface
(IDL), nos modelos multi (IDL), nos modelos multi- -linguagem linguagem
De posse da descrio da interface, De posse da descrio da interface,
possvel gerar o cdigo no possvel gerar o cdigo no- -funcional funcional
Utilizao dos mecanismos de comunicao Utilizao dos mecanismos de comunicao
Interao com servios e com o suporte de Interao com servios e com o suporte de
execuo execuo
etc. etc.
15/3/2009 15/3/2009
33
Interfaces Interfaces
Exemplo de Interface em Java Exemplo de Interface em Java
public interface Supermercado { public interface Supermercado {
public float getPreco (long codigo); public float getPreco (long codigo);
public long getCodigo (String nome); public long getCodigo (String nome);
public String getNome (long codigo); public String getNome (long codigo);
} }
Exemplo de Interface em IDL Exemplo de Interface em IDL
interface Supermercado { interface Supermercado {
float getPreco (in long codigo); float getPreco (in long codigo);
long getCodigo (in string nome); long getCodigo (in string nome);
string getNome (in long codigo); string getNome (in long codigo);
} }
Interfaces Interfaces
Representao em UML de interfaces Representao em UML de interfaces
Componente Componente Componente Componente
Interface Interface
<<interface>> <<interface>>
Interface Interface
atrib: int atrib: int
metodo: void metodo: void
Interfaces Interfaces
Representao em UML 1.x da Representao em UML 1.x da
interconexo entre componentes interconexo entre componentes
Componente X usa a Interface de Y Componente X usa a Interface de Y
Componente Componente
Y Y
Componente Componente
XX
Interface Interface
Interfaces Interfaces
Representao em UML 2.0 da Representao em UML 2.0 da
interconexo entre componentes interconexo entre componentes
Componente X usa a Interface de Y Componente X usa a Interface de Y
Componente Componente
Y Y
Componente Componente
XX
Interface Interface
Interfaces Interfaces
Vrias interfaces podem ser suportadas Vrias interfaces podem ser suportadas
por um mesmo componente por um mesmo componente
Interfaces diferentes podem ser fornecidas Interfaces diferentes podem ser fornecidas
para cada tipo de usurio para cada tipo de usurio
Sistema Sistema
Admin Admin
Usurio Usurio
Loja Loja
Vendedor Vendedor
Cliente Cliente
Gerente Gerente
Interfaces Interfaces
Um componente tambm pode Um componente tambm pode
ter diferentes interfaces para: ter diferentes interfaces para:
Suportar Suportar
diferentes diferentes
protocolos de protocolos de
comunicao comunicao
Se comunicar Se comunicar
usando vrios usando vrios
formatos de formatos de
dados dados
etc. etc.
Cliente
TCP/IP
Cliente
RMI
Cliente
ASN.1
Cliente
XML
Sistema Sistema
TCP/IP TCP/IP
RMI RMI
Sistema Sistema
ASN.1 ASN.1
XML XML
15/3/2009 15/3/2009
44
Interfaces Interfaces
Uma Uma interface padro interface padro suportada por todos suportada por todos
os c os componentes omponentes permite permite inspe inspecionar suas cionar suas
caractersticas internas caractersticas internas
Descobrir a( Descobrir a(s) s) interface( interface(s) s)
suportada( suportada(s) s) pelo componente pelo componente
Obter informaes como Obter informaes como
nmero de verso, de srie, nmero de verso, de srie,
chave pblica, etc. chave pblica, etc.
Descobrir o(s) mecanismo(s) Descobrir o(s) mecanismo(s)
de comunicao aceito(s) de comunicao aceito(s)
pelo componente pelo componente
Componente Componente
Polimorfismo Polimorfismo
Polimorfismo: uma mesma interface pode Polimorfismo: uma mesma interface pode
ser implementada por dois ou mais ser implementada por dois ou mais
componentes de maneiras diferentes componentes de maneiras diferentes
Se dois ou mais componentes Se dois ou mais componentes
implementam uma mesma interface: implementam uma mesma interface:
Fornecem os mesmos servios Fornecem os mesmos servios
So intercambiveis So intercambiveis
Polimorfismo permite que o desenvolvedor Polimorfismo permite que o desenvolvedor
escolha qual componente mais adequado escolha qual componente mais adequado
para a aplicao que est construindo para a aplicao que est construindo
Polimorfismo Polimorfismo
Escolha de componentes polimrficos Escolha de componentes polimrficos
O desenvolvedor deve considerar fatores O desenvolvedor deve considerar fatores
como preciso, qualidade, desempenho e como preciso, qualidade, desempenho e
custo dos componentes polimrficos ao fazer custo dos componentes polimrficos ao fazer
a escolha entre os componentes existentes a escolha entre os componentes existentes
De modo geral, a relao entre estas De modo geral, a relao entre estas
grandezas a seguinte: grandezas a seguinte:
Preciso, Qualidade Preciso, Qualidade
Custo
Desempenho
Polimorfismo Polimorfismo
Polimorfismo tambm permite mater o Polimorfismo tambm permite mater o
suporte a verses legadas do componente suporte a verses legadas do componente
Nova verso Nova verso
do componente do componente
suporta a interface suporta a interface
antiga e a nova antiga e a nova
Nova verso pode Nova verso pode
incorporar novos incorporar novos
servios atravs servios atravs
de uma nova de uma nova
interface interface
Cliente
Antigo
Sistema Sistema
1.0 1.0
Interface Interface
Cliente
Antigo
Sistema Sistema
2.0 2.0
Interface Interface
Cliente
Novo
Interf2.0 Interf2.0
Composio Composio
Propriedade essencial dos componentes Propriedade essencial dos componentes
Permite que aplicaes ou novos Permite que aplicaes ou novos
componentes sejam criados a partir de componentes sejam criados a partir de
outros componentes outros componentes
Diferenas entre herana e composio Diferenas entre herana e composio
Herana Herana
X X um um Y Y
Usada para estender a funcionalidade Usada para estender a funcionalidade
Composio Composio
X X tem um tem um Y Y
Usada para incorporar a funcionalidade Usada para incorporar a funcionalidade
Composio Composio
Composio mais adequada que herana Composio mais adequada que herana
para reutilizar cdigo para reutilizar cdigo
Na maioria dos casos no queremos estender, Na maioria dos casos no queremos estender,
mas incorporar a funcionalidade do componente mas incorporar a funcionalidade do componente
Compare: Compare:
Interface grfica Interface grfica um um Boto + Rtulo + ... Boto + Rtulo + ...
?? ou ?? ?? ou ??
Interface grfica Interface grfica tem um tem um Boto + Rtulo + ... Boto + Rtulo + ...
Processador de texto Processador de texto um um dicionrio dicionrio
?? ou ?? ?? ou ??
Processador de texto Processador de texto tem um tem um dicionrio dicionrio
15/3/2009 15/3/2009
55
Composio Composio
Composio de componentes pode ser feita Composio de componentes pode ser feita
atravs de: atravs de:
Cdigo de programas Cdigo de programas
Linguagens de composio Linguagens de composio
Ferramentas grficas de composio Ferramentas grficas de composio
Linguagens e ferramentas de composio Linguagens e ferramentas de composio
devem verificar se: devem verificar se:
As dependncias de componentes so satisfeitas As dependncias de componentes so satisfeitas
As interfaces conectadas so compatveis As interfaces conectadas so compatveis
Continer Continer
Um Continer um ambiente de execuo Um Continer um ambiente de execuo
para componentes para componentes
Faz a ligao entre os componentes e o Faz a ligao entre os componentes e o
mundo exterior mundo exterior
Recebe pedidos de execuo de servios e os Recebe pedidos de execuo de servios e os
repassa ao componente, que executa o servio repassa ao componente, que executa o servio
Evita que o componente tenha que interagir Evita que o componente tenha que interagir
com o sistema operacional, o suporte de com o sistema operacional, o suporte de
comunicao e com os servios de aplicao comunicao e com os servios de aplicao
Permite que componente seja independente Permite que componente seja independente
do ambiente de execuo, tornando do ambiente de execuo, tornando- -o mais o mais
portvel e mais fcil de reutilizar portvel e mais fcil de reutilizar
Continer Continer
As interfaces do As interfaces do Continers so definidas Continers so definidas
pelo modelo de componentes pelo modelo de componentes
Podem ser vistas como uma API completa para Podem ser vistas como uma API completa para
execuo de componentes execuo de componentes
Tornam o cdigo do componente mais portvel Tornam o cdigo do componente mais portvel
Podem haver diferentes tipos de Continer Podem haver diferentes tipos de Continer
Exemplo: Continers para componentes sem Exemplo: Continers para componentes sem
estado, com estado transiente (voltil) ou estado, com estado transiente (voltil) ou
persistente persistente
Continer Continer
Continers utilizam recursos de software e Continers utilizam recursos de software e
hardware e servios da plataforma de hardware e servios da plataforma de
execuo para executar o componente execuo para executar o componente
Servio de Nomes: permite localizar instncias Servio de Nomes: permite localizar instncias
de componentes de componentes
Servio de Comunicao: troca de informao Servio de Comunicao: troca de informao
Servio de Persistncia: faz o armazenamento Servio de Persistncia: faz o armazenamento
de estado dos componentes de estado dos componentes
Servio de Transaes: mantm a consistncia Servio de Transaes: mantm a consistncia
Servio de Segurana: autentica componentes Servio de Segurana: autentica componentes
e verifica a autorizao para executar servios e verifica a autorizao para executar servios
Continer Continer
Continer Continer
Servio Servio Servio Servio
Suporte de Execuo/Comunicao
Componente
Componente Componente
Continer Continer
Tipos de Interfaces Tipos de Interfaces
Externa: atravessa o continer Externa: atravessa o continer
Interna: acessvel somente dentro do continer Interna: acessvel somente dentro do continer
De Callback: interface usada pelo continer De Callback: interface usada pelo continer
para se comunicar com o componente para se comunicar com o componente
Interface
Externa
Continer
Componente Componente
Interface
Interna
Interfaces
de Callback
15/3/2009 15/3/2009
66
Continer Continer
O continer efetua O continer efetua Callbacks Callbacks para: para:
Indicar falhas na obteno ou na utilizao de Indicar falhas na obteno ou na utilizao de
recursos do suporte de execuo recursos do suporte de execuo
Entregar mensagens do servio de Entregar mensagens do servio de
comunicao comunicao
Salvar o estado do componente e restaur Salvar o estado do componente e restaur- -lo lo
em caso de reinicializao em caso de reinicializao
Relatar a violao de regras de funcionamento Relatar a violao de regras de funcionamento
ou de segurana ou de segurana
Comunicao Comunicao
Componentes se comunicam para trocar Componentes se comunicam para trocar
dados e solicitar a execuo de servios dados e solicitar a execuo de servios
Componentes podem estar localizados em: Componentes podem estar localizados em:
Um mesmo servidor Um mesmo servidor Comunicao local Comunicao local
Servidores diferentes Servidores diferentes Comunicao remota Comunicao remota
O ideal que o desenvolvedor abstraia a O ideal que o desenvolvedor abstraia a
localizao dos componentes, podendo localizao dos componentes, podendo
agir da mesma forma independentemente agir da mesma forma independentemente
de os componentes estarem na mesma de os componentes estarem na mesma
mquina ou em mquinas diferentes mquina ou em mquinas diferentes
Comunicao Comunicao
Para abstrair a localizao de componentes Para abstrair a localizao de componentes
o ideal que os mecanismos usados para o ideal que os mecanismos usados para
comunicao local sejam usados tambm comunicao local sejam usados tambm
para comunicao remota para comunicao remota
Mecanismos de comunicao local Mecanismos de comunicao local
Chamada de procedimento/mtodo Chamada de procedimento/mtodo
Notificao de eventos/mensagens Notificao de eventos/mensagens
Mecanismos de comunicao remota Mecanismos de comunicao remota
Chamada remota de proced./mtodo (RPC) Chamada remota de proced./mtodo (RPC)
Notificao de eventos/mensagens remotos Notificao de eventos/mensagens remotos
Comunicao Comunicao
Chamada de procedimento/mtodo Chamada de procedimento/mtodo
Segue o modelo Cliente/Servidor Segue o modelo Cliente/Servidor
Um componente fornece uma interface com Um componente fornece uma interface com
procedimentos/mtodos para solicitar a procedimentos/mtodos para solicitar a
execuo de seus servios execuo de seus servios um servidor um servidor
Componentes/aplicaes utilizam os servios Componentes/aplicaes utilizam os servios
de outros componentes de outros componentes so seus clientes so seus clientes
Cliente Servidor

x = Servidor.Soma(y,z);

Soma(int y, int z) {
return(y+z);
}
Soma(y,z)
Rede Rede
Comunicao Comunicao
Chamada remota de procedimento/mtodo Chamada remota de procedimento/mtodo
Idntica a uma chamada local Idntica a uma chamada local
Os componentes esto em mquinas diferentes Os componentes esto em mquinas diferentes
A chamada tem que ser enviada como uma A chamada tem que ser enviada como uma
mensagem pela rede mensagem pela rede
O suporte de execuo se encarrega disso O suporte de execuo se encarrega disso
Cliente
Servidor

x = Servidor.Soma(y,z);

Soma(int y, int z) {
return(y+z);
}
Soma(y,z)
Comunicao Comunicao
Notificao Notificao de eventos de eventos
Notificaes de eventos ocorridos so Notificaes de eventos ocorridos so
difundidas por produtores e entregues a difundidas por produtores e entregues a
consumidores de eventos consumidores de eventos
Eventos so em geral oriundos da interface Eventos so em geral oriundos da interface
grfica. Ex.: click de um boto do mouse, grfica. Ex.: click de um boto do mouse,
tecla digitada, seleo de um elemento, etc. tecla digitada, seleo de um elemento, etc.
Produtor Consumidor
1..* 1..* 1..* 1..*
15/3/2009 15/3/2009
77
Rede Rede
Comunicao Comunicao
Notificao Notificao de eventos remotos de eventos remotos
Produtores e consumidores de eventos podem Produtores e consumidores de eventos podem
estar em mquinas diferentes estar em mquinas diferentes
Canal de eventos permite Canal de eventos permite ddesacoplamento esacoplamento
No necessrio que as partes se conheam No necessrio que as partes se conheam
ou se sincronizem para ou se sincronizem para enviar enviar o evento o evento
Produtor Consumidor
Canal de
Eventos
1..* 1..* 1..* 1..*
Comunicao Comunicao
Formato dos dados Formato dos dados
Na chamada de mtodo, a sua assinatura Na chamada de mtodo, a sua assinatura
define os parmetros e seus tipos de dados define os parmetros e seus tipos de dados
O formato dos eventos em geral mais flexvel O formato dos eventos em geral mais flexvel
Cardinalidade Cardinalidade
Chamada de mtodo tem sempre apenas um Chamada de mtodo tem sempre apenas um
cliente e um servidor cliente e um servidor
Notificao de eventos pode ser de M para N Notificao de eventos pode ser de M para N
Comunicao Comunicao
Sincronismo Sincronismo
Na chamada de mtodo o emissor fica Na chamada de mtodo o emissor fica
bloqueado aguardando o trmino da execuo bloqueado aguardando o trmino da execuo
Na notificao de eventos o produtor continua Na notificao de eventos o produtor continua
a execuo sem aguardar resposta a execuo sem aguardar resposta
Cliente
Servidor
Chamada
Execuo
Retorno
t
t
Produtor
Consumidor
Envio
Execuo Execuo
Envio
t
t
Comunicao Comunicao
Protocolos de comunicao de alto nvel Protocolos de comunicao de alto nvel
so necessrios para interao entre so necessrios para interao entre
componentes em mquinas diferentes componentes em mquinas diferentes
Escolha natural: usar TCP/IP como base Escolha natural: usar TCP/IP como base
Cria Cria conexes conexes entre processos para entre processos para troca troca de de
mensagens mensagens
Amplamente disponvel, confivel e robusto Amplamente disponvel, confivel e robusto
Relativamente simples e eficiente Relativamente simples e eficiente
Comunicao Comunicao
Mecanismo de comunicao entre Mecanismo de comunicao entre
componentes deve tratar questes no componentes deve tratar questes no
resolvidas pelo TCP/IP resolvidas pelo TCP/IP
Formato comum dos dados Formato comum dos dados
Localizao de componentes Localizao de componentes
Segurana Segurana
Os suportes de execuo de componentes Os suportes de execuo de componentes
j incorporam tais mecanismos j incorporam tais mecanismos
No Java: RMI, JMS, JNDI, JavaSecurity No Java: RMI, JMS, JNDI, JavaSecurity
No CORBA: IIOP e servios CORBA No CORBA: IIOP e servios CORBA
No COM/DCOM: MS RPC e Servios COM+ No COM/DCOM: MS RPC e Servios COM+
Desenvolvimento Desenvolvimento
O desenvolvimento de componentes exige O desenvolvimento de componentes exige
uma srie de cuidados uma srie de cuidados
Mtodos tradicionais de engenharia de Mtodos tradicionais de engenharia de
software podem ser usados na anlise e software podem ser usados na anlise e
projeto projeto
So usadas linguagens de programao So usadas linguagens de programao
tradicionais na implementao tradicionais na implementao
Testes do tipo Testes do tipo blackbox blackbox devem ser aplicados devem ser aplicados
15/3/2009 15/3/2009
88
Desenvolvimento Desenvolvimento
Projeto deve levar em conta que: Projeto deve levar em conta que:
O componente deve fornecer servios a outros O componente deve fornecer servios a outros
componentes, que os utilizaro atravs das componentes, que os utilizaro atravs das
interfaces do componente interfaces do componente
O componente deve ser sujeito a composio O componente deve ser sujeito a composio
Os componentes que o utilizaro podem Os componentes que o utilizaro podem
querer fazer pequenos ajustes na forma como querer fazer pequenos ajustes na forma como
os servios so executados os servios so executados
O componente deve procurar ser O componente deve procurar ser
independente de outros componentes independente de outros componentes
Desenvolvimento Desenvolvimento
Grande parte dos ambientes de Grande parte dos ambientes de
desenvolvimento fornece ferramentas para desenvolvimento fornece ferramentas para
gerao de cdigo gerao de cdigo
Cdigo no Cdigo no- -funcional (para interao com o funcional (para interao com o
suporte) gerado automaticamente suporte) gerado automaticamente
Cdigo funcional (os mtodos que Cdigo funcional (os mtodos que
implementam o comportamento do implementam o comportamento do
componente) deve ser escrito pelo componente) deve ser escrito pelo
programador programador
Desenvolvimento Desenvolvimento
O processo de desenvolvimento varia O processo de desenvolvimento varia
conforme o modelo de componentes conforme o modelo de componentes
Modelos multi Modelos multi- -linguagem linguagem
Permitem que componentes escritos em Permitem que componentes escritos em
linguagens diferentes interajam linguagens diferentes interajam
Desenvolvimento mais complexo Desenvolvimento mais complexo
Modelos mono Modelos mono- -linguagem linguagem
No permitem interoperabilidade entre No permitem interoperabilidade entre
linguagens linguagens
Desenvolvimento mais simples Desenvolvimento mais simples
Pacote de
Distribuio
Desenvolvimento Desenvolvimento
Desenvolvimento do Componente Desenvolvimento do Componente
Descrio
da Interface
Cdigo Binrio
do Componente
01010101010101
01010101010101
01010101010101
Cdigo
Funcional
Cdigo No-
Funcional
Descrio
da Interface
Gerador de Cdigo
Compilador
Pacote de
Distribuio
Desenvolvimento Desenvolvimento
Uso do Componente em uma Aplicao Uso do Componente em uma Aplicao
Descrio
da Interface
Cdigo Binrio
do Componente
01010101010101
01010101010101
01010101010101
Cdigo
Funcional
Cdigo No-
Funcional
Gerador de Cdigo
Compilador
Cdigo Binrio
da Aplicao
01010101010101
01010101010101
01010101010101
Distribuio Distribuio
Componentes so distribudos na forma de Componentes so distribudos na forma de
pacotes de distribuio ( pacotes de distribuio (packages packages))
Pacotes de distribuio podem conter: Pacotes de distribuio podem conter:
Apenas um componente Apenas um componente
Um Um framework framework de componentes de componentes
Uma aplicao completa Uma aplicao completa
Um Um package package contm: contm:
O cdigo executvel do(s) componente(s) O cdigo executvel do(s) componente(s)
Pode ter tambm descritores de componentes Pode ter tambm descritores de componentes
Geralmente so compactados (.Zip ou .Jar) Geralmente so compactados (.Zip ou .Jar)
15/3/2009 15/3/2009
99
Distribuio Distribuio
Em geral, o cdigo executvel Em geral, o cdigo executvel
dependente da plataforma de execuo dependente da plataforma de execuo
Neste caso, pode Neste caso, pode- -se gerar executveis para se gerar executveis para
cada plataforma suportada e colocar no cada plataforma suportada e colocar no
mesmo mesmo package package
Na implantao, deve ser escolhida a verso Na implantao, deve ser escolhida a verso
do componente compatvel com a plataforma do componente compatvel com a plataforma
local local
Distribuio Distribuio
Algumas linguagens so multi Algumas linguagens so multi- -plataforma plataforma
Mquina virtual converte o cdigo para Mquina virtual converte o cdigo para
instrues da mquina onde o componente instrues da mquina onde o componente
executado executado
Exemplos: Exemplos:
Java usa JVM ( Java usa JVM (Java Virtual Machine Java Virtual Machine))
C#, VB.NET e ASP.NET da Microsoft usam C#, VB.NET e ASP.NET da Microsoft usam
CLR ( CLR (Common Language Runtime Common Language Runtime))
Distribuio Distribuio
O descritor do componente usado por: O descritor do componente usado por:
Clientes Clientes
Descobrir os servios fornecidos pelo Descobrir os servios fornecidos pelo
componente componente
Descobrir a forma de obteno dos servios Descobrir a forma de obteno dos servios
Ferramentas de composio e servidores de Ferramentas de composio e servidores de
aplicao aplicao
Conhecer a verso, n Conhecer a verso, n
oo
de srie, de srie,
dependncias, etc. dependncias, etc.
Saber como instanciar, configurar e Saber como instanciar, configurar e
conectar os componentes conectar os componentes
Distribuio Distribuio
Os descritores devem estar em uma Os descritores devem estar em uma
linguagem para descrio de software linguagem para descrio de software
A maior parte dos modelos de componentes A maior parte dos modelos de componentes
utiliza linguagens proprietrias para descrever utiliza linguagens proprietrias para descrever
o contedo dos pacotes de distribuio o contedo dos pacotes de distribuio
Tendncia do mercado migrar para um Tendncia do mercado migrar para um
padro como o XML OSD ( padro como o XML OSD (Open Software Open Software
Description Description))
Exemplo de descrio de Exemplo de descrio de package package em XML OSD em XML OSD
<SOFTPKG NAME= <SOFTPKG NAME=Crypt Crypt" VERSION="1, " VERSION="1,22,0,0"> ,0,0">
<TITLE> <TITLE>Crypt Crypt</TITLE> </TITLE>
<<AUTHOR AUTHOR>>
<COMPANY>MySoft <COMPANY>MySoft Corporation Corporation</COMPANY> </COMPANY>
<<WEBPAGE WEBPAGE HREF="http://www. HREF="http://www.mysoft mysoft.com/ .com/crypt crypt/" /> /" />
</ </AUTHOR AUTHOR> >
<IMPLEMENTATION> <IMPLEMENTATION>
<OS VALUE="WinNT <OS VALUE="WinNT//> >
<OS VALUE="Win95"/> <OS VALUE="Win95"/>
<CODE <CODE TYPE TYPE==Zip> Zip>
<FILEINARCHIVE NAME= <FILEINARCHIVE NAME=crypt crypt..zip zip"/> "/>
</CODE> </CODE>
</IMPLEMENTATION> </IMPLEMENTATION>
<IMPLEMENTATION> <IMPLEMENTATION>
<IMPLTYPE VALUE="Java" /> <IMPLTYPE VALUE="Java" />
<CODE <CODE TYPE TYPE==Jar> Jar>
<FILEINARCHIVE NAME= <FILEINARCHIVE NAME=crypt crypt..jar jar"/> "/>
</CODE> </CODE>
</IMPLEMENTATION> </IMPLEMENTATION>
</SOFTPKG> </SOFTPKG>
Distribuio Distribuio Implantao Implantao
Para implantar uma aplicao construda a Para implantar uma aplicao construda a
partir de componentes importante definir partir de componentes importante definir
onde cada componente ser implantado onde cada componente ser implantado
Diagrama de implantao da UML Diagrama de implantao da UML
Serv. Aplicao Serv. Aplicao Serv. Banco Serv. Banco
de Dados de Dados
Mq. Cliente Mq. Cliente
Componente
Servidor
BD BD
Aplicao
Cliente
<<JDBC>> <<JDBC>> <<RMI>> <<RMI>>
1..* 1..*
15/3/2009 15/3/2009
10 10
Implantao Implantao
Os componentes que disponibilizaro Os componentes que disponibilizaro
servios remotamente devem ser servios remotamente devem ser
implantados em servidores de aplicao implantados em servidores de aplicao
Servidores de aplicao servem como Servidores de aplicao servem como
ambiente de execuo dos componentes e ambiente de execuo dos componentes e
servem como Continers servem como Continers
Servidores Web com extenses podem ser Servidores Web com extenses podem ser
usados com este objetivo usados com este objetivo
Implantao Implantao
Packages Packages podem ser instalados no servidor podem ser instalados no servidor
A partir da implantao no servidor, o A partir da implantao no servidor, o
componente est disponvel para interagir com componente est disponvel para interagir com
outros componentes no mesmo servidor ou outros componentes no mesmo servidor ou
em outros servidores da rede em outros servidores da rede
Servidor verifica o descritor do pacote e Servidor verifica o descritor do pacote e
seleciona a implementao do componente seleciona a implementao do componente
compatvel com a sua plataforma compatvel com a sua plataforma
Implantao Implantao
Servidores de aplicao devem fornecer: Servidores de aplicao devem fornecer:
Interface para localizao dos componentes Interface para localizao dos componentes
Suporte para comunicao Suporte para comunicao
Servios adicionais de propsito geral Servios adicionais de propsito geral
Segurana Segurana
Transaes Transaes
Persistncia Persistncia
... ...
Mecanismos para gerenciamento de aplicaes Mecanismos para gerenciamento de aplicaes
Implantao Implantao
H vrios servidores de aplicao no H vrios servidores de aplicao no
mercado: mercado:
Sun Java System Application Server Sun Java System Application Server
WebSphere Application Server (IBM) WebSphere Application Server (IBM)
JBoss Application Server JBoss Application Server
Borland Enterprise Server Borland Enterprise Server
Oracle Application Server Oracle Application Server
etc. etc.

Você também pode gostar