• Nenhum resultado encontrado

Engenharia de Software

N/A
N/A
Protected

Academic year: 2021

Share "Engenharia de Software"

Copied!
7
0
0

Texto

(1)

INSTITUTO SUPERIOR TÉCNICO

Engenharia de Software

LEIC/LETI, 3o Ano, 2o Semestre

2

o

Teste, 8 de Junho de 2016

Nome: Número:

• Este teste tem um conjunto de10 perguntas de escolha múltipla, e um conjunto de 3 perguntas de resposta aberta.

Escreva o seu número em todas as folhas da prova. O tamanho das respostas

deve ser limitado ao espaço fornecido para cada questão. Pode responder a lápis. • Em cima da mesa devem estar apenas: enunciado, material de escrita ecartão de aluno. Apenas são permitidas folhas de rascunho fornecidas pelos docentes que

devem ser devolvidas no final.

• A utilização dede qualquer aparelho electrónico (tais como telemóveis,

calcula-doras, etc)implica a anulação imediata do teste.

Leia cuidadosamente as perguntas de escolha múltipla ecoloque na grelha a letra

correspon-dente à resposta correta para cada pergunta. Por favor, use apenasletras maiúsculas. Se não responder a uma determinada pergunta, marque a resposta com um X.

A classificação das perguntas de escolha múltipla é feita da seguinte forma: uma resposta correta vale 0,5; uma resposta errada vale -0,2; uma pergunta não respondida vale 0. Por isso, no

caso de não saber responder a uma determinada pergunta é preferível deixar a pergunta por responder.Para cada pergunta deve escolher a que considera mais correta.

Respostas às questões de escolha múltipla (componente teórica):

1. 6. 2. 7. 3. 8. 4. 9. 5. 10. Não preencher. Reservado para a correcção.

(2)

Perguntas de escolha múltipla

1. Um hipotético pedido para que um sistema “execute rapidamente todas as operações

que sejam solicitadas pelos seus utilizadores”:

⇒ A) Não é um requisito porque não é passível de ser testado para aferir sobre a sua satisfação na fase de validação e verificação de software.

B) Não é um requisito porque não descreve nenhuma funcionalidade que o

sis-tema deva suportar.

C) É um requisito perfeitamente válido, desejável, e aceitável para o sistema. D) Não é um requisito porque está escrito em língua natural.

2. Os requisitos devem ser classificados para ’estabilidade’ e ’prioridade’ porque:

⇒ A) Permite determinar quais os requisitos que devem ser implementados pri-meiro.

B) Só depois de estáveis é que os requisitos podem ser prioritizados. C) Só é necessário concretizar os requisitos estáveis e prioritários.

D) Os requisitos mais prioritários necessitam de ser classificados quanto à

es-tabilidade do código.

3. No padrão de desenho Estratégia (Strategy) qual a afirmação mais correta:

A) Existe uma ligação fraca do Context para as ConcreteStrategy pois o primeiro

depende apenas da interface Strategy.

B) Pode existir uma ligação forte das ConcreteStrategy para o Context pois o

algoritmo pode necessitar de informação específica do Context.

C) Existe coesão forte nas ConcreteStrategy pois agrega todas as

funcionalida-des associadas a cada algoritmo específico. ⇒ D) Todas as anteriores.

(3)

4. O princípio do aberto-fechado carateriza-se por:

A) O código ser aberto a alterações durante o desenvolvimento e fechado a

alterações quando entregue ao cliente.

⇒ B) O código ser aberto para a alterações por extensão e fechado para modifica-ções no código já existente.

C) O código ser aberto a alterações devido a novos requisitos e fechado a

alte-rações devido a requisitos já existentes.

D) Após a fase de amadurecimento, o código deve ser aberto a alterações por

programadores experientes e fechado a alterações por programdores inexpe-rientes.

5. Relativamente aos mecanismos de herança e delegação, pode dizer-se que: A) A herança é preferível face à delegação pois é uma forma de reutilização por

caixa-preta (black-box ).

B) A herança é preferível face à delegação pois resulta em menor ligação

(cou-pling).

⇒ C) A delegação é preferível face à herança pois resulta em menor ligação (cou-pling).

D) A delegação é preferível face à herança porque é um mecanismo estático. 6. A refatorização de desenho é uma atividade onde:

A) Se retiram comentários do código.

⇒ B) Se altera a estrutura preservando a funcionalidade.

C) Se identificam as abstrações relevantes no início do desenho. D) Se constroem hierarquias profundas de herança.

7. Uma framework e uma biblioteca de software distinguem-se porque:

A) Uma framework é um desenho sem código e uma biblioteca contém uma

implementação.

B) É mais complicado aprender a utilizar uma biblioteca.

⇒ C) A framework de software define um desenho para os programas que a usam.

D) A biblioteca de software é utilizada por herança. 8. Os custos de reutilização são:

⇒ A) Os custos de procurar, avaliar a adaptar o código potencialmente reutilizável.

B) Os custos de re-escrever todo o código que se pretende reutilizar.

C) As dificuldades em convencer a equipa de gestão a reutilizar em vez de

de-senvolver de origem.

(4)

9. Nas regras da programação dependente deve-se:

A) Utilizar pair-programming como forma de evitar dependências.

⇒ B) Reduzir a utilização de construções sujeitas a erro.

C) Realizar primeiro as tarefas com mais dependências.

D) Envolver o cliente nas decisões das tarefas a realizar primeiro.

10. Os modelos de processo assentes na prototipagem não devem ser utilizados para: A) Verificar os requisitos e a viablidade da solução.

⇒ B) Evitar construir um produto final.

C) Evitar que os utilizadores criem falsas expectativas acerca do produto. D) Permitir testar implementações alternativas de um algoritmo.

Perguntas sobre a componente prática

O projeto MYDRIVE desenvolvido durante a execução da disciplina de Engenharia de Software permite a criação e gestão de um sistema de ficheiros transacional hierárquico onde os utilizadores manipulam ficheiros e diretorias.

(5)

11. (2) Tendo em conta a arquitetura em camadas aplicada no desenvolvimento da aplicação

MYDRIVE, altere a camada deserviços (e também a de domínio, caso seja necessário)

da aplicação por forma a concretizar o serviço FindFilesByName. Este serviço é respon-sável por devolver, para cada ficheiro encontrado com nome igual ao dado, o caminho para o ficheiro, o username do dono do ficheiro e as permissões do ficheiro. Este serviço recebe o token do utilizador que realiza o serviço e nome a pesquisar.

Solução:

No exame seria necessário escrever o código.

public class FindFileDto implements Comparable<FindFileDto> { private String path;

private String uname; private String perm;

public FindFileDto(String path, String uname, String perm) { this.path = path;

this.uname = uname; this.perm = perm; }

public final String getPath() { return path; } public final String getUname() { return uname; } public final String getPerm() { return perm; } }

public class FindFilesService extends MyDriveService {

private List<FindFileDto> res = new ArrayList<FindFileDto>(); private final long tok;

private final String name;

public FindFilesService(long tok, String name) { this.tok = tok;

this.name = name; }

@Override

protected void dispatch() throws MyDriveException { Manager.getInstance().getLogin(tok);

for (File f: Manager.getInstance().getFileSet())

res.add(new FindFileDto(f.getPath(), f.getUser().getUsername(), f.getPerm()); }

public FindFileDto result() { return res; } }

(6)

12. (2) Considere o serviço desenvolvido na questão anterior. Concretize uma classe de teste

que realize um teste completo que permite verificar o bom funcionamento do serviço.

Solução:

No exame seria necessário escrever o código.

public class FindFilesTest extends MyDriveTest { private long tok;

@Override

protected void populate() {

tok = new Session(Manager.getInstance(), "root", "***").getToken(); }

@Test

public void success() {

FindFilesService s = new FindFilesService(tok, ".."); s.execute(); assertEquals(s.result().size(), 3); assertEquals("/", s.result().get(0).getPath()); assertEquals("/home", s.result().get(1).getPath()); assertEquals("/home/root", s.result().get(2).getPath()); } }

(7)

13. (1) Considere o serviço desenvolvido na questão 11. Concretize um comando da camada

de apresentação que permite uma utilização correcta deste serviço. O comando não recebe argumentos.

Solução:

No exame seria necessário escrever o código.

public class FindFilesCommand extends MyCommand { public FindFilesCommand(Shell sh) {

super(sh, "find", "find all file with the given name"); }

public void execute(String[] args) {

if (args.length < 1) throw new RuntimeException("Missing arg"); FindFilesService lds =

new FindFilesService(token(), args[0]); lds.execute();

for (FindFileDto dto: lds.result())

print(dto.getPath()+" "+dto.getUname()+" "+dto.getPerm()); }

Referências

Documentos relacionados

• Quando o navegador não tem suporte ao Javascript, para que conteúdo não seja exibido na forma textual, o script deve vir entre as tags de comentário do HTML. &lt;script Language

O objetivo do curso foi oportunizar aos participantes, um contato direto com as plantas nativas do Cerrado para identificação de espécies com potencial

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

Quando contratados, conforme valores dispostos no Anexo I, converter dados para uso pelos aplicativos, instalar os aplicativos objeto deste contrato, treinar os servidores

Dada a plausibilidade prima facie da Prioridade do Conhecimento Definicional, parece que não se poderia reconhecer instâncias de F- dade ou fatos essenciais acerca

A Lista de Fauna Ameaçada de Extinção e os Entraves para a Inclusão de Espécies – o Exemplo dos Peixes Troglóbios Brasileiros.. The List of Endangered Fauna and Impediments

Corporate Control and Policies Page 12 UNIVERSIDAD DE PIURA UNIVERSIDAD DEL PACÍFICO UNIVERSIDAD ESAN UNIVERSIDAD NACIONAL AGRARIA LA MOLINA UNIVERSIDAD NACIONAL

São muitos os problemas ambientais causados pelo crescimento urbano, o poder público não acompanha esse crescimento com investimentos em obras de infraestrutura, são ocupados