Arquitetura de Software: Estudos de Caso Objetivo: – Ilustrar como princípios de arquitetura podem aumentar o entendimento de sistemas de software. – Avaliar diferentes soluções para um mesmo problema. 1. Palavra-chave em contexto: enunciado 1. Palavra-chave em contexto: exemplo 1. Palavra-chave em contexto: objetivo Analisar diferentes arquiteturas com respeito às seguintes considerações de projeto: – Mudança no algoritmo de processamento (ex: shifts nas linhas podem ser feitos em cada linha lida, em todas as linhas após terem sido lidas, ou por demanda); – Mudança na representação dos dados; – Mudança na funcionalidade (extensibilidade); – Performance (espaço e tempo); – Grau de reuso. 1. Palavra-chave em contexto: programa principal/subrotinas com dados compartilhados Master Input Circular Shift Lines Alphabetizer Index Output Alphabetized index Output medium Input medium Acesso direto na memória Chamada de subrotina I/O 1. Palavra-chave em contexto: programa principal/subrotinas com dados compartilhados Pontos fortes: – Dados podem ser representados de forma eficiente (boa performance), pois são compartilhados. – A extensibilidade é permitida por meio da adição de um novo componente, acessando os dados compartilhados. Pontos fracos: – Uma mudança na estrutura dos dados irá afetar todos os módulos. – Mudanças no algoritmo de processamento não são fáceis. – Devido à forte dependência dos dados, os módulos não são facilmente reusáveis. 1. Palavra-chave em contexto: tipos abstratos de dados Master Input Output Lines Input medium Circular Shift Chamada de subrotina I/O Alphabetizer Output medium 1. Palavra-chave em contexto: tipos abstratos de dados Pontos fortes: – Em cada módulo, tanto o algoritmo como o formato interno dos dados podem ser modificados sem afetar os outros módulos. – Reuso é melhor suportado, pois cada módulo não precisa conhecer detalhes internos dos outros módulos. – A performance não é tão boa quanto a anterior, pois o fluxo de dados é provavelmente maior. Ponto fraco: – A extensibilidade implica modificação dos módulos ou adição de um novo módulo. 1. Palavra-chave em contexto: invocação implícita Master Input Input medium Circular Shift I n s s e r t Lines Alphabetizer I n s s e r t Lines Invocação implícita Chamada de subrotina I/O Output Output medium 1. Palavra-chave em contexto: invocação implícita Características: – Tão logo os dados são modificados, outras computações são invocadas implicitamente. Existe um “line storage” para “input” e outro para “shifts”. Ponto forte: – A representação dos dados pode ser modificada sem afetar os módulos. Ponto fraco: – É difícil controlar a ordem de processamento dos módulos invocados implicitamente. 1. Palavra-chave em contexto: canais e filtros Input medium Circular Shift Input Alphabetizer Output Canal (Pipe) I/O Output medium 1. Palavra-chave em contexto: canais e filtros Pontos fortes: – Suporta reuso já que cada filtro pode funcionar isoladamente desde que receba o “stream” que está esperando. – Novas funções podem ser adicionadas inserindo novos filtros no lugar apropriado. – O algoritmo de processamento de cada filtro pode ser modificado. Pontos fracos: – É impossível modificar o sistema para funcionar interativamente. – Os dados têm que ser completamente copiados de um filtro para outro. 2. Software para instrumentação (osciloscópio) Sistema de instrumentação que recebe sinais elétricos e mostra figuras numa tela; Osciloscópio também executa medidas sobre estes sinais e mostra-as numa tela. 2. Software para instrumentação (osciloscópio): modelo orientado a objetos Osciloscópio Formato da onda Sinais Medidas ... 2. Software para instrumentação (osciloscópio): modelo orientado a objetos Problema: – Confusão sobre o particionamento. Ex: as medidas devem ser associadas com os tipos de dados sendo medidos, ou representadas externamente? Quais são os objetos que a interface com o usuário interage? 2. Software para instrumentação (osciloscópio): modelo em camadas hardware digitalização manipulação visualização Interface com usuário 2. Software para instrumentação (osciloscópio): modelo em camadas Problema: – Em osciloscópios reais, os usuários precisam afetar diretamente funções em todos os níveis. Ou seja, a interação não se dá apenas com o último nível. 2. Software para instrumentação (osciloscópio): modelo de canais e filtros Acoplar Adquirir To-X-Y Clip sinal tempo Subsistema de Gatilhos Forma da onda Medir medida 2. Software para instrumentação (osciloscópio): modelo de canais e filtros Problema: – Não fica claro como o usuário interage com o sistema. 2. Software para instrumentação (osciloscópio): modelo de canais e filtros modificado acoplamento Tipo, taxa Acoplar Adquirir trans To-X-Y tamanho Mostrar sinal tempo Subsistema de Gatilhos Forma da onda Medir medida 2. Software para instrumentação (osciloscópio): modelo de canais e filtros modificado Problemas: – Performance, devido à grande transferência de dados; – Filtros lentos podem atrasar o processamento do sistema.