Você está na página 1de 23

Engenharia de Software 2

Prof. Angelo Maggioni e Silva

[Capítulo 6 do livro Engenharia de Software (SOMMERVILE)]

Aula 7 - (TEO) - Padrões de Arquitetura


Engenharia de Software 2
1. Padrões de Arquitetura
A ideia de padrões de arquitetura como uma forma de apresentar,
compartilhar e reusar o conhecimento sobre sistemas de software é hoje
amplamente usada. O gatilho para isso foi a publicação de um livro sobre os
padrões de projeto orientado a objetos (GAMMA et al., 1995) e atualizado em
2007 (BUSCHMANN et al., 1996; BUSCHMANN et al., 2007a; BUSCHMANN et al.,
2007b; KIRCHERE e JAIN, 2004; SCHMIDT et al., 2000).
Engenharia de Software 2
1. Padrões de Arquitetura
Padrões de arquitetura são abstrações, de boas práticas experimentadas e
testadas em diferentes sistemas e ambientes.
Ao escolher um padrão de arquitetura, deve-se deixar claro seus pontos
fortes, fracos e motivos que levaram a sua escolha.
Engenharia de Software 2
1. Padrões de Arquitetura
Nome
Descrição

Quando é usado
Vantagens

Desvantagens

Tabela 1. Estrutura Básica de um Padrão de Arquitetura


Engenharia de Software 2
1. Padrões de Arquitetura
Por exemplo, a Tabela abaixo descreve o conhecido padrão MVC (modelo-
visão-controlador, do inglês Model-View-Controller). Esse padrão é a base do
gerenciamento de interação em muitos sistemas baseados em Web.
Engenharia de Software 2
1. Padrões de Arquitetura
Nome MVC
Descrição Separa a apresentação e a interação dos dados do sistema. O sistema é estruturado em três
componentes lógicos que interagem entre si. O componente Modelo gerencia o sistema de
dados e as operações associadas a esses dados. A Visão define e gerencia como os dados
são apresentados ao usuário. O Controlador gerencia a interação do usuário (por exemplo,
teclas, cliques do mouse etc.) e passa essas interações para a Visão e o Modelo.

Quando é usado Também quando são desconhecidos os futuros requisitos de interação e apresentação de
dados. Para facilitar a manutenção.
Vantagens Permite que os dados sejam alterados de forma independente de sua representação, e
vice-versa. Apoia a apresentação dos mesmos dados de maneiras diferentes.

Desvantagens Quando solicta-se inclusão de novas informações no modelo pode envolver código
adicional e complexidade de código.
Engenharia de Software 2
1. Padrões de Arquitetura
O modelo gráficos da arquitetura do padrão MVC é mostrado na Figuras 6.3 run-
time.
Engenharia de Software 2
1. Padrões de Arquitetura
A Tabela abaixo descreve o conhecido padrão de Arquitetura em Camadas, O
padrão de arquitetura em camadas é outra maneira de conseguir a separação e
independência dos dados com a interface. Esse padrão está na Tabela 2.
Aqui, a funcionalidade do sistema é organizada em camadas separadas, e
cada camada só depende dos recursos e serviços oferecidos pela camada
imediatamente abaixo dela.
Engenharia de Software 2
1. Padrões de Arquitetura
Nome Arquitetura em Camadas
Descrição Uma camada fornece serviços à camada acima dela.
Quando é usado É 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.

Vantagens Desde que a interface seja mantida, permite a substituição de camadas inteiras. Recursos
redundantes (por exemplo, autenticação) podem ser fornecidos em cada camada para aumentar a
confiança do sistema.

Desvantagens Na prática, costuma ser difícil proporcionar uma clara separação entre as camadas, e uma camada de
alto nível pode ter de interagir diretamente com camadas de baixo nível, em vez de através da
camada imediatamente abaixo dela. O desempenho pode ser um problema por causa dos múltiplos
níveis de interpretação de uma solicitação de serviço, uma vez que são processados em cada camada.
Engenharia de Software 2
1. Padrões de Arquitetura
A Figura 3 é um exemplo de como
esse padrão de arquitetura em
camadas pode ser aplicado a um
sistema de biblioteca chamado
LIBSYS, que permite controlar o
acesso eletrônico de um grupo de
bibliotecas universitárias.
Esse sistema tem arquitetura de
cinco camadas, na qual a camada
inferior são os bancos de dados
individuais de cada biblioteca.

Figura 3. Exemplo da Arquitetura em camadas


Engenharia de Software 2
1. Padrões de Arquitetura
A Tabela abaixo descreve o conhecido padrão de Arquitetura de Repositório.
Este padrão é utilizado na maioria dos sistemas que usam grandes quantidades
de dados é organizada em torno de um banco de dados ou repositório
compartilhado.
Esse modelo é adequado para aplicações nas quais os dados são gerados por
um componente e usados por outro. Exemplos desse tipo de sistema são:
sistemas de informações gerenciais e ambientes interativos de desenvolvimento
de software.
Engenharia de Software 2
1. Padrões de Arquitetura
Nome Arquitetura Repositório
Descrição Todos os dados em um sistema são gerenciados em um repositório central, acessível a todos os
componentes do sistema. Os componentes não interagem diretamente, apenas por meio do
repositório.
Quando é usado Você deve usar esse padrão quando tem um sistema no qual grandes volumes de informações são
gerados e precisam ser armazenados por um longo tempo. Você também pode usá-lo em sistemas
dirigidos a dados, nos quais a inclusão dos dados no repositório dispara uma ação ou ferramenta.

Vantagens Os componentes podem ser independentes — eles não precisam saber da existência de outros
componentes. As alterações feitas a um componente podem propagar-se para todos os outros. Todos
os dados podem ser gerenciados de forma consistente (por exemplo, backups feitos ao mesmo
tempo), pois tudo está em um só lugar.
Desvantagens O repositório é um ponto único de falha, assim, problemas no repositório podem afetar todo o
sistema. Pode haver ineficiências na organização de toda a comunicação através do repositório.
Distribuir o repositório através de vários computadores pode ser difícil.
Engenharia de Software 2
1. Padrões de Arquitetura
A Tabela abaixo descreve o conhecido padrão de Cliente-Servidor. Um sistema que segue
o padrão cliente-servidor é organizado como um conjunto de serviços e servidores associados
e clientes que acessam e usam os serviços. Os principais componentes desse modelo são:
1. Um conjunto de servidores que oferecem serviços a outros componentes. Exemplos de
servidores incluem: servidores de impressão que oferecem serviços de impressão; servidores
de arquivos que oferecem serviços de gerenciamento de arquivos; e um servidor de
compilação, que oferece serviços de compilação de linguagens de programação.
2. Um conjunto de clientes que podem chamar os serviços oferecidos pelos servidores. Em
geral, haverá várias instâncias de um programa cliente executando simultaneamente em
computadores diferentes.
3. Uma rede que permite aos clientes acessar esses serviços. A maioria dos sistemas cliente-
servidor é implementada como sistemas distribuídos, conectados através de protocolos de
Internet.
Engenharia de Software 2
1. Padrões de Arquitetura
Novamente, um benefício importante é a separação e a independência.
Serviços e servidores podem ser modificados sem afetar outras partes do sistema.
Os clientes podem ter de saber os nomes dos servidores disponíveis e os
serviços que eles fornecem. No entanto, os servidores não precisam conhecer a
identidade dos clientes ou quantos clientes estão acessando seus serviços.
É fácil adicionar um novo servidor e integrá-lo com o resto do sistema ou
atualizar os servidores de forma transparente, sem afetar outras partes do
sistema.
Engenharia de Software 2
1. Padrões de Arquitetura
Nome Arquitetura Cliente-Servidor
Descrição Em uma arquitetura cliente-servidor, a funcionalidade do sistema está organizada em serviços — cada
serviço é prestado por um servidor. Os clientes são os usuários desses serviços e acessam os
servidores para fazer uso deles.
Quando é usado É usado quando os dados em um banco de dados compartilhado precisam ser acessados a partir de
uma série de locais. Como os servidores podem ser replicados, também pode ser usado quando a
carga em um sistema é variável.

Vantagens A principal vantagem desse modelo é que os servidores podem ser distribuídos através de uma rede.
A funcionalidade geral (por exemplo, um serviço de impressão) pode estar disponível para todos os
clientes e não precisa ser implementada por todos os serviços.

Desvantagens Cada serviço é um ponto único de falha suscetível a ataques de negação de serviço ou de falha do
servidor. O desempenho, bem como o sistema, pode ser imprevisível, pois depende da rede.
A Figura 6.7 é um exemplo de uma biblioteca de filmes e vídeos/DVDs, organizados como
um sistema cliente-servidor.
Engenharia de Software 2
1. Padrões de Arquitetura
Em resumo...
● Uma arquitetura de software é uma descrição de como um sistema de software é organizado.
● As propriedades de um sistema, como desempenho, proteção e disponibilidade, são influenciadas
pela arquitetura adotada.
● As decisões de projeto de arquitetura incluem decisões sobre o tipo de aplicação, a distribuição do
sistema, os estilos da arquitetura a serem utilizados e as formas como a arquitetura devem ser
documentadas e avaliadas.
● Os padrões da arquitetura são um meio de reusar o conhecimento sobre as arquiteturas genéricas de
sistemas.
● Entre os padrões de arquitetura comumente usados estão: Modelo-Visão-Controlador, Arquitetura em
camadas, Repositório, Cliente-servidor e Duto e filtro.
Engenharia de Software 2
1. Padrões de Arquitetura
Curiosidades...outros padrões de Arquitetura de Software.

– Pipes-and-filters (PF): O padrão Pipe-and-filter é baseada em uma arquitetura linear, usa os componentes computacionais como filtros, que recebem uma

entrada, transformam-na a partir de um ou mais algoritmos e geram uma saída para um canal de comunicação. Alguns exemplos deste tipo de arquitetura de

software são o Sheel do Linux e os reprodutores de vídeo em diferentes formatos.

– Peer-to-Peer (P2P): No Peer-to-Peer, todos os pares são clientes e servidores, ou seja, cada computador é um provedor de serviços independente de um

servidor central. Se você já baixou algum arquivo via torrent, se deparou com este padrão arquitetural.

– Service-Oriented Architecture (SOA): O SOA facilita a operação das grandes empresas, pois auxilia na criação do processo de encontrar, definir e gerenciar

os serviços disponibilizados. O NuBank e a Amazon são exemplos de corporações que utilizam este modelo arquitetural.

– Publish-Subscribe (Pub/Sub): Principal padrão arquitetural de redes sociais como Instagram e do Spotify, o modelo Publish-Subscribe conecta publicadores

(publishers) e assinantes (subscribers). Os publishers enviam mensagens aos subscribers, que são notificados sempre que um novo conteúdo é disponibilizado.
Engenharia de Software 2
. TAREFA

Questão 1 – Explique por que, ao projetar a arquitetura de um sistema de grande


porte, você normalmente usa vários padrões de arquitetura. Para responder esta
questão, considere as vantagens e desvantagens de cada padrão de arquitetura.

Questão 2 – Sugira uma arquitetura para um sistema (tal qual o iTunes ou o


Spotify) que sirva para vender e distribuir música na Internet. Que padrões são a
base para essa arquitetura.
Engenharia de Software 2
3. TAREFA
Aula 7 - (TEO) – Visões de Arquitetura de Projeto

https://create.kahoot.it/share/aula-7-teo-padroes-de-arquitetura/54d94b7f-186a-
43ea-8a82-122e0fbeb10d

Você também pode gostar