Prévia do material em texto
<p>Unidade 1 - Introdução à arquitetura de sistemas</p><p>1. Em um projeto de desenvolvimento de software, a equipe está discutindo qual arquitetura</p><p>utilizar. Alguns membros argumentam a favor da arquitetura monolítica, enquanto outros</p><p>defendem a abordagem de microsserviços.</p><p>Considerando as abordagens arquiteturais discutidas, marque a alternativa que descreve</p><p>com precisão uma característica-chave que distingue a arquitetura monolítica da arquitetura</p><p>de microsserviços.</p><p>C. A arquitetura de microsserviços geralmente resulta em maior complexidade de</p><p>desenvolvimento.</p><p>2. Ao escolher a arquitetura para um novo projeto de software, a equipe de desenvolvimento</p><p>considera os diferentes tipos de arquiteturas disponíveis.</p><p>Qual das alternativas a seguir descreve com precisão um benefício específico da arquitetura</p><p>em camadas?</p><p>A. A arquitetura em camadas facilita a organização e a manutenção do sistema,</p><p>separando responsabilidades específicas.</p><p>3. Durante um projeto de desenvolvimento, a equipe está discutindo a escolha do tipo de</p><p>arquitetura a ser utilizada.</p><p>Qual é a importância de relacionar a escolha do tipo de arquitetura com as necessidades de</p><p>desenvolvimento de sistemas?</p><p>A. A escolha do tipo de arquitetura impacta diretamente a eficiência, a manutenção e</p><p>a escalabilidade do sistema, exigindo uma consideração cuidadosa das necessidades</p><p>do projeto.</p><p>4. Uma equipe de desenvolvimento está debatendo as vantagens e desvantagens da</p><p>arquitetura orientada a eventos para um projeto em particular.</p><p>Assinale a alternativa que aponta uma característica-chave da arquitetura orientada a</p><p>eventos que a torna vantajosa para sistemas que lidam com múltiplos processos e</p><p>integrações:</p><p>B. A arquitetura orientada a eventos oferece uma comunicação assíncrona,</p><p>permitindo que os componentes se comuniquem de forma flexível e desacoplada.</p><p>5. Uma equipe de desenvolvimento está explorando a possibilidade de usar uma arquitetura</p><p>de microsserviços distribuídos para um projeto global.</p><p>Qual é a vantagem da arquitetura de microsserviços distribuídos em comparação com a</p><p>arquitetura de microsserviços tradicional?</p><p>E. A arquitetura de microsserviços distribuídos permite escalabilidade global, mas</p><p>introduz desafios de latência e consistência entre regiões.</p><p>Unidade 2 - Descrição de arquiteturas de sistemas</p><p>1. O arquiteto, ao desenvolver um projeto, considera um conjunto de requisitos que motivam</p><p>e justificam suas decisões. Para que o sistema seja desenvolvido, há também metas de</p><p>qualidade a serem levadas em conta, bem como cenários de uso, padrões de projeto e</p><p>estilos arquiteturais existentes. Nesse contexto, ao criar um projeto de arquitetura, deve-se</p><p>considerar as entidades externas relacionadas ao sistema-alvo.</p><p>O que define essas entidades externas?</p><p>C. As entidades externas são outros sistemas, dispositivos, pessoas, etc. que</p><p>interagem com o sistema-alvo.</p><p>2. Um diagrama de contexto em UML representa o fluxo de informação para dentro e fora</p><p>do sistema, a interfacedo usuário e o apoio de processamento relevante. Cada uma das</p><p>entidades se comunica com o sistema-alvo por meio de uma interface.</p><p>Sendo assim, quais são os tipos de entidades e/ou componentes necessários durante a</p><p>elaboração de uma representação do sistema utilizando o diagrama de contexto</p><p>arquitetural?</p><p>B. Sistemas superiores, sistemas subordinados, sistemas de mesmo nível e atores.</p><p>3. A arquitetura de software deve modelar a estrutura de um sistema e a maneira pela qual</p><p>componentes de dados e procedimentos colaboram. À medida que ela é refinada em</p><p>componentes, a estrutura do sistema começa a ficar mais clara.</p><p>No entanto, antes disso, é necessário entender que os componentes de uma arquitetura de</p><p>software podem ser considerados como um módulo que encapsula uma implementação e</p><p>que pode ser implementado ou substituído em um sistema.</p><p>Nesse sentido, o que um componente define em um sistema, exatamente?</p><p>A. Um comportamento.</p><p>4. Em modelagem UML, instância do componente é um elemento de modelo que representa</p><p>instanciação ou ocorrência real de um componente e se baseia nos componentes</p><p>existentes. Normalmente, é aplicada a um problema específico para demonstrar que os</p><p>componentes e a estrutura definidos estão apropriados.</p><p>Nessa linha de pensamento, qual pode ser considerado o principal objetivo de uma</p><p>instância?</p><p>E. Provar o funcionamento de um componente em um contexto real de utilização.</p><p>5. As ADL fornecem uma sintaxe para representação estrutural dos elementos arquiteturais,</p><p>suas restrições e interações, permitindo expressar modelos arquiteturais de sistemas.</p><p>Essas linguagens, na sua essência, acabam oferecendo abstrações para a representação</p><p>da arquitetura de um software.</p><p>Levando em consideração esse conceito, quais seriam essas abstrações/elementos básicos</p><p>que compõem as ADL?</p><p>A. Os componentes e os conectores.</p><p>Unidade 3 - Padrões de projeto de arquitetura de</p><p>sistemas</p><p>1. Os padrões de projeto são divididos em três grupos:</p><p>- CREATIONAL PATTERNS: padrões de criação, cujo objetivo é a abstração da instância de</p><p>objetos.</p><p>- STRUCTURAL PATTERNS: padrão estrutural, cujos objetivos são a organização e a</p><p>estrutura das classes, bem como o relacionamento destas com os objetos.</p><p>- BEHAVIORAL PATTERNS: padrão comportamental, cujo objetivo é delegar</p><p>responsabilidade, definindo como os objetos devem se comportar e se comunicar.</p><p>Nesse contexto, analise as seguintes afirmações:</p><p>I. O objetivo do padrão de projeto Singleton, do grupo Padrão de Criação, é conter um único</p><p>objeto na classe.</p><p>II. O padrão de projeto Proxy, do grupo de padrões estruturais, permite que o sistema utilize</p><p>um objeto no lugar de outro. Ele é muito utilizado em processo de carregamento de</p><p>imagens, por exemplo.</p><p>III. O padrão de projeto Memento, do grupo de padrões estruturais, permite guardar e</p><p>restaurar um estado do objeto, sendo muito utilizado para manipular históricos.</p><p>Qual(is) delas é(são) verdadeira(s)?</p><p>D. I e II.</p><p>2. Os padrões de projeto facilitam a reutilização de soluções e arquiteturas de softwares</p><p>orientados a objetos de forma flexível e fácil, reduzindo a complexidade do projeto e</p><p>resolvendo os problemas.</p><p>Considerando os padrões da obra Padrões de Projeto – Soluções reutilizáveis de software</p><p>orientado a objetos, de Erich Gamma, assinale a alternativa correta:</p><p>A. O GoF, composto por 23 padrões, tornou-se base para outros padrões.</p><p>3. O objetivo do padrão de criação é a abstração da instância de objetos, sendo possível</p><p>criar um objeto sem se preocupar com o todo envolvido na criação desse componente.</p><p>Dessa forma, esse padrão abstrai ou adia o processo de criação, tornando o sistema</p><p>independente de como seus objetos são criados.</p><p>Avalie as afirmações a seguir sobre o padrão de projeto Singleton, do grupo de projetos de</p><p>criação:</p><p>I. O padrão Singleton pode ser usado para determinar uma quantidade fixa de instâncias de</p><p>uma classe que podem ser criadas em uma aplicação.</p><p>II. A classe que implementa o padrão Singleton deve manter públicos seus construtores</p><p>para facilitar a instância de classes.</p><p>III. O padrão Singleton é implementado por meio de atributos e métodos estáticos na classe</p><p>em que é aplicado, o que permite uma instância da classe e um ponto global de acesso a</p><p>ela.</p><p>Qual(is) delas é(são) verdadeira(s)?</p><p>C. I e III.</p><p>4. Os padrões de projeto facilitam a reutilização de soluções e arquiteturas bem-sucedidas</p><p>na construção de um projeto com paradigma orientado a objetos (POO), possibilitando</p><p>trazer ao código organização e, ao programador, habilidade, experiência e um código limpo</p><p>e padronizado.</p><p>Como escolher o melhor padrão a ser utilizado?</p><p>D. A decisão de utilizar o padrão X ou Y depende da avaliação de alguns critérios</p><p>como: intenção e objetivo do padrão, motivação, semelhanças dos padrões, estrutura</p><p>do projeto e aplicabilidade.</p><p>5. Um projeto desenvolvido para uma agência bancária contém uma classe DataBank para</p><p>armazenar dados relacionados às instruções do banco e mais três classes que exibem</p><p>dados bancários: ViewText, ViewBarGraphic e ViewPieGraphic.</p><p>Cada interação no objeto da classe DataBank deve notificar e atualizar</p><p>os objetos das</p><p>demais classes.</p><p>Ao interagir com o objeto DataBank, fazendo uma transação bancária, o objeto da classe</p><p>ViewText deve apresentar um texto descrevendo a transação, enquanto os objetos da</p><p>classe ViewBarGraphic e da ViewPieGraphic precisam apresentar graficamente a transação</p><p>realizada.</p><p>Analisando o case do projeto, qual padrão seria adequado na implementação da</p><p>atualização de classes, priorizando a organização e a melhoria do sistema proposto?</p><p>B. O mais indicado seria o Observer, padrão comportamental, pois ele possibilita a</p><p>dependência um-para-muitos entre objetos. Quando o objeto da classe DataBank</p><p>muda, todos os objetos das demais classes são notificados e atualizados</p><p>automaticamente.</p><p>Unidade 4 - Padrões arquiteturais MVC, MVP e</p><p>MVVM</p><p>1. Os padrões de arquitetura desempenham um papel crucial no desenvolvimento de</p><p>software, facilitando a implementação de soluções para problemas comuns. Ao analisar o</p><p>padrão de arquitetura MVC, é essencial compreender as responsabilidades dos</p><p>componentes que o envolvem.</p><p>Qual é o papel do componente Controller e como ele contribui para a organização e</p><p>estruturação de um sistema de software?</p><p>B. O Controller atua como intermediário entre a View eo Model, recebendo eventos da</p><p>interface do usuário, direcionando ações para o Model e atualizando a View, de forma</p><p>a promover a separação de responsabilidades.</p><p>2. O padrão arquitetural Modelo-Visão-Controlador (MVC) é uma estrutura amplamente</p><p>adotada no desenvolvimento de software para organizar os subsistemas de um sistema,</p><p>permitindo uma separação eficaz de preocupações. Assim, o padrão MVC é essencial para</p><p>a organização eficaz de sistemas de software.</p><p>Analise as afirmações a seguir:</p><p>I. O Modelo é responsável pela apresentação da interface do usuário e se comunica</p><p>diretamente com o Controlador para atualizar os dados exibidos na Visão.</p><p>II. A Visão é a camada que lida com a lógica de negócios e notifica o Modelo sobre as</p><p>mudanças de estado por meio de eventos gerados pelas interações do usuário na interface.</p><p>III. O Controlador é como um gerenciador da interface do usuário e se comunica com o</p><p>Modelo no padrão MVC para atualizar dados à Visão.</p><p>Assinale a alternativa que indica a(s) afirmação(ões) correta(s).</p><p>D.I e II, apenas.</p><p>3. Em um projeto de desenvolvimento de software, você está trabalhando em uma equipe</p><p>que busca escolher o padrão arquitetural mais apropriado para garantir uma estrutura</p><p>organizada, a separação de preocupações e a facilidade de teste de um programa. A</p><p>equipe está considerando várias opções de padrões arquiteturais para tomar uma decisão</p><p>informada.</p><p>Qual padrão arquitetural é mais apropriado quando se deseja alcançar uma separação clara</p><p>entre a interface do usuário, a lógica de negócios e a lógica de apresentação, tornando o</p><p>código mais organizado e facilitando a adaptação a mudanças no projeto?</p><p>D. Padrão de arquitetura MVP.</p><p>4. Ao desenvolver aplicativos, é essencial escolher um padrão arquitetural apropriado para</p><p>garantir a manutenção, a testabilidade e a escalabilidade do código. Diferentes padrões</p><p>arquiteturais oferecem diferentes abordagens para a separação de preocupações em uma</p><p>aplicação. O padrão arquitetural escolhido deve ser adequado ao tipo de aplicativo e aos</p><p>requisitos específicos do projeto. Além disso, é importante considerar se o padrão escolhido</p><p>permite a organização clara da interface do usuário, da lógica de negócios e da lógica de</p><p>apresentação.</p><p>Considere que você está trabalhando no desenvolvimento de um aplicativo de lista de</p><p>tarefas (to-do list) em que os usuários podem adicionar, remover e marcar tarefas como</p><p>concluídas. Você precisa escolher um padrão arquitetural que permita uma clara separação</p><p>entre a interface do usuário, a lógica de negócios e a lógica de apresentação para garantir</p><p>que o código seja organizado e testável.</p><p>Qual padrão arquitetural é mais apropriado para o desenvolvimento do aplicativo de lista de</p><p>tarefas descrito no contexto acima?</p><p>B. Model-View-ViewModel (MVVM).</p><p>5. Os padrões arquiteturais desempenham um papel fundamental no desenvolvimento de</p><p>software, ajudando a organizar e estruturar os componentes de um sistema de forma eficaz.</p><p>Eles oferecem diretrizes e melhores práticas para lidar com aspectos como separação de</p><p>preocupações, interação entre componentes e testabilidade. Considere as seguintes</p><p>afirmações sobre os padrões arquiteturais:</p><p>I. O padrão MVC separa a apresentação e a interação dos dados do sistema por meio de</p><p>três componentes lógicos que interagem entre si: o componente Controlador, que gerencia</p><p>os dados e as operações associadas a esses dados; o componente Modelo, que define e</p><p>gerencia a forma como os dados são apresentados ao usuário; e o componente Visão, que</p><p>gerencia a interação do usuário (teclas e cliques do mouse, por exemplo) e passa essas</p><p>interações para o Controlador e o Modelo.</p><p>II. No padrão MVP, o Presenter é essencialmente o Controller do MVC, e tem como função</p><p>atualizar a View quando o Model é alterado e sincronizar o Model em relação à View.</p><p>III. No contexto do padrão MVVM, é essencial enfatizar que ele é conhecido por promover a</p><p>testabilidade e a manutenibilidade de aplicativos de interface do usuário, graças à</p><p>separação clara de responsabilidades entre Model, View e ViewModel.</p><p>Qual(is) afirmativa(s) está(ão) correta(s)?</p><p>B. Apenas I e III.</p><p>Unidade 5 - Princípios de projeto e modelagem</p><p>SOLID</p><p>1. Os princípios apresentados pelo SOLID têm como principal objetivo seguir boas práticas</p><p>de programação, assim, reduzindo sua complexidade e o acoplamento entre classes,</p><p>garantindo uma melhor manutenção futura ao sistema desenvolvido.</p><p>Analisando os cinco princípios existentes, pode-se afirmar que:</p><p>C. o princípio da responsabilidade única (SRP) tem como objetivo atingir as classes e</p><p>suas responsabilidades dentro do sistema, visando tornar a classe com alta coesão.</p><p>A alta coesão é favorável ao projeto.</p><p>2. O acrônimo SOLID nos traz cinco boas práticas a serem aplicadas à programação com</p><p>paradigma orientado a objetos. O princípio de SRP (princípio da responsabilidade única)</p><p>tem como objetivo atingir as classes e suas responsabilidades dentro do sistema.</p><p>Analise a classe Java a seguir:</p><p>Tendo como foco o uso do princípio SRP, é correto afirmar que:</p><p>D. a classe Turma apresenta uma quebra do SRP, uma vez que tem responsabilidades</p><p>que deveriam ser de componentes distintos do software.</p><p>3. Com relação aos princípios SOLID, o princípio que defende que módulos de alto nível</p><p>não devem depender de módulos de baixo nível e que ambos devem depender de</p><p>abstrações é:</p><p>E. princípio DIP (dependency inversion principle).</p><p>4. SOLID é o acrônimo para single responsibility principle, open/closed principle, Liskov</p><p>substitution principle, interface segregation principle e dependency inversion principle. Cada</p><p>princípio traz um modelo, referência, base a seguir na programação orientada a objetos</p><p>visando a um código mais coeso, limpo e de fácil manutenção.</p><p>São definições e conceitos:</p><p>I. Classes derivadas devem ser substituíveis por suas classes base, uma subclasse deve</p><p>sobrescrever os métodos da superclasse, sem alterar a funcionalidade da base.</p><p>II. Separar responsabilidades em diferentes classes, isso porque as alterações em uma</p><p>responsabilidade podem prejudicar ou inibir a habilidade da classe em lidar com outras</p><p>responsabilidades.</p><p>III. Classes devem ser abertas para extensão, ou seja, estender o comportamento delas e</p><p>não alterar/modificar as mesmas.</p><p>Os princípios aos quais essas funções estão relacionadas são, respectivamente:</p><p>A. LSP, SRP e OCP.</p><p>5. Considere as seguintes afirmações sobre os princípios SOLID.</p><p>I - SOLID é um acrônimo para cinco princípios da programação orientada a objetos,</p><p>destinados a facilitar a compreensão, o desenvolvimento e a manutenção de software.</p><p>II. Entre os princípios, o SRP (princípio da responsabilidade única) auxilia o uso de alta</p><p>coesão na classe.</p><p>III. Quanto maior o número de responsabilidades em uma classe, mais simples será seu</p><p>teste unitário, além de aumentar consideravelmente o número</p><p>de testes de interação a</p><p>serem executados.</p><p>É correto o que se afirmar somente em:</p><p>D. V, V, F.</p><p>Unidade 6 - Projeto dos componentes da</p><p>arquitetura de sistemas</p><p>1. Tanto a composição quanto a implantação de um componente devem ser possíveis sem</p><p>a necessidade de utilizar outros componentes específicos. Nas situações em que o</p><p>componente necessita de serviços externos, estes devem ser explicitamente definidos em</p><p>uma especificação de interface de nome requires.</p><p>Essa descrição se refere a qual característica de um componente de software?</p><p>B. Independente.</p><p>2. A tarefa de elaborar todas as classes de projeto não obtidas como componentes</p><p>reutilizáveis exige a descrição detalhada de todas as interfaces, atributos e operações</p><p>essenciais à implementação de cada classe.</p><p>Essa etapa do projeto de componentes se divide em quatro passos:</p><p>1. Elaborar atributos e definir os tipos de dados e as estruturas de dados</p><p>necessárias para implementá-los.</p><p>2. Identificar interfaces adequadas para cada componente.</p><p>3. Especificar detalhes de mensagens quando classes ou componentes colaboram</p><p>entre si.</p><p>4. Descrever detalhadamente o fluxo de processamento contido em cada operação.</p><p>Assinale a alternativa que apresenta a ordem correta dos passos para elaboração de</p><p>todas as classes de projeto não obtidas como componentes reutilizáveis.</p><p>D. 3, 2, 1 e 4.</p><p>3. A engenharia de software baseada em reúso é uma abordagem de desenvolvimento que</p><p>tenta maximizar o reúso de um software já existente.</p><p>Em geral, as unidades de software reusadas podem ser de tamanhos diferentes, sendo</p><p>categorizadas em:</p><p>E. reúso do sistema de aplicação, de componentes e de objetos e funções.</p><p>4. Os padrões para a implementação, a documentação e a implantação de componentes</p><p>destinam-se também aos fornecedores de infraestruturas de execução de componentes que</p><p>oferecem middleware para apoiar a operação de componentes.</p><p>Qual é a melhor definição para middleware?</p><p>A. Conjunto de componentes de infraestrutura que possibilita aos componentes do</p><p>domínio do problema se comunicarem entre si por meio de uma rede ou de um</p><p>sistema complexo.</p><p>5. Sobre os componentes, analise as afirmações a seguir:</p><p>I. Normalmente, é possível adquirir componentes de software reutilizáveis ao invés de</p><p>construir novos componentes.</p><p>II. As representações de projeto de dados, a arquitetura e as interfaces formam a base para</p><p>o projeto de componentes.</p><p>III. O projeto de componentes representa o software para permitir a revisão dos detalhes do</p><p>projeto em termos de correção e de consistência com outras representações de projeto.</p><p>Assinale a alternativa correta.</p><p>E. As afirmativas I, II e III estão corretas.</p><p>Unidade 7 - Reúso de software</p><p>1. O reúso de software tem como objetivos o aumento da produtividade e a redução no</p><p>esforço de desenvolvimento de novos sistemas por parte dos analistas e desenvolvedores.</p><p>Porém, a falta de conhecimento de técnicas de reúso, a falta de ferramentas ou a</p><p>infraestrutura do software podem trazer problemas na implementação.</p><p>Nesse contexto, analise as seguintes afirmativas:</p><p>I. O uso de padrão de projeto é uma forma de fazer reúso. Os padrões de projetos ou</p><p>design patterns, comumente conhecidos, são modelos, referências aplicadas ao projeto,</p><p>trazendo soluções para problemas específicos do desenvolvimento do projeto de software</p><p>orientado a objetos.</p><p>II. O sistema ERP é uma estrutura de códigos e é gerado a partir de modelos de domínio e</p><p>de modelos de implementação de sistemas legados.</p><p>III. Framework de aplicação é um tipo de reúso por meio de abstração, que une códigos</p><p>comuns entre vários projetos de software, incorporando funcionalidades genéricas ao</p><p>sistema.</p><p>Pode-se dizer que é(são) verdadeira(s):</p><p>C. I e III.</p><p>2. Com a ascensão do desenvolvimento de sistemas, é comum que muitos projetos tenham</p><p>funções ou partes do código semelhantes. Isso beneficia os processos de criação de</p><p>software com foco no reúso. Acerca desse assunto, é correto afirmar que:</p><p>A. reutilizar softwares existentes não é uma ideia inovadora, tendo surgido em 1968</p><p>quando o matemático e informático Doug Mcllroy demonstrou interesse em integrar</p><p>circuitos para produção em massa. Porém, o reúso só ganhou ênfase em 1980, com o</p><p>surgimento da primeira pesquisa sobre o assunto.</p><p>3. Os frameworks são como caixas de ferramentas que possibilitam à equipe de</p><p>desenvolvimento trabalhar com uma coleção de classes concretas e abstratas aplicadas a</p><p>uma linguagem orientada a objetos. São basicamente um template com diversas funções</p><p>que podem ser usadas pelo desenvolvedor.</p><p>Sabendo disso, leia as afirmativas a seguir:</p><p>I. Entre as características de um framework, estão: linguagem padronizada e documentada,</p><p>estrutura fixa para facilitar o uso e impedir que a linguagem seja corrompida ou danificada,</p><p>além de ser de fácil entendimento.</p><p>II. Uma das desvantagens em utilizar o framework é a dependência da ferramenta para</p><p>seguimento do projeto. Caso ela não receba atualizações ou seja descontinuada,</p><p>prejudicará a manutenção do sistema desenvolvido com o apoio dela.</p><p>III. Para que o desenvolvedor trabalhe com um framework, é necessário obter conhecimento</p><p>técnico acerca da ferramenta, aplicando a cada fase do projeto a estrutura disponibilizada</p><p>por ele. A maioria dos frameworks não disponibiliza documentação e apoio técnico, sendo</p><p>esta uma das desvantagens de seu uso.</p><p>Qual(is) está(ão) correta(s)?</p><p>D. Apenas a II.</p><p>4. A engenharia de software baseada em componentes é uma abordagem ao</p><p>desenvolvimento de software com base no reúso,por meio de um bloco construído para</p><p>definir uma parte da aplicação, uma representação de algo a ser implantado, conforme as</p><p>especificações construídas no ciclo de vida de um projeto.</p><p>Sobre as características do software baseado em componentes, assinale a alternativa</p><p>correta.</p><p>A. Os componentes precisam ser documentados para avaliar se atendem às</p><p>necessidades da aplicação. Eles são testados, executados e utilizados. Assim, o nível</p><p>de segurança é mais alto, e qualquer falha já é avisada e corrigida.</p><p>5. Tratando-se da construção de sistemas desenvolvedores experientes, é comum se</p><p>pensar em reúso de software, ou seja, reaproveitar algo que já foi desenvolvido, testado e</p><p>aprovado, o que oferece inúmeras vantagens. No entanto, tal processo também pode trazer</p><p>problemas. Que problemas são esses problemas?</p><p>A. O ambiente de desenvolvimento normalmente não é padronizado e preparado para</p><p>o reúso, não tem conformidade com padrões de escrita e, muitas vezes, falta</p><p>conhecimento técnico para aplicar o reúso da forma correta.</p><p>Unidade 8 - Modelagem ágil</p><p>1. Os métodos ágeis são alternativas à gestão tradicional de projetos, com práticas eficazes</p><p>que se destinam a permitir a entrega rápida e de alta qualidade do produto. Esses métodos</p><p>vêm ajudando muitas equipes a encarar a imprevisibilidade dentro de um projeto, por meio</p><p>de entregas incrementais e ciclos iterativos. Quais dos seguintes métodos são</p><p>caracterizados por serem métodos ágeis?</p><p>D. XP, Scrum, Kanban.</p><p>2. Os princípios da modelagem ágil são de grande importância para sua implementação,</p><p>pois eles são os regentes das práticas da modelagem ágil. O princípio de viajar leve é um</p><p>desses princípios. Qual das seguintes frases se refere a ele?</p><p>C. Logo, ao longo do desenvolvimento da engenharia de software, conserve apenas</p><p>aqueles modelos que terão valor no longo prazo e despache o restante.</p><p>3. As práticas da modelagem ágil são consideradas o núcleo dessa metodologia, práticas</p><p>essas que são regidas pelos seus princípios. Em relação a esse conjunto de práticas, qual</p><p>se caracteriza por modelar um pouco, codificar um pouco, testar um pouco e depois</p><p>entregar um pouco?</p><p>E. Iterativa e incremental.</p><p>4. Com o surgimento e a progressiva adoção de métodos ágeis em processos de</p><p>desenvolvimento de softwares, foram surgindo ferramentas para auxiliar em seu</p><p>desenvolvimento. Qual dos métodos a seguir era conhecido como uma ferramenta que</p><p>apenas continha cartões em quadros visuais utilizados em processos ágeis?</p><p>B. Kanban.</p><p>5. Dentre as práticas de modelagem ágil,</p><p>tem-se a prática prove com código. Qual a</p><p>finalidade dessa prática?</p><p>D. Saber se a solução da modelagem é implementável em código.</p><p>Unidade 9 - Domain-Driven Design</p><p>1. Padrões de modelagem de software propocionam vários benefícios para aplicação</p><p>desenvolvida. Atualmente, Domain-Driven Design emerge como um dos padrões de</p><p>modelagem de domínio mais consistente. Assinale a alternativa que apresenta</p><p>corretamente os principais benefícios promovidos pelo uso do DDD.</p><p>A. Comunicação da equipe, extensibilidade, testabilidade.</p><p>2. Cada um dos blocos de construção no desenvolvimento de software guiado pelo</p><p>Domain-Driven Design tem uma responsabilidade bem definida. O bloco voltado para a</p><p>interface do usuário é responsável:</p><p>B. pela exibição de informações do sistema ao usuário e também por interpretar</p><p>comandos do usuário.</p><p>3. O desenvolvimento de software baseado no modelo DDD é um conceito atual com a</p><p>utilização de velhas práticas de desenvolvimento. Assinale a alternativa a seguir que melhor</p><p>define esse modelo.</p><p>C. É uma abordagem de modelagem de software com objetivo de facilitar a</p><p>implementação de regras de negócio baseado em um domínio.</p><p>4. DDD é uma abordagem de modelagem de software que carrega em sua essência a</p><p>orientação a objeto (OO). Assinale a alternativa a seguir que contém características que são</p><p>intrínsecas a OO.</p><p>D. Alinhamento do código com o negócio, favorecer reutilização, mínimo de</p><p>acoplamento, independência da tecnologia.</p><p>5. Quando se utiliza um padrão de modelagem de domínio como DDD, vários aspectos</p><p>importantes precisam ser trabalhados no momento da modelagem do software. Assinale a</p><p>alternativa que apresenta corretamente o conceito do aspecto comunicacional promovido</p><p>pelo DDD.</p><p>A. A modelagem de aspectos comportamentais de uma aplicação deve ser efetuada</p><p>utilizando-se uma linguagem ubíqua para facilitar a comunicação em equipe.</p><p>Unidade 10 - Projeto da interface de uma</p><p>arquitetura de sistemas</p><p>1. O processo de análise e projeto de uma interface pode utilizar um modelo espiral em seu</p><p>desenvolvimento.</p><p>Nesse sentido, qual importante atividade é proporcionada por esse modelo?</p><p>E. A capacidade de iteração.</p><p>2. A usabilidade aborda principalmente a capacidade cognitiva, perceptiva e motora dos</p><p>usuários, empregada durante a interação com o sistema.</p><p>Das alternativas a seguir, assinale a que representa um fator de usabilidade.</p><p>C. Facilidade de aprendizado.</p><p>3. Identificar os usuários é uma das principais fontes de informação para o desenvolvimento</p><p>de uma interface, uma vez que eles estão intimamente ligados a esse aspecto, pois eles</p><p>que irão operá-la.</p><p>Diante disso, um processo utilizado na identificação e classificação dos usuários pode ser</p><p>representado pela ação de:</p><p>B. conversar com a equipe de usuários da empresa que comprou o sistema.</p><p>4. Em muitos casos, o engenheiro de software pode se deparar com ambientes capazes de</p><p>gerar dificuldades no desenvolvimento de interface. O chão de fábrica é um exemplo</p><p>clássico, onde a temperatura e ausência de mesas de escritório podem influenciar diversos</p><p>fatores.</p><p>Refletindo sobre isso, que elemento pode ser uma boa solução em ambientes restritivos?</p><p>A. Monitores sensíveis ao toque.</p><p>5. Uma vez não definidos no início do projeto, os requisitos não funcionais incidem em</p><p>iterações desnecessárias para corrigi-los no decorrer do processo. Exemplo de requisito</p><p>não funcional que deve ser planejado inicialmente é o padrão de mensagens de erro, visto</p><p>que, em tal etapa, os erros podem ser simplórios ou até mesmo inexistentes. À medida que</p><p>o projeto avança e se torna mais complexo, os erros surgem e a sua definição tardia pode</p><p>gerar iterações para implementá-los em interfaces, de modo que todas apresentem o</p><p>mesmo padrão de mensagens de erro.</p><p>Nesse contexto, que característica é desejável em uma mensagem de erro?</p><p>D. Linguagem adequada ao usuário na descrição do erro.</p><p>Unidade 11 - Arquitetura de softwares distribuídos</p><p>1. A evolução da tecnologia da informação tem impulsionado a crescente adoção de</p><p>sistemas distribuídos em diversas áreas, desde redes sociais até aplicações empresariais</p><p>críticas. Essa abordagem permite que recursos computacionais e dados sejam distribuídos</p><p>em vários dispositivos interconectados, proporcionando flexibilidade e eficiência. No</p><p>entanto, essa complexidade traz desafios que precisam ser abordados de forma estratégica</p><p>para garantir o sucesso desses sistemas.</p><p>Quando se trabalha com sistemas distribuídos, é preciso prestar uma atenção especial a</p><p>alguns pontos-chave do projeto, como transparência, abertura e escalabilidade.</p><p>Diante do exposto, é correto afirmar que o objetivo da escalabilidade em um sistema</p><p>distribuído é garantir que:</p><p>C. seja possível aumentar a capacidade computacional.</p><p>2. Sistemas distribuídos, em contraste com sistemas centralizados, apresentam uma série</p><p>de características que os tornam inerentemente mais complexos. Essas complexidades</p><p>surgem devido à natureza descentralizada desses sistemas, nos quais recursos</p><p>computacionais e dados são distribuídos em vários dispositivos interconectados.</p><p>Considerando esse assunto, qual das alternativas a seguir corresponde à característica de</p><p>sistemas distribuídos que aumenta sua complexidade?</p><p>B. A interação entre os componentes e suas estruturas não é uma tarefa trivial.</p><p>3. A escolha da arquitetura de gerenciamento de processos adequada pode afetar</p><p>significativamente a escalabilidade, a confiabilidade, a eficiência e a capacidade de resposta</p><p>do sistema distribuído. Essas abordagens variam desde modelos hierárquicos, como a</p><p>arquitetura mestre-escravo, até paradigmas de colaboração descentralizada, como redes</p><p>peer-to-peer.</p><p>Em relação ao gerenciamento dos processos em arquitetura mestre-escravo, pode-se</p><p>afirmar que usualmente:</p><p>C. pode ter apenas um processo-mestre e diversos escravos.</p><p>4. Nas arquiteturas cliente-servidor em duas camadas, a lógica de negócios, incluindo as</p><p>regras de aplicação, normalmente fica no servidor, enquanto o cliente é responsável</p><p>principalmente pela apresentação dos dados e pela interação com o usuário. A base de</p><p>dados pode residir no servidor ou no cliente, dependendo da configuração específica do</p><p>sistema.</p><p>Quanto ao processamento, existem basicamente dois modelos: cliente-gordo e</p><p>cliente-magro. Em uma abordagem cliente-gordo:</p><p>D. todo o processamento, ou parte dele, é feito no cliente.</p><p>5. A escolha da arquitetura depende das necessidades e dos requisitos específicos do</p><p>sistema distribuído em questão, bem como das considerações de desempenho,</p><p>escalabilidade, segurança e tolerância a falhas. Cada arquitetura tem suas próprias</p><p>vantagens e desvantagens, e a seleção adequada é crucial para o sucesso do projeto.</p><p>Diante do exposto, analise a situação a seguir.</p><p>Uma empresa trabalha com venda on-line de ingressos para eventos. Quando tem shows</p><p>internacionais, por exemplo, a empresa já chegou a esgotar, em menos de três horas, os</p><p>ingressos para lotar um estádio de futebol.</p><p>Qual seria a arquitetura mais apropriada para essa empresa?</p><p>C. Cliente-servidor multicamadas.</p><p>Unidade 12 - Arquitetura orientada a serviços</p><p>1. O Enterprise Service Bus (ESB) é uma tecnologia que pode ser usada em projetos de</p><p>SOA para facilitar a integração de serviços. O ESB atua como uma infraestrutura de</p><p>middleware que permite a comunicação, a transformação de dados e a orquestração de</p><p>serviços.</p><p>Qual das opções a seguir melhor contextualiza a razão pela qual se pressupõe a criação de</p><p>um barramento de serviço na SOA?</p><p>B. O barramento de serviço representa o local onde os serviços estão</p><p>interconectados como um repositório para consumo.</p><p>2. Na implementação de uma SOA, geralmente há três interfaces fundamentais para</p><p>publicação, comunicação e descoberta dos serviços. Essas interfaces desempenham</p><p>papéis essenciais na criação e no uso dos serviços em um ambiente SOA.</p><p>Qual é a alternativa que melhor representa a designação destas três interfaces: Web</p><p>Services Description Language (WSDL), Universal Description, Discovery and Integration</p><p>(UDDI) e Simple Object Access Protocol (SOAP)?</p><p>D. O WSDL</p><p>é a interface que representa os serviços; o UDDI é responsável pelo</p><p>descobrimento que define as informações sobre os serviços; e o SOAP é responsável</p><p>pela comunicação e pela troca de dados.</p><p>3. Representational State Transfer (REST) é um estilo arquitetural amplamente utilizado na</p><p>construção de sistemas distribuídos e na web. Ao contrário das alternativas anteriores,</p><p>REST não é uma interface específica em uma SOA como WSDL, UDDI ou SOAP. Em vez</p><p>disso, REST é um conjunto de princípios e restrições de design aplicados a recursos na</p><p>web.</p><p>Após a execução dos comandos REST, quais são os retornos equivalentes utilizados no</p><p>desenvolvimento de web services por meio do protocolo HTTP?</p><p>A. POST – CREATE, GET – READER, PUT – UPDATE, DELETE – DELETE.</p><p>4. A SOA é projetada para minimizar o acoplamento entre os serviços. O acoplamento</p><p>refere-se à dependência entre componentes de software, e uma das metas da SOA é criar</p><p>serviços que sejam independentes e que possam ser combinados e reutilizados de forma</p><p>flexível, reduzindo, assim, o acoplamento entre eles. Isso promove a flexibilidade e a</p><p>escalabilidade na integração de sistemas e na criação de aplicações baseadas em serviços.</p><p>A SOA modela serviços fracamente acoplados, que têm como principal característica:</p><p>C. baixo nível lógico de dependência entre serviços.</p><p>5. A modelagem de Business Process Management (BPM) e a SOA são duas abordagens</p><p>distintas, mas complementares, que podem ser usadas em conjunto para melhorar a</p><p>eficiência e a agilidade dos processos de negócios em uma organização.</p><p>Qual é a linguagem de comunicação utilizada na modelagem BPM de serviços e como ela</p><p>pode ser utilizada via REST?</p><p>E. BPEL e via REST para modelar a execução dos processos antes da inserção no</p><p>barramento.</p><p>Unidade 13 - Projeto de serviços web</p><p>1. O projeto de serviços web envolve duas camadas fundamentais: a camada web e a</p><p>camada de negócio, que, em conjunto, implementam as requisições de consumo aos</p><p>serviços web.</p><p>Todavia, é preciso de interfaces de comunicação em mais duas camadas – uma que se</p><p>comunica diretamente com a camada web e outra que se comunica diretamente com a</p><p>camada de negócio. Quais são essas camadas e qual a sua função?</p><p>B. Camada cliente: cria uma interface para interação com o consumidor do serviço</p><p>(front-end). Camada EIS: cria uma interface com serviços corporativos.</p><p>2. O UDDI apresenta as especificações técnicas para a descoberta dos serviços disponíveis</p><p>e se subdivide em páginas brancas, verdes e amarelas, que representam, respectivamente:</p><p>D. informações gerais sobre os serviços, informações técnicas e informações sobre a</p><p>categorização e a classificação de serviços por taxonomia.</p><p>3. Um pacote encapsulado em SOAP é constituído por três elementos: envelope, header e</p><p>body, que servem para, respectivamente:</p><p>C. definir a representação dos dados em XML, o cabeçalho que inicializa as</p><p>informações contidas no envelope e os dados que estão encapsulados.</p><p>4. Ao enviar uma requisição a um serviço via mensagem, o cliente deve buscar a descrição</p><p>que está armazenada em um repositório em determinado formato.</p><p>Em qual repositório a descrição dos serviços é armazenada e em que formato ela está?</p><p>A. UDDI e WSDL.</p><p>5. As chamada RPCs são utilizadas na comunicação entre web services por sua</p><p>flexibilidade, exatamente por encapsular:</p><p>E. XML sob HTTP.</p><p>Unidade 14 - Arquitetura de softwares embutidos</p><p>1. Por definição, um software embutido é caracterizado pelo uso no controle de sistemas</p><p>que reagem a eventos externos em seu ambiente. Dessa forma, dentro da Engenharia de</p><p>Software, pode-se afirmar que o software embutido é importante devido ao fato de:</p><p>B. o seu sistema apresentar uma capacidade de resposta full time superior a outros</p><p>sistemas.</p><p>2. Conceitualmente, dentro do processo de projeto para sistemas embutidos, os projetistas</p><p>de software devem levar em conta dois aspectos: o detalhamento do projeto e o</p><p>comportamento do hardware de sistema. Com isso, é possível considerar que um ponto</p><p>crucial para muitos sistemas de tempo real consiste em:</p><p>A. analisar os custos e o consumo de energia do hardware.</p><p>3. Os softwares embutidos caracterizam-se pela capacidade de um dispositivo exercer</p><p>controle em uma quantidade extensa de sistemas. Dentro desse contexto, existem padrões</p><p>de arquitetura distintos utilizados pelos sistemas embutidos. Sendo assim, que padrão de</p><p>arquitetura de tempo real é usado com frequência e qual a sua finalidade?</p><p>C. Controle de ambiente, usado quando um sistema acrescenta sensores que</p><p>apresentam informações referentes ao ambiente e atuadores capazes de</p><p>transformá-lo.</p><p>4. A correção de um sistema embutido não está relacionada apenas com as saídas, mas</p><p>também com o instante em que elas foram produzidas. Assim, pode-se afirmar que uma das</p><p>tarefas mais relevantes ligadas ao processo de desenvolvimento de software é a análise de</p><p>timing, sendo característico desse tipo de análise:</p><p>D. calcular com que frequência cada processo do sistema deve ser realizado para</p><p>assegurar o processamento de todas as entradas e a produção de todas as respostas</p><p>do sistema no tempo correto.</p><p>5. A plataforma de execução é, dentre outros aspectos, um sistema operacional que</p><p>gerencia recursos compartilhados. Porém, a extensa funcionalidade pertinente a um</p><p>sistema operacional convencional toma muito espaço e atrasa o desempenho dos</p><p>programas. Diante dessa situação, pode-se inferir que:</p><p>E. sistemas operacionais padrão geralmente são descartados como plataforma de</p><p>execução para sistemas de tempo real.</p><p>Unidade 15 - Família ATMega</p><p>1. Existe uma diferença marcante entre os microcontroladores AVR ATMega e os</p><p>microcontroladores concorrentes. Essa diferença está intimamente relacionada com o seu</p><p>desempenho superior e diz respeito:</p><p>C. à arquitetura de comandos reduzida.</p><p>2. Existe um recurso encontrado nos microcontroladores ATMega que os diferencia</p><p>claramente dos microcontroladores que não pertencem a essa família. Qual é esse recurso?</p><p>A. Grande capacidade de memória.</p><p>3. Os microcontroladores ATMega, dentre os vários recursos de hardware disponíveis,</p><p>contam ainda com vários protocolos de comunicação, dentre os quais os mais significativos</p><p>são UART, USART, SPI e I2C.</p><p>A respeito desses protocolos de comunicação, sabe-se que, com algumas exceções, há</p><p>somente 1 canal disponível para o protocolo SPI e outro para o protocolo I2C, enquanto</p><p>existem de 2 a 4 canais para os protocolos UART/USART.</p><p>Essa abordagem por parte dos fabricantes está fundamentada no fato de que:</p><p>B. não é necessário mais de um canal para protocolos SPI e I2C, pois os</p><p>componentes que usam esses protocolos podem ser montados em paralelo.</p><p>4. Para a programação dos microcontroladores ATMega, é necessário que, após o</p><p>desenvolvimento do programa, o usuário faça a programação deste, isto é, transfira o</p><p>programa já codificado para a memória interna do microcontrolador para que ele possa</p><p>executar o programa.</p><p>Para essa operação, é necessário ainda que o usuário disponha de:</p><p>E. um sistema de conversão USB – SPI.</p><p>5. O processador dos microcontroladores ATMega é baseado na arquitetura de conjunto</p><p>reduzido de comandos – RISC. Isso significa que o processador reconhece poucos</p><p>comandos se comparado com um processador de arquitetura CISC. Essa abordagem,</p><p>porém, proporciona alguns benefícios, mesmo trazendo um limite teórico máximo de</p><p>memória com que o microcontrolador consegue trabalhar.</p><p>Assinale a alternativa que expressa as vantagens que essa decisão trouxe ao</p><p>microcontroladores da família ATMega.</p><p>E. A abordagem RISC permite que o processador seja mais rápido e mais eficiente em</p><p>termos energéticos do que os processadores CISC.</p><p>Unidade 16 - Projeto de software WebApps</p><p>1. Uma característica essencial de uma aplicação web é seu dinamismo. As necessidades</p><p>de uma aplicação web podem mudar em pouquíssimo tempo, levando à necessidade de</p><p>projetos que tomem cada vez menos tempo e aplicações cada vez mais adaptáveis às</p><p>necessidades atuais de seus usuários. Sendo assim, qual das opções abaixo representa a</p><p>melhor decisão ao se iniciar</p><p>um projeto de WebApp?</p><p>B. Adaptar modelos tradicionais, realizando todas as etapas previstas no processo de</p><p>desenvolvimento, e, sempre que possível, realizar atividades em paralelo.</p><p>2. A entrada de um usuário em um WebApp pode ocorrer a partir de diversas origens,</p><p>sendo um dos maiores desafios em projetos de WebApp. Em qual das atividades a seguir</p><p>esse tipo de problema deve ser tratado?</p><p>D. Projeto de interface.</p><p>3. Um projeto de arquitetura permite definir quais serão as regras de navegação em um</p><p>WebApp, ou seja, por quais caminhos o usuário poderá seguir uma vez que estiver dentro</p><p>da aplicação web. O modelo de arquitetura que permite o agrupamento de dois ou mais</p><p>objetos por categoria e que é altamente aplicado em modelos de e-commerce é conhecido</p><p>como:</p><p>E. modelo em grade.</p><p>4. Todo projeto de WebApp deve levar em consideração alguns requisitos que, mesmo não</p><p>especificados pelo usuário, são necessários. O principal grupo de requisitos a ser</p><p>observado em um projeto de WebApp são os requisitos de qualidade, que devem estar</p><p>presentes em qualquer projeto. Assim sendo, a descrição a seguir é referente a qual</p><p>requisito de qualidade? “Capacidade de busca e recuperação de dados, facilidade de</p><p>navegação e leitura das informações, características relacionadas ao domínio da aplicação,</p><p>etc.”</p><p>A. Funcionalidade.</p><p>5. O desenvolvimento de um projeto de WebApp deve atender a uma série de objetivos que,</p><p>muitas vezes, não são especificados pelo usuário durante o processo de coleta de</p><p>requisitos, mas que são observados em inúmeros projetos web, uma vez que, quando não</p><p>aplicados, elevam as chances de fracasso do projeto. Observe a afirmação a seguir e</p><p>responda a qual objetivo se refere: “O usuário espera que o conteúdo seja relevante às</p><p>suas expectativas. A falta ou insuficiência de elementos pode levar ao fracasso do</p><p>WebApp”.</p><p>E. Robustez.</p>