• Nenhum resultado encontrado

cosmos-v2

N/A
N/A
Protected

Academic year: 2021

Share "cosmos-v2"

Copied!
27
0
0

Texto

(1)

Arquitetura

Patrick H S Brito

patrickhenrique@gmail.com

————————————————————————————— Instituto de Computa¸c˜ao (IC)

(2)

Dimens˜

ao Arquitetural do Componente

• “Um componente como um elemento arquitetural. Este

componente deve oferecer e estar em conformidade com um conjunto de interfaces”;

• Normalmente representa um m´odulo ou um componente de alta granularidade do sistema;

• Um elemento arquitetural pode representar requisitos n˜ao-funcionais do sistema, como por exemplo:

– Distribui¸c˜ao, tolerˆancia a falhas, escalabilidade, desempenho.

(3)

• “Um componente como um elemento implementacional ´

acessado atrav´es de interfaces bem documentadas que podem ser descobertas em tempo de execu¸c˜ao”;

• Conhecidos como componentware;

• Essa ´e a dimens˜ao mais utilizada de um componente, mas n˜ao ´e a ´

unica;

• Se um componente possui a dimens˜ao implementacional, significa que ele est´a pronto para ser empacotado, implantado, instanciado e utilizado em um ambiente real:

(4)

Dimens˜

ao Implementacional-Arquitetural do

Componente

• “Um componente como um elemento implementacional mas que faz parte de um contexto arquitetural espec´ıfico”;

• Essa dimens˜ao mista de componentes facilita o mapeamento entre o c´odigo-fonte (dimens˜ao implementacional) e a arquitetura

software (dimens˜ao arquitetural);

• Um sistema constru´ıdo unicamente com componentes de dimens˜ao implementacional-arquitetural, ´e muito mais f´acil de evoluir:

– Melhor rastreabilidade entre requisitos, c´odigo e arquitetura de software.

(5)

Modelos de Componentes

• Um modelo de componentes define um conjunto de padr˜oes para implementa¸c˜ao, documenta¸c˜ao e implanta¸c˜ao de componentes; • Exemplos de modelos de componentes:

– Modelo EJB (Enterprise Java Beans); – Modelo COM+ (.NET);

– CCM (Corba Component Model); – COSMOS.

(6)

Elementos do Modelo de Componentes

(7)

O Modelo COSMOS (I)

• Modelo independente de plataforma;

• Consistˆencia entre arquitetura de software e c´odigo: – Rastreabilidade e facilidade de evolu¸c˜ao.

• Sub-modelo de especifica¸c˜ao (vis˜ao externa);

• Sub-modelo de implementa¸c˜ao (vis˜ao de implementa¸c˜ao); • Sub-modelo de conectores (vis˜ao de intera¸c˜ao).

(8)

O Modelo COSMOS (II)

(9)

O Modelo de Especifica¸c˜

ao

• Um componente possui interfaces providas e requeridas; • As interfaces s˜ao vis´ıveis externamente;

• A implementa¸c˜ao deve ser separada da especifica¸c˜ao; • Como utilizar um componente que s´o tem interfaces?

(10)

O Padr˜

ao Factory Method

• O padr˜ao factory method busca principalmente

ofere-cer um ponto ´unico para instancia¸c˜ao de objetos;

• Esse padr˜ao pode ser utilizado para implementar um

ponto de entrada para um m´odulo, atrav´es da instan-cia¸c˜ao de classes n˜ao vis´ıveis externamente.

(11)

Estrutura do Padr˜

ao Factory Method

Factory

+ createClass1 (.:.):Class1 + createClass2 (.:.):Class2

Class1

<< create >> −Class1 (.:.):Class1

Class2

(12)

Conseq¨

encias

• Instancia¸c˜ao controlada por uma classe

es-pec´ıfica. O acesso centralizado possibilita um cont-role estrito sobre como e quando essas referˆencias s˜ao acessadas pelos clientes.

(13)

spec prov IManager req impl ComponentFactory + createInstance ():IManager Manager

(14)

O Padr˜

ao Fa¸cade

• O padr˜ao fa¸cade busca principalmente oferecer um

ponto ´unico de acesso a uma lista de servi¸cos;

• Esse padr˜ao pode ser utilizado para reduzir a

com-plexidade das classes que implementam as interfaces

de um m´odulo, uma vez que apesar de serem

re-spons´aveis pelos servi¸cos da interface, as fa¸cades ape-nas propagam as requisi¸c˜oes para outras classes inter-nas.

(15)

Interface1 + op1 ():void + op2 ():void + op3 ():void + op4 ():void << interface >> Interface2 + op5 ():void + op6 ():void Facade Controller1 Controller3 Controller2

(16)

Conseq¨

encias

• Redu¸c˜ao da complexidade das classes controladoras,

que podem implementar apenas parte das opera¸c˜oes de uma interface, ao inv´es de “tudo ou nada”;

• Evolu¸c˜ao facilitada da implementa¸c˜ao das interfaces,

pois o fa¸cade nunca ser´a alterado e por essa raz˜ao as evolu¸c˜oes ser˜ao “transparentes” aos clientes.

(17)

spec prov IntProv1 IntProv2 req impl FacadeIntProv1 FacadeIntProv2 Class3 Class2 Class1 . . .

(18)

O Padr˜

ao Abstract Factory

• O padr˜ao abstract factory busca principalmente

ofer-ecer um ponto ´unico para instancia¸c˜ao dos objetos internos de um m´odulo.

(19)

AbstractClass1 ConcreteClass1−V1 ConcreteClass1−V2 ConcreteClass1−V1 AbstractClass1 ConcreteClass1−V2 ConcreteFactory−V1 AbstractFactory ConcreteFactory−V2

(20)

Conseq¨

encias

• Facilidade de evolu¸c˜ao interna de um

m´odulo, o que acontece devido `a redu¸c˜ao da de-pendˆencia da classe propriamente dita.

• Melhoria da portabilidade do m´odulo, uma

vez que basta atualizar a f´abrica utilizada para alterar a plataforma de execu¸c˜ao.

(21)

spec prov

IntProv1 IntProv2

req

impl

FacadeIntProv1 FacadeIntProv2 Class3 Class2

Class1 ObjectFactory

Pode ser uma hierarquia

(22)

O Modelo de Implementa¸c˜

ao do COSMOS

operacoesSaque spec prov ITransferencia ISacar IManager req IConta_EBanking ILogging impl . Manager ComponentFactory FacadeTransferencia FacadeSacar ObjectFactory . ClasesDeImplementacao << component >> OperacoesSaque ISacar ITransferencia IConta_EBanking ILogging

(23)

<< component >> OperacoesSaque operacoesSaque spec req IConta_EBanking ILogging ILogging ITransferencia ... conta_E−Banking_Mgr spec prov IConta_EBanking IManager Prov... Req... ... operacoesSaque−ContaEBanking impl . Manager FacadeConta_EBanking . ClasesDeImplementacao IManager << connector >> OperacoesSaque− ContaEBanking << component >> Conta_E−Banking_Mgr IConta_EBanking

(24)

Instancia¸c˜

ao dos Componentes

1 . . . 2 c o n t a E −Banking Mgr . s p e c . p r o v . IManager 3 contaEB = c o n t a E −Banking Mgr . i m p l . 4 C o m p o n e n t F a c t o r y . c r e a t e I n s t a n c e ( ) ; 5 6 o p e r a c o e s S a q u e . s p e c . p r o v . I M a n a g e r 7 opSaque = o p e r a c o e s S a q u e . i m p l . 8 C o m p o n e n t F a c t o r y . c r e a t e I n s t a n c e ( ) ; 9 10 o p e r a c o e s S a q u e −ContaEBanking . i m p l . IManager 11 conn = o p e r a c o e s S a q u e −ContaEBanking . i m p l . 12 C o m p o n e n t F a c t o r y . c r e a t e I n s t a n c e ( ) ; 13 . . .

(25)

OperacoesSaque-ContaEBanking

<< component >> Conta_E−Banking_Mgr << component >> OperacoesSaque << connector >> OperacoesSaque− ContaEBanking IConta_EBanking IConta_EBanking ILogging 1 . . . 2 c o n t a E −Banking Mgr . s p e c . p r o v . I C o n t a E B a n k i n g 3 i n t C o n t a E B = contaEB . g e t P r o v i d e d I n t e r f a c e 4 ( ‘ ‘ I C o n t a E B a n k i n g ’ ’ ) ; 5

(26)

Configura¸c˜

ao dos Elementos

OperacoesSaque-ContaEBanking

e

OperacoesSaque

IConta_EBanking IConta_EBanking << component >> Conta_E−Banking_Mgr << component >> OperacoesSaque ILogging << connector >> OperacoesSaque− ContaEBanking 1 . . . 2 o p e r a c o e s S a q u e . s p e c . r e q . I C o n t a E B a n k i n g 3 i n t C o n n = conn . g e t P r o v i d e d I n t e r f a c e 4 ( ‘ ‘ I C o n t a E B a n k i n g ’ ’ ) ; 5 6 opSaque . s e t R e q u i r e d I n t e r f a c e 7 ( i n t C o n n , ‘ ‘ I C o n t a E B a n k i n g ’ ’ ) ; 8 . . .

(27)

Ajuste das Interfaces Requeridas

1 . . . 2 conn . s e t R e q u i r e d I n t e r f a c e 3 ( intContaEB , ‘ ‘ I C o n t a E B a n k i n g ’ ’ ) ; 4 opSaque . s e t R e q u i r e d I n t e r f a c e 5 ( i n t C o n n , ‘ ‘ I C o n t a E B a n k i n g ’ ’ ) ; 6 . . .

Referências

Documentos relacionados

[r]

Haveria agora algo que dizer -e haverá muito mais que estudar, pois não têm sido regiões que tenham merecido particular atenção por parte dos historiadores- sobre certas

Fazendo-se um paralelo à critica de projetos residenciais em São Paulo, Diane Ghia- rardo (2002), apresenta em seu livro criticas a projetos de usos diversos e a relação com o

[r]

Fernandes, morador no lugar de Ourentã, termo da Vila de Cantanhede e de Francisco Afonso, morador no lugar de Fornos, termo da cidade de Coimbra, para fornecimento de

Na questão que abordou o conhecimento sobre a localização da doença, o deficiente saber quanto à percepção sobre a saúde bucal foi comprovado quando somente 30 indivíduos

Portanto, deve-se reconhecer que o tipo de movimento ortodôntico pode influenciar no risco de desenvolvimento de recessão óssea e gengival, como nos casos de movimento

REDES INSTALACAO E COMERCIO DE REDES