Você está na página 1de 117

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 Soft-
ware, 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 prossionais qualicados, inclusive na área de TI. Para suprir essa neces-
sidade, 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, arquite-
tura 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óxi-
mos 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 comu-
nidade 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 Volume 02  Edição 2

1. Assuntos relacionados: Arquitetura de Computadores, Modos de Endereçamento de Memória,

Banca: CESGRANRIO
Instituição: Petrobras
Cargo: Analista de Sistemas - Eng. de Software
Ano: 2008
Questão: 21
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 especicadas 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 hexadeci-
mais, 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 é especicado 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. Re-


quer, 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
posições de memória estará limitada em 256 (2 );
8

• 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 en-
dereç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á
o endereçamento de 65536 posições de memória (2
16 ) e não mais 256 como no en-

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 especica 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 especicado


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 ← 03H, R recebe o valor armazenado no endereço 02H;

2. AC 02H, R ← 03H + 04H ← 07H, o valor de R é somado ao valor armazenado no


endereço 03H;

3. ST 03H, [04H] ← 07H, a posição de memória 04H recebe o valor do registrador R;

4. AC 00H, R ← 07H + 02H ← 09H, o valor de R é somado ao valor da posição 01H;

5. ST 01H, [02H] ← 09H, a posição de memória 02H recebe o valor de R;

6. LD 03H, R ← 07H, R recebe o valor armazenado no endereço 04H;

7. ST 00H, [01H] ← 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.


Endereço Valor Armazenado
00H 01H
01H 07H
02H 09H
03H 04H
04H 07H

A soma é 01H +07H +09H +04H +07H = 1CH , que, em decimal, é 28. Logo, a alternativa
correta é a letra (e).

Página 6 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos Volume 02  Edição 2

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 ex-
ecuçã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 denida 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 comu-


niquem ecientemente. 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 exemplica o compartilhamento das
threads dentro de um processo.

Figura 1: exemplicaçã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 Volume 02  Edição 2

3. Assuntos relacionados: Banco de Dados, Modelo Relacional, Normalização de Banco de


Dados, Primeira Forma Normal (1FN),
Banca: CESGRANRIO
Instituição: Petrobras
Cargo: Analista de Sistemas - Eng. de Software
Ano: 2008
Questão: 23
É correto armar que qualquer relação válida de um modelo relacional:

(a). pode apresentar tuplas duplicadas, desde que não haja chaves candidatas denidas.

(b). em seus atributos ordenados da esquerda para a direita, de acordo com a deniçã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 denidas 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 é denir uma chave primária, que, obrigato-
riamente, 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 denidas acima, são implemen-
tadas 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 denição da primeira forma normal dada por Date, uma tabela está na primeira formal
normal se, e somente se, for isomórca à alguma relação. Isso quer dizer que, especicamente,
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
identicadores de linhas, identicadores de colunas, identicadores de objetos ou times-
tamps 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 dene a relação.

c. falsa, a ordenação das linhas não dene a relação.

d. falsa, a relação é uma denição no nível conceitual. Os índices físicos são denidos no
nível físico e não inuenciam 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 deniçã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 Volume 02  Edição 2

4. Assuntos relacionados: Banco de Dados, Modelo Entidade-Relacionamento,


Banca: CESGRANRIO
Instituição: Petrobras
Cargo: Analista de Sistemas - Eng. de Software
Ano: 2008
Questão: 24

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 fos-
sem 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 FUN-
CIONARIO não será modicada 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 en-
tidades 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 identicado de forma unívoca a todos os out-
ros 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 mul-
tivalorados 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.

Verica-se que, no primeiro modelo, existem duas entidades independentes com seus re-
spectivos 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 represen-
tados 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 rela-
cional 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á man-


tida sem modicaçõ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-para-
um com a variável de relação Funcionario. Sendo assim, o campo e-mail será suciente
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 Volume 02  Edição 2

5. Assuntos relacionados: 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 armativa 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 denir o que é dependência funcional. Dizemos que B é funcional-
mente dependente de A (A → B) se, para cada valor de A, existe exatamente um atributo B.
Um exemplo prático é cidade ← estado, uma cidade A implicará em exatamente um estado
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 identica 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. Ex-
emplo: 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 identicador 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 deniçã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 nor-
mal 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 transi-
tivamente 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 de-
terminante. 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 identicada 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 Volume 02  Edição 2

6. 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 infor-
maçõ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 C.CIDADE irá agrupar as vendas dos produtos por cidade e
reunirá informações, de 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. Ex-
emplicando: 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 pro-
dutos 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 Volume 02  Edição 2

desses produtos é (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 Volume 02  Edição 2

7. 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. Logo, no máximo, essas
cidades poderão conter 750 (5x15x10) 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 Volume 02  Edição 2

8. Assuntos relacionados: Banco de Dados, Modelo Multidimensional, Data Mart, Data


Warehouse,
Banca: CESGRANRIO
Instituição: Petrobras
Cargo: Analista de Sistemas - Eng. de Software
Ano: 2008
Questão: 28
Um datamart será montado para análise das vendas. Consultas serão feitas com base em
produtos, períodos, cidades e clientes. Assinale a armação correta sobre o modelo multidi-
mensional 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 especicações, CIDADE deve ser, necessariamente, uma dimensão do mod-
elo.

(d). O modelo estará necessariamente no formato oco de neve (snowake).

(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 ware-
house.

É 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 deniçõ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 orga-
nizaçã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 data-
mart.

Vamos apresentar, agora, alguns conceitos importantes em relação a data warehouse. Den-
imos fato como uma coleção de itens de dados composta de medidas. Esse valor numérico é
denominado de medida. Por exemplo, caso se deseje analisar se as vendas em um determi-
nado estado estão caindo, podemos denir 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, pode-
mos 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 es-
trela. 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 decom-
posiçã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 se-
manas, 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 denir 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 Volume 02  Edição 2

9. 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 dis-
seminados 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 armar 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. Exis-
tem 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 en-
carrega de vericar 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 inde-
pendentes, 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 especicação é mantida pelo RSS Advisory Board, cujo site ocial é 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 noticar 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 Volume 02  Edição 2

10. Assuntos relacionados: Segurança da Informação, PKI, Certicado Digital, HTTPS,


Banca: CESGRANRIO
Instituição: Petrobras
Cargo: Analista de Sistemas - Eng. de Software
Ano: 2008
Questão: 30
Durante o projeto de uma aplicação Internet, vericou-se a necessidade de a mesma propor-
cionar 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 armativas a seguir.

I - Será preciso dotar o servidor de aplicação de um certicado 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 situ-
açã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 armativas

(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 Se-
curity), cujo objetivo é permitir que os dados sejam transmitidos através de uma conexão
criptografada e que se verique a autenticidade das partes comunicantes por meio de certi-
cados digitais. Portanto, a alternativa I é correta, pois o uso de certicados 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 certicado 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 autenti-
cação de múltiplos fatores, por meio do uso de tokens OTP e de certicados 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 armativa 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 pro-
grama da camada de aplicação que deseja se comunicar usando o TCP, é necessário alocar
ao menos um socket, que pode ser denido como um endpoint para comunicação, sendo
unicamente identicado 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. Comu-
mente, os serviços HTTP e HTTPS utilizam as portas 80 e 443, respectivamente. Portanto,
a alternativa IV é correta.

A armativa II trata da estruturação de uma PKI (Public Key Infrastructure), que pode ser
denida como um conjunto de hardware, software, pessoas, políticas e procedimentos para
criar, gerenciar, armazenar, distribuir e revogar certicados 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 Certicadoras (ACs)
e as Autoridades de Registro (ARs), cujas denições no glossário do ICP Brasil são:

• Autoridade Certicadora: é a entidade, subordinada à hierarquia da ICP Brasil, re-


sponsável por emitir, distribuir, renovar, revoga e gerenciar certicados digitais. Cabe
também à AC emitir listas de certicados revogados (LCR) e manter registros de suas
operações sempre obedecendo as práticas denidas na Declaração de Práticas de Cer-
ticação (DPC). Desempenha como função essencial a responsabilidade de vericar se
o titular do certicado possui a chave privada que corresponde à chave pública que
faz parte do certicado. Cria e assina digitalmente o certicado do assinante, onde o
certicado 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 Certicação
Pública, as AC estão subordinadas à Autoridade Certicadora de nível hierarquica-
mente superior;

• Autoridade de Registro: entidade responsável pela interface entre o usuário e a


Autoridade Certicadora. Vinculada a uma AC que tem por objetivo o recebimento,
validação, encaminhamento de solicitações de emissão ou revogação de certicados digi-
tais às ACs e identicaçã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 armativa 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 Volume 02  Edição 2

11. Assuntos relacionados: XML,


Banca: CESGRANRIO
Instituição: Petrobras
Cargo: Analista de Sistemas - Eng. de Software
Ano: 2008
Questão: 31
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). <pross&atilde;o>Professor</pross&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 dene a apresentação dos dados, enquanto o XML dene 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 (denidos com name=value). No HTML, as tags e atributos especicam têm
funções denidas. 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 doc-
umento pode ser denido pelo próprio usuário da linguagem, devendo as tags obedecerem
um conjunto de regras de nomenclatura.

Na especicação formal do XML, as regras de nomenclatura são denidas em termos uti-


lizando a notação EBNF (Extended Backus-Naur Form). A seção 2.3 da especicaçã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. A alternativa (D), por sua

Página 26 de 114
www.handbookdeti.com.br
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 <prossã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 Volume 02  Edição 2

12. Assuntos relacionados: XML, CSS, HTTP,


Banca: CESGRANRIO
Instituição: Petrobras
Cargo: Analista de Sistemas - Eng. de Software
Ano: 2008
Questão: 32
Analise as armativas 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 prossionais 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 signicativa da exigência de banda,
melhorando a experiência do usuário e demandando menos recursos dos servidores do
site.

III É possível especicar 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, reete
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 especicado por
último, ignorando todos os atributos de seletores anteriores.

Estão corretas APENAS as armativas

(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 docu-


mentos de melhor apresentação;

• prover maior exibilidade e controle na especicaçã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 compartil-
har as deniçõ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 simplica a


editoração e a manutenção de sites Web. Notoriamente, essa separação também permite
que a apresentação do site seja denida por designers (prossionais de criação), que podem
trabalhar em paralelo aos desenvolvedores. Desprende-se disso que a armativa 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 denido 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 armazena-
dos 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 req-
uisiçã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 algu-
mas dicas para aumentar o desempenho de aplicações web.

A alternativa IV refere-se ao efeito cascata do CSS, que pode ser denido como um con-
junto 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 especicidade 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 (denido 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 denido pelo usuário prevalece sobre todas
as demais, pois é a de mais alta prioridade. Entre as folhas de estilo denidas pelo desen-
volvedor do site, os estilos inline (dentro de um elemento HTML) tem a prioridade mais
elevada, isto é, prevalecerá sobre a folha de estilo denida na seção head, e, esta prevalecerá
sobre uma folha de estilo externa. Portanto, a alternativa IV é errada pois dene 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 Volume 02  Edição 2

13. Assuntos relacionados: Gerência de Projeto, Gerência de Tempo, Desenvolvimento de


Cronograma,
Banca: CESGRANRIO
Instituição: Petrobras
Cargo: Analista de Sistemas - Eng. de Software
Ano: 2008
Questão: 33
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 especicadas.

(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 ne-
cessidade 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 du-


raçã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 re-
duzir o prazo do projeto denido 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 nor-
malmente 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 stake-


holders, 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 Volume 02  Edição 2

14. Assuntos relacionados: Gerência de Projeto, Gerência de Escopo, EAP,


Banca: CESGRANRIO
Instituição: Petrobras
Cargo: Analista de Sistemas - Eng. de Software
Ano: 2008
Questão: 34
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 denir 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. Exis-
tem 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, soft-
ware 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 deniçã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. Enm, todo o trabalho a ser executado
no projeto deve estar na EAP, e seus componentes auxiliam as partes interessadas (stake-
holders) a visualizar as entregas (internas ou externas).

(D) ERRADA

A alocação dos recursos às tarefas denidas 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 denidos 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 com-


preende 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: passar a resposta ao risco para terceiros;

• mitigar: 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 Volume 02  Edição 2

15. Assuntos relacionados: Gerência de Projeto, Gerência de Custos, Gerenciamento de


Valor Agregado (GVA),
Banca: CESGRANRIO
Instituição: Petrobras
Cargo: Analista de Sistemas - Eng. de Software
Ano: 2008
Questão: 35
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: denição e elaboração do escopo do projeto, incluindo a Estrutura Analítica do Pro-
jeto (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 baseando-
se 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)
reete 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) rep-
resenta 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 com-


parado 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 Tra-
balho 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 Volume 02  Edição 2

16. 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 to-
das 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 for-
madas por apenas dígitos (0 a 9), anal 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 Volume 02  Edição 2

17. 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. Enm, essa restrição já está sendo considerada.

O segundo passo é subtrair desse conjunto o subconjunto formado por sequências distin-
tas 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 Volume 02  Edição 2

18. Assuntos relacionados: Gerência de Projeto, Gerência de Integração, Controle Integrado


de Mudanças,
Banca: CESGRANRIO
Instituição: Petrobras
Cargo: Analista de Sistemas - Eng. de Software
Ano: 2008
Questão: 38
É recomendado que um projeto possua um mecanismo formal e documentado de controle
de mudanças. Sobre este mecanismo, são feitas as armativas 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 mu-
danças que possuam impacto signicativo 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 mu-


danç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 armativas:


(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 especicamente, 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 denem
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 armaçõ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, armativa 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, armaçã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 ex-
terna 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
denidas claramente nos procedimentos de controle de conguração e de controle de
mudanças e são acordadas com o patrocinador, com o cliente e com outras partes inter-
essadas. Ou seja, a avaliação e aprovação das mudanças não dependem exclusivamente
do gerente de projetos, mas de um comitê. Logo, armaçã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 re-
sultado 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, armaçã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 Volume 02  Edição 2

19. Assuntos relacionados: Lógica,


Banca: CESGRANRIO
Instituição: Petrobras
Cargo: Analista de Sistemas - Eng. de Software
Ano: 2008
Questão: 39

((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 Volume 02  Edição 2

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
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 Volume 02  Edição 2

20. Assuntos relacionados: Lógica,


Banca: CESGRANRIO
Instituição: Petrobras
Cargo: Analista de Sistemas - Eng. de Software
Ano: 2008
Questão: 40
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 X → ¬Y ;
ii 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 → F ). Concluímos, então, ¬X , ou seja,
Ana não sabe que Beatriz tem acesso ao sistema de almoxarifado. 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 Volume 02  Edição 2

21. Assuntos relacionados: Lógica,


Banca: CESGRANRIO
Instituição: Petrobras
Cargo: Analista de Sistemas - Eng. de Software
Ano: 2008
Questão: 41
O projeto será bem-sucedido se ou o processo de desenvolvimento é o Processo Unicado
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 modicado para que tenha o mesmo signicado da seguinte maneira:
Para que o projeto seja bem-sucedido é necessário que pelo menos uma das seguintes as-
sertivas se torne verdadeira: o processo de desenvolvimento é o Processo Unicado ou a
linguagem utilizada é Java..

Quando utilizamos a palavra necessário, estamos dizendo que para que o projeto seja bem-
sucedido, obrigatoriamente a condição necessária deve ser atendida. Entretanto, não estamos
dizendo que, caso a condição seja atendida (Processo Unicado ou Java), é suciente 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 corre-
sponde ao signicado 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 op-
erador da operação se-então e a consequência é o primeiro.

Um bom exemplo para xar os conceitos de suciência e necessidade é a seguinte proposição:


CARIOCA → BRASILEIRO. Ser CARIOCA é suciente 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 Volume 02  Edição 2

22. Assuntos relacionados: 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 - Eng. de Software
Ano: 2008
Questão: 42
Nas armativas 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 deniçã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 prossionais
especializados em segurança.

IV O ISMS é denido 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 armativas

(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 especica um conjunto de requisitos para o estabelecimento, implan-
taçã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 denido como um frame-
work 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 al-
ternativa 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 in-
formação. Pode se dizer que a armativa 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 é denida
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 dene 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 identicar 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 certicaçã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 Volume 02  Edição 2

23. Assuntos relacionados: Segurança da Informação, Princípios Fundamentais da Segurança


da Informação,
Banca: CESGRANRIO
Instituição: Petrobras
Cargo: Analista de Sistemas - Eng. de Software
Ano: 2008
Questão: 43
Os três princípios fundamentais aplicáveis à segurança da informação são:

(a). condencialidade, integridade e privacidade.

(b). condencialidade, não-repúdio e legitimidade.

(c). condencialidade, 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: condencialidade, integri-
dade 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: condencialidade, integridade e disponi-
bilidade.

A condencialidade diz que a informação só está disponível para aqueles devidamente au-
torizados; 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:

• condencialidade: 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 Volume 02  Edição 2

24. 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 armativas sobre a tecnologia de portais.

I - Um portal em geral utiliza uma instância de banco de dados para armazenar infor-
maçõ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 arquite-
tura 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 armativas

(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 con-
teú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 armativas 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 signicado 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 Volume 02  Edição 2

• B2B (Business to Business): 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 ex-


emplos 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
signicados, 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 Volume 02  Edição 2

25. Assuntos relacionados: Engenharia de Software, Orientação a Objeto, Padrões de Pro-


jeto,
Banca: CESGRANRIO
Instituição: Petrobras
Cargo: Analista de Sistemas - Eng. de Software
Ano: 2008
Questão: 45
Classes devem estar abertas para extensão e fechadas para modicaçã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 identica e dene classes que reetem 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 requisi-
tos 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 encap-
sulados 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 inuenciado 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 identicação que representa o problema, suas soluções e consequências;

• Problema: explica o problema de projeto, seu contexto e quando aplicar o padrão;

• Solução: descreve os elementos que compõem o projeto, seus relacionamentos, respon-


sabilidades e colaborações. Não descreve um particular projeto concreto ou implemen-
tação;

Página 51 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos Volume 02  Edição 2

• Consequências: 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 é classicado segundo o seu escopo: de classe ou de objeto. Nos
padrões com escopo de classe os relacionamentos que denem este padrão são denidos
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 denidos em tempo de execução. A Tabela
10 apresenta os padrões GoF organizados em grupos com os respectivos escopos.

Grupos
Escopo Criativo Estrutural Comportamental
Classe Método-Fábrica Adaptador (classe) 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 modicação é um
dos principais princípios da orientação a objetos, e é conhecido como o princípio Aberto-
Fechado (Open Closed Principle  OCP ). Este princípio quer dizer que devemos estruturar
um aplicativo de forma que seja possível adicionar novas funcionalidades com modicaçõ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 adi-
cionar 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 deniçã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 de-
seja 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


modicar 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 eciente. O yweight é
apropriado quando vários objetos devem ser manipulados, e esses não suportam dados adi-
cionais. 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 modicá-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 especica os tipos de obje-


tos 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 proto-
type pode ser útil em sistemas que utilizam classes denidas em tempo de execução.

O padrão prototype não está relacionado a estender funcionalidades de uma classe base
sem modicá-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 pos-
sui 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 in-
stância em tempo de execução.

O padrão singleton não está relacionado a estender funcionalidades de uma classe base
sem modicá-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
modicá-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 Volume 02  Edição 2

26. Assuntos relacionados: Web Services, Interoperabilidade entre Aplicações,


Banca: CESGRANRIO
Instituição: Petrobras
Cargo: Analista de Sistemas - Eng. de Software
Ano: 2008
Questão: 46
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 for-
matadas 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 identicados por URIs (Identicadores 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 especicações vêm sendo desenvolvidas, principalmente pela W3C, para estender
as funcionalidades dos web services. Essas especicações são chamadas de WS-*. Algumas
das especicaçõ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 ar-
quiteturais distintas que podem ser adotadas em projetos e desenvolvimentos de web services.

(B) ERRADA

SOAP (Simple Object Access Protocol) é um protocolo que dene, 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 empre-
sas de hardware e software; e construído sobre padrões também abertos como HTTP e XML.

Web Services Denition 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 de-
screver o serviço, especica como acessá-lo e quais as operações ou métodos disponíveis.

Como SOAP é um protocolo e WSDL uma linguagem de denição, é incorreto dizer que
eles são abordagens arquiteturais para projeto e implementação de web services.

(C) ERRADA

O RPC (Remote Procedure Call) dene um protocolo para execução remota de procedi-
mentos 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 se-
gundo 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 ex-
ecuçã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 denido pela
norma ISO 8879:1986 Information processingText and oce systems. Ela é uma met-
alinguagem que pode ser utilizada para denir linguagens de marcação para documentos.
SGML é uma descendente da GML (Generalized Markup Language) da IBM. Duas impor-
tantes 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. Por-
tanto, 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 Volume 02  Edição 2

27. 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. Considerando-
se implementações típicas em J2EE/JEE e .NET, compondo uma arquitetura em 3 camadas,
é correto armar 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 over-


head 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 exemplicar 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 Mi-
crosystems 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 exem-
plo, 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 funcionali-


dades 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 Volume 02  Edição 2

28. Assuntos relacionados: Processo Unicado,


Banca: CESGRANRIO
Instituição: Petrobras
Cargo: Analista de Sistemas - Eng. de Software
Ano: 2008
Questão: 48
Um princípio fundamental do Processo Unicado é

(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 Unicado 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


(Unied 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 denido 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 dene
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 pro-
jetada 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 Unicado 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 especicar 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 Volume 02  Edição 2

2. Elaboração: 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 especicados 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 Unicado 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 Unicado. É justamente por isso que esta é a alternativa correta.

(B) ERRADA

Times auto-dirigidos e auto-organizados não é uma característica do Processo Unicado.


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


plexos, 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 inuência desestabilizadora.

(C) ERRADA

O modelo de desenvolvimento em cascata é um modelo sequencial, no qual o desenvolvi-


mento é 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 Unicado é uma metodologia iter-
ativa 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
Unicado. 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 fun-
cionado 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 denidas e que repre-


sentam 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 Volume 02  Edição 2

29. Assuntos relacionados: Processo Unicado, UML, Modelo de Casos de Uso,


Banca: CESGRANRIO
Instituição: Petrobras
Cargo: Analista de Sistemas - Eng. de Software
Ano: 2008
Questão: 49
O modelo de casos de uso é um dos artefatos mais importantes previstos pelo Processo
Unicado. Sobre o modelo de casos de uso, são feitas as armativas a seguir.

I Atores humanos são identicados 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 armativas

(a). I e II

(b). I e III

(c). II e III

(d). II e IV

(e). III e IV

Solução:
O Processo Unicado 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 (Unied Modeling Lan-
guage). 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 gracamente 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 con-


creto e tangível. Ou seja, ele dene uma grande função do sistema. Gracamente, 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.

Enm, 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: dene do ponto de vista externo uma fun-
cionalidade do sistema.

• entre atores
 Relacionamento de Generalização: dene 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 vericará 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 armativas 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 alterna-
tivas 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 Volume 02  Edição 2

30. Assuntos relacionados: Metodologia de Desenvolvimento de Software,


Banca: CESGRANRIO
Instituição: Petrobras
Cargo: Analista de Sistemas - Eng. de Software
Ano: 2008
Questão: 50
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 gerencia-
mento 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 especicaçõ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 so-
licitações de mudanças de forma a garantir que será entregue exatamente o que
foi especicado.

(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 desenvolvi-
mento de novos produtos de forma cíclica (ou iterativa). Algumas dessas metodologias são:
RUP (Rational Unied 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 especicações de requisitos.

(B) ERRADA

Essa seria talvez uma boa abordagem, mas não é a que a maioria das metodologias mod-
ernas 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 especicado, 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 metodolo-
gias 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 simplicaçã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 Volume 02  Edição 2

31. Assuntos relacionados: Processo Unicado, UML, Análise de Caso de Uso,


Banca: CESGRANRIO
Instituição: Petrobras
Cargo: Analista de Sistemas - Eng. de Software
Ano: 2008
Questão: 51
A atividade analisar um caso de uso, prevista no Processo Unicado, produz um artefato
chamado realização de análise de caso de uso, que mostra como as classes de análise co-
laboram para que o caso de uso apresente o comportamento especicado. A esse respeito,
assinale a armação correta.

(a). As classes de análise, neste artefato, devem conter referências a detalhes de imple-
mentaçã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
renar o modelo de casos de uso.

(c). A interação entre as classes de análise é expressa primariamente através de dia-


gramas 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 especica 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:

• identicar 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;

• identicar responsabilidades e atributos associações de classes;

• identicar 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 tor-


nam mais evidentes. Com isso, podemos armar 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 de-


screvem 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 Volume 02  Edição 2

32. 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 Unicado, é correto armar que um(a)

(a). caso de teste é composto por um ou mais planos de testes.

(b). script de teste dene 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 cober-
tura.

Solução:
O Processo Unicado (PU) surgiu como um processo popular para o desenvolvimento de
software visando à construção de sistemas orientados a objetos (o RUP  Rational Unied
Process é um renamento do PU). Ou seja, Processo Unicado é um processo de desen-
volvimento, já o Rational Unied Process é um produto da Rational  IBM, que tem no seu
núcleo o Processo Unicado.

O Processo Unicado utiliza um paradigma evolucionário para o desenvolvimento de soft-


wares. O ciclo de vida iterativo é baseado em renamentos e incrementos sucessivos a m de
convergir para um sistema adequado. Em cada iteração incrementa-se um pouco mais o pro-
duto, baseando-se na experiência obtida nas iterações anteriores e no feedback do usuário.
O Processo Unicado 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 disponi-
bilizados 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 é denida, e durante a fase de construção quando o sistema é imple-
mentado. 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 du-


rante 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 Volume 02  Edição 2

Mais especicamente, um modelo de teste 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 Unicado é 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 é vericar 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, identicados com a nalidade de avaliar um determinado aspecto de
um item de teste-alvo.

Um plano de testes é uma deniçã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 pro-
dutos 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 armam 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 con-
ceitual; Protótipo Rápido; Simulação; Conversão automática de especicações em código;
Especicaçõ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 conabilidade, 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 (de-
feitos) identicadas 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 Volume 02  Edição 2

33. Assuntos relacionados: 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 - Eng. de Software
Ano: 2008
Questão: 53
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 vericadas 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 obje-


tos 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;

• Especicaçã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 maio-


ria 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. Seus
principais elementos são:

Página 72 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos Volume 02  Edição 2

• início: círculo preenchido;

• estado ou atividade: retângulo com bordas arredondadas;

• transição: seta;

• decisão ou desvio: losango - uma entrada e mais de uma saída;

• intercalação ou merge: losango - mais de uma entrada e uma saída;

• separação ou fork: barra horizontal - uma entrada e mais de uma saída;

• junção ou join: 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 uti-
lizado 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 signica 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 é denido pelos valores dos atributos de um objeto de uma de-
terminada 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 signicativamente 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 servi-


dor. 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 modela-
dos como os estímulos.

Diagrama de Componentes

Um diagrama de componente mostra os componentes do software (por exemplo, compo-


nentes 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 en-
tre 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 Volume 02  Edição 2

34. 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 armaçã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 é permi-
tido 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 identicar 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 relaciona-


mento 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 signica 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 classicar a Classe A como


sendo o todo e a Classe B como a parte do relacionamento. Assim, podemos vericar 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 rela-


cionamento também pode ser chamado de relacionamento de especialização, pois a general-
izaçã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 sub-
classe (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 todo-
parte. 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 ap-
resentada 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 ob-
jetos 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 recep-
tores. 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 reme-
tente 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 Volume 02  Edição 2

35. Assuntos relacionados: Engenharia de Software, Testes de Software, Complexidade Ci-


clomática,
Banca: CESGRANRIO
Instituição: Petrobras
Cargo: Analista de Sistemas - Eng. de Software
Ano: 2008
Questão: 55
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 linear-
mente 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 5.

Página 79 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos Volume 02  Edição 2

36. Assuntos relacionados: 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 - Eng. de Software
Ano: 2008
Questão: 56
Sobre o algoritmo de ordenação heapsort, assinale a armaçã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 eciente 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 algo-
ritmos 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 com-
paraçã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

• verique 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 alter-
nativa 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 eciente for a escolha do pivot, mais eciente será o desem-
penho da ordenação do algoritmo Quicksort.

(D) ERRADA

No pior caso, a ordenação por inserção apresenta complexidade igual a O(n2 ), pois nesse
caso são necessárias n(n − 1)/2 ≈ (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 eciê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 Volume 02  Edição 2

37. Assuntos relacionados: Estruturas de Dados, Lista Encadeada, Tabela Hash,


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.

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]])]] 6= NIL
03 então inicio[anterior[inicio[H[h(chave[chave[x]])]]]] ← chave[x]
04 inicio[H[h(chave[chave[x]])]] ← chave[x]
05 anterior[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]])]]] ← chave[x]

(d). 04 proximo[inicio[H[h(chave[chave[x]])]]] ← proximo[chave[x]]

(e). 05 anterior[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âmi-
cos.

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 ante-
rior[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 ini-
cio, 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 dupla-
mente 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 C.

Página 83 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos Volume 02  Edição 2

38. Assuntos relacionados: Estruturas de Dados, Lista Encadeada, Tabela Hash,


Banca: CESGRANRIO
Instituição: Petrobras
Cargo: Analista de Sistemas - Eng. de Software
Ano: 2008
Questão: 58
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]])]] 6= NIL
03 então anterior[inicio[H[h(chave[chave[x]])]]] ← chave[x]
04 inicio[H[h(chave[chave[x]])]] ← chave[x]
05 anterior[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 Volume 02  Edição 2

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
Handbook de Questões de TI Comentadas para Concursos Volume 02  Edição 2

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
Handbook de Questões de TI Comentadas para Concursos Volume 02  Edição 2

39. Assuntos relacionados: Estruturas de Dados, Árvore B,


Banca: CESGRANRIO
Instituição: Petrobras
Cargo: Analista de Sistemas - Eng. de Software
Ano: 2008
Questão: 59
Considere uma árvore B de grau mínimo igual a 2 (o que signica 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éti-
cos ou outros dispositivos de armazenamento secundário.

Antes de solucionarmos a presente questão, é de enorme importância que vejamos algu-


mas 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 signica, 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 con-
siste 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 modicados 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 Volume 02  Edição 2

Figura 11: inserção de chaves em uma árvore B.

Página 89 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos Volume 02  Edição 2

40. 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 test-
DescontoValido() é 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 argu-
mentos 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 declara-
dos.

(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 Volume 02  Edição 2

a palavra chave extends, da seguinte forma: public class ProdutoTest extends Test.

Lembre-se que a palavra chave extends indicaria que todas as declarações de métodos, var-
iá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 especicados. Podemos tratá-lo como um método espe-
cial: 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 con-
strutor.

(D) ERRADA

O campo preco, como está precedido pelo modicador 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
um método, público ( public), 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 modicador 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 especicados usando-se a primeira
letra em maiúsculo. Isso permite que outros programadores que usam os seus pacotes deter-
minem facilmente quais componentes são nomes de diretórios e quais são nomes de interfaces
e classes.

Assim, na verdade, org.junit.* é um pacote que contém várias classes, dentre elas a classe
org.junit.Assert.

Página 92 de 114
www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos Volume 02  Edição 2

41. Assuntos relacionados: Java,


Banca: CESGRANRIO
Instituição: Petrobras
Cargo: Analista de Sistemas - Eng. de Software
Ano: 2008
Questão: 61
testDescontoValido() valida a vericaçã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). CAUSA: versão antiga da máquina virtual Java, que apresenta esse tipo de prob-
lema até a versão 1.1. SOLUÇÃO: atualizar para a última versão da JVM.

(d). 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 Pro-
duto.

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 mon-
etá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 int
são automaticamente promovidas para o tipo double, devido ao campo preco.

(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 progra-
maçã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 compi-
lador. 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 qual-
quer método declarado na mesma classe, independentemente do qualicador 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 Volume 02  Edição 2

42. Assuntos relacionados: Desenvolvimento de Software, Diagrama de Classes,


Banca: CESGRANRIO
Instituição: Petrobras
Cargo: Analista de Sistemas - Eng. de Software
Ano: 2008
Questão: 62

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 denidos 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 vericam o tipo do objeto antes da conversão (RITT, do inglês Run-Time
Type Identication ).

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 Volume 02  Edição 2

43. Assuntos relacionados: Java, UML, Diagrama de Classes,


Banca: CESGRANRIO
Instituição: Petrobras
Cargo: Analista de Sistemas - Eng. de Software
Ano: 2008
Questão: 63

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 identicar 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 é comu-
mente 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 as-
terisco (*) 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 Volume 02  Edição 2

44. Assuntos relacionados: Java,


Banca: CESGRANRIO
Instituição: Petrobras
Cargo: Analista de Sistemas - Eng. de Software
Ano: 2008
Questão: 64
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, con-
teú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 Volume 02  Edição 2

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
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 Volume 02  Edição 2

46. Assuntos relacionados: Banco de Dados, Modelo Relacional, Data Warehouse, Modelo
Multidimensional, Data Mart, ROLAP, OLAP,
Banca: CESGRANRIO
Instituição: Petrobras
Cargo: Analista de Sistemas - Eng. de Software
Ano: 2008
Questão: 66
A respeito de sistemas de informações gerenciais, são feitas as armativas 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 pro-
porcionam 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 rela-
cional.

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 armativas


(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 desnor-
malizaçõ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 dimen-


sionais, 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 RO-
LAP. 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 armativas 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 mo-
tivações para esse uso é a incrível escalabilidade dos bancos de dados relacionais e
a grande disponibilidade de ferramentas. Já uma arquitetura MOLAP (multidimen-
sional) é construída, de forma otimizada, em estruturas de dados que possibilitam a
melhoria de desempenho em consultas. Ou seja, a armação está incorreta, pois arma
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 dicultará a integração no futuro;

IV a armativa 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 Volume 02  Edição 2

47. 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 dene níveis crescentes de capacidade (capability) para as áreas de processos e
de maturidade (maturity) organizacional. Sobre os níveis de maturidade, é correto armar
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 (Soft-
ware Engineering Institute) com o objetivo de substituir as diversas CMMs (Capability
Maturity Model) desenvolvidas especicamente para cada área de atuação, tais como: de-
senvolvimento de sistemas, engenharia de software, aquisição de software e desenvolvimento
de processos. Apesar das CMMs serem úteis, elas são excessivamente diversicadas e, por
conta disso, foram consideradas problemáticas: redundância de conceitos, terminologia in-
comum, 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 es-
tabelecer 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 (Denido);

• nível 2: Gerenciado;

Página 105 de 114


www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos Volume 02  Edição 2

• nível 3: Denido;

• nível 4: Quantitativamente gerenciado;

• nível 5: Em otimização (ou Optimizado).

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): há gerenciamento sobre os requisitos, processos, produtos e


serviços. 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 (Denido): os processos BÁSICOS do nível 2 se tornam padrão para a organi-


zação. Esses processos, que são otimizados com o passar do tempo, são utilizados para
a geração de processos denidos para cada projeto da organização;

• nível 4 (Quantitativamente gerenciado): a ecácia e a eciência de cada processo são


percebidas em termos estatísticos durante toda a sua vida. As causas de variações de
eciência e/ou ecá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 tec-


nologia 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 opera-


cionais, anal 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 Volume 02  Edição 2

48. Assuntos relacionados: Norma de Qualidade de Software, ISO 9001:2000,


Banca: CESGRANRIO
Instituição: Petrobras
Cargo: Analista de Sistemas - Eng. de Software
Ano: 2008
Questão: 68
Durante os testes de um software produzido pelo departamento de TI de uma empresa,
vericou-se que o mesmo não atendia a alguns dos requisitos originais especicados pelos
clientes. Sobre a condução da situação, são feitas as armativas 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 identicadas e eliminadas do processo de desenvolvimento.

II - O software deve ser entregue provisoriamente nestas condições, para diminuir a insat-
isfaçã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 denir 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 ecazes 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 armativas:


(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 abor-
dagem 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 especicados 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 ativi-


dades 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 armaçõ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 denir ações para eliminar as
causas de não-conformidades potenciais de forma a evitar a sua ocorrência. Logo,
armativa verdadeira;

II - a organização deve assegurar que produtos que não esteja conforme aos requisitos
sejam identicados 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 armativa é falsa;

III - um sistema de gestão da qualidade em conformidade com a ISO 9001:2000 asse-


gura que todo o processo de desenvolvimento possui um nível de controle, disciplina e
repetibilidade, garantindo a qualidade dos produtos. Portanto, armativa 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 perti-
nente 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 vericado para demonstrar
a conformidade com os requisitos. Quando a não-conformidade do produto for detec-
tada 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. Logo, armativa
verdadeira.

Conforme exposto acima, a alternativa correta é a letra b.

Página 109 de 114


www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos Volume 02  Edição 2

49. 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, especicado pelo IT Governance Institute (ITGI), é um framework para
governança de TI. Conforme denida 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 equiva-


lente 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, as-


segurando 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 simplicar 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 é denido como a organização lógica para os processos empresariais e infraestrutura
de TI que reetem 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 (De-
partamento 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 neces-
sidades 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 denitivo. 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 com-
binado 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 dene 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 denidos, 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 Volume 02  Edição 2

50. 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 identicados
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). denir cada processo de forma que seja repetível.

(c). estabelecer metas e objetivos claros para cada processo para uma execução ecaz.

(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: desenvolvi-
mento 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 respons-
abilidade seja clara é o PC1  Process Owner (Proprietário do Processo).

(B) ERRADA

O controle geral que dene 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 exe-
cução ecaz é 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 dene nenhum controle geral sobre SLA. O SLA é controlado no COBIT
pelo processo Dene and manage service levels (Dene 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)  dene regras, pa-


péis e responsabilidades não ambíguas para cada processo do COBIT para a execução
eciente;

• 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 Volume 02  Edição 2

Questao Resposta
1 E
2 A
3 E
4 C
5 E
6 A
7 B
8 A
9 E
10 C
11 B
12 C
13 B
14 C
15 D
16 B
17 D
18 C
19 C
20 B
21 E
22 B
23 C
24 E
25 A
26 A
27 E
28 A
29 B
30 D
31 B
32 E
33 C
34 A
35 D
36 B
37 C
38 B
39 E
40 C
41 A
42 D
43 D
44 C
45 A
46 D
47 B
48 B
49 C
50 E

Página 114 de 114 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,

B2B, 49 66

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
Certicado 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
Padrões de Projeto, 51
Diagrama de Estados, 72
PKI, 23
Diagrama de Sequência, 72
Portais Corporativos, 49

EAP, 32 Primeira Forma Normal (1FN), 9, 14

Engenharia de Software, 51, 70, 79 Princípios Fundamentais da Segurança da In-

Estruturas de Dados, 82, 84, 87 formação, 48


Probabilidade e Estatística, 36, 37
Família ISO 27000, 46 Processo Unicado, 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


Segunda Forma Normal (2FN), 14
Governança de TI, 110, 112
Segurança da Informação, 23, 46, 48

Heapsort, 80 Servidor de Aplicações, 58

HTTP, 28 SQL, 16

HTTPS, 23
Tabela Hash, 82, 84
115Terceira Forma Normal (3FN), 14
Interoperabilidade entre Aplicações, 55
Handbook de Questões de TI Comentadas para Concursos Volume 02  Edição 2

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

Você também pode gostar