Você está na página 1de 7

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
( ) Em aplicações de processamento de dados, em
1- Client-server que as entradas são processadas em etapas
separadas, nas quais os dados fluem de um
2- Pipe and filter componente para outro para processamento.
( ) Quando há possibilidade de incorporar novos
3- Layers requisitos não funcionais, como distribuição,
segurança, persistência, entre outros, de modo a
4- Model-View Controller minimizar modificações no restante do sistema em
razão da integração desse novo requisito.
5- Repository ( ) Quando há necessidade de que os dados sejam
mantidos de maneira independente de sua
Cenários apresentação, de modo que possam existir diversas
maneiras de visualizar e interagir com os dados.
( ) Quando há necessidade de manter uma gerência ( ) Quando os dados compartilhados precisam ser
centralizada de todos os dados, de modo que este acessados a partir de uma série de locais, podendo
seja acessível a todos os componentes do sistema, ser usados, também, quando a carga em um sistema
possibilitando uma interação indireta entre eles. é 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 An alista 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 >>>

Você também pode gostar