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


Nenhum comentário:
Postar um comentário