Prévia do material em texto
Disciplina: Arquitetura de Software Curso: Análise e Desenvolvimento de Sistemas – FAM Lista de Exercícios – Nível Acadêmico 1. Defina Arquitetura de Software e explique sua importância no desenvolvimento de sistemas. Resposta: Arquitetura de Software é a estrutura fundamental de um sistema, composta por seus componentes, suas inter-relações e os princípios que orientam seu projeto e evolução. Sua importância reside em permitir a manutenibilidade, escalabilidade, desempenho, segurança e reutilização do sistema, além de guiar as decisões técnicas e alinhar os objetivos de negócio com a engenharia de software. 2. Explique o padrão arquitetural em camadas (Layered Architecture) e dê um exemplo prático. Resposta: Esse padrão organiza o sistema em camadas horizontais, onde cada camada tem uma responsabilidade distinta. Geralmente, temos: ● Camada de Apresentação (UI) ● Camada de Aplicação (Regras de Negócio) ● Camada de Domínio (Modelo) ● Camada de Persistência (Banco de Dados) Exemplo: Em um sistema de e-commerce: ● UI: React ● Aplicação: ASP.NET Core ● Domínio: entidades como Produto, Pedido ● Persistência: SQL Server 3. O que são os princípios SOLID e qual a sua relação com a Arquitetura de Software? Resposta: Os princípios SOLID são diretrizes para um design de software orientado a objetos robusto e de fácil manutenção. Eles ajudam a manter o código modular, testável e desacoplado, aspectos essenciais da arquitetura de software. ● S: Single Responsibility Principle ● O: Open/Closed Principle ● L: Liskov Substitution Principle ● I: Interface Segregation Principle ● D: Dependency Inversion Principle 4. Compare Monólitos e Microserviços. Cite vantagens e desvantagens. Resposta: Aspecto Monólito Microserviços Vantagens Fácil de desenvolver e testar inicialmente Escalabilidade independente, resiliência Desvantage ns Difícil de escalar e manter em larga escala Complexidade de infraestrutura, orquestração Manutenção Centralizada, porém pode virar um "bolo de código" Cada serviço pode ser mantido por times separados 5. O que é um Design Pattern e qual a sua utilidade na arquitetura de sistemas? Cite dois exemplos. Resposta: Um Design Pattern é uma solução reutilizável para um problema recorrente no design de software. Sua utilidade está em promover boas práticas, facilitar manutenção e comunicação entre desenvolvedores. Exemplos: ● Singleton: Garante que uma classe tenha apenas uma instância global (ex: Logger). ● Factory Method: Cria objetos sem expor a lógica de instanciação. 6. Qual a diferença entre Arquitetura Orientada a Serviços (SOA) e Microserviços? Resposta: SOA é um estilo arquitetural mais amplo, com foco em serviços reutilizáveis e padronizados, normalmente com uso de ESB (Enterprise Service Bus). Microserviços são uma evolução prática da SOA, com foco em serviços pequenos, independentes, com deploys autônomos, geralmente usando APIs REST ou gRPC. SOA tende a ser mais monolítica na infraestrutura; microserviços são mais descentralizados. 7. O que é um Documento de Arquitetura (SAD – Software Architecture Document)? Quais são seus principais elementos? Resposta: É um documento que descreve as decisões arquiteturais de um sistema, servindo como guia para o time de desenvolvimento e stakeholders. Principais elementos: ● Visão geral da arquitetura ● Estilos e padrões utilizados ● Modelos (camadas, componentes, fluxos) ● Requisitos arquiteturais ● Riscos e decisões ● Justificativas 8. Explique o conceito de “separação de preocupações” e sua aplicação em arquitetura. Resposta: É o princípio de dividir o sistema em partes distintas, onde cada uma trata de uma responsabilidade única. Na arquitetura, isso se manifesta em camadas (UI, domínio, persistência), módulos ou serviços independentes. Facilita manutenção, testes e reuso de código. 9. Quais são os benefícios da aplicação de arquiteturas baseadas em eventos (Event-Driven Architecture)? Resposta: ● Desacoplamento: emissores e receptores não dependem diretamente um do outro ● Escalabilidade: mensagens podem ser processadas de forma assíncrona ● Resiliência: falhas em um serviço não afetam o restante imediatamente ● Flexibilidade: fácil adicionar novos consumidores para eventos existentes 10. Descreva o padrão MVC (Model-View-Controller) e sua importância. Resposta: É um padrão que separa a aplicação em três componentes: ● Model: lógica e dados ● View: interface com o usuário ● Controller: intermediário que processa as requisições e manipula o modelo Importância: facilita testes, manutenção e reutilização do código. Muito usado em frameworks web como ASP.NET MVC, Django, Laravel. Disciplina: Arquitetura de Software 1. Defina Arquitetura de Software e explique sua importância no desenvolvimento de sistemas. 2. Explique o padrão arquitetural em camadas (Layered Architecture) e dê um exemplo prático. 3. O que são os princípios SOLID e qual a sua relação com a Arquitetura de Software? 4. Compare Monólitos e Microserviços. Cite vantagens e desvantagens. 5. O que é um Design Pattern e qual a sua utilidade na arquitetura de sistemas? Cite dois exemplos. 6. Qual a diferença entre Arquitetura Orientada a Serviços (SOA) e Microserviços? 7. O que é um Documento de Arquitetura (SAD – Software Architecture Document)? Quais são seus principais elementos? 8. Explique o conceito de “separação de preocupações” e sua aplicação em arquitetura. 9. Quais são os benefícios da aplicação de arquiteturas baseadas em eventos (Event-Driven Architecture)? 10. Descreva o padrão MVC (Model-View-Controller) e sua importância.