Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

4 - Arquitetura de Software
Você já se perguntou como os sistemas de grande porte são projetados? Antes do início do desenvolvimento de software principal, é preciso escolher uma arquitetura adequada que forneça a funcionalidade e os atributos de qualidade desejados. Portanto, deve-se entender diferentes arquiteturas antes de aplicá-las ao nosso projeto.
As falhas em qualquer software têm um impacto significativo nos negócios de uma organização. E a principal razão para qualquer falha de software pode ser a seleção de padrões de arquitetura de software errados. Mas com conhecimento prévio, é possível orientar designers e desenvolvedores no design dos componentes e nas formas como eles reagem.
Muitas vezes é visto que as empresas iniciam o processo de desenvolvimento de aplicativos sem uma arquitetura formal em vigor. No entanto, elas tendem a não perceber que a ausência de um padrão de arquitetura pode forçar a equipe de desenvolvimento a adotar um padrão tradicional sem diretrizes. Eventualmente, acabam com códigos que carecem de papéis, responsabilidades e relacionamentos claros uns com os outros.
Tirinha
Avalie a conversa sobre a utilização de arquiteturas logo abaixo.
Como você pôde pereceber, o conceito de arquitetura de software é complexa, mas extremamente útil quando explorada corretamente. O profissional mais jovem utlizou uma técnica e não sabia "exatamente" quais as suas vantagens. O outro profissional, após a sua explicação, convence-o em trabalhar sempre com arquiteturas pré-definidas, por meio do destaque das vantagens que elas apresentam no cotidiano das empresas e dos seus profissionais.
· 
· 
· 
· 
· 
· 
· 
Ao final deste conteúdo, você será capaz de:
· Compreender o conceito de arquitetura de software e sua aplicação no desenvolvimento de sistema;
· Diferenciar tipos de arquitetura de software.
Definindo arquitetura de software
Antes de se aprofundar nos padrões de arquitetura comuns, é necessário entender o que é arquitetura de software.
Recurso lista interativa:
· A arquitetura de software é uma representação do sistema de TI (Tecnologia da Informação) que comunica:
Conteúdo
A arquitetura de software é uma representação do sistema de TI (Tecnologia da Informação) que comunica::
· A organização do sistema.
· Diferentes componentes face às suas funções.
· Como os componentes interagem entre si.
Voltar para a navegação do recurso lista interativa
A representação esquemática é um resultado dos princípios de design que os arquitetos de software usam e das decisões que eles tomam. Uma arquitetura de software típica requer decisões sobre segurança, desempenho, gerenciabilidade entre outros. 
Para compreender o conceito de arquitetura de software, é importante fazer a leitura do capítulo indicado a seguir. É uma leitura ideal para o aprendizado.
Estudo Guiado
Leia as páginas 230 a 235 do livro Engenharia de Software.
 Clique no link e leia o livro
PRESSMAN, Roger S.; MAXIM, Bruce R. Engenharia de software. Porto Alegre: Grupo A, 2021. E-book. ISBN 9786558040118. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9786558040118/. Acesso em: 16 ago. 2024.
Os princípios de design, decisões de arquitetura e seus resultados, ou seja, a arquitetura de software juntos, permitem que um sistema de software cumpra seus objetivos comerciais, operacionais e técnicos. É preciso acertar a arquitetura de software devido aos seguintes motivos:
*Clique nas sanfonas para interagir com o conteúdo.*
Organização dos requisitos iniciais
Conhecimento do progresso
Reutilização
Arquitetura de software é simplesmente a organização de um sistema. Essa organização inclui todos os componentes, como eles interagem entre si, o ambiente em que operam e os princípios usados ​​para projetar o software. Em muitos casos, também pode incluir a evolução do software para o futuro.
É projetada com uma missão ou missões específicas em mente. Essa missão deve ser cumprida sem prejudicar as missões de outras ferramentas ou dispositivos. O comportamento e a estrutura do software afetam decisões significativas, portanto, eles precisam ser renderizados e construídos adequadamente para obter os melhores resultados possíveis.
Figura 1 | Arquitetura
Na Engenharia de software, a arquitetura de software ajuda a expor a estrutura de um sistema enquanto oculta alguns detalhes de implementação. A arquitetura se concentra nos relacionamentos e como os elementos e componentes interagem uns com os outros, assim como a engenharia de software.
Resumidamente, é possível afirmar que arquitetura de software e Engenharia de software muitas vezes se sobrepõem. Elas são combinadas, pois muitas das mesmas regras governam ambas as práticas.
Cabe destacar que toda arquitetura...
de software é engenharia, mas nem toda engenharia é arquitetura de software. O arquiteto de software é capaz de distinguir entre o que são apenas detalhes na Engenharia de software e o que é importante para essa estrutura interna.
· Voltar para início
Tipos de arquiteturas de software
A arquitetura de software de um sistema representa as decisões de projeto relacionadas à estrutura e comportamento geral do sistema. A arquitetura ajuda as partes interessadas a entender e analisar como o sistema alcançará qualidades essenciais, como modificabilidade, disponibilidade e segurança.
Existem muitas arquiteturas de software, algumas serão apresentadas aqui nesta unidade, outras estão disponíveis em detalhes no capítulo de livro a seguir. Por isso, a leitura é uma forte recomendação para incrementar os conhecimentos.
Estudo Guiado
Leia da página 236 a 239 do livro Engenharia de Software.
 Clique no link e leia o livro
PRESSMAN, Roger S.; MAXIM, Bruce R. Engenharia de software. Porto Alegre: Grupo A, 2021. E-book. ISBN 9786558040118. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9786558040118/. Acesso em: 16 ago. 2024.
Construir uma arquitetura eficaz que permita a entrega rápida de produtos para as necessidades atuais e, ao mesmo tempo, atenda às metas de longo prazo pode ser um desafio. Deixar de identificar, priorizar e gerenciar compensações entre qualidades arquiteturais significativas, geralmente, leva a atrasos no projeto, retrabalho dispendioso ou pior. Assim, serão apresentados alguns padrões de arquitetura populares que ajudaram muitas empresas de software a expandir seus negócios.
Arquitetura em camadas
Essa arquitetura ganhou popularidade entre designers e arquitetos de software por suas semelhanças com os arranjos convencionais de comunicações de TI em muitas startups e empresas estabelecidas.
Frequentemente, uma arquitetura em camadas é classificada em quatro camadas distintas: apresentação, negócios, persistência e banco de dados. Porém, o padrão não está confinado às camadas especificadas e pode haver uma camada de aplicativo, uma camada de serviço ou uma camada de acesso a dados. Estruturas populares como Java EE utilizaram esse padrão de arquitetura.
Digamos que um engenheiro de software está construindo um grande aplicativo e você se viu empregando todas as quatro camadas em seu padrão de arquitetura. Por outro lado, as pequenas empresas podem combinar as camadas de negócios e de persistência em uma única unidade, principalmente quando a última está envolvida como parte integrante dos componentes da camada de lógica de negócios.
Esse padrão se destaca porque cada camada desempenha uma função distinta dentro do aplicativo e é marcada como fechada, conforme ilustra a figura a seguir. Isso significa que uma solicitação deve passar pela camada logo abaixo dela para ir para a próxima camada. Outro de seus conceitos – camadas de isolamento – permite modificar componentes dentro de uma camada sem afetar as outras camadas.
Figura 1 | Arquitetura em Camadas
Para simplificar esse processo da figura, considere um aplicativo web de comércio eletrônico. A lógica de negócios necessária para processar uma atividade de carrinho de compras, como calcular o carrinho, é buscada diretamente da camada de aplicativo para a camada de apresentação.
Aqui, acamada de aplicativo atua como uma camada de integração para estabelecer uma comunicação perfeita entre as camadas de dados e de apresentação. Além disso, a última camada é a camada de dados usada para manter os dados de forma independente, sem a intervenção do servidor de aplicativos e da lógica de negócios.
Arquitetura cliente-servidor
A arquitetura de software cliente-servidor é uma das arquiteturas mais utilizadas por diferentes tipos de software, em que existem 2 entidades – o cliente e o servidor.
Recurso lista interativa:
· As principais características desse padrão são:
Conteúdo
As principais características desse padrão são::
· Os componentes do cliente enviam solicitações ao servidor, que as processa e responde de volta;
· Quando um servidor aceita uma solicitação de um cliente, ele abre uma conexão com o cliente por meio de um protocolo específico;
· Os servidores podem ser com estado ou sem estado. Um servidor com estado pode receber várias solicitações de clientes. Ele mantém um registro de solicitações do cliente, e esse registro é chamado de 'sessão'.
Voltar para a navegação do recurso lista interativa
Os aplicativos de e-mail são bons exemplos desse padrão.
Arquitetura mestre-escravo
Esse padrão consiste em duas partes: mestre e escravos. O componente mestre distribui o trabalho entre componentes escravos idênticos e calcula um resultado final a partir dos resultados que os escravos retornam.
Esta arquitetura pode ser usada na replicação de banco de dados, em que o banco de dados mestre é considerado como a fonte autorizada, e os bancos de dados escravos são sincronizados com ele. Também pode ser utilizado em periféricos conectados a um barramento em um sistema de computador (unidades mestre e escravo).
Arquitetura broker
Esse padrão é usado para estruturar sistemas distribuídos com componentes desacoplados. Esses componentes podem interagir entre si por invocações de serviço remoto. Um componente broker é responsável pela coordenação da comunicação entre os componentes.
Os servidores publicam seus recursos (serviços e características) para um broker. Os clientes solicitam um serviço do broker, e o broker redireciona o cliente para um serviço adequado de seu registro.
Arquitetura Peer-to-peer (P2P)
A arquitetura ponto-a-ponto (P2P) é marcadamente diferente do padrão cliente-servidor, pois cada computador na rede tem a mesma autoridade.
Recurso lista interativa:
· As principais características do padrão P2P são as seguintes:
Conteúdo
As principais características do padrão P2P são as seguintes::
· Não há um servidor central, com cada nó tendo recursos iguais;
· Cada computador pode funcionar como cliente ou servidor;
· Quando mais computadores se juntam à rede, a capacidade geral da rede aumenta.
Voltar para a navegação do recurso lista interativa
As redes de compartilhamento de arquivos são bons exemplos do padrão P2P. Bitcoin e outras redes de criptomoedas são outros exemplos.
Recurso lista interativa:
· As vantagens de uma rede P2P são as seguintes:
Conteúdo
As vantagens de uma rede P2P são as seguintes::
· As redes P2P são descentralizadas, portanto, mais seguras. Você já deve ter ouvido falar muito sobre a segurança da rede Bitcoin;
· Os hackers não podem destruir a rede comprometendo apenas um servidor;
· Sob carga pesada, o padrão P2P tem limitações de desempenho, como mostram as perguntas em torno da transação Bitcoin.
Voltar para a navegação do recurso lista interativa
Arquitetura Model View Controller (MVC)
Este padrão divide uma aplicação interativa em 3 partes como:
· Model — contém a funcionalidade principal e os dados.
· View — exibe as informações para o usuário (mais de uma view pode ser definida).
· Controller — manipula a entrada do usuário.
Isso é feito para separar as representações internas das informações das formas como as informações são apresentadas e aceitas pelo usuário. Desacopla componentes e permite a reutilização de código eficiente, sendo usado em arquitetura para aplicações da World Wide Web nas principais linguagens de programação, além de frameworks web como Django e Rails.
Arquitetura orientada a eventos
Esta arquitetura é composta de componentes de processamento de eventos de propósito único desacoplados, que recebem e processam eventos de forma assíncrona. Essa arquitetura orquestra o comportamento em torno da produção, detecção e consumo de todos os eventos, juntamente com as respostas que eles evocam.
O estilo de arquitetura orientado a eventos consiste em duas topologias – mediador e intermediário. Um mediador é usado quando várias etapas são necessárias para serem orquestradas em um barramento de eventos por meio de um mediador central. Por outro lado, um intermediário é usado para encadear eventos sem usar um mediador central.
Exemplo
Um bom exemplo que usa arquitetura orientada a eventos é um site de comércio eletrônico. A arquitetura orientada a eventos permite que o site de comércio eletrônico reaja a várias fontes em um momento de alta demanda. Simultaneamente, evita qualquer travamento do aplicativo ou qualquer superprovisionamento de recursos.
Arquitetura microsserviço
O padrão de arquitetura de microsserviços é visto como uma alternativa viável para aplicações monolíticas e arquiteturas orientadas a serviços. Os componentes são implantados como unidades separadas por meio de um pipeline de entrega eficiente e simplificado. Os benefícios do padrão são escalabilidade aprimorada e alto grau de desacoplamento dentro do aplicativo.
Devido às suas características desacopladas e independentes, os componentes são acessados ​​por meio de um protocolo de acesso remoto. Além disso, os mesmos componentes podem ser desenvolvidos, implantados e testados separadamente sem interdependência de qualquer outro componente de serviço.
A Netflix é uma das primeiras a adotar o padrão de arquitetura de microsserviços. A arquitetura permitiu que a equipe de engenharia trabalhasse em pequenas equipes responsáveis ​​pelo desenvolvimento de ponta a ponta de centenas de microsserviços. Esses microsserviços trabalham juntos para transmitir entretenimento digital a milhões de clientes da Netflix todos os dias.
Por fim, cabe ressaltar que...
uma arquitetura de software eficaz permite a evolução contínua efetiva do sistema. Tais práticas incluem documentar os elementos arquitetônicos e as inter-relações destinadas a alcançar qualidades-chave; avaliar repetidamente a adequação da arquitetura em relação aos objetivos de negócios e missão de uma organização; e analisar o sistema implantado para conformidade com uma arquitetura. Quando executadas corretamente, essas práticas permitem a qualidade previsível do produto, economia de tempo e custo na integração e teste e evolução econômica do sistema.
Assista aos vídeos para conhecer mais sobre arquitetura de software.
Videoaula
· 
· 
· 
· 
· 
· 
· 
Videoaula
image3.jpeg
image4.jpeg
image1.png
image2.png

Mais conteúdos dessa disciplina