Você está na página 1de 20

Projeto de Software

Aula 3 - 2023/2

Profª. Sofia Costa Paiva


sofialarissa@ufg.br
Projeto (design) de software
● Projeto (ou Design) envolve dois grupos de atividades:
○ Design lógico (ou da camada de domínio): lógica de negócio.
Representado por:
■ Diagrama de Classes
■ Diagramas de Interação: mostram como os objetos trocam
mensagens
○ Design tecnológico: tecnologia usada - interface de usuário,
armazenamento de dados, segurança, comunicação
■ Design da camada de interface: projeto da interface usuário
■ Design da camada de persistência: definição de um mecanismo
para permitir que os dados sejam salvos e carregados
(automaticamente). 2
Arquitetura de Software
● O que é Arquitetura de Software?
● Equivalente à planta baixa de uma casa ou prédio - representa
a distribuição dos cômodos, seus tamanhos, formas e
relações entre si e as portas e janelas que possibilitam o
deslocamento para dentro e fora dos cômodos
● Dá uma visão geral do software. É obtido por:
1. informações sobre o domínio da aplicação
2. elementos específicos como as classes e casos de uso e
suas relações
3. disponibilidade de estilos de arquitetura e padrões
● Geralmente representa um conjunto de subsistemas
3
interligados
Exemplos de Arquitetura

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.

A arquitetura de um sistema constitui um framework abrangente


que descreve sua forma e estrutura - seus componentes e como
eles se integram 5
Arquitetura de Software
● A arquitetura fornece uma representação que facilita a
comunicação entre todos os envolvidos
● Constitui um modelo relativamente pequeno e
intelectualmente compreensível de como o sistema é
estruturado e como seus componentes trabalham em
conjunto
● Há uma série de estilos arquiteturais diferentes que poderiam
ser aplicados a um domínio de aplicação
○ Final da disciplina

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

● Este tipo de sistema é mais complexo que os sistemas


centralizados, o que os torna mais difíceis de projetar

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

Person(personAlias, "Label", "Optional Description")


Container(containerAlias, "Label", "Technology", "Optional Description")
System(systemAlias, "Label", "Optional Description")

Rel(personAlias, containerAlias, "Label", "Optional Technology")


@enduml 19
Resumindo…
● Sistemas Distribuídos podem ser dimensionados para lidar com o aumento
da demanda, podem continuar a oferecer serviços de usuário (mesmo que
algumas partes do sistema falhem) e habilitam o compartilhamento de
recursos
● Questões importantes no projeto de sistemas distribuídos: transparência,
abertura, escalabilidade, proteção, qualidade de serviço e gerenciamento de
falhas
● Sistemas cliente-servidor está estruturado em camadas, com a camada de
apresentação executando no computador do cliente. Os servidores fornecem
serviços de gerenciamento de dados.
● C4 Model - Diagrama de Contexto pode ser utilizado para representar a
arquitetura de software

20

Você também pode gostar