Arquitetura de Software Visão Geral
Introdução Um ponto crítico no projeto e na construção de todo o sistema de software é sua arquitetura:  isto é, sua organização bruta como uma coleção de componentes de interação.  Uma boa arquitetura pode permitir que um sistema satisfaça às exigências chaves em áreas como: o desempenho, a confiabilidade, a portabilidade, a escalabilidade, e a sua interoperabilidade.  Uma arquitetura má pode ser desastrosa.
Introdução No Passado, a arquitetura recebeu uma crescente atenção como uma sub-área importante da Engenharia de Software.  Os especialistas pregam que uma boa arquitetura é um fator crítico de sucesso para o projeto e o desenvolvimento do sistema.  Começaram a reconhecer o valor de fazer escolhas arquiteturais explícitas.
Introdução Apesar da existência de livros, artigos e ferramentas, a Arquitetura de Software todavia ainda está em uma fase  pouco  madura.
Papéis Apesar de existirem numerosas definições sobre arquitetura do software, no núcleo de tudo está a  noção de que a arquitetura de um sistema descreve sua estrutura bruta .  Esta estrutura ilumina as decisões de projeto de alto nível, incluindo coisas como: o sistema é composto das peças de interação, onde estão os principais caminhos de interação Adicionalmente, uma descrição arquitetural inclui informação suficiente para permitir a análise de alto nível e crítica do sistema.
Papéis A arquitetura do software desempenha tipicamente um papel chave como uma ponte entre requisitos e código.
Papéis Fornecendo uma descrição abstrata do sistema, a arquitetura  expõe determinadas propriedades , ao mesmo tempo que esconde outras. Idealmente, esta representação fornece um  guia de entendimento intelectual do sistema  como um todo, permitindo aos projetistas  raciocinar sobre a possibilidade do sistema satisfazer a determinadas exigências , e sugere um  blueprint  para a construção do sistema e a sua composição.
Papéis Por exemplo: uma arquitetura para um aplicação de processamento de sinal, pôde ser construída como uma rede do fluxo de dados em que os nós lêem vetores de entrada dos dados, transformam esses dados, e os escrevem aos vetores da saída. E aqui, os projetistas devem pensar em estruturas para este tipo de processamento.
Papéis Na elaboração da Arquitetura de um software, 6 papéis são desempenhados: Compreensão,  Reuso,  Construção,  Evolução,  Análise e  Gerência.
Papéis: Compreensão A arquitetura do software simplifica nossa habilidade de entender grandes sistemas apresentando-os em um alto nível do abstração de forma a ser facilmente compreendido. Além disso,  expõe  as principais  restrições  do projeto do sistema, tanto quanto o  aspecto racional  para fazer escolhas arquiteturais específicas.
Papéis: Reuso Descrições de arquiteturas suportam reuso em múltiplos níveis.  Trabalhos correntes focam geralmente em bibliotecas de componentes.  Projetos de Arquiteturas, promovem reuso em grandes componentes e em Frameworks, onde seus componentes possam ser integrados.
Papéis: Construção A Construção de uma arquiterua oferece um norte para os desenvolvedores, indicando ou apresentando os maiors componentes e suas dependências. Por exemplo: as camadas de uma arquitetura tipicamente documentam as fronteiras da implementação, expondo os maiores componentes e suas interfaces, bem como as suas principais restrições.
Papéis: Evolução A arquitetura do software pode expor as dimensões na linha do tempo da possível evolução de um sistema.  Deixa explícito "as paredes internas" de um sistema, os desenvolvedores do sistema podem melhor compreender as ramificações das mudanças, e estimar desse modo mais preciso o custo das modificações.  Além disso, as descrições arquiteturais separam interesses sobre as funcionalidade de um componente da forma com que esse componente é conectado (interage) a outros componentes.  Esta separação permite mais facilmente aos mecanismos da conexão obter um maior reuso e interoperabilidade.
Papéis: Análise As descrições arquiteturais fornecem novas facilidades para a tarefa de análise tais como: a consistência do sistema,  o conformidade dos atributos da qualidade, a análise da dependência e  A análises específicas de domínio para identificar arquiteturas semelhantes.
Papéis: Gerência A avaliação crítica de uma arquitetura conduz tipicamente a uma grande compreensão das exigências, das estratégias da execução, e de riscos potenciais a serem enfrentados na implementação de um sistema de software.
No Passado ad hoc affair. As descrições confiaram nos diagramas informais tipo da caixa, que raramente sofreram atualizações após o sistema ter sido construídos. As escolhas arquiteturais eram feitas de forma idiosincrática - tipicamente adaptando algum projeto já existente, sendo este apropriado ou não. Os autores começaram a observar: determinados princípios de unificação nos projetos de arquitetura de software,  a chamar a arquitetura como um campo especial necessidade da atenção e a estabelecer um vocabulário de trabalho para os arquitetos do software.
No Passado Os vendedores da ferramenta começaram a pensar firmemente na produção de software para o suporte a esta área.  Os projetistas de linguagens começaram a considerar notações para a representação arquitetural.
No Passado Dentro da indústria, duas tendências destacaram a importância da arquitetura.  A primeira era o reconhecimento da necessidade de um repositório compartilhado dos métodos, das técnicas, dos padrões de testes e das linguagens para estruturar sistemas de software complexos. A segunda tendência foi o interesse em explorar similaridades em domínios específicos para fornecer estruturas reusáveis para famílias de produto (Frameworks)
Um Passado menos distante Linguagens de Descrição de Arquiteturas (ADL) e ferramentas Linhas de Produtos e Padrões Codificação e Disseminação
Um Passado menos distante Linguagens de Descrição de Arquiteturas (ADL) e ferramentas. O informalidade da maioria das descrições tipo  caixa-e-linha  de projetos arquiteturais conduz a um grande número de problemas!
Linguagens de Descrição de Arquiteturas (ADL) Adage,  Aesop,  C2, Darwin, Rapide,  SADL,  UniCon, Meta-H, Wright [3]  e etc.... Cada uma dessas ADLs fornecem um esepcífico conjunto de funcionalidades.
Linguagens de Descrição de Arquiteturas (ADL) Adage  oferece suporte a arquiteturas de  frameworks  para navegação aérea. Aesop  suporta o uso de estilos arquiteturais. C2  oferece suporte a descrição de interfaces baseadas em eventos. Darwin  dá suporte para análise na troca de mensagens em sistemas distribuídos. Meta-H  oferece heurísticas para projetistas de controles de software de tempo rela para aviação. Rapide  permite simular a analisar projetos de arquiteturas. etc
Pontes
Linhas de Produtos e Padrões O que são linhas de produtos? São produtos que apresentam similaridades nas suas especificações. Entretanto, em uma abordagem de  linha de produto , deve-se também considerar requisitos para a uma família de sistemas, e o relacionamento entre eles.
Codificação e Disseminação Um problema inicial para o avanço de projetos arquiteturais como uma disciplina da engenharia de software era a falta do compartilhamento de conhecimento sobre arquiteturas e técnicas para desenvolver estas arquiteturas. Uma boa saída foi uso e padrões tipo (pipes and filters, blackboard, MVC e outros).
Tendências atuais Uso mais constante de XML para prover integração de arquiteturas. Processamento distribuído. Computação Pervasiva É uma área recente de pesquisa, considerada o novo paradigma do século XXI, que visa fornecer uma computação onde se deseja, quando se deseja, o que se deseja e como se deseja, através da virtualização de informações, serviços e aplicações. Este ambiente computacional consiste de uma grande variedade de dispositivos de diversos tipos, móveis ou fixos, aplicações e serviços interconectados. Uma das tecnologias para suportar este novo ambiente computacional pode ser a computação distribuída em larga escala, objeto foco da computação em grade

Visão Geral Arquiteturade Software

  • 1.
  • 2.
    Introdução Um pontocrítico no projeto e na construção de todo o sistema de software é sua arquitetura: isto é, sua organização bruta como uma coleção de componentes de interação. Uma boa arquitetura pode permitir que um sistema satisfaça às exigências chaves em áreas como: o desempenho, a confiabilidade, a portabilidade, a escalabilidade, e a sua interoperabilidade. Uma arquitetura má pode ser desastrosa.
  • 3.
    Introdução No Passado,a arquitetura recebeu uma crescente atenção como uma sub-área importante da Engenharia de Software. Os especialistas pregam que uma boa arquitetura é um fator crítico de sucesso para o projeto e o desenvolvimento do sistema. Começaram a reconhecer o valor de fazer escolhas arquiteturais explícitas.
  • 4.
    Introdução Apesar daexistência de livros, artigos e ferramentas, a Arquitetura de Software todavia ainda está em uma fase pouco madura.
  • 5.
    Papéis Apesar deexistirem numerosas definições sobre arquitetura do software, no núcleo de tudo está a noção de que a arquitetura de um sistema descreve sua estrutura bruta . Esta estrutura ilumina as decisões de projeto de alto nível, incluindo coisas como: o sistema é composto das peças de interação, onde estão os principais caminhos de interação Adicionalmente, uma descrição arquitetural inclui informação suficiente para permitir a análise de alto nível e crítica do sistema.
  • 6.
    Papéis A arquiteturado software desempenha tipicamente um papel chave como uma ponte entre requisitos e código.
  • 7.
    Papéis Fornecendo umadescrição abstrata do sistema, a arquitetura expõe determinadas propriedades , ao mesmo tempo que esconde outras. Idealmente, esta representação fornece um guia de entendimento intelectual do sistema como um todo, permitindo aos projetistas raciocinar sobre a possibilidade do sistema satisfazer a determinadas exigências , e sugere um blueprint para a construção do sistema e a sua composição.
  • 8.
    Papéis Por exemplo:uma arquitetura para um aplicação de processamento de sinal, pôde ser construída como uma rede do fluxo de dados em que os nós lêem vetores de entrada dos dados, transformam esses dados, e os escrevem aos vetores da saída. E aqui, os projetistas devem pensar em estruturas para este tipo de processamento.
  • 9.
    Papéis Na elaboraçãoda Arquitetura de um software, 6 papéis são desempenhados: Compreensão, Reuso, Construção, Evolução, Análise e Gerência.
  • 10.
    Papéis: Compreensão Aarquitetura do software simplifica nossa habilidade de entender grandes sistemas apresentando-os em um alto nível do abstração de forma a ser facilmente compreendido. Além disso, expõe as principais restrições do projeto do sistema, tanto quanto o aspecto racional para fazer escolhas arquiteturais específicas.
  • 11.
    Papéis: Reuso Descriçõesde arquiteturas suportam reuso em múltiplos níveis. Trabalhos correntes focam geralmente em bibliotecas de componentes. Projetos de Arquiteturas, promovem reuso em grandes componentes e em Frameworks, onde seus componentes possam ser integrados.
  • 12.
    Papéis: Construção AConstrução de uma arquiterua oferece um norte para os desenvolvedores, indicando ou apresentando os maiors componentes e suas dependências. Por exemplo: as camadas de uma arquitetura tipicamente documentam as fronteiras da implementação, expondo os maiores componentes e suas interfaces, bem como as suas principais restrições.
  • 13.
    Papéis: Evolução Aarquitetura do software pode expor as dimensões na linha do tempo da possível evolução de um sistema. Deixa explícito "as paredes internas" de um sistema, os desenvolvedores do sistema podem melhor compreender as ramificações das mudanças, e estimar desse modo mais preciso o custo das modificações. Além disso, as descrições arquiteturais separam interesses sobre as funcionalidade de um componente da forma com que esse componente é conectado (interage) a outros componentes. Esta separação permite mais facilmente aos mecanismos da conexão obter um maior reuso e interoperabilidade.
  • 14.
    Papéis: Análise Asdescrições arquiteturais fornecem novas facilidades para a tarefa de análise tais como: a consistência do sistema, o conformidade dos atributos da qualidade, a análise da dependência e A análises específicas de domínio para identificar arquiteturas semelhantes.
  • 15.
    Papéis: Gerência Aavaliação crítica de uma arquitetura conduz tipicamente a uma grande compreensão das exigências, das estratégias da execução, e de riscos potenciais a serem enfrentados na implementação de um sistema de software.
  • 16.
    No Passado adhoc affair. As descrições confiaram nos diagramas informais tipo da caixa, que raramente sofreram atualizações após o sistema ter sido construídos. As escolhas arquiteturais eram feitas de forma idiosincrática - tipicamente adaptando algum projeto já existente, sendo este apropriado ou não. Os autores começaram a observar: determinados princípios de unificação nos projetos de arquitetura de software, a chamar a arquitetura como um campo especial necessidade da atenção e a estabelecer um vocabulário de trabalho para os arquitetos do software.
  • 17.
    No Passado Osvendedores da ferramenta começaram a pensar firmemente na produção de software para o suporte a esta área. Os projetistas de linguagens começaram a considerar notações para a representação arquitetural.
  • 18.
    No Passado Dentroda indústria, duas tendências destacaram a importância da arquitetura. A primeira era o reconhecimento da necessidade de um repositório compartilhado dos métodos, das técnicas, dos padrões de testes e das linguagens para estruturar sistemas de software complexos. A segunda tendência foi o interesse em explorar similaridades em domínios específicos para fornecer estruturas reusáveis para famílias de produto (Frameworks)
  • 19.
    Um Passado menosdistante Linguagens de Descrição de Arquiteturas (ADL) e ferramentas Linhas de Produtos e Padrões Codificação e Disseminação
  • 20.
    Um Passado menosdistante Linguagens de Descrição de Arquiteturas (ADL) e ferramentas. O informalidade da maioria das descrições tipo caixa-e-linha de projetos arquiteturais conduz a um grande número de problemas!
  • 21.
    Linguagens de Descriçãode Arquiteturas (ADL) Adage, Aesop, C2, Darwin, Rapide, SADL, UniCon, Meta-H, Wright [3] e etc.... Cada uma dessas ADLs fornecem um esepcífico conjunto de funcionalidades.
  • 22.
    Linguagens de Descriçãode Arquiteturas (ADL) Adage oferece suporte a arquiteturas de frameworks para navegação aérea. Aesop suporta o uso de estilos arquiteturais. C2 oferece suporte a descrição de interfaces baseadas em eventos. Darwin dá suporte para análise na troca de mensagens em sistemas distribuídos. Meta-H oferece heurísticas para projetistas de controles de software de tempo rela para aviação. Rapide permite simular a analisar projetos de arquiteturas. etc
  • 23.
  • 24.
    Linhas de Produtose Padrões O que são linhas de produtos? São produtos que apresentam similaridades nas suas especificações. Entretanto, em uma abordagem de linha de produto , deve-se também considerar requisitos para a uma família de sistemas, e o relacionamento entre eles.
  • 25.
    Codificação e DisseminaçãoUm problema inicial para o avanço de projetos arquiteturais como uma disciplina da engenharia de software era a falta do compartilhamento de conhecimento sobre arquiteturas e técnicas para desenvolver estas arquiteturas. Uma boa saída foi uso e padrões tipo (pipes and filters, blackboard, MVC e outros).
  • 26.
    Tendências atuais Usomais constante de XML para prover integração de arquiteturas. Processamento distribuído. Computação Pervasiva É uma área recente de pesquisa, considerada o novo paradigma do século XXI, que visa fornecer uma computação onde se deseja, quando se deseja, o que se deseja e como se deseja, através da virtualização de informações, serviços e aplicações. Este ambiente computacional consiste de uma grande variedade de dispositivos de diversos tipos, móveis ou fixos, aplicações e serviços interconectados. Uma das tecnologias para suportar este novo ambiente computacional pode ser a computação distribuída em larga escala, objeto foco da computação em grade