Engenharia de Software

Documentos relacionados
Engenharia de Software

Engenharia de Software

Engenharia de Software

Engenharia de Software

Engenharia de Software

Engenharia de Software

Engenharia de Software

Engenharia de Software

Engenharia de Software

Engenharia de Software

Engenharia de Software

Engenharia de Software

Engenharia de Software

Engenharia de Software

Engenharia de Software

Engenharia de Software LEIC/LETI, 3 o Ano, 2 o Semestre, Ano letivo de 2014/2015

Engenharia de Software LEIC/LERC, 3 o Ano, 2 o Semestre, Ano lectivo de 2011/2012

Engenharia de Software LEIC/LETI, 3 o Ano, 2 o Semestre, Ano letivo de 2014/2015

Engenharia de Software LEIC/LETI, 3 o Ano, 2 o Semestre, Ano letivo de 2014/2015

Engenharia de Software LEIC/LETI, 3 o Ano, 2 o Semestre, Ano letivo de 2014/2015

Programação com Objectos. 2º Teste 2015/2016 1º Semestre

Engenharia de Software LEIC/LERC, 3 o Ano, 2 o Semestre, Ano lectivo de 2009/2010

Engenharia de Software LEIC/LERC, 3 o Ano, 2 o Semestre, Ano lectivo de 2011/2012

Fundamentos de Programação

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Java para Desktop. Programação Orientada à Objetos 2 JSE

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

Segunda Parte (3 valores) Primeira Parte (7 valores) Nome: Número: PERGUNTA NOTA PERGUNTA RESPOSTA

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Engenharia de Software 2006/2007

Fundamentos da Programação

A B Classe Genérica D A C. Classe Especializada. Classe Especializada. Características Herdadas

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

Fundamentos de Programação

9 Classes Abstractas e Interfaces

Fundamentos de Programação

Lição 11 Herança, polimorfismo e interfaces

Programação Orientada por Objectos 2010/11. 2º Exame 28 de Junho de 2011

Exame de 1ª Época Introdução à Programação IGE e ETI 2003/02/25-1º semestre de 2002/2003 ISCTE

Classe Abstrata e Interface

Instituto Superior de Engenharia de Lisboa

Herança (parte 2) Redefinição de métodos AULA 11

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

Classes e Objetos. Sintaxe de classe em Java

LEIC-A / MEIC-A 2007/2008 (1º

Fundamentos de Programação

PROGRAMAÇÃO JAVA. Parte 3

LEIC-A / MEIC-A 2007/2008 (1º

Herança. Herança. Herança. Herança. Herança. Programação Orientada a Objetos

4 Conceito de Herança

Linguagem de Programação. Diagrama de classes

Introdução à Programação. Encapsulamento e Herança

Instituto Politécnico de Setúbal. Escola Superior de Tecnologia. Departamento de Sistemas e Informática. Guia para codificação em JAVA

Herança. Prof. Fernando V. Paulovich 23 de agosto de 2010

MAC 2166 Introdução à Computação para Engenharia Escola Politécnica Primeiro Semestre de 2003 Primeira Prova 2 de abril de 2003

Programação com Objectos 2º Teste Tipo 1º Semestre (120 minutos)

Programação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos

Nome: Número: Segunda Parte (3 valores) Primeira Parte (7 valores)

Programação por Objectos. Java

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

Computação II Orientação a Objetos

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

Programação com Objectos Teste Teórico 18 de Dezembro de 2008, 19:00 (120 minutos)

nome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){

Linguagem de Programação III

Orientação a Objetos e Java

Tipos, Literais, Operadores

Tipos, Literais, Operadores

COMPORTAMENTOS - Observações

Escola Náutica Infante Dom Henrique. Grupo I (7.5 valores)

Laboratório de Programação. Aula 12 Java 5COP088. Aula 12 Exceções Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

Conceitos de Programação Orientada a Objetos

Iteradores. Iteradores. Isabel Harb Manssour. Roteiro. Coleções

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objetos Classes Abstratas. Sérgio Soares

Engenharia da Programação 2003/2004

Programação Orientada a Objetos

Errata 2 Engenharia de Software Fundamentos, Métodos e Padrões 3ª. edição

Padrões Fábrica. Simple Factory Factory Method

2 Vectores de objectos

Herança e Polimorfismo - Parte II -

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção.

Primeira Prova de Linguagens de Programação - DCC024B -

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

Programação Java. - Herança e Polimorfismo - Marco Fagundes Marco Fagundes -

Programação Orientada pelos Objetos B. Desenvolvimento orientado pelos objectos

Herança. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Nome: Número: Primeira Parte (3 valores) Segunda Parte (7 valores) PERGUNTA 1.1 PERGUNTA RESPOSTA NOTA

Herança e Propriedades

Programação por Objectos. Java

Programação Orientada a Objetos II Java Segunda aula. Prof. Rogério Albuquerque de Almeida

Nome: Número: Primeira Parte (7 valores) Segunda Parte (3 valores)

Herança Sendo uma linguagem orientada a objetos Java oferece mecanismos para definir classes derivadas a partir de classes existentes; As classes deri

Interfaces e Classes Internas

U.C. (21093) Programação por Objetos. XX de Julho de INSTRUÇÕES --

Transcrição:

UNIVERSIDADE DE LISBOA INSTITUTO SUPERIOR TÉCNICO Engenharia de Software LEIC/LETI, 3 o Ano, 2 o Semestre Repescagem do 2 o Teste, 1 de Julho de 2016 Nome: Número: Este teste tem um conjunto de 10 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 e cartão de aluno. Apenas são permitidas folhas de rascunho fornecidas pelos docentes que devem ser devolvidas no final. A utilização de de qualquer aparelho electrónico (tais como telemóveis, calculadoras, etc) implica a anulação imediata do teste. Leia cuidadosamente as perguntas de escolha múltipla e coloque na grelha a letra correspondente à resposta correta para cada pergunta. Por favor, use apenas letras 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. 2. 3. 4. 5. 6. 7. 8. 9. 10. Não preencher. Reservado para a correcção. 11: 12: 13:

Número: Pág. 2/7 Perguntas de escolha múltipla 1. É frequente, durante o desenvolvimento de um sistema de software, que os requisitos do sistema tenham que ser alterados numa fase avançada do desenvolvimento. Isto acontece porque A) Não foram usadas as boas práticas de Engenharia de Software na passagem dos requisitos para a solução. B) O processo de desenvolvimento de software seguido pela equipa não é o mais correcto. C) É comum existir incerteza sobre as reais necessidades do sistema no início do seu desenvolvimento. D) O processo de levantamento de requisitos não validou os requisitos. 2. A rastreabilidade dos requisitos é necessária para: A) Permitir comparar requisitos. B) Permitir que cada requisito possa ter um identificador único. C) Permitir que cada requisito possa ser re-utilizado. D) Permitir aferir os impactos de alterações aos requisitos. 3. O padrão de desenho conhecido como Decorator melhora a métrica de coesão pois: A) Cada decorador tem menos métodos protected do que a solução baseada na herança. B) Cada decorador tem menos responsabilidades por comparação com uma solução baseada na herança. C) Cada decorador passa a implementar comportamentos mais complexo por comparação com uma solução baseada na herança. D) Torna possível a realização de operações de refactoring do código em tempo útil.

Número: Pág. 3/7 4. Em programação por objectos podemos fazer reutilização através de herança e de composição. De acordo com o princípio de desenho da substituição de Liskov : A) A herança deve ser o mecanismo usado para reutilização porque permite substituir instâncias da superclasse por instâncias das subclasses. B) A herança apenas deve ser usada quando a subclasse satisfaz o mesmo contrato da superclasse. C) A composição deve ser usada sempre que pretendemos substituir uma instância de uma classe por uma instância de outra classe que seja de um subtipo da primeira, mas que não herde o comportamento da primeira. D) A herança nunca deve ser usada como mecanismo de reutilização devido às anomalias que pode introduzir. 5. Segundo o princípio do Desenho para Herança (Design for Inheritance): A) Uma classe deve ser sempre desenhada para ser extendida. B) Deve-se impedir a herança de uma classe que não está desenhada para ser extendida. C) Deve promover-se um equilíbrio entre a utilização de herança e delegação. D) Deve promover-se a utilização herança (face à delegação). 6. Pode dizer-se que Refactoring consiste em: A) Alterar os requisitos para o software responder a novas necessidades. B) Alterar a estrutura interna de software através de uma sequência de passos que preservam o seu comportamento observável. C) Alterar a estrutura do software através de uma sequência de passos apoiados por pair-programming. D) Todas as anteriores. 7. O modelo de processo de desenvolvimento Reuse-oriented software engineering A) Pode corresponder à criação de uma object-oriented framework que servirá como a estrutura base para as restantes fases do desenvolvimento. B) Pode ser usado durante a fase de Elaboração do Método Unificado. C) Requer atividade de identificação das possíveis alterações aos requisitos. D) Todas as anteriores. 8. Commercial off-the-shelf (COTS) são: A) Aplicações comerciais que deixaram de ser utilizadas. B) Aplicações comerciais reutilizadas por configuração. C) Aplicações comerciais com uma arquitectura cliente-servidor. D) Aplicações comerciais construídas pela ligação e coordenação de componentes existentes.

Número: Pág. 4/7 9. Sistemas confiáveis são: A) Sistemas imunes a falhas. B) Sistemas de uso geral e muito difundidos. C) Sistemas com mecanismos que evitam ou limitam a perda. D) Sistemas de baixo custo e fáceis de manter. 10. Ao adotar um processo em Cascata deve ter em conta que: A) Não é viável sem requisitos estáveis e de alta qualidade. B) Existir pouco feedback entre as etapas o que resulta na frustração dos programadores. C) Um processo que recorra à prototipagem dá mais feedback. D) Todas as anteriores. 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.

Número: Pág. 5/7 11. (2) Tendo em conta a arquitetura em camadas aplicada no desenvolvimento da aplicação MYDRIVE, altere a camada de serviços da aplicação por forma a concretizar o serviço ListUsers. Este serviço é responsável por devolver o nome, username e máscara de permissões de cada um dos utilizadores do sistema. Este serviço recebe o token do utilizador que realiza o serviço. Solução: No exame seria necessário escrever o código. public class UserDto implements Comparable<UserDto> { private String name; private String uname; private String mask; public UserDto(String name, String uname, String mask) { this.name = name; this.uname = uname; this.mask = mask; public final String getname() { return name; public final String getuname() { return uname; public final String getmask() { return mask; @Override public int compareto(userdto other) { return getuname().compareto(other.getuname()); public class ListUsersService extends MyDriveService { private List<UserDto> res = new ArrayList<UserDto>(); private final long tok; public ListUsersService(long tok) { this.tok = tok; @Override protected void dispatch() throws MyDriveException { Manager.getInstance().getLogin(tok); for (User u: Manager.getInstance().getUserSet()) res.add(new UserDto(u.getName(), u.getuname(), u.getmask()); Collections.sort(res); public List<UserDto> result() { return res;

Número: Pág. 6/7 12. (1,5) 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 ListUsersTest extends MyDriveTest { private long tok; @Override protected void populate() { tok = new Session(Manager.getInstance(), "root", "***").gettoken(); @Test public void success() { ListUsersService s = new ListUsersService(tok); s.execute(); assertequals(s.result().size(), 2); assertequals("root", s.result().get(0).getuname()); assertequals("super User", s.result().get(0).getname()); assertequals("rxwdr-x-", s.result().get(0).getmask()); assertequals("nobody", s.result().get(1).getuname()); assertequals("guest", s.result().get(1).getname()); assertequals("rxwdr-x-", s.result().get(1).getmask());

Número: Pág. 7/7 13. (1,5) 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 imprime apenas a informação dos utilizadores cujos username são indicados como argumentos. Se não forem indicados argumentos, então são impressos todos os utilizadores do sistema. Solução: No exame seria necessário escrever o código. public class UsersCommand extends MyCommand { public UsersCommand(Shell sh) { super(sh, "lu", "list users"); public void execute(string[] args) { ListUsersService lds = new ListUsersService(token()); lds.execute(); if (args.length == 0) for (UserDto dto: lds.result()) print(dto.getuname()+" "+dto.getname()+" "+dto.getmask()); else { int i = 0; Arrays.sort(args); for (UserDto dto: lds.result()) if (args[i].equals(dto.getuname())) { print(dto.getuname()+" "+dto.getname()+" "+dto.getmask()); if (++i >= args.length) break; Matriz das perguntas de escolha múltipla (4 versões): pergunta A B C D 1 C D A B 2 D B D A 3 B A C C 4 B A D C 5 B A D C 6 B A C C 7 D D A A 8 B A D C 9 C D A B 10 D A D A