Anda di halaman 1dari 4

PUC Minas – Barreiro

Curso: Sistemas de Informação


Disciplina: Projeto de Sistemas de Informação
Profa. Nilma Rodrigues Alves

Lista de Exercícios preparatórios para a Prova 01


Temas (Conteúdo para a primeira prova):
 Casos de Uso: descrição e modelagem (diagrama de casos de uso)
 Modelagem da interação (diagramas de sequência e de comunicação): notação, vantagens e desvantagens de
cada tipo de diagrama (quando comparados entre si), modelagem.
 Padrões GRASP (básicos e avançados): o que é um padrão GRASP, finalidade; tipos: problema/solução;
aplicação no desenvolvimento de modelos de interação e códigos.
Habilidades esperadas: domínio conceitual; análise de soluções propostas para um dado problema (solução correta,
com boa qualidade) para diagramas de casos de uso, interação; desenvolvimento de modelos de interação com
padrões GRASP e análise de código que os atenda, bem como proposição de soluções com o mesmo.
Valor: 1 ponto (pertence aos 20 pontos fora dos módulos 01 e 02)
Instruções:
1. Essa atividade é individual, embora se recomende a discussão com outros colegas.
2. É uma atividade para auxiliar no estudo dos tópicos mencionados acima. Os diagramas poderão ser desenvolvidos
em ferramenta case apropriada.
3. Entrega: manuscrito (diagramas desenvolvidos em ferramenta case anexados).
4. Considere também os exercícios discutidos em aula e realizados como atividade avaliativa.
5. Veja questões relativas ao conteúdo nas provas do Enade 2014, cursos Computação (bacharelado), Computação
(licenciatura), Sistemas de Informação, Tecnologia em análise e desenvolvimento de Sistemas; Enade 2011, cursos
Computação.
IMPORTANTE:
Prova 01 (Módulo 01): 22/03/2018 (20 pontos)
1
1. Um caso de uso pode ser descrito de vários modos quanto ao formato, ao detalhamento e ao
grau de abstração. Descreva o caso de uso da interação de um usuário com o sistema de um
caixa eletrônico para efetuar a retirada de dinheiro de modo que a descrição seja (1) enumerada,
(2) expandida e (3) essencial (sem detalhes de interface gráfica). Cada um desses itens (1, 2, 3)
está relacionado à quais das dimensões: formato, detalhamento e grau de abstração?
2. Qual o objetivo dos diagramas de casos de uso?
3. Defina ator. O que significa um ator estar associado a um caso de uso por um relacionamento de
comunicação?
4. Sobre casos de uso, quando utilizar o relacionamento de inclusão? E o relacionamento de
extensão?
5. Preencha com verdadeiro ou falso as afirmativas abaixo sobre casos de uso e diagramas de
classes:
(__) E possível relacionar dois atores utilizando um relacionamento de <<include>> ou
<<extend>>.
(__) Um relacionamento com o estereótipo de <<extend>> indica que o caso de uso base poderá
incorporar o comportamento de outro. O caso de uso estendido enviará o seu comportamento
ao caso de uso base.
(__) Um dispositivo de Hardware não pode ser considerado um ator no diagrama de caso de uso.
(__) Um banco de dados de um sistema externo pode ser considerado um ator no diagrama de
caso de uso se ele enviar ou receber informações de um caso de uso.
(__) O caso de uso não é capaz de representar os requisitos funcionais de um sistema de
informação.

1
Exercícios 01 e 04: exercícios extraídos do material de aula da profa. Maria Augusta (PUC Minas)
(__) O diagrama de caso de uso não pode ser utilizado para estabelecer o contrato entre o cliente,
analistas e desenvolvedores, daquilo que deverá ser implementado e construído por eles.
(__) <<include>> é uma relação de dependência que não obriga o caso de uso base a conter o
comportamento de um outro caso de uso.
(__) Atores são agentes que interagem com os casos de uso. Eles podem ser pessoas,
departamentos e sistemas de software.
(__) Atores interagem com casos de uso por meio de relacionamentos de extensão, denotado no
diagrama com o estereótipo <<extend>>.
(__) Um caso de uso é um processo de negócio relativamente longo, com começo, meio e fim.
(__) Um diagrama de caso de uso tem por objetivo representar como uma funcionalidade será
implementada e não o que ela representa para o sistema de informação.
(__) O diagrama de caso de uso pode ser utilizado como uma ponte para o documento de
requisitos e a fase de análise.
(__) Diagramas de casos de uso servem para registrar requisitos de um sistema.
(__) Associação é o meio empregado para registrar o relacionamento entre instâncias de classes.
(__) Em uma composição, quando o elemento que agrega é criado, as partes ou elementos
agregados são criados. Quando o elemento que agrega é destruído, os elementos agregados
também são destruídos.
2
5. Um aluno de uma universidade particular deve escolher disciplinas do semestre. Em seguida
ele é alocado às turmas para então receber uma fatura emitida pelo sistema de faturamento com
o valor a ser pago em função do número de turmas em que conseguiu vaga. Quais são os atores
e casos de uso?
6. A secretaria de uma universidade deve cadastrar turmas, apagá-las e modificá-las e enviá-las aos
departamentos acadêmicos? Quais são os atores e casos de uso?
7. Estude os exercícios sobre casos de uso realizados em sala de aula sobre casos de uso
(SGA/SalaAula/Atv01 e Atv02).
8. Considere o diagrama de casos de uso e marque com um X na tabela abaixo, os relacionamentos
possíveis entre atores, entre casos de usos e entre ator e caso de uso.
Entre atores Entre casos de uso Entre ator e caso de uso
Comunicação
Inclusão
Extensão
Generalização
9. Uma característica mensurável de um projeto orientado a objetos é o número de conexões físicas
entre os elementos do projeto, o que pode ser medido por meio do número de colaborações entre
as classes ou do número de mensagens passadas entre os objetos. Essa característica se refere a:
a. Acoplamento
b. Volatilidade
c. Completeza
d. Coesão
e. Suficiência
10. A coesão e o acoplamento são formas de se avaliar se a segmentação de um sistema em módulos
ou em componentes foi eficiente. Acerca da aplicação desses princípios, assinale a opção
correta.
a. O baixo acoplamento pode melhorar a manutenibilidade dos sistemas, pois ele está
associado à criação de módulos como se fossem caixas-pretas.
b. Os componentes ou os módulos devem apresentar baixa coesão e um alto grau de
acoplamento.
c. Os componentes ou os módulos devem ser fortemente coesos e fracamente acoplados.

2
Referência: http://www.dainf.ct.utfpr.edu.br/~tacla/UML/Apostila.pdf
d. Um benefício da alta coesão é permitir realizar a manutenção em um módulo sem se
preocupar com os detalhes internos dos demais módulos.
e. A modularização do programa em partes especializadas pode aumentar a qualidade desses
componentes, mas pode prejudicar o seu reaproveitamento em outros programas.
11. Defina acoplamento e coesão e complete: “Um sistema de qualidade possui _____ (alto/baixo)
grau de acoplamento e ______(alto/baixo) grau de coesão.
12. Considere a classe ao lado que representa números reais (Float) e cujos
métodos de manipulação numérica estão representados. Podemos dizer que a
classe é coesa? Justifique. Em caso negativo, também apresente as
modificações para garantir a coesão. Obs.: C=Celsius, F=Fahrenheit,
US=dólar, R=Real.
13. O que é um modelo de interação no contexto da análise e projeto de sistemas
de informação OO?
14. O que é um diagrama de sequência e um diagrama de comunicação?
15. Quais são as diferenças entre os diagramas de sequência e de comunicação?
16. O que é uma ligação (link) no diagrama de comunicação?
17. É necessário enumerar as mensagens nos diagramas de sequência? E nos de comunicação? Por
quê?
18. Na notação UML, como se representa nos diagramas de interação uma mensagem com iteração
e uma mensagem com condição?
19. No diagrama de sequência, como é chamada a linha tracejada que parte da representação do
objeto?
20. Qual a relação entre os diagramas de interação, classes, casos de uso e fluxos de casos de uso?
Como a informação de um diagrama ou artefato é usada por outro?
21. Resolva os exercícios “Ex01: diagrama de sequência” disponíveis no SGA.
22. Para o exercício 05 descrito em “Ex01: diagrama de sequência” (disponível no SGA), construa o
diagrama de comunicação equivalente.
23. O que é um padrão de projeto? Qual a sua finalidade?
24. No contexto do projeto de classes, defina responsabilidades (relacione com atributos e métodos)
e dê um exemplo.
25. O que são padrões GRASP? Por que são importantes?
26. Quais são os tipos de padrões GRASP?
27. Fazer o “Ex02: introdução a padrões projeto” disponível no SGA (quem já entregou, basta
mencionar que já foi entregue).
28. O código abaixo, não atende ao padrão GRASP Especialista.
1 /* Pseudocódigo que não atende ao padrão especialista */
2 Classe Supermercado
3
4 ClienteCorrente: Cliente;
5
6 Consulta valorTotalDaVendaCorrente();
7 venda: Venda;
8 item: itemDeVenda;
9 total: Moeda = 0,00;
10
11 venda := clienteCorrente.getVendaCorrente();
12 repita para caa item em venda.getItensDeVenda():
13 toral := total + (item.getQuantidade() * item.getProduto().getPreço());
14 fim repita
15 retorna totla
16 fim consulta
17 Fim Classe.
a. Desenhe o diagrama de sequência analisando os motivos e explique por que o padrão
Especialista não é atendido.
b. Refaça o pseudocódigo, atribuindo as responsabilidades para as classes que julgar pertinente e
também desenhe um diagrama de comunicação para a sua proposição (Veja exemplo nos slides
6 a 9, PSI_Aulas08_09-Padrões Grasp Básicos.
29. Considere o código abaixo escrito em C#. O padrão GRASP baixo acoplamento não foi
observado.
a. Explique sucintamente o que diz esse padrão e sua importância.
b. Identifique as partes do código que demonstram o baixo acoplamento e qual o tipo de
acoplamento (de dados, de controle, de dados globais, de dados internos). Justifique.
c. Qual padrão GRASP pode ser utilizado para minimizar o acoplamento, dada a identificação
das situações que levam ao baixo acoplamento? Justifique.
d. Com base na resposta b, proponha uma nova solução (em código C#).

1 /* Ordenação de registros de alunos por matricula */


2 class Aluno
3 {
4 string nome;
5 int matricula;
6
7 public string getNome() { return nome; }
8 public int getMatricula() { return matricula; }
9 // mais código ...
10 }
11
12 class ListaOrdenada
13 {
14 int tamVetor = 10;
15 Object[] elementosOrdenados = new Object[tamVetor];
16
17 public void add(Aluno a) {
18 // há código não mostrado aqui ...
19 int matricula1 = a.getMatricula();
20 //casting (object) para o tipo Aluno
21 Aluno aluno = (Aluno)elementosOrdenados[k];
22 int matricula2 = aluno.getMatricula();
23
24 if(matricula1 < matricula2) { // faça algo ... }
25 else { // faça outra coisa ... }
26 }
27 }
28
29 class TestAlunos
30 {
31 static void Main()
32 {
32 ListaOrdenada listaDeAlunos = new ListaOrdenada();
34 listaDeAlunos.add(new Aluno(...));
35 // mais código ...
36 }
37 }