Um aspecto importante quando se trata de arquiteturas de software são os requisitos de qualidade que a arquitetura escolhida deve satisfazer. Em geral, a escolha de uma arquitetura é guiada por esses requisitos que devem ser atendidos. Por exemplo, se escalabilidade é importante para o sistema, então a arquitetura escolhida deve ser flexível a ponto de entregar a mesma qualidade do serviço mesmo quando o número de requisições aumentar bastante. Muitas vezes, o atendimento a um determinado requisito de qualidade compromete outros, assim deve-se cuidar para obter um bom balanceamento entre eles.
Uma forma de avaliar arquiteturas de software é o método SAAM. O objetivo desse métodos é indicar se uma determinada arquitetura estabelecida para um sistema atenderá os requisitos de qualidade esperados.
3.6.1 Método de Avaliação SAAM
O método de análise de arquiteturas de software SAAM (Scenario-Based Architecture Analysis Method) foi desenvolvido por Kazman et al. (1994). Esse método utiliza a descrição e investigação de cenários para conduzir avaliações de arquiteturas de software quanto a aspectos de qualidade. O objetivo deste método é fornecer meios para caracterizar o quão bem um projeto arquitetural atende a atributos de qualidade específicos colocados por um conjunto de cenários. Um cenário é uma sequência específica de etapas que envolvem o uso ou a modificação do sistema. As principais etapas do SAAM são:
Desenvolvimento dos Cenários: Um cenário é definido como uma descrição resumida de um determinado uso pretendido de um sistema. Diferentes tipos de cenários de avaliação devem ser desenvolvidos nesta fase. Cada um tem de ser definido com o propósito explícito de revelar como o sistema se comporta em relação a um determinado tipo de requisito. Os cenários são normalmente desenvolvidos pelas partes interessadas (usuários, administrador de sistemas, desenvolvedores, etc.).
Descrição das Arquiteturas Candidatas: Nessa fase devem ser apresentadas todas as arquiteturas, quando houver mais de uma, candidatas a atender aos propósitos do sistema em questão. As arquiteturas devem ser bem descritas, de forma bem simples
utilizando-se uma notação onde a estrutura de componentes e relacionamentos fique bem compreendida a todos os participantes interessados.
Classificação dos cenários: Os cenários podem ser de dois tipos: (i) cenários diretos, envolvem situações de uso suportadas pela arquitetura e (ii) cenários indiretos, envolvem situações que requerem ajuste na arquitetura para que possam ser suportados. O cenário direto é adequado para avaliações de comportamento e de desempenho da arquitetura, enquanto que o cenário indireto vai dar um passo adiante no sentido de avaliar impactos de mudança. Portanto, essa segunda categoria indica a necessidade e a extensão das modificações.
Avaliação dos cenários indiretos: as mudanças necessárias para que a arquitetura possa apoiar cada cenário indireto são especificadas e ponderadas em relação a dificuldade e o custo de execução.
Avaliação da interação dos cenários: Uma interação de dois cenários indiretos ocorre quando eles exigem uma mudança no mesmo componente da arquitetura. Levando-se em conta a relação semântica entre os cenários, uma exploração de sua interação é indicada para revelar a complexidade estrutural da arquitetura, e o acoplamento/coesão de seus componentes.
Avaliação global: Nesta etapa é produzido um ranking das arquiteturas candidatas. Este deve refletir o comportamento global da arquitetura no que diz respeito a todos os cenários (atributos de qualidade). Os avaliadores devem realizar a pontuação final de acordo com a importância de cada cenário.
3.6.2 Método de Avaliação ATAM
O método de análise de arquiteturas de software ATAM foi desenvolvido por Kazman et al. (2000). O ATAM é claramente uma especialização e evolução do método SAAM e seu o objetivo é avaliar as consequências das decisões arquiteturais frente aos atributos de qualidade dos requisitos arquiteturais. Em arquiteturas de software, ao se modificar uma característica de qualidade outras também são alteradas. Em virtude disso, é necessária uma analise para se encontrar a melhor alternativa que minimize os efeitos das consequências de uma decisão, ou seja produzir o melhor tradeoff das características relevantes ao contexto em que a arquitetura de software está inserida.
Atributos baseados em estilo arquitetural. O ATAM utiliza um estilo arquitetural chamado estilo arquitetural baseado em atributo (ABAS). O ABAS é um método para elaboração de arquiteturas de software baseado em estilos arquiteturais. O foco principal está nos tipos de componentes e padrões de interação que são particularmente relevantes para os atributos de qualidade, tais como o desempenho, a confiabilidade, a segurança ou a disponibilidade. O método consiste de um framework conceitual para realizar uma análise qualitativa e quantitativa sobre estilos arquiteturais relacionados a atributos de qualidade. Estilos arquiteturais podem ser usados como blocos de construção para projetar e analisar as arquiteturas de software. O enfoque é tornar mais explícitos os fatores que influenciam um projeto arquitetural. A composição de estruturas por meio de blocos vai oferecer a base para um raciocínio mais preciso e eficiente para a tomada de decisões sobre um determinado projeto arquitetural (KLEIN, 1999).
Caracterização de atributos de qualidade, divididos em três categorias: Estímulos externos
Decisões arquiteturais Respostas
Cenários:
Cenários de caso de uso: Envolvem o uso de sistemas existentes e são usados para obter informações de elicitação;
Cenários de crescimento: Abrangem mudanças previstas para a arquitetura; Cenários exploratórios: Abrangem alterações extremas onde se espera um
“estresse” do sistema.
A realização do método ATAM é composta de quatro fases, divididas em nove etapas, conforme é apresentado a seguir:
Fase 1: Apresentação
1. Apresentação: O método deve ser apresentado à equipe que irá utilizá-lo (equipe de arquitetos de software, desenvolvedores, administradores, gerentes, testadores, etc).
2. Apresentação dos objetivos de negocio: O gerente de projetos descreve os objetivos de negócio que estão motivando o esforço de desenvolvimento e, portanto, quais serão as diretivas primárias de arquitetura, por exemplo, de alta disponibilidade ou tempo de comercialização ou de alta segurança.
3. Apresentação da arquitetura atual. O arquiteto irá descrever a arquitetura proposta, centrada na forma como ele trata as diretivas de negócios. Investigação e Análise.
4. Identificação das abordagens arquiteturais. As abordagens arquiteturais são identificadas pelo arquiteto, mas não são analisadas.
Fase 2: Investigação e Análise
5. Gerar a árvore de atributos qualidade: A árvores de atributos de qualidade fornece um mecanismo top-down para traduzir diretamente e de forma eficiente as diretivas de negócio de um sistema em cenários concretos de atributos de qualidade. Nessa etapa, a árvore qualidade é criada e os fatores de qualidade (desempenho, disponibilidade, segurança, modificabilidade, etc) são extraídos e caracterizados como: estímulos, decisão ou de respostas e, por fim são priorizados.
6. Analisar as abordagens arquitetônicas: Com base nos fatores de prioridade identificadas na etapa 5, as abordagens de arquitetura que suportam esses fatores são extraídas e analisadas (por exemplo, uma abordagem arquitetônica que visa cumprimento de metas de desempenho será submetida a uma análise de desempenho). Durante esta etapa, os riscos de arquitetura, pontos de sensibilidade e pontos de trade-off são identificados.
Fade 3: Testes
7. Brainstorm de cenários. Baseado nos cenários de exemplo gerados na etapa 4 da árvore de qualidade, um conjunto maior de cenários é induzida a partir de todo a equipe envolvida. Este conjunto de cenários é priorizado novamente por meio de um processo de votação que envolve todo o grupo.
8. Analisar as abordagens arquitetônicas. Este passo reafirma a etapa 6, mas aqui os cenários priorizados na Etapa 7 são considerados casos de teste para a análise das abordagens arquiteturais determinadas até o momento. Com esses cenários de teste pode-se descobrir novas abordagens arquitetônicas, riscos, pontos de sensibilidade e pontos de trade-off, que deverão documentados.
Fase 4: Reportar os Resultados
9. Apresentação dos resultados. Com base nas informações colhidas nos ATAM (estilos, cenários, questões específicas de atributos, a árvore de qualidade, riscos, pontos de sensibilidade, compensações) a equipe ATAM apresenta os resultados para as partes interessadas e, escreve um relatório que detalha essas informações, juntamente com a proposta e todas as estratégias da solução.
Figura 3.5: Arvore de atributos de qualidade, Kazman et al. (2000).
Conforme é mostrado na Figura 2.9, cada nó folha recebe um fator de prioridade, normalmente a abordagem mais comum é atribuir os referenciais Alto, Médio e Baixo (High, Medium, Low). A priorização da árvore de atributos de qualidade é feita em duas dimensões, (i) pela importância que o atributo representa a arquitetura e (ii) e pelo grau de risco que envolve a incorporação do atributo de qualidade a arquitetura, ou seja, a complexidade de modificação necessária para incorporar o atributo de qualidade a arquitetura. Por exemplo, o cenário de desempenho: "minimize storage latency on customer" recebeu a prioridade (M,L) médio, baixo, o que significa que esse cenário é de importância média para o projeto e de baixo risco para incluir na arquitetura. Já o cenário: "deliver video in real time" recebeu a prioridade (H,M) alta, média, o que significa que esse cenário é de alta importância para o projeto e de risco médio para sua inclusão na arquitetura.
Nesse capítulo foram abordados conceitos de engenharia de software muito importantes para o estabelecimento de Arquiteturas de Referência. Uma parte da arquitetura de referência proposta neste trabalho consiste em propor uma estrutura com os elementos necessários para prover as funcionalidades de autoadaptação aos RMAs. No próximo capítulo será apresentado o conceito de Teoria do Controle que, mais especificamente, aborda as técnicas utilizadas em sistema autoadaptativos.