Escolar Documentos
Profissional Documentos
Cultura Documentos
Aula 3 - 2023/2
4
Arquitetura de Software
● Arquitetura é também algo mais: “milhares de decisões, tanto
grandes quanto pequenas”
● Algumas dessas decisões são tomadas logo no início do
projeto e podem ter um impacto profundo sobre todo o
restante do projeto
● A arquitetura de software deve modelar a estrutura de um
sistema, bem como a maneira por meio do qual os dados e os
componentes procedurais colaboram entre si.
6
Questões Fundamentais
de Projeto
7
Sistemas Distribuídos
● Atualmente, quase todos os grandes sistemas computacionais
são sistemas distribuídos
○ Sistema que envolve vários computadores
○ Coleção de computadores independentes que aparece para
o usuário como um único sistema coerente
● Vantagens de um sistema distribuído
○ Compartilhamento de recursos: discos, impressoras, arquivos
e compiladores
○ Abertura: permite que equipamentos e
softwares de diferentes fornecedores sejam
combinados
○ Concorrência: vários processos acontecendo
em computadores separados podendo
8
comunicar-se entre si.
Sistemas Distribuídos
● Vantagens de um sistema distribuído
○ Escalabilidade: pode-se aumentar os recursos
○ Tolerância a defeitos: pode haver serviços com qualidade
inferior ao esperado
9
Sistemas Distribuídos
Sistemas baseados na Web são geralmente organizados com
arquitetura Cliente-Servidor
Servidor conhece os clientes, mas clientes não conhecem
os demais clientes
10
Sistemas Distribuídos
Arquitetura em 3 camadas: camada de aplicação pode ter
diversos módulos
11
Software como Serviço
● Software é implantado em um (ou mais) servidor(es) e é
acessado pelo navegador
● Software é propriedade de um fornecedor
● Usuários podem pagar pelo
software de acordo com a
quantidade em uso
12
Evolução das Arquiteturas de Software
13
C4 Model
● Conjunto de abstrações hierárquicas com uma notação em 4
diagramas independentes de ferramenta
○ https://c4model.com/
● Diagramas fáceis de aprender, abordagem amigável ao
desenvolvedor para diagramar arquitetura de software
● Hierarquia em 4 níveis
○ Contexto
○ Container
○ Componente
○ Código
14
C4 Model
● Conjunto de abstrações hierárquicas com uma notação em 4
diagramas independentes de ferramenta
○ https://c4model.com/
● Diagramas fáceis de aprender, abordagem amigável ao
desenvolvedor para diagramar arquitetura de software
● Hierarquia em 4 níveis
○ Contexto
○ Container
○ Componente
○ Código
15
C4 Model - Diagrama de Contexto
● Bom ponto de partida para
você identificar o seu
sistema no contexto em
que será desenvolvido,
com outros sistemas que
poderá interagir e os
possíveis usuários
envolvidos.
16
C4 Model - Diagrama de Container
● Depois que você entendeu como seu sistema se adapta ao
ambiente geral, uma próxima etapa é ampliar os limites do
sistema com um diagrama de container
● Um container é algo como um aplicativo web do lado do
servidor, aplicativo de página única, aplicativo desktop,
aplicativo móvel, esquema de banco de dados, sistema de
arquivos, etc.
○ Uma unidade executável/implantável separadamente
(por exemplo, um espaço de processo separado) que
executa código ou armazena dados.
● Mostra o formato de alto nível da arquitetura de software e
como as responsabilidades são distribuídas e como os
containers se comunicam entre si 17
C4 Model - Diagrama de Contexto
● Exemplo
18
PlantUML
● Linguagem para descrição e geração de diagramas:
http://www.plantuml.com/plantuml/
● Pode gerar Diagramas do C4 Model
● Exemplo:
@startuml
!include
https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_
Container.puml
20