Fundamentos da Análise Arquitetural
Trata de modelos que ajuda o implementador a construir o software.
Questões Principais
Como decompor um sistema em diversos pacotes e subsistemas?
Quais classes devem estar em cada subsistema de forma a permitir mais reutilização de subsistemas?
- Quais dependências entre os subsistemas?
Quais os conectores devem ser usados entre os subsistemas?
Como distribuir cada um dos subsistemas em diferentes nós de processamento?
Apenas um subsistema em cada maquina ou mais de um?
- Qual o impacto no resto do sistema se agruparmos ou separarmos subsistemas em diferentes nós?
Propriedades do sistema
- Escala: número de usuários
- Capacidade: de atender ao um certo número de requisições
- Degradação: como o sistema se comporta (degrada) se a capacidade for ultrapassada
- Desempenho
- Portabilidade
Projeto arquitetural identifica:
- Componentes: definem onde ocorre o processamento;
- Conectores: mediam as interações entre os componentes;
- Propriedades: informações para a construção e análise;
Modelo “4+1” visões arquiteturais
- Visão de projeto ou lógica: estamos interessados em definir a funcionalidade do sistema, vocabulário dos objetos de negócio do sistema
- Visão de implementação ou componentes: definir o gerenciamento da configuração, quais os elementos que vão fazer parte da configuração do sistema. Aqui definimos como fazer o build do sistema.
- Visão de processo: interessados na visão de execução do sistema, nessa etapa que nos preocupamos com as propriedades do sistema (acima).
- Visão de implantação: mostra como os componentes de software estão mapeados pelos componentes de hardware. (Topologia, distribuição, fornecimento, instalação, etc)
- Visão de caso de uso: diagrama de casos de uso.
A visões são como as diferentes visões de uma casa, como a planta baixa, projeto elétrico, projeto hidráulico, maquete 3D, etc.
Pontos de Variação e Evolução
- Pontos de Variação: variações previstas nos requisitos do sistema.
- Ponto de evolução: pontos especulativos de variação que podem surgir no futuro mas que não estão presentes nos requisitos existentes.
Passos para fazer análise arquitetural:
- Identificar e analisar os requisitos não-funcionais e funcionais
- Analisar alternativas e criar soluções que resolvam o impacto, documentando as decisões arquiteturais
Fatores arquiteturais
Segurança
Como o controle de segurança afeta o projeto do sistema para evitar uso indevido do sistema?
Confiabilidade, tolerância a falhas
Como os requisitos de confiabilidade e tolerância a falhas afetam o projeto?
Custo
Custo de software de terceiros adquiridos vai afetar os lucros, etc.
Adaptabilidade, configurabilidade
Como afetam o projeto?
Desempenho, capacidade e degradação
Como afetam o projeto?
Usabilidade
Como impacta no projeto?
Restrições de projeto
Como as interfaces externas com outros sistemas, o ambiente de desenvolvimento e execução impactarão na solução?
Restrições de Processo
Como a documentação exigida, normas e processos a serem seguidos no desenvolvimento vão impactar a arquitetura?
Padrões Arquiteturais
São formas conhecidas para se estruturar um sistema. Se diferem um dos outros nos componentes, nas formas de conexão e formas de se conectar.Categorias de padrões arquiteturais
Sistemas de fluxo de dados;
Disponibilidade dos dados controla a computação;
- Estrutura baseia-se na transferência ordenada de dados entre componentes;
- Não há outra forma de interação entre componentes;
- Variações: Batch sequencial, pipe-e-filtro e padrão de camadas;
Exemplo: comunicação entre camadas de redes (ISO/OSI)
Sistemas de chamada-e-retorno;
Sistema em rede;
Cliente-servidor:
Em geral, clientes iniciam as computações e interagem com usuários. Servidores: executam as computações e provêm recursos.
P2P
Componentes executam em máquinas distintas;
- Cada componente age como ambos, cliente e servidor.
- Em geral, existe um servidor centralizado onde os componentes se registram.
É um padrão resiliente. Tolera a remoção de componentes.
Sistemas interativos;
- Repositórios;
Sistemas orientados a serviços;
Componentes são serviços de organizações possivelmente diferentes (provedores).
- Conectores são XML
- Aplicações que requisitam os serviços, são os consumidores
- Existe um diretório de serviços (banco de dados) onde eles podem ser descobertos
Requisitante pode ser uma aplicação, web service, mobile, etc.
Computação nas nuvens
Funcionalidade é toda através de serviços
- Está fora da empresa que necessita do serviço
- As maquinas são virtualizadas. Configuradas de acordo com a necessidade, como o S.O.
- Os recursos são escaláveis
- Gerenciamento
Serviços são providos no modelo de pilha
IaaS: Infra Ex: EC2 (Amazon)
- PaaS: Plataforma Ex: Google AppEngine, MS Azure
- SaaS: Software (Aplicação) Ex: SalesForce
Arquitetura na UML
Voltar no modelo 4+1
Visão de casos de uso
É um resumo dos casos de uso mais significativos
- Ilustra a cobertura arquitetural mais significativa
O caso de uso “Processar Venda” exercita vários elementos arquiteturais, por isso, é interessante detalhar. Podemos incluir realizações, contratos de operação, diagramas de interação.
Visão lógica ou de projeto
Mostra a organização conceitual do software, em termos de camadas, subsistemas, pacotes, frameworks, classes importantes.
É uma visão para o modelo de projeto do RUP
Visão de implementação ou de componentes
Inclui os componentes utilizados para montar e entregar o sistema físico
Um componente de software é uma unidade indivisível de um sistema. Ex: Banco de dados, navegador web.
Podem ser substituídos por outros componentes que fazem a mesma coisa
- Caixa preta com interface bem definida
Fornece ou requisita serviços a outros componentes
Visão de implantação
Representa a topologia física do sistema e componentes que são executados nessa topologia. Mostra um mapeamento entre elementos de hardware e software.
Elementos do diagrama são os nós de processamento e conexões.
Nós: processadores, sensores, etc. (executam software)
- Conexões: meio físicos de comunicação (cabos), ou protocolos (tcp, etc)
Arquitetura na UML
Como representar arquitetura na UML, utiliza os conceitos de:
Pacotes
É um mecanismo para agrupar vários artefatos de um modelo
- Podem conter outros pacotes
Podem existir relacionamentos entre pacotes
Interfaces
É um conjunto de especificações de serviço
- Não contém estrutura interna (diferente de uma classe abstrata)
Quando uma classe implementa as operações de uma interface, a classe realiza essa interface
Subsistemas