1 / 26

Arquitetura de Software

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.

Download Presentation

Arquitetura de Software

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Arquitetura de Software Visão Geral

  2. 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.

  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 da existência de livros, artigos e ferramentas, a Arquitetura de Software todavia ainda está em uma fase pouco madura.

  5. 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.

  6. Papéis • A arquitetura do software desempenha tipicamente um papel chave como uma ponte entre requisitos e código.

  7. 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.

  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ção da 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 • 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.

  11. 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.

  12. 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.

  13. 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.

  14. 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.

  15. 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.

  16. 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.

  17. 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.

  18. 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)

  19. Um Passado menos distante • Linguagens de Descrição de Arquiteturas (ADL) e ferramentas • Linhas de Produtos e Padrões • Codificação e Disseminação

  20. 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!

  21. 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.

  22. 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

  23. Pontes

  24. 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.

  25. 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).

  26. 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

More Related