quinta-feira, 24 de julho de 2014

Dissertação - Arquiteturas para Medição de Software


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