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/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/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

Fundamentos de Programação

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

Engenharia de Software. Enunciado Geral do Projecto

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

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

Fundamentos de Programação

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

Fundamentos de Programação

U.C Desenvolvimento de Software. 12 de julho de 2017 INSTRUÇÕES PARA A RESOLUÇÃO DA PROVA, ACONSELHA-SE QUE LEIA ATENTAMENTE O SEGUINTE:

Computação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz /05/13. Questão: Total Pontos: Gráu:

Engenharia de Software 2006/2007

Agenda da Aula. Reuso de Software. Tipos de Reuso. Potenciais Problemas. Vantagens de Reuso. Introdução a Reuso de Software

Padrões de Testes Automatizados

Técnicas para Reutilização de Software

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

Computação e Programação (2007/2008-1º Semestre)

Fundamentos de Programação

Orientação a Objetos e Java

PROVA MODELO Duração da prova: 120 minutos. Grupo 1 - Três questões de resposta múltipla de matemática.

U.C Desenvolvimento de Software. 12 de julho de 2017 INSTRUÇÕES PARA A RESOLUÇÃO DA PROVA, ACONSELHA-SE QUE LEIA ATENTAMENTE O SEGUINTE:

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

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

Frequência Introdução à Programação IGE e ETI 2004/2/10 1º semestre de 2003/2004 ISCTE

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE

AVALIAÇÃO DA CAPACIDADE PARA A FREQUÊNCIA DO CURSO DE LICENCIATURA EM ENGENHARIA MECÂNICA DO INSTITUTO SUPERIOR DE ENGENHARIA DE LISBOA PROVA 2017

U.C Laboratório de Desenvolvimento de Software. 6 de julho de 2018 INSTRUÇÕES

Instituto Superior de Engenharia de Lisboa

REST. Representational State Transfer. É um estilo arquitetural usado por muitas aplicações Web para estender as suas funcionalidades.

INSTITUTO SUPERIOR TÉCNICO Introdução aos Algoritmos e Estruturas de Dados

U.C Laboratório de Desenvolvimento de Software. 6 de julho de 2018 INSTRUÇÕES

private void btapresentanomeactionperformed(java.awt.event.actionevent evt) {

Exame de 2ª Época. Introdução à Programação (IGE e ETI), 2004/3/11, 1º semestre de 2003/2004, ISCTE

PROVA Duração da prova: 120 minutos

AVALIAÇÃO DA CAPACIDADE PARA A FREQUÊNCIA DO CURSO DE LICENCIATURA EM ENGENHARIA MECÂNICA DO INSTITUTO SUPERIOR DE ENGENHARIA DE LISBOA PROVA 2017

PROVA ESPECÍFICA MODELO. Duração da prova: 120 minutos

Composição e Herança. carro meucarro = new carro();

Modelação Engenharia de Software

AVALIAÇÃO DA CAPACIDADE PARA A FREQUÊNCIA DO CURSO DE LICENCIATURA EM ENGENHARIA CIVIL DO INSTITUTO SUPERIOR DE ENGENHARIA DE LISBOA

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

U.C Desenvolvimento de Software. 15 de junho de 2016 INSTRUÇÕES PARA A RESOLUÇÃO DA PROVA, ACONSELHA-SE QUE LEIA ATENTAMENTE O SEGUINTE:

AVALIAÇÃO DA CAPACIDADE PARA A FREQUÊNCIA DO CURSO DE LICENCIATURA EM ENGENHARIA ELETRÓNICA E TELECOMUNICAÇÕES E DE COMPUTADORES

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

PROVA Duração da prova: 120 minutos

Repositórios JPA no Projeto ecafeteria

MAC2166 Introdução à Computação para Engenharia Escola Politécnica Segunda Prova 19 de maio de 2008

MVC. 4-nov-08 Leandro Tonietto 278

MAC2166 Introdução à Computação para Engenharia Escola Politécnica Primeira Prova 05 de abril de 2010

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

LEIA ATENTAMENTE AS INSTRUÇÕES PARA A RESOLUÇÃO DO

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

U.C Matemática Aplicada à Gestão I. P-fólio modelo

AVALIAÇÃO DA CAPACIDADE PARA A FREQUÊNCIA DO CURSO DE LICENCIATURA EM

Laboratório de Sistemas e Serviços Web

Linguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos

AVALIAÇÃO DA CAPACIDADE PARA A FREQUÊNCIA DO CURSO DE LICENCIATURA EM ENGENHARIA ELETRÓNICA E TELECOMUNICAÇÕES E DE COMPUTADORES

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

Instituto Superior Técnico Licenciatura em Engenharia Aeroespacial Licenciatura em Engenharia Electrotécnica e de Computadores.

C com introdução a OO

Laboratório de Sistemas e Serviços Web

J820. Testes em J2EE com. Jakarta C A C T U S. argonavis.com.br. Helder da Rocha

U.C Matemática Finita. 16 de junho de 2014

AVALIAÇÃO DA CAPACIDADE PARA A FREQUÊNCIA DO CURSO DE LICENCIATURA EM

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

Publicar uma aplicação ASP.NET Core com base de dados SqlServer no Azure usando Visual Studio e um perfil para publicação (publish profile)

Nome: Número: Computação e Programação Mestrado Integrado em Engenharia Civil Licenciatura Bolonha em Engenharia Geológica e de Minas

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

Tipos, Literais, Operadores

Tipos, Literais, Operadores

PROVA MODELO Duração da prova: 120 minutos. Grupo 1 - Três questões de resposta múltipla de matemática.

LEIC/LERC 2007/08 Exame de Época Especial de Sistemas Distribuídos

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

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

Programação com Objectos Teste Teórico (repescagem) 24 de Janeiro de 2009, 09:00 (120 minutos)

pelos titulares de um diploma de técnico superior profissional, Decreto-Lei n.º 113/2014, de 16 de julho

AVALIAÇÃO DA CAPACIDADE PARA A FREQUÊNCIA DO CURSO DE LICENCIATURA EM ENGENHARIA MECÂNICA DO INSTITUTO SUPERIOR DE ENGENHARIA DE LISBOA PROVA 2018

Prova 2 PMR2300 1o. semestre 2015 Prof. Thiago Martins

Apresentação da plataforma.net. Ambientes Virtuais de Execução. Semestre de Verão, 12/13

Transcrição:

UNIVERSIDADE DE LISBOA INSTITUTO SUPERIOR TÉCNICO Engenharia de Software LEIC/LETI, 3 o Ano, 2 o Semestre 2 o Teste, 16 de Junho de 2018 Duração: 90 minutos Nome: Número: Este teste tem um conjunto de 8 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,6; 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. Não preencher. Reservado para a correcção. 9: 10: 11:

Número: Pág. 2/10 Perguntas de escolha múltipla 1. Considera a técnica da inversão do controlo. A) Esta técnica permite a implementação de bibliotecas de código. B) Esta técnica é fundamental para se desenvolver software seguindo o modelo de processo Reuse-oriented Software Engineering. C) Esta técnica não é usada na framework JUnit. D) Esta técnica reduz o tempo de aprendizagem necessário para se usar corretamente um elemento de software que a utilize. 2. Considere os padrões de organização da lógica de domínio. A) O padrão Transaction script é aquele que permite haver maior reutilização de código. B) O padrão Domain object permite identificar claramente o contexto transacional associado à execução de cada pedido. C) O padrão Service Layer não foi aplicado no projeto. D) O padrão Transaction script permite otimizar os acessos à base de dados. 3. Qual das seguintes afirmações é falsa relativamente à tecnologia utilizada no projeto para apresentação web, Spring-boot e Thymeleaf? A) O padrão Template view é utilizado. B) O padrão Front controller não é utilizado. C) O padrão Transform view não é utilizado. D) O padrão Page controller não é utilizado. 4. Os padrões de Offline locking utilizados pela Fénix Framework são: A) Pessimista, com a granularidade do atributo e explícito. B) Optimista, com a granularidade do objeto e explícito. C) Optimista, com a granularidade do atributo e implícito. D) Optimista, com a granularidade do atributo e explícito. 5. Qual das seguintes estratégias de guardar o estado da sessão numa aplicação web necessita de afinidade de sessão quando existem diversos servidores replicados a responder aos pedidos? A) Guardar no cliente. B) Guardar no servidor. C) Guardar na base de dados. D) Todas as indicadas nas restantes opções.

Número: Pág. 3/10 6. O código em baixo, em Dafny, calcula o n-ésimo (N) número triangular. Qual das seguintes opções é uma invariante válida para o ciclo no programa? method TriangleNumber (N: i n t ) r e t u r n s ( t : i n t ) r e q u i r e s 0 <= N; ensures t = N * (N+1) / 2; { t := 0; var n := 0; while n<n i n v a r i a n t... ; { n := n + 1; t := t + n ; A) 0 n N t = N B) 0 n N t > n (n + 1)/2 C) 0 n N t < n (n + 1)/2 D) 0 n N t = n (n + 1)/2 7. Qual dos seguintes modelos de processo de desenvolvimento não divide as atividades de levantamento de requisitos por diversas etapas (stages)? A) Cascata. B) Incremental. C) Unificado. D) Nenhum dos indicados nas restantes opções. 8. Qual das seguintes afirmação acerca de Behavior Driven Development (BDD) é falsa? A) BDD torna os requisitos automaticamente verificáveis. B) BDD incentiva a integração entre as pessoas de negócio, os responsáveis pelos testes do sistema e a equipa de desenvolvimento. C) BDD permite descrever o comportamento do sistema a diversos níveis de abstração, por exemplo, pode-se descrever o comportamento de negócio independentemente da sequência de interfaces utilizador que o implementam. D) Os custo associados à utilização de BDD são muito reduzidos, sendo o esforço de implementar um caso de teste em BDD semelhante ao esforço de implementar um caso de teste usando JUnit.

Número: Pág. 4/10 Perguntas sobre a componente prática 9. (2.0) Considere o código abaixo que modela uma ventoinha de teto, antes e depois duma refatorização. Considere ainda o código intermédio que representa um estado intermédio da refatorização. Que passos de refatorização efetuaria, a partir do código intermédio, com vista a alcançar o estado final. Justifique, indicando os passos necessários considerando que existe um conjunto de testes que verificam a correção da funcionalidade. ANTES: class CeilingFanPullChain { private i n t c u r r e n t S t a t e ; public CeilingFanPullChain ( ) { c u r r e n t S t a t e = 0; public void p u l l ( ) { i f ( c u r r e n t S t a t e == 0) { c u r r e n t S t a t e = 1; else i f ( c u r r e n t S t a t e == 1) { c u r r e n t S t a t e = 2; else { c u r r e n t S t a t e = 0; INTERMÉDIO: abstract class State { abstract i n t getcurrentstate ( ) ; class CeilingFanPullChain { private State c u r r e n t S t a t e ; public CeilingFanPullChain ( ) { setstateonint ( 0 ) ; public void setstateonint ( i n t s t a t e ) { i f ( s t a t e == 0) { this. c u r r e n t S t a t e = new Off ( ) ; else i f ( s t a t e == 1) { this. c u r r e n t S t a t e = new Low ( ) ; else { this. c u r r e n t S t a t e = new High ( ) ; public i n t getcurrentstate ( ) { return this. c u r r e n t S t a t e. getcurrentstate ( ) ; public void p u l l ( ) { i f ( getcurrentstate ( ) == 0) { setstateonint ( 1 ) ; else i f ( getcurrentstate ( ) == 1) { setstateonint ( 2 ) ; else { setstateonint ( 0 ) ; class Off extends State { public i n t getcurrentstate ( ) { return 0; class Low extends State { public i n t getcurrentstate ( ) { return 1; class High extends State { public i n t getcurrentstate ( ) { return 2; DEPOIS: abstract class State { abstract void p u l l ( CeilingFanPullChain wrapper ) ; class CeilingFanPullChain { private State c u r r e n t S t a t e ; public CeilingFanPullChain ( ) { c u r r e n t S t a t e = new Off ( ) ; public void s e tcurrentstate ( State s ) { c u r r e n t S t a t e = s ; public void p u l l ( ) { c u r r e n t S t a t e. p u l l ( this ) ; class Off extends State { public void p u l l ( CeilingFanPullChain wrapper ) { wrapper. setcurrentstate (new Low ( ) ) ; class Low extends State { public void p u l l ( CeilingFanPullChain wrapper ) { wrapper. setcurrentstate (new High ( ) ) ; class High extends State { public void p u l l ( CeilingFanPullChain wrapper ) { wrapper. setcurrentstate (new Off ( ) ) ;

Número: Pág. 5/10

Número: Pág. 6/10 10. (2.0) Considere os fragmentos de código abaixo, relativos ao módulo Hotel Controlador: @RequestMapping ( value = " / h o t e l s ", method = RequestMethod.POST) public S t r i n g hotelsubmit ( Model model, @ModelAttribute HotelData hoteldata ) { t r y { H o t e l I n t e r f a c e. createhotel ( hoteldata ) ; catch ( HotelException be ) { model. a d d A t t r i b u t e ( " e r r o r ", " E r r o r : i t was not p o s s i b l e to create the h o t e l " ) ; model. a d d A t t r i b u t e ( " h o t e l ", hoteldata ) ; model. a d d A t t r i b u t e ( " h o t e l s ", H o t e l I n t e r f a c e. gethotels ( ) ) ; return " h o t e l s " ; return " r e d i r e c t : / h o t e l s " ; Vista: <h3>create Hotel </ h3> <p class= " t e x t danger " th : t e x t = " $ { e r r o r " >Error </ p> <form th : a c t i o n = "@{ / h o t e l s " th : o b j e c t = " $ { h o t e l " method= " post " > <label >Name: </ label > < i n p u t type= " t e x t " th : f i e l d = " * { name " / > <label >Code : </ label > < i n p u t type= " t e x t " size="7" th : f i e l d = " * { code " / > <label >NIF : </ label > < i n p u t type= " t e x t " size="9" th : f i e l d = " * { n i f " / > <label >IBAN : </ label > < i n p u t type= " t e x t " size=" 20 " th : f i e l d = " * { iban " / > <label > Single : </ label > < i n p u t type= " number " th : f i e l d = " * { p r i c e S i n g l e " / > <label >Double : </ label > < i n p u t type= " number " th : f i e l d = " * { pricedouble " / > < i n p u t type= " submit " value= " Submit " / > </ form > Interface: @Atomic ( mode = TxMode. WRITE) public s t a t i c void createhotel ( HotelData hoteldata ) { new Hotel ( hoteldata. getcode ( ), hoteldata. getname ( ), hoteldata. g e t N i f ( ), hoteldata. getiban ( ), hoteldata. g e t P r i c e S i n g l e ( ), hoteldata. getpricedouble ( ) ) ; Indique as alterações que deve efetuar por forma a que o módulo Hotel passe a suportar quartos triplos, deste a interface utilizador à persistência. Note que os fragmentos de código apresentados podem não corresponder a todos as partes de código que devem ser modificadas. Considere a ordem de alterações por forma a que os testes continuem a funcionar.

Número: Pág. 7/10

Número: Pág. 8/10 11. (1.2) Considere os resultados de uma simulação efetuada usando a ferramenta JMeter, descritos na tabela abaixo, para o teste de integração de sucesso sem reserva de hotel e carro. Analise os dados e responda às seguintes questões sabendo que foram simulados 10 utilizadores simultâneos em que cada um deles executa uma vez a mesma sequência de pedidos. Considere que também se usou o JMeter para inicializar sequencialmente a base de dados antes de se proceder à simulação dos 10 utilizadores, operações de carregamento de dados, e após a simulação dos utilizadores são limpas as bases de dados. 1. Qual o setup necessário para que não seja necessário alugar um quarto nem reservar um veículo? Em que fase do carregamento é que essa informação é carregada? 2. Quantos pedidos de Process Adventure são feitos por cada utilizador? Justifique a resposta ilustrando os potenciais estados da aplicação em cada pedido. 3. Tendo em consideração que o comportamento transacional é assegurado através da Fénix Framework, justifique a discrepância nos valores de latência observados.

Número: Pág. 9/10