Arquitetura de Software

686 visualizações

Publicada em

Arquitetura de Software

Publicada em: Software
  • Seja o primeiro a comentar

Arquitetura de Software

  1. 1. Prof. Marcelo H. Yamaguti (1) Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Informática Prof. Marcelo H. Yamaguti Introdução à Engenharia de Software DESENVOLVIMENTO DE SOFTWARE Projeto e Arquitetura de Software
  2. 2. PUCRS - FACIN Prof. Marcelo H. Yamaguti (2) Referências • Estude para aprofundamento no conteúdo: – SOMMERVILLE, Ian. Engenharia de Software. 9ª ed. São Paulo: Pearson, 2011. – Capítulos 6 – PFLEEGER, Shari Lawrence. Engenharia de Software: teoria e prática. 2ª ed. São Paulo: Prentice-Hall, 2004. - Capítulo 5 – IEEE. Guide to the Software Engineering Body of Knowledge. SWEBOK. Version 3. IEEE Computer Society. 2014. – Chapter 2 – BUSCHMANN, Frank. et all. A system of patterns. Chichester: John Wiley & Sons, 1996. – GAMMA, Erich; HELM, Richard; JOHNSON, Ralph; VLISSIDES, John. Design patterns: elements for reusable object-oriented software. Reading: Addison-Wesley, 1994. Introdução à Engenharia de Software
  3. 3. PUCRS - FACIN Prof. Marcelo H. Yamaguti (3) Projeto e Arquitetura • Projeto: – Preliminar: foco no projeto da arquitetura do software. – Detalhado: foco no projeto dos componentes (módulos) de software. Projeto preliminar Introdução à Engenharia de Software Análise Especificação de requisitos Arquitetura O QUE COMO Projeto detalhado Componentes COMO
  4. 4. PUCRS - FACIN Prof. Marcelo H. Yamaguti (4) Projeto da arquitetura • A arquitetura de software envolve o conjunto de decisões que definem a organização do sistema objetivando: – definir os elementos estruturais e suas interfaces de modo a estabelecer a composição do sistema; – estabelecer o comportamento pela colaboração entre estes elementos; – compor estes elementos estruturais e comportamentais em subsistemas (agregação). Introdução à Engenharia de Software
  5. 5. PUCRS - FACIN Prof. Marcelo H. Yamaguti (5) Requisitos e Arquitetura de SW • Apesar dos requisitos funcionais definirem as principais características do funcionamento do software, os requisitos não-funcionais têm forte influência na definição da arquitetura do software: – Usabilidade – Confiabilidade – Desempenho – Facilidade de suporte Introdução à Engenharia de Software
  6. 6. PUCRS - FACIN Prof. Marcelo H. Yamaguti (6) Aspectos chave • Além dos requisitos não-funcionais o projetista (arquiteto) deve estar atento aos seguintes aspectos chave no projeto do software: – Concorrência – Controle e tratamento de eventos – Persistência de dados – Distribuição de componentes – Tratamento de exceções e tolerância a falhas – Interação e apresentação (IHC) – Segurança Introdução à Engenharia de Software
  7. 7. PUCRS - FACIN Prof. Marcelo H. Yamaguti (7) Interface com o usuário • O projeto de interface com o usuário é uma parte importante do processo de projeto do software. • O projeto da IHC (Interface Humano-Computador) ou UX (User eXperience) envolve: – Princípios gerais de projeto de interface com o usuário (Ex.: facilidade de aprendizado, consistência, ...) – Modalidades de interação com o usuário (Ex.: menus, manipulação direta, formulários, ...) – Projeto da apresentação da informação (Ex.: uso de cores, fontes de letras, ...) Introdução à Engenharia de Software
  8. 8. PUCRS - FACIN Prof. Marcelo H. Yamaguti (8) Visões de arquitetura • Dificilmente um único modelo ou visão consegue representar todos os aspectos de uma arquitetura. • Philippe Krutchen propôs a visão 4+1: Introdução à Engenharia de Software Visão Lógica Visão Física Visão de Desenvolvimento Visão de Processo Cenários (casos de uso) Classes, Dados, Funcionalidade Desenvolvimento de componentes Comportamento Implantação
  9. 9. PUCRS - FACIN Prof. Marcelo H. Yamaguti (9) Padrões de arquitetura • Na modelagem de uma arquitetura de software, pode-se utilizar Padrões de Arquitetura que descrevem estilos arquitetônicos mais comuns. Introdução à Engenharia de Software
  10. 10. PUCRS - FACIN Prof. Marcelo H. Yamaguti (10) Padrões de arquitetura • Camadas – Descrição: auxilia a estruturar aplicações que podem ser decompostas em grupos de subtarefas, nas quais cada grupo de subtarefas é um nível particular de abstração. – Contexto: um grande sistema que requer decomposição. Aplicação Apresentação Sessão Transporte Rede Conexão de dados Físico Introdução à Engenharia de Software
  11. 11. PUCRS - FACIN Prof. Marcelo H. Yamaguti (11) Padrões de arquitetura • Dutos e Filtros – Descrição: provê uma estrutura para sistemas que processam uma cadeia de dados. Cada passo do processamento é encapsulado em um componente-filtro. Dados são passados por pipes entre filtros adjacentes. A recombinação de filtros permite a construção de sistemas correlatos. – Contexto: processamento de cadeias de dados. Analisador léxico Analisador sintático Analisador semântico Código-fonte Cadeia de tokens Árvore de sintaxe abstrata Introdução à Engenharia de Software
  12. 12. PUCRS - FACIN Prof. Marcelo H. Yamaguti (12) Padrões de arquitetura • MVC (Model-View-Controller): – Descrição: divide um sistema interativo em três componentes. O Model contém a funcionalidade básica e dados. Views mostram a informação ao usuário. Controllers manipulam as entradas do usuário. Views e controllers compreendem a interface com o usuário. Um mecanismo de propagação de mudanças assegura a consistência entre o modelo e a interface com o usuário. – Contexto: aplicações interativas com interface homem-máquina flexível. Introdução à Engenharia de Software
  13. 13. PUCRS - FACIN Prof. Marcelo H. Yamaguti (13) Padrões de arquitetura • Repositório – Descrição: os componentes do sistema não se comunicam diretamente, mas por meio de um repositório central de dados. – Contexto: sistemas dirigidos a dados, com grandes volumes de informação que devem ser armazenados por longo tempo. Repositório de dados central Componente 1 Componente 2 Componente 3 Componente n
  14. 14. PUCRS - FACIN Prof. Marcelo H. Yamaguti (14) Padrões de arquitetura • Cliente-Servidor – Descrição: pode ser usado para estruturar sistemas de software distribuídos com componentes pouco acoplados que interagem por invocações de serviços remotos. Um componente broker é responsável por coordenar a comunicação, tais como repassar requisições, bem como, transmitir resultados e condições de erro. – Contexto: o ambiente é um sistema distribuído e possivelmente heterogêneo com componentes heterogêneos cooperantes. – Exemplo: sistemas Web com sistemas legados.
  15. 15. PUCRS - FACIN Prof. Marcelo H. Yamaguti (15) Fast Quiz 1) Na visão 4+1 proposta por Krutchen, todas são visões, EXCETO: a) Física b) Lógica c) Processo d) Conceitual e) Desenvolvimento
  16. 16. PUCRS - FACIN Prof. Marcelo H. Yamaguti (16) Fast Quiz 2) Uma rede de supermercados deseja que seja desenvolvido um sistema de troca de dados de vendas locais entre a matriz e as filiais. As filiais estão distribuídas fisicamente por todo o estado. Neste cenário o padrão arquitetônico mais adequado seria: a) Camadas b) Dutos-Filtros c) Cliente-Servidor d) Repositório e) Model-View-Controller Introdução à Engenharia de Software
  17. 17. PUCRS - FACIN Prof. Marcelo H. Yamaguti (17) Fast Quiz 3) Deseja-se um sistema construído a partir de um núcleo (core) que possua serviços e dados básicos para todo o sistema; sobre este núcleo devem ser implementados serviços mais genéricos; finalmente sobre estes serviços mais genéricos devem ser implementadas facilidades de interface com usuários ou outros sistemas. Para este sistema o padrão arquitetônico mais adequado é: a) Camadas b) Dutos-Filtros c) Cliente-Servidor d) Repositório e) Model-View-Controller Introdução à Engenharia de Software
  18. 18. Prof. Marcelo H. Yamaguti (18) Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Informática Prof. Marcelo H. Yamaguti Introdução à Engenharia de Software DESENVOLVIMENTO DE SOFTWARE Projeto e Arquitetura de Software

×