

Seu próximo nível começa aqui
Com a Assinatura Ilimitada, você tem tudo que precisa para sua aprovação.
Com a Assinatura Ilimitada, você combina prática, teoria e método em uma única assinatura com tudo que você precisa para sua aprovação.
Os conceitos de coesão e acoplamento são fundamentais para projetar e avaliar a qualidade de uma arquitetura de software. Como princípio geral, a definição de uma arquitetura de software deve buscar
maximizar acoplamento e coesão.
minimizar acoplamento e coesão.
maximizar acoplamento e minimizar coesão.
minimizar acoplamento e maximizar coesão.
Um arquiteto de software está projetando um framework em linguagem Java para o processamento de diferentes tipos de transações financeiras. Para isso, ele define:
• Uma classe abstrata AbstractTransaction, que contém estado compartilhado e parte da implementação comum.
• Duas interfaces, Auditable e Reversible, cada uma declarando contratos de comportamento e fornecendo alguns métodos default.
• Uma classe concreta PixTransfer, que deve reutilizar a implementação comum de AbstractTransaction e também oferecer suporte a auditoria e reversão.
Durante a revisão do projeto, o arquiteto avalia diferentes decisões de projeto, com o uso de diferentes combinações de herança para maximizar reuso e flexibilidade. Qual decisão de projeto é válida?
Declarar PixTransfer como subclasse tanto de AbstractTransaction quanto de outra classe concreta responsável por logging, resolvendo eventuais conflitos de métodos por meio de sobrescrita explícita.
Declarar PixTransfer como subclasse de AbstractTransaction e fazendo-a implementar, simultaneamente, Auditable e Reversible, sobrescrevendo explicitamente eventuais métodos default conflitantes definidos nas interfaces.
Declarar Auditable e Reversible como classes abstratas em vez de interfaces, permitindo que PixTransfer herde múltiplas implementações e confiando na ordem de resolução de métodos da linguagem para tratar conflitos.
Declarar PixTransfer de forma que ela simplesmente implemente Auditable e Reversible, uma vez que a herança de interfaces permite reutilização implícita de estado e comportamento equivalente à herança de uma classe abstrata.
Um Engenheiro da Computação atua como um consultor sênior em um projeto de lei que exige o desenvolvimento de um sistema de inteligência artificial para prever o impacto fiscal de novas emendas constitucionais. O projeto é de alto risco, alta visibilidade política e tem requisitos evolutivos.
Esse Engenheiro está revisando um módulo que viola o princípio de Responsabilidade Única (SRP) do SOLID. O módulo ManipuladorDeVotos é responsável por persistir o voto e por gerar o relatório estatístico do voto.
Assinale a afirmativa correta em relação ao efeito arquitetural primário da violação do SRP nesse cenário.
A violação do SRP aumenta a Coesão Lógica do módulo.
A violação do SRP facilita a reutilização do módulo em contextos diferentes.
A violação do SRP leva a um Alto Acoplamento.
O SRP é irrelevante para acoplamento e coesão.
A violação leva a uma complexidade ciclomática baixa.
A respeito da arquitetura hexagonal (Ports and Adapters) no contexto de design de software, assinale a alternativa correta.
A arquitetura hexagonal organiza o sistema em camadas rígidas, nas quais a interface de usuário depende diretamente do banco de dados.
A arquitetura hexagonal estabelece a implementação das regras de negócio em componentes executados no lado do cliente (frontend), visando simplificar a lógica de persistência no servidor.
A arquitetura hexagonal dispensa a execução de testes automatizados, visto que a separação entre infraestrutura e aplicação assegura a correção lógica do sistema de forma nativa.
A arquitetura hexagonal estabelece que o núcleo da aplicação depende diretamente dos frameworks externos utilizados.
A arquitetura hexagonal organiza o sistema de modo que o núcleo da aplicação (domínio) não dependa de detalhes de infraestrutura, utilizando portas e adaptadores para comunicação com elementos externos.
Uma empresa especializada no desenvolvimento de aplicações empresariais escaláveis enfrenta dificuldades na manutenção do seu código devido ao alto acoplamento entre classes. Os desenvolvedores perceberam que muitas classes criam instâncias de seus próprios objetos dependentes, dificultando os testes unitários, a reutilização de código e a troca de implementações sem afetar outras partes do sistema. Para resolver esse problema, o arquiteto de software sugere o uso do padrão Injeção de Dependências (Dependency Injection – DI).
A sugestão do arquiteto sobre o uso de Injeção de Dependências (DI) considera que esse padrão
cria manualmente todas as instâncias de objetos dentro das classes para garantir total controle sobre suas dependências.
elimina demandas por composição de objetos e por extensibilidade das aplicações, facilitando o gerenciamento do ciclo de vida.
injeta dependências estáveis, que ainda estão em desenvolvimento e que têm comportamento não determinístico, no construtor das classes.
permite que dependências sejam passadas externamente para um objeto, reduzindo o acoplamento e facilitando a testabilidade.
utiliza verificações de erro em tempo de execução para capturar falhas de comunicação entre objetos dependentes.


Seu próximo nível começa aqui

Seu próximo nível começa aqui
Destrave a preparação completa para sua aprovação. Com a Assinatura Ilimitada, você estuda com os melhores professores do Brasil e todos os recursos Gran.
No DDD, o ACL (anti-corruption layer) é utilizado para a tradução de modelos entre bounded contexts, mas sua implementação exige que todas as comunicações sejam assíncronas, sendo o seu uso inviabilizado em sistemas síncronos.
Certo
Errado
Em um sistema de memória hierárquico, os diferentes níveis de memória são projetados para atender a necessidades específicas de acesso e armazenamento de dados. Qual método de mapeamento da cache é organizado em múltiplos sets, com uma única linha de cache por set, representada visualmente por uma matriz n × 1?
mapeamento por camada.
mapeamento direto.
mapeamento indireto.
mapeamento de registro.
mapeamento por deslocamento de registro.
Em design de software na arquitetura hexagonal, os adaptadores estão conectados diretamente ao núcleo do domínio, pois não há necessidade de portas ou interfaces intermediárias para comunicação.
Certo
Errado
A arquitetura limpa, proposta por Robert C. Martin (2019), é um dos conceitos mais recentes em arquitetura de software.
Assinale a afirmativa incorreta sobre esse conceito.
Testabilidade deve fazer parte do design.
A arquitetura não depende dos testes, mas os testes dependem internamente dos componentes do sistema.
A função dos testes é apoiar o desenvolvimento e a operação do sistema.
O problema dos "Testes Frágeis" ocorre quando os testes são fortemente acoplados ao sistema.
As regras de negócio devem ser testadas sem a utilização do Front End da aplicação.
No contexto de Arquitetura de Software, os estilos arquiteturais definem padrões de organização e interação entre componentes, influenciando diretamente atributos de qualidade como modularidade, escalabilidade e desempenho. Na descrição correta de um aspecto fundamental do estilo arquitetural Baseado em Eventos (Event-Driven), define-se que
a arquitetura é rigidamente estruturada em camadas, onde cada nível só pode se comunicar com a camada imediatamente inferior ou superior.
o sistema é projetado para reagir a eventos assíncronos, com componentes comunicando-se por meio de mensagens ou publicações/assinaturas, promovendo baixo acoplamento.
os seus componentes compartilham um estado global único, e as alterações são propagadas de forma síncrona e centralizada.
a comunicação entre módulos é estritamente bilateral e baseada em chamadas diretas (requisição-resposta), exigindo alta coordenação temporal.


Seu próximo nível começa aqui
Seu desenvolvimento não pode ter limites. Garanta sua Assinatura Ilimitada e libere uma preparação completa com os melhores professores do Brasil.
Uma vez definida a arquitetura de um sistema, ela deve ser mantida sem alteração até o fim do ciclo de vida do sistema.
Certo
Errado
Componentes de software são as partes ou módulos que compõem um sistema de software, contribuindo para o funcionamento geral do programa com suas funções específicas. Sobre os componentes de software, relacionar as colunas e assinalar a sequência correspondente.
(1) Servidores de aplicação.
(2) Middleware.
(3) Interfaces de programação de aplicações (APIs).
( ) Atua como uma camada intermediária entre diferentes aplicações, permitindo a troca de dados e a conexão entre sistemas.
( ) Permite que diferentes partes de software se comuniquem entre si ou com outros serviços externos.
( ) Executa os aplicativos e controla o acesso aos recursos de hardware.
1-3-2.
2-1-3.
2-3-1.
3-1-2.
Para garantir a manutenibilidade, a arquitetura do sistema deve ser projetada para adotar componentes grandes e centralizados, facilitando futuras modificações e atualizações.
Certo
Errado
Considere a definição a seguir: "É a estrutura base de um sistema de software, que descreve como seus componentes estão organizados, como eles comunicam entre si e quais diretrizes e princípios são usados para direcionar seu design e evolução. Em essência este artefato de software define a espinha dorsal de um sistema de informação, viabilizando que ele atenda aos requisitos técnicos, de negócios e de qualidade." Diante da definição apresentada, pode-se afirmar que ela se refere à(ao):
Arquitetura de software.
Padrão de projeto de Software.
Documento de requisitos de Software.
Plano de Política do Software.
De acordo com o art. 4o da Resolução CNJ no 335/2020, a Plataforma Digital do Poder Judiciário Brasileiro (PDPJ-Br) deve adotar, obrigatoriamente, soluções que abranjam o seguinte conceito (dentre outros):
Baixa coesão.
Alto acoplamento.
Arquitetura monolítica.
Microsserviços.
Utilização preferencial de tecnologias com código fechado proprietário, cujo fornecedor possa ser responsabilizado em caso de problemas.


Seu próximo nível começa aqui

Seu próximo nível começa aqui
Destrave a preparação completa para sua aprovação. Com a Assinatura Ilimitada, você estuda com os melhores professores do Brasil e todos os recursos Gran.
O Modelo C4 é uma das abordagens utilizadas para documentação de arquitetura de software. Nessa abordagem são definidos quatro níveis de abstração: Contexto (context), Contêineres (containers), Componentes (components) e Código (code) para representar sistemas complexos de forma escalável. O diagrama a seguir apresenta um modelo C4, o qual foca em tecnologias, protocolos de comunicação e responsabilidades de cada parte do sistema, sendo essencial para arquitetos e desenvolvedores entenderem como as peças se conectam.

Considerando as informações fornecidas e o diagrama, o nível do Modelo C4 que está representado no diagrama é o de
Contexto.
Contêineres.
Componentes.
Nível de Código.
Os padrões arquiteturais de software definem diretrizes para a organização e a estruturação de sistemas, facilitando a escalabilidade, a manutenção e a reutilização de código. O SOLID é um conjunto de princípios de design que auxiliam na criação de software mais flexível e sustentável. Em relação ao Open/Closed Principle (OCP), um dos princípios do SOLID, assinale a alternativa correta.
Aberto para substituição, fechado para segregação.
Aberto para extensão, fechado para modificação.
Aberto para segregação, fechado para inversão.
Aberto para inversão, fechado para extensão.
Aberto para modificação, fechado para substituição.
A definição da estrutura de um sistema de software e a forma como seus componentes interagirão é realizada durante a fase de projeto. Nesse contexto, o projeto arquitetural de software
consiste na criação de casos de uso para identificar as interações do usuário com o sistema.
estabelece os detalhes de codificação, como nomes de variáveis e estruturas de controle.
tem como foco principal o planejamento de testes de aceitação junto ao usuário final.
especifica exclusivamente os requisitos de desempenho e usabilidade do sistema.
define a estrutura de alto nível do sistema, incluindo os principais componentes e como eles se comunicam.
Na arquitetura de sistemas, o frontend é a interface visível e interativa com o usuário, enquanto o backend realiza o processamento de dados e a lógica de negócios; essa separação reflete os princípios da teoria geral de sistemas, segundo a qual a organização de sistemas em partes interdependentes facilita sua compreensão e manutenção.
Certo
Errado
Uma equipe de desenvolvimento de software de uma prefeitura está criando um sistema para gestão de solicitações de serviços urbanos. Durante a análise inicial, foi definido que o código deve seguir o Single Responsibility Principle (SRP) do SOLID. A estratégia que a equipe pode adotar, que está de acordo com o SRP, é
criar uma única classe SolicitacaoService que gerencie as solicitações, grave no banco de dados e envie notificações aos responsáveis.
Implementar todas as funcionalidades do sistema de solicitações em um único método estático, a fim de facilitar a manutenção e melhorar a performance da aplicação.
adicionar métodos na classe SolicitacaoService para gerenciar o banco de dados e enviar notificações, evitando a criação de classes adicionais que podem impactar na performance da aplicação.
dividir o código em três classes: SolicitacaoService para gerenciar as solicitações, NotificacaoService para envio de notificações e PersistenciaService para gerenciar interações com o banco de dados.
criar uma classe GestaoUnificada que centralize todos os serviços relacionados às solicitações em um único local, para maior controle.