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

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Aluno: André Tavares N. Miranda
Desenvolvimento de uma Arquitetura de
Sistemas Robusta e Escalável 
Escopo: 
1.Descrição da Arquitetura de Sistemas: 
A arquitetura de sistemas é a espinha dorsal de qualquer sistema de software, fornecendo
a base para o desenvolvimento, implantação e evolução de soluções de tecnologia. Ela
define a estrutura, os componentes e as interações de um sistema, garantindo que ele
atenda aos requisitos de negócios e técnicos.
1.2 Princípios
Modularidade: dividir o sistema em módulos independentes e coesos, que podem ser
desenvolvidos, testados e implantados separadamente.
Abstração: simplificar a complexidade do sistema, ocultando detalhes desnecessários e
expondo apenas as informações relevantes.
Reusabilidade: projetar componentes que possam ser reutilizados em diferentes partes
do sistema ou em outros sistemas.
Escalabilidade: garantir que o sistema possa crescer e lidar com o aumento da carga de
trabalho sem comprometer o desempenho.
Manutenibilidade: facilitar a manutenção e evolução do sistema, permitindo que as
alterações sejam feitas de forma rápida e segura.
1.3 Diretrizes 
Compreender os requisitos: analisar cuidadosamente os requisitos de negócios,
funcionais e não funcionais para garantir que a arquitetura atenda às necessidades dos
usuários e stakeholders.
Escolher os padrões de arquitetura adequados: selecionar os padrões de arquitetura
que melhor se adéquam aos requisitos do sistema, como microsserviços, arquitetura
orientada a eventos ou arquitetura em camadas.
Definir os componentes e interfaces: identificar os principais componentes do sistema
e suas interações, definindo interfaces claras e bem documentadas.
1.4 Arquitetura de Software
É a espinha dorsal de qualquer sistema de software. Ela define a estrutura, os
componentes e as interações de um sistema, garantindo que ele atenda aos requisitos de
negócios e técnicos. Ela permite que cumpramos os princípios citados acima. 
Níveis da Arquitetura de Software
A arquitetura de software pode ser analisada em diferentes níveis, cada um com foco em
aspectos específicos do sistema:
1. Arquitetura de Negócios: Descreve a arquitetura do sistema do ponto de vista do
negócio, focando em como o sistema suporta os processos de negócios e os
objetivos da organização. 
2. Arquitetura de Aplicações: Detalha a estrutura e o comportamento das
aplicações que compõem o sistema. 
3. Arquitetura de Dados: Descreve a estrutura e o gerenciamento dos dados
utilizados pelo sistema. 
4. Arquitetura de Infraestrutura: Descreve a infraestrutura física e lógica que
suporta o sistema. 
5. Arquitetura de Implantação: Descreve como o sistema é implantado e executado
no ambiente de produção. 
1.5 Justificativa das Escolhas Arquiteturais 
• Microsserviços: promove a escalabilidade e flexibilidade do sistema. Ao dividir o
sistema em serviços menores e independentes, é possível escalar cada serviço
individualmente, de acordo com suas necessidades específicas. Também facilita a
manutenção e evolução do sistema.
• CQRS (Command Query Responsibility Segregation): O CQRS otimiza as
operações de leitura e escrita no sistema. Isso resulta em melhor desempenho e
escalabilidade, especialmente em sistemas com alta demanda de leitura e escrita.
• DDD (Domain-Driven Design): O DDD garante que o sistema esteja intimamente
alinhado com o negócio. Ao focar no domínio do problema e utilizar uma linguagem
ubíqua, o DDD facilita a comunicação.
• Padrões de segurança: A implementação de padrões de segurança robustos
protege os dados e a comunicação do sistema. Isso inclui medidas como
autenticação, autorização, criptografia e proteção contra ataques cibernéticos,
garantindo a confidencialidade, integridade e disponibilidade dos dados.
2. Composição de componentes
Fundamental na arquitetura de software que permite criar sistemas complexos e robustos,
combinando componentes menores e mais simples. Essa abordagem oferece diversas
vantagens, como modularidade, reutilização, manutenibilidade e escalabilidade.
• Componentes de interface de usuário: Botões, campos de texto, menus etc. 
• Componentes de software: Serviços, módulos e bibliotecas. 
• Bibliotecas: Conjuntos de funções e classes reutilizáveis que podem ser
incorporadas a diferentes projetos de software.
• Frameworks: Estruturas de software que fornecem uma base para o
desenvolvimento de aplicações. Exemplos: (Angular, React), frameworks para
desenvolvimento mobile (Flutter, React Native). 
• Serviços: Componentes de software independentes que oferecem funcionalidades
específicas para outros componentes ou aplicações. Exemplos: serviços de
autenticação, serviços de pagamento, serviços de armazenamento de dados. 
• APIs (Interfaces de Programação de Aplicações): Conjuntos de regras e
especificações que permitem que diferentes componentes ou sistemas se
comuniquem e troquem informações. Exemplos: APIs REST, APIs GraphQL.
3. Domain-Driven Design (DDD)
O DDD coloca o domínio do negócio no centro do processo de desenvolvimento,
promovendo uma profunda compreensão das regras, dos processos e dos conceitos que
permeiam a área de atuação do software. 
3.1
1) Modelagem do Domínio
2) Entidades: Representam objetos principais do sistema.
3) Objetos de Valor: Representam conceitos imutáveis.
4) Agregados: Estruturas que garantem consistência dos dados. 
5) Repositórios: Responsáveis pela persistência e recuperação dos dados. 
O DDD proporciona: aumentando a compreensão do domínio do negócio; um design mais
preciso e coeso; Facilita a manutenção e adaptação do software; melhora a comunicação
entre stakeholders;
3.2 Contextos Delimitados
Contextos Delimitados é um processo iterativo que envolve a colaboração entre as
equipes de desenvolvimento e os especialistas de domínio. Um breve roteiro inclue:
• Analise o domínio: Identifique os diferentes subdomínios e as áreas de
responsabilidade do negócio. 
• Identifique os termos: Verifique se existem termos que são usados em diferentes
partes do negócio com significados diferentes. 
• Considere as equipes: Leve em conta a estrutura organizacional e as equipes
responsáveis por cada parte do sistema. 
• Use mapas de contexto: Crie diagramas que representem os diferentes Contextos
Delimitados e seus relacionamentos. 
3.3 Exemplo para uma loja online. 
Podemos identificar os seguintes Contextos Delimitados:
• Catálogo de produtos: Responsável por gerenciar as informações dos produtos,
como nome, descrição, preço e categorias. 
• Carrinho de compras: Responsável por gerenciar os itens que o cliente adicionou
ao carrinho, calcular o valor total e aplicar descontos. 
• Pagamento: Responsável por processar os pagamentos das compras, utilizando
diferentes métodos de pagamento. 
• Entrega: Responsável por gerenciar o processo de entrega dos produtos, incluindo
cálculo do frete, envio e rastreamento. 
4. Fase de Projeto (Modelagem) do Sistema
Também conhecida como modelagem, é uma etapa crucial no ciclo de vida de
desenvolvimento de sistemas (SDLC). Ocorre após a fase de análise de requisitos. Nessa
fase, o objetivo principal é transformar os requisitos definidos em um modelo detalhado do
sistema, que servirá como base para a construção e implementação.
Para o Projeto de componentes podemos utilizar UML, utilizando de diagramas de
classe, diagramas de sequência e outros diagramas. 
Para o Projeto de interface do usuário (UI) Criar protótipos e wireframes da interface do
usuário, mostrando a aparência e o comportamento das telas do sistema. Consideração
de aspectos como usabilidade, acessibilidade e experiência do usuário (UX). 
4.1 Funcionalidades
Representam o que o sistema faz, ou seja, as tarefas e serviços que ele oferece aos
usuários. Elas são definidas com base nos requisitos do sistema e nas necessidades dos
usuários.• Descrição detalhada: Cada funcionalidade é descrita em detalhes, incluindo seus
objetivos, entradas, saídas, regras de negócio e restrições. 
• Interface com o usuário: Define-se como o usuário irá interagir com a
funcionalidade, incluindo telas, menus, comandos e outros elementos da interface. 
• Integração com outros componentes: Especifica-se como a funcionalidade se
integra com outros componentes do sistema, incluindo troca de dados,
comunicação e dependências. 
• Casos de uso: Diagramas de casos de uso podem ser utilizados para representar
as funcionalidades do sistema e como os usuários interagem com elas.
4.2 Estruturas Internas
As estruturas internas são os componentes e mecanismos que possibilitam o
funcionamento das funcionalidades. Elas abrangem diversos aspectos do sistema,
incluindo:
• Arquitetura do sistema: Define-se a estrutura geral do sistema, incluindo seus
principais componentes, seus relacionamentos e suas interações. A arquitetura
deve ser escalável, confiável, segura e fácil de manter. 
• Banco de dados: Projeta-se o banco de dados que irá armazenar os dados do
sistema, incluindo tabelas, colunas, tipos de dados, relacionamentos e índices. O
banco de dados deve ser eficiente, seguro e escalável. 
• Componentes de software: Detalha-se o projeto de cada componente do sistema,
incluindo suas funcionalidades, seus métodos, seus atributos e seus
relacionamentos com outros componentes. 
• Interfaces: Definem-se as interfaces entre os componentes do sistema, incluindo
os formatos de dados, os protocolos de comunicação e os mecanismos de
interação. 
• Segurança: Implementam-se mecanismos de segurança para proteger o sistema
contra acessos não autorizados, ataques cibernéticos e outras ameaças. 
• Infraestrutura: Define-se a infraestrutura de hardware e software que irá suportar
o sistema, incluindo servidores, redes, sistemas operacionais e outros
componentes.
5. Engenharia de Requisitos
5.1 Elicitação de Requisitos:
Funcionais
Não Funcionais
De Negócio
Do Usuário
5.2 Técnicas de Modelagem
 Casos de Uso
Histórias de Usuário
6. Projeto da Solução
• Desenvolver um plano de implementação detalhado, incluindo as tecnologias, 
ferramentas e metodologias a serem utilizadas. 
• Definir os processos de desenvolvimento, teste e implantação do sistema. 
• Estabelecer métricas de qualidade para monitorar o progresso do projeto e garantir
a entrega de um produto de alta qualidade. 
7. Reúso de Software
• Identificar componentes e bibliotecas existentes que possam ser reutilizados no 
desenvolvimento do sistema. 
• Avaliar a adequação e a qualidade dos componentes reutilizáveis, considerando 
aspectos como compatibilidade, desempenho e segurança. 
• Adaptar e integrar os componentes reutilizáveis ao sistema, garantindo a sua 
correta funcionalidade. 
8. Padrões de Projeto de Arquitetura de Sistemas
• Selecionar e aplicar padrões de projeto de arquitetura adequados para resolver 
desafios específicos do sistema (ex: MVC, Microsserviços, CQRS). 
• Documentar os padrões de projeto utilizados, explicando suas vantagens, 
desvantagens e como foram aplicados no contexto do sistema. 
9. Projeto dos Componentes da Arquitetura de Sistemas
• Detalhar o design de cada componente, incluindo suas interfaces, funcionalidades,
classes e métodos. 
• Utilizar princípios de design orientado a objetos (ex: SOLID) para criar 
componentes coesos, de baixo acoplamento e fáceis de manter. 
• Considerar aspectos como desempenho, escalabilidade, segurança e tratamento 
de erros durante o projeto dos componentes. 
10. Projeto da Interface de uma Arquitetura de Sistemas
• Definir as interfaces do sistema, tanto internas (entre os componentes) quanto 
externas (com outros sistemas ou usuários). 
• Utilizar princípios de design de interface (ex: RESTful) para criar interfaces claras, 
consistentes e fáceis de usar. 
• Documentar as interfaces, incluindo seus métodos, parâmetros, tipos de dados e 
formatos de mensagens. 
11. Arquitetura de Softwares Distribuídos
• Projetar a arquitetura do sistema considerando os desafios e oportunidades de um 
ambiente distribuído. 
• Utilizar tecnologias e padrões de projeto adequados para garantir a comunicação 
confiável, a consistência dos dados e a escalabilidade do sistema em um ambiente 
distribuído. 
• Considerar aspectos como tolerância a falhas, balanceamento de carga e 
monitoramento do sistema em um ambiente distribuído 
	Compreender os requisitos: analisar cuidadosamente os requisitos de negócios, funcionais e não funcionais para garantir que a arquitetura atenda às necessidades dos usuários e stakeholders.
	Escolher os padrões de arquitetura adequados: selecionar os padrões de arquitetura que melhor se adéquam aos requisitos do sistema, como microsserviços, arquitetura orientada a eventos ou arquitetura em camadas.
	Definir os componentes e interfaces: identificar os principais componentes do sistema e suas interações, definindo interfaces claras e bem documentadas.
	1.4 Arquitetura de Software
	Níveis da Arquitetura de Software
	3.3 Exemplo para uma loja online.
	Podemos identificar os seguintes Contextos Delimitados:
	4.1 Funcionalidades
	5. Engenharia de Requisitos
	5.1 Elicitação de Requisitos:

Mais conteúdos dessa disciplina