segunda-feira, 31 de janeiro de 2011

Grafos: introdução

Introdução à Arquitetura de Software

Arquitetura de Software - Definição

  • Conjunto de estruturas que formam um sistema, as suas propriedades e os seus relacionamentos
  • O conjunto de mecanismos chaves necessários à definição de um sistema
  • Objetivo: redução de risco e abstração
  • CORBA é um exemplo de arquitetura de componentes distribuídos, .NET e JEE são exemplos de arquiteturas de componentes n-tier

Arquitetura- Vantagens


  • Forma de lidar com complexidade
  • Ponto de partida para a tomada de decisões
  • Ajuda a definir as propriedades de um sistema
  • Auxilia na manutenção
  • Divide esforço
Reuso de Arquiteturas

  • JEE e ,NET são exemplos de arquiteturas genéricas de componentes de software
  • Arquiteturas definem divisão de camadas, organização de componentes e formas de comunicação entre eles. 
Arquitetura, em essência:

  • Define a estrutura de um sistema em termos de particionamento em conjuntos interrelacionados de componentes, módulos, objetos ou qualquer unidade de particionamento adotada.
  • Define comunicação entre componentes (RMI?, RPC? SOAP? HTTP?)
  • Define requisitos não funcionais (restrições técnicas, de negócio,  atributos de qualidade como portabilidade, testabilidade, usabilidade, interoperabilidade) 
  • É, por conseguinte, uma abstração das estruturas e da comunicação
Visões arquiteturais

  • Visão lógica: define os elementos significativos da arquitetura e as relações entre eles (captura a estrutura da aplicação com diagramas de classes ou de distribuição, por exemplo)
  • Visão de processo: descreve concorrência e elementos de comunicação de uma arquitetura (multi-thread, componentes replicados, comunicações síncronas e assíncronas)
  • Visão física: descreve como os processos e componentes envolvidos são mapeados ao hardware.
  • Visão de desenvolvimento: captura a organização interna dos componentes de software em um ambiente de desenvolvimento 
Visões, sob outro ponto de vista

  • Visão estrutural: classes, pacotes, subsistemas
  • Visão comportamental: diagramas de interação, DTE
  • Visão de mapeamentos físicos:  diagramas de distribuição (protocolos, servidores, etc)
Arquiteto de software
  • Gerencia conexões entre clientes, analistas, programadores
  • Conhece muito sobre Engenharia de Software, em geral
  • Alto grau de conhecimento em tecnologias
  • Muito conhecimento acerca dos riscos envolvidos
REFERÊNCIAS
    Apostila de Fundamentos de Arquitetura de Software do Prof. Marco Aurelio Mendes
    GORTON, I. Essential Software Architecture. 1a Edição, 2006, Springer.