Anda di halaman 1dari 5

Um Design Pattern para a Configuracao de

Arquiteturas de Software
Joao Batista do Espirito Santo Neto
1
Departamento de Sistemas e Computacao Instituto Federal Goiano - Campus Rio Verde
Av. Sul Goiania - Km 1, s/n - Zona Ruaral, Ro Verde - GO, 75901-970

Abstract. This paper proposes a design pattern to organize, in the implemen-


tation level, the components and connectors included in the configuration of a
software architecture. The proposed design pattern, called Architecture Config-
urator, supplies a basis for the implementation of architectural configurations,
using the mechanisms of interception, guiding and manipulation of requests, as
well as supporting the interconnection of components and connectors.

Resumo. Este trabalho propoe um design pattern para organizar, no nvel de


implementacao, componentes e conectores includos na configuracao de uma
arquitetura de software. O design pattern proposto, denominado Architecture
Configurator, fornece uma base para a implementacao de configuracoes ar-
quiteturais, fundamentada nos mecanismos de interceptacao, encaminhamento
e manipulacao de requisicoes, bem como na interligacao dos componentes e
conectores.

1. Introducao
Arquiteturas de software e patterns tem auxiliado na concepcao e evolucao de sistemas
de software. Um sistema de software pode ser desenvolvido a partir da descricao de sua
arquitetura, a qual define, dentre outros elementos, componentes e conectores.
A forma de interacao entre os elementos de uma arquitetura, bem como o projeto
e/ou estrutura empregados em cada um deles, podem ser reaproveitados atraves do uso
de patterns. Um pattern descreve determinado problema, recorrente no desenvolvimento
de software, e sua respectiva solucao. Isso permite ao desenvolvedor a reutilizacao de
solucoes, seja no contexto da arquitetura, projeto ou implementacao do sistema.
O design pattern Architecture Configurator, apresentado neste trabalho, concentra-
se em quatro princpios basicos: (i) encadeamento de conectores e compo- nentes; (ii)
interceptacao de requisicoes; (iii) manipulacao de requisicoes; e (iv) en- caminhamento
de requisicoes. A solucao descrita pelo design pattern serve de base a implementacao de
configuracoes arquiteturais.
O restante deste trabalho esta estruturado como se segue. A secao 2 aborda con-
ceitos basicos de arquitetura de software e patterns. A secao 3 apresentada a descricao
detalhada do design pattern Architecture Configurator. Por fim, na secao 4, sao apresen-
tadas as conclusoes do trabalho realizado, alem das perspectivas de trabalhos futuros.

2. Patterns e Arquiteturas de Software


Uma breve descricao dos fundamentos de patterns e arquiteturas de software sao apresen-
tados nesta secao
2.1. Arquiteturas de Software

Um sistema de software pode ser concebido a partir da descricao de uma arquitetura do


mesmo em termos dos componentes e suas interacoes [Shaw et al. 1996]. Tal arquite-
tura especifica a estrutura do sistema e sua topologia, mostrando a correspondencia entre
os requisitos do sistema e os seus elementos. Componentes e suas interacoes, as quais
chamamos conectores, sao definidos atraves de tipos abstratos (classes) e formam a estru-
tura da arquitetura. A topologia, por sua vez, e caracterizada pela configuracao, atraves
da qual instancias de componentes e conectores sao criadas e interligadas.
Alem de componentes e conectores, a porta e outro elemento fundamental que
compoe a arquitetura de um sistema de software. Portas sao objetos tipados que identifi-
cam pontos de interacao de um componente/conector e seu ambiente [Loques et al. 1999].
Elas representam a interface de componentes e conectores e permitem que estes possam
ser interligados para formar a topologia da arquitetura. Componentes, conectores e portas
podem ser definidos e especificados de forma independente uns dos outros e posterior-
mente configurados em uma arquitetura, ou ainda reutilizados em diferentes contextos.
A definicao e especificacao dos elementos de uma arquitetura componentes,
conectores, portas e feita atraves de uma ADL (Architecture Description Language).
Nela, tipos abstratos para componentes e conectores sao especificados, bem como a
instanciacao e o estabelecimento da configuracao dos mesmos

2.2. Patterns em Arquiteturas de Software

Uma forma de se conseguir bons projetos arquiteturais e o reaproveitamento da ex-


periencia adquirida de outras arquiteturas concebidas. Alguns idiomas arquiteturais con-
stituem o que pesquisadores denominam estilos arquiteturais [Monroe et al. 1996].
Um estilo arquitetural caracteriza-se por uma famlia de sistemas que estao rela-
cionados por propriedades semanticas e estruturais compartilhadas [Abowd et al. 1993].
Estilos fornecem [Shaw and Garlan 1996] (i) um vocabulario de tipos de componentes
e conectores, tais como pipes, clientes, servidores, etc.; (ii) um conjunto de restricoes
e como elas podem ser combinadas, por exemplo a especificacao de que uma arquite-
tura cliente-servidor deve suportar n clientes e um servidor; (iii) modelos semanticos que
especifiquem como determinar as propriedades do sistema como um todo a partir das
propriedades de seus elementos.
Existem patterns baseados em princpios basicos de desenvolvimento de progra-
mas estruturados, uma vez que patterns nao se dedicam apenas a orientacao a objetos. Ha
outros cujos objetivos sao voltados a construcao de sistemas de software reutilizaveis e
preparados para o tratamento de propriedades nao-funcionais [Buschmann et al. 1996].
A experiencia adquirida tem sido organizada e pode auxiliar em novas arquite-
turas, projetos e programas de software. Os estilos arquiteturais que permitem a definicao
de componentes e conectores, restricoes e regras de construcao, podem ser descritos por
patterns, no caso architectural patterns. Architectural patterns podem ser empregados
para descrever estilos arquiteturais e, portanto, auxiliar na construcao de arquiteturas. Na
pratica, o arquiteto de software adota um ou mais desses patterns para moldar sua arquite-
tura.
3. Design Pattern Architecture Configurator
Nesta secao apresentamos a descricao resumida do design pattern denominado Architec-
ture Configurator. Por se tratar de um design pattern, na versao completa da descricao
acrescentamos os elementos Estrutura, Participantes, Colaboracoes e Implementacao na
apresentacao da solucao do problema, os quais sao oriundos do formato GoF (Gang of
Four) [Gamma et al. 1994], precursor na definicao de design patterns.
O Architecture Configurator possui quatorze elementos contudo, questoes de
espaco, apenas os elementos Nome, Contexto, Exemplo, Problema e Solucao serao apre-
sentados neste trabalho.

3.1. Nome
Architecture Configurator

3.2. Contexto
A arquitetura de uma aplicacao envolve componentes e um ou mais conectores. Os com-
ponentes interagem uns com os outros, requerendo e/ou fornecendo servicos, e os conec-
tores intermediam essa interacao. Um componente, neste contexto, refere-se a um pro-
cesso, objeto, procedure, ou qualquer pedaco de codigo ou dados identificavel.

3.3. Exemplo
Como exemplo consideremos uma possvel arquitetura para a aplicacao Produtor-
Consumidor com buffer limitado (PCB) apresentada na figura 1. Ela e composta de tres
componentes (Produtor, Consumidor e Buffer) e um conector (Guarda). Os componentes
interagem, requerendo ou fornecendo algum tipo de servico, e possuem, cada um, sua
funcionalidade intrnseca (requisitos funcionais): o Produtor produz itens requerendo o
servico especfico para armazenar itens no Buffer (put); o Buffer armazena/recupera
itens fornecendo os respectivos servicos (put / get); o Consumidor consome itens
requerendo o servico especfico para retirar itens do Buffer (get).

Figura 1. Arquitetura da aplicacao Produtor-Consumidor com buffer limitado

3.4. Problema
A composicao de uma aplicacao parte do estabelecimento dos componentes envolvidos
e das suas interacoes. A definicao d e u m s istema e m t ermos d os c omponentes e das
interacoes entre estes componentes e chamada Arquitetura de um Sistema de Software
[Shaw et al. 1996], a qual e descrita atraves de uma ADL. O arquiteto, ao utilizar uma
ADL, seleciona e especifica os componentes do sistema e os c onectores. Este processo e
chamado Programacao da Configuracao, ou simplesmente, Configuracao.
Uma vez descrita a arquitetura, sua configuracao deve ser implementada, ou seja,
o mecanismo que concretiza a troca de mensagens (requisicoes e respostas) entre as
instancias de componentes e conectores deve ser estabelecido, conforme definido pela
configuracao arquitetural.

3.5. Solucao

A figura 2 apresenta uma solucao para a implementacao da configuracao da arquite-


tura de Produtor-Consumidor com buffer limitado. As classes Produtor, Consumidor e
Buffer Real representam os componentes e a classe Guarda representa o conector da ar-
quitetura. A programacao da configuracao esta representada pela classe Configuracao
(Descricao/Execucao).

Figura 2. Aplicacao Produtor-Consumidor com buffer limitado.

Configurador e uma classe relacionada a definicao da arquitetura; atraves dela sao


definidos os tipos para componentes, conectores e portas, a instanciacao e interligacao
dos mesmos, alem de permitir a execucao da aplicacao.
Configuracao (Descricao/Execucao), ou apenas Configuracao, recebe as
solicitacoes de Configurador para realizar a configuracao de componentes e conectores,
e inicia-los. Ela mantem duas categorias de informacoes: de descricao e de execucao da
arquitetura. Informacoes de descricao referem-se a arquitetura descrita atraves de uma
ADL, enquanto as informacoes de execucao relacionam-se as instancias referencias
dos componentes e conectores durante o processo de execucao da aplicacao.
A classe abstrata Handler e responsavel pelo encadeamento entre conectores e
componentes conforme a descricao arquitetural, disponibilizada por Configuracao.
As requisicoes invocadas por Produtor e Consumidor sao interceptadas pela classe
Interface Buffer, que possui a mesma interface de Buffer Real. Interface Buffer busca em
Configuracao a referencia ao conector Guarda e invoca a operacao handle() do mesmo.
Conforme a porta de entrada configurada n o c onector G uarda, h andle() in-
voca a operacao get() ou put(). Ambas operacoes tratam da sincronizacao (requisito
nao-funcional) e invocam forward() responsavel por dar seguimento ao encadeamento
controlado por Handler. Na sequencia, Buffer tem sua operacao handle() solicitada, a
qual encaminha a requisicao original para Buffer Real, finalizando o encadeamento.

4. Conclusao
Este artigo apresentou a proposta de um design pattern destinado a organizar, no nvel de
implementacao, os elementos basicos de uma arquitetura componentes, conectores e
portas de acordo com a programacao da configuracao arquitetural.
O design pattern Architecture Configurator foi concebido partindo-se da
observacao de padroes de recorrencia existentes na implementacao da configuracao ar-
quitetural e dos conectores de um sistema de software. Ele permite a implementacao
de componentes e conectores coesos quanto as suas respectivas funcionalidades e fraca-
mente acoplados quanto ao relacionamento, tornando-os independentes uns dos outros.
Suas propriedades e caractersticas apresentam-no como um suporte basico a partir do
qual pode-se realizar a implementacao de configurac oes arquiteturais.
Como trabalho futuro, pode-se destacar a investigacao de linguagens de patterns
existentes, as quais o Architecture Configurator poderia ser i ntegrado. Este pattern pode
contribuir, com seu enfoque arquitetural, no processo de desenvolvimento do sistema
de software de mesmo domnio de problema da linguagem de patterns a qual o mesmo
pertence.

Referencias
Abowd, G., Allen, R., and Garlan, D. (1993). Using style to understand descriptions of
software architecture. In Proceedings of the 1st ACM SIGSOFT Symposium on Foun-
dations of Software Engineering, SIGSOFT 93, pages 920, New York, NY, USA.
ACM.
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., Stal, M., Sommerlad, P., and
Stal, M. (1996). Pattern-oriented software architecture, volume 1: A system of pat-
terns. John Wiley and Sons.
Gamma, E., Helm, R., Johnson, R., and Vlissides, J. (1994). Design patterns: elements
of reusable object-oriented software. Pearson Education.
Loques, O., Leite, J., Lobosco, M., and Sztajnberg, A. (1999). Integrating meta-level
programming and configuration programming. In Proceedings of the 1st Workshop on
Object-Oriented Reflection and Software Engineering (OORaSE99), pages 137151.
Citeseer.
Monroe, R. T., Kompanek, A. J., Melton, R., and Garlan, D. (1996). Stylized architecture,
design patterns, and objects.
Shaw, M., DeLine, R., and Zelesnik, G. (1996). Abstractions and implementations for
architectural connections. In Configurable Distributed Systems, 1996. Proceedings.,
Third International Conference on, pages 210. IEEE.
Shaw, M. and Garlan, D. (1996). Software architecture: perspectives on an emerging
discipline, volume 1. Prentice Hall Englewood Cliffs.

Anda mungkin juga menyukai