Engenharia de Software e Sistemas Segundo Exame Escrito
Paulo Borba Centro de Inform´atica
Universidade Federal de Pernambuco 11 de fevereiro de 2015
Quest˜ao 1 Explique brevemente a diferen¸ca entre testes de unidades e testes de integra¸c˜ao. 2
Quest˜ao 2 Responda brevemente as seguintes perguntas: (a) Qual o “mau cheiro” associado `a refa- tora¸c˜ao extract class? (b) Qual a mudan¸ca sugerida por essa refatora¸c˜ao? (c) Por que comportamento ´e preservado por essa refatora¸c˜ao? (d) Como vocˆe verificaria isso na pr´atica? 2
Quest˜ao 3 Responda as seguintes perguntas: (a) Qual o principal problema do m´etodo a seguir? (b) Que tipo de ferramenta poderia levar `a identifica¸c˜ao desse problema? (c) Com que configura¸c˜ao e estrat´egia isso poderia acontecer? Mostre (d) a solu¸c˜ao que vocˆe daria para resolver o problema, e (e) explique porque vocˆe acha que ela ´e adequada.
def save() {
def trInstance = new TechnicalReport(params)
if (!PublicationController.newUpload(trInstance, flash, request)) { trInstance.discardMembers()
flash.message = ’technicalReport.filesaving.failure’
render(view: "create", model: [trInstance: trInstance]) return
}
if (!technicalReportInstance.save(flush: true)) { trInstance.discardMembers()
flash.message = ’technicalReport.saving.failure’
render(view: "create", model: [trInstance: trInstance]) return
}
flash.message = message(code: ’default.created.message’, ...) redirect(action: "show", id: trInstance.id)
}
Seja breve e direto. Algumas linhas da solu¸c˜ao podem ser abreviadas caso sejam iguais `as linhas acima.
2
Quest˜ao 4 Escolha dois padr˜oes de projeto discutidos no curso e (a) indique os seus nomes, (b) forne¸ca breves explica¸c˜oes sobre os seus prop´ositos, e (c) desenhe diagramas de classes associados. 2
Boa sorte e boas f´erias!