17 maio, 2015

Projeto Arquitetural

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