Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Federal de Sergipe – Campus São Cristóvão Avaliação 1 – Engenharia de Software para SI II Nome: _______________________________________________ Curso: Sistemas de Informação Data: 13/12/2017 Professora Dra. Adicinéia A. de Oliveira Instruções: → A prova é individual e sem consulta. Questões discursivas e de múltipla escolha devem ser respondidas à caneta. → Responda com clareza e objetividade as questões discursivas. Cuidado com a ortografia e caligrafia, bem como a utilização da notação UML, quando for o caso. Se necessário utilize o verso. → Leia atentamente as questões. Coloque o nome em todas as folhas. O grampo pode ser retirado. Boa Prova!!! I) Questões de Múltipla Escolha - Para cada questão existem 5 alternativas e apenas uma alternativa é correta. (Vale 0,25 ponto cada questão). Dica: Quando terminar passe as respostas à caneta e verifique se todas foram respondidas! 1.1) Sobre os padrões de projeto para distribuição de responsabilidades, GRASP (General Responsability Assignment Software Patterns), analise as afirmativas. I. Polimorfismo (Polymorphism) – Problema: Como tratar alternativas com base em tipo? Solução: Quando alternativas ou comportamentos relacionados variam segundo o tipo (classe), atribua a responsabilidade pelo comportamento aos tipos para os quais o comportamento varia, usando operações polimórficas. II. Especialista de Informação (Information Expert) – Problema: qual é o princípio geral de atribuição de responsabilidade a objetos? Solução: Atribua a responsabilidade ao especialista na informação, à classe que tem a informação necessária para satisfazer a responsabilidade. III. Controlador (Controller) – Problema: qual é o primeiro objeto, além da camada de IU (interface de usuário), que recebe e coordena uma operação do sistema? Solução: Atribua a responsabilidade a uma classe que represente uma das seguintes escolhas: 1) o sistema global, um objeto raiz ou um dispositivo dentro do qual o software está sendo processado; 2) um cenário de um caso de uso dentro do qual ocorre o evento do sistema. Está correto o que se afirma em: (A) I e III, apenas. (B) I, II e III. (C) II e III, apenas. (D) I e II, apenas. (E) II, apenas. 1.2) Suponha que em uma organização existe um conjunto de cargos e para cada cargo existem regras de cálculo da taxa de produtividade, cujo valor é determinado por uma porcentagem do salário base do funcionário. Este valor é acrescido ao salário do funcionário como um bônus. Um desenvolvedor deve criar uma solução que utilize um design pattern (padrão de projeto) cuja intenção é: “definir uma família de algoritmos, encapsular cada uma delas e torná-las intercambiáveis. O padrão de projeto permite que o algoritmo varie independentemente dos clientes que o utilizam”. Ou seja, o padrão sugere que algoritmos parecidos (métodos de cálculo da taxa de produtividade) sejam separados de quem os utiliza (funcionário). O padrão, além de encapsular os algoritmos da mesma família, também permite a reutilização do código. Nesta situação, caso a regra para cálculo da taxa de produtividade de dois tipos de funcionários, como Desenvolvedor e DBA, seja a mesma, não é necessário escrever código extra. Caso seja necessário incluir um novo cargo, basta implementar sua estratégia de cálculo da taxa ou reutilizar outra similar. Nenhuma outra parte do código precisa ser alterada. O design pattern mencionado na situação apresentada é: Universidade Federal de Sergipe – Campus São Cristóvão Avaliação 1 – Engenharia de Software para SI II Nome: _______________________________________________ Curso: Sistemas de Informação Data: 13/12/2017 Professora Dra. Adicinéia A. de Oliveira (A) Abstract Method. (B) Builder. (C) Prototype. (D) Strategy. (E) Singleton. Justifique sua resposta (Vale 1,0 ponto). Desenhe abaixo o Diagrama de Classes representando a situação descrita e a aplicação do padrão. R.: <<< Avaliado individualmente >>> 1.3) Julgue os itens a seguir, a respeito de padrões de projetos. I. O padrão command tem como definição passar uma requisição entre uma lista ou objetos encadeados para a execução de uma ação ou o acionamento de um evento em um momento posterior. II. O isolamento dos códigos de construção e representação é um dos objetivos do padrão builder. III. No padrão GRASP, a alta coesão (high cohesion) serve para mensurar quão fortemente uma classe está conectada a outras classes. O padrão de projeto estrutural bridge fornece um objeto substituto, que faz referência a outro objeto. (A) E-C-E. (B) C-C-C. (C) E-C-E. (D) C-E-C. (E) E-E-C. 1.4) Assinale a alternativa correta. Os três grupos distintos em que é organizado o padrão GoF são: (A) Método, classe e mensagens. (B) Classe, objeto e método. (C) Comportamentais, estado e classe. (D) Operacionais, organizacionais e arquiteturais. (E) Criacionais, estruturais e comportamentais. 1.5) Padrões de projeto nomeiam, explicam e avaliam um aspecto de projeto importante e recorrente em sistemas orientados a objetos. Avalie as características atribuídas a um padrão de projeto. Universidade Federal de Sergipe – Campus São Cristóvão Avaliação 1 – Engenharia de Software para SI II Nome: _______________________________________________ Curso: Sistemas de Informação Data: 13/12/2017 Professora Dra. Adicinéia A. de Oliveira I. Usado quando uma classe é usuária de uma certa hierarquia/ família de algoritmos, como um algoritmo de busca ou ordenação. II. Esse padrão define uma família de algoritmos, encapsula cada um deles e os torna intercambiáveis. III. Como existem diversos algoritmos em uma mesma família, não é desejável que se codifique todos eles em uma mesma classe. IV. Permite que um algoritmo varie, independentemente dos clientes que o utilizam. V. Fornece uma maneira de configurar uma classe com um dentre muitos comportamentos. VI. Pode ser usado para evitar a exposição das estruturas de dados específicas de um algoritmo, que se deseja ocultar. Essas características são do padrão de projeto: (A) Strategy. (B) Adapter. (C) Decorator. (D) Abstract Factory. (E) Template Method. 1.6) Sobre padrões de projeto, analise as afirmativas abaixo: I. É uma descrição de um problema e o cerne de sua solução, de forma que tal solução possa ser adaptada para resolver novos problemas. II. Lidam com relacionamentos entre objetos que podem ser mudados, apenas, em tempo de compilação. III. Um antipadrão tem como um de seus propósitos descrever uma solução ruim para um problema que resultou em uma situação ruim. Está correto o que se afirma, apenas, em: (A) I. (B) II. (C) III. (D) I e II. (E) I e III. 1.7) O diagrama abaixo ilustra um dos padrões de projeto propostos pela Gang of Four. Esse padrão de projeto denomina-se: (A) Factory method. (B) Abstract factory. (C) Template method. (D) Prototype. (E) Builder. 1.8) Os padrões arquiteturais descrevem a arquitetura, explicam quando elas podem ser usadas e discutem suas vantagens e desvantagens. Associe as colunas, relacionando os padrões arquiteturais aos cenários em que são geralmente utilizados. Universidade Federal de Sergipe – Campus São Cristóvão Avaliação 1 – Engenharia de Software para SI II Nome: _______________________________________________ Curso: Sistemas de Informação Data: 13/12/2017 Professora Dra. Adicinéia A. de Oliveira Padrões 1- Client-server 2- Pipe and filter 3- Layers 4- Model-View Controller 5- Repository Cenários ( ) Quando há necessidade de manter uma gerência centralizada de todos os dados, de modo que este seja acessível a todos os componentes do sistema, possibilitando uma interação indireta entre eles. ( ) Em aplicações de processamento de dados, em que as entradas são processadas em etapas separadas, nasquais os dados fluem de um componente para outro para processamento. ( ) Quando há possibilidade de incorporar novos requisitos não funcionais, como distribuição, segurança, persistência, entre outros, de modo a minimizar modificações no restante do sistema em razão da integração desse novo requisito. ( ) Quando há necessidade de que os dados sejam mantidos de maneira independente de sua apresentação, de modo que possam existir diversas maneiras de visualizar e interagir com os dados. ( ) Quando os dados compartilhados precisam ser acessados a partir de uma série de locais, podendo ser usados, também, quando a carga em um sistema é variável. A sequência correta dessa associação é: (A) 1, 3, 4, 2, 5. (B) 2, 4, 1, 5, 3. (C) 3, 1, 2, 5, 4. (D) 4, 5, 3, 1, 2. (E) 5, 2, 3, 4, 1. 1.9) Em um projeto de sistemas deve-se considerar que mudanças podem ser necessárias ao longo de sua utilização. Padrões de projeto ajudam a evitar esses possíveis problemas, pois garantem que o sistema pode mudar segundo maneiras específicas. Em diversas causas comuns de reformulação de projetos, alguns padrões podem ajudar a tratar esses problemas. Um deles pode ser a dependência da plataforma de hardware e software. Assinale a alternativa que apresenta os padrões de projeto que tratam desse problema. (A) Abstract Factory; Bridge. (B) Builder; Iterator; Strategy. (C) Composite; Decorator; Observer. (D) Chain of Responsibility; Command. (E) Expert; Cohesion; Hierarchical. 1.10) Os padrões de projetos tornam mais fáceis reutilizar soluções e arquiteturas bem sucedidas para construir softwares orientados a objetos de forma flexível e fácil de manter. Em padrões de projeto, delegação é uma maneira de tornar a composição tão poderosa para fins de reutilização quanto à herança, sendo que dois objetos são envolvidos no tratamento de uma solicitação. É uma boa escolha de projeto somente quando ela simplifica mais do que complica. Ao definir quais padrões deverão ser utilizados no projeto, considerando que diversos padrões de projeto usam delegação, mas três padrões dependem dela. Assinale-os. (A) State, Strategy e Visitor. (B) Builder, Prototype e Singleton. (C) Factory Method, Interpreter e Template Method. (D) Façade, Command e Decorator. (E) Adapter, Bridge e Composite. 1.11) O modelo de três camadas físicas (3-tier), especificado nas alternativas, divide um aplicativo de modo que a lógica de negócio resida no meio das três camadas, foi adaptado como uma arquitetura para as aplicações Web em todas as linguagens de programação maiores. Muitos frameworks de aplicação comerciais e não comerciais foram criados tendo como base a arquitetura de três camadas, como: (A) MVC (Model-View-Controller). (B) MDB (Model-Data-Business). (C) UDC (User-Data-Controller). (D) MDC (Model-Data-Controller). (E) UVB (User-View-Business). Universidade Federal de Sergipe – Campus São Cristóvão Avaliação 1 – Engenharia de Software para SI II Nome: _______________________________________________ Curso: Sistemas de Informação Data: 13/12/2017 Professora Dra. Adicinéia A. de Oliveira 1.12) Acerca de um dos padrões de projeto, analise a seguinte afirmativa: “fornecer uma alternativa flexível ao uso de subclasses para extensão de funcionalidade e, dinamicamente, agregar responsabilidades adicionais a um objeto”. Trata-se do padrão: (A) Proxy. (B) Visitor. (C) Iterator. (D) Decorator. (E) Mediator. Justifique e exemplifique sua resposta (Vale 1,0 ponto). Desenhe abaixo o Diagrama de Classes exemplificando a aplicação do padrão. R.: <<< Avaliado individualmente >>> 1.13) Considere que é necessário fazer um programa que vá funcionar em várias plataformas, como Windows, Linux, Mac OS etc. O programa fará uso de diversas abstrações de janelas gráficas, por exemplo, janela de diálogo, janela de aviso, janela de erro etc. Um Analista sugeriu o uso de um padrão de projeto GoF estrutural que fornece um nível de abstração maior que o Adapter, pois são separadas as implementações e as abstrações, permitindo que cada uma varie independentemente. O padrão sugerido pelo Analista é o: (A) Prototype, pois especifica os tipos de plataformas a serem criadas usando uma instância protótipo e cria novas interfaces pela cópia desse protótipo. (B) Bridge e as implementações seriam as classes de janela das plataformas. (C) MVC, de forma que a camada Model fique responsável por acionar as janelas, a camada Controller exiba os dados do Model ao usuário e a camada View armazene as classes que fazem a comunicação com o Banco de Dados. (D) Visitor e as interfaces seriam executadas nos elementos de cada plataforma. (E) State, que permite a uma plataforma alterar o comportamento de sua interface. Universidade Federal de Sergipe – Campus São Cristóvão Avaliação 1 – Engenharia de Software para SI II Nome: _______________________________________________ Curso: Sistemas de Informação Data: 13/12/2017 Professora Dra. Adicinéia A. de Oliveira Justifique e exemplifique sua resposta (Vale 1,0 ponto). Desenhe abaixo o Diagrama de Classes exemplificando a aplicação do padrão. R.: <<< Avaliado individualmente >>> 1.14) Sobre o padrão de projeto Composite, analise as afirmativas abaixo: I. Define hierarquias de classe que consistem de objetos primitivos e objetos compostos. II. Útil para representar hierarquias partes-todo de objetos. III. Torna mais fácil acrescentar novas espécies de componentes. Está correto o que se afirma em: (A) I, apenas. (B) II, apenas. (C) I e II, apenas. (D) I e III, apenas. (E) I, II e III. 1.15) Relacione adequadamente as colunas acerca do escopo de alguns dos padrões de projeto: 1. Classe. 2. Objeto. ( ) Bridge. ( ) Façade. ( ) Adapter. ( ) Observer. ( ) Interpreter. A sequência está correta em: (A) 2, 1, 1, 2, 1. (B) 1, 2, 2, 1, 2. Universidade Federal de Sergipe – Campus São Cristóvão Avaliação 1 – Engenharia de Software para SI II Nome: _______________________________________________ Curso: Sistemas de Informação Data: 13/12/2017 Professora Dra. Adicinéia A. de Oliveira (C) 2, 2, 1, 2, 1. (D) 1, 2, 2, 2, 2. (E) 1, 2, 1, 2, 1. 1.16) “Sua intenção é separar a construção de um objeto complexo da sua representação de modo que o mesmo processo de construção possa criar diferentes representações.” Trata-se do padrão: (A) State. (B) Bridge. (C) Façade. (D) Builder. (E) Adapter. Justifique e exemplifique sua resposta (Vale 1,0 ponto). Desenhe abaixo o Diagrama de Classes exemplificando a aplicação do padrão. R.: <<< Avaliado individualmente >>> 2.1) Segundo Sommerville (2016), o processo de projeto, na maioria das disciplinas de engenharia, baseia- se no reuso de sistemas existentes ou componentes. Em Engenharia de Software, diversos benefícios e problemas no reuso de software são apontados por Sommerville e outros pesquisadores. Como discutidos em aula, quais são os problemas e os benefícios com o reuso? Quais são as abordagens que apoiam o reuso de software. Suscintamente explique cada uma delas e a sua importância para o projeto de software. (Vale 2,0 ponto). R.: <<< Avaliado individualmente >>>
Compartilhar