Grupo Handbook
Handbook de
Questões de TI concursos comentadas para Além do gabarito 2ª Edição
Volume 2
Analista de Sistemas - Eng. de Software Petrobras 2008 Fundação Cesgranrio
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
Prefácio Este é o segundo volume da série Handbook de Questões de TI Comentadas para Concursos
Além do Gabarito. Ele traz a prova para Analista de Sistemas Júnior - Engenharia de Software, aplicada em junho de 2008 pela Fundação Cesgranrio. São 50 questões comentadas além do gabarito para você se preparar não só para os concursos para a Petrobras, mas, também, para todos os demais concursos de alta concorrência na área de TI. Estamos vivendo a era do petróleo no Brasil. A Petrobras está aproveitando muito bem essa fase para maximizar a sua produção e, por consequência, os seus lucros. Nessa jornada, surge a necessidade de novos pro ssionais quali cados, inclusive na área de TI. Para suprir essa necessidade, a empresa vem realizando concursos com maior frequência. Alguns fatores fazem com que concursos para a Petrobras sejam altamente concorridos, tais como:
contato com diversas tecnologias de ponta; excelente ambiente de trabalho; salário e
benefícios superiores aos da maioria das empresas e órgãos governamentais.
Tendo em vista
essa alta concorrência, é de fundamental importância que os materiais de estudo do concurseiro sejam de ótima qualidade. Este volume traz questões reais que abordam temas como segurança de informação, arquitetura de computadores, banco de dados e governança de TI. Não faltará embasamento teórico ao concurseiro, uma vez que os comentários elaborados não se limitam à simples resolução das questões. Bons estudos,
Grupo Handbook de TI
Página 1 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
Direitos Autorais Este material é registrado no Escritório de Direitos Autorais (EDA) da Fundação Biblioteca Nacional. Todos os direitos autorais referentes a esta obra são reservados exclusivamente aos seus autores. Os autores deste material não proíbem seu compartilhamento entre amigos e colegas próximos de estudo. Contudo, a reprodução, parcial ou integral, e a disseminação deste material de forma indiscriminada através de qualquer meio, inclusive na Internet, extrapolam os limites da colaboração. Essa prática desincentiva o lançamento de novos produtos e enfraquece a comunidade concurseira Handbook de TI. A série Handbook de Questões de TI Comentadas para Concursos Além do Gabarito é uma produção independente e contamos com você para mantê-la sempre viva.
Grupo Handbook de TI
Página 2 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
Canais de Comunicação A equipe Handbook de TI disponibiliza diversos canais de comunicação para seus clientes.
Loja Handbook de TI http://www.handbookdeti.com.br
Serviço de Atendimento Comunicação direta com a Equipe Handbook de TI pode ser feita em http://www.handbookdeti.com.br/contacts
Twitter do Handbook de TI Que acompanhar de perto o trabalho do Grupo Handbook de TI. Cadastre-se no twitter e comece a seguir o grupo Handbook de TI em http://twitter.com/handbookdeti
Página 3 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
1.
Assuntos relacionados:
Volume 02 Edição 2
Arquitetura de Computadores, Modos de Endereçamento de Memória,
Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas Ano: 2008 Questão: 21
- Eng. de Software
Um computador tem um registrador R e um conjunto de instruções de um operando, todas com modo de endereçamento indireto. Três destas instruções são especi cadas a seguir. LD: Copia da memória principal para o registrador R. AC: Adiciona da memória principal ao registrador R. ST: Move do registrador R para a memória principal. Considere o programa apresentado abaixo, executado no computador, acessando o bloco de memória principal, cuja situação inicial é mostrada a seguir. Endereço
Valor Armazenado
00H
01H
01H
02H
02H
03H
03H
04H
04H
05H
LD
01H
AC
02H
ST
03H
AC
00H
ST
01H
LD
03H
ST
00H
Considere que tanto o endereçamento quanto os valores envolvidos nas operações utilizam apenas um byte de memória cada. Após a execução do programa, qual será, em hexadecimais, a soma dos valores armazenados no bloco de memória? (a). 00H (b). 04H (c). 0AH (d). 10H (e). 1CH
Solução: Primeiramente, os conceitos de endereçamento de dados devem estar bem claros. Em uma instrução de programa, há várias maneiras de referenciar um valor, as mais conhecidas são:
•
Imediato : o valor do operando é especi cado diretamente na instrução. Sua principal vantagem é não requerer acesso à memória para obter o operando. A desvantagem é que esse modo impõe uma limitação no tamanho do operando. Suponha que o computador
Página 4 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
descrito suporte acesso imediato. A instrução LD 30H faria com que o valor 30H fosse copiado para o registrador R. Entretanto, há ocasiões em que não somente um byte deve ser copiado, por exemplo LD 201040H. Nesse caso, como o valor é armazenado diretamente na instrução, seria necessário aumentar o tamanho da instrução e isso não é possível na maioria das arquiteturas de computador;
•
Direto : o campo de endereço contém o endereço efetivo do operando na memória. Requer, portanto, apenas um acesso para determinar o valor do operando. Sua limitação é fornecer um espaço de endereçamento limitado. Suponha que o computador descrito suporte endereçamento direto. A instrução LD 01H, faria com que o valor armazenado na posição de memória 01H, ou seja, 02H fosse copiado.
Entretanto, se a instrução
possuir somente um byte para o endereçamento direto, por exemplo, a quantidade de
8
posições de memória estará limitada em 256 (2 );
•
Indireto : o campo de endereço aponta para uma posição de memória que contém o endereço de memória do operando. Sua principal desvantagem é a necessidade de dois acessos à memória.
A vantagem em relação ao modo de endereçamento direto é o
aumento do espaço de endereçamento, que passa a ser igual
2n ,
onde
n
é o tamanho
da palavra na memória. Suponha que o computador tenha somente um byte para endereçar a posição de memória, mas que essa posição de memória corresponda a uma palavra com tamanho de 2 bytes. Um endereçamento na forma indireta, possibilitará
16 ) e não mais 256 como no en-
o endereçamento de 65536 posições de memória (2
dereçamento direto. Não é o caso da questão, onde tanto o tamanho permitido para endereçamento na instrução e o tamanho da palavra de memória são iguais a um byte;
•
Registrador : é semelhante ao modo direto, no entanto, o campo de endereço se refere a um registrador e não a uma posição de memória. Geralmente, esse campo é composto por 3 ou 4 bits, o que permite referenciar de 8 a 16 registradores de propósito geral. Suas vantagens são o tamanho pequeno do campo de endereço e a não necessidade de se acessar à memória.
Sua desvantagem é o espaço de endereçamento limitado
pelo número de registradores. Por exemplo, poderíamos supor que o computador da questão permitisse endereçamento por registrador e tivesse 16 registradores.
Assim,
seria possível que um registrador além do R, por exemplo S, pudesse ser endereçado como 05H. Uma instrução da maneira LD 05H copiaria o valor do registrador S para o registrador R;
•
Indireto via Registrador : semelhante ao modo de endereçamento indireto. O campo de endereço aponta para o registrador que contém a posição de memória do operando. Sua vantagem é a necessidade de um único acesso à memória, um a menos que no modo indireto;
•
Deslocamento : requer que uma instrução tenha dois campos de endereço, com pelo menos um explícito. O valor de um dos campos é usado diretamente (valor = A). O outro campo é baseado no código da operação, e especi ca um registrador cujo conteúdo é adicionado à A, para produzir o endereço efetivo. Os três modos de endereçamento por deslocamento são: relativo, via registrador-base e indexado ;
•
Pilha : a pilha é um bloco reservado de posições de memória. Elementos podem ser colocados e removidos do topo da pilha. O apontador do topo da pilha (stack-pointer ) é mantido em um registrador.
Portanto, de fato, referências a pilha são feitas por
endereçamento indireto via registrador. Já que a questão trata de endereçamento indireto, o valor armazenado no local especi cado pelo operando é o endereço de memória do valor que será utilizado na operação. Por exemplo, a instrução LD 01H, carrega, no registrador R, o valor 03H, pois no endereço 01H está
Página 5 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
armazenado o endereço 02H, que por sua vez, contém o valor desejado, 03H. Seguindo os passos do programa, teremos: 1. LD 01H, R 2. AC 02H, R
←
03H, R recebe o valor armazenado no endereço 02H;
←
03H + 04H
←
07H, o valor de R é somado ao valor armazenado no
endereço 03H; 3. ST 03H, [04H] 4. AC 00H, R
←
5. ST 01H, [02H] 6. LD 03H, R
←
7. ST 00H, [01H]
←
07H, a posição de memória 04H recebe o valor do registrador R;
07H + 02H
←
←
09H, o valor de R é somado ao valor da posição 01H;
09H, a posição de memória 02H recebe o valor de R;
07H, R recebe o valor armazenado no endereço 04H;
←
07H, a posição de memória 01H recebe o valor de R.
Após o término do programa, a situação nal do bloco de memória será de acordo com a Tabela 1.
Tabela 1: situação nal do bloco de memória.
A soma é
Endereço
Valor Armazenado
00H
01H
01H
07H
02H
09H
03H
04H
04H
07H
01H +07H +09H +04H +07H = 1CH , que, em decimal, é 28.
correta é a letra (e).
Página 6 de 114
www.handbookdeti.com.br
Logo, a alternativa
Handbook de Questões de TI Comentadas para Concursos
2.
Volume 02 Edição 2
Assuntos relacionados: Arquitetura de Computadores, Thread, Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 22 Alguns sistemas operacionais permitem que seus processos criem múltiplos threads de execução. Em operação normal, o que é previsto que os threads de um mesmo processo do sistema operacional compartilhem? (a). Arquivos abertos (b). Registradores (c). Pilha (stack) (d). Variáveis locais de cada thread (e). Contador de instrução (program counter)
Solução: Uma thread é comumente de nida como um uxo único de controle sequencial dentro de um programa. O uso de threads visa reduzir o custo do gerenciamento de processos, que consiste principalmente em:
•
criação do processo;
•
trocas de contextos entre processos;
•
overhead associado a esquemas de proteção de memória;
•
comunicação entre processos.
Podemos dizer que as threads pertencentes ao mesmo processo utilizam os recursos alocados no sistema operacional para esse processo, como:
•
o espaço de endereçamento na memória;
•
os arquivo abertos (handles);
•
os objetos de sincronização.
O compartilhamento desses recursos permite que os uxos de execução (threads) se comuniquem e cientemente. Então, a letra (a) é a opção correta. Entretanto, threads dentro de um processo (e também entre processos) são escalonadas e executadas independentemente. No momento de sua execução, cada thread recebe alguns recursos próprios, como:
•
os registradores;
•
a pilha de execução, que lhe dará poder para chamar métodos, passar parâmetros e alocar variáveis locais;
•
o contador de instrução (program counter), que é essencial para que o uxo de execução prossiga.
É importante perceber que para que o acesso a esses recursos exclusivos ocorra, é necessário o chaveamento de contexto entre as threads, ou seja, o estado dos elementos próprios citados deverá ser armazenado e restaurado a cada troca de thread no uso do processador.
Página 7 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
Dado o exposto, as alternativas (b), (c), (d) e (e) podem ser eliminadas, pois citam recursos que não são compartilhados entre threads. A Figura 1 exempli ca o compartilhamento das threads dentro de um processo.
Figura 1: exempli cação de um processo com uma única thread e com múltiplas threads. Concluindo, as principais vantagens do uso de threads são:
•
permite a exploração do paralelismo real oferecido por máquinas multiprocessadas;
•
possibilita o aumento do número de atividades executadas por unidade de tempo (throughput);
•
permite sobrepor operações de cálculo com operações de I/O e, com isso, reduzir o tempo de resposta;
•
o tempo de criação e destruição de threads é inferior ao tempo de criação e destruição de processos, respectivamente;
•
o chaveamento de contexto entre threads é mais rápido que o tempo de chaveamento entre processos;
•
como threads compartilham o descritor do processo, elas dividem o mesmo espaço de endereçamento, o que permite a comunicação por memória compartilhada sem interação com o núcleo (kernel) do sistema operacional.
Página 8 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
3.
Assuntos relacionados:
Volume 02 Edição 2
Banco de Dados, Modelo Relacional, Normalização de Banco de
Dados, Primeira Forma Normal (1FN),
Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas Ano: 2008 Questão: 23
- Eng. de Software
É correto a rmar que qualquer relação válida de um modelo relacional: (a). pode apresentar tuplas duplicadas, desde que não haja chaves candidatas de nidas. (b). em seus atributos ordenados da esquerda para a direita, de acordo com a de nição. (c). tem suas tuplas naturalmente ordenadas, para ns de localização. (d). tem um índice físico para cada chave candidata, incluindo a chave primária. (e). está, pelo menos, na primeira forma normal.
Solução: Conceitualmente, em um banco de dados relacional, as relações podem ser de nidas como um conjunto de tuplas.
Uma tupla é uma sequência ordenada de atributos e representa,
usualmente, um objeto do mundo real e suas informações. Todas as tuplas em uma mesma relação possuem o mesmo conjunto de atributos. Entretanto, em uma relação, elas devem preservar o que é chamado de integridade existencial, que, basicamente, implica que tuplas iguais (com todos os valores dos seus atributos iguais) não são permitidas. Caso contrário, não temos uma relação. A forma de garantir a integridade existencial é de nir uma chave primária, que, obrigatoriamente, deve ser não-nula e única em toda relação. Logicamente, sendo a chave primária única, as tuplas duplicadas não serão permitidas e a relação estará garantida. Deve car clara a diferença entre tabela e relação.
Uma tabela nada mais é do que um
conjunto de linhas e colunas. Já as relações, que já foram de nidas acima, são implementadas sicamente em tabelas, que, obviamente, devem atender às condições exigidas em uma relação. Ou seja, nem toda tabela representa uma relação. Na de nição da primeira forma normal dada por Date, uma tabela está na primeira formal normal se, e somente se, for isomór ca à alguma relação. Isso quer dizer que, especi camente, a tabela deve atender às cinco condições abaixo:
•
não existe uma ordenação das linhas de cima para baixo;
•
não existe uma ordenação das colunas da direita para esquerda;
•
não existem linhas duplicadas;
•
qualquer interseção linha-coluna deve conter exatamente um valor no domínio aplicável e nada mais;
•
todas as colunas são regulares, no sentido de não possuírem componentes ocultos como identi cadores de linhas, identi cadores de colunas, identi cadores de objetos ou timestamps ocultos. Veja nas Tabelas 2, 3 e 4 um exemplo de cenário em que a informação contida em uma tabela que não está na 1FN é transportada para outras tabelas que estão na 1FN.
Página 9 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
idPessoa
nmPessoa
dtAniversario
nrTelefones
1
João Roberto
01/05/1980
9311-9654 - 3698-5741
2
Juliana Gomes
28/02/1985
3232-4521 - 6352-9821 - 3987-8855
3
Talita Brandão
03/12/1988
5561-9874
Tabela 2: exemplo de tabela que não está na 1FN.
idPessoa
nmPessoa
dtAniversario
1
João Roberto
01/05/1980
2
Juliana Gomes
28/02/1985
3
Talita Brandão
03/12/1988
Tabela 3: exemplo de tabela que está na 1FN.
idTelefone
idPessoa
nrTelefone
1
1
9311-9654
2
1
3698-5741
3
2
3232-4521
4
2
6352-9821
5
2
3987-8855
6
3
5561-9874
Tabela 4: exemplo de tabela que está na 1FN.
Dada a exposição teórica, podemos analisar as alternativas da questão: a. falsa, uma relação válida não permite tuplas duplicadas. b. falsa, a ordenação dos atributos não de ne a relação. c. falsa, a ordenação das linhas não de ne a relação. d. falsa, a relação é uma de nição no nível conceitual. Os índices físicos são de nidos no nível físico e não in uenciam no conceito de relação. Geralmente, esses índices podem ser livremente criados para qualquer conjunto de atributos, já a obrigação citada de serem criados para cada chave candidata não existe e não faz nenhum sentido. e. verdadeira, pois, por de nição, uma tabela representa uma relação se, e somente se, a tabela está na primeira forma normal.
Página 10 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
4.
Assuntos relacionados: Banco de Dados, Modelo Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 24
Volume 02 Edição 2
Entidade-Relacionamento,
Um modelo entidade-relacionamento foi reestruturado conforme mostrado na gura acima. Concluiu-se que todos os usuários eram funcionários, embora nem todos os funcionários fossem usuários. O modelo relacional derivado desse modelo conceitual possuía originalmente duas variáveis de relação básicas, com os mesmos nomes das entidades correspondentes, tendo ambas EMAIL como chave primária. Considerando que a variável de relação FUNCIONARIO não será modi cada e que a independência de dados lógica será honrada, a variável de relação USUARIO (a). terá que manter todos os seus atributos originais. (b). dispensará o uso de chaves candidatas. (c). será substituída por uma variável de relação básica e uma derivada. (d). será substituída por uma variável de relação básica, apenas. (e). será substituída por uma variável de relação derivada, apenas.
Solução: O modelo entidade-relacionamento é um padrão para modelagem conceitual de banco de dados. Na gura da questão, os objetos representados por retângulos são conjuntos de entidades e os objetos representados por elipses são atributos.
Página 11 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
Uma entidade é um objeto que pode ser identi cado de forma unívoca a todos os outros objetos. A entidade pode representar tanto algo concreto, como uma pessoa, ou algo abstrato, como um empréstimo, por exemplo.
Um conjunto de entidades reúne todas as
entidades de um mesmo tipo, ou seja, que possuem as mesmas propriedades: atributos. Os atributos são propriedades que descrevem cada entidade de um conjunto de entidades. Dizemos ainda que cada entidade pode ter seu próprio valor para cada atributo. Exemplo: uma determinada entidade que representa uma pessoa pode ter o valor João Assis para o atributo nome e o número
2367727
para o atributo número de inscrição.
O modelo entidade-relacionamento pode descrever diversos outros objetos importantes para a modelagem de banco de dados, como os conjuntos de relacionamentos, os atributos multivalorados e a participação de entidades em um conjunto de relacionamentos. Há, ainda, os conceitos de generalização e especialização. Generalização é o resultado da união de dois ou mais conjuntos de entidades, produzindo um conjunto de entidades de nível mais alto. Por outro lado, especialização é o resultado da separação de um subconjunto de entidades, formando conjuntos de entidades de nível mais baixo. A generalização é usada para enfatizar as semelhanças entre entidades de nível mais baixo e ocultar suas diferenças. A especialização é o inverso: ela enfatiza as diferenças entre as entidades. Veri ca-se que, no primeiro modelo, existem duas entidades independentes com seus respectivos atributos. A transformação realizada para se chegar ao segundo modelo conceitual nada mais é do que um processo de generalização. Já o modelo relacional ao qual a questão se refere é uma maneira de representar o banco de dados logicamente, e não conceitualmente. No modelo relacional, os dados são representados como relações matemáticas, isto é, como um subconjunto do produto cartesiano de n conjuntos. Na etapa de transformação do modelo conceitual para o modelo lógico, será permitido ao projetista criar um modelo consistente da informação a ser armazenada por meio do processo de normalização, por exemplo. No modelo relacional, uma variável relacional, também conhecida como relvar , é uma variável que representa uma relação. Para tornarmos a explicação bem simples, podemos dizer que uma variável relacional básica representa uma tabela no SQL e uma variável relacional derivada representa uma visão ou o resultado de uma consulta. O modelo relacional derivado do primeiro modelo entidade-relacionamento pode ser descrito da seguinte maneira: Funcionario(email, nome) Usuario(email, nome, login) Segundo o enunciado, após a generalização, a variável de relação Funcionario será mantida sem modi cações. Já, para a variável de relação Usuario, criaremos uma nova variável de relação básica da seguinte forma: UsuarioTabela(email, login)
Página 12 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
Isso pode ser feito, já que, na generalização, foi criado um relacionamento de muitos-paraum com a variável de relação Funcionario.
Sendo assim, o campo e-mail será su ciente
para representar o usuário na variável de relação Funcionario. Note que, dessa maneira, a independência lógica ainda não está honrada, já que a variável de relação UsuarioTabela não possui a informação do atributo nome. Para garantirmos a independência lógica, precisamos criar uma variável relacional derivada que chamaremos de UsuarioVisao ou simplesmente Usuario. No SQL, essa variável de relação representará uma junção das tabelas geradas pelas variáveis de relação básica Funcionario e UsuarioTabela e representará todos os usuários, mas, dessa vez, com o atributo nome advindo da tabela que representa o conjunto de funcionários. Dada as explicações imediatamente acima, a resposta correta é a alternativa C.
Página 13 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
5.
Assuntos relacionados:
Volume 02 Edição 2
Banco de Dados, Normalização de Banco de Dados, Primeira
Forma Normal (1FN), Segunda Forma Normal (2FN), Terceira Forma Normal (3FN),
Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 25 As informações a seguir são comuns às questões de número 5 ao 8
Considere as tabelas de um banco de dados relacional descritas abaixo, onde os campos que compõem chaves primárias estão assinalados com *. TABELA
CAMPOS
CLIENTE
*CODIGO_C, CPF, NOME, CIDADE
PRODUTO
*CODIGO_P, DESCRICAO, PRECO
VENDA
*CODIGO_C, *CODIGO_P, CPF, DATA, QUANTIDADE
Há uma chave estrangeira de VENDA para CLIENTE com base nos campos CODIGO_C e de VENDA para PRODUTO com base nos campos CODIGO_P. O campo CPF é chave candidata para CLIENTE e também é armazenado na tabela VENDA. Os campos NOME e DESCRICAO também são chaves candidatas de suas respectivas tabelas.
Os campos
CIDADE, PRECO, DATA e QUANTIDADE admitem valores repetidos. Sobre as formas normais a que as tabelas satisfazem, assinale a a rmativa correta. (a). CLIENTE satisfaz à segunda forma normal (2FN), mas não à terceira (3FN). (b). PRODUTO satisfaz à segunda forma normal (2FN), mas não à terceira (3FN). (c). VENDA satisfaz à segunda forma normal (2FN), mas não à terceira (3FN). (d). VENDA não satisfaz à segunda forma normal (2FN). (e). As três tabelas satisfazem à terceira forma normal (3FN).
Solução: Primeiramente, vamos de nir o que é dependência funcional. Dizemos que B é funcionalmente dependente de A (A
→ B) se, para cada valor de A, existe exatamente um atributo B. ← estado, uma cidade A implicará em exatamente um estado
Um exemplo prático é cidade
B correspondente. No caso, A é o determinante e B é o dependente. A dependência funcional trivial indica que um determinante com mais de um atributo pode determinar seus próprios membros quando isolado.
Exemplo: {banco, agencia}
→
{agencia}. A dependência funcional não-trivial indica que um determinante identi ca outro atributo qualquer {banco, agencia}
→
{cidade}.
Se um atributo A determina B e se B determina C, podemos dizer que A determina C de forma transitiva. Isto é, existe uma dependência funcional transitiva de A para C. Exemplo: cidade
→
estado, estado
→
pais, então cidade
→
pais.
Uma chave candidata é um atributo ou conjunto de atributos que é único dentre todos os registros. Já a chave primária é uma chave escolhida entre as chaves candidatas para ser o identi cador principal da tabela.
Página 14 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
Outra de nição importante é a do atributo não-primo, que é um atributo que não ocorre em nenhuma das chaves candidatas da tabela. Sabemos que uma tabela está na segunda forma normal se ela está na primeira forma normal e não existe atributo não-primo na tabela que seja funcionalmente dependente de algum subconjunto próprio de qualquer chave candidata. Melhor dizendo: todas as colunas que não fazem parte de nenhuma chave candidata dependem de todas as colunas que compõem qualquer chave candidata. Quando só há uma chave candidata (no caso a primeira) e ela é composta por somente um atributo, automaticamente a tabela estará na segunda forma normal se já tiver atendido às condições da primeira forma normal. Sendo assim, já podemos notar que a tabela CLIENTE e a tabela PRODUTO estão na segunda forma normal garantidamente. Já ao analisarmos a tabela VENDA poderíamos nos enganar ao acharmos que pelo fato de CPF ser dependente funcionalmente de CODIGO_C, estaríamos violando a condição exigida da segunda forma normal, já que CODIGO_C é um subconjunto próprio da chave primária. Essa conclusão seria verdadeira se não fosse pelo fato de {CPF,CODIGO_P} ser uma chave candidata, tornando o atributo CPF primo, ou seja não não-primo. Concluímos, assim, que a tabela VENDA está na segunda forma normal. Uma tabela está na terceira forma normal se qualquer atributo não-primo é não transitivamente dependente de qualquer chave candidata da tabela.
Ao analisarmos a tabela
CLIENTE, notamos que o atributo CIDADE é o único não-primo, sendo impossível, dessa maneira, haver dependência funcional em que uma chave candidata não seja o atributo determinante. Ou seja, todas as dependências funcionais são diretas a partir de qualquer chave candidata e a tabela CLIENTE está na terceira forma normal. O único atributo não-primo da tabela PRODUTO é PRECO. Portanto, seguindo o mesmo raciocínio anterior, concluímos que PRODUTO está na terceira forma normal. A tabela VENDA tem 2 atributos não-primo:
DATA e QUANTIDADE. Como não há
dependência funcional entre eles, essa tabela também está na terceira forma normal. Logo, concluímos que todas as tabelas satisfazem à terceira forma normal e a alternativa a ser marcada é a alternativa E. Se continuássemos a analisar quais formas normais são atendidas pelas tabelas da questão, chegaríamos à conclusão de que as tabelas CLIENTE e PRODUTO satisfazem à forma normal de Boyce Codd (FNBC), ao contrário da tabela VENDA, que não satisfaz.
Uma
tabela que não satisfaz a forma normal de Boyce Codd (FNBC) pode ser identi cada com as seguintes características:
•
encontramos duas ou mais chaves candidatas ({CODIGO_C, CODIGO_P} e {CPF, CODIGO_P}, no caso da tabela VENDA);
•
as chaves candidatas apresentam mais de um atributo (são compostas);
•
todas as chaves candidatas têm um atributo em comum (CODIGO_P, no caso das chaves candidatas da tabela VENDA).
Página 15 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
6.
Volume 02 Edição 2
Assuntos relacionados: Banco de Dados, SQL, Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 26 Considere o comando em SQL apresentado a seguir.
SELECT C.CIDADE, AVG(P.PRECO) FROM CLIENTE C, PRODUTO P, VENDA V WHERE C.CODIGO_C = V.CODIGO_C AND P.CODIGO_P = V.CODIGO_P AND P.PRECO > 100 GROUP BY C.CIDADE HAVING AVG(P.PRECO) < 200 O que exibe esse comando? (a). Para cada cidade, a média de preço de produtos vendidos a clientes da cidade com valores acima de 100, se a média for menor que 200. (b). Para cada cidade, a média de preço dos produtos vendidos a clientes da cidade com valores entre 100 e 200. (c). Para cada cidade, a quantidade de produtos vendidos com valores entre 100 e 200. (d). Para cada cidade, a média de preço dos produtos vendidos a clientes da cidade que compraram produtos de valores maiores do que 100 e cuja média de compra é menor do que 200. (e). Apenas a cidade cuja média de preço dos produtos vendidos é a mais alta dentre as que tiveram média menor do que 200 e produtos vendidos com valores acima de 100.
Solução: A primeira cláusula WHERE
(C.CODIGO_C = V.CODIGO_C)
irá implementar uma
junção entre as tabelas CLIENTE e VENDA. Essa junção, caso fosse considerada sozinha, iria listar registros em que cada um iria representar uma venda de produto, mas com informações adicionais do cliente: NOME e CIDADE. Adicionando mais uma cláusula de junção
(P.CODIGO_P = V.CODIGO_P ),
será re-
alizada uma junção com a relação já obtida anteriormente. Nesse caso, todos os produtos vendidos serão listados com suas respectivas informações de descrição, preço, data de quando foi realizada a venda e as informações completas do cliente. Entretanto, ao se usar a cláusula
P.P RECO > 100,
nem todos os produtos vendidos serão
listados. Serão listados somente aqueles cujo valor preço unitário for superior a 100. A cláusula GROUP BY reunirá informações, de
C.CIDADE irá agrupar as vendas dos produtos por cidade e acordo com AV G(P.P RECO), do preço médio unitário de cada
produto, dentro, é claro, dos produtos que já possuem valor unitário maior do que 100. Exempli cando: caso os clientes de uma determinada cidade X tenham comprado exatamente 6 produtos com os preços 1000, 500, 120, 120, 100 e 50, somente serão considerados os produtos com valor maior do que 100, que são os de 1000, 500, 120 e 120. A média unitária
Página 16 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
desses produtos é
Volume 02 Edição 2
(1000 + 500 + 120 + 120)/4 = 435.
Já a última cláusula HAVING
AV G(P.P RECO) < 200 irá permitir que somente as cidades
cujo preço médio dos produtos adquiridos seja menor que 200. A cidade X anteriormente citada não irá entrar na relação nal, já que a média dos preços unitários de seus produtos adquiridos é maior do que 200 (435). Podemos concluir que a alternativa correta é a letra A. A letra D pode confundir um pouco, mas ela está errada, pois o que está sendo considerado é a média do preço do produto HAVING
AV G(P.P RECO) < 200
e não a média de compra.
Página 17 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
7.
Volume 02 Edição 2
Assuntos relacionados: Banco de Dados, Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 27 Há 3 cidades com 5 clientes cada, 2 cidades com 4 clientes cada e 10 produtos cadastrados no banco de dados. Se um cliente não compra o mesmo produto duas vezes no mesmo dia e nem em dois dias seguidos, a quantidade máxima de registros na tabela VENDA, para clientes de uma determinada cidade, em um intervalo qualquer de 30 dias, será (a). 300 (b). 750 (c). 1500 (d). 3000 (e). 4500
Solução: Note que um cliente não poderá comprar o mesmo produto por mais de 15 vezes em um intervalo de 30 dias, já que o intervalo mínimo entre as compras de um mesmo produto será de 2 dias. No caso máximo, qualquer cliente poderá realizar a compra de todos os 10 produtos, mas não poderá comprar um mesmo produto por mais de 15 vezes dentro do intervalo de 30 dias. Ou seja, um cliente poderá representar, no máximo, 150
(15x10) registros na tabela VENDA.
As cidades que possuem mais clientes, possuem cinco clientes. cidades poderão conter 750
(5x15x10)
Logo, no máximo, essas
registros na tabela VENDA. Concluímos que a re-
sposta correta é a alternativa B. A cidade que possui quatro clientes, poderá, no máximo, ser associada a 600 registros da tabela VENDA. Podemos também calcular a quantidade máxima de registros na tabela VENDA da seguinte maneira:
3x5x15x10 + 2x4x15x10 = 3450.
Tal cálculo seria interes-
sante se quiséssemos, por exemplo, dimensionar o tamanho máximo do banco de dados.
Página 18 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
8.
Assuntos relacionados:
Volume 02 Edição 2
Banco de Dados, Modelo Multidimensional, Data Mart, Data
Warehouse,
Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas Ano: 2008 Questão: 28
- Eng. de Software
Um datamart será montado para análise das vendas. Consultas serão feitas com base em produtos, períodos, cidades e clientes. Assinale a a rmação correta sobre o modelo multidimensional a ser gerado. (a). É conveniente criar uma tabela para a dimensão DATA, para evitar cálculos com datas nas consultas SQL e facilitar as consultas por intervalos semanais, mensais, anuais, e similares. (b). Nenhum atributo da tabela PRODUTO, além da chave primária, deverá constar da tabela fato. (c). Pelas especi cações, CIDADE deve ser, necessariamente, uma dimensão do modelo. (d). O modelo estará necessariamente no formato oco de neve (snow ake). (e). QUANTIDADE é um fato não aditivo.
Solução: Um datamart pode ser conceituado como um subconjunto dos dados de uma organização que são direcionados a propósitos bem especí cos ou a pequenos grupos de pessoas que os utilizam como auxílio em tomadas de decisão. Os datamarts podem ser entendidos como subconjuntos de um data warehouse.
Hoje é
comum que as empresas comecem a construir o seu data warehouse a partir de datamarts focados em áreas bem especí cas e, assim, irem expandindo até formarem o seu data warehouse. É preciso car claro que as diferenças entre datamart e data warehouse são apenas com relação ao tamanho e ao escopo do problema a ser resolvido. Portanto, as de nições dos problemas e os requisitos de dados são essencialmente os mesmos para ambos. Enquanto um datamart trata de um problema departamental ou local, um data warehouse envolve o esforço de toda a empresa para que o suporte a decisões atue em todos os níveis da organização. Sabendo-se as diferenças entre escopo e tamanho, o desenvolvimento de um data warehouse requer tempo, dados e investimentos gerenciais muito maiores que de um datamart. Vamos apresentar, agora, alguns conceitos importantes em relação a data warehouse. De nimos
fato como uma coleção de itens de dados composta de medidas. Esse valor numérico é medida. Por exemplo, caso se deseje analisar se as vendas em um determi-
denominado de
nado estado estão caindo, podemos de nir um fato representando as vendas totais realizadas nas cidades de um determinado estado e analisar o resultado de suas medidas ao longo do tempo. Os fatos podem ser aditivos, semi-aditivos e não-aditivos.
Um fato é aditivo quando ele
pode ser agregado em todas as dimensões. Por exemplo, VENDAS pode ser agregado em
Página 19 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
qualquer combinação das dimensões DATA, PRODUTO e CIDADE. Um fato é semi-aditivo quando ele não pode ser agregado em pelo menos uma dimensão. Por exemplo, o número de empregados é aditivo nos diferentes departamentos da empresa, mas não o é na dimensão DATA. Um fato é não-aditivo quando não pode ser agregado em nenhuma dimensão. Uma
dimensão
é uma coleção de atributos textuais que descrevem os objetos da orga-
nização, e que estão altamente relacionados uns com os outros. Os atributos dimensionais são a fonte para as restrições mais interessantes nas consultas a um DW e são virtualmente a fonte para os cabeçalhos de colunas do conjunto de respostas em SQL. Por exemplo, podemos adotar CIDADE como uma dimensão. Para isso, criaríamos uma tabela dimensão em que cada registro representa uma cidade e descreve outros detalhes da cidade através de seus atributos, como o estado ao qual ela pertence, por exemplo. Um dos esquemas mais utilizados para representar um data warehouse é o esquema estrela. Esse esquema é chamado de estrela por apresentar a tabela de fatos dominante no centro do esquema e as tabelas de dimensões nas extremidades.
O esquema estrela pode
ser estendido de maneira que cada uma das pontas da estrela passa a ser o centro de outras estrelas. Por exemplo, a dimensão CIDADE poderia ser decomposta de maneira que haja outra tabela representando os estados e outras informações relacionadas a ele. Essa decomposição seria basicamente um processo de normalização. Vamos, agora, analisar as alternativas. A alternativa (A) está correta.
Ao criarmos uma tabela dimensão DATA, podemos criar
um fato que represente a soma das vendas em cada um dos dias ou em cada uma das semanas, meses ou anos. Como os valores da tabela já estão calculados, uma consulta que precise saber a quantidade de vendas em um determinado período de tempo terá um custo muito menor. A alternativa (B) está incorreta, pois no dimensionamento de um data warehouse, somos livres para de nir nossos fatos. No caso especí co, um fato que só tivesse a chave primária da tabela PRODUTO não teria interesse nenhum para os negócios, pois, em geral, os fatos devem estar associados a valores que tenham representatividade, como a quantidade vendida de um determinado produto, por exemplo. O mesmo argumento dado anteriormente serve para as alternativas (C) e (D). Há algumas modelagens que são mais interessantes que outras, dependendo do objetivo que se deseja alcançar, mas não há nenhuma restrição como as indicadas nas alternativas (C) e (D) para a determinação de um modelo de data warehouse. A alternativa (E) está errada, pois QUANTIDADE nem é um fato.
Página 20 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
9.
Volume 02 Edição 2
Assuntos relacionados: RSS, ATOM, Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 29 Os formatos de distribuição de informações e notícias (newsfeeds) RSS e ATOM foram disseminados pelos blogs e têm sido utilizados nos mais variados tipos de sites como alternativa a outras modalidades de distribuição de notícias. Sobre este tema, é correto a rmar que (a). ao assinar um newsfeed, o usuário passa a receber emails periódicos com as notícias fornecidas pelo mesmo. (b). ao contrário do ATOM, o RSS é um padrão do IETF (Internet Engineering Task Force). (c). os newsfeeds em ATOM são estruturados em formato XHTML. (d). os newsfeeds em RSS são estruturados em formato HTML. (e). o recurso de autodescoberta para ambos os formatos pode ser implementado através de tags link na seção header da página do site que os oferece.
Solução: (A) ERRADA As informações publicadas via RSS e ATOM podem ser acessadas basicamente via leitores de feeds, também conhecidos como agregadores. Os agregadores são programas que permitem a visualização de vários feeds em um único local, organizados como o usuário preferir. Existem agregadores para Linux, Windows e Mac OS, agregadores em páginas de Internet, assim como agregadores nos próprios browsers.
Exemplos típicos de programas leitores de RSS
são Google Reader, RSS Reader e Bloglines. No linguajar das tecnologias RSS e ATOM, os os usuários assinam um feed de um determinado site e a partir daí o agregador começa a receber as informações distribuídas pelo site. Mais precisamente, é o agregador que se encarrega de veri car periodicamente se existe alguma nova informação disponível nas fontes. Perceba, portanto, que ao assinar um newsfeed o usuário não passa a receber emails com as notícias, como sugere este alternativa. Ou seja, esta não é a resposta para esta questão. (B) ERRADA O ATOM (que não é uma sigla) foi criado por um conjunto de desenvolvedores independentes, mas atualmente o projeto recebe apoio de grandes corporações da Internet. Para saber mais sobre o ATOM e suas características, o candidato pode visitar o site o cial do projeto em http://www.atomenabled.org.
O RSS foi criado pela Netscape, mas
atualmente sua especi cação é mantida pelo RSS Advisory Board, cujo site o cial é o http://www.rssboard.org.
Como o RSS não é um padrão IETF, concluímos que esta al-
ternativa está errada. (C) e (D) ERRADAS Tanto o RSS quanto o ATOM são estruturados em XML, e não em XHTML e HTML como apresentam as alternativas.
Página 21 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
(E) CORRETA O recurso de autodescoberta é uma forma automática de noti car os aplicativos (browser, leitores, agregadores etc) que um determinado site possui feeds.
Um exemplo típico da
implementação do recurso de autodescoberta de feeds é mostrado a seguir.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="en"> <head> <link rel="alternate" type="application/atom+xml" title="Main Atom" href="/xml/index.atom"> <link rel="alternate" type="application/atom+xml" title="Recent comments" href="/xml/comments.atom"> </head> <body> ... </body> </html>
Página 22 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
10.
Volume 02 Edição 2
Assuntos relacionados: Segurança da Informação, PKI, Certi cado Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 30
Digital, HTTPS,
Durante o projeto de uma aplicação Internet, veri cou-se a necessidade de a mesma proporcionar conexões seguras entre o browser dos clientes e o servidor de aplicações, utilizando HTTPS. Durante uma reunião entre os diversos membros da equipe do projeto, foram feitas as a rmativas a seguir. I - Será preciso dotar o servidor de aplicação de um certi cado digital. II - Será preciso obter uma autorização de funcionamento (FA) de uma autoridade certi cadora (CA). III - Se um cliente não possuir uma identidade digital, tal como um e-CPF ou e-CNPJ, somente serão criptografados os dados enviados do cliente para o servidor; nesta situação, o servidor não deve exibir dados sigilosos para o cliente, pelo fato de os mesmos estarem sujeitos à interceptação; esta é a principal razão pela qual alguns serviços na Internet só são disponibilizados para clientes que possuem identidade digital. IV - Um mesmo endereço de Internet poderá ser usado para conexões HTTP e HTTPS, desde que sejam utilizadas portas diferentes para cada um. Estão corretas APENAS as a rmativas (a). I e II (b). I e III (c). I e IV (d). II e III (e). III e IV
Solução: O HTTPS (HyperText Transfer Protocol Secure) é uma implementação do protocolo HTTP sobre uma camada adicional SSL (Security Sockets Layer) ou TLS (Transport Layer Security), cujo objetivo é permitir que os dados sejam transmitidos através de uma conexão criptografada e que se veri que a autenticidade das partes comunicantes por meio de certi cados digitais. Portanto, a alternativa I é correta, pois o uso de certi cados digitais é parte da implementação do HTTPS. Um exemplo típico da utilização de HTTPS são as páginas de login dos webmails, nas quais o objetivo principal é proteger os dados de autenticação (login e senha) dos usuários, que serão todos transmitidos de forma criptografada. Nesse caso, o HTTPS também garante a autenticidade do servidor que, no processo de estabelecimento da comunicação, apresenta ao cliente um certi cado digital que atesta sua identidade. Repare que no exemplo dado, um usuário A pode se passar por um usuário B, bastando para isso que A conheça a senha de B. Ou seja, não há autenticação por parte do cliente. Na verdade, a maioria das aplicações que utilizam HTTPS, como webmails (Gmail, Hotmail, Yahoo etc) e comércio eletrônico (Submarino, Amazon, Ebay etc), ainda não se preocupam com a autenticação dos clientes. No entanto, a autenticação dos clientes vem se tornando
Página 23 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
mais comum, principalmente em aplicações governamentais e em sites de bancos. O e-CPF, por exemplo, pode ser utilizado para garantir a identidade do contribuinte nas relações com a Receita Federal através da Internet. Alguns bancos também têm passado a usar autenticação de múltiplos fatores, por meio do uso de tokens OTP e de certi cados digitais. É importante ressaltar que, mesmo que apenas uma das partes (servidor ou cliente) se autentique, a comunicação será criptografada tanto no sentido cliente/servidor quanto no sentido servidor/cliente, já que toda a comunicação acontece pela mesma conexão TCP. Portanto, a alternativa III é incorreta. As portas às quais se refere a a rmativa IV são as portas utilizadas na camada de transporte pelo TCP para oferecer os serviços às aplicações das camadas superiores. Para cada programa da camada de aplicação que deseja se comunicar usando o TCP, é necessário alocar ao menos um socket, que pode ser de nido como um endpoint para comunicação, sendo unicamente identi cado pela combinação (Endereço IP, Porta TCP). Uma conexão TCP, portanto, é formada por um par de sockets. Para ter conexões HTTP e e HTTPS acessíveis por um mesmo IP, é necessário que esses serviços utilizem portas TCP diferentes. Comumente, os serviços HTTP e HTTPS utilizam as portas 80 e 443, respectivamente. Portanto, a alternativa IV é correta. A a rmativa II trata da estruturação de uma PKI (Public Key Infrastructure), que pode ser de nida como um conjunto de hardware, software, pessoas, políticas e procedimentos para criar, gerenciar, armazenar, distribuir e revogar certi cados digitais. No Brasil, esse papel é desempenhado pelo ICP Brasil (Infraestrutura de Chaves Públicas Brasileiras). Em uma PKI, dois dos elementos mais importantes são as Autoridades Certi cadoras (ACs) e as Autoridades de Registro (ARs), cujas de nições no glossário do ICP Brasil são:
• Autoridade Certi cadora:
é a entidade, subordinada à hierarquia da ICP Brasil, re-
sponsável por emitir, distribuir, renovar, revoga e gerenciar certi cados digitais. Cabe também à AC emitir listas de certi cados revogados (LCR) e manter registros de suas operações sempre obedecendo as práticas de nidas na Declaração de Práticas de Certi cação (DPC). Desempenha como função essencial a responsabilidade de veri car se o titular do certi cado possui a chave privada que corresponde à chave pública que faz parte do certi cado. Cria e assina digitalmente o certi cado do assinante, onde o certi cado emitido pela AC representa a declaração da identidade do titular, que possui um par único de chaves (pública/privada). Na hierarquia dos Serviços de Certi cação Pública, as AC estão subordinadas à Autoridade Certi cadora de nível hierarquicamente superior;
• Autoridade de Registro:
entidade responsável pela interface entre o usuário e a
Autoridade Certi cadora. Vinculada a uma AC que tem por objetivo o recebimento, validação, encaminhamento de solicitações de emissão ou revogação de certi cados digitais às ACs e identi cação, de forma presencial, de seus solicitantes. É responsabilidade da AR manter registros de suas operações. Pode estar sicamente localizada em uma AC ou ser uma entidade de registro remota. Outros elementos e termos importantes no contexto de infraestruturas de chaves públicas podem ser pesquisados no glossário do ICP Brasil, disponível no endereço https://www.icpbrasil.gov.br/duvidas/glossary. Como em várias questões de concurso, o exigido do candidato nesse caso é o conhecimento
Página 24 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
da terminologia básica. Ao menos no glossário do ICP Brasil, não existe nenhuma referência as tais FAs (autorização de funcionamento), presente na a rmativa II. Portanto, pode-se considerar a alternativa II errada.
Página 25 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
11.
Assuntos relacionados: XML, Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. Ano: 2008 Questão: 31
Volume 02 Edição 2
de Software
Um tag XML válido do ponto de vista sintático é (a). <nome do cliente>Carlos da Silva</nome do cliente> (b). <_endereco tipo= residencial >Rua das Flores, 1234</_endereco> (c). <telefone numero=12345678 /> (d). <*preferencial* /> (e). <pro ss&atilde;o>Professor</pro ss&atilde;o>
Solução: XML é o acrônimo para Extensible Markup Language. Assim como o HTML (HyperText Markup Language), o XML é derivado do padrão ISO 8879, mais conhecido como SGML (Standard Generalized Markup Language). A grande diferença entre HTML e XML é que o HTML de ne a apresentação dos dados, enquanto o XML de ne a estruturação dos dados e o que eles representam. Em outras palavras, o XML é utilizado para descrever o conteúdo do documento. Assim como o HTML, o XML faz uso de tags (palavras encapsuladas por sinais '<' e '>') e atributos (de nidos com name= value ). No HTML, as tags e atributos especi cam têm funções de nidas. A tag <b>, por exemplo, indica que texto deverá ser exibido em negrito, enquanto a tag <i> indica que o texto deve ser exibido em itálico.
Já no XML, as tags
são utilizadas apenas para delimitar os trechos de dados. Ou seja, uma tag <p>, que no HTML indicaria um parágrafo, no XML pode indicar um preço, um parâmetro, uma pessoa ou qualquer outra informação. Outro ponto fundamental na diferença entre o HTML e o XML é que no HTML existe um conjunto nito de tags, enquanto no XML, o conjunto de tags utilizadas em um documento pode ser de nido pelo próprio usuário da linguagem, devendo as tags obedecerem um conjunto de regras de nomenclatura. Na especi cação formal do XML, as regras de nomenclatura são de nidas em termos utilizando a notação EBNF (Extended Backus-Naur Form). A seção 2.3 da especi cação do XML, disponível em http://www.w3.org/TR/2006/REC-xml11-20060816/, apresenta em detalhe as regras de sintaxe. Algumas das regras mais importantes são as seguintes:
•
os nomes dos elementos podem conter letras, números e outros caracteres;
•
os nomes dos elementos não podem começar com números ou caracteres de pontuação;
•
os nomes dos elementos não podem começar com as sequências xml, XML, Xml e outras análogas;
•
os nomes dos elementos não podem conter espaços.
Pelo o exposto, a alternativa (A) é inválida, pois o nome do elemento possui espaços.
A
alternativa (C) também apresenta uma sintaxe inválida, pois o valor do atributo numero não foi colocado entre aspas, que são necessárias nesse caso.
Página 26 de 114
www.handbookdeti.com.br
A alternativa (D), por sua
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
vez, é incorreta, pois começa com o caractere *, considerado inválido em qualquer posição em nome de tag. A alternativa (E) também é inválida, pois o nome do elemento está no formato HTML encoded. O nome deveria ser simplesmente <pro ssão>, sem a necessidade de substituir o ã pela sequência &atilde.
A única alternativa correta é, portanto, a letra
(B).
Página 27 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
12.
Volume 02 Edição 2
Assuntos relacionados: XML, CSS, HTTP, Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 32 Analise as a rmativas a seguir, sobre CSS (Cascading Style Sheets). I Uma folha de estilo CSS é um documento XML, em conformidade com o esquema XML xsd:css mantido pelo consórcio W3C, o que constitui uma barreira inicial de adoção para organizações onde o layout e a programação visual dos sites e portais são mantidas por pro ssionais de criação ao invés de desenvolvedores. II O uso de folhas de estilo CSS externas, em alternativa à marcação com atributos nos tags HTML e XHTML, proporciona uma redução signi cativa da exigência de banda, melhorando a experiência do usuário e demandando menos recursos dos servidores do site. III É possível especi car folhas de estilos diferentes para diferentes mídias em que a página será utilizada, o que permite, por exemplo, que uma mesma página se apresente de forma diferente quando visualizada no browser e impressa. IV O termo Cascading , que, em Português, pode ser traduzido como Em Cascata , re ete o fato de que, durante a aplicação de estilos a um documento, os tags que satisfazem a mais de um seletor receberão apenas os atributos de estilo do seletor especi cado por último, ignorando todos os atributos de seletores anteriores. Estão corretas APENAS as a rmativas (a). I e II (b). I e III (c). II e III (d). II e IV (e). III e IV
Solução: O CSS é uma linguagem utilizada para descrever a apresentação (aparência e formatação) de um documento escrito em linguagens de marcação. O CSS é comumente utilizado para estilizar páginas Web escritas em HTML, mas ele pode ser utilizado para formatar qualquer tipo de documento XML. O CSS foi primariamente desenvolvido para permitir a separação entre o conteúdo e elementos de apresentação de um documento, como cores, fontes e layouts. Essa separação permite, por exemplo:
•
aumentar a acessibilidade do conteúdo, a medida que permite a elaboração de documentos de melhor apresentação;
•
prover maior exibilidade e controle na especi cação dos características da apresentação do conteúdo;
•
reduzir a complexidade e a repetição do conteúdo estrutural da página, permitindo o chamado tableless web design ;
•
reutilizar o código de apresentação, uma vez que vários documentos podem compartilhar as de nições feitas em um único CSS.
Página 28 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
Em resumo, pode-se dizer que, ao separar o conteúdo da apresentação, o CSS simpli ca a editoração e a manutenção de sites Web.
Notoriamente, essa separação também permite
que a apresentação do site seja de nida por designers (pro ssionais de criação), que podem trabalhar em paralelo aos desenvolvedores. Desprende-se disso que a a rmativa I é incorreta. O CSS permite também que um mesmo documento seja apresentado em diferentes estilos de acordo com o método de renderização utilizado. Nesse contexto, o método de renderização é basicamente de nido de acordo com o dispositivo em que o documento será apresentado, que pode ser uma tela de computador (on-screen ), em uma impressora (in-print ) e até mesmo em um dispositivo Braille. Essa exibilidade do CSS tem ganhado enorme importância a medida que os dispositivos como hand-helds e celulares tem sido cada vez mais utilizados para acesso a Internet. Portanto, a alternativa III está correta. A utilização de arquivos CSS também pode contribuir para à economia de banda, a medida que os arquivos CSS podem ser armazenados no cache dos browsers. Ao serem armazenados em cache, a quantidade de requisições HTTP necessárias nas próximas vezes em que o site for acessado será menor. Em alguns casos, pode-se utilizar também o código CSS inline , ou seja, dentro da própria página HTML, de modo que não seja necessária uma requisição HTTP adicional para obter um arquivo CSS externo. Essa técnica é especialmente para diminuir o tempo de resposta de páginas que são acessadas uma vez (ou muito poucas vezes) dentro de uma sessão.
Exemplos típicos de páginas com essa característica são as
páginas iniciais de sites como Yahoo! e Google. Com isso, a alternativa II está correta. O endereço http://developer.yahoo.com/performance/rules.html apresenta essas e mais algumas dicas para aumentar o desempenho de aplicações web. A alternativa IV refere-se ao efeito cascata do CSS, que pode ser de nido como um conjunto de regras de prioridade para aplicação da regra de estilo aos elementos do documento. Para determinar a prioridade são considerados diversos fatores, como o tipo de folha de estilo, o local físico da folha de estilo no seu todo, o local físico da regra de estilo na folha de estilo e a especi cidade da regra de estilo. A ordem crescente de prioridade para o efeito cascata é: 1 folha de estilo padrão do navegador do usuário; 2 folha de estilo do usuário; 3 folha de estilo do desenvolvedor: 3.1 estilo externo (importado ou linkado); 3.2 estilo incorporado (de nido na seção head do documento); 3.3 estilo inline (dentro de um elemento HTML). 4 declarações do desenvolvedor com !important; 5 declarações do usuário com !important. Assim, uma declaração de estilo com !important de nido pelo usuário prevalece sobre todas as demais, pois é a de mais alta prioridade. Entre as folhas de estilo de nidas pelo desenvolvedor do site, os estilos inline (dentro de um elemento HTML) tem a prioridade mais elevada, isto é, prevalecerá sobre a folha de estilo de nida na seção head, e, esta prevalecerá sobre uma folha de estilo externa. Portanto, a alternativa IV é errada pois de ne de forma errada as regras de priorização do CSS.
Página 29 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
13.
Assuntos relacionados:
Volume 02 Edição 2
Gerência de Projeto, Gerência de Tempo, Desenvolvimento de
Cronograma,
Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas Ano: 2008 Questão: 33
- Eng. de Software
Ao apresentar o cronograma de um projeto à diretoria da empresa, o gerente foi informado de que a data de término do projeto deverá ser antecipada em 3 meses.
Esta exigência
implicará, necessariamente, em (a). refazer as estimativas de esforço para uma ou mais tarefas do projeto. (b). reduzir a duração do caminho crítico do projeto. (c). alocar mais recursos ao projeto. (d). fazer entregas diferentes das especi cadas. (e). aumentar o custo do projeto.
Solução: (A) ERRADA A antecipação da data nal do projeto consiste, normalmente, em alterar a duração de atividades que pertencem ao caminho crítico. O caminho crítico, geralmente, é a sequência de atividades do cronograma que determina a duração do projeto, isto é, o caminho mais longo do projeto. Dependendo da técnica de compreensão de cronograma utilizada, há a necessidade de refazer as estimativas de esforço das atividades relacionadas ao caminho crítico, mas não é uma implicação necessária para reduzir o prazo de um projeto. (B) CORRETA Antecipar a data nal do projeto em 3 meses implica em alterar as estimativas de duração das atividades do caminho crítico, ou seja, reduzir a duração do caminho crítico. Isso é realizado utilizando as técnicas de compressão de cronograma que consistem em reduzir o prazo do projeto de nido inicialmente sem afetar o escopo para atender restrições de cronograma. As técnicas utilizadas são a compressão e o paralelismo. Na comprensão, as compensações entre custo e cronograma são analisadas para determinar o máximo de compressão para o menor custo incremental. Essa técnica pode produzir uma alternativa não viável devido ao aumento de custo. Na de paralelismo, as fases ou atividades que normalmente serão realizadas em sequenciamento são realizadas em paralelo. Tal técnica pode gerar retrabalho, devido a falta de informações mais detalhadas a respeito de uma atividade. (C) ERRADA Alocar mais recursos ao projeto não é implicação necessária para reduzir o prazo de um projeto. Dependendo da técnica de comprensão de cronograma utilizada, há a necessidade de alocar mais recursos para as atividades relacionadas ao caminho crítico do projeto, mas para isso tem que ser analisado o impacto nanceiro no projeto.
Página 30 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
(D) ERRADA Algumas vezes, ao se diminuir um cronograma, altera-se também o escopo do projeto. É certo que não será a gerência de tempo que fará a alteração do escopo. Será sim a gerência de escopo, informada da diminuição do cronograma pela gerência de integração. De qualquer forma, é importante perceber que uma alteração no cronograma não necessariamente gera alterações das entregas. (E) ERRADA Aumentar o custo de um projeto depende da aprovação das pessoas interessadas, os stakeholders, no projeto, e não é uma negociação fácil. Além de que, o aumento de um custo de um projeto não é uma implicação necessária para reduzir o prazo de um projeto, conforme já descrevemos anteriormente.
Página 31 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
14.
Assuntos relacionados: Gerência de Projeto, Gerência Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 34
Volume 02 Edição 2
de Escopo, EAP,
A Estrutura Analítica do Projeto - EAP (em Inglês Work Breakdown Structure WBS) inclui (a). estimativas de prazos. (b). estimativas de custos. (c). entregas internas e externas. (d). alocação dos recursos às tarefas. (e). estratégias para mitigação dos riscos.
Solução: A área de gerenciamento do escopo compreende os processos necessários para assegurar que o projeto inclua todo o trabalho necessário, e somente ele, para nalizar o projeto com sucesso. A gerência de escopo tem como principal preocupação de nir o que está ou não incluído no projeto. A Estrutura Analítica do Projeto (EAP), elaborada pelo processo Criar EAP, é uma das principais saídas da gerência de escopo. (A) ERRADA As estimativas de prazo são elaboradas pela área de gerenciamento de tempo com base na estimativa de recursos necessários, sequenciamento e duração das atividades. O processo responsável por realizar as estimativas de prazo é o Desenvolvimento do cronograma. Existem diversas ferramentas e técnicas para realizar o desenvolvimento do cronograma, como: análise de rede do cronograma, método do caminha crítico, compressão do cronograma, nivelamento de recursos, software de gerenciamento de projetos (MS Project, Primavera), etc. As estimativas de prazo são descritas no Plano de Gerenciamento do Cronograma e não na EAP. (B) ERRADA As estimativas de custo são elaboradas pela área de gerenciamento de custos baseado na estimativa dos recursos necessários para nalizar cada atividade do cronograma.
Os cus-
tos das atividades do cronograma são estimados para todos os recursos cujos custos serão lançados no projeto. As estimativas de custo podem ser geradas por meio de ferramentas e técnicas, como: estimativa análoga, modelagem paramétrica, estimativa bottom-up, software de gerenciamento de projetos, etc. As estimativas de custos estão descritas no Plano de Gerenciamento de Custos e não na EAP. (C) CORRETA Uma entrega é qualquer produto ou serviço gerado pelo projeto.
Segundo PMBOK, a
EAP é uma decomposição hierárquica orientada a entrega de trabalho a ser executado pela equipe de projeto, para atingir os objetivos do projeto e criar as entregas necessárias.
A
EAP subdivide o trabalho a ser realizado no projeto em partes menores, em que cada nível
Página 32 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
descendente representa uma de nição mais detalhada do trabalho do projeto. O nível mais baixo é conhecido como pacote de trabalho. É o ponto no qual o custo e o cronograma do trabalho podem ser estimados de forma con ável. En m, todo o trabalho a ser executado no projeto deve estar na EAP, e seus componentes auxiliam as partes interessadas (stakeholders) a visualizar as entregas (internas ou externas). (D) ERRADA A alocação dos recursos às tarefas de nidas na EAP é realiza pela área de gerenciamento de recursos humanos e compreende a alocação propriamente dita da equipe ao projeto. Os papéis e responsabilidades de nidos serão destinados a uma pessoa ou grupo de pessoas. As formas de alocação são: negociação, alocação prévia e contratação. A alocação de recursos é descrita no Plano de Gerenciamento de Pessoal e não na EAP. (E) ERRADA Estratégia de mitigação de riscos é realizada pela área de gerenciamento de riscos e compreende planejar as respostas aos riscos de forma a reduzir as ameaças, ou seja, determinar quais ações deverão ser tomadas para reduzir as ameaças aos objetivos do projeto. Várias alternativas podem ser adotadas, como:
• evitar:
mudar o plano do projeto para eliminar o risco;
• transferir: • mitigar:
passar a resposta ao risco para terceiros;
estabelecer estratégias antecipadas para evitar que eventos causadores do
risco aconteçam;
• aceitar:
não estabelece estratégias para lidar com os riscos.
As respostas aos riscos são incluídas no Registro de Riscos e não na EAP.
Página 33 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
15.
Assuntos relacionados:
Volume 02 Edição 2
Gerência de Projeto, Gerência de Custos, Gerenciamento de
Valor Agregado (GVA),
Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas Ano: 2008 Questão: 35
- Eng. de Software
São enumeradas a seguir algumas métricas colhidas para determinado intervalo de tempo ao longo da vida de um projeto. I - Custo orçado do trabalho previsto. II - Custo orçado do trabalho realizado. III - Custo real do trabalho previsto. IV - Custo real do trabalho realizado. A técnica de Gerenciamento de Valor Agregado GVA (em Inglês, Earned Value Manage-
ment EVM ) se baseia nas métricas (a). I e II, apenas. (b). I e III, apenas. (c). II e IV, apenas. (d). I, II e IV, apenas. (e). I, II, III e IV.
Solução: A GVA é uma metodologia de gerenciamento usada para integrar o escopo, o cronograma e os recursos de tal forma que se permita medir, objetivamente, o desempenho e o progresso do projeto. Com essa metodologia é possível prever o desempenho do projeto com base no desempenho passado. Para utilizar a GVA, é importante seguir alguns processos essenciais a qualquer projeto, como: de nição e elaboração do escopo do projeto, incluindo a Estrutura Analítica do Projeto (EAP); elaboração do cronograma a partir da EAP; estimativa de custo, partindo da alocação dos recursos às atividades do projeto; e monitoramento do projeto. Uma vez que esses processos tenham sido realizados, é possível realizar estimativas baseandose nos princípios básicos da GVA:
•
BCWS (Budgeted Cost for Work Scheduled ou Custo Orçado para Trabalho Planejado) é o montante nanceiro que o projeto, de acordo com o planejamento, deveria ter consumido até um dado ponto do cronograma. O BCWS é conhecido também como Valor Planejado (PV);
•
BCWP (Budgeted Cost for Work Performed ou Custo Orçado para Trabalho Realizado) re ete o valor do montante de trabalho que foi efetivamente realizado até uma data especí ca. O BCWP é conhecido também como Valor Agregado (VA);
•
ACWP (Actual Cost of Work Performed ou Custo Real do Trabalho Realizado) representa o custo efetivo do trabalho realizado até o momento. O ACWP é conhecido também como Custo Real (CR).
Página 34 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
Para medir o desempenho, o Custo Orçado do Trabalho Realizado é determinado e comparado ao Custo Real do Trabalho Realizado. O progresso é medido pela comparação entre o Valor Agregado e o Valor Planejado. Conforme explicado anteriormente, a GVA se baseia nas métricas de Custo Orçado do Trabalho Previsto, Custo Orçado do Trabalho Realizado e Custo Real do Trabalho Realizado. Logo, a alternativa correta é a letra
d.
Página 35 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
16.
Volume 02 Edição 2
Assuntos relacionados: Probabilidade e Estatística, Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 36 Um sistema legado utiliza uma senha alfanumérica de 4 posições, onde só são permitidos dígitos de 0 a 9 e caracteres alfabéticos maiúsculos de A a Z (incluindo as letras K, W e Y). Uma senha válida deve ter exatamente 4 caracteres, conter pelo menos um caracter alfabético, e não pode conter ou ser igual ao login do usuário. Assumindo que o sistema permite um número ilimitado de tentativas de acesso com senhas erradas, em quantas tentativas, no mínimo, é garantido que um software, capaz de gerar todas as senhas válidas para um determinado login e tentar se autenticar no sistema, determine a senha do usuário cujo login é CID? (a). 1.669.214 (b). 1.669.544 (c). 1.669.616 (d). 1.679.616 (e). 1.680.916
Solução: Uma das melhores formas de se resolver esse tipo de questão é partir de um determinado conjunto de elementos e seguir restringindo-o, passo a passo, até obter o subconjunto pedido na questão. A solução proposta para esta questão segue justamente essa metodologia. De acordo com o enunciado, cada caractere pode assumir 36 valores distintos.
Portanto,
o conjunto formado por sequências distintas de 4 caracteres tem 1.679.616 (36*36*36*36) elementos. Perceba que nem todos esses elementos são senhas válidas. Temos que descobrir justamente quantos elementos são senhas válidas. O primeiro passo é subtrair desse conjunto o subconjunto formado pelas sequências formadas por apenas dígitos (0 a 9), a nal de contas uma senha válida tem que ter pelo menos 1 caractere alfabético.
Fazendo a primeira subtração temos o subconjunto formado pelas
sequências de 4 caracteres onde pelo menos 1 desses é alfabético (1.679.616 - 10*10*10*10 = 1.669.616). Esse subconjunto ainda não representa todas as senhas válidas. O segundo passo é subtrair desse último subconjunto as sequências de 4 caracteres que contêm ou são iguais ao login CID. Para que uma sequência de 4 caracteres contenha o login CID, ela tem que ser do tipo *CID (36 sequências) ou CID* (36 sequências). Ou seja, há 72 sequências de 4 caracteres, onde pelo menos 1 é alfabético, que contém o login CID. Fazendo a segunda subtração temos o subconjunto formado por todas as senhas válidas (1.669.616 72 = 1.669.544). Para que se garanta que um software determine a senha do usuário CID, esse deve tentar no mínimo todas as possibilidades de senhas válidas, ou seja, 1.669.544 sequências. Logo, a alternativa B é a correta.
Página 36 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
17.
Volume 02 Edição 2
Assuntos relacionados: Probabilidade e Estatística, Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 37 Um sistema legado utiliza uma senha alfanumérica de 4 posições, onde só são permitidos dígitos de 0 a 9 e caracteres alfabéticos maiúsculos de A a Z (incluindo as letras K, W e Y). Uma senha válida deve ter exatamente 4 caracteres, conter pelo menos um caracter alfabético, e não pode conter ou ser igual ao login do usuário. Acrescentando ao sistema a restrição de que a senha não deve conter caracteres repetidos, quantas senhas válidas diferentes são possíveis para o usuário cujo login é NINA? (a). 1.021.020 (b). 1.215.440 (c). 1.217.440 (d). 1.408.680 (e). 1.413.720
Solução: Uma das melhores formas de se resolver esse tipo de questão é partir de um determinado conjunto de elementos e seguir restringindo-o, passo a passo, até obter o subconjunto pedido na questão. A solução proposta para esta questão segue justamente essa metodologia. De acordo com o enunciado, cada caractere pode assumir 36 valores distintos. Portanto, o conjunto formado por sequências distintas de 4 caracteres diferentes tem 1.413.720 (36*35*34*33) elementos. Perceba que nem todos esses elementos são senhas válidas. Temos que descobrir justamente quantos elementos são senhas válidas. O primeiro passo é entender que a única sequência de 4 caracteres que contém o login NINA é a própria sequência NINA. Como há 2 Ns nessa sequência, ela não pertence ao conjunto de 4 caracteres diferentes. En m, essa restrição já está sendo considerada. O segundo passo é subtrair desse conjunto o subconjunto formado por sequências distintas formadas por apenas dígitos (0 a 9). É importante perceber que esses dígitos tem que ser diferentes, já que estão no conjunto de sequências de 4 caracteres diferentes. Fazendo essa subtração temos o subconjunto formado por todas as senhas válidas (1.413.720 - 10*9*8*7 = 1.408.680). Logo, a alternativa D é a correta.
Página 37 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
18.
Assuntos relacionados:
Volume 02 Edição 2
Gerência de Projeto, Gerência de Integração, Controle Integrado
de Mudanças,
Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas Ano: 2008 Questão: 38
- Eng. de Software
É recomendado que um projeto possua um mecanismo formal e documentado de controle de mudanças. Sobre este mecanismo, são feitas as a rmativas a seguir. I - O mecanismo deve rastrear e tratar mudanças em quaisquer fatores críticos de sucesso do projeto, incluindo escopo, prazos e custos. II - Para tornar o processo gerenciável, é recomendado que sejam rastreadas apenas mudanças que possuam impacto signi cativo no custo ou nos prazos do projeto e que não sejam rejeitadas em primeira análise. III - A avaliação e a aprovação de quaisquer solicitações de mudanças são atribuições exclusivas do gerente de projeto, pois o mesmo detém a autoridade e a responsabilidade sobre os resultados nais do projeto perante os stakeholders. IV - Tipicamente, o mecanismo de controle de mudanças prevê algumas categorias de mudanças que são automaticamente aprovadas tais como as resultantes de emergências as quais devem ser registradas e rastreadas, da mesma forma que as demais. Estão corretas
APENAS as a rmativas:
(a). I e II. (b). I e III. (c). I e IV. (d). II e III. (e). III e IV.
Solução: O controle de mudanças ou controle integrado de mudanças é um dos processos da área de gerenciamento de integração.
Essa área compreende os processos necessários para garan-
tir a integração efetiva entre os processos das áreas de gerenciamento visando os objetivos do projeto. A integração das áreas, por exemplo, consiste em escolher sobre quais pontos concentrar recursos e esforço em quais dias especí cos, antecipando possíveis problemas, tratando-os antes de se tornarem críticos e coordenando o trabalho visando o bem geral do projeto. Mais especi camente, o processo controle integrado de mudanças consiste em registrar as mudanças no projeto, seus motivos e respectivos impactos e realizar as alterações necessárias de forma integrada visando o projeto como todo. O controle de mudanças é realizado durante todo o projeto. Uma mudança pode exigir alteração nas estimativas de custos, sequências de atividades, datas de cronograma e recursos necessários, e tudo isso deve ser monitorado e controlado para o sucesso do projeto. Uma das ferramentas ou técnicas para o controle integrado de mudanças é o sistema de controle de mudanças: um conjunto de procedimentos formais e documentados que de nem como as entregas e a documentação do projeto serão controladas, alteradas e aprovadas.
Página 38 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
De acordo com as a rmações da questão, temos: I Conforme explicado anteriormente, o controle de mudanças deve monitor e tratar todas as mudanças de forma integrada visando o sucesso do projeto.
Isso inclui os
fatores críticos do projeto como escopo, prazo, custo, recursos necessários, orçamento e requisitos de qualidade. Logo, a rmativa verdadeira; II As mudanças aprovadas devem ser monitoradas e avaliadas levando em consideração não apenas o custo ou prazo do projeto, mas também o impacto no escopo, orçamento e requisitos de qualidade. Logo, a rmação falsa; III Todas as mudanças solicitadas e documentas devem ser aceitas ou rejeitadas por uma autoridade dentro da equipe de gerenciamento de projetos ou por uma organização externa que represente o patrocinador ou cliente.
O sistema de controle de mudanças
muitas vezes inclui um comitê de controle de mudanças, responsável pela aprovação ou rejeição das mudanças solicitadas. As funções e responsabilidades desses comitês são de nidas claramente nos procedimentos de controle de con guração e de controle de mudanças e são acordadas com o patrocinador, com o cliente e com outras partes interessadas. Ou seja, a avaliação e aprovação das mudanças não dependem exclusivamente do gerente de projetos, mas de um comitê. Logo, a rmação falsa; IV O sistema de controle de mudanças deve também incluir procedimentos para tratar mudanças que podem ser aprovadas sem revisão prévia; por exemplo, como um resultado de emergências. Tipicamente, um sistema de controle de mudanças tem uma forma automática de aprovação de categorias especí cas de mudanças.
Essas mu-
danças devem ainda ser documentadas e capturadas de forma que as transformações na linha base do projeto possam ser registradas. Logo, a rmação verdadeira. Conforme exposto acima, a alternativa correta é a letra
c.
Página 39 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
19.
Assuntos relacionados: Lógica, Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. Ano: 2008 Questão: 39
Volume 02 Edição 2
de Software
((p ∨ q) → (r ∧ s)) ↔ (¬t) Para que valores de p, q, r, s e t, respectivamente, a proposição acima é verdadeira? (a). V, V, V, V, V (b). V, F, V, F, F (c). F, F, V, F, F (d). F, V, F, V, F (e). F, F, V, V, V
Solução: As Tabelas 5, 6, 7, 8 e 9 são as tabelas verdade para as operações utilizadas na proposição da questão.
A ¬A V
F
F
V
Tabela 5: Negação (¬).
A B A→B V
V
V
V
F
F
F
V
V
F
F
V
Tabela 6: Se - Então (→).
P Q P∨Q V
V
V
V
F
V
F
V
V
F
F
F
Tabela 7: Ou (∨).
Página 40 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
A B A∧B V
V
V
V
F
F
F
V
F
F
F
F
Tabela 8: E (∧).
P Q P↔Q V
V
V
V
F
F
F
V
F
F
F
V
Tabela 9: Se e Somente Se (↔). Vamos analisar cada alternativa. (A)
((V ∨ V ) → (V ∧ V )) ↔ (¬V ) ((V ) → (V )) ↔ (F ) (V ) ↔ (F ) F (B)
((V ∨ F ) → (V ∧ F )) ↔ (¬F ) ((V ) → (F )) ↔ (V ) (F ) ↔ (V ) F (C)
((F ∨ F ) → (V ∧ F )) ↔ (¬F ) ((F ) → (F )) ↔ (V ) (V ) ↔ (V ) V (D)
((F ∨ V ) → (F ∧ V )) ↔ (¬F ) ((V ) → (F )) ↔ (V ) (F ) ↔ (V ) F (E)
((F ∨ F ) → (V ∧ V )) ↔ (¬V ) ((F ) → (V )) ↔ (F ) (V ) ↔ (F ) F
Página 41 de 114
www.handbookdeti.com.br
Volume 02 Edição 2
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
Como podemos notar, os valores para p, q, r, s e t da alternativa (C) tornam a expressão verdadeira e, por isso, é a alternativa a ser marcada.
Página 42 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
20.
Assuntos relacionados: Lógica, Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. Ano: 2008 Questão: 40
Volume 02 Edição 2
de Software
Se Ana sabe que Beatriz tem acesso ao sistema de almoxarifado, então Ana não fez um pedido. Ou Ana fez um pedido ou a senha de Beatriz foi descoberta. Se Carlos conversou com Ana, então Ana sabe que Beatriz tem acesso ao sistema de almoxarifado. Ora, nem a senha de Beatriz foi descoberta nem Beatriz conhece Carlos. Logo: I - Ana fez um pedido. II - Ana sabe que Beatriz tem acesso ao sistema de almoxarifado. III - Carlos não conversou com Ana. IV - Beatriz conhece Carlos. São verdadeiras
APENAS as conclusões:
(a). I e II (b). I e III (c). II e III (d). II e IV (e). III e IV
Solução: Para facilitar, vamos representar as assertivas por letras: X Ana sabe que Beatriz tem acesso ao sistema de almoxarifado; Y Ana fez um pedido; Z A senha de Beatriz foi descoberta; W Carlos conversou com Ana; U Beatriz conhece Carlos. Agora, vamos representar as assertivas em um conjunto de proposições de acordo com o texto: i ii
X → ¬Y ; Y ∨ Z;
iii
W → X;
iv
¬Z ;
v
¬U .
Agora vamos começar a analisar as proposições e tentar achar soluções que respondam a validade das assertivas I, II, III e IV. Na Proposição iv, sabemos que a senha de Beatriz não foi descoberta.
Já na Proposição
ii, podemos concluir que Ana fez um pedido, pois um dos valores Y e Z deveriam assumir valor verdadeiro e como temos certeza que Z é falso, concluímos que Y assume verdadeiro.
Página 43 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
Já podemos concluir que a assertiva I é verdadeira. Analisando a Proposição i, temos que X deve implicar um valor falso (¬Y ).
Da tabela
verdade da operação lógica se então, podemos concluir que a única maneira de tornar a proposição válida é que X assuma valor falso (F Ana
→ F ).
Concluímos, então,
não sabe que Beatriz tem acesso ao sistema de almoxarifado.
¬X ,
ou seja,
A assertiva II é falsa.
Analisando a Proposição iii, temos que o valor de W deve ser falso para tornar a proposição válida, já que X é falso como vimos anteriormente. Logo, Carlos
não
conversou com Ana.
A assertiva III é verdadeira. A assertiva IV é claramente falsa de acordo com a Proposição v. A alternava a ser marcada é a letra (B), já que as únicas assertivas verdadeiras são: I e III.
Página 44 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
21.
Assuntos relacionados: Lógica, Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. Ano: 2008 Questão: 41
Volume 02 Edição 2
de Software
O projeto será bem-sucedido se ou o processo de desenvolvimento é o Processo Uni cado ou a linguagem utilizada é Java. . Uma possível tradução da sentença acima para a lógica de predicados de primeira ordem é (a).
(Sp → JI) ↔ (Sp → U d)
(b).
Sp ↔ (U d ∨ JI)
(c).
Sp ↔ (JI ∨ U d)
(d).
(U d ∨ JI) ↔ Sp
(e).
(JI ∨ U d) → Sp
Solução: O enunciado pode ser modi cado para que tenha o mesmo signi cado da seguinte maneira: Para que o projeto seja bem-sucedido é necessário que pelo menos uma das seguintes assertivas se torne verdadeira: o processo de desenvolvimento é o Processo Uni cado ou a linguagem utilizada é Java. . Quando utilizamos a palavra necessário, estamos dizendo que para que o projeto seja bemsucedido, obrigatoriamente a condição necessária deve ser atendida. Entretanto, não estamos dizendo que, caso a condição seja atendida (Processo Uni cado ou Java), é su ciente para que o projeto seja bem-sucedido. Para representar isso, devemos utilizar o se-então. No caso do uso do OU, devemos estar bem atentos.
Pois, em muitos casos, em nossa
linguagem natural, o uso do OU pode representar um Ou-Exclusivo da Lógica de Primeira Ordem. Um exemplo: hoje à noite, eu vou para casa ou para o trabalho. Claramente, no exemplo, somente uma das assertivas pode ser verdadeira: Eu vou para casa hoje à noite ou vou para o trabalho hoje à noite. Já no caso do enunciado da questão, encontramos o uso do OU menos corriqueiro, sendo utilizado duas vezes, reforçando o entendimento de que pelo menos uma das assertivas envolvidas deva ser verdadeira. Dado o exposto acima, podemos concluir que a alternativa (E) é alternativa que corresponde ao signi cado da frase. Entretanto, a ordem é um pouco diferente e Sp representa que o projeto será bem-sucedido. Isso ocorre porque a condição necessária é o segundo operador da operação se-então e a consequência é o primeiro. Um bom exemplo para xar os conceitos de su ciência e necessidade é a seguinte proposição: CARIOCA
→
BRASILEIRO. Ser CARIOCA é su ciente para ser BRASILEIRO, mas não
necessário. Ser BRASILEIRO é necessário para ser CARIOCA.
Página 45 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
22.
Assuntos relacionados:
Volume 02 Edição 2
Segurança da Informação, Normas de Segurança da Informação,
Família ISO 27000, ISO 27001,
Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas Ano: 2008 Questão: 42
- Eng. de Software
Nas a rmativas a seguir, sobre a norma ISO 27001, a sigla ISMS se refere a um Sistema de Gerenciamento de Segurança da Informação (Information Security Management System) no contexto de uma organização. I A norma ISO 27001 estabelece uma abordagem do tipo PDCA (Plan, Do, Check, Act) para a de nição e manutenção do ISMS. II A norma ISO 27001 prescreve as práticas de implantação e as métricas utilizadas para avaliar o desempenho do ISMS. III Um dos controles listados na norma ISO 27001 preconiza que a organização deve manter contato com grupos especiais de interesse ou outros fóruns e associações pro ssionais especializados em segurança. IV O ISMS é de nido formalmente na ISO 27001 como um conjunto de regras (rules) e boas práticas (best practices) nas áreas de segurança física, autenticação de usuários, autorização de acessos e manutenção de um ambiente controlado para o tratamento e gerenciamento de informação e ativos sensíveis. Estão corretas APENAS as a rmativas (a). I e II (b). I e III (c). I e IV (d). II e III (e). II e IV
Solução: A norma ISO 27001 especi ca um conjunto de requisitos para o estabelecimento, implantação, monitoração, revisão, manutenção e melhoria de um Sistema de Gestão de Segurança de Informação, ou simplesmente, SGSI. Um SGSI pode também ser de nido como um framework de políticas, procedimentos e controles de várias naturezas (físicos, lógicos, legais etc) que, por sua vez, fazem parte do processo de gerenciamento de riscos da organização como um todo. Como todo sistema de gestão, o SGSI também é descrito em termos de processos, os quais são administrados por meio da metodologia PDCA (Plan-Do-Check-Act). Portanto, a alternativa I está correta. Em última instância, o PDCA tem como objetivo principal garantir a melhoria contínua da gestão da segurança da informação e minimizar os riscos associados à segurança da informação. Pode se dizer que a a rmativa III é correta, tendo em vista que o contato com grupos especiais de interesse é uma forma de monitorar e melhorar o SGSI. Outro aspecto interessante da norma ISO 27001 é a sua aplicabilidade para todos os tipos de
Página 46 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
organizações, tendo em vista o seu caractere genérico. Comumente a ISO 27001 é de nida como um conjunto de melhores práticas para gerenciamento de segurança da informação, o que não é errado, desde que se ressalte que ela trabalha em nível de processos, e não nos níveis mais técnicos. Portanto, a alternativa IV é errada, pois de ne a norma em questão de maneira muito especí ca e técnica. Na norma, por exemplo, você não irá encontrar as melhores práticas para implementação de segurança física para CPDs. No entanto, a norma tem em sua lista de controles um referente a Segurança física e do ambiente . O conjunto de controles que são tratados pela ISO 27001 engloba os mostrados a seguir, cabendo a cada organização identi car a relevância de cada um deles para o seu negócio.
•
política de segurança;
•
segurança organizacional;
•
organização da segurança da informação;
•
gestão de ativos;
•
segurança em recursos humanos;
•
segurança física e do ambiente;
•
gerenciamento das operações e comunicações;
•
controle de acesso;
•
aquisição, manutenção e desenvolvimento de sistemas;
•
gestão de incidentes de segurança de informação;
•
continuidade do negócio;
•
conformidade.
Por m, vale lembrar que a norma ISO 27001 pertence à série (ou família) ISO 27000, que compreende normas relacionadas à Segurança da Informação publicadas pela ISO. A série 27000 está para a Segurança da Informação assim como a série ISO 9000 e a série ISO 14000 estão, respectivamente, para a Qualidade e para a Proteção Ambiental. Algumas das normas que compõe a família 27000, além da 27001, são:
•
27000 - overview da família de padrões ISO 27000, glossário e termos comuns;
•
27003 - guideline para implementação de um SGSI;
•
27004 - gerenciamento de métricas de segurança de informação;
•
27005 - implementação de segurança da informação baseada em uma abordagem de gestão de riscos;
•
27006 - guia para o processo de certi cação e registro;
•
27011 - guidelines para gerenciamento de segurança da informação na indústria de telecomunicações;
•
27034 - guideline para segurança de aplicações.
Página 47 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
23.
Assuntos relacionados:
Volume 02 Edição 2
Segurança da Informação, Princípios Fundamentais da Segurança
da Informação,
Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas Ano: 2008 Questão: 43
- Eng. de Software
Os três princípios fundamentais aplicáveis à segurança da informação são: (a). con dencialidade, integridade e privacidade. (b). con dencialidade, não-repúdio e legitimidade. (c). con dencialidade, integridade e disponibilidade. (d). privacidade, disponibilidade e integridade. (e). privacidade, integridade e legitimidade.
Solução: Os três princípios fundamentais da segurança da informação são: con dencialidade, integridade e disponibilidade. Portanto, a resposta da questão é a alternativa C. Para conceituar cada um desses princípios, vamos utilizar o texto da seção 1 da Cartilha de Segurança do CERT.BR (Centro de Estudos, Respostas e Tratamento de Incidentes de Segurança no Brasil), uma entidade ligada ao CGI (Comitê Gestor de Internet no Brasil). De acordo com a cartilha, temos o seguinte: Um computador (ou sistema computacional) é dito seguro se este atende a três requisitos básicos relacionados aos recursos que o compõem: con dencialidade, integridade e disponibilidade. A con dencialidade diz que a informação só está disponível para aqueles devidamente autorizados; a integridade diz que a informação não é destruída ou corrompida e o sistema tem um desempenho correto; e a disponibilidade diz que os serviços/recursos do sistema estão disponíveis sempre que forem necessários. Alguns exemplos de violações a cada um desses requisitos são:
• con dencialidade:
alguém obtém acesso não autorizado ao seu computador e lê todas
as informações contidas na sua declaração de Imposto de Renda;
• integridade:
alguém obtém acesso não autorizado ao seu computador e altera infor-
mações da sua declaração de Imposto de Renda, momentos antes de você enviá-la à Receita Federal;
• disponibilidade:
o seu provedor sofre uma grande sobrecarga de dados ou um ataque
de negação de serviço e por esse motivo você ca impossibilitado de enviar sua declaração de Imposto de Renda à Receita Federal.
Página 48 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
24.
Volume 02 Edição 2
Assuntos relacionados: Portais Corporativos, B2B, B2C, B2E, B2G, Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 44 São feitas 4 a rmativas sobre a tecnologia de portais. I - Um portal em geral utiliza uma instância de banco de dados para armazenar informações especí cas do portal, como as personalizações dos usuários, índices para busca, regras de autorização de acesso ao conteúdo e, possivelmente, o próprio conteúdo. II - Os portais B2B (Business-to-Business) e B2G (Business-to-Government) normalmente apresentam estrutura tecnológica similar, fazendo uso de web services em uma arquitetura A2A (Application-to-Application). III - Um portal corporativo B2E (Business-to-Employees) pode ser utilizado para prover, além do conteúdo especí co de interesse dos funcionários, recursos de integração com ferramentas de data warehouse e BI (Business Intelligence). IV - Ferramentas mais avançadas de portal fornecem recursos para detecção de padrões de comportamento e áreas de interesse dos usuários, que serão utilizados para fornecer conteúdo personalizado ao mesmo. Estão corretas as a rmativas (a). I e II, apenas. (b). I e III, apenas. (c). I, II e III, apenas. (d). II, III e IV, apenas. (e). I, II, III e IV.
Solução: Os portais corporativos são, comumente, apresentados como uma evolução das intranets. No entanto, os portais também podem ser vistos como uma aplicação web que agrega conteúdo, colaboração, conhecimento e aplicativos transacionais, todos em uma interface única. Exemplos de funcionalidades que os portais normalmente possuem são:
•
busca e indexação;
•
categorização de conteúdo;
•
colaboração;
•
personalização;
•
comunidades;
•
integração de sistemas;
•
segurança.
Portanto, pode-se dizer que as a rmativas I e IV são corretas. Com relação as alternativas II e III, para entender porque elas também podem ser consideradas corretas, é preciso conhecer o signi cado dos termos das siglas B2B, B2G, B2E e outras.
Página 49 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
•
B2B (Business to Business):
Volume 02 Edição 2
são as transações de comércio entre empresas.
Uma
empresa vendendo para outra empresa ou um banco transferindo recursos para outro são exemplos de transações B2B;
•
B2C (Business to Consumer): são as transações entre uma empresa e um consumidor. Amazon, Submarino e Americanas são exemplos típicos de empresas que realizam esse tipo de transação;
•
C2C (Consumer to Consumer): são as transações entre consumidores, intermediadas normalmente por uma empresa.
Exemplos de sites que oferecem um meio para a
realização de transações C2C são os sites de leilão como o Ebay e Mercado Livre;
•
B2G (Business to Governement): são as transações entre empresa e governo. Os exemplos comuns de B2G são licitações e compras de fornecedores;
•
B2E (Business-to-Employee): normalmente relacionado aos portais que atendem aos empregados.
Os portais B2E são as chamadas intranets corporativas, que têm por
objetivo oferecer aos empregados uma interface única para que eles possam acompanhar as notícias da empresa, gerenciar seus dados pessoais, solicitar serviços etc. Nesse ponto da resolução da questão, você deve estar pensando: mais um monte de siglas
para eu decorar! . E é exatamente isso. A indústria de TI permanece abusando do uso de siglas para representar conceitos que, após apresentados, são familiares aos leitores, sejam técnicos ou não.
Portanto, ca mais uma vez o recado.
Fique atento às siglas e seus
signi cados, pois elas vem sendo cobradas sistematicamente nos concursos!
Página 50 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
25.
Assuntos relacionados:
Volume 02 Edição 2
Engenharia de Software, Orientação a Objeto, Padrões de Pro-
jeto,
Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas Ano: 2008 Questão: 45
- Eng. de Software
Classes devem estar abertas para extensão e fechadas para modi cação é um princípio de projeto de modelos orientados a objetos. Tal princípio pode ser aplicado através do padrão de projeto (a). decorator. (b). yweight. (c). prototype. (d). singleton. (e). builder.
Solução: A Análise Orientada a Objetos identi ca e de ne classes que re etem diretamente o domínio do problema e as responsabilidades do sistema dentro dele. Normalmente, a análise ocorre com a suposição de que existe uma tecnologia perfeita disponível (capacidade ilimitada de armazenamento, custo zero e não passível de falha). Em suma, a análise se interessa pelo que o sistema deve fazer. O Projeto Orientado a Objetos (Object-Oriented Design - OOD ) transforma o modelo de análise em um modelo de projeto que serve de base para a construção do software, ou seja, envolve a modelagem de como o sistema será implementado com adição dos requisitos tecnológicos ou não funcionais. Ao contrário dos projetos de softwares convencionais, no projeto orientado a objetos, os componentes principais do sistema são divididos em módulos, chamados subsistemas ou pacotes, e os dados e as operações que os manipulam são encapsulados em classes. Então, o projeto se preocupa como os requisitos serão implementados e, portanto, pressupõe uma infra-estrutura de implementação e é fortemente in uenciado pela análise. O Padrão de Projeto Orientado a Objetos (Object-Oriented Design Patterns - OOD ) é um dos componentes do projeto orientado a objetos e tem como objetivo registrar uma experiência no projeto de software, na forma de um padrão passível de ser efetivamente utilizado. Isso tem o intuito de reutilizar soluções que funcionaram no passado, evitando que um sistema seja desenvolvido do zero. Ou seja, padrão de projeto está relacionado com a reusabilidade de software. Um padrão é um par nomeado problema/solução com orientações sobre como utilizá-lo em novas situações e possui quatro elementos essenciais:
• Nome:
uma identi cação que representa o problema, suas soluções e consequências;
• Problema: • Solução:
explica o problema de projeto, seu contexto e quando aplicar o padrão;
descreve os elementos que compõem o projeto, seus relacionamentos, respon-
sabilidades e colaborações. Não descreve um particular projeto concreto ou implementação;
Página 51 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
• Consequências:
Volume 02 Edição 2
são os resultados e os comprometimentos feitos ao se aplicar o padrão.
Um dos principais padrões de projeto é o chamado Gangue dos Quatro (Gang of Four -
GoF ). Os padrões GoF são organizados nos grupos:
• Criativo:
está relacionado ao processo de instanciação (criação) dos objetos, ajudando
a tornar um sistema independente de como seus objetos são criados;
• Estrutural:
trata de como as classes e os objetos são compostos para formar estruturas
maiores;
• Comportamental:
diz respeito a algoritmos e a atribuição de responsabilidades entre
objetos. Um padrão GoF também é classi cado segundo o seu escopo: de classe ou de objeto. Nos padrões com escopo de classe os relacionamentos que de nem este padrão são de nidos através de herança e em tempo de compilação. Nos padrões com escopo de objeto o padrão é encontrado no relacionamento entre os objetos de nidos em tempo de execução. A Tabela 10 apresenta os padrões GoF organizados em grupos com os respectivos escopos. Grupos Escopo
Criativo
Estrutural
Classe
Método-Fábrica
Adaptador (classe)
Comportamental Interpretador Método Modelo
Objeto
Construtor
Adaptador (objeto)
Cadeia de Responsabilidade
Fábrica Abstrata
Composto
Comando
Protótipo
Decorador
Iterador
Singular
Fachada
Mediador
Peso-Mosca
Memorial
Ponte
Observador
Procurador
Estado Estratégia Visitador
Tabela 10: padrões com os respectivos grupos e escopo. O princípio Classes devem estar abertas para extensão e fechadas para modi cação é um dos principais princípios da orientação a objetos, e é conhecido como o princípio AbertoFechado (Open Closed Principle OCP ). Este princípio quer dizer que devemos estruturar um aplicativo de forma que seja possível adicionar novas funcionalidades com modi cações mínimas no código existente.
Por exemplo, ao criarmos uma subclasse, nós não devemos
alterar o comportamento da classe base, mas apenas completá-lo. A seguir, analisamos as alternativas da questão. (A) CORRETA O padrão de objeto decorator (decorador) do grupo Estrutural anexa responsabilidades adicionais a um objeto dinamicamente, permitindo estender sua funcionalidade. Provê uma alternativa exível ao uso de herança como modo de estender funcionalidade e permite adicionar responsabilidades a objetos e não a uma classe inteira. O decorator pode ser utilizado para adicionar responsabilidades dinamicamente a objetos
Página 52 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
individuais e transparentemente (sem afetar outros objetos), quando há responsabilidades que podem ser retiradas, quando a herança geraria uma explosão de subclasses e quando a herança seria uma boa alternativa, mas a de nição da classe está escondida ou não disponível para herança. Pode-se pensar também em termos de interface grá ca, por exemplo, adicionar uma borda a um botão, frame, etc. Ao invés de construir uma subclasse para cada objeto que se deseja adicionar a funcionalidade, ele permite uma extensão transparente de funcionalidade durante execução. Para isso ele deve manter a mesma interface do objeto sendo estendido, e deve aceitá-lo como argumento na inicialização para criar uma referência que será mantida como variável membro privada. O padrão decorator está relacionado em estender funcionalidades do objeto de modo a não modi car a classe inteira. O que mostra que o princípio Aberto-Fechado é aplicado a este padrão. Portanto, alternativa correta. (B) ERRADA O padrão de objeto yweight (peso-mosca) do grupo Estrutural utiliza compartilhamento para suportar um grande número de pequenos objetos de forma e ciente.
O yweight é
apropriado quando vários objetos devem ser manipulados, e esses não suportam dados adicionais.
No padrão yweight não existem ponteiros para os métodos do dado, pois isto
consome muita memória.
Em contrapartida são chamadas sub-rotinas diretamente para
acessar o dado. Um exemplo é o processador de texto.
Cada caractere representa um objeto que possui
uma família de fonte, um tamanho de fonte e outras informações. Um documento grande com tal estrutura de dados facilmente ocuparia toda a memória disponível no sistema. Para resolver o problema, como muitas dessas informações são repetidas, o yweight é usado para reduzir os dados, isto é, cada objeto de caractere contém uma referência para outro objeto com suas respectivas propriedades. O padrão yweight não está relacionado a estender funcionalidades de uma classe base sem modi cá-la, o que mostra que este padrão não é aplicado ao princípio Aberto-Fechado. Portanto, alternativa errada. (C) ERRADA O padrão de objeto prototype (protótipo) do grupo Criativo especi ca os tipos de objetos que podem ser criados a partir de um modelo original (protótipo) e cria novos objetos copiando este protótipo. Ele utiliza protótipos ao invés de classes e instâncias, reunindo os dois em um só, e ao invés de herança, utiliza decorator para estender funcionalidades. O padrão prototype pode ser utilizado em sistemas que precisam ser independentes da forma como os seus componentes são criados, compostos e representados. O padrão prototype pode ser útil em sistemas que utilizam classes de nidas em tempo de execução. O padrão prototype não está relacionado a estender funcionalidades de uma classe base sem modi cá-la, o que mostra que este padrão não é aplicado ao princípio Aberto-Fechado. Portanto, alternativa errada.
Página 53 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
(D) ERRADA O padrão de objeto singleton (singular) do grupo Criativo garante que uma classe possui uma única instância e provê um ponteiro global para acessá-la. Por exemplo, em uma aplicação que precisa de uma infra-estrutura de log de dados, pode-se implementar uma classe no padrão singleton. Desta forma existe apenas um objeto responsável pelo log em toda a aplicação que é acessível unicamente através da classe singleton. O singleton é parecido com o yweight, ambos permitem somente uma instância de um objeto. A diferença é que o singleton permite somente uma instância de uma classe durante o projeto, enquanto o yweight utiliza factories (fábricas) para produzir somente uma instância em tempo de execução. O padrão singleton não está relacionado a estender funcionalidades de uma classe base sem modi cá-la, o que mostra que este padrão não é aplicado ao princípio Aberto-Fechado. Portanto, alternativa errada. (E) ERRADA O padrão de objeto builder (construtor) do grupo Criativo separa a construção de um objeto complexo de sua representação de modo que o mesmo processo de construção pode criar diferentes representações. Por exemplo, o padrão Builder pode ser utilizado em uma aplicação que converte o formato RTF para uma série de outros formatos e que permite a inclusão de suporte para conversão para outros formatos, sem a alteração do código fonte do leitor de RTF. A solução para este problema é criar uma classe de leitura (director) associada a outra classe capaz de converter o formato RTF para outra representação (builder). O padrão builder é muitas vezes comparado com o padrão Abstract Factory, pois ambos podem ser utilizados para a construção de objetos complexos. A principal diferença entre eles é que o builder constrói objetos complexos passo a passo e o Abstract Factory constrói famílias de objetos, simples ou complexos, de uma só vez. O padrão builder não está relacionado a estender funcionalidades de uma classe base sem modi cá-la, o que mostra que este padrão não é aplicado ao princípio Aberto-Fechado. Portanto, alternativa errada.
Página 54 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
26.
Assuntos relacionados: Web Services, Interoperabilidade Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 46
Volume 02 Edição 2
entre Aplicações,
A interoperabilidade entre aplicações nos dias atuais é fortemente baseada no uso de web services. Duas abordagens arquiteturais distintas para o projeto e implementação de web services têm-se rmado no cenário de tecnologia. São elas: (a). REST e WS-* (b). SOAP e WSDL (c). RPC e RMI (d). SGML e HTML (e). B2B e B2C
Solução: Web service é tecnologia que possibilita aplicações interagirem umas com as outras de forma independente de plataforma operacional e linguagem de programação utilizadas. Os Web services são componentes que permitem às aplicações enviarem e receberem mensagens formatadas em XML. Apesar de não ser obrigatório, geralmente o HTTP é escolhido como mecanismo de transporte dessas mensagens. (A) CORRETA O termo REST se refere a um conjunto de princípios de arquitetura para web services. Um conceito importante em REST é a existência de recursos (elementos de informação), que são individualmente identi cados por URIs (Identi cadores Uniforme de Recurso). De acordo com essa arquitetura, diferentes componentes da rede (clientes e servidores) devem utilizar os métodos do HTTP (por exemplo, POST, GET, PUT e DELETE) para trocarem representações dos recursos existentes (os arquivos ou cheiros são recebidos e enviados). Algumas especi cações vêm sendo desenvolvidas, principalmente pela W3C, para estender as funcionalidades dos web services. Essas especi cações são chamadas de WS-*. Algumas das especi cações mais importantes são:
WS-Security, WS-Addressing, WS-Reliability e
WS-Transaction. Tendo em vista o exposto, é possível concluir que REST e WS-* são duas abordagens arquiteturais distintas que podem ser adotadas em projetos e desenvolvimentos de web services. (B) ERRADA SOAP (Simple Object Access Protocol) é um protocolo que de ne, por meio de um conjunto de tags XML, o formato das estruturas das mensagens trocadas entre aplicações. Dois dos grandes benefícios do SOAP são: padrão aberto adotado pela maioria das grandes empresas de hardware e software; e construído sobre padrões também abertos como HTTP e XML. Web Services De nition Language (WSDL) é uma linguagem baseada em XML utilizada
Página 55 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
para descrever web services. Trata-se de um documento escrito em XML que além de descrever o serviço, especi ca como acessá-lo e quais as operações ou métodos disponíveis. Como SOAP é um protocolo e WSDL uma linguagem de de nição, é incorreto dizer que eles são abordagens arquiteturais para projeto e implementação de web services. (C) ERRADA O RPC (Remote Procedure Call) de ne um protocolo para execução remota de procedimentos em computadores ligados em rede. Esse protocolo pode ser utilizado com diferentes protocolos de transporte, tais como UDP e TCP. Antes de ser enviada pela rede, uma RPC emitida pela aplicação cliente é encapsulada segundo o padrão SOAP. O serviço remoto, ao receber a mensagem, faz o processo reverso, desencapsulando a mensagem e extraindo a chamada.
A aplicação servidora, então, processa essa chamada e envia sua resposta à
aplicação cliente. Essa mensagem de resposta também é enviada de forma encapsulada segundo o padrão SOAP. Na máquina cliente, a resposta é desencapsulada e repassada para a aplicação cliente. O RMI (Remote Method Invocation) é uma interface de programação que permite a execução de chamadas remotas no estilo RPC em aplicações desenvolvidas em Java. A API RMI provê ferramentas para que seja possível ao programador desenvolver uma aplicação sem se preocupar com detalhes de comunicação entre os diversos possíveis elementos (hosts) de um sistema. Apesar dos conceitos RPC e RMI se relacionarem com web service, é totalmente errôneo dizer que eles são abordagens arquiteturais para projeto e implementação de web services. (D) ERRADA SGML é um acrônimo para Standard Generalized Markup Language que foi de nido pela norma ISO 8879:1986 Information processing Text and o ce systems .
Ela é uma met-
alinguagem que pode ser utilizada para de nir linguagens de marcação para documentos. SGML é uma descendente da GML (Generalized Markup Language) da IBM. Duas importantes linguagens derivadas da SGML são HTML (HyperText Markup Language) e XML (eXtensible Markup Language). HTML (Linguagem de Marcação de Hipertexto) é uma linguagem fundamentalmente baseada nos padrões HyTime e SGML. O HyTime (Hypermedia/Time-based Document Structuring Language - ISO 10744:1992) é um padrão para representação estruturada de hipermídia e informação baseada em tempo. De acordo com essa padrão, um documento é visto como um conjunto de eventos concorrentes dependentes de tempo (áudio, vídeo, etc.), conectados por webs ou hiperlinks. Por se tratarem de linguagens de marcação, não faz sentido nenhum dizer que SGML e HTML são abordagens arquiteturais para projeto e implementação de web services. (E) ERRADA B2B e B2C são duas das diversas siglas relacionadas ao e-commerce e ao e-business. Portanto, nada têm a ver com abordagens arquiteturais. As principais siglas são:
Página 56 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
•
B2B (Business to Business) - são transações de comércio entre empresas;
•
B2C (Business to Consumer) - são transações de comércio entre empresa e consumidor. Um exemplo bem conhecido é o website Amazon;
•
C2C (Consumer to Consumer) - este é o comércio entre consumidores. Bons exemplos desse tipo de transação são os sites de leilão;
•
B2G (Business to Governement) - são as transações entre empresa e governo. O exemplo mais comum de B2G são as licitações online;
•
B2E (Business-to-Employee) - normalmente relacionado aos portais (intranets) que atendem aos funcionários. Tem por objetivo ser uma área central de relacionamento com a empresa. Através dele os funcionários podem, por exemplo, pedir material para sua área, gerir todos os seus benefício ou até utilizar processos de gestão dos funcionários (faltas, avaliações, inscrições em treinamentos, etc.).
Página 57 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
27.
Volume 02 Edição 2
Assuntos relacionados: Servidor de Aplicações, J2EE, JEE, .NET, MVC, Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 47 Um servidor de aplicações provê diversos serviços para as aplicações que hospeda. Considerandose implementações típicas em J2EE/JEE e .NET, compondo uma arquitetura em 3 camadas, é correto a rmar que, dentre os serviços oferecidos pelos servidores de aplicações, encontra-se (a). validação de objetos de domínio, segundo as regras de negócio da aplicação. (b). geração de código através de MDA (Model Driven Architecture). (c). persistência nal dos objetos de domínio. (d). suporte nativo à arquitetura MVC. (e). estrutura para troca de mensagens entre aplicações.
Solução: O objetivo dos servidores de aplicações é disponibilizar uma plataforma que permita aos programadores abstrair de uma gama de tarefas inerentes ao desenvolvimento do software. Dessa forma, os programadores podem se concentrar mais nas regras de negócio do que nas questões de infraestrutura da aplicação, como segurança, disponibilidade, balanceamento de carga, mensageiria etc. Para aplicações simples, a utilização de um servidor de aplicações pode representar um overhead ao invés de facilitar as tarefas dos programadores. No entanto, para grandes aplicações comerciais com requisitos mais rígidos de desempenho e robustez a falhas, os servidores de aplicações mostram-se muito úteis. Embora o conceito de servidor de aplicações seja aplicável para o desenvolvimento em uma grande quantidade de linguagens, nos últimos anos os que mais se tornaram populares são os servidores de aplicações J2EE (ou JEE, nas versões mais recentes), criados para suportar aplicações escritas em Java. Para exempli car o conjunto de serviços que os servidores de aplicações podem oferecer, vejamos a Figura 2. Ela mostra a arquitetura JEE mais recente, publicada pela Sun Microsystems no documento JSR-000316.
No esquema mostrado nessa gura, tanto o Web
Container quanto o EJB Container são hospedados no servidor de aplicações, que oferece serviços diversos por meio de várias APIs. A API JMS (Java Message Service), por exemplo, oferece suporte a comunicação ponto-a-ponto con ável. A API JavaMail permite que as aplicações enviem e-mails sem ter que se preocupar com as questões de las de mensagens, falhas etc. A API JASS, por sua vez, oferece facilidades para implementação de autenticação e autorização nas aplicações. Vale lembrar que os servidores de aplicações também oferecem facilidades para persistência de dados, como lembrado na alternativa C. No entanto, a palavra nal torna a alternativa, ao menos, duvidosa! Já no caso da alternativa D, é de se esperar que um ambiente tão cheio de funcionalidades como um servidor de aplicações ofereça suporte a construção de aplicações segundo
Página 58 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
o modelo MVC. No entanto, a construção de uma aplicações que obedeça ao MVC está muito mais ligada a separação dos componentes e camadas do sistema do que à plataforma tecnológica utilizada. É, portanto, possível construir aplicações MVC no bom e velho ASP, bem como nos novos e modernos servidores de aplicações. A validação de objetos de que trata a alternativa A é feita pelos servidores de aplicações, mas não está relacionada as regras de negócio das aplicações.
A geração automática de
código, por sua vez, é uma tarefa comum às IDEs, e não aos servidores de aplicações. Portanto, a alternativa E, por ser a mais objetiva e clara, é a resposta correta para essa questão.
Figura 2: arquitetura JEE 6.0.
Página 59 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
28.
Volume 02 Edição 2
Assuntos relacionados: Processo Uni cado, Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 48 Um princípio fundamental do Processo Uni cado é (a). ser centrado em arquitetura. (b). empregar times auto-dirigidos e auto-organizados. (c). o desenvolvimento em cascata. (d). a programação em pares. (e). a propriedade coletiva do código fonte.
Solução: O Processo Uni cado de desenvolvimento de software reúne três características que o faz ser único. Essas três características se relacionam entre si e são igualmente importantes. São elas:
• Orientado a Diagrama de Casos de Uso:
um caso de uso, de acordo com a UML
(Uni ed Modeling Language), é uma sequência de ações de um sistema que devolve ao usuário um resultado de valor. Um conjunto de casos de uso de nido sob determinado contexto forma um Diagrama de Casos de Uso, que descreve uma funcionalidade do sistema sob esse contexto. Em outras palavras, um Diagrama de Casos de Uso de ne a funcionalidade de um sistema para cada tipo de usuário.
Esse tipo de abordagem
favorece o atendimento das necessidades de cada tipo de usuário que interage com o sistema, evitando, dessa forma, que o sistema possa ser desenvolvido a ponto de apresentar funcionalidades desnecessárias;
• Centrado na arquitetura do sistema:
arquitetura de sistema é uma visão do
projeto como um todo, destacando suas características mais importantes de forma abrangente e sem detalhes especí cos.
Esse tipo de abordagem auxilia o arquiteto
a se concentrar nas metas corretas, como inteligibilidade, poder de recuperação para mudanças futuras e reutilização. Ou seja, a arquitetura de um sistema deve ser projetada a ponto de permitir que o sistema evolua, não apenas durante o início do seu desenvolvimento, mas também ao longo das iterações futuras;
• Metodologia iterativa e incremental:
uma iteração pode ser entendida como um
miniprojeto, que resulta em uma nova versão do sistema. Justamente devido ao fato de a cada interação ser gerada uma nova versão do sistema que essa metodologia também se apresenta como incremental.
Perceba que estas duas características, iterativa e
incremental, nem sempre aparecem juntas.
Há metodologias de desenvolvimento de
software que são iterativos, mas não incrementais. O Processo Uni cado organiza suas iterações em quatro fases principais: 1.
Concepção:
o objetivo desta fase é levantar, de forma genérica e pouco precisa, o
escopo do projeto. Não deve existir aqui a pretensão de especi car de forma detalhada requisitos, a ideia é ter uma visão inicial do problema, estimar de forma vaga esforço e prazos e determinar se o projeto é viável e merece uma análise mais profunda;
Página 60 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
2.
Elaboração:
Volume 02 Edição 2
nesta fase, todos os requisitos (ou a grande maioria deles) são levantados
em detalhes. Em uma primeira iteração, um ou dois requisitos, os de maior risco e valor arquitetural, são especi cados e implementados. Eles servirão como base de avaliação junto aos usuários e desenvolvedores para o planejamento da próxima iteração. Em cada nova iteração dentro da fase de elaboração, pode haver um seminário de requisitos, onde requisitos antigos são melhores esclarecidos e novos são detalhados. Ao m desta fase, 90% dos requisitos foram levantados em detalhes, o núcleo do sistema foi implementado com alta qualidade, os principais riscos foram tratados e pode-se então fazer estimativas mais realistas; 3.
Construção:
implementação iterativa dos elementos restantes de menor risco e menos
complexos. Há também uma preparação para a implantação do sistema; 4.
Transição:
testes nais e implantação do sistema.
Agora que o básico sobre Processo Uni cado já foi exposto, vamos a cada alternativa. (A) CORRETA Ao ler a explicação acima, ca evidente que ser centrado em arquitetura é um dos princípios mais evidentes do Processo Uni cado. É justamente por isso que esta é a alternativa correta. (B) ERRADA Times auto-dirigidos e auto-organizados não é uma característica do Processo Uni cado. Essa é sim um princípio de outra metodologia de desenvolvimento de sistemas, o Scrum. Portanto, esta alternativa está errada. Scrum é um processo para construir software de forma incremental em ambientes complexos, onde os requisitos não são claros ou mudam com muita frequência. A metodologia é baseada em princípios semelhantes aos de XP (Extreme Programming). As principais são:
•
equipes pequenas, multidisciplinares e auto-organizadas;
•
requisitos pouco estáveis ou desconhecidos;
•
iterações curtas (sprints) que seguem o ciclo PDCA e entregam incrementos de software prontos;
•
reuniões diárias e curtas geralmente realizadas em pé;
•
Scrum Master: membro que tem como função primária remover qualquer impedimento à habilidade de uma equipe de entregar o objetivo do sprint. O Scrum Master não é o líder da equipe (já que as equipes são auto-organizadas), mas atua como um mediador entre a equipe e qualquer in uência desestabilizadora.
(C) ERRADA O modelo de desenvolvimento em cascata é um modelo sequencial, no qual o desenvolvimento é visto como um uir constante para frente (como uma cascata) através das fases de análise de requisitos, projeto, implementação, testes (validação), integração e manutenção de software. Como já descrito anteriormente, o Processo Uni cado é uma metodologia iterativa e incremental, que praticamente nada tem a ver com desenvolvimento em cascata. Ou seja, esta alternativa não é a correta.
Página 61 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
(D) e (E) ERRADAS Estas duas alternativas trazem duas características associadas ao XP, e não ao Processo Uni cado. Justamente por isso que elas não devem ser escolhidas pelo candidato. A metodologia XP é destinada a grupos pequenos de desenvolvimento, e em projetos de duração de até 36 meses. Suas principais características são:
•
metáforas: utilização de comparações e analogias para facilitar entendimento;
•
design simples do sistema;
•
testes automatizados: testes de unidade e de aceitação;
•
refabricação: todo desenvolvedor tem o dever de melhorar um código que esteja funcionado porém está mal escrito;
•
programação de dupla: todo código deve ser implementado em dupla;
•
reuniões curtas e em pé;
•
semana de 40 horas: ao se trabalhar a mais se obtém resultados no início, mas com o passar do tempo surge desgaste;
•
integração contínua: eliminar erros graves de integração;
•
releases curtos: release é um conjunto de funcionalidades bem de nidas e que representam algum valor para o cliente. Um projeto XP pode ter uma ou mais releases no seu ciclo;
•
CRC: linguagem para modelagem de classes do XP que utiliza os story cards (cartões escritos pelos usuários onde são descritas funcionalidades do sistema).
Página 62 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
29.
Assuntos relacionados: Processo Uni cado, UML, Modelo Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 49
Volume 02 Edição 2
de Casos de Uso,
O modelo de casos de uso é um dos artefatos mais importantes previstos pelo Processo Uni cado. Sobre o modelo de casos de uso, são feitas as a rmativas a seguir. I Atores humanos são identi cados com base no papel que desempenham do ponto de vista do sistema, e não necessariamente no cargo que ocupam na instituição em que o sistema rodará. II A evolução dos casos de uso ao longo do ciclo de vida do projeto prevê que os mesmos ganhem em seu texto os detalhes especí cos de implementação necessários à construção do software na tecnologia adotada. III As combinações possíveis do uxo principal com os uxos alternativos de um caso de uso fornecem todos os cenários possíveis para o mesmo, os quais, por sua vez, podem ser utilizados como unidades de planejamento, implementação e testes. IV É recomendável que cada caso de uso seja decomposto funcionalmente e passe a incluir casos de uso menores, sucessivamente, até a menor unidade implementável possível, atendendo ao princípio da decomposição funcional. Estão corretas APENAS as a rmativas (a). I e II (b). I e III (c). II e III (d). II e IV (e). III e IV
Solução: O Processo Uni cado de desenvolvimento de software tem três princípios básicos:
• Centrado na arquitetura do sistema; • Metodologia iterativa e incremental; • Orientado a Diagrama de Casos de Uso. Diagrama de Caso de Uso é um dos principais diagramas da UML (Uni ed Modeling Language). Ele descreve, de forma grá ca e intuitiva, relacionamentos e dependências entre um grupo de casos de uso e os atores que interagem com o sistema. O ponto de vista assumido para essa descrição é sempre o dos atores envolvidos. Um ator é uma entidade externa ao sistema.
Ele é representado gra camente por meio
de um boneco e um rótulo com o seu nome. Geralmente, é um ator que inicia um caso de uso. Alguns exemplos de atores são: usuários, outros sistemas que fazem interface com o sistema que está sendo modelado e eventos externos. Um caso de uso é um conjunto de atividades do sistema que produz um resultado concreto e tangível. Ou seja, ele de ne uma grande função do sistema. Gra camente, casos de
Página 63 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
uso são representados por elipses com seus respectivos rótulos. En m, esse tipo de diagrama descreve interações entre os atores e o sistema em si. Veja um exemplo na Figura 3
Figura 3: exemplo de Diagrama de Caso de Uso. Os possíveis relacionamentos, que são representados no diagrama utilizando-se setas, são os seguintes:
• entre um ator e um caso de uso
Relacionamento de Associação:
de ne do ponto de vista externo uma fun-
cionalidade do sistema.
• entre atores
Relacionamento de Generalização:
de ne que o ator que está na origem da
seta tem seus próprios casos de uso. Já o ator que é apontado pela seta também tem os casos de uso do outro ator. Um exemplo típico desse tipo de relacionamento seria uma seta saindo do ator Cliente On-line e apontando para o ator Cliente .
• entre casos de uso
Relacionamento de Dependência-Inclusão:
um relacionamento de inclusão
de um caso de uso A (origem da seta) para um caso de uso B (destino da seta) indica que B é essencial para o comportamento de A. Pode ser dito também que B é parte de A;
Relacionamento de Dependência-Exclusão:
um relacionamento de extensão
de um caso de uso B para um caso de uso A indica que o caso de uso B pode ser
Página 64 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
acrescentado para descrever o comportamento de A (não é essencial). A extensão é inserida em um ponto de extensão do caso de uso A. Ponto de extensão em um caso de uso é uma indicação de que outros casos de uso poderão ser adicionados a ele. Quando o caso de uso for invocado, ele veri cará se suas extensões devem ou não ser invocadas;
Relacionamento de Generalização ou Especialização (é-um):
um relaciona-
mento entre um caso de uso genérico para um mais especí co, que herda todas as características de seu pai. Quanto um caso de uso B é-um caso de uso A, A será uma generalização de B, ou seja, B será uma especialização de A. A seguir, cada uma das a rmativas feitas no enunciado é analisada: I verdadeira, pois os casos de uso são utilizados para representar o comportamento do sistema, e não a hierarquia da instituição; II falsa, pois os casos de uso não devem incluir detalhes de implementação, e sim o comportamento esperado do sistema em um determinado cenário; III verdadeira, pois o uxo principal cobre o comportamento do sistema nos casos rotineiros e os uxos alternativos cobrem os casos excepcionais. Dessa forma, todas as alternativas conhecidas de comportamento do sistema são cobertas, o que ajuda na fase de implementação e de testes; IV falsa, pois o diagrama que oferece uma decomposição funcional do sistema é chamado Diagrama de Fluxo de Dados, e não o de Caso de Uso. Portanto, a resposta correta é a alternativa B.
Página 65 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
30.
Assuntos relacionados: Metodologia de Desenvolvimento Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 50
Volume 02 Edição 2
de Software,
Estudos baseados na análise de diversos projetos de desenvolvimento de software sugerem que tais projetos têm maior chance de sucesso quando empregam metodologia e gerenciamento alinhados ao paradigma de desenvolvimento de novos produtos, em contraponto ao paradigma de produção industrial. Com base nessas observações, a maioria das metodologias modernas de desenvolvimento de software recomenda: (a). concluir o trabalho de especi cações dos requisitos do sistema, antes de iniciar as atividades de projeto e implementação. (b). planejar detalhadamente no início do projeto todas as fases e atividades do mesmo, de forma que seja possível estimar com precisão o esforço necessário e os prazos de cada atividade. (c). providenciar, desde o início do projeto, mecanismos para prevenir e bloquear solicitações de mudanças de forma a garantir que será entregue exatamente o que foi especi cado. (d). dividir o trabalho em iterações curtas, com prazos xos, e não permitir que as mesmas avancem sobre os prazos, reduzindo o escopo da iteração, se necessário. (e). não produzir documentação técnica para o sistema, tendo em vista que a mesma já nasce condenada a car desatualizada, investindo melhor o tempo em atividades de implementação e testes exaustivos.
Solução: De certa forma, o ponto central que esta questão pretende avaliar é o fato da maioria das metodologias modernas de desenvolvimento de software abordarem projetos de desenvolvimento de novos produtos de forma cíclica (ou iterativa). Algumas dessas metodologias são: RUP (Rational Uni ed Process), XP (eXtreme Programming), Cleanroom, RAD (Rapid Application Development) e Espiral. (A) ERRADA Justamente pela abordagem das metodologias em questão ser cíclica, a fase de especi cação dos requisitos do sistema não é concluída antes de se iniciar as atividades de projeto e implementação. Ou seja, mesmo após o início das atividades de projeto e implementação pode haver, e geralmente há, novas especi cações de requisitos. (B) ERRADA Essa seria talvez uma boa abordagem, mas não é a que a maioria das metodologias modernas pregam. Elas pregam que no início do projeto, o planejamento e as estimativas do projeto como um todo sejam feitos de forma geral. Planejamentos e estimativas cada vez mais precisos são feitos a cada fase do projeto.
Página 66 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
(C) ERRADA Praticamente todas as metodologias de desenvolvimento de novos produtos, inclusive as modernas, pregam justamente o contrário dessa alternativa. Isso porque acredita-se que o quanto antes as eventuais mudanças forem consideradas em um projeto, menores serão os problemas com custo e cronograma desse projeto. As metodologias consideram também que pouco adianta ignorar as mudanças ao logo do projeto, pois, quando isso ocorre, mesmo que seja entregue exatamente o que foi especi cado, o novo produto não será considerado conforme ou de qualidade. (D) CORRETA Como já mencionado no início deste comentário, a abordagem cíclica da maioria das metodologias modernas é o centro desta questão. Essa é a alternativa correta. (E) ERRADA Essa é, sem dúvida, a primeira alternativa que o candidato deve desconsiderar. Algumas metodologias até apontam para uma simpli cação da documentação técnica, mas eliminar totalmente esse tipo de documentação não é uma alternativa.
Página 67 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
31.
Assuntos relacionados: Processo Uni cado, UML, Análise Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 51
Volume 02 Edição 2
de Caso de Uso,
A atividade analisar um caso de uso, prevista no Processo Uni cado, produz um artefato chamado realização de análise de caso de uso, que mostra como as classes de análise colaboram para que o caso de uso apresente o comportamento especi cado. A esse respeito, assinale a a rmação correta. (a). As classes de análise, neste artefato, devem conter referências a detalhes de implementação. (b). Ao realizar a análise de um caso de uso, possíveis falhas e omissões no mesmo se tornam mais perceptíveis, tratando-se, portanto, de uma oportunidade para re nar o modelo de casos de uso. (c). A interação entre as classes de análise é expressa primariamente através de diagramas de classes UML. (d). Um outro produto desta atividade é o artefato chamado realização de projeto de
caso de uso. (e). O diagrama de robustez do sistema, que especi ca os requisitos não funcionais de escalabilidade e tolerância a falhas, é um dos insumos para esta atividade.
Solução: A Análise de Caso de Uso é uma das atividades previstas na UML, e tem como nalidades:
•
identi car classes que desempenham os vários uxos de eventos no caso de uso;
•
distribuir o comportamento do caso de uso entre essas classes usando as realizações ;
•
identi car responsabilidades e atributos associações de classes;
•
identi car o uso de mecanismos arquiteturais para prover funcionalidades necessárias ao caso de uso e software em geral.
Obviamente, ao realizar essa análise de comportamento, possíveis falhas e omissões se tornam mais evidentes. Com isso, podemos a rmar que a resposta da questão é a alternativa B. Ainda com relação aos casos de uso, é importante frisar que muitas vezes é ela é tida como uma espécie de análise de caixa preta, no qual os detalhes internos sobre como o sistema responde às ações de um ator estão ausentes ou descritas muito resumidamente. Ou seja, os casos de uso não apresentam detalhes de implementação. Com isso, a alternativa A está errada. Os diagramas de classes, mencionados na alternativa C, são diagramas estáticos que descrevem os vários tipos de objetos no sistema e o relacionamento entre eles. Tais diagramas não provêem informação de interação entre as classes. Com isso, a alternativa C também está errada. Os artefatos da análise de caso de uso são Classe de Análise, Realização de Casos de Uso, Modelo de Design, Modelo de Análise.
Ou seja, Realização de Caso de Uso , citado na
Página 68 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
alternativa D, não é um produto da atividade Analisa um Caso de Uso . Por m, a alternativa E traz o diagrama de robustez. Tal diagrama geralmente é utilizado para passar da análise (o que) para o desenho (como). Como ele não é um insumo para a análise de caso de uso, esta alternativa está errada.
Página 69 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
32.
Volume 02 Edição 2
Assuntos relacionados: Engenharia de Software, RUP, Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 52 Sobre testes no Processo Uni cado, é correto a rmar que um(a) (a). caso de teste é composto por um ou mais planos de testes. (b). script de teste de ne o cronograma e a estratégia utilizados na iteração. (c). modelo de teste é um componente que efetua testes unitários em uma ou mais classes de domínio. (d). prova de conceito é um tipo especial de caso de teste. (e). avaliação de teste apresenta os resultados dos testes em termos de defeitos e cobertura.
Solução: O Processo Uni cado (PU) surgiu como um processo popular para o desenvolvimento de software visando à construção de sistemas orientados a objetos (o RUP Rational Uni ed Process é um re namento do PU). Ou seja, Processo Uni cado é um processo de desenvolvimento, já o Rational Uni ed Process é um produto da Rational IBM, que tem no seu núcleo o Processo Uni cado. O Processo Uni cado utiliza um paradigma evolucionário para o desenvolvimento de softwares. O ciclo de vida iterativo é baseado em re namentos e incrementos sucessivos a m de convergir para um sistema adequado. Em cada iteração incrementa-se um pouco mais o produto, baseando-se na experiência obtida nas iterações anteriores e no feedback do usuário. O Processo Uni cado consiste da repetição de uma série de ciclos durante a vida de um sistema. Cada ciclo é concluído com uma versão do produto pronta para distribuição e é subdividido em quatro fases: concepção, elaboração, construção e transição. Cada fase, por sua vez, é subdivida em iterações que passam por todos os cincos uxos do trabalho do processo: análise de requisitos, análise, projeto, implementação e teste. O
uxo de teste é desenvolvido com base no produto do uxo de implementação.
Os com-
ponentes executáveis são testados exaustivamente no uxo de teste para então ser disponibilizados aos usuários nais. O principal propósito do uxo de teste é realizar vários testes e sistematicamente analisar os resultados de cada teste. Componentes que possuírem defeitos retornarão a uxos anteriores como os uxos de projeto e implementação, onde os problemas encontrados poderão ser corrigidos. O teste de um sistema é primeiramente empregado durante a fase de elaboração, quando a arquitetura do sistema é de nida, e durante a fase de construção quando o sistema é implementado. Um planejamento inicial de testes pode ser feito durante a fase de concepção. Na fase de transição, o uxo de testes se limita ao conserto de defeitos encontrados durante a utilização inicial do sistema. O produto do uxo de teste é o modelo de teste, esse modelo primeiramente descreve como componentes executáveis, provenientes do uxo de implementação, são testados.
Página 70 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Mais especi camente, um
modelo de teste
Volume 02 Edição 2
descreve como os testes de integração e de
sistema exercitarão componentes executáveis a partir do modelo de implementação. Todos os casos de teste devem ser registrados no modelo de teste. Uma das principais atividades de teste no Processo Uni cado é a criação do modelo de teste, que deve descrever como os testes de integração e de sistema exercitarão componentes executáveis a partir do modelo de implementação. O modelo de teste também descreve como os testes de integração devem ser executados, bem como os testes de unidade. O modelo de testes também pode descrever como aspectos especí cos dos sistemas testados, como por exemplo, se a interface do usuário é útil e consistente ou se o manual do usuário cumpre seu objetivo. O papel do uxo de teste é veri car se os resultados do uxo de implementação cumprem os requisitos estipulados por clientes e usuários, para que possa ser decidido se o sistema necessita de revisões ou se o processo de desenvolvimento pode continuar. Um
caso de teste
é um conjunto especí co de entradas de teste, condições de execução e
resultados esperados, identi cados com a nalidade de avaliar um determinado aspecto de um item de teste-alvo. Um
plano de testes
é uma de nição das metas e dos objetivos dos testes no escopo da
iteração (ou projeto), os itens-alvo, a abordagem adotada, os recursos necessários e os produtos que serão liberados. Um
script de teste é um conjunto de instruções passo a passo que permitem a execução de
um teste. Os scripts de teste podem assumir a forma de instruções de texto documentadas e executadas manualmente ou de instruções que podem ser lidas pelo computador para ativar a execução automática do teste. Uma
prova de conceito
é, como o nome sugere, uma prova de uma teoria.
As provas
de conceito apenas a rmam algo que antes só existia no papel e que, portanto, não existia nenhuma prova que de fato aquilo funcionaria. Durante o processo da análise arquitetural, aspectos de risco do projeto podem merecer uma investigação mais detalhada, para isso uma prova de conceito pode ser construída e pode tomar as seguintes formas: Modelagem conceitual; Protótipo Rápido; Simulação; Conversão automática de especi cações em código; Especi cações executáveis ou a Construção de picos invertidos . A
avaliação de teste é a avaliação dos resultados de um conjunto de testes.
Ela geralmente
inclui uma lista de defeitos e seus níveis de prioridade, além de informações como a razão de defeitos por linha de código. As principais medidas de um teste incluem a cobertura e a qualidade.
A cobertura é a
medida da abrangência do teste e é expressa pela cobertura dos requisitos e casos de teste ou pela cobertura do código executado. A qualidade é uma medida de con abilidade, de estabilidade e de desempenho do objetivo do teste (sistema ou aplicativo em teste). Ela se baseia na avaliação dos resultados do teste e na análise das solicitações de mudança (defeitos) identi cadas durante o teste. Dado todo o exposto, a alternativa a ser marcada é a letra (E).
Página 71 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
33.
Assuntos relacionados:
Volume 02 Edição 2
UML, Diagrama de Estados, Diagrama de Classes, Diagrama de
Atividades, Diagrama de Componentes, Diagrama de Sequência,
Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas Ano: 2008 Questão: 53
- Eng. de Software
Aplicações com interfaces web podem apresentar uxos de navegação complexos entre suas páginas.
Há links e botões a serem clicados a qualquer momento, disparando eventos de
transição de uma página para outra e até para si mesma. Utilizando Javascript no lado do cliente, e possivelmente recursos Ajax, é possível habilitar ou desabilitar links e permitir ou impedir o envio de formulários com base em condições veri cadas em tempo real. Dentre os tipos de diagrama UML listados a seguir, qual o que melhor modelaria o uxo de navegação descrito? (a). Classe (b). Atividade (c). Máquina de estado (d). Componente (e). Seqüência
Solução: Antes de apontar qual é a alternativa correta, vamos rever cada tipo de diagrama UML envolvido nesta questão.
Diagrama de Classes O objetivo de um diagrama de classes é descrever estaticamente os vários tipos de objetos no sistema, bem como o relacionamento entre eles. É importante ressaltar que esse tipo de diagrama pode oferecer três perspectivas distintas:
• Conceitual:
perspectiva destinada aos clientes. Ela representa os conceitos do domínio
em estudo;
• Especi cação:
perspectiva destinada às pessoas que não precisam saber detalhes de
desenvolvimento. Ela evidencia as principais interfaces da arquitetura e métodos, sem detalhes sobre como eles serão implementados;
• Implementação:
perspectiva destinada ao time de desenvolvimento.
Ela aborda
vários detalhes importantes sobre a implementação. Como o diagrama de classes faz uma descrição estática do sistema, ele não é adequado para modelar nenhum tipo de uxo. Ou seja, a alternativa A não é a que procuramos.
Diagrama de Atividades Um diagrama de atividades é um diagrama de estados em que todos ou a grande maioria dos estados representam execuções de ações (atividades internas ao sistema). Portanto, ele é um grá co de uxo que evidencia os controles e as execuções das atividades. principais elementos são:
Página 72 de 114
www.handbookdeti.com.br
Seus
Handbook de Questões de TI Comentadas para Concursos
• início:
Volume 02 Edição 2
círculo preenchido;
• estado ou atividade: • transição:
retângulo com bordas arredondadas;
seta;
• decisão ou desvio:
losango - uma entrada e mais de uma saída;
• intercalação ou merge: • separação ou fork: • junção ou join:
losango - mais de uma entrada e uma saída;
barra horizontal - uma entrada e mais de uma saída;
barra horizontal - mais de uma entrada e uma saída.
Um diagrama de atividades descreve uma sequência de atividades. Então, se ele fosse utilizado para descrever o uxo de navegação descrito no enunciado, o foco caria nos eventos dos links e botões ao invés de nas páginas.
Ou seja, dentre as alternativas que temos, o
diagrama de atividades não é o mais adequado para o que se pede no enunciado.
Diagrama de Estados Diagrama de estados também é comumente chamado de máquina de estados. Ele mostra os diferentes estados de um objeto durante sua vida, bem como os estímulos que acionam as mudanças de estado. Ou seja, o diagrama de estados vê o ciclo de vida dos objetos como máquinas de estados (automatos) nitos. O termo nito signi ca que existe um número nito de estados que o objeto pode assumir, bem como é nito o número de estímulos que acionam as mudanças de estado. Na UML, o estado do objeto é de nido pelos valores dos atributos de um objeto de uma determinada classe do modelo. No entanto, é importante ressaltar que nem todas as variações de valores de atributos devem ser representadas por estados exclusivos, mas apenas aquelas que podem afetar signi cativamente o trabalho do objeto no contexto da aplicação. Existem dois tipos especiais de estados: inicial e nal. Eles são especiais porque nenhum evento pode fazer com que um objeto retorne para seu estado inicial, bem como não existe nenhum evento capaz de tirar o objeto de seu estado nal. A Figura 4 mostra um exemplo de um diagrama de estados para um objeto do tipo servidor. Nele são mostrados 4 estados (pronto, escutando, trabalhando e desligando), além dos estados inicial e nal. Também são mostrados os estímulos que acionam as mudanças de estado. É este o tipo de diagrama adequado para modelar o uxo de navegação entre páginas web. As páginas seriam encaradas como os objetos e os eventos de links e botões seriam modelados como os estímulos.
Diagrama de Componentes Um diagrama de componente mostra os componentes do software (por exemplo, componentes CORBA, Java Beans ou seções do sistema que são claramente distintas) e os artefatos de que eles são feitos, como arquivos de código-fonte, bibliotecas de programação ou tabelas de bancos de dados relacionais. Sendo assim, nem de longe ele é útil para modelar algum tipo de uxo de sistema.
Página 73 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
Figura 4: exemplo de Diagrama de Estados.
Diagrama de Sequência Seu principal objetivo é descrever a sequência ao longo do tempo das comunicações entre objetos.
A ênfase temporal é obtida com a linha vertical de tempo que está sempre
presente neste tipo de diagrama. Assim como o diagrama de comunicação, o diagrama de sequência é um tipo de diagrama de interação.
Ou seja, eles descrevem trocas de men-
sagens em situações dinâmicas. Perceba, portanto, que este tipo de diagrama não se mostra adequado a modelagem de uxo de navegação.
Página 74 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
34.
Volume 02 Edição 2
Assuntos relacionados: UML, Diagrama de Classes, Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 54
A gura acima mostra um diagrama de classes UML desenvolvido para um projeto em que ainda não se sabe em que linguagem será realizada a implementação.
Sobre o diagrama,
assinale a a rmação correta. (a). Há um erro na cardinalidade da associação entre ClasseA e ClasseB, pois se trata de uma composição e, como tal, um objeto da ClasseB só pode estar associado a um objeto da ClasseA. (b). Há uma dependência cíclica entre ClasseB, ClasseC e ClasseE, o que não é permitido pela UML. (c). O fato de que ClasseD generaliza ClasseA e ClasseB se traduz em herança múltipla, o que não é permitido pela UML. (d). Retirando a ClasseA, o diagrama resultante corresponde ao padrão de projeto
composite. (e). Invertendo o sentido de todas as generalizações, o diagrama resultante corresponde ao padrão de projeto chain of responsability.
Solução: Lembre-se que diagramas de classe nos permitem identi car tanto o conteúdo de uma classe quanto o relacionamento entre várias classes. Em um diagrama de classe, podemos mostrar as variáveis e métodos membros de uma classe. Podemos também mostrar se uma classe herda de outra, ou se mantém uma referência para outra. (A) CORRETA O relacionamento todo-parte , também conhecido como composição agregada, ou relacionamento tem-um ou parte-de , indica que um objeto (o todo) é composto de outros objetos (as partes). Com a composição agregada, o relacionamento entre os objetos é muito mais forte que com a associação, pois nela o todo não pode existir sem suas partes e as partes não podem existir sem o todo. Vários pontos importantes são inerentes a este fato. São eles:
•
remoção do todo implica na remoção das partes;
Página 75 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
•
existe apenas um todo, isto é, as partes não são compartilhadas com outros todos;
•
as partes não podem ser acessadas fora do todo, ou seja, elas são particulares para o todo;
•
uma mensagem destinada a uma parte deve ser enviada para o todo e retransmitida por ele à parte.
Isto signi ca que a agregação composta deve ser utilizada somente quando um objeto é considerado como uma parte de outro objeto e não apenas uma associação ocasional com existência e visibilidade independentes. A m de representar este tipo de relacionamento, utiliza-se uma linha que termina com um símbolo de diamante preenchido, símbolo este colocado contra o todo. Além disso, para evitar qualquer confusão possível, ao todo é atribuída, explicitamente, a multiplicidade de 1 (um), mesmo porque apenas um todo é possível. A partir do diagrama UML e do que expomos, conseguimos classi car a Classe A como sendo o todo e a Classe B como a parte do relacionamento. Assim, podemos veri car que a alternativa
A
está correta, pois a multiplicidade 1 (um) deveria ser atribuída ao todo, e
não uma multiplicidade denotada pelo símbolo
* que representa nenhum ou mais objetos.
(B) ERRADA Na verdade, o que não é permitido na UML é o que foge da sua semântica e sintaxe, pois lembremos que UML é uma linguagem de modelagem. Logo, a UML em sua semântica e sintaxe não impede a existência da dependência cíclica, pois essa não se preocupa com problemas da arquitetura do sistema ou da solução. (C) ERRADA Um relacionamento entre classes é chamado de relacionamento de generalização. Esse relacionamento também pode ser chamado de relacionamento de especialização, pois a generalização e a especialização são dois pontos de vista do mesmo relacionamento: as Classes A e B são generalizações da Classe D e esta é uma especialização das anteriores. No diagrama de classes, uma generalização é representada por uma echa partindo da subclasse (no caso, a Classe D) em direção à(s) superclasses (no caso, as Classes A e B). É importante mencionar que, assim como a alternativa B, independentemente da linguagem de programação adotada permitir (C++) ou não (Java) herança múltipla, não será a UML que restringirá a modelagem de herança múltipla.
Assim, em UML, uma classe pode ter
mais de uma superclasse. No nosso caso, a Classe D possui tanto características da Classe A quanto da Classe B. Concluímos, assim, que a alternativa está errada. (D) ERRADA
Composite compõe objetos em estruturas do tipo árvore para representar hierarquias todoparte. Faz também com que o tratamento dos objetos individuais e de suas composições seja uniforme.
Página 76 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
Aplicações grá cas como editores de desenho e sistemas de captura de esquema deixam os usuários construírem diagramas complexos a partir de Componentes simples.
O usuário
pode agrupar Componentes para formar Componentes maiores, que, por sua vez, podem ser agrupados para formar Componentes maiores ainda. O Padrão Composite descreve como usar composição recursiva, de modo que os clientes não tenham que fazer distinção entre componentes simples e composições. A Figura 5 apresenta esta estrutura.
Figura 5: estrutura do padrão de projeto Composite. Observe que, mesmo após a retirada da Classe A não conseguimos chegar à estrutura apresentada na gura: o Composite é composto por componentes e é um lho deste através da herança. Na questão não temos essa composição e herança ao mesmo tempo. Portanto, alternativa errada. (E) ERRADA O padrão de projeto de software Chain of Responsibility representa um encadeamento de objetos receptores para o processamento de uma série de solicitações diferentes. Esses objetos receptores passam a solicitação ao longo da cadeia até que um ou vários objetos a trate. Cada objeto receptor possui uma lógica descrevendo os tipos de solicitação que é capaz de processar e como passar adiante aquelas que requeiram processamento por outros receptores. A delegação das solicitações pode formar uma árvore de recursão, com um mecanismo especial para inserção de novos receptores no nal da cadeia existente. Dessa forma, fornece um acoplamento mais fraco por evitar a associação explícita do remetente de uma solicitação ao seu receptor e dar a mais de um objeto a oportunidade de tratar a solicitação. Um exemplo da aplicação desse padrão é o mecanismo de herança nas linguagens orien-
Página 77 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
tadas a objeto: um método chamado em um objeto é buscado na classe que implementa o objeto e, se não encontrado, na superclasse dessa classe, de maneira recursiva. A Figura 6 apresenta esta estrutura.
Figura 6: representação da estrutura do padrão Chain of Responsability. Como podemos observar, a estrutura do padrão é bem simples e possui um auto-relacionamento (successor ), o que nos permite descartar a alternativa.
Página 78 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
35.
Assuntos relacionados:
Volume 02 Edição 2
Engenharia de Software, Testes de Software, Complexidade Ci-
clomática,
Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas Ano: 2008 Questão: 55
- Eng. de Software
Considere o seguinte código de um método de uma classe Java:
public boolean primo(int x) { if (x == 1 || x == 2) { return true; } int raiz = (int) Math.sqrt((double)x); for (int i = 2; i <= raiz; i++) { if (x % i == 0) { return false; } } return true; } } Qual a complexidade ciclomática do método? (a). 2 (b). 3 (c). 4 (d). 5 (e). 6
Solução: A complexidade ciclomática, conhecida também como complexidade condicional, é uma métrica de software que fornece uma medida quantitativa da complexidade lógica de um programa estruturado (cíclico). Ou seja, essa métrica mede o número de caminhos linearmente independentes do conjunto básico de um programa, indicando um limite máximo para o número de casos de teste que dever ser executados para garantir que todas as instruções do programa sejam executadas pelo menos uma vez. Um caminho independente é qualquer caminho que introduz pelo menos um novo conjunto de instruções ou uma nova condição. Existem várias formas de medir a complexidade ciclomática de um programa. Uma forma rápida e prática, que é o que nos interessa em uma prova, é contabilizar o número total de predicados lógicos (comparações expressões booleanas) que aparecem em uma rotina. Seja
n
esse número, a complexidade ciclomática é dada então por
n + 2.
No nosso caso, o número total de predicados lógicos é 3 (o primeiro if (x == 1 || x ==
2), a condição no for (int i = 2; i <= raiz; i++) e o segundo if (x % i == 0) ). Então, a complexidade ciclomática do procedimento primo é igual
Página 79 de 114
www.handbookdeti.com.br
5.
Handbook de Questões de TI Comentadas para Concursos
36.
Assuntos relacionados:
Volume 02 Edição 2
Algoritmos de Ordenação, Heapsort, Ordenação por Árvore de
Decisão, Ordenação por Comparação, Quicksort, Ordenação por Inserção, Ordenação por Intercalação,
Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas Ano: 2008 Questão: 56
- Eng. de Software
Sobre o algoritmo de ordenação heapsort, assinale a a rmação correta. (a). Utiliza ordenação por árvore de decisão, ao invés de ordenação por comparação. (b). A estrutura de dados que utiliza, chamada heap, pode ser interpretada como uma árvore binária. (c). Seu desempenho de pior caso é pior do que o do algoritmo quicksort. (d). Seu desempenho de pior caso é o mesmo da ordenação por inserção. (e). Seu desempenho de pior caso é menor do que o da ordenação por intercalação.
Solução: O Heapsort utiliza uma estrutura de dados chamada heap binário (árvore binária mantida na forma de vetor) para ordenar os elementos a medida que os insere na estrutura. Dessa forma, ao nal das inserções, os elementos podem ser sucessivamente removidos da raiz da heap, na ordem desejada. Para uma ordenação crescente, deve ser construída uma heap máxima (o maior elemento ca na raiz). Já para uma ordenação decrescente, deve ser construída uma heap mínima (o menor elemento ca na raiz). Em resumo, as principais características desse algoritmo são:
•
ordenação por seleção;
•
heap gerada e mantida no próprio vetor a ser ordenado (utilização e ciente da memória);
•
complexidade (em qualquer caso: pior, médio ou melhor): O(n log n);
•
consumo de memória ao construir a árvore;
•
não é indicado para vetores pequenos por conta do tempo de construção da árvore.
(A) ERRADA Algoritmos que se baseiam apenas em comparações entre os elementos de entrada para efetuarem ordenações são denominados algoritmos de ordenação por comparação. Os algoritmos Heapsort, Quicksort e Ordenação por Intercalação (Mergesort) são alguns exemplos desse tipo de algoritmo. Uma árvore de decisão representa, de modo abstrato, as comparações executadas por um algoritmo de ordenação. Suas principais propriedades são: é uma árvore binária; possui no mínimo n!
folhas (para n igual ao número de elementos a serem ordenados); cada folha
contém uma permutação dos dados de entrada. O caminho mais longo da árvore representa o pior caso de execução do algoritmo. É sempre possível construir uma árvore de decisão para algoritmos de ordenação por comparação. Essa construção é realizada da seguinte forma:
•
xe o n;
Página 80 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
•
Volume 02 Edição 2
veri que qual é a primeira comparação do algoritmo, que pode resultar em sim ou não . Nesse passo, é necessário saber quais são os índices que estão sendo comparados;
•
a primeira comparação é colocada na raiz da árvore de decisão, incluindo os arcos sim e não ;
•
repita os passos anteriores para cada nó da árvore. Em cada comparação, é necessário saber quais são os índices que estão sendo comparados. Observe que sempre se deve analisar os índices originais, ou seja, não devem ser consideradas as trocas de índices ocorridas durante a execução do algoritmo.
Tendo em vista os conceitos apresentados, conclui-se que o algoritmo Heapsort pode ser representado por uma árvore de decisão, já que é um dos algoritmos que realiza ordenação por comparação. Portanto, essa alternativa está errada. (B) CORRETA Considerando a explicação apresentada acima, se torna fácil concluir que é essa a alternativa correta. (C) ERRADA Seu desempenho no pior caso (igual ao do melhor ou médio caso) é O(n log n).
Esse é
o melhor resultado dentre os algoritmos baseados em comparações. Esse conhecimento já bastaria para concluir que essa alternativa está incorreta. As complexidades do algoritmo Quicksort são
O(nlogn)
para o melhor caso e
O(n2 )
para o pior caso. É sempre importante
ter em mente que quanto mais e ciente for a escolha do pivot, mais e ciente será o desempenho da ordenação do algoritmo Quicksort. (D) ERRADA No pior caso, a ordenação por inserção apresenta complexidade igual a caso são necessárias
n(n − 1)/2 ≈
O(n2 ),
pois nesse
(n2 )/2 comparações. Esse cenário sempre ocorre quando
a sequência de entrada está ordenada na ordem inversa à desejada. (E) ERRADA Também chamado de Mergesort, o algoritmo de ordenação por intercalação, um algoritmo recursivo, se utiliza da técnica dividir para conquistar . Sua idéia básica é que é mais fácil criar uma sequência ordenada a partir de duas outras também ordenadas.
Para isso, ele
divide a sequência original em pares de dados, as ordena, depois as agrupa em sequências de quatro elementos, e assim por diante, até ter toda a sequência dividida em apenas duas partes. Sua complexidade tanto para o pior quanto para o melhor caso é O(n log n). Seu ponto fraco é a baixa e ciência na utilização de memória, complexidade espacial O(n). Contudo, existe uma variante desse algoritmo que realiza a ordenação no próprio vetor de entrada, ou seja, complexidade espacial O(1), mas a sua implementação é extremamente complicada.
Página 81 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
37.
Volume 02 Edição 2
Assuntos relacionados: Estruturas de Dados, Lista Encadeada, Tabela Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 57 Informações comuns às questões de números 57 e 58.
Hash,
Considere uma tabela hash H, onde H[i] denota uma posição da tabela.
H é implemen-
tada usando uma função h(k) para determinar a posição i de armazenamento, k sendo a chave do elemento de dados x a ser armazenado em H, e denotada por k = chave[x]. H é um hash com encadeamento, ou seja, cada H[i] é uma lista encadeada que armazenará os elementos de dados que, de outra forma, colidiriam para a posição. Nesta implementação, as listas são duplamente encadeadas, ou seja, cada elemento e da lista armazena também os ponteiros proximo[e] e anterior[e]. Cada lista L possui ainda o valor inicio[L], que aponta para o primeiro elemento da lista. NIL representa um ponteiro vazio.
←
denota o operador de atribuição.
O pseudocódigo a seguir mostra uma operação nesta estrutura, porém apresenta erro em uma de suas linhas. As linhas estão numeradas apenas para facilitar a correspondência com as alternativas. 01 proximo[chave[x]]
←
inicio[H[h(chave[chave[x]])]]
02 se inicio[H[h(chave[chave[x]])]] 03
6=
NIL
então inicio[anterior[inicio[H[h(chave[chave[x]])]]]]
04 inicio[H[h(chave[chave[x]])]] 05 anterior[chave[x]]
←
←
←
chave[x]
chave[x]
NIL
O erro citado é corrigido por (a). 01 chave[x]
←
inicio[H[h(chave[x])]]
(b). 02 se proximo[H[h(chave[chave[x]])]]
6=
NIL
(c). 03 então anterior[inicio[H[h(chave[chave[x]])]]] (d). 04 proximo[inicio[H[h(chave[chave[x]])]]] (e). 05 anterior[chave[x]]
←
←
←
chave[x]
proximo[chave[x]]
inicio[H[h(chave[chave[x]])]]
Solução: Antes de partirmos para a resolução da questão, relembremos as estruturas de dados citadas (Tabela Hash e Lista Encadeada). As Tabelas Hash são utilizadas geralmente em cenários em que o número real de chaves armazenadas é menor que o número de chaves possíveis. Nessas condições, Tabelas Hash tornam-se uma alternativa efetiva ao endereçamento direto de uma matriz, visto que usam matrizes de tamanho proporcional ao número de chaves realmente armazenadas. Em uma Tabela Hash, a função hash (na questão, h(k)) é utilizada para calcular em qual entrada da tabela o elemento de chave k será armazenado.
Se a tabela possuir tamanho
m, isto é, m entradas, então o espaço de saída da função h(k) será:
0, 1, . . . , m-1.
O
propósito da função hash é reduzir a faixa de índices da matriz que precisam ser tratados.
Página 82 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
Essa redução, contudo, possui um preço, o de que duas chaves distintas podem mapear para a mesma entrada na tabela. As Listas Encadeadas são estruturas de dados nas quais os objetos estão arranjados em uma ordem linear, fornecendo uma simples e exível representação para conjuntos dinâmicos. Na lista L em questão, cada elemento é um objeto com um campo chave e dois outros campos ponteiros: próximo e anterior. Dado um elemento e na lista, proximo[e] aponta para o seu sucessor na lista encadeada, e anterior[e] aponta para o seu predecessor. Se anterior[e] = NIL, o elemento e não possui predecessor e ele é o primeiro elemento, ou cabeça, da lista (lembre-se que essa lista é apenas duplamente encadeada, e não circular). Pelo lado oposto, se proximo[e] = NIL, o elemento e não possui sucessor, sendo, então, o último elemento, ou rabo, da lista. Pelo enunciado, podemos notar que a referida lista (L) também possui um atributo inicio, que aponta para o primeiro elemento da lista. Se inicio[L] = NIL, então a lista é vazia. Assim sendo, partiremos para a resolução da questão. Ao analisar o pseudocódigo, podemos notar que a função hash h(k) é alimentada pela chave da chave do elemento x e não apenas pela chave de x (chave[x]) como o enunciado apresenta, o que poderia nos confundir. Nesse pseudocódigo, todas as linhas estão corretas com exceção da linha 03.
Vejamos,
passo a passo, o porquê: 1. chave[x]: determina a chave do elemento x; 2. chave[chave[x]]: determina a chave da chave do elemento x; 3. h(chave[chave[x]]): calcula a entrada da Tabela H que será indexada; 4. H[h(chave[chave[x]])]: representa uma lista duplamente encadeada que está localizada na entrada h(chave[chave[x]]) da Tabela H; 5. inicio[H[h(chave[chave[x]])]]: recupera o primeiro elemento (cabeça) da lista H[h(chave[chave[x]])]. Além disso, como o código da linha 03 é executado apenas se a condição da linha 02 é satisfeita, temos, obviamente, que inicio[H[h(chave[chave[x]])]] é uma referência de memória válida (6= NIL); 6. anterior[inicio[H[h(chave[chave[x]])]]]: esta sequência de indexações recupera o ponteiro para o nó que precede o nó da cabeça. Como estamos tratando com uma lista duplamente encadeada e não circular, ca evidente que tal ponteiro possui valor NIL; 7. inicio[anterior[inicio[H[h(chave[chave[x]])]]]]: é neste nível de indexação que chegamos ao erro.
Ao substituirmos a parte interna do colchete mais externo por NIL, como
vimos no item anterior, obteremos inicio[NIL], o que representa uma violação de acesso à memória. Portanto, a resposta correta é a alternativa
Página 83 de 114
www.handbookdeti.com.br
C.
Handbook de Questões de TI Comentadas para Concursos
38.
Assuntos relacionados: Estruturas de Dados, Lista Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 58
Volume 02 Edição 2
Encadeada, Tabela Hash,
Corrigindo-se o erro citado, o pseudocódigo corresponderia a uma operação de (a). inserção de x em H. (b). inserção da chave de x em H. (c). inserção da chave da chave de x em H. (d). remoção da chave de x de H. (e). remoção de x de H.
Solução: Após a correção do erro existente no pseudocódigo, teremos: 01 proximo[chave[x]]
←
inicio[H[h(chave[chave[x]])]]
02 se inicio[H[h(chave[chave[x]])]] 03
6=
NIL
então anterior[inicio[H[h(chave[chave[x]])]]]
04 inicio[H[h(chave[chave[x]])]] 05 anterior[chave[x]]
←
←
←
chave[x]
chave[x]
NIL
A partir da análise do pseudocódigo acima, constamos que estamos diante de uma inserção, pois:
•
a atribuição existente na linha 01 faz com que o campo ponteiro próximo do nó chave[x] passe apontar para a atual cabeça da lista.
Para ns meramente ilustrativos, veja
abaixo a Figura 7 que apresenta dois cenários iniciais possíveis da lista. O primeiro em que ela é vazia e o segundo em que há apenas um nó;
•
na linha 03, ao ponteiro anterior da atual cabeça da lista (inicio[H[h(chave[chave[x]])]]), é atribuído o endereço do nó que contém a chave de x (chave[x]). Lembre-se que antes dessa atribuição, anterior[inicio[H[h(chave[chave[x]])]]] apontava para NIL, por se tratar do primeiro nó da lista. A Figura 8 ilustra esse cenário, o qual nós chamaremos de 2.1, pois advém do cenário 2 que foi apresentado no item anterior;
•
na linha 04, ao atributo inicio da lista H[h(chave[chave[x]])] é atribuído o nó que contém a chave x. Em outras palavras, o nó x passa a ser o nó cabeça da lista. A Figura 9 ilustra dois possíveis casos, um na lista vazia (1.1) e o outro em uma lista contendo um nó (2.2);
•
na linha 05, ao ponteiro anterior do nó contendo a chave x, e atual cabeça da lista, é atribuído o valor NIL, uma vez que ele não possui predecessor.
Novamente, para
ilustrar essa atribuição, nós recorreremos a Figura 10, a qual apresenta o cenário 1.2, proveniente de uma lista inicialmente vazia, e o cenário 2.3, proveniente de uma lista não-vazia.
Página 84 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Figura 7: ilustração da linha 01 do pseudocódigo.
Figura 8: ilustração da linha 03 do pseudocódigo.
Página 85 de 114
www.handbookdeti.com.br
Volume 02 Edição 2
Handbook de Questões de TI Comentadas para Concursos
Figura 9: ilustração da linha 04 do pseudocódigo.
Figura 10: ilustração da linha 05 do pseudocódigo.
Página 86 de 114
www.handbookdeti.com.br
Volume 02 Edição 2
Handbook de Questões de TI Comentadas para Concursos
39.
Assuntos relacionados: Estruturas de Dados, Árvore Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 59
Volume 02 Edição 2
B,
Considere uma árvore B de grau mínimo igual a 2 (o que signi ca que cada nó pode ter, no máximo, 3 chaves) inicialmente vazia, na qual são inseridas as chaves N, D, T, B, Z, K, R, F, G, nesta ordem, as quais são comparadas com base na ordem do alfabeto. Considerando o algoritmo de inserção em uma única passagem, conclui-se que (a). a altura da árvore resultante será 3. (b). B estará em um nó interno. (c). o nó raiz conterá a chave K. (d). haverá 4 nós folhas. (e). F e G pertencerão à mesma folha.
Solução: Árvores B são árvores de busca balanceadas projetadas para trabalhar com discos magnéticos ou outros dispositivos de armazenamento secundário. Antes de solucionarmos a presente questão, é de enorme importância que vejamos algumas características da árvore B. São elas:
•
para um dado nó x, n[x] representa o atual número de chaves armazenadas em x;
•
as n[x] chaves são armazenadas em ordem não-decrescente (chave1[x]
≤
≤
chave2[x]
≤
...
chaveN[x]);
•
folha[x] é um valor booleano verdadeiro se x é folha e falso se x é um nó interno;
•
se x é um nó interno, então ele contém n[x] + 1 ponteiros para os seus lhos. Nesse caso, note que os nós folhas, os quais estão localizados nos extremos da árvore, não têm lhos;
•
as chaves existentes em um nó x separam as faixas de chaves armazenadas em cada sub-árvore. Por exemplo, considere um nó x que contém apenas uma chave de valor V (o que signi ca, como já vimos, que ele poderá possuir até dois nós lhos: sub-árvore esquerda e sub-árvore direita). Nesse cenário, qualquer chave com valor menor que V encontrar-se-á na sub-árvore esquerda. Por outro lado, chaves com valor maior que V estarão localizadas na sub-árvore direita;
•
em uma árvore B, todas as folhas se encontram na mesma profundidade, a qual é representada pela altura da árvore. Por convenção, o nó raiz da árvore B encontra-se na altura 0 (zero);
•
existem limites máximos e mínimos no número de chaves que um nó pode conter. Esse limite é expressado em termos do grau mínimo da árvore B (considerado, aqui, como um parâmetro t). Assim, cada nó diferente da raiz deve ter, pelo menos, t - 1 chaves, isto é, no mínimo t lhos (se a árvore é não-vazia, o nó raiz deve ter pelo menos uma chave). No que se refere ao limite máximo, cada nó pode conter até 2t - 1 chaves, ou seja, 2t lhos;
Página 87 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
•
Volume 02 Edição 2
quando da tentativa de inserção de uma chave em um nó x cheio (contendo 2t - 1 chaves), uma operação fundamental, denominada split, é efetuada. Tal operação consiste em: dividir o nó x em dois nós lhos, cada um contendo t - 1 chaves; mover a chave mediana de x para o nó pai de x. Se x não possuir nó pai, então a árvore cresce em altura por um;
•
antes da inserção de uma chave em um nó x cheio, devemos assegurar que o nó pai de x também não esteja cheio antes do split de x, evitando, dessa forma, que splits sejam realizados recursivamente;
•
após a ocorrência de um split, a nova chave será inserida no nó folha existente em uma das sub-árvores criadas.
Agora estamos aptos a resolver a presente questão.
O primeiro passo da criação de uma
árvore B consiste em alocar um nó raiz vazio, o qual não possui chaves e, logicamente, nem nós lhos. Em seguida, nós iremos inserir as chaves, uma a uma, respeitando os limites que os nós possuem.
No caso da árvore em questão, com t igual a 2, um nó terá no mínimo
uma chave e no máximo 3 chaves. A Figura 11, apresenta, passo a passo, a inserção de cada chave (nós que são modi cados pelo processo de inserção estão sombreados). Ao observarmos a Figura 11, podemos notar que:
•
1) representa o estado inicial da nossa árvore, a qual contém apenas um nó (raiz) vazio;
•
2), 3) e 4) são os resultados das inserções das respectivas chaves, N, D e T, o que nada mais é que uma simples inserção no nó raiz;
•
5) é o resultado da inserção da chave B na árvore prévia. O nó raiz DNT, que está cheio, é dividido em dois nós contendo D e T, a chave N é movida para o novo nó raiz, e a árvore B cresce em altura por um;
•
6) é o resultado da inserção da chave Z na árvore prévia, a qual é uma simples inserção na folha;
•
O mesmo ocorre em 7) e 8) para as chaves K e R, respectivamente;
•
9) é o resultado da inserção da chave F. O nó folha BDK é divido antes de F ser inserida no nó mais a direita das duas folhas (nó K);
•
10) é o resultado da inserção da chave G na folha FK.
Portanto, a resposta correta é a alternativa
E.
Página 88 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Figura 11: inserção de chaves em uma árvore B.
Página 89 de 114
www.handbookdeti.com.br
Volume 02 Edição 2
Handbook de Questões de TI Comentadas para Concursos
40.
Volume 02 Edição 2
Assuntos relacionados: Java, Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 60 Considere as informações a seguir para responder às questões de números 60 e 61. São mostrados a seguir os códigos fontes das classes Produto e ProdutoTest. O método testDescontoValido() é invocado pelo framework de testes automaticamente quando os testes são executados, para exercitar o método descontoValido() da classe Produto.
O método
assertEquals gera um junit.framework.AssertionFailedError quando os valores de seus argumentos são diferentes entre si. 01 package br.com.exemplo.estoque; 02 03 public class Produto
{
04 05
private double preco;
06
private double precoMinimo;
07 08
public Produto(double preco, double precoMinimo)
09
this.preco = preco;
10
this.precoMinimo = precoMinimo;
{
}
11 12 13
public boolean descontoValido(int percentual)
{
14
double precoComDesconto;
15
precoComDesconto = this.preco - this.preco * percentual / 100;
16
return (precoComDesconto >= this.precoMinimo);
}
17 18
}
Página 90 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
01 package br.com.exemplo.estoque; 02 03 import org.junit.Test; 04 import static org.junit.Assert.*; 05 06 public class ProdutoTest
{
07 08
@Test
09
public void testDescontoValido()
{
10
int percentual = 90;
11
boolean resultadoEsperado = true;
12 13
System.out.println( caderno );
14
Produto caderno = new Produto(10.00, 1.00);
15
boolean resultado = caderno.descontoValido(percentual);
16
assertEquals(resultadoEsperado, resultado);
17 18
System.out.println( caneta );
19
Produto caneta = new Produto(1.00, 0.10);
20
resultado = caneta.descontoValido(percentual);
21
assertEquals(resultadoEsperado, resultado);
}
22 23
}
Com base nos códigos fontes apresentados, conclui-se que (a). a linha 08 de ProdutoTest é um comentário. (b). a classe ProdutoTest descende de org.junit.Test (c). a classe Produto não pode ter descendentes sem construtores explicitamente declarados. (d). o campo preco da classe Produto só pode ser acessado pelas classes que estiverem no mesmo pacote de Produto. (e). org.junit.Assert é um pacote.
Solução: (A) ERRADA Em Java, existem 3 (três) tipos de comentários:
•
// Isto é o primeiro tipo de comentário
•
/* Isto é o segundo tipo de comentário */
•
/** Este é o terceiro tipo de comentário, muito utilizado para documentação web */
(B) ERRADA Esta é uma confusão muito comum em Java. Na verdade, o código
import org.junit.Test
é utilizado para importar apenas a classe Test a m de que a classe ProdutoTest possa acessar os seus métodos públicos (caso existam). A classe ProdutoTest somente descenderia da classe Teste se ela fosse declarada utilizando-se
Página 91 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
a palavra chave extends, da seguinte forma:
Volume 02 Edição 2
public class ProdutoTest extends Test.
Lembre-se que a palavra chave extends indicaria que todas as declarações de métodos, variáveis e campos da superclasse (classe pai) Test seriam herdadas pela classe ProdutoTest. (C) CORRETA Um construtor determina como um objeto é inicializado pela criação de uma nova instância de uma classe com os parâmetros especi cados. Podemos tratá-lo como um método especial: com nome igual ao da classe; sem tipo de retorno (
void); e não herdado pelas subclasses.
Caso você decida em não declarar um construtor em uma classe, Java automaticamente fornecerá um construtor default que não requer nenhum argumento. O construtor default simplesmente chama o construtor da superclasse, denominado
super(), com nenhum argu-
mento e inicializa as variáveis da instância. Se a superclasse não tiver um construtor que não requer argumentos, ocorrerá um erro em tempo de compilação, que é o caso do presente problema, pois note que a superclasse Produto possui apenas um construtor, obviamente de mesmo nome, que exige dois argumentos. Assim, a qualquer subclasse da classe Produto deverá declara explicitamente o seu construtor. (D) ERRADA O campo preco, como está precedido pelo modi cador private, só poderá ser acessado dentro da classe Produto. Nem mesmo as subclasses da classe Produto poderão acessar esse campo diretamente. Uma forma de tornar esse campo acessível para leitura, seria por meio da declaração de
public),
um método, público (
na classe Produto. Esse método retornaria apenas o valor
armazenado no campo preco. Por outro lado, se desejássemos que esse campo fosse acessível para escrita, deveríamos declarar um método, na classe Produto, precedido pelo modi cador
protected.
Isso per-
mitiria que apenas as subclasses da classe Produto atualizem o campo preco. (E) ERRADA Por convenção, todos os nomes de pacotes e diretório que o seguem deveriam ser especi cados usando-se letras minúsculas. Por outro lado, os nomes das classes e interfaces que você deseja referenciar dentro do pacote deveriam ser especi cados usando-se a primeira letra em maiúsculo. Isso permite que outros programadores que usam os seus pacotes determinem facilmente quais componentes são nomes de diretórios e quais são nomes de interfaces e classes. Assim, na verdade,
org.junit.Assert.
org.junit.* é um pacote que contém várias classes, dentre elas a classe
Página 92 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
41.
Assuntos relacionados: Java, Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. Ano: 2008 Questão: 61
Volume 02 Edição 2
de Software
testDescontoValido() valida a veri cação para o produto caderno, mas gera uma exceção para o produto caneta, indicando que o desconto de 90% não é válido para canetas, o que está incorreto. A causa do problema e uma possível solução seriam: (a).
CAUSA: uso de aritmética binária de ponto utuante para os cálculos (variáveis do tipo double) com posterior tentativa de comparação exata entre os valores calculados (linha 21).
SOLUÇÃO: usar aritmética decimal exata substituindo os
valores primitivos double por instâncias da classe BigDecimal. (b).
CAUSA:
arredondamento automático devido ao uso na mesma expressão dos
tipos int e double (linha 14) sem conversão de tipos (typecasting).
SOLUÇÃO:
transformar o parâmetro percentual em double ou realizar um typecasting explícito de int para double na expressão. (c).
(d).
CAUSA: versão antiga da máquina virtual Java, que apresenta esse tipo de problema até a versão 1.1. SOLUÇÃO: atualizar para a última versão da JVM. CAUSA: falta da inclusão do pacote java.lang.math em Produto. SOLUÇÃO: incluir o pacote através de uma declaração import.
(e).
CAUSA:
mistura de elementos de escopos diferentes (classe e método) na ex-
pressão lógica de retorno.
SOLUÇÃO:
atribuir o precoMinimo a uma variável
local e utilizá-la na comparação ou tornar precoComDesconto um campo de Produto.
Solução: (A) CORRETA Observe, no código acima, que as variáveis preco, precoMinimo e precoComDesconto são do tipo double. Observe, também, que o programa está tratando com partes fracionais de uma unidade monetária, que assumiremos ser o real somente para ns ilustrativos, e então precisa de um tipo que permite pontos decimais em seus valores. Infelizmente, números em ponto utuante podem causar transtornos. O problema que ocorre no código acima é devido ao uso do tipo double (ou oat) para representar quantias em reais (assumindo que quantias de real são mostradas com dois dígitos a direita do ponto decimal). Dessa forma, após a chamada do construtor Produto, poderemos ter as seguintes quantias armazenadas para o produto caderno:
•
na varável privada preco: 10.000 e exibição 10.00;
•
na variável privada precoMinimo: 0.999, o qual seria arrendondado normalmente para 1.00 para propósitos de exibição.
O mesmo pode ocorrer para o produto caneta após a invocação do construtor Produto:
•
na varável privada preco: 1.000 e exibição 1.00;
•
na variável privada precoMinimo: 0.101, o qual seria arrendondado normalmente para 0.10 para propósitos de exibição.
Página 93 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
Assim, após a invocação do método descontoValido pelos produtos caderno e lápis, teremos:
•
para caderno: a variável precoComDesconto armazenará 1.000 (e exibição 1.00), o que é maior que o precoMinimo (0.999), retornando true na comparação;
•
para caneta: a variável precoComDesconto armazenará 0.100 (e exibição 0.10), o que é menor que o precoMinimo (0.101), retornando false na comparação.
A recomendação é não usar variáveis do tipo double (ou oat) para realizar cálculos monetários precisos.
A imprecisão de números em ponto utuante pode causar erros que re-
sultarão em incorretos valores monetários.
Nesses casos a recomendação é usar a classes
java.math.BigDecimal para a realização de cálculos com precisão arbitrária de valores em ponto utuante. (B) ERRADA Em Java, há regras de promoção que se aplicam a expressões contendo valores de dois ou mais tipos primitivos. Cada valor é promovido ao tipo mais alto na expressão. Dessa forma, o argumento do método descontoValido (percentual) e a constante (100) do tipo são automaticamente promovidas para o tipo
double, devido ao campo preco.
int
(C) ERRADA A JVM (Java Virtual Machine ou Máquina Virtual Java, em português) é uma máquina computacional abstrata, que, assim como uma máquina real, possui seu próprio conjunto de instruções e capacidade de manipular várias áreas de memória em tempo de execução. Dentre as responsabilidade da JVM podemos citar as principais:
•
independência de uma aplicação em relação ao hardware;
•
independência de uma aplicação em relação ao sistema operacional;
•
proteção aos usuários contra programas maliciosos.
Lembre-se que a máquina virtual Java não tem conhecimento sobre a linguagem de programação Java. Ela conhece apenas um determinado formato binário, arquivo do tipo classe, o qual contém instruções da JVM (ou bytecodes) e uma tabela de símbolos, bem como outras informações. (D) ERRADA A classe Math é parte do pacote java.lang, o qual é implicitamente importado pelo compilador. Então não é necessário importar a classe Math para usar seus métodos. (E) ERRADA Os membros de uma classe, no presente caso, preco e precoMinimo, são acessíveis por qualquer método declarado na mesma classe, independentemente do quali cador que os precede. Assim, o campo precoMinino (this.precoMinimo no código) pertence ao escopo do método descontoValido. Note, ainda, que no método descontoValido, o uso da palavra chave this para o membro precoMinimo não era necessário, pois não há variáveis locais com o mesmo nome.
Página 94 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
42.
Assuntos relacionados: Desenvolvimento de Software, Diagrama Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 62
Volume 02 Edição 2
de Classes,
Com base no diagrama acima, analise os trechos de código Java a seguir. I - Produto p = new Produto(); p.setNome( Carro ); II - Seguravel s = new Veiculo(); s.setNome( Carro ); double p = s.calculaPremio(); III - Seguravel s = new Veiculo(); ((Veiculo) s).setNome( Carro ); IV - Vendavel v = new Peca(); Produto p = (Produto) v; p.setNome( Pneu ); V - Vendavel v = new Veiculo(); Produto p = (Peca)((Produto)((Veiculo) v)); Estão corretos
APENAS os trechos de código
(a). I e III (b). I e IV (c). II e III
Página 95 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
(d). III e IV (e). IV e V
Solução: (I) ERRADA Observe pelo diagrama que Produto é uma classe abstrata, portanto não é possível aplicar um construtor sobre ela. Em outras palavras, ela não pode ser instanciada. Nós precisamos assegurar que o objeto a ser construído pertence a uma classe concreta da classe abstrata Produto, no caso, ou a classe Veículo ou a classe Peca.
Uma solução de correção seria o
seguinte código: Produto p = new Veículo(); (II) ERRADA Note que apesar da variável s ser uma instância da classe Veiculo, ela foi automaticamente convertida (upcast ) no momento da sua declaração para a interface Seguravel. Desse modo, esse objeto poderá acessar apenas os métodos que foram de nidos na interface, no caso, o método calculaPremio, e não o método setNome. (III) CORRETA Semelhante à alternativa anterior, porém com um conversão (downcast ) explícita entre a interface Seguravel e a classe que a implementa (Veiculo). Este tipo de conversão permite a uma classe pai, no caso a interface Seguravel, acessar todos os métodos da classe lha. Note, também, que s é uma instância da classe Veiculo, e por isso não foi necessário inserir mecanismos que veri cam o tipo do objeto antes da conversão (RITT, do inglês Run-Time
Type Identi cation ). Em Java isso é alcançado por meio do operador instanceof.
O uso adequado desse oper-
ador garante que as conversões são sempre seguras, não permitindo que um objeto seja convertido para uma classe inválida. (IV) CORRETA No trecho de código são realizadas duas conversões: 1. Upcast entre uma instância da classe, a classe concreta Peca, e a interface Vendavel. Mais uma vez lembre-se que uma conversão para uma classe (ou interface) pai é feita implicitamente; 2. Downcast entre a interface Vendavel, que é uma instância da classe Peca, e a classe abstrata Produto. Observe, nesse caso, que a conversão é realizada para a classe pai (Produto) da classe instanciada (Peca), o que é perfeitamente aceitável uma vez que toda Peca é um Produto. Após a realização do downcast o método setNome da classe Produto é apropriadamente invocado.
Página 96 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
(V) ERRADA No trecho de código, há uma tentativa de realizar um cast entre a instância de Veiculo, representada por v, para a classe Peca. Tal tipo de cast (entre classe irmãs) produzirá um erro de compilação, pois as referidas classes possuem métodos completamente diferentes e não relacionados.
Página 97 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
43.
Assuntos relacionados: Java, UML, Diagrama Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 63
Volume 02 Edição 2
de Classes,
public class Produto { private Fabricante mFabricante; public Produto () { } public Fabricante getFabricante () { return mFabricante; }
}
public void setFabricante (Fabricante val) { this.mFabricante = val; }
import java.util.ArrayList; public class Fabricante { private ArrayList<Produto> mProduto; public Fabricante () { } public ArrayList<Produto> getProduto () { return mProduto; }
}
public void setProduto (ArrayList<Produto> val) { this.mProduto = val; }
Assinale o diagrama de classe que expressa corretamente a implementação mostrada acima, em Java, das classes Produto e Fabricante, bem como da associação entre as mesmas. (a). Diagrama 1 (b). Diagrama 2 (c). Diagrama 3 (d). Diagrama 4 (e). Diagrama 5
Página 98 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
Solução: Lembre-se que diagramas de classe nos permitem identi car tanto o conteúdo de uma classe quanto o relacionamento entre várias classes. Em um diagrama de classes podemos mostrar as variáveis e métodos membros de uma classe. Podemos também mostrar se uma classe herda de outra, ou se mantém uma referência para outra. Em suma, podemos descrever todas as dependências do código-fonte entre classes.
Para resolvermos esta questão precisamos
saber: 1. associações entre classes muito frequentemente representam instâncias de variáveis que mantêm referência para outros objetos; 2. a direção da echa nos informa que a classe mantém referência para outra classe; 3. o número próximo à cabeça da seta nos informa quantas referências são mantidas; 4. quando existem muitas conexões representamos por estrela (*). Em Java, isso é comumente implementado com um Vetor ou uma Lista. De posse desse conhecimento, estamos aptos a revolver a presente questão. Inicialmente, analisemos a declaração da classe Produto.
Observe que nela é declarado
um membro privado do tipo Fabricante. Em outras palavras, a classe Produto mantém uma única referência para classe Fabricante. Portanto, na associação existente entre Produto e Fabricante deve existir uma echa apontando para a classe Fabricante com o valor numérico 1 (um) em sua ponta. Agora, analisemos a declaração da classe Fabricante.
Observe que nela é declarado um
vetor (ArrayList) privado do tipo Produto, em outras palavras, a classe Fabricante mantém muitas referências para classe Produto. Portanto, na associação existente entre Fabricante e Fabricante também deve existir uma echa apontando para a classe Produto com um asterisco (*) em sua ponta. Concluímos, então, que a reposta correta é a letra
D.
Página 99 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
44.
Assuntos relacionados: Java, Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. Ano: 2008 Questão: 64
Volume 02 Edição 2
de Software
Considere o trecho de código a seguir.
if (x != x + 0) { System.out.println("Condição satisfeita."); } Se x for da classe String e tiver sido inicializado, esse trecho de código Java (a). imprimirá a mensagem, apenas se x não for 0 . (b). imprimirá a mensagem, apenas se x não tiver sido inicializado com null. (c). imprimirá a mensagem, independente do valor de x. (d). gerará um erro de compilação. (e). compilará, mas nunca imprimirá a mensagem.
Solução: Para resolvermos a referida questão é preciso saber que, em Java, o operador de adição ( + ) tem precedência maior que os operadores relacionais de (des)igualdade ( != e == ). Além disso, o operador + pode ser utilizado também para a concatenação de strings, que é o caso da nossa questão. Pronto, agora nós já temos condições de resolver a questão. Pelo enunciado, extraímos que x é uma string inicializada, isto é, uma string de tamanho N, onde N pode ser maior do que 0 (zero), se x possuir algum conteúdo, ou N pode ser igual a 0 (zero), se x for nula. Independentemente do conteúdo de x, o lado direito do operador != produzirá uma string com o tamanho N + 1. Isto é, a string concatenada possuirá tamanho, e obviamente, conteúdo, diferente da original (x), o que sempre satisfará a condição de desigualdade existente no
if.
Logo, esse trecho de código imprimirá a mensagem, independente do valor de x.
(alternativa
C).
Página 100 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
45.
Assuntos relacionados: Teste de Mesa, Java, Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 65 public class Ponto { private int x; private int y; public Ponto(int x, int y) { setCoordenadas(x,y); } public void setCoordenadas(int x, int y) { this.x = x; this.y = y; } public String toString() { return "(" + x + "," + y + ")"; }
}
public static void main(String[] args) { int a = 1; int b = 2; int c = 3; int d = 4; Ponto p = new Ponto(a,b); Ponto q = new Ponto(c,d); Ponto r = p; c = 5; p.setCoordenadas(c,d); System.out.print(p); System.out.print(q); System.out.print(r); r.setCoordenadas(a,b); a = b; q.setCoordenadas(b,c); System.out.print(p); System.out.print(q); System.out.println(r); }
Qual será a saída da execução da classe Java acima? (a). (5,4)(3,4)(5,4)(1,2)(2,5)(1,2) (b). (5,4)(3,4)(1,2)(5,4)(2,5)(1,2) (c). (5,4)(5,4)(5,4)(2,2)(2,5)(2,2)
Página 101 de 114
www.handbookdeti.com.br
Volume 02 Edição 2
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
(d). (3,4)(3,4)(5,4)(2,5)(2,5)(1,2) (e). (3,4)(3,4)(5,4)(2,2)(2,5)(2,2)
Solução: A seguir, o passo a passo da execução da classe em questão. Na verdade, serão abordados os principais pontos da execução.
•
após a execução da 5a linha (Ponto p = new Ponto(a,b);), teremos o seguinte cenário: a=1; b=2; c=3; d=4; p.x=1; p.y=2;
•
após a execução da 6a linha (Ponto q = new Ponto(c,d);), teremos o seguinte cenário: a=1; b=2; c=3; d=4; p.x=1; p.y=2; q.x=3; q.y=4;
•
após a execução da 7a linha (Ponto r = p;), teremos o seguinte cenário: a=1; b=2; c=3; d=4; p.x=1; p.y=2; q.x=3; q.y=4; r <-> p
Perceba que não foi criado um objeto que seria atribuído à variável r. Na execução dessa última linha, a variável r foi atribuída ao objeto já existente p. Ou seja, a partir deste ponto, em qualquer referência às variáveis r e p serão utilizadas as propriedades do mesmo objeto.
•
após a execução da 9a linha (p.setCoordenadas(c,d);), teremos o seguinte cenário: a=1; b=2; c=5; d=4; p.x=5; p.y=4; q.x=3; q.y=4; r <-> p
•
após as execuções das linhas de número 10, 11 e 12 (System.out.print(p); System.out.print(q); System.out.print(r);), teremos a seguinte saída: (5,4)(3,4)(5,4)
•
após a execução da 13a linha (r.setCoordenadas(a,b);), teremos o seguinte cenário: a=1; b=2; c=5; d=4; p.x=1; p.y=2; q.x=3; q.y=4; r <-> p
•
após a execução da 14a linha (a = b;), teremos o seguinte cenário: a=2; b=2; c=5; d=4; p.x=1; p.y=2; q.x=3; q.y=4; r <-> p
•
após a execução da 15a linha (q.setCoordenadas(b,c);), teremos o seguinte cenário: a=2; b=2; c=5; d=4; p.x=1; p.y=2; q.x=2; q.y=5; r <-> p
•
após as execuções das linhas de número 16, 17 e 18 (System.out.print(p); System.out.print(q); System.out.println(r);), teremos a seguinte saída: (5,4)(3,4)(5,4)(1,2)(2,5)(1,2)
Página 102 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
46.
Assuntos relacionados:
Volume 02 Edição 2
Banco de Dados, Modelo Relacional, Data Warehouse, Modelo
Multidimensional, Data Mart, ROLAP, OLAP,
Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas Ano: 2008 Questão: 66
- Eng. de Software
A respeito de sistemas de informações gerenciais, são feitas as a rmativas a seguir. I - Uma das diferenças entre bancos de dados relacionais e multidimensionais diz respeito ao compromisso entre performance e escalabilidade: bancos de dados relacionais proporcionam consultas mais rápidas, enquanto bancos de dados multidimensionais lidam melhor com grandes quantidades de informações armazenadas. II - ROLAP se refere a um tipo de solução OLAP que utiliza um bancos de dados relacional. III - Quando um projeto inicia por datamarts departamentais especializados que mais tarde se consolidam em um data warehouse institucional, existe uma chance maior de surgirem problemas de inconsistência de metadados do que quando um data warehouse institucional dá origem a datamarts departamentais. IV - Para melhoria de performance, as tabelas em data warehouses, em geral, estão nas formas normais mais altas (considerando que 5 FN é mais alta que 1 FN). Estão corretas
APENAS as a rmativas
(a). I e II (b). I e III (c). I e IV (d). II e III (e). III e IV
Solução: OLAP (Online Analytical Processing) é uma abordagem que possibilita viabilizar consultas em uma análise multidimensional de dados.
O termo é usado em contraste com o termo
OLTP (Online Transaction Processing), que é uma abordagem largamente utilizada em ambientes transacionais. Em um ambiente transacional, há constante entrada de dados e consultas simples.
Além disso, é exigido, em um ambiente transacional, que a resposta
ao usuário seja imediata. Um exemplo é quando você acessa um site de um banco: você quer fazer transferências ou conferir as transações em sua conta corrente e uma demora considerável é inaceitável.
Entretanto, enquanto as abordagens OLTP são extremamente
adequadas em diversas situações, elas se mostram inadequadas, em alguns casos, ao acesso às informações gerenciais como a produção de relatórios de vendas, contábeis e nanceiros. Nesse ponto, é que a abordagem OLAP é importante.
Os bancos de dados que utilizam
OLAP são projetados em modelos de dados multidimensionais que possibilitam executar consultas complexas em um tempo muito menor baseando-se, principalmente, em desnormalizações e em agregações. Um banco de dados OLAP pode ser armazenado de várias maneiras.
Em uma arquite-
tura ROLAP (relacional), os dados são armazenados em banco de dados relacionais. Já em
Página 103 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
uma arquitetura MOLAP (multidimensional), os dados são armazenados em cubos dimensionais, em geral em formatos proprietários, e não em banco de dados relacionais. HOLAP (híbrido) tenta combinar as vantagens de MOLAP e ROLAP, extraindo o que há de melhor de cada uma, ou seja, a alta performance do MOLAP com a melhor escalabilidade do ROLAP. Outras siglas são utilizadas para representar arquiteturas, mas são pouco utilizadas: WOLAP (Baseado em Web), DOLAP (Desktop) e RTOLAP (Real-Time). Vamos analisar as a rmativas da questão: I como já foi dito, os bancos de dados relacionais podem ser utilizados para armazenar bancos de dados modelados da maneira OLAP (multidimensional). As principais motivações para esse uso é a incrível escalabilidade dos bancos de dados relacionais e a grande disponibilidade de ferramentas. Já uma arquitetura MOLAP (multidimensional) é construída, de forma otimizada, em estruturas de dados que possibilitam a melhoria de desempenho em consultas. Ou seja, a a rmação está incorreta, pois a rma justamente o contrário; II é verdadeira, como já explicado acima; III é verdadeira, pois quando uma empresa guia o projeto de forma centralizada e com políticas estabelecidas, ela diminuirá as chances de problemas de inconsistência em metadados.
Caso contrário, cada departamento terá sua forma de pensar sobre a
criação de metadados e di cultará a integração no futuro; IV a a rmativa está incorreta, pois um dos principais recursos utilizados em um OLAP para aumentar o desempenho é a desnormalização das tabelas. A desnormalização é utilizada para diminuir o custo com operações de junções (joins) entre tabelas.
Página 104 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
47.
Volume 02 Edição 2
Assuntos relacionados: CMMI, Níveis de Maturidade, Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 67 O CMMI de ne níveis crescentes de capacidade (capability) para as áreas de processos e de maturidade (maturity) organizacional. Sobre os níveis de maturidade, é correto a rmar que, no nível (a). 1, a disciplina de processo alcançada ajuda a garantir que as práticas existentes serão mantidas, mesmo em situações de crise e stress. (b). 2, os projetos são monitorados, controlados, revisados e avaliados quanto à sua aderência à descrição do processo que utilizaram. (c). 3, a performance dos processos é controlada usando estatística e outras técnicas quantitativas, sendo portanto quantitativamente previsível. (d). 4, a organização está focada no aperfeiçoamento contínuo da performance dos processos através de melhorias incrementais no processo e na tecnologia. (e). 5, a organização atingiu o nível máximo de otimização dos processos e passa a se concentrar nos aspectos operacionais e na manutenção das métricas que atestam sua condição.
Solução: O CMMI (Capability Maturity Model Integration) é uma metodologia criada pela SEI (Software Engineering Institute) com o objetivo de substituir as diversas CMMs (Capability Maturity Model) desenvolvidas especi camente para cada área de atuação, tais como: desenvolvimento de sistemas, engenharia de software, aquisição de software e desenvolvimento de processos. Apesar das CMMs serem úteis, elas são excessivamente diversi cadas e, por conta disso, foram consideradas problemáticas: redundância de conceitos, terminologia incomum, inconsistências, etc. De forma geral, o objetivo maior do CMMI é prover um conjunto de boas práticas para melhoria dos processos das organizações e a habilidade de gerenciar, desenvolver e manter os seus produtos (softwares). Essas práticas, já consideradas efetivas, são organizadas em uma estrutura que visa auxiliar a organização, em particular os gerentes de projetos, a estabelecer suas prioridades para a conquista de melhorias. Um guia para a implementação dessas melhorias também é fornecido pelo CMMI. O CMMI possui duas formas de representação, uma contínua e outra por estágios.
Es-
sas representações oferecem exibilidade para as organizações poderem utilizar diferentes meios para obterem melhorias de acordo com as suas realidades. A representação contínua dá liberdade para as organizações utilizarem a melhor ordem entre as melhorias para que os objetivos de negócio sejam alcançados. Essa representação é caracterizada por níveis de capacidade (capability levels). São eles:
•
nível 0: Incompleto;
•
nível 1: Executado (De nido);
•
nível 2: Gerenciado;
Página 105 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
•
nível 3: De nido;
•
nível 4: Quantitativamente gerenciado;
•
nível 5: Em otimização (ou Optimizado).
Volume 02 Edição 2
Já a representação por estágios disponibiliza uma sequência pré-determinada para que as melhorias sejam obtidas. Essa sequência não pode ser desconsiderada pelas organizações que pretendem utilizar essa representação, pois cada estágio serve de base para o próximo. A representação por estágios é caracterizada por níveis de maturidade (maturity levels). Esses níveis e suas principais características são apresentados a seguir:
•
nível 1 (Inicial): os processos são informais.
A pesar dessa informalidade, às vezes,
produtos e serviços que funcionam são produzidos. Contudo, na maioria dos projetos, as estimativas de orçamento e cronograma são excedidas;
•
nível 2 (Gerenciado): serviços.
há gerenciamento sobre os requisitos, processos, produtos e
Processos BÁSICOS são estabelecidos para tal gerenciamento.
Sucessos e
fracassos anteriores são utilizados em processos futuros. Alguns dos procedimentos são devidamente escritos e atividades de medição e análise também acontecem;
•
nível 3 (De nido): os processos BÁSICOS do nível 2 se tornam padrão para a organização. Esses processos, que são otimizados com o passar do tempo, são utilizados para a geração de processos de nidos para cada projeto da organização;
•
nível 4 (Quantitativamente gerenciado): a e cácia e a e ciência de cada processo são percebidas em termos estatísticos durante toda a sua vida. As causas de variações de e ciência e/ou e cácia são investigadas e tratadas para que não se repitam no futuro;
•
nível 5 (Em otimização): neste nível, a organização concentra esforços no melhoramento contínuo do desempenho de processos por meio de melhorias tecnológicas incrementais e inovadoras. Regularmente, os objetivos quantitativos de melhoria são estabelecidos, revisados e monitorados, sempre levando-se em consideração eventuais alterações nos objetivos do negócio.
(A) ERRADA No nível 1, os processos são informais, portanto, ainda não se obteve disciplina alguma nos processos. (B) CORRETA Sim, de fato no nível 2, os projetos são monitorados, controlados, revisados e avaliados. (C) ERRADA No nível 3, os processos básicos já se tornaram padrão para a organização, mas eles ainda não são controlados estatisticamente. Isso acontece quando a organização já se encontra no nível de maturidade 4. (D) ERRADA O aperfeiçoamento dos processos por meio de melhorias incrementais no processo e na tecnologia somente acontece quando a organização já se encontra no nível de maturidade 5.
Página 106 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
(E) ERRADA No nível 5, a organização não necessita se concentrar excessivamente nos aspectos operacionais, a nal de contas cada processo é padrão e otimizado. Ao invés disso, a organização se concentra em melhorias tecnológicas incrementais e inovadoras.
Página 107 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
48.
Assuntos relacionados: Norma de Qualidade de Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 68
Volume 02 Edição 2
Software, ISO 9001:2000,
Durante os testes de um software produzido pelo departamento de TI de uma empresa, veri cou-se que o mesmo não atendia a alguns dos requisitos originais especi cados pelos clientes.
Sobre a condução da situação, são feitas as a rmativas a seguir, que devem ser
analisadas à luz de seu alinhamento com a norma ISO 9001:2000. I - Independente do destino a ser dado ao software, as causas da não-conformidade devem ser identi cadas e eliminadas do processo de desenvolvimento. II - O software deve ser entregue provisoriamente nestas condições, para diminuir a insatisfação do cliente, sendo substituído por uma versão que atenda aos requisitos o mais rápido possível (ASAP). III - O gerente do projeto de desenvolvimento pode de nir e propor um procedimento alternativo para lidar com a não-conformidade, diferente daquele previsto no processo de desenvolvimento de software organizacional, desde que aprovado pelo cliente. IV - Devem ser mantidos registros de quaisquer ações corretivas realizadas, ainda que as mesmas não se revelem e cazes para tratar a não-conformidade, bem como dos indicadores de satisfação do cliente, qualquer que seja o resultado do projeto. Estão alinhadas com as exigências da norma ISO 9001:2000
APENAS as a rmativas:
(a). I e II. (b). I e IV. (c). II e III. (d). II e IV. (e). III e IV.
Solução: A norma ISO 9001:2000 tem como objetivo orientar as organizações na implementação, no desenvolvimento e na melhoria do sistema de gestão da qualidade a partir de uma abordagem baseada em processos. O modelo de um sistema de gestão da qualidade baseado em processos é mostrado na Figura 12. O sistema de gestão da qualidade de uma empresa deve possuir um conjunto de diretrizes, que permite aos clientes avaliarem a capacidade da organização em fornecer produtos e serviços, que atendam aos requisitos especi cados de forma consistente, fornecendo ainda uma estrutura para melhoria contínua do desempenho da organização. A norma ISO 9001:2000 exige a elaboração de seis procedimentos: Controle de Documentos, Controle de Registros, Auditoria Interna, Controle da Não-Conformidade de Produtos, Ação Corretiva e Ação Preventiva. A existência de procedimentos, instruções e registros de trabalho formalizam todas as atividades que afetam a qualidade.
Isso exige a participação de todos os indivíduos da orga-
nização, aumentando o comprometimento com a qualidade, uma vez que todos participam diretamente da implementação do sistema da qualidade.
Página 108 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
Figura 12: representação grá ca da Norma ISO 9001:2000.
Analisando as a rmações da questão, temos: I - a organização deve executar ações corretivas para eliminar as causas de não-conformidades, de forma a evitar a sua repetição. As ações corretivas devem ser apropriadas aos efeitos das não-conformidades encontradas. A organização deve de nir ações para eliminar as causas de não-conformidades potenciais de forma a evitar a sua ocorrência.
Logo,
a rmativa verdadeira; II - a organização deve assegurar que produtos que não esteja conforme aos requisitos sejam identi cados e controlados para evitar seu uso não intencional ou entrega. Como uma das medições do desempenho do sistema de gestão da qualidade, a organização deve monitorar as informações relativas à percepção do cliente sobre se a organização atendeu aos requisitos dos clientes. Então, a a rmativa é falsa; III - um sistema de gestão da qualidade em conformidade com a ISO 9001:2000 assegura que todo o processo de desenvolvimento possui um nível de controle, disciplina e repetibilidade, garantindo a qualidade dos produtos. Portanto, a rmativa falsa; IV - a organização deve tratar produtos não-conformes adotando-se pelo menos uma das seguintes opções: a execução de ações para eliminar a não-conformidade detectada; autorização do seu uso, liberação ou aceitação sob concessão por uma autoridade pertinente e, onde aplicável, pelo cliente; e execução de ação para impedir a intenção original de seu uso ou aplicação originais. Devem ser mantidos registros sobre a natureza das não-conformidades e qualquer ação subsequente tomada, incluindo concessões obtidas. Quando o produto não-conforme for corrigido, esse deve ser veri cado para demonstrar a conformidade com os requisitos. Quando a não-conformidade do produto for detectada após a entrega ou início do seu uso, a organização deve tomar as ações apropriadas em relação aos efeitos, ou potenciais efeitos, da não-conformidade. verdadeira. Conforme exposto acima, a alternativa correta é a letra
b.
Página 109 de 114
www.handbookdeti.com.br
Logo, a rmativa
Handbook de Questões de TI Comentadas para Concursos
49.
Volume 02 Edição 2
Assuntos relacionados: Governança de TI, COBIT, Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 69 O COBIT 4.0, especi cado pelo IT Governance Institute (ITGI), é um framework para governança de TI. Conforme de nida pelo ITGI para fundamentação do COBIT 4.0, a governança de TI (a). é um subconjunto da Governança de Arquitetura (de Informações). (b). é responsabilidade do departamento de Tecnologia da Informação ou setor equivalente da organização que se reporte diretamente à gerência executiva ou à direção. (c). promove o alinhamento da TI com os objetivos e estratégias organizacionais, assegurando que a TI sustente e estenda os mesmos. (d). tem como áreas de foco: Medida de Performance, Gerenciamento de Recursos, Gerenciamento de Fornecedores, Gerenciamento de Riscos e Gerenciamento da Comunicação. (e). tem o objetivo primário de simpli car a gestão de TI por parte dos executivos, que, em muitos casos, são oriundos de outras áreas de conhecimento, minimizando a dependência de conhecimentos tecnológicos para a tomada de decisão em TI.
Solução: (A) ERRADA A Governança de Arquitetura é a prática e orientação pela qual os enteprise architectures são gerenciados e controlados em todo meio corporativo da empresa. O termo enteprise archi-
tecture é de nido como a organização lógica para os processos empresariais e infraestrutura de TI que re etem na integração e padronização dos requisitos do modelo de funcionamento da empresa. As normas, tais como ITIL, COBIT ou CMMI têm foco na Governança de TI, mas nenhuma delas realmente se referem a Governança de Arquitetura. (B) ERRADA Entende-se por Governança de TI como um conjunto de estruturas e processos que visam garantir que a TI suporte e maximize os objetivos e as estratégias do negócio. A governança e o COBIT devem suportar os interesses dos stakeholders internos e externos de acordo com as necessidades especí cas de cada um: os de dentro da empresa que têm interesse em gerar valor a partir de investimentos de TI, os que prestam serviços de TI sejam eles internos (Departamento de TI) ou externos (fornecedores); e os que controlam riscos e responsabilidades. Então, o COBIT deve ser utilizado como um amplo guia pela direção e pelos responsáveis pelos processos de negócio da empresa, não restringindo apenas ao departamento de TI. (C) CORRETA O Control Objective for Information and related Technology (COBIT) é um framework que fornece as melhores práticas para gerenciamento de processos de TI, atendendo as necessidades de gestão de uma organização, tratando os riscos do negócio, as necessidades de controle e as métricas de desempenho. Esse framework serve de suporte para implementar
Página 110 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
a Governança de TI numa organização garantindo que: a TI esteja alinhada com o negócio; a TI permita o negócio e maximize os benefícios; os recursos de TI sejam usados com responsabilidade; e que os riscos de TI sejam gerenciados apropriadamente. Vale reforçar que o COBIT não é um padrão de nitivo. Ele serve como apoio para a implementação de controles na Governança de TI. Ele atua em dizer o o que fazer e não se preocupa em como fazer . (D) ERRADA O COBIT foca em duas áreas chaves:
fornece informações necessárias para suportar os
objetivos e os requisitos do negócio; e trata as informações como sendo o resultado combinado de aplicações e recursos de TI que precisam ser gerenciados por processos de TI. Para isso, o COBIT agrupa os processos de TI em quatro áreas ou domínios: Planejamento e Organização; Aquisição e Implementação; Entrega e Suporte; e Monitoração e Avaliação. Cada uma dessas áreas de ne os respectivos processos de TI. (E) ERRADA O COBIT foi criado com a característica principal de ser:
focado no negócio, orientado
a processos, baseado em controles e direcionado a medições. Foi criado para ser utilizado não apenas pelos fornecedores de serviço de TI, usuários e auditores, mas também, e mais importante, como um amplo guia pela direção e os responsáveis pelos processos de negócio da empresa. O COBIT promove a organização das atividades de TI em torno dos processos de TI fornecendo um modelo para as organizações adotarem e adaptarem conforme necessário. Após os processos estarem de nidos, eles podem ser alocados a indivíduos e gerentes que são responsáveis e deverão prestar conta por cada processo. Com essa estrutura, as atividades cam mais fáceis de serem controladas e organizadas.
Página 111 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
50.
Volume 02 Edição 2
Assuntos relacionados: Governança de TI, COBIT, Banca: CESGRANRIO Instituição: Petrobras Cargo: Analista de Sistemas - Eng. de Software Ano: 2008 Questão: 70 O COBIT 4.0 apresenta 34 processos de TI divididos por 4 áreas ou domínios. Cada processo possui um objetivo ou requisito de controle de alto nível e objetivos detalhados. Além disso, há objetivos de controle genéricos que os processos devem observar, que são identi cados como PCn, de process control number .
NÃO corresponde a um dos objetivos de controle
genéricos do COBIT 4.0: (a). atribuir um proprietário a cada processo, de forma que a responsabilidade seja clara. (b). de nir cada processo de forma que seja repetível. (c). estabelecer metas e objetivos claros para cada processo para uma execução e caz. (d). medir a performance de cada processo em relação às suas metas. (e). estabelecer níveis de acordo de serviço (SLA) onde cabível para cada processo.
Solução: Controles gerais são aqueles embutidos nos processos e serviços de TI, como: desenvolvimento de sistema, gerenciamento de mudanças, segurança, etc. Eles devem ser considerados juntos com os objetivos de controle detalhados para ter a visão completa dos requisitos de controle. (A) ERRADA O controle geral que atribui um proprietário a cada processo, de forma que a responsabilidade seja clara é o PC1 Process Owner (Proprietário do Processo). (B) ERRADA O controle geral que de ne cada processo de forma que seja repetível é o PC2 - Repeatability (Repetibilidade). (C) ERRADA O controle geral que estabelece metas e objetivos claros para cada processo para uma execução e caz é o PC3 Goals and Objectives (Metas e Objetivos). (D) ERRADA O controle geral que mede o desempenho de cada processo em relação às suas metas é o PC5 Process Perfomance (Desempenho do Processo). (E) CORRETA O COBIT não de ne nenhum controle geral sobre SLA. O SLA é controlado no COBIT pelo processo De ne and manage service levels (De ne e gerencia o nível de serviço) no
Página 112 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 02 Edição 2
domínio Deliver and Support (Entrega e suporte). Além dos quatro controles gerais citados, existem mais dois:
•
PC4 Roles and Responsibilities (Regras e Responsabilidades) de ne regras, papéis e responsabilidades não ambíguas para cada processo do COBIT para a execução e ciente;
•
PC6 Policy, Plans and Procedures (Políticas, Planos e Procedimentos) documenta, revisa, mantém atualizado, aprova e comunica a todas as partes envolvidas qualquer política, plano ou procedimento que direciona um processo do COBIT.
Página 113 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Questao 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
Página 114 de 114
Volume 02 Edição 2
Resposta E A E C E A B A E C B C B C D B D C C B E B C E A A E A B D B E C A D B C B E C A D D C A D B B C E
Handbook de TI
Além do Gabarito
Índice Remissivo ISO 27001, 46 ISO 9001:2000, 108 .NET, 58
J2EE, 58
Árvore B, 87
Java, 90, 93, 98, 100, 101 JEE, 58
Algoritmos de Ordenação, 80 Análise de Caso de Uso, 68
Lógica, 40, 43, 45
Arquitetura de Computadores, 4, 7
Lista Encadeada, 82, 84
ATOM, 21
Metodologia de Desenvolvimento de Software, 66
B2B, 49 B2C, 49
Modelo de Casos de Uso, 63
B2E, 49
Modelo Entidade-Relacionamento, 11
B2G, 49
Modelo Multidimensional, 19, 103
Banco de Dados, 9, 11, 14, 16, 18, 19, 103
Modelo Relacional, 9, 103 Modos de Endereçamento de Memória, 4
Certi cado Digital, 23
MVC, 58
CMMI, 105 COBIT, 110, 112
Níveis de Maturidade, 105
Complexidade Ciclomática, 79
Norma de Qualidade de Software, 108
Controle Integrado de Mudanças, 38
Normalização de Banco de Dados, 9, 14
CSS, 28
Normas de Segurança da Informação, 46
Data Mart, 19, 103
OLAP, 103
Data Warehouse, 19, 103
Ordenação por Árvore de Decisão, 80
Desenvolvimento de Cronograma, 30
Ordenação por Comparação, 80
Desenvolvimento de Software, 95
Ordenação por Inserção, 80
Diagrama de Atividades, 72
Ordenação por Intercalação, 80
Diagrama de Classes, 72, 75, 95, 98
Orientação a Objeto, 51
Diagrama de Componentes, 72 Diagrama de Estados, 72 Diagrama de Sequência, 72
Padrões de Projeto, 51 PKI, 23 Portais Corporativos, 49
EAP, 32
Primeira Forma Normal (1FN), 9, 14
Engenharia de Software, 51, 70, 79
Princípios Fundamentais da Segurança da Informação, 48
Estruturas de Dados, 82, 84, 87
Probabilidade e Estatística, 36, 37 Família ISO 27000, 46
Processo Uni cado, 60, 63, 68
Gerência de Custos, 34
Quicksort, 80
Gerência de Escopo, 32 Gerência de Integração, 38
ROLAP, 103
Gerência de Projeto, 30, 32, 34, 38
RSS, 21
Gerência de Tempo, 30
RUP, 70
Gerenciamento de Valor Agregado (GVA), 34 Governança de TI, 110, 112
Segunda Forma Normal (2FN), 14 Segurança da Informação, 23, 46, 48
Heapsort, 80
Servidor de Aplicações, 58
HTTP, 28
SQL, 16
HTTPS, 23 Interoperabilidade entre Aplicações, 55
Tabela Hash, 82, 84 115Terceira Forma Normal (3FN), 14
Handbook de Questões de TI Comentadas para Concursos
Teste de Mesa, 101 Testes de Software, 79 Thread, 7 UML, 63, 68, 72, 75, 98 Web Services, 55 XML, 26, 28
Página 116 de 114
www.handbookdeti.com.br
Volume 02 Edição 2