Conforme dito no
capítulo de Introdução, uma arquitetura é uma estrutura lógica em que os
componentes são organizados e integrados (ZACHMAN, 1987). Comumente representadas
por diferentes visões (especificações e esquemas), as arquiteturas correspondem
a estruturas e direcionamentos a serem seguidos durante a implementação de
sistemas. Uma arquitetura pode se constituir em diferentes níveis de detalhes,
podendo ser mais generalista, representando um conjunto de sistemas, ou mais
específica e detalhada, representando um sistema específico. O número de visões
e o nível de abstração determinam o quão específica é uma arquitetura.
Nos últimos anos, um novo conceito relacionado à arquitetura tem se
feito presente na literatura de Engenharia de Software: arquitetura de
referência.
Arquiteturas de
Referência
Segundo Muller (2013), uma arquitetura de referência captura a
essência da arquitetura de um conjunto de softwares ou de um domínio e possui o
propósito de guiar o desenvolvimento de arquiteturas para novos sistemas ou
atualizações. Diferente do conceito mais generalista de arquitetura puramente
dita, uma arquitetura de referência tem o propósito evidente de reúso.
As arquiteturas de
referência proveem uma taxonomia comum, uma visão arquitetural compartilhada,
uma modularização e um contexto unificado (MULLER, 2013). A taxonomia contribui em facilitar a
comunicação (por exemplo, por meio de um modelo de domínio). A visão
arquitetural concentra e alinha esforços de múltiplas equipes quanto à
especificação de arquiteturas. A modularização ajuda a dividir o esforço,
permitindo que toda ou apenas parte seja usada, e o contexto único assegura uma
posterior integração na evolução do sistema.
Assim como
arquiteturas de software em geral, arquiteturas de referência podem representar
diferentes visões e considerar diferentes níveis de detalhe e de abstração.
Portanto, arquiteturas de referência podem ser definidas por meio de diferentes
artefatos e com diferentes níveis de detalhes. Consequentemente, um desafio ao
se definir uma arquitetura de referência é saber o quão suficiente ela deve ser
em sua composição e descrição.
Segundo Muller (2013), definir uma arquitetura que seja
compreendida pelas partes interessadas e que aborde as principais questões do
domínio são alguns dos direcionamentos que podem ser seguidos para construir
uma arquitetura de referência de qualidade.
No entanto,
conforme argumenta Nakagawa et al. (2009),
estabelecer arquiteturas de referência não é uma tarefa trivial. Capturar a
essência de um domínio requer um levantamento bem elaborado e uma correta
organização e apresentação das informações. Nesse sentido, o uso de ontologias
pode ser uma boa abordagem.
Nakagawa et
al. (2009) investiga os impactos do uso de ontologias
na elaboração de arquiteturas de referência e, como resultado, destaca que a
principal contribuição das ontologias está no apoio ao levantamento de
informações e entendimento do domínio. O estudo também aponta que as visões de
arquiteturas tradicionais não são suficientes para representar arquiteturas de
referência, uma vez que, de forma geral, não preveem elementos para explicar
cada conceito presente na arquitetura.
O processo de desenvolvimento de uma arquitetura de referência contém
quatro atividades principais, conforme mostra a Figura 2.9 (GALSTER
e AVGERIOU, 2011; MULLER, 2013; NAKAGAWA et
al., 2009).

Figura
2.9 - Processo de desenvolvimento de uma arquitetura
de referência (adaptado de (NAKAGAWA et al.,
2009)).
A primeira
atividade consiste no levantamento de
informações a respeito do domínio a ser tratado. Nesse momento devem ser
realizadas investigações e pesquisas para se obter a maior quantidade possível
de informações sobre o domínio em foco. O próximo passo consiste na definição da arquitetura de referência
propriamente dita, a qual deve ser descrita através de documentos e modelos,
representando as diferentes visões da arquitetura. Em seguida, ocorre a instanciação da arquitetura de
referência em arquiteturas de sistemas. Por fim, é realizada a avaliação da arquitetura, a fim de
avaliar, dentre outros, se sua descrição é satisfatória para que os
utilizadores compreendam o domínio e as visões descritas, se a modularização
permite a utilização da arquitetura em partes e se a arquitetura reflete o
estado atual do domínio. Os resultados das avaliações de instâncias de uma
arquitetura de referência fornecem informações que devem ser utilizadas para
adequá-la.
Conforme comentado anteriormente, arquiteturas de referência são
definidas principalmente visando à reutilização. Dessa forma, uma vez que uma
arquitetura de referência tenha sido definida, avaliada e considerada adequada,
espera-se que ela seja utilizada como base para a definição de arquiteturas de
software para diversos sistemas. A Figura 2.10 apresenta a visão
de Muller (2013) sobre o processo de utilização de arquiteturas de referência.

Figura
2.10 - Esquema de funcionamento da instanciação de uma
Arquitetura de Referencia (MULLER,
2013).
Uma arquitetura de referência é utilizada como base para a definição da
arquitetura de um ou mais sistemas. As diversas arquiteturas definidas para
vários sistemas compõem uma família de arquiteturas e é provável que, embora
essas arquiteturas apresentem particularidades, elas possuam uma parte
compartilhada, que é a parte presente na arquitetura de referência. As
arquiteturas de software definidas são, então, utilizadas como base para a
implementação dos sistemas, os quais são utilizados no mundo real. Os
resultados da utilização dos sistemas podem prover feedback capaz de nutrir a arquitetura de referência com
informações essenciais que podem ser utilizadas para evoluir continuamente a
arquitetura de referência.
Nenhum comentário:
Postar um comentário