Baixe o app para aproveitar ainda mais
Prévia do material em texto
Unidade I ESTUDOS DISCIPLINARES Formação Especifica Prof. Angel Martinez Enunciado (Enade 2008) A figura mostra 3 conjuntos – A, B e C – em que cada conjunto é representado, no diagrama de Venn, por um círculo no plano. Com relação aos conjuntos A, B e C, julgue os seguintes itens: Questão 1 Assinale a opção correta. a) Apenas um item está certo. b) Apenas os itens I e II estão certos. c) Apenas os itens II e III estão certos. d) Apenas os itens III e IV estão certos. e) Apenas os itens II, III e IV estão certos. Questão 1 Introdução teórica Teoria dos conjuntos é o ramo da matemática que estuda as coleções de elementos e o relacionamento entre elas. O estudo moderno da teoria dos conjuntos começou com Georg Cantor e outros aproximadamente 1870. Um conjunto é um ente primitivo da matemática, ou seja, aceito sem definição, algo intuitivo. Questão 1 Representação de conjuntos A={1,2}; 2 A ; B= ou B={} = Conjunto Vazio A e B Questão 1 Diagrama de Venn ou Diagrama de Euler 1 2 A B União de conjuntos A={1,2,5} ; B={7,8,9} A B = { 1,2,5,7,8,9} Questão 1 Interseção entre conjuntos A B = { 2, 5 } Questão 1 Diferença entre Conjuntos A – B = {1,2,5} B – A = {7, 8, 9} Questão 1 Algumas das propriedades de conjuntos Reflexiva A A = A ou A A = A Associativa A (B C) = (A B) C A (B C) = (A B) C Distributiva A (B C ) = (A B) (A C) A (B C ) = (A B) (A C) Análise dos itens Colocamos números em cada um dos conjuntos. Questão 1 Afirmação I I. Item incorreto. Justificativa. A união de A com B somente daria um conjunto vazio se tanto A quanto B fossem conjuntos vazios. Questão 1 Afirmação II II. Item incorreto. Justificativa. Vamos resolver passo a passo: B C = {5, 6} A – (B C) = {1, 2, 4, 5} – {5, 6} = {1, 2, 4} (A – B) = {1, 4} (A – C) = {1, 2} (A – B) (A – C) = {1, 4} {1, 2} = {1} Portanto {1, 2, 4} é diferente de {1} e o item está incorreto. Questão 1 Afirmação III Justificativa. Vamos resolver passo a passo: A = {1,2,4,5} (B C) = {2, 3, 4, 5, 6, 7} A (B C) = {2, 4, 5} (A B) = {2, 5} (A C) = {4, 5} (A B) (A C) = {2, 4, 5} Portanto {2, 4, 5} é igual a {2, 4, 5} e o item está correto. Questão 1 Afirmação IV IV. Item incorreto. Justificativa. A interseção de A com A somente daria um conjunto vazio se A fizesse interseção com um conjunto vazio. A regra é A A = A e A = . Questão 1 Resposta Alternativa correta: A (o item III está correto e os demais itens estão incorretos). a) Apenas um item está certo. b) Apenas os itens I e II estão certos. c) Apenas os itens II e III estão certos. d) Apenas os itens III e IV estão certos. e) Apenas os itens II, III e IV estão certos. Questão 1 INTERVALO Enunciado (Enade 2011) Com relação ao valor lógico, avalie as afirmações a seguir: I. ¬ (p ^¬q) II. p(qp) III. (pv¬q) ¬p IV. (p^q)v(¬p^¬q) É tautologia apenas o que se afirma em: a) I. b) II. c) I e III. d) II e IV. e) III e IV. Questão 2 Introdução teórica Proposição Quando nos expressamos em português por meio de frases com algum significado. Denominamos de proposição uma frase que possa ser dita verdadeira ou falsa. Questão 2 Exemplos A seguir, são dados dois exemplos de sentenças, uma verdadeira e uma falsa. O número 4 é par (sentença verdadeira). O número 6 é ímpar (sentença falsa). Questão 2 Operações lógicas e seus conectivos Negação (¬) - NÂO Conjunção (^) - E Disjunção (v) - OU Condicional () – SE(Implica) Questão 2 Proposições compostas São proposições (frases) formadas pela união de proposições simples por meio de seus conectivos. Exemplos: Não existe divisão por zero. O número 4 é par e o número 5 é ímpar. O número 7 é par ou ímpar. Questão 2 A tabela verdade é uma tabela que faz todas as combinações possíveis entre as proposições simples que compõe a proposição composta. Para analisarmos as proposições compostas, precisamos utilizar a tabela verdade, que verifica o valor lógico da proposição. Questão 2 Negação (¬). A negação da proposição p é dada por ¬p. Sua tabela verdade está mostrada a seguir. Questão 2 p ¬p V F F V Conjunção (^). Considerando duas proposições p e q, a conjunção é dada por p^q. Sua tabela verdade está mostrada a seguir. Questão 2 p q p^q V V V V F F F V F F F F Disjunção (v). Considerando duas proposições p e q, a disjunção é dada por pvq. Sua tabela verdade está mostrada a seguir. Questão 2 p q pvq V V V V F V F V V F F F Condicional () Considerando duas proposições p e q, a condicional é dada por pq. Sua tabela verdade está mostrada a seguir. Questão 2 p q pq V V V V F F F V V F F V Tautologia e contingência. Sempre que a tabela verdade resultar em verdadeiro é tautologia. Sempre que a tabela verdade resultar em falso é contradição. Se a proposição composta não é tautológica e não é uma contradição, então é contingência. Questão 2 I. Afirmativa incorreta. Justificativa. Vejamos a tabela verdade a seguir. A expressão lógica é uma contingência. Questão 2 p q ¬q p ^¬q ¬(p ^¬q) V V F F V V F V V F F V F F V F F V F V II. Afirmativa correta. Justificativa. Vejamos a tabela verdade a seguir. Essa expressão lógica sempre resulta em verdadeiro, independentemente dos valores das proposições simples que a compõem. Concluímos, então, que essa expressão lógica é tautológica. Questão 2 p q qp p(qp) V V V V V F V V F V F V F F V V Resposta Alternativa correta: b). Questão 2 p q qp p(qp) V V V V V F V V F V F V F F V V III. Afirmativa incorreta. Justificativa. Vejamos a tabela verdade a seguir. A expressão lógica é uma contingência. Questão 2 p q ¬q pv¬q ¬p (pv¬q) ¬p V V F V F F V F V V F F F V F F V V F F V V V V IV. Afirmativa incorreta. Justificativa. Vejamos a tabela verdade a seguir. A expressão lógica é uma contingência. Questão 2 p q ¬p ¬q p^q ¬p^¬q (p^q)v(¬p^¬q) V V F F V F V V F F V F F F F V V F F F F F F V V F V V Resposta Alternativa correta: b). Questão 2 p q qp p(qp) V V V V V F V V F V F V F F V V INTERVALO Enunciado (Enade 2008) Considere a sentença a seguir. Se Maria for ao aniversário, João irá e ficará feliz, mas Maria ficará infeliz, ou, se João não for ao aniversário, Maria irá e ficará feliz, mas João ficará infeliz. Considere as seguintes proposições: P: João vai ao aniversário; Q: Maria vai ao aniversário; R: João feliz; e S: Maria feliz. Questão 3 Assinale a opção que contém fórmula de lógica proposicional com uma representação válida para a sentença proposta. Quanto à notação dos operadores, considere: junção = Λ; disjunção = V; negação = ¬; implica = →. Questão 3 Introdução teórica Álgebra das proposições, também conhecida por lógica proposicional é uma parte da matemática que trata de sentenças que possam ser ditas como verdadeiras ou falsas. Proposições compostas são aquelas formadas pela união de outras proposições por meio dos conectivos. X + 5 = 10; Não é uma proposição. Questão 3 Questão 3 p ¬p V F F V p q pvq V V V V F V F V V F F F p q pq V V V V F F F V V F F V NÃO E OU SE p q p^q V V V V F F F V F F F F Análise das alternativas a) Alternativa incorreta. Justificativa. Não reflete o proposto na questão, conforme segue. ((Maria vai ao aniversário implica que (João vai ao aniversário E João feliz)) implica que Maria não feliz). OU ((João não vai ao aniversário implica que (Maria vai ao aniversário E Maria fica feliz) implica que João feliz.) Está incorreto porque, no segundo caso, João está feliz enquanto que, na proposta da questão, ele fica infeliz. Questão 3P: João vai ao aniversário; Q: Maria vai ao aniversário; R: João feliz; e S: Maria feliz. Se Maria for ao aniversário, João irá e ficará feliz, mas Maria ficará infeliz, ou, se João não for ao aniversário, Maria irá e ficará feliz, mas João ficará infeliz b) Alternativa incorreta. Justificativa. Não reflete o proposto na questão, conforme segue. ((Maria não vai ao aniversário implica que (João vai ao aniversário E João feliz)) implica que Maria feliz). OU ((João vai ao aniversário implica que (Maria vai ao aniversário E Maria fica feliz) implica que João não feliz). Está incorreto porque Maria não vai ao aniversário, enquanto que, nas duas situações da questão proposta, ela vai ao aniversário. Em uma, sente-se feliz (se João não for) e, na outra, sente-se infeliz (se João for). Questão 3 P: João vai ao aniversário; Q: Maria vai ao aniversário; R: João feliz; e S: Maria feliz. Se Maria for ao aniversário, João irá e ficará feliz, mas Maria ficará infeliz, ou, se João não for ao aniversário, Maria irá e ficará feliz, mas João ficará infeliz c) Alternativa correta. Justificativa. Reflete o proposto na questão, conforme detalhado a seguir. ((Maria vai ao aniversário implica que (João vai ao aniversário E João feliz)) implica que Maria não feliz). OU ((João não vai ao aniversário implica que (Maria vai ao aniversário E Maria fica feliz) implica que João não feliz). Está correto porque reflete exatamente o comportamento apresentado na questão, tanto da parte de João quanto da parte de Maria. Questão 3 P: João vai ao aniversário; Q: Maria vai ao aniversário; R: João feliz; e S: Maria feliz. Se Maria for ao aniversário, João irá e ficará feliz, mas Maria ficará infeliz, ou, se João não for ao aniversário, Maria irá e ficará feliz, mas João ficará infeliz d) Alternativa incorreta. Justificativa. Não reflete o proposto na questão, conforme segue. ((Maria não vai ao aniversário implica que (João vai ao aniversário E João feliz)) implica que Maria não feliz). OU ((João não vai ao aniversário implica que (Maria vai ao aniversário E Maria fica feliz) implica que João não feliz). A segunda proposição está correta, mas a primeira não representa o comportamento proposto pela questão. Questão 3 P: João vai ao aniversário; Q: Maria vai ao aniversário; R: João feliz; e S: Maria feliz. Se Maria for ao aniversário, João irá e ficará feliz, mas Maria ficará infeliz, ou, se João não for ao aniversário, Maria irá e ficará feliz, mas João ficará infeliz e) Alternativa incorreta. Justificativa. Não reflete o proposto na questão, conforme segue. ((Maria vai ao aniversário implica que (João vai ao aniversário E João feliz)) implica que Maria feliz). OU ((João não vai ao aniversário implica que (Maria vai ao aniversário E Maria fica feliz) implica que João feliz). Está incorreto nos dois casos porque, no primeiro, Maria fica feliz com a ida de João, mas na questão proposta ela fica infeliz se João for. No segundo caso, João não vai e Maria fica feliz, mas João também fica feliz, o que contraria o fato de que João fica infeliz. Questão 3 P: João vai ao aniversário; Q: Maria vai ao aniversário; R: João feliz; e S: Maria feliz. Se Maria for ao aniversário, João irá e ficará feliz, mas Maria ficará infeliz, ou, se João não for ao aniversário, Maria irá e ficará feliz, mas João ficará infeliz Enunciado (Enade 2008) Os termos da sequência de Fibonacci são definidos por: Fibonacci(0) = 0 e Fibonacci(1) = 1 Fibonacci(n) = Fibonacci(n-1) + Fibonacci(n-2) Uma solução recursiva para o cálculo do i-ésimo termo da sequência é dada pela função a seguir. 1 função fibonacci(inteiro longo n) 2 se((n=0) OU (n=1)) então 3 retorne n 4 senão 5 retorne fibonacci(n-1) + fibonacci(n-2) 6 fim se 7 fim Questão 4 Acerca da execução recursiva dessa função, assinale a opção incorreta. a) À medida que o valor de n cresce, há um aumento no número de chamadas recursivas. b) Na linha 4, a ordem de execução é calcular o valor para fibonacci(n- 1) e somente depois calcular o valor para fibonacci(n-2). c) O método recursivo é o mais eficiente para o cálculo do i-ésimo termo da sequência de Fibonacci, pois realiza duas chamadas por passo da recursão, cada uma mais simples do que a chamada original. d) As condições de parada da recursão são: o valor de n é 0 ou o valor de n é 1. e) O uso da recursão para o problema da série de Fibonacci não é indicado, pois ele gera rapidamente uma explosão de chamadas do método. Questão 4 Introdução teórica A sequência recebeu o nome do matemático italiano Leonardo de Piza, conhecido por Fibonacci, que no ano de 1202 escreveu a sequência abaixo: 0,1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377 ... F(n) = F(n-1)+F(n-2); F(0)=0 e F(1) =1; Questão 4 1 função fibonacci(inteiro longo n) 2 se((n=0) OU (n=1)) então 3 retorne n 4 senão 5 retorne fibonacci(n-1) + fibonacci(n-2) 6 fim se 7 fim Questão 4 Executando o algoritmo passo a passo. Questão 4 Análise das alternativas (incorreta) a) Alternativa incorreta. Justificativa. À medida que o valor de n cresce, há um aumento no número de chamadas recursivas. b) Alternativa incorreta. Justificativa. A execução de fibonacci(n-1) também é recursiva e, somente após concluída, chama-se fibonacci(n-2). c) Alternativa correta. Justificativa. O método recursivo torna-se mais ineficiente com o aumento de n. Dependendo do valor de n, pode estourar toda memória do computador. Questão 4 d) Alternativa incorreta. Justificativa. A condição de parada é sempre n=0 ou n=1. e) Alternativa incorreta. Justificativa. Se n for muito grande, haverá uma explosão de chamadas de métodos e um StackOverflow. Um exemplo do cálculo de fibonacci para qualquer n dado. Questão 4 Exemplo de código não recursivo. Questão 4 INTERVALO Enunciado (Enade 2011) A pilha é uma estrutura de dados que permite a inserção/remoção de itens dinamicamente seguindo a norma de último a entrar, primeiro a sair. Suponha que para uma estrutura de dados, tipo pilha, são definidos os comandos: PUSH (p, n): Empilha um número “n” em uma estrutura de dados do tipo pilha “p”; POP (p): Desempilha o elemento no topo da pilha. Questão 5 PUSH (p, 10) PUSH (p, 5) PUSH (p, 3) PUSH (p, 40) POP (p) PUSH (p, 11) PUSH (p, 4) PUSH (p, 7) POP (p) POP (p) Questão 5 Considere que, em uma estrutura de dados tipo pilha “p”, inicialmente vazia, sejam executados os seguintes comandos: Após a execução dos comandos, o elemento no topo da pilha “p” e a soma dos elementos armazenados na pilha “p” são, respectivamente: a) 11 e 29. b) 11 e 80. c) 4 e 80. d) 7 e 29. e) 7 e 40. Questão 5 Introdução teórica A Ciência da computação estuda as estruturas de dados, que são um modo particular de armazenamento e organização da memória do computador. Tem como objetivo o uso eficientemente, facilitando sua busca e alteração. Questão 5 Alguns dos principais tipos de estrutura de dados. Vetores/arrays: são estruturas de dados lineares e estáticas. Lista: é uma estrutura de dados linear. Filas: são estruturas baseadas no princípio FIFO. Pilha: é uma estrutura de dados baseada no princípio LIFO. Árvore: mais de um elemento associado por nó. Tabela de hashing: usa-se um cálculo para achar/guardar etc. Questão 5 Filas Exemplo de aplicação. Tráfego de Mensagens Primeiro a entrar primeiro a sair Questão 5 0 1 2 3 4 5 6 7 8 dado dado dado dado dado dado dado dado dado 8 7 6 5 4 3 2 1 0 dado dado dado dado dado dado dado dado dado Aplicação 1 Põe na Fila 1 Aplicação 2 Le da Fila 1 Aplicação 2 Põe na Fila 2 Aplicação 1 Le da Fila 2 Pilha Pilha é uma estrutura de dados, isto é, uma forma particularde armazenar um conjunto numa certa ordem. Essa estrutura permite a inserção de novos itens ou a exclusão de itens existentes. A estrutura de dados do tipo pilha funciona analogamente a uma pilha de pratos. Caso precisemos adicionar um novo prato na pilha, devemos colocá-lo no topo, e para retirarmos um prato, também devemos extrair o prato que está no topo. Questão 5 Questão 5 Questão 5 Questão 5 Pilha de chamada de funções: Questão 5 Inicio Rotina 1 Fim Rotina 1 Rotina 2 Fim Rotina 2 Processamento Fim Início Estrutura interna típica: Temos um índice para o topo da pilha. Um número interno que indica o tamanho máximo da pilha. Duas funções: uma para inserção e outra para retirada. Questão 5 Índice 0 1 2 3 4 5 6 7 8 Conteúdo 13 21 34 45 56 67 78 89 91 Pilha A estrutura de dados do tipo pilha tem como característica a ordenação LIFO – Last In First Out, ou seja, a última informação a entrar é a primeira a sair. Quando utilizamos a pilha, precisamos implementar pelo menos duas operações básicas: A operação para empilhar/inserir um novo elemento no topo. PUSH (empilhar). A operação de desempilhar/remover um elemento do topo. POP (desempilhar). Há habitualmente as operações TOP e PULL. TOP: Le topo, PULL: Altera o topo. Questão 5 Atualmente nas aplicações práticas comuns não se costuma usar a PILHA, pois isso já estão embutidos nos banco de dados, sistemas operacionais etc. Em sistemas que necessitem de alta performance pode ser que seja necessário implementar uma pilha para o acesso a alguma camada de dados em memória controlada pela própria aplicação. Questão 5 Análise da questão Executando os comandos considerados na questão, os elementos serão armazenados na pilha “p”, conforme mostra a figura. Questão 5 7 4 4 4 40 11 11 11 11 11 3 3 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 10 10 10 10 10 10 10 10 10 10 PUSH (p, 10) PUSH (p, 5) PUSH (p, 3) PUSH (p, 40) POP (p) PUSH (p, 11) PUSH (p, 4) PUSH (p, 7) POP (p) POP (p) Após a execução de todos os comandos, o elemento 11 está no topo da pilha “p” e a soma de todos os elementos (11+3+5+10) resulta em 29. Alternativa correta: a). ATÉ A PRÓXIMA! Unidade I ESTUDOS DISCIPLINARES Formação Específica Prof. Angel Martinez Enunciado (Enade 2008) Com relação ao código, considere que: a variável i é local e a variável Gn é global; não há nenhum tipo de documentação ou código fonte além do mostrado; a sub-rotina xis() faz parte de um programa; o critério de aceitação do teste é: a sub-rotina xis() não entra em laço infinito. Questão 6 Na situação apresentada, é correto: I. aplicar testes de caixa branca às rotinas calc(), f1() e f2() e, em seguida, usar o resultado para fazer um teste de mesa da sub-rotina xis(). II. aplicar testes de caixa preta que forcem a chamada a xis() e depois medir a porcentagem de sucesso da sub-rotina xis(). III. aplicar testes de caixa preta isoladamente ao código objeto das sub-rotinas calc(), f1() e f2() antes de aplicar um teste que envolva a sub-rotina xis(). Questão 6 Assinale a opção correta. a) Apenas um item está certo. b) Apenas os itens I e II estão certos. c) Apenas os itens I e III estão certos. d) Apenas os itens II e III estão certos. e) Todos os itens estão certos. Questão 6 Introdução teórica. Teste caixa-branca. Um teste caixa-branca é aquele no qual a estrutura interna do software (código) é analisada. Baseia-se nos caminhos internos, na estrutura e na implementação do produto. Requer conhecimento do código do produto em um teste para ser aplicado. Questão 6 No teste de caixa-branca, você conhece o código que está dentro da caixa. Questão 6 BuscaBinaria Inf = 0; Sup=N-1; Int K[] Int chave Int N Inf <= Sup Meio = (Inf+Sup)/2 Chave=k[meio] Retorna meio FIM Sup = meio -1Chave <[meio] inf = meio + 1 Retorna -1 F V V F V Não Achou Achou Teste caixa-preta Não temos conhecimento do como o software foi desenvolvido Questão 6 Os parâmetros de entrada para os testes baseiam-se nos requisitos do programa apenas Os parâmetros de entrada para os testes baseiam-se nos requisitos do programa apenas Questão 6 Arquivos Objeto Questão 6 Programa.c.o Arq01.c.o Arq02.c.o Arq03.c.o A união dos arquivo objeto .o forma o executável Programa.exe Compilador + Linker Análise dos itens I. Item incorreto. Justificativa. Não é possível fazer o teste caixa-branca das rotinas calc(), f1() e f2() porque somente foi fornecido o código da sub-rotina Xis(). Questão 6 II. Item correto. Justificativa. Gn é uma variável global e não temos ideia do seu valor. O mesmo acontece com o funcionamento das funções calc(), f1() e f2(). Só é possível descobrir executando a sub- rotina Xis() (caixa-preta). A sub- rotina Xis() vai rodar a primeira vez com i = 0, depois i = 1, i = 2 etc., até que o valor de i e Gn sejam iguais. Portanto, é um teste válido e possível de ser feito. Questão 6 IV. Item incorreto. Justificativa. O teste caixa-preta é feito sobre um arquivo executável, página web ou biblioteca (jar ou DLL, por exemplo). Código objeto é um tipo de arquivo intermediário entre o código-fonte e o executável, o que torna esse item falso, pois não pode ser testado. Alternativa correta: a) (somente o item II é verdadeiro). Questão 6 Enunciado (Enade 2008) Com relação ao algoritmo que manipula um vetor de inteiros, julgue os itens a seguir. Afirmações Quando as variáveis I e J valerem, respectivamente, 0 e 1, a linha 13 apresentará a sequência de valores 0, 2, 4, 3, 1. Quando as variáveis I e J valerem, respectivamente, 1 e 0, a linha 13 apresentará a sequência de valores 0, 2, 3, 1, 4. Quando as variáveis I e J valerem, respectivamente, 1 e 2, a linha 13 apresentará a sequência de valores 0, 2, 1, 3, 4. Assinale a opção correta: a) Apenas um item está certo. b) Apenas os itens I e II estão certos. c) Apenas os itens I e III estão certos. d) Apenas os itens II e III estão certos. e) Todos os itens estão certos. Questão 7 Introdução teórica O teste de mesa é um procedimento que simula a execução de um programa, sem utilizar o computador, apenas com lápis e papel (e borracha). Para tanto, devem identificar-se as variáveis a serem analisadas, as condições de teste e, por fim, montar-se uma tabela com esses itens e proceder a execução passo a passo do programa. Questão 7 Teste de mesa Questão 7 Questão 7 Quadro 1. Passo a passo Passo Índices I e J e condição de parada de J Teste SE V[J] > V[J+1] Atualização de Valores Vetor resultante I J 3-I V[J] V[J+1] A V[J] V[J+1] P1 0 0 3 2 0 2 0 2 V1 P2 0 1 3 2 4 - - - V2 P3 0 2 3 4 3 4 3 4 V3 P4 0 3 3 4 1 4 1 4 V4 P5 1 0 2 0 2 - - - V5 P6 1 1 2 2 3 - - - V6 P7 1 2 2 3 1 3 1 3 V7 Questão 7 Quadro 2. Vetores resultantes Vetor I,J 0 1 2 3 4 V0 inicio [ 2 0 4 3 1 ] V1 0,0 [ 0 2 4 3 1 ] V2 0,1 [ 0 2 4 3 1 ] V3 0,2 [ 0 2 3 4 1 ] V4 0,3 [ 0 2 3 1 4 ] V5 1,0 [ 0 2 3 1 4 ] V6 1,1 [ 0 2 3 1 4 ] V7 1,2 [ 0 2 1 3 4 ] Questão 7 Questão 7 Análise dos itens I. Item correto. I , J = 0,1 ; V= [0, 2, 4, 3, 1] II. Item correto. I , J = 1,0 ; V=[0, 2, 3, 1, 4] III. Item correto I,I=1,2 ; V= [0,2,1,3,4] Alternativa correta: e) (todos os itens estão corretos). Questão 7 INTERVALO Enunciado (Enade 2008) O código abaixo: Questão 8 a) não apresenta erros de nenhum tipo. b) apresenta erros de atribuição de tipo inválido, divisão por zero e expressão relacional inválida. c) apresenta erros de atribuição de tipo inválido, divisão por zero e estrutura condicional. d) apresenta erros de estrutura condicional e expressão relacional inválida. e) apresenta somente erro de divisão por zero. Questão 8 Introdução teórica Númerosinteiros podem ser positivos ou negativos, porém sem casas decimais. Exemplos: 0, 2, -1. Números reais são aqueles que possuem casas decimais, podendo ser positivos ou negativos. Exemplos: 1.2, 15, -13.3, 0. Tipo literal, alfanumérico ou simplesmente string, é uma sequência de caracteres contendo letras, números e/ou símbolos especiais e, de regra, sempre entre aspas duplas. Exemplos: “Qual?”, “ “, “AbCdEfGhI”, “1+2=3”. Tipo lógico é usado para representar apenas dois valores possíveis: verdadeiro ou falso. Exemplo: T – true, verdadeiro, F – false, falso. Questão 8 Identificação dos tipos de variáveis. Questão 8 Tipo de Dado Inteiro Real Literal Lógico varA X varB X varC X varF X varS X varL X Trocas de dados e comparações Todo número inteiro é real, mas nem todo real é inteiro. Em princípio não podemos comparar tipos de dados diferentes sem efetuar uma conversão. Questão 8 Comparando uma string com um valor numérico, logo é uma expressão relacional inválida. Divisão por zero, pois varC foi inicializado com zero na linha 11. Atribuição inválida, pois, de regra, ao dividir-se um número real por inteiro, o resultado é real, logo não poderia ser atribuído o resultado da operação a um inteiro. Inicialização das Variáveis. Declaração das variáveis. Análise das alternativas a) Alternativa incorreta. Justificativa. Há vários erros. b) Alternativa correta. Justificativa. Os três erros são apresentados nas linhas 13, 14 e 16. c) Alternativa incorreta. Justificativa. A expressão relacional é que está errada na linha 13. Questão 8 a) não apresenta erros de nenhum tipo. b) apresenta erros de atribuição de tipo inválido, divisão por zero e expressão relacional inválida. c) apresenta erros de atribuição de tipo inválido, divisão por zero e estrutura condicional. d) Alternativa incorreta. Justificativa. Faltou, por exemplo, identificar o erro de divisão por zero. e) Alternativa incorreta. Justificativa. Faltou identificar os outros erros. Questão 8 d) apresenta erros de estrutura condicional e expressão relacional inválida. e) apresenta somente erro de divisão por zero. Enunciado (Enade 2008) Os métodos de projeto e análise de algoritmos são necessários para o desenvolvimento de algoritmos eficientes, pois eles permitem que se resolvam problemas computacionais, reduzindo complexidade e tempo de execução. Acerca desses métodos, assinale a opção incorreta. Questão 9 a) A abordagem de Divisão e Conquista propõe dividir o problema em vários subproblemas, resolvendo-os e combinando suas soluções para criar a solução final do problema original. b) A Programação Dinâmica é uma técnica tipicamente aplicada a problemas de otimização em que pode haver várias soluções possíveis. c) O método Guloso nem sempre encontra a solução ótima, mas faz sempre a melhor escolha momentânea. d) A Programação Dinâmica e o Método Guloso têm em comum o fato que se aplicam a problemas em que se observa a existência de sobreposição de subproblemas, ou seja, subproblemas que se repetem. e) Os métodos de Divisão e Conquista e Programação Dinâmica apresentam a mesma eficiência quando resolvem problemas combinando soluções de subproblemas dependentes uns dos outros. Questão 9 Introdução teórica Estratégia: é uma palavra com origem no termo grego strategia, que significa plano, método, manobras ou estratagemas usados para alcançar um objetivo ou resultado específico. Método de Divisão e Conquista. Programação Dinâmica. Método Guloso. Questão 9 Método de Divisão e Conquista Divide o problema em duas ou mais partes, criando subproblemas menores. Os subproblemas são resolvidos recursivamente, usando novas divisões e conquistas. Caso os subproblemas sejam suficientemente pequenos, serão resolvidos de forma direta. Programação Dinâmica (PD) é uma estratégia de projeto de algoritmos, tipicamente empregada para resolver problemas de otimização (mas não só), pela análise de uma sequência de problemas mais simples do que o problema original. A aplicação da PD baseia-se fundamentalmente naquele que é conhecido como Princípio de Otimalidade de Bellman: “Uma política de decisões ótimas só pode ser formada por subpolíticas ótimas.” Questão 9 Análise O método Guloso é uma estratégia de projeto de algoritmos que tenta resolver o problema fazendo uma escolha que parece ser a melhor solução para o momento. A cada etapa encontra uma solução que parece a solução ótima para uma parte do problema presumindo que ao final encontrará a melhor solução para o problema global. Questão 9 Análise das alternativas (assinale a opção incorreta) a) Alternativa incorreta. Justificativa. Trata-se da definição clássica do método Divisão e Conquista. b) Alternativa incorreta. Justificativa. A Programação Dinâmica aplica-se, principalmente, a problemas de otimização combinatória. Questão 9 a) A abordagem de Divisão e Conquista propõe dividir o problema em vários subproblemas, resolvendo-os e combinando suas soluções para criar a solução final do problema original. b) A Programação Dinâmica é uma técnica tipicamente aplicada a problemas de otimização em que pode haver várias soluções possíveis combinatória. c) Alternativa correta. Justificativa. O método Guloso nem sempre faz a melhor opção momentânea. Ele escolhe um subconjunto do problema que satisfaça determinada restrição. Essa função viável é chamada de Solução Ótima, mas o algoritmo nem sempre tende para uma solução ótima. Somente alguns problemas, que possuem a propriedade de escolha gulosa, têm uma solução global ótima, alcançada a partir de um conjunto de soluções locais ótimas. Questão 9 c) O método Guloso nem sempre encontra a solução ótima, mas faz sempre a melhor escolha momentânea. d) Alternativa incorreta. Justificativa. Os dois métodos podem trabalhar em subproblemas que se repetem. e) Alternativa correta. Justificativa. Embora o método Divisão e Conquista resolva, recursivamente, problemas combinando subproblemas independentes, a Programação Dinâmica trata de subproblemas que não são necessariamente diferentes. Portanto, eles não apresentam a mesma eficiência. Como há duas alternativas corretas (C e E), a questão foi anulada. Questão 9 d) A Programação Dinâmica e o Método Guloso têm em comum o fato de que se aplicam a problemas em que se observa a existência de sobreposição de subproblemas, ou seja, subproblemas que se repetem. e) Os métodos de Divisão e Conquista e Programação Dinâmica apresentam a mesma eficiência quando resolvem problemas combinando soluções de subproblemas dependentes uns dos outros. INTERVALO Enunciado (Enade 2008) O algoritmo representado pelo pseudocódigo está incompleto, pois faltam 3 linhas de código. A função busca desse algoritmo recebe um vetor ordenado de forma crescente e um valor a ser pesquisado. A partir disso, essa função verificará se o número armazenado no ponto mediano do vetor é o número procurado. Se for o número procurado, retornará o índice da posição do elemento no vetor e encerrará a busca. Se não for, a função segmentará o vetor em duas partes a partir do ponto mediano, escolherá o segmento no qual o valor procurado está inserido e o processo se repetirá. Questão 10 Alternativas A partir dessas informações, assinale a opção que contém os comandos que completam, respectivamente, as linhas 6, 8 e 12 do algoritmo. Questão 10 Introdução teórica Sistemas de busca nunca estiveram com tanta evidência como atualmente. Quase todos os sites atuais fornecem alguma forma de busca de informação. Muitos possuem máquina de busca, as SEO (Search Engine Optimization – Otimização para Ferramentas de Busca). Questão 10Busca sequencial – vetor de inteiros desordenado Exemplo: V[]=[ 13, 67, 1, 0, 100, 18, 7, 32, 9] Buscando pelo número-chave = 0 4 iterações (índice) Buscando pelo número-chave = 13 1 iterações (índice) Buscando pelo número-chave = 9 9 iterações (índice) Buscando pelo número-chave = 15 9 iterações (-1) Questão 10 Algoritmos de ordenação Métodos simples: Exemplo: Bubble sort – Ordenação Bolha. Métodos complexos: Quicksort – desenvolvido em 1960, aproximadamente. Usa a estratégia de divisão e conquista para ser eficiente. Questão 10 Busca binária – em um vetor de inteiros ordenado. A cada iteração divide o vetor em duas partes e despreza uma. Começa sempre pelo meio do vetor. Exemplo: buscando o número 56. Índice inicial = 0, índice final = 8, índice metade = (8+0)/2=4. Nesse caso, acharia de imediato e retornaria índice 4. Questão 10 Índice 0 1 2 3 4 5 6 7 8 Conteúdo 13 21 34 45 56 67 78 89 91 Exemplo: buscando o número 21. Índice inicial = 0, índice final = 8, índice metade = (8+0)/2=4. Nesse caso, o valor procurado não está na posição 4. Então, no caso, vou buscar na metade inferior do vetor. Alterando apenas índice final = índice metade – 1 = 4 – 1 = 3. E refaço a operação. Questão 10 Índice 0 1 2 3 4 5 6 7 8 Conteúdo 13 21 34 45 56 67 78 89 91 Exemplo: buscando o número 89. Índice inicial = 0, índice final = 8, índice metade = (8+0)/2=4. Nesse caso, o valor procurado não está na posição 4. Então, no caso, vou buscar na metade superior do vetor. Alterando apenas índice inicial = índice metade + 1 = 4 + 1 = 5. E refaço a operação. Questão 10 Índice 0 1 2 3 4 5 6 7 8 Conteúdo 13 21 34 45 56 67 78 89 91 Exemplo: buscando o número 200. Índice inicial = 0, índice final = 8, índice metade = (8+0)/2=4. Inicio a busca, vai acontecer do índice inicial ficar maior índice final, então, paro a busca e retorno, por exemplo, -1. Questão 10 Índice 0 1 2 3 4 5 6 7 8 Conteúdo 13 21 34 45 56 67 78 89 91 Algoritmo da questão. Entendendo o papel de cada variável no algoritmo C, F, K , M e V. C – contém o índice da posição inicial do vetor. F – contém o índice da posição final do vetor. K – contém o valor a ser pesquisado no vetor. M – contém o índice no ponto mediano do vetor, que é conseguido pela média entre C e F: (C + F)/ 2. Questão 10 V[M] – contém o valor do vetor no ponto médio em determinado momento. Algoritmo de busca O algoritmo busca comparar o valor em V[M] com a variável K, que contém o valor a ser buscado. Após entra no laço. É feita um operação que não sabemos. Depois vê-se que o índice final é alterado, ou seja, escolhendo para qual metade vai. Questão 10 a) Alternativa correta. INTERVALO Enunciado (Enade 2008) Considerando a execução do algoritmo apresentada, faça o que se pede a seguir. Apresente os dados da matriz M ao término da execução da linha 12. Apresente os dados da matriz M ao término da execução da linha 19. Questão 11 (discursiva) Passo 1 Identificar a variáveis M[0..2][0..3] É uma matriz de duas dimensões, um total de 12 elementos 3x4 I, J e C são variáveis inteiras. Questão 11 Passo 2 Perceber como é a estrutura aproximada do código. Temos dois pares de loops aninhados. Questão 11 Questão 11 Apresente os dados da matriz M ao término da execução da linha 12. O ponto a ser observado é que a questão não solicita a verificação dos resultados ao final de cada loop. Apresente os dados da matriz M ao término da execução da linha 19. Um ponto importante é presumir que as variáveis numéricas são inicializadas com zero. Portanto, a matriz bidimensional, após a linha 3, tem o seguinte formato: 0 0 0 0 0 0 0 0 0 0 0 0 Questão 11 O valor inicial da variável C foi determinado como sendo zero. Dentro do primeiro par de loops, a variável C é incrementada em 1. A cada iteração do loop, o valor de C é atribuído à matriz M. Questão 11 Quadro 1. Evolução do processamento até a linha 12. Portanto, a saída da matriz após a linha 12 é a seguinte: 1 2 3 4 0 0 0 0 0 0 0 0 Questão 11 I J C M[I,J] 0 0 1 1 0 1 2 2 0 2 3 3 0 3 4 4 Loop inferior. A matriz M chegará totalmente preenchida no par de loops inferiores. Exatamente com o incremento da variável C. Questão 11 Quadro 2. Evolução do processamento até a linha 13. Questão 11 I J C M[I,J] 0 0 1 1 0 1 2 2 0 2 3 3 0 3 4 4 1 0 5 5 1 1 6 6 1 2 7 7 1 3 8 8 2 0 9 9 2 1 10 10 2 2 11 11 2 3 12 12 Portanto, a matriz que é a entrada para o processamento do loop inferior é: 1 2 3 4 5 6 7 8 9 10 11 12 Questão 11 A atribuição é feita trazendo o dado que se encontra na posição M[2-I][3-J] para a posição M[I][J]. 1 2 3 4 5 6 7 8 9 10 11 12 O ponto de atenção é o momento em que é pedida a visualização da matriz na linha 19. Questão 11 Como tanto I quanto J valem 0 (zero), nesse momento do processamento, a posição é M[2][3], porque 2-0=0 e 3-0=3. Essa é a posição de origem. A posição de destino é M[0][0]. O valor que se encontra em M[2][3] é 12. Esse valor será colocado em M[0][0]. Com isso, a matriz fica conforme abaixo: 12 2 3 4 5 6 7 8 9 10 11 12 Questão 11 Código escrito na Linguagem C comparado com o pseudocódigo. Com um break point, vê-se que nem sempre se pode presumir que a matriz é inicialmente zerada, depende do compilador essa ação. Questão 11 Com um break point, vê-se que o compilador (C#) zerou as variáveis bem como a matriz é inicialmente zerada. Questão 11 Com um break point, vê-se que o compilador (C#) zerou as variáveis bem como a matriz é inicialmente zerada. Questão 11 Questão 11 O programa Java abaixo pode ser usado para verificar os resultados apresentados: Questão 11 Para ver o resultado do primeiro par de loop, execute o programa abaixo, que inclui a visualização da matriz no ponto exato após a linha 12. package enade; public class Main { public static void main(String[] args) { int M[][] = new int[3][4]; int c = 0; for (int I = 0; I < 3; I++) { for (int J = 0; J < 4; J++) { c = c + 1; M[I][J] = c; } System.out.println(M[0][0] + " " + M[0][1] + " " + M[0][2] + " " + M[0][3]); System.out.println(M[1][0] + " " + M[1][1] + " " + M[1][2] + " " + M[1][3]); System.out.println(M[2][0] + " " + M[2][1] + " " + M[2][2] + " " + M[2][3]); System.out.println(" "); return; } for (int I = 0; I < 3; I++) { for (int J = 0; J < 4; J++) { c = M[2 - I][3 - J]; M[I][J] = c; } } } } Para ver o resultado do segundo par de loops, execute o programa a seguir, que inclui a visualização da matriz no ponto exato após a linha 19. package enade; public class Main { public static void main(String[] args) { int M[][] = new int[3][4]; int c = 0; for (int I = 0; I < 3; I++) { for (int J = 0; J < 4; J++) { c = c + 1; M[I][J] = c; } } for (int I = 0; I < 3; I++) { for (int J = 0; J < 4; J++) { c = M[2 - I][3 - J]; M[I][J] = c; System.out.println(M[0][0] + " " + M[0][1] + " " + M[0][2] + " " + M[0][3]); System.out.println(M[1][0] + " " + M[1][1] + " " + M[1][2] + " " + M[1][3]); System.out.println(M[2][0] + " " + M[2][1] + " " + M[2][2] + " " + M[2][3]); System.out.println(" "); return; } } } }ATÉ A PRÓXIMA! Unidade I ESTUDOS DISCIPLINARES Formação Específica Prof. André Luiz Várias técnicas relacionadas à programação extrema (XP) são diretamente ligadas ao código, incluindo a refatoração, programação em pares e integração contínua. A programação em pares é a prática preferida dos desenvolvedores XP trabalhando em pares em um computador. A programação em pares auxilia no desenvolvimento de código de melhor qualidade quando os pares: Questão 12 – Enunciado Fonte: Enade 2011. a) Elaboram e utilizam padrões de codificação conjuntamente, os quais, quando utilizados corretamente e apropriadamente, reduzem problemas individuais. b) Estão acostumados ao desenvolvimento e à propriedade coletiva, limitando-se a fazer pequenas mudanças na ocorrência de erros em tempo de execução. c) Minimizam os riscos de insucesso no projeto por meio da utilização de ferramentas para a geração automática de testes funcionais e protótipos de interface. d) Escrevem testes em separado e discutem os resultados posteriormente, o que dá a eles a chance de se sintonizarem antes de começarem a implementação. e) Trabalham em projetos complexos onde a codificação seja desenvolvida de forma conjunta, minimizando erros e agregando valor onde quer que o sistema necessite. Questão 12 – Extreme Programming Princípios Básicos do XP: Feedback rápido Assumir a simplicidade Mudanças incrementais Abraçar a mudança Trabalho de qualidade Extreme Programming (XP) Processo de Planejamento (Planning Game) Releases Curtos Metáfora Projeto (Design) Simples Testes Refactoring Gerenciar a qualidade Programação em Pares Propriedade Coletiva do Código Integração Contínua Semana de 40 Horas On-Site Customer (Cliente sempre presente) XP – As 12 práticas Não haver nenhuma documentação do projeto. Trabalhar somente com recursos de nível sênior é mais caro e difícil. Difícil controle para projetos grandes. Software é construído para o “agora”. Mudança cultural. XP – Problemas do processo O trabalho de elaboração de código e o trabalho da determinação dos padrões de codificação são feitos em conjunto, o que contribui para reduzir problemas individuais. Alternativa correta: A. Análise da Questão INTERVALO Um analista foi contratado para desenvolver um sistema de pesquisa de DVDs em lojas virtuais. O sistema deverá solicitar ao usuário um título de DVD, que será usado para realizar a pesquisa nas bases de dados das lojas conveniadas. Ao detectar a disponibilidade do DVD solicitado, o sistema armazenará temporariamente os dados das lojas (nome, preço, data prevista para entrega do produto) e exibirá as informações ordenadas por preço. Após analisar as informações, o cliente poderá efetuar a compra. O contratante deverá testar algumas operações do sistema antes de ele ser finalizado. Há tempo suficiente para que o analista atenda a essa solicitação e efetue eventuais modificações exigidas pelo contratante. Com relação a essa situação, julgue os itens a seguir quanto ao modelo de ciclo de vida: Questão 13 – Enunciado Fonte: Enade 2008. I. O entendimento do sistema como um todo e a execução sequencial das fases sem retorno produzem um sistema que pode ser validado pelo contratante. II. A elaboração do protótipo pode ser utilizada para resolver dúvidas de comunicação, o que aumenta os riscos de inclusão de novas funcionalidades não prioritárias. III. A definição das restrições deve ser a segunda fase a ser realizada no desenvolvimento do projeto, correspondendo à etapa de engenharia. IV. Um processo iterativo permite que versões progressivas mais completas do sistema sejam construídas e avaliadas. Estão certos apenas os itens: a) I e II b) I e III c) II e III d) II e IV e) III e IV. Processo Unificado – RUP As restrições de projeto são requisitos de sistema capturados durante a fase de requisitos, nas etapas de concepção e de elaboração do sistema, conforme o processo RUP (Rational Unified Process). As restrições de projeto não podem ser confundidas com os objetivos do sistema, embora estejam diretamente relacionados. Um objetivo pode não ser alcançado devido a uma restrição que o limita ou o impede. Vejamos alguns exemplos: é objetivo do sistema permitir o acesso de fornecedores externos via internet, mas restrições de segurança não permitem. RUP – Restrições o sistema tem de ler dados de um leitor de cartão de um modelo específico, mas o fabricante não fornece o driver necessário para o sistema operacional no qual o sistema será executado. O protótipo é uma simplificação do sistema a ser desenvolvido, feito para permitir ao usuário antever, verificar, experimentar e validar o sistema futuro antes que ele seja realmente construído. Pode ser usado: para a demonstração de uma visão do sistema aos usuários; para a validação dos requisitos; para a clarificação de requisitos vagos, imprecisos ou indefinidos; como meio de comunicação entre os membros da equipe e usuários. RUP – Restrições Um processo iterativo e incremental é oposto ao antigo desenvolvimento sequencial. Cada passagem completa pelo processo é uma iteração, e cada nova iteração deve adicionar um ou vários novos incrementos. Desse modo, ao final de todas as iterações o sistema estará pronto. Algumas vantagens do processo iterativo em relação ao processo sequencial são: redução dos riscos de se fazer toda uma etapa e não mais retornar a ela; aceleração no tempo de desenvolvimento porque serão trabalhados escopos menores e claros; possibilidade de sofrer menor impacto devido às constantes alterações e atualizações pedidas pelos usuários, facilitando a adaptação e mudança dos requisitos. RUP – Restrições I. Item incorreto. Justificativa. A execução sequencial das fases, sem retorno, não capturará as alterações e correções identificadas nas fases posteriores, sejam elas originadas internamente pelos usuários ou externamente por mudanças em legislações e regras. II. Item correto. Justificativa. O protótipo facilita a resolução de dúvidas de comunicação, mas também dá ao usuário a oportunidade de criar novas necessidades (prioritárias ou não) porque ele tem uma antevisão do que será o sistema. Análise da Questão III. Item incorreto. Justificativa. Na etapa de engenharia o objetivo é ter uma visão global do sistema como um todo (incluindo hardware, software, equipamentos e pessoas envolvidas). O detalhamento das restrições é feito em etapas posteriores. IV. Item correto. Justificativa. O item IV está correto porque o processo iterativo permite versões progressivas mais completas por meio de incrementos. A cada iteração, uma nova versão produtiva é completada e aproxima-se mais do objetivo final de desenvolvimento do produto. Alternativa correta: D. Análise da Questão INTERVALO O Rational Unified Process (RUP) é um processo de engenharia de software cujo objetivo é assegurar a produção de software de alta qualidade, satisfazendo as necessidades dos usuários no prazo e nos custos previstos. O RUP contém uma estrutura que pode ser adaptada e estendida, pois é formado por duas estruturas principais, denominadas dimensões, que representam os aspectos dinâmicos e estáticos do processo. O aspecto dinâmico é expresso em ciclos, fases, iterações e marcos. O estático, por sua vez, contém as disciplinas, os fluxos, os artefatos e os trabalhadores. Com base na iteração do RUP, julgue as asserções a seguir. Questão 14 – Enunciado Fonte: Enade 2008. A cada iteração das fases do RUP geram-se ou não artefatos de software PORQUE Os artefatos produzidos dependem da ênfase que é dada a cada disciplina. Assinale a opçãocorreta. Questão 14 a) As duas asserções são proposições verdadeiras e a segunda é uma justificativa correta da primeira. b) As duas asserções são proposições verdadeiras e a segunda não é justificativa correta da primeira. c) A primeira asserção é uma proposição verdadeira e a segunda é uma proposição falsa. d) A primeira asserção é uma proposição falsa e a segunda é uma proposição verdadeira. e) Tanto a primeira quanto a segunda são proposições falsas. Questão 14 Baseado em casos de uso Centrado em arquitetura Modela o software utilizando a UML Desenvolve software iterativamente Gerencia requisitos Verificação contínua da qualidade Processo Unificado – Características Processo Unificado – RUP Fonte: Livro-texto. Uma iteração inclui as atividades de desenvolvimento que levam à liberação de um produto – uma versão do produto estável e executável junto com qualquer outro elemento periférico necessário para usar esse release. Logo, uma iteração de desenvolvimento pode ser comparada a uma passagem completa por todas as disciplinas, ou, pelo menos, requisitos, análise e design, implementação e teste. Os critérios de avaliação são estabelecidos quando cada iteração é planejada. O release planeja a capacidade demonstrável. A duração de uma iteração depende do tamanho e da natureza do projeto, mas é provável que diversos builds sejam construídos em cada iteração, do modo especificado no plano de integração do build para a iteração. Processo Unificado – RUP A cada iteração, os artefatos são atualizados, de maneira similar a um software “em crescimento”. Em vez de desenvolver artefatos uns após os outros, como em um pipeline, eles são desenvolvidos por meio do ciclo, apesar das taxas diferentes. Um artefato é um produto de trabalho final ou intermediário produzido e usado durante o projeto. Pode ser um documento ou um modelo, como o Documento de Arquitetura de Software, as Especificações Suplementares e o Diagrama de Caso de Uso. Os artefatos são utilizados nas disciplinas do RUP. Uma disciplina mostra todas as atividades que devem ser realizadas para produzir determinado conjunto de artefatos. Processo Unificado – RUP Vantagens: Tolerância às mudanças de requisitos. Elementos de um software são integrados progressivamente Incorpora formalmente a gerência de projeto ao ciclo. Problema: Cliente não aceita o processo iterativo. Complexidade de suas fases e fluxos. Indispensáveis que os profissionais sejam capacitados no processo. Processo Unificado – RUP I. Asserção falsa. Justificativa. A cada iteração, geram-se vários artefatos. Não são opcionais, são mandatórios. II. Asserção verdadeira. Justificativa. Cada artefato é escolhido em função da ênfase ou do peso de cada disciplina. Projetos de curta duração não gerarão vários artefatos, que seriam produzidos em um projeto com alguns anos de duração. Portanto, a quantidade de artefatos pode variar dependendo do ciclo de vida empregado, que pode ser incremental, evolutivo, liberação incremental ou design principal. Alternativa correta: D. Análise das Asserções INTERVALO Com relação à forma como o RUP trata a análise de requisitos, assinale a opção correta. a) A análise de requisitos ocorre na fase de construção, quando são descritos todos os casos de uso, e em seguida modelados por meio de diagramas de casos de uso UML. b) A análise de requisitos ocorre na fase de elaboração, em que são feitas entrevistas com usuários e definição do escopo do projeto. c) A maior parte da análise de requisitos ocorre durante a fase de elaboração. d) Por se tratar de um processo iterativo e evolutivo, a análise de requisitos ocorre na fase de construção juntamente com a programação, o que permite que os requisitos sejam revistos. e) A análise de requisitos deve acontecer antes da programação e testes do sistema, não podendo sofrer alterações a partir do momento que estejam definidos. Questão 15 – Enunciado Fonte: Enade 2008. A análise de requisitos ocorre durante todo o ciclo de vida de software do RUP, mas com diferente ênfase em cada fase. A maior parte do trabalho referente a requisitos ocorre nas fases de iniciação e elaboração. Mas é na fase de elaboração que ocorre a maior quantidade de trabalho. Na fase de construção e na fase de transição o trabalho decresce muito. A meta da fase de iniciação é atingir o consenso dos envolvidos sobre os objetivos do ciclo de vida do projeto. Um de seus objetivos principais é estabelecer o escopo do software do projeto e as condições limite, incluindo uma visão operacional, critérios de aceitação e o que deve ou não estar no produto. RUP – Requisitos A meta da fase de elaboração é assegurar que os planos de projeto traçados, a arquitetura e os requisitos estejam estáveis o suficiente para autorizar a programação e o desenvolvimento. Estabelece uma compreensão sólida dos casos de uso mais críticos que conduzem às decisões de arquitetura e de planejamento. Na fase de elaboração, são feitas várias atividades em requisitos, dentre elas a descrição detalhada dos fluxos de eventos dos casos de uso de maneira que os clientes e usuários possam compreender. A meta da fase de construção é esclarecer os requisitos restantes e concluir o desenvolvimento do sistema com base na arquitetura baseline escolhida. Um de seus objetivos principais é atingir versões úteis do produto com qualidade, eficiência e rapidez. RUP – Requisitos Conforme o RUP, as finalidades da disciplina requisitos são: estabelecer e manter concordância com os clientes e outros envolvidos sobre o que o sistema deve fazer; oferecer aos desenvolvedores do sistema uma compreensão melhor dos requisitos do sistema; definir as fronteiras do sistema (ou delimitar o sistema); fornecer uma base para planejar o conteúdo técnico das iterações; fornecer uma base para estimar o custo e o tempo de desenvolvimento do sistema; definir uma interface de usuário para o sistema, focando nas necessidades e metas dos usuários. RUP – Requisitos a) Alternativa incorreta. Justificativa. A análise de requisitos ocorre em todas as fases do RUP, majoritariamente na elaboração. Alguma análise de requisitos ocorre na fase de construção, mas é muito reduzida se comparada com a fase de elaboração. A descrição de todos os casos de uso é feita na elaboração, bem como a subsequente modelagem destes casos de uso no diagrama correspondente. b) Alternativa incorreta. Justificativa. A análise de requisitos também (e principalmente) ocorre na fase de elaboração. Nessa fase, são conduzidas entrevistas com os usuários para o esclarecimento e o detalhamento dos casos de uso. A definição do escopo do projeto é feita na fase de iniciação. Análise das alternativas c) Alternativa correta. Justificativa. A maior parte da análise de requisitos é realmente feita na fase de elaboração, com algumas alterações e complementos realizados em fases posteriores. d) Alternativa incorreta. Justificativa. A análise de requisitos é um processo iterativo e evolutivo, ocorrendo em todas as fases, majoritariamente na elaboração. Alguns requisitos podem ser revistos na fase de construção, mas eles não ocorrem nesta fase em paralelo com a programação. Análise das alternativas e) Alternativa incorreta. Justificativa. A análise de requisitos ocorre antes da programação e de testes do sistema. Mas eles podem sofrer alterações em fases posteriores porque requisitos sofrem modificações tanto por parte dos usuários (modificações do negócio) quanto externamente (alterações de leis e regulamentos). Análise das alternativas PRESSMAN, R. S. Engenharia de software. 6. ed. São Paulo: McGraw-Hill, 2006. SOMMERVILLE, I. Engenharia de software. 8. ed. São Paulo: Pearson, 2007. KRUCHTEN, P. Introduçãoao RUP. São Paulo: Ciência Moderna, 2003. Indicações Bibliográficas ATÉ A PRÓXIMA!
Compartilhar