Prévia do material em texto
Material de Estudo 61: Engenharia de Software - Arquitetura de Software 1� O que é arquitetura de software? a) A estrutura física de um computador. b) A estrutura de alto nível de um sistema de software, incluindo os principais componentes, suas inter-relações, propriedades e princípios que governam seu design e evolução. c) O código-fonte de um programa. d) O diagrama de classes de um sistema. e) O design da interface. Resposta: b) Justificativa: A arquitetura de software é uma visão abstrata do sistema, que serve como um "mapa" para guiar o desenvolvimento e a manutenção. 2� Quais são os principais objetivos da arquitetura de software? a) Apenas atender aos requisitos funcionais do sistema. b) Atender aos requisitos funcionais e não funcionais (qualidade) do sistema, como desempenho, segurança, escalabilidade, manutenibilidade, etc., e facilitar a comunicação entre os stakeholders. c) Apenas tornar o sistema mais rápido. d) Apenas tornar o sistema mais bonito. e) Apenas atender aos requisitos dos programadores. Resposta: b) Justificativa: A arquitetura de software busca um equilíbrio entre diferentes requisitos, muitas vezes conflitantes, para criar um sistema que atenda às necessidades do negócio e dos usuários. 3� O que são estilos arquiteturais (padrões arquiteturais)? a) Linguagens de programação. b) Ferramentas de desenvolvimento. c) Soluções genéricas e reutilizáveis para problemas comuns de arquitetura de software, fornecendo um vocabulário comum e um conjunto de decisões de design pré-definidas (ex: camadas, microsserviços, cliente-servidor, MVC). d) Diagramas UML. e) Metodologias ágeis. Resposta: c) Justificativa: Os estilos arquiteturais ajudam a organizar o sistema de forma coerente e a resolver problemas de design de forma mais eficiente. 4� Qual é a principal característica da arquitetura em camadas (layered architecture)? a) O sistema é dividido em componentes independentes que se comunicam através de mensagens. b) O sistema é organizado em camadas hierárquicas, cada uma com responsabilidades específicas e dependendo apenas da camada imediatamente inferior, promovendo a separação de conceitos e a modularidade. c) O sistema é organizado em torno de objetos que interagem entre si. d) O sistema é centralizado em um único servidor. e) O sistema é distribuído. Resposta: b) Justificativa: A arquitetura em camadas (ex: apresentação, aplicação, negócios, dados) é um dos estilos arquiteturais mais comuns, facilitando a organização, o desenvolvimento e a manutenção de sistemas complexos. 5� Qual é a principal característica da arquitetura de microsserviços? a) O sistema é construído como um único bloco monolítico. b) O sistema é construído como um conjunto de pequenos serviços independentes, que se comunicam através de APIs (geralmente RESTful), cada um responsável por uma funcionalidade específica do negócio, permitindo escalabilidade, flexibilidade e desenvolvimento independente. c) O sistema é construído em camadas. d) O sistema é centralizado. e) O sistema é monolítico. Resposta: b) Justificativa: A arquitetura de microsserviços tem ganhado popularidade por sua capacidade de lidar com sistemas complexos e em constante evolução, mas exige cuidados com a comunicação, a consistência e a complexidade da infraestrutura. 6� O que é um design pattern (padrão de projeto) em software? a) Um estilo arquitetural. b) Uma solução genérica e reutilizável para um problema de design de software que ocorre com frequência em um determinado contexto, em nível de código (ex: Singleton, Factory, Observer). c) Uma linguagem de programação. d) Um framework. e) Uma biblioteca. Resposta: b) Justificativa: Os design patterns promovem boas práticas de design, melhorando a qualidade, a flexibilidade e a manutenibilidade do código. 7� Qual das seguintes NÃO é uma preocupação (atributo de qualidade) da arquitetura de software? a) Desempenho. b) Segurança. c) Escalabilidade. d) Manutenibilidade. e) Cor da interface do usuário. Resposta: e) Justificativa: Embora a usabilidade e a experiência do usuário sejam importantes, a cor da interface é um detalhe de design da interface, não um atributo de qualidade da arquitetura do software. Os demais (desempenho, segurança, escalabilidade, manutenibilidade) são atributos de qualidade cruciais que devem ser considerados na arquitetura.