Buscar

Estilos arquiteturais de software

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Estilos arquiteturais de software:
Conceito:
• Define a forma como os componentes se conectam uns com os outros, como os dados são trocados entre os mesmos, bem como são configurados conjuntamente no sistema, estabelecendo as regras que regem a sua interconexão.
• Os estilos arquiteturais se diferem nos tipos de componentes que usam e na maneira como os componentes interagem uns com os outros (regras de interação)
Composição: 
– Os componentes:
Unidades com interfaces bem definidas que são necessárias à sua operação e passíveis de substituição no seu ambiente. 
– Os tipos de conectores 
Mecanismos responsáveis pela mediação da comunicação, coordenação e cooperação entre os componentes. 
– O conjunto de restrições que indica como os elementos são combinados.
•Lembrando que a arquitetura de um sistema pode aderir a um ou mais estilos arquiteturais de modo que simplifiquem o problema de arquiteturas de sistema. 
1- Pipes and filters:
• Conceito:
 O Pipes and Filters é um padrão de projeto arquitetônico organizado linearmente que permite o processamento de fluxo de informações, onde nesse padrão, há os chamados de filtros, que na forma básica, cada componente do filtro possui uma porta de entrada e uma porta de saída, os quais recebem mensagens no canal de entrada, processam a mensagem de acordo com um ou mais algoritmos e publicam os resultados no canal de saída. Além dos filtros, existem também os conectores entre os filtros, chamados de tubos, onde um tubo conecta um filtro a outro, enviando mensagens de saída de um filtro para o outro. 
 Os filtros devem ser componentes independentes, porém Como todos os componentes usam a mesma interface, podemos juntar os diferentes filtros em diferentes posições, podemos adicionar novos filtros, omitir os existentes ou reorganizá-los em uma nova sequência e conectar os componentes em diferentes tubos (ou pipes) afim de termos um resultado diferente.
• Componentes: 
– Dutos 
• Conectores:
– Filtros
• Vantagens:
– Útil para aplicações de processamento de informação que interagem pouco com usuários.
 – Apoia reuso de transformações (filtros) 
– É fácil adicionar, recombinar, ou trocar, novas transformações (flexibilidade)
 – É relativamente simples implementar como sistema concorrente (vários filtros em paralelo) ou sequencial 
– Eficiência em processamento
• Desvantagens: 
 – Requer um formato comum para a transferência de dados ao longo do pipeline
 – Não é apropriado para aplicações interativas 
– Ausência de gerenciamento de erros.
• Exemplo:
Chamada e Retorno
•Conceito:
 É um estilo arquitetural estruturado e organizado hierarquicamente, tem a estrutura de arquitetura dividida no programa principal e vários outros subprogramas, onde controle se inicia no topo de uma hierarquia de sub-rotinas e move-se para baixo na hierarquia
O controle de execução das rotinas do sistema é realizado através de um componente hierarquicamente superior que invoca a funcionalidade nos componentes hierarquicamente inferiores, assim o controle de execução de um componente é realizado por outro componente através de uma invocação, que geralmente produz um retorno. 
• Componentes: 
módulos, sub-rotinas, funções, Componentes objetos, e ou componentes complexos (grupos de componentes) 
• Conectores:
chamada de procedimentos, protocolos de comunicação, etc.
• Vantagens:
– Arquitetura baseada em partes bem identificadas da tarefa 
 – Mudar a implementação da rotina sem afetar os clientes 
– Reutilização de operações individuais
 • Desvantagens: 
– Deve saber qual rotina exata mudar 
– Oculta o papel da estrutura de dados 
– Não leva em consideração as semelhanças entre as variantes 
•Exemplos: 
Orientado a Objeto
•Conceito:
É um padrão de projeto arquitetônico estruturado em topologia de grafo, onde os objetos são acoplados e comunicantes, com interfaces bem definidas, onde os componentes de um sistema encapsulam os dados de uma classe do objeto e as operações que devem ser aplicadas para manipula-los, onde cada objeto oferece um conjunto de serviços, sendo a comunicação e a coordenação entre os objetos obtidas por meio de troca de mensagens. Onde um objeto em regra é responsável pela manutenção da integridade de sua representação.
A arquitetura orientada a objetos vê um sistema como uma série de objetos cooperativos, em vez de um conjunto de rotinas ou instruções de procedimento e é frequentemente empregada na construção de sistemas distribuído que são uma coleção de dispositivos autônomos conectados por uma rede de comunicação que é percebida pelos usuários como um único dispositivo provendo serviços ou resolvendo algum problema. 
• Componentes: 
– Os objetos: Que são os blocos básicos de construção e um elemento do mundo real que tem uma existência física ou conceitual.
– Classe: Uma classe representa a descrição de objetos que compartilham os mesmos atributos e ações e define as características do objeto, como atributos, ações ou comportamentos.
– Encapsulamento: Ele vincula os dados em uma única unidade e oculta os detalhes internos da classe e os detalhes de implementação dos procedimentos.tr
• Conectores:
– As mensagens, envio de mensagem.
• Vantagens:
 – Objetos são fracamente acoplados devido ao uso de interfaces
– Linguagens de implementação orientada a objeto são amplamente usadas.
–A arquitetura orientada a objetos mapeia o aplicativo para objetos do mundo real para torná-lo mais compreensível.
–É de fácil manutenção e melhora a qualidade do sistema devido à reutilização do programa.
–Ele melhora a testabilidade por meio do encapsulamento. 
–A arquitetura orientada a objetos reduz o tempo e o custo de desenvolvimento.
 • Desvantagens: 
 – Mudanças de interface têm alto impacto
 – Não envolve restrições topológicas, o que pode dificultar a manutenção 
 – Dependências entre objetos não são limitadas
–A arquitetura orientada a objetos tem dificuldade em determinar todas as classes e objetos necessários para um sistema. 
•Exemplos:
Camadas:
•Conceito:
É o estilo arquitetural organizado em topologia hierárquica, onde cada camada é formada por um conjunto de classes com um determinado propósito a ser especificado no projeto do sistema, o seu funcionamento se dá pela camada mais alta se comunicando com a camada mais baixa, ou seja, a cada camada mais alta age como cliente da camada inferior a ela e a camada inferior age oferecendo serviço a camada acima dela.
• Componentes: 
– São representados por cada camada 
• Conectores:
 – São definidos pelos protocolos que determinam como cada camada irá interagir com outra e limitam as interações a camadas adjacentes
• Vantagens:
– Permite particionar problemas complexos em uma sequência de passos incrementais
 – Mudanças em uma camada afetam, no máximo, as duas adjacentes
 – Permite que diferentes implementações da mesma camada possam ser usadas desde que mantenham a mesma interface com as camadas adjacentes
– Facilidade de compreensão 
– Facilidade de manutenção 
– Desenvolvimento independente de camadas
 • Desvantagens: 
– Nem todos os sistemas são facilmente estruturados em forma de camadas 
– É difícil encontrar os níveis de abstração corretos (muitas vezes os serviços abrangem diversas camadas).
•Exemplos:
Protocolos de rede são os melhores exemplos de arquiteturas em camadas 
– Definem um conjunto de regras e convenções que descrevem como programas de computador em diferentes máquinas comunicam-se
– O formato, conteúdo e significado das mensagens são definidas
Centrada em Dados:
•Conceito:
 É um estilo arquitetural, onde uma base de dados central (blackboard) une todos os componentes
No estilo centrada em dados, existem dois elementos distintos: a base central de dados (blackboard) e os componentes que executam operações na referida base, inclusive suas intercomunicações. Os componentes são chamados de fontes de informação e um componente não pode se comunicar com outro, exceto via o repositório central, e os clientes (subsistemas, sistemas) acessam o repositório para
inserir, recuperar, alterar, remover e também trocar dados entre eles
• Componentes: 
– Base central de dados, repositório e os componentes que executam as operações.
• Conectores:
– Intercomunicações entre a base central de dados 
• Vantagens:
– É uma maneira eficiente de compartilhar grandes quantidades de dados
 – Dados aderem a uma representação comum 
– Simplifica a projeto de aplicações fortemente baseadas em dados, tanto para troca de informações quanto para armazenamento.
– Promove a integração entre componentes e sistemas 
 • Desvantagens: 
– Os subsistemas devem estar de acordo com um modelo de dados padronizado
 – A evolução de dados é difícil e dispendiosa.
 – Dificuldade para distribuir de forma eficiente.
•Exemplos:
Invocação implícita
•Conceito:
A invocação implícita ou baseada em eventos é um exemplo de um estilo arquitetônico bem trabalhado com alta coesão e acoplamento fraco. A ideia por trás da invocação implícita é que em vez de invocar um procedimento diretamente, um componente pode transmitir um ou mais eventos. Outros componentes do sistema podem registrar interesse em um evento por associar um procedimento ao evento. Quando o evento é anunciado, o próprio sistema invoca todos os procedimentos que foram registrados para o evento. Assim, um evento "implicitamente" causa a invocação de procedimentos em outros módulos. " Os sistemas de invocação implícita são movidos por eventos. Os eventos são acionados sempre que o sistema precisa fazer algo
• Componentes: 
 – Anúncio de eventos 
 – Registro uma chamada de retorno para eventos de outros componentes
• Conectores:
– As ligações entre eventos e métodos de componentes e chamadas de rotina (callbacks)
• Vantagens:
– Fornece forte suporte para reuso. Qualquer componente pode ser introduzido no sistema simplesmente por registrá-lo a eventos daquele sistema.
– Manutenção: adicionar e substituir componentes com o mínimo efeito em outros componentes do sistema
• Desvantagens: 
– Perda de controle: Quais componentes responderão a um evento? Em que ordem os componentes serão chamados? Os componentes invocados foram concluídos? 
– A exatidão nesse estilo é difícil de garantir: depende do contexto e ordem de invocação
– Um componente que anuncia um evento não tem controle (ordem/tempo) sobre a execução associada 
•Exemplos:
– Um exemplo de sistema empregando mensagens são listas de notícias e fórum que possuem componentes de registro de novos usuários acoplados ao componente de autenticação.
Bibliografia:
https://www.tutorialride.com/software-architecture-and-design/object-oriented-architecture.htm#:~:text=Object%20Oriented%20Architecture%20is%20an,reusable%20and%20self%2Dsufficient%20objects.
http://se.inf.ethz.ch/old/teaching/2010-S/0050/slides/15_softarch_styles.pdf
https://cs.gmu.edu/~jpsousa/classes/727/slides/03%20Call-return.pdf
https://www.geeksforgeeks.org/software-engineering-architectural-design/
https://tororodeideias.files.wordpress.com/2012/04/fatec-01-conceitos-bc3a1sicos-da-arquitetura-de-software.pdf
https://julianakolb.wordpress.com/tag/arquitetura-centrada-nos-dados/
https://www.cin.ufpe.br/~kiev/IF682/12_Estilos_Arquiteturais_e_Padroes_de_Projeto.pdf
http://www.facom.ufu.br/~bacala/ES/07_Estilos_Arquiteturais.pptx.pdf
http://diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:disciplinas:arquitetura:06_estilos_arquiteturais.pdf
http://www.inf.ufpr.br/andrey/ci163/EstilosAl.pdf
https://www.ic.unicamp.br/~bit/mc714/aulas/aula06.pdf
https://homepages.dcc.ufmg.br/~cesarfmc/classes/es/Capitulo_06.pdf
https://www.cin.ufpe.br/~kiev/IF682/12_Estilos_Arquiteturais_e_Padroes_de_Projeto.pdf
http://jkolb.com.br/estilo-de-padroes-arquiteturais/
http://www-di.inf.puc-rio.br/~julio/DISSER01.pdf
http://winf.in.tu-clausthal.de/winf/publications/2010/DissGerdes2010.pdf
https://homepages.dcc.ufmg.br/~cesarfmc/classes/es/Capitulo_06.pdf
http://www.inf.ufpr.br/andrey/ci163/EstilosAl.pdf
http://diatinf.ifrn.edu.br/prof/lib/exe/fetch.php?media=user:1301182:disciplinas:arquitetura:06_estilos_arquiteturais.pdf
http://www.facom.ufu.br/~bacala/ES/07_Estilos_Arquiteturais.pptx.pdf
http://www.facom.ufu.br/~faina/BCC_Crs/GSI028-2014-1S/DL/DS-Ch02.pdf
https://www.geeksforgeeks.org/software-engineering-architectural-design/
https://edisciplinas.usp.br/pluginfile.php/4475485/mod_resource/content/1/LivroAPOO-Versao2007.pdf
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.112.4233&rep=rep1&type=pdf
https://cs.gmu.edu/~jpsousa/classes/727/slides/03%20Call-return.pdf
https://www.cin.ufpe.br/~kiev/IF682/12_Estilos_Arquiteturais_e_Padroes_de_Projeto.pdf
https://www.tutorialride.com/software-architecture-and-design/object-oriented-architecture.htm#:~:text=Object%20Oriented%20Architecture%20is%20an,reusable%20and%20self%2Dsufficient%20objects.
http://se.inf.ethz.ch/old/teaching/2010-S/0050/slides/15_softarch_styles.pdf

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Mais conteúdos dessa disciplina