Prévia do material em texto
Material de Estudo 76: Engenharia de Software - Arquitetura de Software 1. O que é arquitetura de software? a) O código-fonte de um software. b) A interface com o usuário. c) A estrutura de alto nível de um sistema de software, incluindo seus componentes (módulos, classes, subsistemas), suas inter-relações, as propriedades visíveis externamente desses componentes e os princípios que guiam seu projeto e evolução. d) O diagrama de classes UML. e) O banco de dados. Resposta: c) Justificativa: A arquitetura de software define a "planta" do sistema, influenciando sua qualidade, manutenibilidade, escalabilidade e desempenho. 2. Qual padrão arquitetural organiza o sistema em camadas (layers), cada uma com responsabilidades específicas e dependendo apenas da camada imediatamente inferior? a) MVC (Model-View-Controller) b) Arquitetura em camadas (layered architecture) c) Arquitetura cliente-servidor d) Arquitetura de microsserviços e) Arquitetura orientada a eventos Resposta: b) Justificativa: A arquitetura em camadas (ex: apresentação, lógica de negócios, acesso a dados) promove a organização, o baixo acoplamento e a manutenibilidade. 3. Qual padrão arquitetural é comumente usado em aplicações web, separando a lógica de apresentação (View), a lógica de negócios (Model) e o controle de fluxo (Controller)? a) Arquitetura em camadas. b) Arquitetura de microsserviços. c) MVC (Model-View-Controller). d) Arquitetura orientada a serviços (SOA). e) Arquitetura hexagonal. Resposta: c) Justificativa: O MVC promove a separação de responsabilidades, facilitando o desenvolvimento, a manutenção e os testes. 4. Qual estilo arquitetural divide uma aplicação em um conjunto de serviços pequenos, independentes, fracamente acoplados, cada um executando uma função específica e comunicando-se através de APIs (geralmente RESTful)? a) Arquitetura monolítica b) Arquitetura cliente-servidor c) Arquitetura de microsserviços d) Arquitetura em camadas e) Arquitetura publish-subscribe Resposta: c) Justificativa: A arquitetura de microsserviços permite maior escalabilidade, flexibilidade, resiliência e desenvolvimento independente de diferentes partes do sistema. 5. O que é acoplamento em arquitetura de software? a) O grau de interdependência entre os componentes (módulos, classes, serviços) de um sistema. b) O grau de coesão dentro de um componente. c) O número de linhas de código. d) A complexidade do código. e) A qualidade do código. Resposta: a) Justificativa: Um baixo acoplamento é desejável, pois torna o sistema mais flexível, manutenível e menos propenso a erros em cascata (quando uma alteração em um componente afeta outros). 6. O que é coesão em arquitetura de software? a) O grau de interdependência entre diferentes módulos. b) O grau em que os elementos dentro de um mesmo módulo (classe, componente) estão relacionados e têm um propósito único e bem definido. c) O número de classes em um sistema. d) A complexidade ciclomática. e) A qualidade da documentação Resposta: b) Justificativa: Uma alta coesão é desejável, pois torna os módulos mais fáceis de entender, manter e reutilizar. 7. O que é SOA (Service-Oriented Architecture)? a) Um tipo de banco de dados. b) Uma linguagem de programação. c) Um estilo arquitetural em que a aplicação é estruturada como uma coleção de serviços fracamente acoplados, interoperáveis e reutilizáveis, que se comunicam através de interfaces bem definidas (geralmente usando protocolos de rede, como SOAP ou REST). d) Um padrão de projeto. e) Uma metodologia ágil. Resposta: c) Justificativa: SOA visa promover a flexibilidade, a reutilização e a interoperabilidade entre sistemas, permitindo que diferentes aplicações se comuniquem e compartilhem funcionalidades.