Após entendermos os conceitos e a importância e termos noções de design de arquitetura de software, precisamos saber como capturar a informação do projeto e documentá-lo. Para isso, introduzimos os conceitos de visões e de pontos de vista ar-quiteturais, que facilitam a documentação por mostrar difer-entes dimensões que uma arquitetura apresenta. Este capítulo não dita uma única linguagem ou modelo de documentação de arquitetura, mas apresenta exemplos de como fazê-lo.
Este capítulo tem como objetivo fazer com que o leitor seja capaz de entender que:
• O documento de arquitetura auxilia no processo de de-sign, é uma ferramenta de comunicação entre stakehold-ers e pode servir de modelo de análise do software;
• Toda informação presente numa arquitetura é uma de-cisão arquitetural;
1This content is available online at <http://cnx.org/content/m17525/1.6/>.
Available for free at Connexions <http://cnx.org/content/col10722/1.9>
• Decisões arquiteturais podem ser existenciais, descritivas ou executivas;
• Decisões arquiteturais se relacionam, podendo restringir, impedir, facilitar, compor, conitar, ignorar, depender ou ser alternativa a outras decisões arquiteturais; e
• Um único diagrama não é suciente para conter a quan-tidade de informação que deve ser mostrada por um quiteto. Por isso, a necessidade de múltiplas visões ar-quiteturais;
8.1 Arquitetura e Documento da
Ar-quitetura
A arquitetura de um software existe independente dela ser projetada ou documentada. No entanto, ao deixarmos a ar-quitetura simplesmente emergir a partir do software, ou seja, evoluir ao longo do processo de desenvolvimento sem projeto ou documentação, corremos o risco de não tirar proveito dos benefícios que ela proporciona.
Por outro lado, apenas realizar o design arquitetural e não documentá-lo (ou documentá-lo de forma precária), pode min-imizar as vantagens a serem obtidas pela arquitetura. Isto pode ocorrer porque documentar a arquitetura, além de auxiliar o próprio processo de design, também proporciona:
• uma ferramenta de comunicação entre os stakeholders;
• a integridade conceitual ao sistema e ao processo de de-senvolvimento;
• um modelo para análise antecipada do sistema; e
• uma ferramenta de rastreabilidade entre os requisitos e os elementos do sistema.
8.1.1 Auxílio ao Processo de Design
Apesar de dividirmos conceitualmente o processo de design do processo de documentação, é comum que ambos aconteçam em paralelo na prática. Quando isto ocorre, a documentação ajuda no design, principalmente no sentido de separação de preocupações.
Ao documentarmos visões arquiteturais diferentes separada-mente, preocupamo-nos separadamente com o design de difer-entes aspectos do software. Entre os diversos aspectos de um software, podemos citar os aspectos funcionais, de dados, de concorrência, de desenvolvimento, de implantação e opera-cionais. Esta separação se torna benéca porque há diferentes linguagens, que podem ser grácas ou textuais, que melhor se encaixam à descrição de cada aspecto, ajudando não só numa melhor representação, como também numa melhor modelagem e avaliação em relação aos objetivos.
A seguir, vemos dois exemplos que ilustram a documentação de algumas decisões arquiteturais relacionadas a aspectos difer-entes do SASF. No p. 191, podemos observar como o SASF está dividido em grandes módulos funcionais e, assim, pode-mos inferir quais são suas principais funcionalidades e algumas de suas relações entre si. Podemos dizer que as decisões ar-quiteturais do exemplo são apresentadas sob o ponto de vista funcional do sistema, constituindo uma visão funcional do soft-ware. Note também que esta não é a melhor forma de repre-sentar, por exemplo, que o desenvolvimento do cadastro dos usuários será terceirizado ou ainda que o serviço de transmis-são de vídeos deve executar em 7 servidores durante dias úteis e em 15 servidores nos nais de semana e feriados, quando demanda aumenta.
Exemplo 8.1
grandes módulos funcionais. Cada módulo é respon-sável por prover um conjunto de funcionalidades rela-cionadas entre si. Os grandes módulos do SASF são:
• Locadora de Filmes;
• Transmissor de Filmes;
• Motor de Sugestões;
• Cadastro de Usuários;
• Cadastro de Filmes.
As principais funcionalidades providas por cada mó-dulo e suas relações de uso estão descritas no diagrama representado na Figura 8.1.
Figura 8.1: Módulos funcionais do SASF. O estereótipo
Módulo do diagrama indica os módulos funcionais
que compõem o sistema. Já o estereótipo usa
in-dica relações de uso entre os módulos para que pos-sam implementar suas funções. Por m, o estereótipo
especialização indica uma relação de especialização dos dados guardados no elemento responsável pelo cadas-tro.
Objetivos: A divisão em módulos funcionais possibilita a divisão da implementação entre os times de desen-volvimento de acordo com a especialidade de cada time. Motivação: As diversas funções a serem providas pelo SASF foram agrupadas em preocupações comuns
(cadastro de dados, locação e transmissão de lmes, e sugestões ao usuário). O cadastro deve ser especial-izado em dois tipos para dividir o esforço de desenvolvi-mento: cadastro de lmes e de usuários. O motor de sugestões deve ser alimentado com dados de histórico de locações do usuário e informações sobre a base de lmes no sistema.
No Exemplo 8.2, mostramos o SASF sob um ponto de vista de implantação. Neste exemplo, podemos observar informações de conguração para implantação de serviços para executar o SASF informações que estavam ausentes no exemplo anterior.
Exemplo 8.2
[Decisão Arquitetural 002] A implantação do mó-dulo que implementa as funcionalidades do serviço de transmissão de lmes deve depender apenas de um parâmetro:
• endereços.servidores.conguração: lista de en-dereços IP dos servidores que constituem o serviço de conguração do SASF.
Os outros parâmetros de conguração devem ser obti-dos a partir da comunicação com o serviço de congu-ração.
Objetivos: Facilitar a operabilidade do sistema. Motivação: O serviço de conguração do SASF, que é descrito em detalhes na [Decisão Arquitetural 011], é um centralizador da conguração do sistema. Nele, o operador do sistema insere endereços de serviços para que estejam disponíveis para a conguração de uma nova instância. Quando a instância do serviço de transmissão de lmes é iniciada, ela faz requisições ao