Você está na página 1de 40

Engenharia de

Software
Aula12
DESENHO E ARQUITECTURA DE
SISTEMAS

O GRUPO DA DISCIPLINA
1
DESENHO E ARQUITECTURA DE SISTEMAS

Quando o ritmo de mudança dentro


da empresa for ultrapassado pelo
ritmo da mudança fora dela, o fim
está próximo.

Jack Welch

O GRUPO DA DISCIPLINA
2
DESENHO E ARQUITECTURA DE SISTEMAS

Motivação

Os arquitectos de sistemas precisam tomar uma


serie de decisões sobre os sistemas.
Para tal precisam responder as seguintes questões
fundamentais:
1. Existe uma arquitectura genérica de aplicação
que possa funcionar como um modelo para o
sistema que esta sendo projectado?
2. Como o sistema será distribuído ao longo de
vários processadores

O GRUPO DA DISCIPLINA
3
DESENHO E ARQUITECTURA DE SISTEMAS

Motivação

3. Qual ou quais estilos de arquitectura são


apropriados para o sistema?
4. Qual será a abordagem fundamental usada para
estruturar o sistema e como este será
decomposto em módulos?
5. Qual estractégia será usada para controlar a
operação das unidades no sistema?
6. Como a arquitectura do sistema deve ser
documentada?

O GRUPO DA DISCIPLINA
4
DESENHO E ARQUITECTURA DE SISTEMAS

Denifição
Arquitectura de Sistema é uma representação de um
sistema em que existe:
• um mapeamento de funcionalidade para
componentes de hardware e software
• um mapeamento da arquitectura de software de
hardware para a arquitetura de hardware
• e uma interação humana com esses componentes.

O GRUPO DA DISCIPLINA
5
DESENHO E ARQUITECTURA DE SISTEMAS

Denifição
Arquitectura de Sistema é a técnica utilizada para
mapear todos os componentes, interfaces, processos
e outros aspectos importantes que suportam a
estrutura de negócio da empresa, levando em
consideração o usuário e o cliente

A escolha de uma arquitectura influencia aspectos


como a performance, qualidade, facilidade de
manutenção e escalabilidade, assim, a decisão da
escolha tem grande impacto no sucesso do projceto,
principalmente a longo prazo.
O GRUPO DA DISCIPLINA
6
DESENHO E ARQUITECTURA DE SISTEMAS

Importância
 Facilita a comunicação entre as partes
interessadas no desenvolvimento do software;
 Destaca decisões iniciais de projecto que terão
um impacto profundo sobre se o sistema pode
atender aos requisitos críticos.
 Reuso em larga escala;
 Reduz riscos associados à construção do
software

O GRUPO DA DISCIPLINA
7
DESENHO E ARQUITECTURA DE SISTEMAS
Uma arquitetura bem projectada pode:
 Reduzir a possibilidade de erros no projeto, já que
com a visão do arquitecto de software é possível
identificar possíveis dificuldades e os pontos
críticos do mesmo, o que evita também chances
de manutenções futuras e de custos muito altos
com mudanças;
 Reduzir riscos em um negócio. Como dissemos, a
arquitetura de software permite enxergar melhor
possíveis erros, custos, restrições e mais, assim
reduzindo a possibilidade de riscos para o negócio
como um todo;
O GRUPO DA DISCIPLINA
8
DESENHO E ARQUITECTURA DE SISTEMAS

Uma arquitetura bem projectada pode:


 Levar a resultados mais assertivos. A construção
de softwares mais flexíveis e de qualidade,
alinhados com as necessidades do negócio, leva a
melhores resultados.
 Aumentar a segurança dos sistemas. Item de
extrema importância, a segurança, quando
pensada durante um projeto de arquitetura de
software, se preocupa com cada necessidade de
proteção e conjuntos de restrições para evitar
ataques cibernéticos.

O GRUPO DA DISCIPLINA
9
DESENHO E ARQUITECTURA DE SISTEMAS

As diversas abordagens da arquitectura de software


podem ser chamadas também de diferentes padrões
ou estilos de arquitetcura.
São esses estilos que caracterizam determinada
arquitectura, considerando o sistema por completo e
assim permitindo que o arquitecto defina a estrutura
ideal.
Atuaclmente, há alguns estilos mais utilizados sao:

O GRUPO DA DISCIPLINA
10
DESENHO E ARQUITECTURA DE SISTEMAS

Existem diferentes tipos de arquitectura, destacando


as seguintes:
• arquitectura cliente-servidor
• arquitectura em camadas
• arquitectura MVC
• arquitectura DAO
• arquitectura Singleton

O GRUPO DA DISCIPLINA
11
DESENHO E ARQUITECTURA DE SISTEMAS

Arquitectura cliente-servidor
Nesse padrão, dados do cliente e servidor são
combinados, desde que o cliente disponibilize sua
rede de acesso às informações.
Bem conhecido no dia a dia, pode ser visto em e-
mails e aplicativos de bancos.

O GRUPO DA DISCIPLINA
12
DESENHO E ARQUITECTURA DE SISTEMAS

Arquitectura cliente-servidor
 Um conjunto de servidores que oferecem serviços
para ouros subsistemas. Exemplo disso são
servidores de impressão que oferecem serviços de
impressão, servidores de arquivos que oferecem
serviços de gestão de arquivos.
 Um conjunto de clientes que solicita serviços
oferecidos pelo servidores. Esses normalmente
são subsistemas independentes. Pode haver varias
instâncias de um programa cliente sendo
executado simultaneamente.

O GRUPO DA DISCIPLINA
13
DESENHO E ARQUITECTURA DE SISTEMAS

Arquitectura cliente-servidor
 Uma rede que permite aos clientes acessarem
esses serviços. Isto não é estritamente necessário
quando ambos, clientes e servidores, podem ser
executados em uma única maquina.
Na pratica, contudo, a maioria dos sistemas
cliente-servidor é implementada como sistemas
distribuídos.

O GRUPO DA DISCIPLINA
14
DESENHO E ARQUITECTURA DE SISTEMAS

Arquitectura cliente-servidor

Vantagens:
 Administração a nível do servidor: como os
clientes têm pouca importância neste modelo, têm
menos necessidade de ser administrado;
 Rede evolutiva: graças a esta arquitectura, é
possível suprimir ou acrescentar clientes sem estar
a perturbar o funcionamento da rede e sem
modificação essência;

O GRUPO DA DISCIPLINA
15
DESENHO E ARQUITECTURA DE SISTEMAS

Arquitectura cliente-servidor

Vantagens:
 Recursos centralizados: já que o servidor está no
centro da rede, pode gerir recursos comuns a
todos os utilizadores, como por exemplo uma base
de dados centralizada, a fim de evitar os
problemas de redundância e de contradição.
 Melhor segurança: porque o número de pontos de
entrada que permitem o acesso aos dados é
menos importante

O GRUPO DA DISCIPLINA
16
DESENHO E ARQUITECTURA DE SISTEMAS

Arquitectura cliente-servidor
Desvantagens:
 Custo elevado;
 Um elo fraco: o servidor é (único) elo fraco da rede
cliente/servidor, já que toda a rede está
estruturada em redor dele! Felizmente, o servidor
tem uma grande tolerância às avarias (graças ao
sistema RAID);
 Não tem a robustez de uma rede P2P. Se um
servidor crítico falhar, os pedidos dos clientes não
podem ser cumpridos. Em redes P2P, os recursos
são normalmente distribuídos entre vários nós;
O GRUPO DA DISCIPLINA
17
DESENHO E ARQUITECTURA DE SISTEMAS

Arquitectura cliente-servidor
Desvantagens:
 Clientes podem solicitar serviços, mas não podem
oferecê-los para outros clientes, sobrecarregando
o servidor, pois quanto mais clientes, mais
informações que irão demandar mais banda;
 Um servidor poderá ficar sobrecarregado caso
receba mais solicitações simultâneas dos clientes
do que pode suportar

O GRUPO DA DISCIPLINA
18
DESENHO E ARQUITECTURA DE SISTEMAS

Arquitectura em camadas (Layered pattern)


Apresenta um sistema em conjunto de camadas, com
a possibilidade de serem desconstruídas em
diferentes serviços. É mais usada em softwares de e-
commerce e desktop.

A abordagem em camadas apoia o desenvolvimento


incremental de sistemas. A medida que uma camada
é desenvolvida, alguns serviços fornecidos por essa
camada podem ser disponibilizados para os
utilizadores.

O GRUPO DA DISCIPLINA
19
DESENHO E ARQUITECTURA DE SISTEMAS

Arquitetura em camadas (Layered pattern)


Essa arquitectura também é modificável e portável.
Desde que sus interface permaneça inalterada, uma
camada poderá ser substituída por outra equivalente.

O GRUPO DA DISCIPLINA
20
DESENHO E ARQUITECTURA DE SISTEMAS

Arquitetura em camadas (Layered pattern)

As mais conhecidas sao arquitecturas de duas e tres


camadas
O GRUPO DA DISCIPLINA
21
DESENHO E ARQUITECTURA DE SISTEMAS

Arquitetura em camadas (Layered pattern)


Vantagens
 A aplicação se torna mais independente, pois é
possível dar manutenção em apenas uma camada
sem afetar as demais;
 Garantir a maior segurança do código da aplicação,
uma vez que cada camada (servidor) terá um tipo
de segurança diferente;
 Economia de licenças de software (por exemplo
banco de dados), pois uma camada de banco de
dados poderá ser compartilhada com diversos
utilizadores/aplicações;
O GRUPO DA DISCIPLINA
22
DESENHO E ARQUITECTURA DE SISTEMAS

Arquitetura em camadas (Layered pattern)


Desvantagens
 Quando é um sistema pequeno que não exige
muita segurança devido a sua utilização, a
arquitetura multicamadas deixará o projeto mais
complexo sem necessidade;
 Quando não se deseja fazer reutilização dos
componentes de uma aplicação, a complexidade
do projeto também será alta sem necessidade

O GRUPO DA DISCIPLINA
23
DESENHO E ARQUITECTURA DE SISTEMAS

Arquitetura MVC (Model-view-controller pattern)


Este é um dos padrões mais comuns para o universo
online.
Possui:
 View ou apresentação – responsável por
apresentar os resultados na página Web.
 Controller ou controladora – servlet (e auxiliares)
que faz os dispatchs para quem deve executar
determinada tarefa.
 Model ou modelo – classes que representam as
suas entidades, e as que te ajudam a armazenar e
buscar os dados
O GRUPO DA DISCIPLINA
24
DESENHO E ARQUITECTURA DE SISTEMAS

Arquitetura MVC (Model-view-controller pattern)


Assim ele é distribuído em três camadas (Modelo,
Visão e Controle) e apresenta um sistema interativo.
Esses três (Model, View e Controller) formam um
padrão arquitectural chamado de MVC.
Ele pode sofrer variações de diversas maneiras. O que
o MVC garante é a separação de tarefas, facilitando
assim a reescrita (ré utilização de código) de alguma
parte, e a manutenção do código.
O MVC entre outras responsabilidades, lida com a
divisão de responsabilidades entre o cliente e
servidor
O GRUPO DA DISCIPLINA
25
DESENHO E ARQUITECTURA DE SISTEMAS

Arquitetura MVC (Model-view-controller pattern)

O GRUPO DA DISCIPLINA
26
DESENHO E ARQUITECTURA DE SISTEMAS

Arquitetura MVC (Model-view-controller pattern)

O GRUPO DA DISCIPLINA
27
DESENHO E ARQUITECTURA DE SISTEMAS

Arquitetura de microsserviços (Microservices


pattern)
É um dos modelos preferidos dos arquitetos de
softwares, já que permite a escalabilidade e
independência dos módulos, além de deixar utilizar
diferentes linguagens e programações.
Vale ressaltar que os microsserviços estão entre os
favoritos e fazem parte de um futuro tecnológico que
já começa a ser cada vez mais visto.
O modelo de arquitetura aplica-se quando se
pretende desenvolver softwares em nuvem.

O GRUPO DA DISCIPLINA
28
DESENHO E ARQUITECTURA DE SISTEMAS

Arquitetura de microsserviços (Microservices


pattern)

O GRUPO DA DISCIPLINA
29
DESENHO E ARQUITECTURA DE SISTEMAS

Arquitetura de microsserviços (Microservices


pattern)
Vantagens
 Pode ser desenvolvido independemente
 Pode ser escalado independemente
 Pode ser reutilizado em multiplas aplicacoes
 Permite o uso de qualquer linguagem de
programacao
 E mais facilmente implementado nas diferentes
plataformas
 Seguranca e feita independemente

O GRUPO DA DISCIPLINA
30
DESENHO E ARQUITECTURA DE SISTEMAS

Arquitetura de microsserviços (Microservices


pattern)
Vantagens
 Complexidades-
 Governanca –
 Integração com aplicações monolíticas legadas
 Segurança

O GRUPO DA DISCIPLINA
31
DESENHO E ARQUITECTURA DE SISTEMAS

Os Design Patterns (Padrões de Projectos) são


arquitecturas testadas para construir softwares
orientados a objectos flexíveis e sustentáveis. Os
padrões ajudam a reduzir substancialmente a
complexidade do processo de design.
Design Patterns ou padrões de projectos são soluções
generalistas para problemas recorrentes durante o
desenvolvimento de um software.

Abordaremos dois padroes:


• Padrão de Projecto DAO
• Padrão de Projecto Singleton
O GRUPO DA DISCIPLINA
32
DESENHO E ARQUITECTURA DE SISTEMAS

Padrão de Projecto DAO (Data Access Object)


O padrão de projecto DAO surgiu com a necessidade
de separarmos a lógica de negócios da lógica de
persistência de dados. Este padrão permite que
possamos mudar a forma de persistência sem que
isso influencie em nada na lógica de negócio, além de
tornar nossas classes mais legíveis

O GRUPO DA DISCIPLINA
33
DESENHO E ARQUITECTURA DE SISTEMAS
Padrão de Projecto DAO

O GRUPO DA DISCIPLINA
34
DESENHO E ARQUITECTURA DE SISTEMAS

Padrão de Projecto DAO (Data Access Object)


A principal vantagem do uso de padrões de projecto
está no reuso das soluções propostas para
determinado problema, o que permite que até
mesmo profissionais menos experientes possam
atuar como especialistas. Outra vantagem e a
padronização de projectos e de regras de
persistências, facilidade em utilização de outros meios
de persistência.

Desvantagem: seguir rigorosamente os padrões da


interface estabelecida, aumento de classes do
projecto… O GRUPO DA DISCIPLINA
35
DESENHO E ARQUITECTURA DE SISTEMAS

Padrão de Projecto Singleton ou padrão Singleton é


ultimamente muito utilizado pelos desenvolvedores
de software.
Este padrão permite o reuso e o compartilhamento
de informações sobre a melhor maneira de se
resolver um probema de projecto de software.
O Padrão Singleton é utilizado quando necessita-se de
um ponto único para criação de uma instância de
classe e quando precisamos de apenas uma instância
de uma classe

O GRUPO DA DISCIPLINA
36
DESENHO E ARQUITECTURA DE SISTEMAS

O GRUPO DA DISCIPLINA
37
DESENHO E ARQUITECTURA DE SISTEMAS

Padrão de Projecto Singleton


Singleton especifica que apenas uma instância da
classe pode existir, e esta será utilizada por toda a
aplicação. Dessa forma temos apenas um ponto de
acesso central a esta instância da classe

Vantagens
Ao utilizar Singleton temos mais controle sobre o
acesso às propriedades e métodos de uma classe, e
também reduzimos o consumo de memória
desnecessário por utilizar várias instancias
desnecessárias de uma classe.
O GRUPO DA DISCIPLINA
38
DESENHO E ARQUITECTURA DE SISTEMAS

Padrão de Projecto Singleton

Desvantagens
Uma implementação incorreta desse padrão poderia
ocasionar um desperdício de memória se o seu
Singleton for utilizado raramente, já que você terá
uma instância de um objeto desnecessário ocupando
a memória da máquina

O GRUPO DA DISCIPLINA
39
REFERÊNCIAS BIBLIOGRÁFICAS

 [3] Pressman, Roger (2006). Engenharia de


Software. New York: McGraw Hill.
 [4] Sommerville, Ian (2007). Engenharia de Software,
8ª. São Paulo: Pearson Addison-Wesley.
 [10]Craig Larman - Utilizando UML e Padrões - Um
Guia para a Análise e Projeto Orientados a Objetos -
Ed. Bookman o Schneider, G. e Winters J. - Applying
Use Cases - Addison-Wesley.
 http://www.desenvolvimentoagil.com.br/xp

O GRUPO DA DISCIPLINA
40

Você também pode gostar