Buscar

III_Teorico (3)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Inserir Título Aqui 
Inserir Título Aqui
Arquitetura 
de Software
Arquitetura de Software em Camadas
Responsável pelo Conteúdo:
Prof. Me. Wilson Vendramel
Revisão Textual:
Prof.ª Esp. Kelciane da Rocha Campos
Nesta unidade, trabalharemos os seguintes tópicos:
• Arquitetura de Software em Camadas;
• Arquitetura do Sistema de Software;
• Arquitetura Lógica;
• Arquitetura Física.
Fonte: iStock/Getty Im
ages
Objetivos
• Entender a representação da arquitetura lógica por meio de pacotes e da arquitetura 
física por meio de alocação de camadas e de componentes.
Caro Aluno(a)!
Normalmente, com a correria do dia a dia, não nos organizamos e deixamos para o 
último momento o acesso ao estudo, o que implicará o não aprofundamento no material 
trabalhado ou, ainda, a perda dos prazos para o lançamento das atividades solicitadas.
Assim, organize seus estudos de maneira que entrem na sua rotina. Por exemplo, você 
poderá escolher um dia ao longo da semana ou um determinado horário todos ou alguns 
dias e determinar como o seu “momento do estudo”.
No material de cada Unidade, há videoaulas e leituras indicadas, assim como sugestões 
de materiais complementares, elementos didáticos que ampliarão sua interpretação e 
auxiliarão o pleno entendimento dos temas abordados.
Após o contato com o conteúdo proposto, participe dos debates mediados em fóruns de 
discussão, pois estes ajudarão a verificar o quanto você absorveu do conteúdo, além de 
propiciar o contato com seus colegas e tutores, o que se apresenta como rico espaço de 
troca de ideias e aprendizagem.
Bons Estudos!
Arquitetura de 
Software em Camadas
UNIDADE 
Arquitetura de Software em Camadas
Contextualização
Os sistemas de software baseados na Web, mais conhecidos como aplicações Web, 
são implementados como arquiteturas cliente-servidor em multicamadas, exigindo no mí-
nimo três camadas: apresentação, aplicação e dados.
O sistema de software orientado a objetos pode ser visto por meio de subsistemas 
que o compõem. Esses subsistemas são definidos durante o projeto (design) de arquite-
tura de software.
A arquitetura de software é a estrutura do sistema de software, que especifica e mos-
tra os componentes do software, as propriedades visíveis externamente e como elas se 
relacionam entre si.
Por conta da importância do projeto (design) de uma arquitetura de software, as 
decisões tomadas durante o projeto arquitetural de software influenciam diretamente na 
construção do sistema de software, pois também definem a maneira como o software 
atenderá a seus requisitos não funcionais. A arquitetura do sistema de software pode ser 
definida em dois níveis arquiteturais: arquitetura lógica e arquitetura física.
Para sistemas simples, a arquitetura de software não tem tanta relevância, mas na 
modelagem de sistemas complexos, inclusive sistemas distribuídos e baseados na Web, é 
fundamental conhecer quais são os componentes físicos do sistema, quais são as interde-
pendências entre eles e de que forma as camadas lógicas do sistema de software estão 
organizadas por esses componentes.
6
7
Arquitetura de Software em Camadas
Este material teórico apresenta a arquitetura de software em camadas, representando 
a arquitetura lógica por meio de pacotes e a arquitetura física por meio de alocação de 
camadas e de componentes. Para facilitar a compreensão da representação da arquitetura 
de software em camadas, serão utilizadas notações da Unified Modeling Language (UML), 
especificamente os diagramas de pacotes, de componentes e de implantação.
Arquitetura do Sistema de Software
Na Primeira Unidade, foi mencionado que as funcionalidades de um sistema de software 
orientado a objetos são realizadas internamente por meio de colaborações entre objetos. 
Isso significa que um sistema de software orientado a objetos é formado por objetos que 
interagem entre si por meio do envio de mensagens com o objetivo de executar suas 
tarefas para com o sistema de software.
Por outro ângulo, o sistema de software orientado a objetos pode ser visto por meio 
de subsistemas que o compõem. Esses subsistemas são definidos durante o projeto 
(design) de arquitetura de software.
A definição de subsistemas divide o sistema de software em partes, estabelecendo 
as interfaces entre essas partes. As vantagens de dividir um sistema de software são:
a) produção de unidades menores de desenvolvimento; 
b) maximização do reuso no nível de subsistemas componentes;
c) suporte no gerenciamento da complexidade no desenvolvimento 
(BEZERRA, 2015).
Só para lembrar, o que é arquitetura de software mesmo?
Na Primeira Unidade, foi apresentada uma das definições sobre arquitetura 
de software.
A arquitetura de software é a estrutura do sistema de software, que especifica e mostra 
os componentes do software, as propriedades visíveis externamente e como elas se rela-
cionam entre si. A arquitetura de software é influenciada e modificada com o decorrer do 
tempo pelos requisitos de negócio, ambiente de desenvolvimento e evolução das caracte-
rísticas técnicas (BASS, CLEMENTS e KAZMAN, 2003).
Apesar de a Unidade 1 ter definido o termo arquitetura de software a partir do importante 
livro chamado Software Architecture in Practice de Bass, Clements e Kazman (2003), não há 
uma definição universal quanto ao significado de arquitetura de software.
De qualquer forma, vale a pena destacar também a definição de arquitetura de software 
apresentada no documento de especificação da Unified Modeling Language (UML).
7
UNIDADE 
Arquitetura de Software em Camadas
É a estrutura organizacional do software. Uma arquitetura pode ser 
recursivamente decomposta em partes que interagem através de 
interfaces. Relacionamentos conectam as partes e restrições que se 
aplicam ao agrupamento das partes. (OMG, 2001 apud BEZERRA, 
2015, p.339.)
Maiores informações sobre a UML podem ser encontradas em: https://goo.gl/4i9W
Na Unidade Anterior, foram elencados alguns atributos de qualidade de um sistema 
de software: funcionalidade, segurança, portabilidade, usabilidade, interoperabilidade, 
desempenho e manutenibilidade. Esses atributos de qualidade refletem os requisitos não 
funcionais do software. Dependendo do propósito do software em relação ao domínio 
de negócio, alguns atributos devem ser priorizados enquanto que outros são relevados. 
Certo, mas por que eu mencionei novamente esses atributos?
Por conta da importância do projeto (design) de uma arquitetura de software, as de-
cisões tomadas durante o projeto arquitetural de software influenciam diretamente na 
construção do sistema de software, pois também definem a maneira como o software 
atenderá a seus requisitos não funcionais. A arquitetura do sistema de software pode ser 
definida em dois níveis arquiteturais: arquitetura lógica e arquitetura física.
Arquitetura Lógica
A arquitetura lógica define como um sistema de software é decomposto em diversos 
subsistemas e como as suas classes são distribuídas nos diversos subsistemas definidos. 
A arquitetura lógica se refere à organização das classes de um sistema de software em 
subsistemas, representando, assim, um conjunto de classes. Um sistema de software pode 
ser dividido em vários subsistemas, sendo que a comunicação entre eles é realizada através 
de suas interfaces. Cada subsistema tem sua interface e fornece serviços aos outros subsis-
temas por meio do conjunto de serviços estabelecidos na sua interface (BEZERRA, 2015).
Um subsistema consome serviços de outros subsistemas através de interfaces e um sub-
sistema fornece serviços para outros subsistemas através de interfaces. Já que o conceito de 
interface será bastante utilizado nesta unidade, vamos aproveitar a ocasião para explicá-lo.
Quando surge o termo interface, é bastante comum associar o referido termo à inter-
face gráfica (de usuário), mas nem sempre estamos nos referindo a esse tipo de interface. 
Este material teórico utiliza o conceito de interface para estabelecer a comunicação entre 
objetos,tanto na visão de classes quanto na visão de subsistemas ou até mesmo na visão 
de componentes.
Vale ressaltar que uma interface representa um conjunto de serviços (métodos) fornecidos 
por uma classe, um subsistema ou um componente. Os serviços disponibilizados pelas inter-
faces são abstratos, portanto não apresentam implementação, necessitando ser implemen-
tados (realizados) por uma ou mais classes, por um subsistema ou um componente.
8
9
Uma interface pode ser vista como um contrato de comportamento entre um objeto 
consumidor e possíveis objetos fornecedores de um determinado serviço. Uma vez que 
o objeto fornecedor implemente a interface que o objeto consumidor espera, o objeto 
que consome o serviço não necessita conhecer o verdadeiro objeto que fornece o serviço 
(BEZERRA, 2015).
Não confunda classe abstrata e interface. Apesar de algumas semelhanças por ambas 
serem abstratas, tais conceitos são diferentes, tendo cada um o seu objetivo.
As classes abstratas são utilizadas para simplificar e organizar hierarquias de generali-
zação/especialização (herança), onde propriedades comuns a diversas classes podem ser 
definidas em uma classe abstrata, a partir da qual suas subclasses herdam. As classes abs-
tratas também propiciam o princípio do polimorfismo. Já as interfaces são utilizadas para 
estabelecer um contrato comportamental (de serviços) entre um objeto consumidor e objetos 
fornecedores de um determinado serviço. A classe abstrata possui tanto métodos concretos 
quanto abstratos, enquanto a interface possui apenas métodos abstratos. A classe abstrata 
tem atributos, mas a interface não; eventualmente uma interface pode ter constantes, mas 
vale lembrar que constantes não são atributos. Uma semelhança entre os dois conceitos é 
que tanto a classe abstrata quanto a interface não instanciam objetos.
A figura 1 mostra um exemplo de utilização do conceito de interface. O objeto consumi-
dor Cliente depende do objeto fornecedor ContaBancaria através da interface Manipulável 
e o objeto consumidor Gerente depende do objeto fornecedor ContaBancaria através da 
interface Administrável. Como as duas interfaces apresentam somente as assinaturas dos 
serviços, isto é, métodos abstratos, o objeto ContaBancaria precisa implementar (realizar) 
as interfaces.
Figura 1 – Realização de interfaces
Fonte: Adaptado de Bezerra, 2015 p. 287
Mas na verdade, o que há em cada uma das interfaces apresentadas na figura 1?
9
UNIDADE 
Arquitetura de Software em Camadas
Cada interface tem seu conjunto de serviços (métodos) a ser implementado (realizado) 
pela classe ContaBancaria. A figura 2 mostra o mesmo exemplo, só que agora de forma 
explícita, revelando assim os serviços das interfaces. O objeto consumidor Cliente depende 
dos serviços (métodos) creditar() e debitar() do objeto fornecedor ContaBancaria através 
da interface Manipulável, e o objeto consumidor Gerente depende dos serviços (métodos) 
desbloquear(), creditar() e debitar() do objeto fornecedor ContaBancaria através da interface 
Administrável. Os serviços de ambas as interfaces devem ser realizados pelo objeto 
ContaBancaria. Observe ainda a sintaxe de realização entre a classe ContaBancaria e as 
interfaces. Também é comum a interface ser definida de forma similar à notação de classe, 
mas vale frisar que as interfaces não possuem atributos, apenas as assinaturas dos serviços, 
isto é, métodos abstratos e definidos com visibilidade pública.
Figura 2 – Realização de Interfaces (usando notação de classe)
 Fonte: Adaptado de Bezerra, 2015 p. 286
As interfaces são utilizadas com os seguintes propósitos:
a) capturar semelhanças entre classes não relacionadas sem obrigar relacionamentos 
entre elas;
b) declarar métodos que uma ou mais classes devem implementar;
c) revelar os serviços de um objeto, sem revelar a sua classe;
d) aumentar o desacoplamento entre objetos de um sistema (BEZERRA, 2015).
Uma vez que o conceito de interface foi apresentado, torna-se mais fácil compreender 
o que é uma arquitetura lógica.
Durante o desenvolvimento de um sistema de software, seus subsistemas devem ser 
definidos, inclusive as interfaces de comunicação entre eles. Cada classe do sistema deve 
10
11
ser alocada em um subsistema. Feito isso, esses subsistemas podem ser desenvolvidos 
quase que independentemente uns dos outros.
Como um sistema de software é decomposto em subsistemas e como as classes desse 
sistema são alocadas nos diversos subsistemas?
De acordo com Bezerra (2015), o modelo de classes de domínio é o ponto de parti-
da para a identificação dos subsistemas de um sistema de software orientado a objetos. 
As classes devem ser agrupadas adotando-se algum critério para formar subsistemas, sendo 
que um critério de agrupamento interessante é considerar as classes mais importantes do 
modelo de classes de domínio. Para cada uma dessas classes, um subsistema é definido e 
as outras classes menos importantes e que estão relacionadas a uma classe considerada 
importante são alocadas no subsistema desta última.
Para exemplificar a identificação de subsistemas e a alocação de classes nos subsiste-
mas, vamos recordar o diagrama de classes de projeto apresentado na Primeira Unidade 
desta disciplina. Para você se lembrar do diagrama ao qual estou me referindo, o mesmo 
é apresentado na figura 3. Apesar desta figura exibir um diagrama de classes de projeto, 
as três classes definidas são de modelo, refletindo, assim, o domínio de negócio.
Figura 3 – Diagrama de Classes de Projeto
 Fonte: Elaborado pelo autor
Considerando que o modelo de classes de projeto da figura 3 tem duas classes mais im-
portantes: Locação e Cliente, nós podemos identificar dois subsistemas chamados de Loca-
ção e Cliente, respectivamente, e distribuir as classes existentes pelos subsistemas definidos. 
A classe Carro (menos importante) é alocada juntamente com a classe mais importante à 
qual ela está relacionada (Locação).
A figura 4 mostra um diagrama de subsistemas contendo os dois subsistemas identifi-
cados. Na arquitetura lógica, os subsistemas são representados como pacotes, portanto, 
logicamente, um subsistema é um pacote de classes. Além da alocação das classes nos 
devidos subsistemas (pacotes), observe que cada subsistema tem a sua interface, sendo 
ILocacao para o subsistema Locação e ICliente para o subsistema Cliente. Vale enfatizar 
que uma ou mais classes do subsistema implementam sua interface.
11
UNIDADE 
Arquitetura de Software em Camadas
Figura 4 – Diagrama de Subsistemas (Pacotes)
 Fonte: Elaborado pelo autor
Surgindo novas classes a partir da decomposição das classes do modelo de domínio, 
essas também devem ser alocadas aos subsistemas definidos. Sendo necessário, uma 
nova classe de domínio decomposta pode definir um novo subsistema.
A figura 5 mostra novamente um diagrama de subsistemas contendo os dois subsiste-
mas identificados anteriormente, mas desta vez com a alocação de novas classes que fo-
ram decompostas a partir das classes de domínio que já existiam. O subsistema Locação 
ganhou mais duas classes: Motor e Roda, enquanto que o subsistema Cliente também 
ganhou duas novas classes: Endereço e Telefone.
Figura 5 – Diagrama de Subsistemas (Pacotes) com a alocação de novas classes
 Fonte: Elaborado pelo autor
12
13
Uma classe deve ser definida em um único subsistema, embora possa ser utilizada em 
vários. O subsistema que define a classe deve mostrar todas as propriedades (atributos e 
métodos) da mesma. Já os outros subsistemas que fazem referência a essa classe podem 
utilizar a notação simplificada da mesma, isto é, apenas o nome da classe.
O padrão de arquitetura Model-View-Controller (MVC) tem relação com a arquitetura 
lógica do sistema de software. A figura 6 apresenta uma representação do MVC em um 
diagrama de subsistemas (pacotes). Observe que os subsistemas se comunicam através de 
suas interfaces, encapsulando as classes alocadas nos subsistemas. Vale ressaltar que esta 
figura é um refinamentoda figura 10, apresentada na Unidade Anterior.
Figura 6 – Diagrama de Subsistemas 
(Pacotes) com a alocação de novas classes
Fonte: elaborado pelo autor
Outras informações sobre o padrão arquitetural MVC podem ser encontradas em: 
https://goo.gl/QO4O5P
Já abordamos classe e subsistema. Agora, vamos abordar o conceito de camada. O 
que é uma camada de software? Por que vale a pena dividir um sistema de software 
em camadas?
Os sistemas de software têm uma arquitetura genérica que pode ser organizada como 
uma arquitetura em camadas. Esses sistemas são baseados em transações, pois normalmen-
te esses sistemas envolvem transações de banco de dados. As camadas incluem: interface de 
usuário, comunicações de usuário, recuperação e modificação de informações e banco de 
dados (SOMMERVILLE, 2011).
A figura 7 apresenta uma arquitetura genérica em camadas na forma de uma pilha de 
camadas de software.
13
UNIDADE 
Arquitetura de Software em Camadas
Figura 7 – Arquitetura Genérica em Camadas
Fonte: Sommerville, 2011 p. 118
Os sistemas de software baseados na Web, mais conhecidos como aplicações Web, são 
implementados como arquiteturas cliente-servidor em multicamadas. O servidor Web é res-
ponsável por todas as comunicações do usuário, onde a interface de usuário é implementa-
da utilizando um browser; o servidor da aplicação é responsável por implementar a lógica 
específica de aplicação, assim como o armazenamento de informações e as solicitações 
de recuperação; o servidor do banco de dados move as informações do banco de dados 
para a aplicação ou desta última para o banco de dados, além de gerenciar as transações 
(SOMMERVILLE, 2011).
De acordo com Bezerra (2015), uma camada é uma coleção de unidades (classes ou 
subsistemas) que podem ser executadas ou acessadas. As camadas representam níveis 
de abstração distintos. Por exemplo, um sistema de software orientado a objetos pode 
ser representado por uma pilha de camadas de software que se comunicam entre si. 
Enquanto as camadas inferiores apresentam serviços cada vez mais genéricos, as cama-
das superiores representam serviços cada vez mais específicos. A divisão de um sistema 
de software em camadas possibilita maior portabilidade e manutenibilidade. Se houver 
uma modificação numa camada mais baixa (mais genérica) que não afete a sua inter-
face, essa alteração não acarretará mudanças nas camadas mais altas. Se houver uma 
modificação em uma camada mais alta (mais específica) que não resulte no surgimento 
de um serviço em uma camada mais baixa, essa alteração não acarretará mudanças nas 
camadas mais baixas.
Não há uma padronização na literatura para definir os nomes das camadas típicas 
de um sistema de software.
A figura 8 mostra uma representação típica de uma arquitetura cliente-servidor em 
multicamadas comumente encontrada em sistemas de software, separando as camadas 
mais comuns de um sistema de software: apresentação, aplicação, domínio e infraestru-
tura. Observe nessa figura que de cima para baixo, as camadas vão ficando cada vez mais 
genéricas. Outra observação a ser feita é que as camadas de cima dependem das camadas 
de baixo, mas o contrário não acontece.
14
15
Embora a notação da UML para subsistemas (pacotes) e para camadas seja a mesma, 
os significados desses conceitos são distintos. Uma camada de um sistema de software 
costuma ter diversos subsistemas dentro dela. Enquanto um subsistema agrupa classes, a 
camada agrupa subsistemas. 
Figura 8 – Representação típica de uma 
arquitetura cliente-servidor em multicamadas
Fonte: Adaptado de Bezerra, 2015 p.344
• Camada de apresentação também é chamada de camada de interface com o usuário;
• Camada de aplicação também é chamada de camada de serviço;
• Camada de domínio também é chamada de camada de negócio;
• Camada de infraestrutura também é chamada de camada de serviços técnicos.
Outro aspecto importante é entender a relação entre o padrão arquitetural MVC com 
as camadas da arquitetura lógica apresentada na figura 8.
Apesar de os componentes do MVC não serem camadas, é possível haver uma corres-
pondência entre seus componentes e as camadas de software, ainda mais para aplicações 
Web. Os componentes View e Controller (no que tange requisições HTTP) estão aloca-
dos na camada de Apresentação. O componente Controller (no que tange o controle de 
um caso de uso) está alocado na camada de Aplicação, pois gerencia a resposta esperada 
ao se comunicar com a camada de Domínio. O componente Model está alocado na ca-
mada de Domínio. Por fim, na camada de Infraestrutura estão os serviços relacionados às 
15
UNIDADE 
Arquitetura de Software em Camadas
tecnologias utilizadas para o desenvolvimento da aplicação, como, por exemplo, o acesso 
a um banco de dados (BEZERRA, 2015).
Apenas para enfatizar a relação do padrão de arquitetura MVC com sistemas basea-
dos na Web, a figura 9 apresenta uma visão da arquitetura de software para aplicações 
Web utilizando o padrão arquitetural MVC.
Figura 9 – Arquitetura de software utilizando o padrão MVC
 Fonte: Sommerville, 2011 p. 110
Na plataforma JEE, as tecnologias Java ServerPages e Servlets são adotadas para implemen-
tar o padrão arquitetural MVC. Há diversos frameworks que suportam a divisão da aplicação 
Web seguindo o padrão MVC, como o Java ServerFaces, o Spring MVC e o Apache Struts. No 
contexto da plataforma Microsoft, há o framework ASP.NET MVC, por exemplo. 
Arquitetura Física
A arquitetura física, também chamada de arquitetura de implantação, representa a 
distribuição física do sistema de software pelo hardware disponível. Essa arquitetura diz 
respeito à disposição dos subsistemas de um sistema de software pelos nós de processa-
mento (máquinas) disponíveis. Para sistemas simples, a arquitetura de implantação não 
tem muita relevância, mas na modelagem de sistemas complexos, inclusive sistemas distri-
buídos e baseados na Web, é fundamental conhecer quais são os componentes físicos do 
sistema, quais são as interdependências entre eles e de que forma as camadas lógicas do 
sistema de software estão organizadas por esses componentes. O modelo da arquitetura 
física pode ser representado pelo diagrama de componentes e diagrama de implantação. 
Ambos os diagramas fazem parte da UML (BEZERRA, 2015).
Como os subsistemas devem ser distribuídos fisicamente em nós de processamento 
(máquinas) na implantação do sistema de software?
16
17
Em um sistema de software desenvolvido de acordo com a arquitetura cliente-servidor, 
é bastante comum utilizar as definições das camadas lógicas como um guia para a alocação 
física dos subsistemas. Dessa forma, a cada nó de processamento são alocadas uma ou 
mais camadas lógicas. É importante ficar atento(a) com o termo camada, pois normal-
mente é utilizado com dois sentidos diferentes. Quando abordamos a camada lógica, nós 
estamos nos referindo ao termo layer, porém quando abordamos a camada física, nós es-
tamos nos referindo a um nó de processamento, isto é, ao termo tier (BEZERRA, 2015).
A divisão de um sistema em camadas lógicas é independente da sua distribuição 
física. As camadas de software podem estar fisicamente localizadas em um único nó 
de processamento, ou podem estar distribuídas por diversos nós. Outra alternativa 
é que as camadas lógicas podem estar distribuídas fisicamente em vários nós de 
processamento. Um exemplo é a camada da lógica de negócio que pode ser dividida 
em duas ou mais máquinas.
Já foi mencionado nesta disciplina que a arquitetura adotada por sistemas de software 
baseados na Web é a arquitetura cliente-servidor em multicamadas, precisando haver no 
mínimo três camadas. A figura 10 apresenta uma representação típica da arquitetura 
cliente-servidor em três camadas para aplicações Web.
APRESENTAÇÃO
SERVIDOR DA APLICAÇÃO
SGBD
Figura 10 – Representação da arquitetura 
cliente-servidor em três camadas
Fonte: Adaptado de Bezerra, 2015 p. 358
Sobre a arquitetura cliente-servidor em três camadas, ainda é importante destacar:a) a camada lógica de apresentação fica em um nó de processamento (conhecido 
como presentation tier);
b) as camadas lógicas da aplicação e do domínio ficam juntas em outro nó (camada 
física denominada middle tier). Essa camada física representa o servidor da aplica-
ção. A camada de apresentação requisita serviços para essa camada. É possível ha-
ver mais de um servidor de aplicação, com o objetivo de aumentar a disponibilidade 
e o desempenho do sistema de software;
c) a camada física do meio faz acesso a outra camada física, onde geralmente está 
localizado um banco de dados. Essa camada física é chamada de camada de dados 
(data tier) (BEZERRA, 2015).
17
UNIDADE 
Arquitetura de Software em Camadas
Uma vez que as camadas lógicas foram alocadas aos devidos nós de processamento, 
o diagrama de implantação da UML pode ser utilizado para representar a arquitetura 
física do sistema de software.
A figura 11 apresenta uma possível representação do diagrama de implantação. Esse 
diagrama tem dois elementos básicos: os nós de processamento, que representam os 
recursos computacionais (máquinas, por exemplo) e suas conexões, que representam os 
mecanismos de comunicação.
<<LAN>>
IMPRESSORA
CLIENTE:
BROWSER
SERVIDOR
DA APLICAÇÃO
BANCO DE 
DADOS CORPORATIVO
<<HTTP>> <<ODBC>>
Figura 11 – Diagrama de Implantação
Adaptado de Bezerra, 2015 p. 359
O que deve ser alocado em nós de processamento?
Na arquitetura física, os componentes de software de cada camada também devem 
ser definidos.
Um componente de software é uma unidade que existe em tempo de execução, que 
pode ser utilizada na construção de diversos sistemas e que, havendo necessidade, pode 
ser substituída por outra unidade que tenha a mesma funcionalidade. Um componente 
provê acesso aos seus serviços por meio de uma interface. Quando o componente é cons-
truído de acordo com paradigma orientado a objetos, ele é composto por vários objetos, 
portanto a interface do componente é constituída de um ou mais serviços que as classes 
dos referidos objetos implementam (BEZERRA, 2015).
A figura 12 mostra um diagrama de implantação com os componentes alocados. 
Este diagrama foi elaborado a partir dos subsistemas (pacotes) e das camadas lógicas 
(layers) projetadas anteriormente na arquitetura lógica para o sistema de software de 
locadora de carros, sendo no caso uma aplicação Web. Na arquitetura física, os sub-
sistemas são representados como componentes, portanto fisicamente um subsistema 
é um componente de classes. Além da alocação dos componentes nos devidos nós de 
processamento (máquinas), observe que cada componente tem a sua interface, sendo 
ILoc para o componente Locação e ICli para o componente Cliente. Este diagrama 
mostra ainda dois serviços externos disponíveis na Web (Web Services), sendo um para 
consultar a situação do CPF do cliente e outro para efetuar o pagamento por meio de 
cartão de crédito. Cada Web Service (WS) foi alocado em um outro nó de processa-
mento, pois são serviços de terceiros que se encontram disponíveis em outras máquinas. 
18
19
A aplicação Web de locadora de carros somente reutilizará os serviços disponíveis em 
tempo de execução. Observe que o diagrama de implantação representa a forma como 
será a integração e implantação do sistema de software no hardware disponível.
Para mais informações sobre arquitetura de Web Services, acesse: https://goo.gl/XYDPBM
Figura 12 – Diagrama de Implantação 
com alocação de componentes
 Fonte: Elaborado pelo autor
Para maiores detalhes sobre os diagramas da UML, você também pode explorar o livro UML 
essencial: um breve guia para a linguagem-padrão de modelagem de objetos, de Fowler 
(2005), disponibilizado na Biblioteca Virtual Pearson, em: https://goo.gl/g72tci
Este material teórico abordou diversos conceitos relacionados à arquitetura de software 
em camadas, tais como subsistema (pacote), componente, camada lógica (layer), cama-
da física (tier). Compreender a arquitetura de software cliente-servidor em multicamadas 
não é algo simples. Por esta razão, eu procurei representar os conceitos abordados com 
o suporte de diagramas da UML, visando facilitar a compreensão. De qualquer forma, é 
importante que você busque maiores informações sobre o tema nas referências utilizadas 
e no material complementar.
19
UNIDADE 
Arquitetura de Software em Camadas
Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:
 Leitura
Model-View-Controller (MVC)
https://goo.gl/QO4O5P
Biblioteca Cruzeiro do Sul Virtual
https://goo.gl/g72tci
Unified Modeling Language - UML
https://goo.gl/4i9W
W3
https://goo.gl/XYDPBM
20
21
Referências
BASS, L.; CLEMENTS, P.; KAZMAN, R. Software architecture in practice. 2.ed. 
Addison-Wesley, 2003.
BEZERRA, E. Princípios de análise e projeto de sistemas com UML. 3ª ed. São 
Paulo: Elsevier, 2015.
FOWLER. M. UML essencial: um breve guia para a linguagem-padrão de modelagem 
de objetos. 3ª ed. Porto Alegre: Bookman, 2005.
SOMMERVILLE, I. Engenharia de software. 9ª ed. São Paulo: Pearson, 2011.
21

Continue navegando