1 / 89

Arquitetura de Software I

Arquitetura de Software I. 2. Hyggo Oliveira de Almeida Laboratório de Sistemas Embarcados e Computação Pervasiva Centro de Engenharia Elétrica e Informática Universidade Federal de Campina Grande. Módulo I Relembrando. O que é arquitetura de software? Motivação e benefícios Conceitos

heinrich
Download Presentation

Arquitetura de Software I

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 I 2 Hyggo Oliveira de Almeida Laboratório de Sistemas Embarcados e Computação Pervasiva Centro de Engenharia Elétrica e Informática Universidade Federal de Campina Grande

  2. Módulo IRelembrando... • O que é arquitetura de software? • Motivação e benefícios • Conceitos • Visões arquiteturais • Descrevendo arquiteturas com UML • Estilos arquiteturais Pós-Engenharia de Software - FAT

  3. Módulo II 2 Estilos e padrões arquiteturais Atributos de qualidade Seleção de estilos Seleção de visões Rastreabilidade bidirecional

  4. Estilos e padrões arquiteturais • Estilos arquiteturais • Definem meios de selecionar e apresentar blocos de construção de arquitetura (Shaw) • Padrões arquiteturais • Projetos de alto nível, testados e validados, de blocos de construção de arquitetura (Buschman). Pós-Engenharia de Software - FAT

  5. Invocação/Retorno (Call/Return) Programa principal/Subrotina (Main Program/Subroutine) Invocação remota de procedimento (Remote Procedure Call - RPC) Camadas (Layered) Máquina virtual (Virtual Machine) Componentes independentes (Independent Components) Centrado em dados (Data-Centered) • Interpretador (Interpreter) • Baseado em regras (Rule-based) • Comunicação de processos (Communicating Processes) • Baseado em eventos • Repositório (Repository) • Quadro negro (Blackboard) Fluxo de dados (Data-Flow) • Seqüencial (Batch Sequential) • Tubos e filtros (Pipe and Filter) Estilos e padrões arquiteturais Classificação Pós-Engenharia de Software - FAT

  6. Subrotina 3 Subrotina 1 Subrotina 2 Estilos e padrões arquiteturais Invocação/Retorno (Call/Return) • Programa principal/Subrotina (Main Program/Subroutine) Programa principal Pós-Engenharia de Software - FAT

  7. Subrotina 3 Subrotina 1 Subrotina 2 Estilos e padrões arquiteturais Invocação/Retorno (Call/Return) • Programa principal/Subrotina (Main Program/Subroutine) • Objetivos Programa principal Reúso Pós-Engenharia de Software - FAT

  8. Subrotina 3 Subrotina 1 Subrotina 2 Estilos e padrões arquiteturais Invocação/Retorno (Call/Return) • Programa principal/Subrotina (Main Program/Subroutine) • Objetivos Programa principal Desenvolvimento independente Pós-Engenharia de Software - FAT

  9. Rede Subrotina 3 Subrotina 1 Subrotina 2 192.168.10.8 192.168.10.11 Estilos e padrões arquiteturais Invocação/Retorno (Call/Return) • Invocação remota de procedimento (RPC) Programa principal Pós-Engenharia de Software - FAT

  10. Rede Subrotina 3 Subrotina 1 Subrotina 2 192.168.10.8 192.168.10.11 Estilos e padrões arquiteturais Invocação/Retorno (Call/Return) • Invocação remota de procedimento (RPC) Programa principal Ganho de desempenho (2 processadores) Pós-Engenharia de Software - FAT

  11. Estilos e padrões arquiteturais Invocação/Retorno (Call/Return) • Camadas (Layered) Aplicação Apresentação Apresentação Sessão Negócio Clássica 3 camadas ISO-OSI Transporte Armazenamento Rede Dados Física Pós-Engenharia de Software - FAT

  12. Estilos e padrões arquiteturais Invocação/Retorno (Call/Return) • Camadas (Layered) • Camadas se comunicam apenas com outras adjacentes Apresentação Negócio Armazenamento Pós-Engenharia de Software - FAT

  13. Estilos e padrões arquiteturais Invocação/Retorno (Call/Return) • Camadas (Layered) • Alterações locais não são propagadas Apresentação Negócio Armazenamento Pós-Engenharia de Software - FAT

  14. Estilos e padrões arquiteturais Componentes independentes • Comunicação de processos (Communicating Processes) • Baseado na comunicação via troca de mensagens entre processos • Em geral, via rede • Cliente - Servidor • Ponto a ponto (Peer to Peer – P2P) Pós-Engenharia de Software - FAT

  15. Estilos e padrões arquiteturais Componentes independentes • Comunicação de processos (Communicating Processes) • Cliente – Servidor • Já vimos anteriormente Servidor Aplicação: Internet Clientes Pós-Engenharia de Software - FAT

  16. Estilos e padrões arquiteturais Componentes independentes • Comunicação de processos (Communicating Processes) • Cliente – Servidor • Problema: servidor é ponto de falha! Servidor Clientes Pós-Engenharia de Software - FAT

  17. Estilos e padrões arquiteturais Componentes independentes • Comunicação de processos (Communicating Processes) • Ponto a Ponto (P2P) • Não há distinção entre nós • Cada nó mantém seus próprios dados e endereços conhecidos • Cada nó é “cliente e servidor ao mesmo tempo” Pós-Engenharia de Software - FAT

  18. Estilos e padrões arquiteturais Componentes independentes • Comunicação de processos (Communicating Processes) • Ponto a Ponto (P2P) • Exemplos de redes P2P: gnutella, freenet • Exemplos de aplicação: Kazaa, eMule • Vantagem: não há ponto de falha • Desvantagem: tempo de consulta Pós-Engenharia de Software - FAT

  19. a.imprimir() A B Estilos e padrões arquiteturais Componentes independentes • Baseado em eventos • Produtores e consumidores de eventos • Consumidores se registram nos Produtores • Produtores notificam consumidores registrados • Motivação: imprimir Pós-Engenharia de Software - FAT

  20. imprimir() interessado(“relatorioOK”) A B relatorioOK Estilos e padrões arquiteturais Componentes independentes • Baseado em eventos • Produtores e consumidores são independentes • Execução via procedimentos disparados via mudança de estados • Escalabilidade no número de interessados Produtor Consumidor Relatório OK Pós-Engenharia de Software - FAT

  21. Estilos e padrões arquiteturais Componentes independentes • Baseado em eventos • Aplicação comum • Interface gráfica onKeyDown onMouseOver onKeyUp onMouseReleased onMouseClick menuDown onMousePressed onSelected Pós-Engenharia de Software - FAT

  22. Estilos e padrões arquiteturais Centrado em dados (Data-centered) • Repositório (Repository) • Integridade, escalabilidade (novos clientes, novos dados) Clientes operam sobre os dados Cliente 2 Cliente 3 Cliente 1 Cliente n Dados compartilhados Estado atual consistente Pós-Engenharia de Software - FAT

  23. Gatilhos (triggers) Transações Estilos e padrões arquiteturais Centrado em dados (Data-centered) • Repositório (Repository) • Exemplo: banco de dados tradicional Cliente 2 Cliente 3 Cliente 1 Cliente n Dados compartilhados Pós-Engenharia de Software - FAT

  24. Controlador x2 Fontes de conhecimento Estilos e padrões arquiteturais Centrado em dados (Data-centered) • Quadro negro (Blackboard) x - Gerência dos dados + Pós-Engenharia de Software - FAT

  25. Controlador x2 Estilos e padrões arquiteturais Centrado em dados (Data-centered) • Quadro negro (Blackboard) Sei subtrair! Sei multiplicar! 2 x (3+2)2 + 3 - 6 = ? x - Sei exponencial! Sei somar! + Pós-Engenharia de Software - FAT

  26. Controlador x2 Estilos e padrões arquiteturais Centrado em dados (Data-centered) • Quadro negro (Blackboard) 2 x (5)2 + 3 - 6 = ? 2 x (3+2)2 + 3 - 6 = ? x - + Pós-Engenharia de Software - FAT

  27. Controlador x2 Estilos e padrões arquiteturais Centrado em dados (Data-centered) • Quadro negro (Blackboard) 2 x 25 + 3 - 6 = ? 2 x (5)2 + 3 - 6 = ? x - + Pós-Engenharia de Software - FAT

  28. Controlador x2 Estilos e padrões arquiteturais Centrado em dados (Data-centered) • Quadro negro (Blackboard) 50 + 3 - 6 = ? 2 x 25 + 3 - 6 = ? x - + Pós-Engenharia de Software - FAT

  29. Controlador x2 Estilos e padrões arquiteturais Centrado em dados (Data-centered) • Quadro negro (Blackboard) 53 - 6 = ? 47 x - + Pós-Engenharia de Software - FAT

  30. Estilos e padrões arquiteturais Centrado em dados (Data-centered) • Quadro negro (Blackboard) Ap 2 Ap 1 Ap 3 Quadro Negro Controlador Ap 4 Ap n Ap 5 Pós-Engenharia de Software - FAT

  31. Estilos e padrões arquiteturais Centrado em dados (Data-centered) • Quadro negro (Blackboard) • Sistemas complexos • Resolução Distribuída de Problemas - RDP • Aplicações independentes • Escalabilidade • Ponto de falha!!! • Quadro negro • Arquitetura usada no paradigma de agentes Pós-Engenharia de Software - FAT

  32. Estilos e padrões arquiteturais Máquina virtual (Virtual Machine) • Interpretador (Interpreter) • Simular funcionalidade não nativa para obter portabilidade entrada Programa sendo interpretado Dados (Estado do programa) Dados de estado dados Atualiza Instruções do programa saída Mecanismo de interpretação Instrução selecionada Estado interno (Instruções + dados) Dados selecionados Pós-Engenharia de Software - FAT

  33. Máquina Virtual Compilador Java “javac.exe” Máquina Virtual INTERPRETA bytecode Êþº¾ 1 <init> ()V Code LineNumberTable main ([Ljava/lang/String;)... Máquina Virtual Arquivo “Oi.class” Máquina Virtual Máquina Virtual Estilos e padrões arquiteturais Máquina virtual (Virtual Machine) • Interpretador (Interpreter) • Exemplo: Java public class Oi{ ... } Arquivo “Oi.java” Pós-Engenharia de Software - FAT

  34. Estilos e padrões arquiteturais Máquina virtual (Virtual Machine) • Interpretador (Interpreter) • Problema • Desempenho • Algumas pesquisas apontam que algumas das linguagens interpretadas já conseguem ser mais rápidas que C • Java, por exemplo • Máquina virtual nativa – Intel® Pós-Engenharia de Software - FAT

  35. Estilos e padrões arquiteturais Máquina virtual (Virtual Machine) • Baseado em regras (Rule-based) • Conjunto de regras sobre um estado • Definição do estado atual com base em dados de entrada • Regras alteram o estado entrada Memória de trabalho saída Base de Regras Máquina de inferência Pós-Engenharia de Software - FAT

  36. Estilos e padrões arquiteturais Máquina virtual (Virtual Machine) • Baseado em regras (Rule-based) • Exemplos: Prolog, Sistemas Especialistas HORA=18:00 Memória de trabalho SE “HORA=21:00” ENTÃO “AÇÃO=LANCHE” SE “HORA=22:00” ENTÃO “AÇÃO=LIBERAR” SE “HORA<19:00” ENTÃO “AÇÃO=ESPERAR” SE “HORA=19:00” ENTÃO “AÇÃO=COMEÇAR” HORA = ? AÇÃO = ? Máquina de inferência Base de Regras Pós-Engenharia de Software - FAT

  37. Estilos e padrões arquiteturais Máquina virtual (Virtual Machine) • Baseado em regras (Rule-based) • Exemplos: Prolog, Sistemas Especialistas Memória de trabalho SE “HORA=21:00” ENTÃO “AÇÃO=LANCHE” SE “HORA=22:00” ENTÃO “AÇÃO=LIBERAR” SE “HORA<19:00” ENTÃO “AÇÃO=ESPERAR” SE “HORA=19:00” ENTÃO “AÇÃO=COMEÇAR” HORA = 18:00 AÇÃO = ? Máquina de inferência Base de Regras Pós-Engenharia de Software - FAT

  38. Estilos e padrões arquiteturais Máquina virtual (Virtual Machine) • Baseado em regras (Rule-based) • Exemplos: Prolog, Sistemas Especialistas Memória de trabalho SE “HORA=21:00” ENTÃO “AÇÃO=LANCHE” SE “HORA=22:00” ENTÃO “AÇÃO=LIBERAR” SE “HORA<19:00” ENTÃO “AÇÃO=ESPERAR” SE “HORA=19:00” ENTÃO “AÇÃO=COMEÇAR” HORA = 18:00 AÇÃO = ESPERAR Máquina de inferência Base de Regras Pós-Engenharia de Software - FAT

  39. Estilos e padrões arquiteturais Máquina virtual (Virtual Machine) • Baseado em regras (Rule-based) • Exemplos: Prolog, Sistemas Especialistas Memória de trabalho SE “HORA=21:00” ENTÃO “AÇÃO=LANCHE” SE “HORA=22:00” ENTÃO “AÇÃO=LIBERAR” SE “HORA<19:00” ENTÃO “AÇÃO=ESPERAR” SE “HORA=19:00” ENTÃO “AÇÃO=COMEÇAR” HORA = 18:00 AÇÃO = ESPERAR AÇÃO=ESPERAR Máquina de inferência Base de Regras Pós-Engenharia de Software - FAT

  40. Arquivos fonte Bytecode class{ } A$n3* 3N4*# 000 1001 1001 Arquivo Jar Javac Jar Java executando Empacotando Compilando Estilos e padrões arquiteturais Fluxo de dados (Data Flow) • Seqüencial (Batch Sequential) • Programas independentes executados em seqüência • Um após o outro • Dado transmitido por completo entre um programa e outro Pós-Engenharia de Software - FAT

  41. Estilos e padrões arquiteturais Fluxo de dados (Data Flow) • Tubos e filtros (Pipe and Filter) • Já vimos na última aula • Exemplo: compilador Árvore sintática c/ semântica Árvore sintática tokens Código fonte Analisador Léxico Analisador Sintático Analisador Semântico Gerador de código intermediário Intel backend Executável Executável otimizado Otimizador MIPS backend SPARC backend Pós-Engenharia de Software - FAT

  42. Estilos e padrões arquiteturais Fluxo de dados (Data Flow) • Tubos e filtros (Pipe and Filter) • Não precisa ser seqüencial Pós-Engenharia de Software - FAT

  43. Invocação/Retorno (Call/Return) Programa principal/Subrotina (Main Program/Subroutine) Invocação remota de procedimento (Remote Procedure Call - RPC) Camadas (Layered) Máquina virtual (Virtual Machine) Componentes independentes (Independent Components) Centrado em dados (Data-Centered) • Interpretador (Interpreter) • Baseado em regras (Rule-based) • Comunicação de processos (Communicating Processes) • Baseado em eventos • Repositório (Repository) • Quadro negro (Blackboard) Fluxo de dados (Data-Flow) • Seqüencial (Batch Sequential) • Tubos e filtros (Pipe and Filter) Estilos e padrões arquiteturais Exercício • Quais estilos arquiteturais poderiam ser aplicados na arquitetura definida anteriormente (Módulo I)? Como? • Se algum estilo não puder ser aplicado, justifique o porquê. Pós-Engenharia de Software - FAT

  44. Atributos de qualidade • Arquitetura e funcionalidade • Se a funcionalidade fosse o único atributo buscado no desenvolvimento de um software... • ... sua arquitetura seria sempre monolítica: uma só função, um só componente, uma só classe... • Outros atributos: mutabilidade (modifiability), usabilidade, desempenho... • ... influenciam na determinação da arquitetura do software • É com base em atributos de qualidade interessantes para o sistema que se determina a sua arquitetura Pós-Engenharia de Software - FAT

  45. Atributos de qualidade • Classes de atributos • Qualidades de sistema: disponibilidade, mutabilidade, desempenho, usabilidade... • Qualidades de negócio: tempo de produção (time to market), custo e benefício... • Qualidades de arquitetura:buildability, integridade conceitual... Pós-Engenharia de Software - FAT

  46. Atributos de qualidadeQualidades de sistema • Disponibilidade • Mutabilidade • Desempenho • Segurança • Testabilidade • Usabilidade Pós-Engenharia de Software - FAT

  47. Atributos de qualidadeQualidades de sistema • Disponibilidade • Relacionada a falhas no sistema e suas conseqüências • Um sistema está em falha quando não funciona mais de acordo com a sua especificação • Uma falha é observável do ponto de vista externo • Medida de disponibilidade: tempo médio para falhar disp = tempo médio para falhar + tempo médio para reparar Pós-Engenharia de Software - FAT

  48. Atributos de qualidadeQualidades de sistema • Mutabilidade • Relacionado ao custo de mudanças • O que pode mudar? • Implementação de funcionalidades • Plataforma na qual o sistema é executado (hardware, SO,...) • Portabilidade • O ambiente no qual opera (protocolos, rede, outros sistemas) • Capacidade (nº de usuários, nº de operações simultâneas) • Escalabilidade • Quem pode mudar? • Desenvolvedor, usuário final, administrador... Pós-Engenharia de Software - FAT

  49. Atributos de qualidadeQualidades de sistema • Mutabilidade • Quando pode mudar? • Implementação (código fonte) • Construção – build (escolha de bibliotecas) • Configuração • Execução (parametrização) Pós-Engenharia de Software - FAT

  50. Atributos de qualidadeQualidades de sistema • Desempenho • Relacionado a tempo! • Eventos ocorrem e o sistema tem que responder aos mesmos • A medida de desempenho é: • Quanto tempo leva o sistema para responder a um evento? • Evento??? • Interrupções, mensagens, requisições do usuário, inicialização... • Exemplo: • Respostas a requisições do usuário não podem durar mais que 10 milisegundos! Pós-Engenharia de Software - FAT

More Related