Baixe o app para aproveitar ainda mais
Prévia do material em texto
Inspirado em Christopher Alexander – padrões de arquitetura para construções Catálogo de soluções para problemas comuns de projeto compreender a organização dos sistemas de software arquitetura de software compartilhar uma solução amplamente aplicável e comprovada de um problema particular de projeto numa forma padrão Cada estilo arquitetural oferece suporte a um conjunto de requisitos não-funcionais e atributos de projeto O estilo mais apropriado a um sistema dependerá de seus requisitos, envolvendo requisitos funcionais e não- funcionais. Contexto: Sistemas que necessitam processar dados contínuos adequada para ser usada no projeto de um sistema que requer vários estágios de processamento Filtro 1 Filtro 2 Filtro N pipe pipe pipe pipe considera a existência de uma rede pela qual flui dados de uma extremidade (origem) à outra (destino). O fluxo de dados se dá através de pipes e os dados sofrem transformações quando processados nos filtros. prevaleceu durante a década de 70. Manutenibilidade geralmente mais flexível, possibilitando a reorganização de filtros e pipes . Suporta processamento paralelo com múltiplo filtros rodando concorrentemente. mudanças frequentes em um componente (filtro) impactar outros componentes Estrutura um sistema num conjunto de camadas, onde cada uma delas agrupa um conjunto de tarefas num determinado nível de abstração aplicação apresentação sessão transporte rede enlace física Camada 1 Camada 2 Camada 3 Camada 4 Camada 5 Camada 6 Camada 7 Arquitetura de protocolos de rede de computadores – OSI (Open System Interconnection) aplicação apresentação sessão transporte rede enlace física Camada 1 Camada 2 Camada 3 Camada 4 Camada 5 Camada 6 Camada 7 aplicação apresentação sessão transporte rede enlace física Protocolo da camada 7 Protocolo da camada 6 Protocolo da camada 5 Protocolo da camada 4 Protocolo da camada 3 Protocolo da camada 2 Protocolo da camada 1 Comunicação entre 2 sistemas numa arquitetura em camadas Cada camada oferece um conjunto de serviços à camada superior O protocolo consiste de um conjunto de regras e convenções que descrevem como sistemas podem se comunicar via rede. Em outras palavras, o protocolo define o formato, conteúdo e significado dos dados trocados entre as camadas associadas a ele. Maioria dos sistemas de informações empresariais e algumas tecnologias de desenvolvimento de aplicações (.NET, J2EE) Usado na construção de novos recursos em cima de sistemas existentes Quando o desenvolvimento está espalhado por várias equipes, com a responsabilidade de cada equipe em uma camada de funcionalidade. Quando há um requisito de proteção multinível Permite uma clara separação entre camadas e fornece potencial para reusabilidade das camadas (acesso, armazenamento) entre diversos sistemas. Apoia a portabilidade - apenas as camadas internas dependentes da máquina precisam ser reimplementadas. Mutável – quando a interface muda ou novos recursos são adicionados, apenas a camada adjacente é afetada. Apoia o desenvolvimento incremental – quando uma camada é desenvolvida alguns dos serviços podem ser disponibilizados para os usuários. Aumento se sobrecarga de comunicação entre camadas e adiciona complexidade ao desenvolvimento devido a número de elementos que necessitam ser desenvolvidos e integrados pelas camadas O desempenho pode ser um problema por causa dos múltiplos níveis de interpretação de uma solicitação de serviços. Este estilo permite que as tarefas sejam divididas entre produtores e consumidores de dados. Um servidor é um processo que fica num estado de espera, aguardando solicitação de serviço de um ou mais clientes A funcionalidade do sistema está organizado em serviços – cada serviços é prestado por um servidor. Quando os dados em um banco de dados compartilhado precisa precisam ser acessados a partir de uma série de locais. Podem ser usados quando a carga de um sistema é variável - o servidor pode ser replicado. Facilidade de remover e/ou adicionar clientes. Essa facilidade de mudança decorre da independência existente entre os processos. Facilidade de modificar a funcionalidade de um cliente (visto que outros clientes não serão afetados) Os servidores podem ser distribuídos através de uma rede. A funcionalidade geral pode estar disponível para todos os clientes e não precisa ser implementada por todos os serviços. Cada serviços é um ponto único de falha (negação do serviço ou falha do servidor) O desempenho pode ser imprevisível pois depende da rede. Todos os dados em um sistema são gerenciados em um repositório central, acessível a todos os componentes dos sistema. Os componentes não interagem diretamente, apenas por meio do repositório. Sistemas que geram grande volume de informações e precisam ser armazenados por um longo período. Sistemas dirigidos a dados, nos quais a inclusão de dados no repositório dispara uma ação. Os componentes podem ser independentes – não precisam saber da existência de outros componentes. As alterações feitas a um componentes podem propagar-se par todos os outros. Todos os dados podem ser gerenciados de forma consistente., pois tudo está em um só lugar. (Ex: Backup) O repositório é um ponto único de falha. Problemas no repositório podem afetar todo o sistema. Pode haver ineficiência na organização de toda a comunicação através do repositório. Distribuir o repositório por vários computadores pode ser difícil. é uma arquitetura de redes de computadores onde cada um dos pontos ou nós da rede funciona tanto como cliente quanto como servidor, permitindo compartilhamentos de serviços e dados sem a necessidade de um servidor central. Todos os pontos da rede devem usar programas compatíveis para ligar-se um ao outro. Uma rede peer-to-peer pode ser usada para compartilhar músicas, vídeos, imagens, dados, enfim qualquer coisa com formato digital. Sistemas distribuídos Telecomunicações Aplicações que troca de arquivos na Internet Elimina a possibilidade de ponto de falha Escalabilidade São resilientes a falhas parciais na rede Aplicações que troca de arquivos na Internet possível particionamento da rede, se nenhuma lista de ponto central está disponível Dificuldade de garantir uma resposta de um sistema a qualquer ponto em um determinado tempo Mendes, Antonio. Arquitetura de Software: desenvolvimento orientado para arquitetura. Rio de Janeiro: Campos, 2002. Capítulo2 pag 10 – 34 Rozanski, Nick; Woods, Eoin. Software System Architecture: working with stakeholders using viewpoints and perpesctives. Addison-Wesley, 2005 Capítulo 11 – página 135 – 155 Sommerville, Ian. Engenharia de Software. 9. Ed. São Paulo, Pearson Prentice Hall, 2011. Capítulo 06 – pag 103 - 115 Pressman, Roger S. Engenharia de Software: uma abordagem profissional. 7. ed. Porto Alegre: AMGH (Mc Graw Hill), 2011. Capítulo 9 – pag 234 - 237 Referência
Compartilhar