Grupo Handbook
Handbook de
Questões de TI comentadas para concursos Além do gabarito
Volume 9
Desenvolvimento de Software Parte 2 ESAF - Escola de Administração Fazendária
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
Prefácio Este é o volume 9 da Handbook de Questões de TI Comentadas para Concursos Além do Gabarito, que traz para você 50 questões elaboradas pela ESAF (Escola de Administração Fazendária). A realização de concursos públicos no âmbito do Ministério da Fazenda e no de instituições conveniadas é uma das principais atividades da ESAF. Essa banca vem sendo a responsável pela organização de vários concursos de grande relevância na área de TI, como os da Receita Federal, Secretaria do Tesouro Nacional, Controladoria Geral da União, entre outros. Portanto, para ajudá-lo ainda mais em sua preparação para concursos organizados pela ESAF, o Grupo Handbook de TI preparou para você o volume 9, que traz para você questões com grande ênfase na área de desenvolvimento de sistemas. Nele você vai encontrar questões de Engenharia de Software, CMMI, MPS.BR, Orientação a Objetos, Governança de TI, Java, Segurança da Informação e muitos outros assuntos que sempre guram nas provas para a área de desenvolvimento de sistemas. Bons estudos, Grupo Handbook de TI
Página 1 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
Direitos Autorais Este material é registrado no Escritório de Direitos Autorais (EDA) da Fundação Biblioteca Nacional. Todos os direitos autorais referentes a esta obra são reservados exclusivamente aos seus autores. Os autores deste material não proíbem seu compartilhamento entre amigos e colegas próximos de estudo. Contudo, a reprodução, parcial ou integral, e a disseminação deste material de forma indiscriminada através de qualquer meio, inclusive na Internet, extrapolam os limites da colaboração. Essa prática desincentiva o lançamento de novos produtos e enfraquece a comunidade concurseira Handbook de TI. A série Handbook de Questões de TI Comentadas para Concursos Além produção independente e contamos com você para mantê-la sempre viva. Grupo Handbook de TI
Página 2 de 127 www.handbookdeti.com.br
do Gabarito
é uma
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
Canais de Comunicação O Grupo Handbook de TI disponibiliza diversos canais de comunicação para os concurseiros de TI. Loja Handbook de TI
Acesse a nossa loja virtual em http://www.handbookdeti.com.br Serviço de Atendimento
Comunique-se diretamente conosco através do e-mail faleconosco@handbookdeti.com.br Twitter do Handbook de TI
Acompanhe de perto promoções e lançamentos de produtos pelo nosso Twitter http://twitter. com/handbookdeti
Página 3 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
1. Assuntos relacionados: Governança de TI, Organizational Project Management Maturity Model (OPM3), CMMI, Gerenciamento Eletrônico de Documentos (GED), COBIT, Portais Corporativos,
Banca: ESAF Instituição: Agência Nacional de Águas (ANA) Cargo: Analista Administrativo - Tecnologia da Informação
e Comunicação / Desenvolvi-
mento de Sistemas e Administração de Banco de Dados
Ano: 2009 Questão: 1
O _________ é empregado na governança de recursos de Tecnologia da Informação (TI). Assinale a opção que completa corretamente a frase acima. (a). OPM3 (b). CMMI (c). GED (d). COBIT (e). Portal corporativo
Solução: 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. Assim, a governança e o X (descobriremos quem é o X quando analisarmos as alternativas a seguir) devem suportar os interesses dos stakeholders internos e externos de acordo com as necessidades especí cas de cada um: os de dentro da empresa que têm interesse em gerar valor a partir de investimentos de TI; os que prestam serviços de TI sejam eles internos (Departamento de TI) ou externos (fornecedores); e os que controlam riscos e responsabilidades. Bom, agora nós analisaremos cada alternativa. (A) ERRADA OPM3 (Organizational Project Management Maturity Model, em português Modelo de Maturidade em Gerenciamento de Projetos Organizacionais) fornece um mecanismo que permite monitorar o progresso dos interesses estratégicos da organização através da execução precisa e bem sucedida dos projetos. Em outras palavras, ele possibilita que a empresa utilize a gestão de projetos para atingir suas metas nos prazos e dentro do orçamento. Ao estudar o OPM3, você perceberá que ele é baseado no guia PMBOK (padrão global) e pode ser aplicado em organizações de diversos segmentos, tamanhos ou localizações geográ cas. Notará também que o OPM3 desenvolve um ciclo continuado de aperfeiçoamento do conhecimento, da avaliação e da melhoria de forma que, conforme você se move pelo processo de melhoria, passa por uma mudança de pensamento que posicionará sua organização de modo a permitir que ela obtenha tanto ganhos imediatos como sucesso em longo prazo. Você perceberá também que o OPM3 permite que as organizações avaliem seu nível de maturidade. No caso, existem 4 níveis (Padronizar, Medir, Controlar e Melhorar continuamente) para cada domínio de análise: Projetos que é o domínio, digamos, mais baixo ;
Página 4 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
Programas, domínio intermediário ; e Portfólios, representado o domínio mais alto . Candidato, lembre-se que maturidade é o desenvolvimento de sistemas e processos que são repetitivos por natureza e garantem uma alta probabilidade de que cada um deles seja um sucesso. Observe que, em nenhum momento zemos menção à Governança de TI, o que nos dá condição para descartar esta alternativa. (B) ERRADA O CMMI (Capability Maturity Model Integration) é uma metodologia criada pela SEI (Software Engineering Institute) com o objetivo de substituir as diversas CMMs (Capability Maturity Model) desenvolvidas especi camente para cada área de atuação, tais como: desenvolvimento de sistemas, engenharia de software, aquisição de software e desenvolvimento de processos. Apesar das CMMs serem úteis, elas são excessivamente diversi cadas e, por conta disso, foram consideradas problemáticas (redundância de conceitos, terminologia incomum, inconsistências, etc.) De forma geral, o objetivo maior do CMMI é prover um conjunto de boas práticas para melhoria dos processos das organizações e a habilidade de gerenciar, desenvolver e manter os seus produtos (softwares). Essas práticas, já consideradas efetivas, são organizadas em uma estrutura que visa auxiliar a organização, em particular os gerentes de projetos, a estabelecer suas prioridades para a conquista de melhorias. Um guia para a implementação dessas melhorias também é fornecido pelo CMMI. Candidato, você precisa saber as diferenças entre as formas de representação que o CMMI possui, uma contínua e outra por estágios (a existência de duas representações visa a oferecer exibilidade para as organizações poderem utilizar diferentes meios para obterem melhorias de acordo com as suas realidades). Enquanto que 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, 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. Novamente, em nenhum momento zemos menção à Governança de TI, o que nos permite eliminar esta alternativa. (C) ERRADA GED (Gerenciamento Eletrônico de Documentos) é uma tecnologia que provê um meio de facilmente gerar, controlar, armazenar, compartilhar e recuperar informações existentes em documentos. Os sistemas GED permitem que os usuários acessem os documentos de forma ágil e segura. Como bem sabemos, os conhecimentos de uma empresa residem na massa de documentos que a mesma possui. É aqui que entra o GED, permitindo a preservação e a organização deste patrimônio, assegurando a informação necessária, na hora exata, para a pessoa certa. Não é difícil intuir que, devido a sua capacidade de gerenciar documentos, a GED é uma
Página 5 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
ferramenta indispensável para a Gestão do Conhecimento. Não é difícil concluir também que a alternativa está ERRADA. (D) CORRETA O Control Objective for Information and related Technology (COBIT) é um framework que fornece as melhores práticas para gerenciamento de processos de TI, atendendo as necessidades de gestão de uma organização, tratando os riscos do negócio, as necessidades de controle e as métricas de desempenho. Esse framework serve de suporte para implementar a Governança de TI numa organização garantindo que: a TI esteja alinhada com o negócio; a TI permita o negócio e maximize os benefícios; os recursos de TI sejam usados com responsabilidade; e que os riscos de TI sejam gerenciados apropriadamente. Vale reforçar que o COBIT não é um padrão de nitivo. Ele serve como apoio para a implementação de controles na Governança de TI, ditando o o que fazer e não se preocupando como fazer . O COBIT foca em duas áreas chaves: fornece informações necessárias para suportar os objetivos e os requisitos do negócio; e trata as informações como sendo o resultado combinado de aplicações e recursos de TI que precisam ser gerenciados por processos de TI. Para isso, o COBIT agrupa os processos de TI em quatro áreas ou domínios: 1. Planejamento e Organização; 2. Aquisição e Implementação; 3. Entrega e Suporte; 4. Monitoração e Avaliação. Candidato, lembre-se disso: 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! Portanto, a alternativa está CORRETA. (E) ERRADA Os portais corporativos são, comumente, apresentados como uma evolução das intranets. No entanto, os portais também podem ser vistos como uma aplicação web que agrega conteúdo, colaboração, conhecimento e aplicativos transacionais, todos em uma interface única. Exemplos de funcionalidades que os portais normalmente possuem são:
• busca e indexação; • categorização de conteúdo; • colaboração; • personalização; • comunidades; • integração de sistemas; • segurança. A seguir, apresentamos alguns exemplos de portais corporativos (Candidato, decore o signi cado destas siglas!): Página 6 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
• B2B (Business to Business): transações de comércio entre empresas. Por exemplo, um banco transferindo recursos para; • B2C (Business to Consumer): transações entre uma empresa e um consumidor. Por exemplo, portais da Submarino e da Lojas; • C2C (Consumer to Consumer): transações entre consumidores, intermediadas normalmente por uma empresa. Por exemplo, o sites de leilão Ebay e Mercado Livre; • B2G (Business to Governement): transações entre empresa e governo, como, por exemplo, licitações e compras de fornecedores; • B2E (Business-to-Employee): portais que atendem aos empregados. Oferecem aos empregados uma interface única para que eles possam acompanhar as notícias da empresa, gerenciar seus dados pessoais, solicitar serviços, etc. Portanto, nada relacionado à Governança de TI.
Página 7 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 2. Assuntos relacionados: volvimento Evolucionário,
Volume 9 Edição 1
Engenharia de Software, Modelo de Processo de Software, Desen-
Transformação Formal, Desenvolvimento em Cascata,
Banca: ESAF Instituição: Agência Nacional de Águas (ANA) Cargo: Analista Administrativo - Tecnologia da Informação
e Comunicação / Desenvolvi-
mento de Sistemas e Administração de Banco de Dados
Ano: 2009 Questão: 8
O modelo de processo de software caracterizado por intercalar as atividades de especi cação, desenvolvimento e validação, denomina-se (a). modelo de work ow. (b). modelo de uxo de dados. (c). desenvolvimento evolucionário. (d). transformação formal. (e). modelo em cascata.
Solução: (A) ERRADA Um modelo de work ow é responsável por analisar e modelar todo o tramite de informações e atividades referentes a um processo de negócio de uma empresa para que possa ser de nida uma forma organizada de execução das tarefas que compõem o processo. A automação do processo de negócio de uma empresa é o resultado nal da modelagem de work ow, consistindo na interligação de tarefas executadas por participantes do processo ou até mesmo por sistemas computacionais de nindo a ordem de execução e suas prioridades. Durante todo o desenvolvimento de um work ow várias etapas são executadas em uma determinada ordem. O ciclo de vida de um work ow (WFLC - Work ow Life Cycle) de ne a maneira como estas etapas são desenvolvidas em determinado tempo sobre todo o desenvolvimento do work ow. Para tanto, são de nidos três atividades principais:
• Construção e Estabilização: este processo representa a fase de análise e modelagem do processo de negócio que a partir de uma linguagem grá ca é de nido o Work ow, utilizando conceitos como processo, atividade, tarefa, ator, etc. Nesta fase é utilizado o processo de prototipagem para a detecção de erros de modelagem, por esse processo ser iterativo pode detectar e corrigir os erros de de nição do modelo; • Detecção de Inconsistência: nesta fase é gerada uma versão operacional referente à modelagem construída na fase anterior contendo todas as características e eventos do modelo. A versão é executada para que possa veri car o uxo de informação que o modelo representa analisando informações de entrada do processo, recursos utilizados, participantes e resultado de saída do processo a m de detectar inconsistência da análise da fase de construção do modelo. Ao encontrar anomalias no modelo o mesmo é submetido à estabilização novamente para melhorar a qualidade do Work ow; • Reengenharia de processo de Negócio: os dados obtidos na fase anterior ao executar a versão operacional são usados a m de veri car a adequação do modelo de processo de negócio para os objetivos da organização. Se este não for o caso, uma revisão do modelo do processo de negócio deve ser feita. O modelo atualizado é o ponto de partida de uma nova iteração dos processos de estabilização e depuração.
Página 8 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
(B) ERRADA O modelo de uxo de dados é uma forma de representar os processos de um sistema, também, o uxo das informações que entram nos processos e o resultado (saída) do processamento. Um uxo de dados de um sistema pode ser visto como uma rede que interliga os processos mostrando a movimentação dos dados (entrada/saída). Este tipo de modelagem é importante para que o analista entenda todo o tramite das informações no sistema. A modelagem de uxo de dados utiliza componentes para sua representação que são:
• Processo: é parte do sistema representa uma seqüência de operações (procedimento) que pode receber uma ou várias entradas, processar e retorna uma ou várias saídas; • Fluxo: representa a movimentação dos dados, indicando onde as informações trafegam como entrada e onde são saídas. O Fluxo é representado por uma seta que indica a direção da movimentação dos dados; • Depósito: Enquanto o uxo representa as informações em movimento o depósito indica onde os dados estão armazenados (sem movimentação); • Entidade Externa: É uma entidade (sistema externo) que se comunica com o sistema, a sistema externo pode ser uma pessoa, empresa, organização. O modelo de uxo de dado inicia em um nível de abstração alto e sofre processos de re namento até chegar a um nível de detalhamento correspondente a sua necessidade. Para cada iteração de re namento é criado um novo modelo atribuindo ao nome do documento um número correspondente a quantidade de iterações. (C) CORRETA O modelo evolucionário desenvolve todo o projeto de um sistema intercalando as suas atividades de especi cação, desenvolvimento e validação. Este modelo trabalha com muitas versões dos sistemas que são apresentadas para o cliente e então re nadas, ou seja, as versões iniciais são construídas a partir de informações mais gerais e/ou abstratas e ao possa que são nalizadas e expostas para o cliente sofrem avaliações e melhoramentos. As atividades de desenvolvimento não são executadas separadamente para a construção do sistema, mas sim, concorrentemente para que ter uma resposta do cliente e um melhoramento/agregação das funcionalidades até chegar à versão nal. Há dois tipos de desenvolvimento evolucionário: 1. Desenvolvimento exploratório: tem como objetivo de nir com o cliente os requisitos iniciais melhor compreendidos. O sistema sobre alterações à medida que o cliente detecta a necessidade de novas funcionalidades; 2. Fazer protótipos descartáveis: tem como objetivo re nar os requisitos dos sistemas baseando em protótipos para melhorar os requisitos que estão mal compreendidos. (D) ERRADA A transformação formal é um modelo de processo de software que utiliza de métodos formais para o desenvolvimento do software. Isto é, o processo de transformação formal executa várias etapas (atividades) que sequencialmente transformam os requisitos de software em um modelo matemático e posteriormente em um software. Este modelo tem como característica uma modelagem limpa, livre de erro. Isso é obtido através de modelos matemáticos que permitem uma veri cação ou validação do modelo antes que o sistema seja implementado. Página 9 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
A primeira etapa é a de nição dos requisitos juntamente com o cliente. Depois esta descrição do cliente é então detalhada saindo de um nível de abstração de usuário para o nível de especi cação. A especi cação é então transformada em um modelo formal detalhado (modelo matemático). Por m, a implementação do modelo e teste utilizando alguma linguagem de programação. (E) ERRADA O modelo em cascata, também denominado clássico ou sequência linear, sugere uma abordagem sequencial para o desenvolvimento de software, que inicia pela análise e modelagem dos requisitos, projeto, codi cação, teste até manutenção do sistema. A vantagem dessa abordagem seqüencial é visto no gerenciamento do projeto, uma vez que suas atividades possuem pontos de inicialização e nalização, assim, em principio esta modelagem é con ável e abrangem projeto de tamanhos variados. Por outro lado, por ter essa rigidez nas atividades de processo às etapas iniciais como levantamento de requisito e análise devem ser cuidadosamente implementadas, caso contrário, todas as outras etapas serão comprometidas. As principais atividades de desenvolvimento são:
• Análise: as funcionalidades e as restrições do sistema são obtidas através de entrevistas com usuários do sistema. Posteriormente os requisitos são de nidos e então é gerado um documento com a especi cação das funcionalidade de forma detalhada; • Projeto de software: O projeto de software reuni os requisitos (funcionais e não funcionais) em sistemas de hardware ou de software, para então, construir a arquitetura do sistema em um âmbito geral. O projeto de software envolve a identi cação de todos os componentes e seus relacionamentos necessários para o desenvolvimento do sistema; • Implementação: O projeto de software é construído gerando um comum conjunto de módulos (programas) ou um único de programas; • Testes de sistemas: O sistema desenvolvido é submetido a testes que representam os requisitos desejados pelos usuários do sistema a m de veri car erros e inconformidades do sistema; • Manutenção: Depois dos testes o sistema é instado e colocado em funcionamento. A manutenção envolve corrigir erros que não foram descobertos na fase de testes e posteriormente de acordo com as necessidades dos clientes sofrer adições ou melhoramento de funcionalidades. Concluindo, o único processo de software que intercala as atividades de especi cação, desenvolvimento e validação produzindo em cada iteração uma nova versão do software é o modelo evolucionário de software. Portanto, a resposta correta é alternativa C.
Página 10 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 3. Assuntos relacionados:
Volume 9 Edição 1
Web Services, Simple Object Access Protocol (SOAP), Univer-
sal Description, Discovery and Integration (UDDI), Web Services Description Language (WSDL),
Banca: ESAF Instituição: Agência Nacional de Águas (ANA) Cargo: Analista Administrativo - Tecnologia da Informação
e Comunicação / Desenvolvi-
mento de Sistemas e Administração de Banco de Dados
Ano: 2009 Questão: 9
Na arquitetura de Web Services, o componente que compreende um serviço de diretórios para armazenamento de descrições de serviços é (a). o Protocolo de Acesso a Objetos Simples (SOAP). (b). a Descrição, Descoberta e Integração Universal (UDDI). (c). a Linguagem de De nição de Web Services (WSDL). (d). a Linguagem de Marcação Hiper-Texto (HTML). (e). a Arquitetura TCP/IP.
Solução: (A) INCORRETA O SOAP (originalmente do Inglês Simple Object Access Protocol) é um protocolo para intercâmbio de informação estruturada na implementação de Web Services. Como formato de mensagens, ele depende de XML e depende também de protocolos da camada de aplicação, como HTTP e RPC. Por ser um protocolo para troca de informação, o SOAP pode prover a fundação da pilha de protocolos de Web Services, sobre o qual uma infraestrutura maior pode ser construída. Sendo um protocolo de intercâmbio de informação e não um serviço de diretórios, esta opção não responde corretamente a questão. (B) CORRETA O UDDI (do Inglês Universal Description, Discovery and Integration) é um registro baseado em XML e independente de plataforma como um meta serviço (um serviço que serve serviços) para permitir consultas robustas em metadados. Ele fornece à indústria uma especi cação para construção de registros de Web Services interoperáveis. O UDDI é um padrão mantido pela OASIS (Organization for the Advancemente of Structured Information Standards) e permite a publicação de listagens de serviços, a descoberta de serviços e que aplicações interajam através da Internet. De todas as alternativas listadas nesta questão, essa é a única relacionada à publicação e descoberta de serviços e, portanto, é a alternativa correta. (C) INCORRETA A WSDL (do Inglês Web Services Description Language) é, como o próprio nome diz, uma linguagem para descrição de Web Services. Ela é uma linguagem baseada em XML usada para descrever serviços de rede como um conjunto de pontos que operam em mensagens que contém tanto informação orientada a documentos quando informação baseada em procedimentos. Um documento WSDL de ne serviços como coleções de pontos nais. Em WSDL,
Página 11 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
a de nição abstrata de pontos nais e mensagens é separada de sua implementação, o que permite o reuso de de nições abstratas: mensagens, que são descrições abstratas dos dados transmitidos, e tipos de porta, que são coleções abstratas de operações. Sendo uma linguagem para descrição de Web Services sem a capacidade de armazenamento de descrições de serviços, essa alternativa está incorreta. (D) INCORRETA A linguagem de marcação de hipertexto (HTML, do Inglês HyperText Markup Language) é uma linguagem de marcação para páginas web. Ela provê meios para a criação de documentos estruturados através da de nição de semântica estrutural para cabeçalhos, parágrafos, listas, links e assim por diante. Sendo uma linguagem para marcação de texto e sem qualquer característica dinâmica nativa (até a versão 4), e não fazendo parte, diretamente, do conjunto de tecnologias de Web Services, mas como uma forma de apresentação de documentos, HTML não representa uma resposta correta para essa pergunta. (E) INCORRETA A pilha de protocolos TCP/IP é um conjunto de protocolos de comunicação usada na Internet e outras redes similares. Seu nome advém de seus protocolos mais importantes: o de controle de transmissão (TCP) e o da Internet (IP), os dois primeiros a serem de nidos no padrão. Sendo um conjunto de protocolos para comunicação e não fazendo parte, explicitamente, do conjunto de tecnologias de Web Services, a arquitetura TCP/IP não é a solução correta para a questão.
Página 12 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 4. Assuntos relacionados: Engenharia cional, Requisito de Domínio, Requisito
Volume 9 Edição 1
de Software, Requisito de Software, Requisito FunNão-Funcional,
Banca: ESAF Instituição: Agência Nacional de Águas (ANA) Cargo: Analista Administrativo - Tecnologia da Informação
e Comunicação / Desenvolvi-
mento de Sistemas e Administração de Banco de Dados
Ano: 2009 Questão: 12
Analise as seguintes a rmações sobre requisitos de sistemas de software: I. Requisitos funcionais declaram as funções que o sistema deve fornecer, seu comportamento, e ainda, o que o sistema não deve fazer. II. Requisitos de domínio são, exclusivamente, funcionais, pois exibem as características do domínio de aplicação do sistema. III. Requisitos não-funcionais compreendem restrições sobre serviços ou funções do sistema. Assinale a opção correta. (a). Apenas as a rmações I e II são verdadeiras. (b). Apenas as a rmações I e III são verdadeiras. (c). Apenas as a rmações II e III são verdadeiras. (d). As a rmações I, II e III são verdadeiras. (e). Nenhuma das a rmações é verdadeira.
Solução: Primeiramente, requisitos são as propriedades e funcionalidades utilizadas na construção de um sistema de software que implementa todas ou parte das necessidades de uma organização. Os requisitos se dividem no que diz respeito ao grau de detalhamento (diferentes níveis de descrição) em requisitos de usuário e requisitos de sistema. Resumidamente, requisitos de usuários são descrições de funcionalidades com baixo nível de detalhamento. E os requisitos de sistema são descrições detalhadas sobre o que o sistema deverá fazer. Os requisitos de usuários e sistemas são classi cados em requisitos funcionais, requisitos não funcionais ou requisitos de domínio, mais detalhes sobre os mesmos são apresentados a seguir.
ITEM I Os requisitos funcionais são procedimentos que o sistema deve implementar determinando as ações que serão tomadas a partir de entradas especí cas. Além disso, em alguns casos os requisitos funcionais declaram o que o sistema não devem fazer. Quando são requisitos de usuários a especi cação é construída a partir de declarações em um nível mais alto de detalhes (de maneira geral), porém, os requisitos funcionais de sistema descrevem detalhadamente o comportamento do sistema determinando entradas, saídas e exceções. Esta assertiva esta correta.
ITEM II Os requisitos de domínio são requisitos que se originam do domínio de aplicação do sistema e que re etem características/propriedades do domínio da aplicação. Podem ser requisitos
Página 13 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
funcionais ou não-funcionais e até mesmo restringir requisitos funcionais estabelecidos pelo cliente. Por exemplo: realização de algum cálculo especí co. Os requisitos de domínio não são exclusivamente requisitos funcionais, desta forma, esta assertiva esta incorreta.
ITEM III Os requisitos não-funcionais são condições ou propriedades que o sistema deve possuir geralmente sobre qualidade. Estes requisitos não descrevem o comportamento do sistema como os requisitos funcionais, eles apresentam atributos que devem ser esperado do sistema, como con abilidade, tempo de resposta para determinado operação, desempenho, portabilidade, políticas da empresa (linguagem de programação usada, padrões de projeto), portabilidade, bem como restrições sobre capacidade de alguns dispositivos de hardware que são utilizados pelo sistema. Esta assertiva esta correta. Portanto, a letra B indica acertadamente os itens I e III como corretos, sendo a resposta para a questão.
Página 14 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 5. Assuntos relacionados:
Volume 9 Edição 1
Engenharia de Software, UML, Generalização,
Banca: ESAF Instituição: Agência Nacional de Águas (ANA) Cargo: Analista Administrativo - Tecnologia da Informação
e Comunicação / Desenvolvi-
mento de Sistemas e Administração de Banco de Dados
Ano: 2009 Questão: 16
A restrição UML aplicada a um conjunto de generalizações, especi cando que uma instância pode ter apenas um dos subtipos determinados como tipo daquela instância, é conhecida como (a). Associação. (b). Auto. (c). Global. (d). Local. (e). Disjunção.
Solução: A Uni ed Modeling Language (UML) é uma linguagem de modelagem e serve para ser utilizada no desenho de software orientado a objetos, sendo o seu uso bastante limitado em outros paradigmas de programação. A fonte principal sobre o UML encontra-se em seu sítio o cial (http://www.uml.org/). Lá é possível ter acesso às especi cações atualizadas. Muitos elementos compõem o modelo UML, eles são usados para a criação de diagramas, que representam uma determinada parte ou ponto de vista do sistema. A UML, na versão 2.0, é composta por treze tipos de diagramas. Eles podem ser classi cados como estáticos e dinâmicos. Nos estáticos, ao contrário dos dinâmicos, as características do sistema não mudam com o tempo. Na Figura 1, podemos veri car essa classi cação.
Figura 1: classi cação dos diagramas UML. Os principais conceitos de orientação a objetos (classes, agregação, herança etc.) são representados no diagrama de classes. Ele tem por objetivo descrever, de maneira estática, o escopo da aplicação que está sendo desenvolvida.
Página 15 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
Em um diagrama de classe, as associações podem ter quatro tipos de operações:
• Generalização: o elemento mais geral (superclasse) se relaciona com um elemento mais especí co (subclasse); • Agregação: também conhecido como parte de ou composição. Descreve se uma das classes associadas é parte de outra classe; • Associação: duas classes não correlatas se relacionam, representado uma conexão semântica entre os objetos; • Dependência: relação de subordinação entre as classes, onde a mudança na classe independente afetará a classe dependente. No caso particular da generalização, ponto central da questão, se aplica o conceito de herança. Duas classes são colocadas numa hierarquia sendo uma mais genérica (superclasse) e a outra (subclasse) que herda os atributos e as operações da superclasse, podendo sobrepor ou modi car algumas delas. A herança pode ser simples ou múltipla. Na múltipla, uma subclasse está associada a mais de uma superclasse. Já na simples, uma subclasse tem uma e somente uma superclasse associada via generalização. A UML permite que, uma herança possa ser dada em mais detalhes em quatro situações:
• Superposição: um objeto da superclasse pode pertencer simultaneamente a mais do que uma subclasse; • Disjunção: não permite a superposição, ou seja, um objeto da superclasse pode pertencer a somente uma subclasse; • Completa: um objeto da superclasse deve pertencer a alguma das subclasses; • Incompleta: um objeto da superclasse pode não pertencer a nenhuma das subclasses. Vamos exempli car alguns dos casos acima para que a situação que mais clara para o leitor. Imagine que temos um tipo chamado Veículo com dois subtipos Carro e Caminhão. Se Veículo for uma generalização disjunta de Carro e Caminhão, uma instância do tipo Veículo só pode assumir um dos seus subtipos (Carro ou Caminhão ). Portanto, a alternativa correta é a letra (E). Outro detalhe é que se for uma herança do tipo completa, um veículo necessariamente deve ser um dos seus subtipos. Já a superposição, podemos exempli car da seguinte maneira: um tipo chamado Peça com dois subtipos chamados Manufaturada e Torneada. Dado que há um generalização com superposição, será possível que uma peça manufaturada e torneada seja representada como um objeto. Os outros termos citados nas alternativas (A), (B), (C) e (D) também possuem relação com as representações em UML, mas nada tem a ver com o enunciado da questão.
Página 16 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
6. Assuntos relacionados: Banco de Dados, Modelagem de Dados, Superchave, Chave cundária, Segurança da Informação, Criptogra a, Chave Assimétrica, Chave Simétrica,
Banca: ESAF Instituição: Agência Nacional de Águas (ANA) Cargo: Analista Administrativo - Tecnologia da Informação
Se-
e Comunicação / Desenvolvi-
mento de Sistemas e Administração de Banco de Dados
Ano: 2009 Questão: 17
Um conjunto de um ou mais atributos, tomados coletivamente, para identi car unicamente uma tupla numa relação, é denominado (a). chave assimétrica. (b). chave simétrica. (c). superchave. (d). chave secundária. (e). chave de tupla.
Solução: (A) INCORRETA Algoritmos que usam chaves assimétricas fazem parte da criptogra a de chave pública. As chaves assimétricas são usadas para a criação de um par de chaves criptográ cas relacionadas: uma chave pública e uma chave privada (secreta). Com o uso da criptogra a de chave pública é possível veri car a autenticidade de mensagens, através da criação de assinaturas digitais e, também, proteger a con dencialidade e integridade da mensagem, através da cifragem com o uso da chave pública e decifragem através da chave privada. O enunciado do problema se refere a bancos de dados relacionais, não a criptogra a e, portanto, essa opção é incorreta. (B) INCORRETA Assim como as chaves assimétricas, chaves simétricas também são conceitos de criptogra a. No entanto, nos algoritmos de criptogra a de chave simétrica, chaves semelhantes, normalmente idênticas, são usadas para cifrar e decifrar uma mensagem, donde decorre o nome simétrica . (C) CORRETA Uma superchave é qualquer subconjunto de atributos de um esquema de relação com a propriedade de que duas tuplas, em qualquer estado de relação r de R, não tenham a mesma combinação de valores para esse subconjunto de atributos. Em outras palavras, sejam e tuplas distintas e seja SK um subconjunto de atributos de um esquema de relação. Neste caso, para quaisquer e. Note, ainda, que toda relação possui ao menos uma superchave: a padrão (default), o conjunto de todos os atributos da relação. Superchaves mais úteis, no entanto, são as superchaves mínimas. Nelas, não há atributos redundantes. Ou seja, não é possível remover qualquer atributo desse conjunto sem quebrar a restrição da superchave identi car tuplas distintas.
Página 17 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
(D) INCORRETA Uma chave secundária é uma chave que, normalmente, não identi ca unicamente um registro e que pode ser utilizada para buscas simultâneas de vários registros. Normalmente implementadas como índices em bancos de dados, são usadas para busca e recuperação de dados. (E) INCORRETA O conceito chave de tupla não é amplamente conhecido na literatura e há outra alternativa que responde de maneira correta esta questão. Por esse motivo, esse conceito não será discutido.
Página 18 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 7. Assuntos relacionados: Nível Lógico,
Volume 9 Edição 1
Banco de Dados, Nível de Abstração, Nível Físco, Nível de Visão,
Banca: ESAF Instituição: Agência Nacional de Águas (ANA) Cargo: Analista Administrativo - Tecnologia da Informação
e Comunicação / Desenvolvi-
mento de Sistemas e Administração de Banco de Dados
Ano: 2009 Questão: 18
O nível de abstração, que visa simpli car a interação entre usuários e o sistema de banco de dados, é o (a). físico. (b). de visão. (c). lógico. (d). de esquema. (e). de modelo.
Solução: Um sistema de banco de dados é a junção de uma coleção de arquivos inter-relacionados com um conjunto de programas que permitem aos usuários acessarem e modi carem tais arquivos. Seu maior objetivo é proporcionar aos usuários uma visão abstrata dos dados, o que signi ca ocultar determinados detalhes de como os dados são efetivamente armazenados e gerenciados. Para que o sistema tenha um bom nível de usabilidade, é preciso que os dados sejam recuperados e cientemente. A necessidade de e ciência levou os desenvolvedores a utilizar estruturas de dados complexas para representar os dados na base de dados. Para ocultar dos usuários essa complexidade, níveis de abstração foram de nidos, simpli cando a interação com o sistema:
• Nível Físico. Nível mais baixo de abstração que descreve como os dados são verdadeiramente armazenados. O nível físico descreve detalhadamente as complexas estruturas de dados de baixo nível; • Nível Lógico. Nível intermediário de abstração que descreve quais dados são armazenados na base de dados, além dos relacionamentos existentes entre tais dados. Neste nível, todo o banco de dados é descrito em termos de um pequeno número de estruturas relativamente simples. Os administradores de bancos de dados usam os nível lógico de abstração para decidir quais informações serão armazenadas; • Nível de Visão. Nível mais alto de abstração, descreve apenas parte do banco de dados. Apesar de utilizar estruturas simples, o nível lógico possui bastante complexidade, haja vista a variedade de informações armazenadas. Muitos usuários não necessitam de toda essa informação e, assim, o nível de visão proporciona diversas visões para a mesma base de dados, simpli cando a interação com o sistema. O esquema de um banco de dados diz respeito aos objetos (tabelas, visões, índices, procedimentos armazenados, etc.) disponibilizados para um determinado grupo de usuários, não guardando relação com os níveis de abstração. Semelhantemente, o modelo de um banco de dados é a especi cação das estruturas de dados e regras de negócio de um banco de dados,
Página 19 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
incluindo Modelo Conceitual, Modelo Lógico e Modelo Físico. A a rmativa de acordo com a teoria apresentada encontra-se na opção B.
Página 20 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
8. Assuntos relacionados: Data Mining, Classi cação de Dados, Sumarização de Dados, Modelagem de Dependência entre Dados,
Banca: ESAF Instituição: Agência Nacional de Águas (ANA) Cargo: Analista Administrativo - Tecnologia da Informação
Agrupamento de Dados,
e Comunicação / Desenvolvi-
mento de Sistemas e Administração de Banco de Dados
Ano: 2009 Questão: 20
Para que uma empresa efetue a análise regular de dados gerados por visitantes do seu site Web, a m de personalizar a propaganda para clientes individualmente, ela deve utilizar (a). objetos distribuídos. (b). mineração de dados. (c). processamento analítico online (olap). (d). diretório de informações. (e). sistema de informação gerencial.
Solução: Uma técnica de inteligência arti cial que trata o problema de ltragem de dados a partir de um repositório de informação é a mineração de dados. No contexto da Web, as técnicas e modelos de mineração de dados recebem como entrada uma variedade de dados, como formulário, estruturas de sites e textos em geral. A mineração é um processo de análise de dados publicados em sites com o intuito de procurar relações comuns (padrões), além de sumarização de dados em novas formas que são compreensíveis e úteis para uma empresa. A mineração de dados pode ser empregada em empresas para ajudar a descobrir padrões e tendências referentes ao uso da Web. As etapas básicas de mineração de dados são a exploração, modelagem ou construção do conhecimento e por m a validação dos padrões encontrados. Existem varias técnicas de mineração de dados como: classi cação, clustering, sumarização, modelagem de dependência. Vamos apresentar uma breve descrição sobre essas técnicas.
• Classi cação: construção de uma função que a partir de um conhecimento previamente estabelecido consegue classi car um conjunto de dados em uma ou várias classes prede nidas; • Clustering: utilizado para descoberta de agrupamento de dados que possuem características em comum. Uma categoria ou classe é representada por um conjunto de característica, desta forma, ao descobrir uma coleção de dados que possuem um grau de similaridade estão encontrando um conjunto de dados pertencente a alguma categoria não conhecida; • Sumarização: essa técnica é utilizada para a construção de modelos que descrevem um conjunto de dados num formato facilmente interpretado; • Modelagem de dependência: técnica responsável por encontrar dependência entre características de um conjunto de dados ou entre os valores deles. Usando técnicas de mineração de dados, tais como clustering e modelagem de dependência, um usuário em particular pode estar associado a outros usuários que exibem padrões de comportamento e preferências semelhantes. Então, para esses usuários são oferecidos links especí cos por pertencerem a um mesmo per l. Uma empresa nesse caso pode ofertar promoções de acordo com sua preferência, isso é obtido com base em informações fornecidas Página 21 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
pelo agrupamento de usuários. Outro exemplo é, a partir de uma escolha de comprar de um cliente, pode-se agir da seguinte forma: Clientes que compraram este livro também comprariam... listar os livros relacionados com o tema. Concluindo, a mineração de dados pode ser usada como meio de oferecer um atendimento especializado a um cliente. Portanto, a questão correta é a letra B.
Página 22 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 9. Assuntos relacionados:
Volume 9 Edição 1
Banco de Dados, Modelo Relacional, Modelo Entidade-Relacionamento,
Modelo Objeto-Relacionamento,
Banca: ESAF Instituição: Agência Nacional de Águas (ANA) Cargo: Analista Administrativo - Tecnologia da Informação
e Comunicação / Desenvolvi-
mento de Sistemas e Administração de Banco de Dados
Ano: 2009 Questão: 22
O modelo de dados baseado numa coleção de tabelas que representam dados e as relações entre eles é denominado modelo (a). relacional. (b). entidade/relacionamento. (c). baseado em objetos. (d). de dados semiestruturados. (e). objeto/relacionamento.
Solução: (A) CORRETA O modelo relacional usa o conceito de uma relação matemática como seu bloco de construção básica e tem sua base teórica na teoria dos conjuntos e na lógica de predicados de primeira ordem. No modelo relacional, o banco de dados é representado como uma coleção de relações. Quando uma relação é pensada como uma tabela de valores, cada linha na tabela representa uma coleção de valores de dados relacionados. Nessa representação, cada linha na tabela representa um fato que corresponde a uma entidade ou relacionamento do mundo real. O nome da tabela e os nomes das colunas são usados para auxiliar na interpretação dos dados da coluna e todos os valores em uma coluna são do mesmo tipo de dado. Por isso, essa é a solução correta para a questão. (B) INCORRETA O modelo de entidade-relacionamento é um modelo abstrato com a nalidade de descrever, conceitualmente, as entidades e os relacionamentos de um domínio. Esse modelo, e suas variações, é normalmente empregado para o projeto conceitual de aplicações de um banco de dados, e muitas ferramentas de projeto de um banco de dados também aplicam seus conceitos. Neste modelo, uma entidade é um objeto que existe no mundo e que é facilmente distinguível de outros. Uma entidade pode ser tanto concreta, como um livro, uma pessoa ou um lugar, quanto abstrata, como um feriado. Uma entidade, por sua vez, é composta por atributos. Um atributo é uma função que mapeia um conjunto de entidades em um domínio em particular. Cada entidade é descrita por um conjunto de pares (atributo, valor) e existe um par para cada um dos atributos da entidade. Um relacionamento, por sua vez, é uma associação qualquer entre diversas entidades. Um
Página 23 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
relacionamento trabalha para , por exemplo, pode relacionar empregador e empregados. A principal ferramenta do modelo de entidade-relacionamento é o diagrama de entidaderelacionamento. Nele, retângulos representam entidades, elipses representam atributos, losangos representam relacionamentos e linhas ligam atributos a entidades e entidades a relacionamentos. A Figura 2 exibe um exemplo de diagrama entidade-relacionamento. Nela, existem duas entidades, Cliente e Conta . A entidade Cliente possui os atributos Nome , Endereço e CPF , já a entidade Conta possui os atributos Número e Balanço . Ambas são relacionadas pela relação Possui , que indica que um ou mais clientes podem possuir uma ou mais contas (que, por sua vez, podem ser possuídas por um ou mais clientes).
Figura 2: exemplo de diagrama entidade-relacionamento. (C) INCORRETA Modelos baseados em objetos têm sua origem nas linguagens orientadas a objetos. Nelas, um objeto possui, tipicamente, dois componentes: estado (valor) e comportamento (operações). Em linguagens de programação, objetos existem somente durante a execução do programa. Já em bancos de dados orientados a objetos, a existência dos objetos pode ser estendida de modo que sejam armazenados de forma permanente; portanto, os objetos continuam a existir mesmo após o término do programa, podendo ser posteriormente recuperados e compartilhados por outros programas. No modelo orientado a objetos, um conceito comum é o de classe, que representa um conjunto de objetos com características a ns e de ne o comportamento dos objetos através de seus métodos, e quais estados ele é capaz de manter através de seus atributos. Alguns conceitos importantes em orientação a objetos são:
• Encapsulamento: os aspectos internos e externos de um objeto são separados, impedindo o acesso direto ao estado de um objeto (seus atributos), disponibilizando externamente apenas métodos que alteram esses estados; • Herança: permite a especi cação de novos tipos ou classes que herdam parte de suas estruturas e/ou operações de classes ou tipos previamente de nidos, o que torna mais fácil desenvolver os tipos de dados de um sistema de modo incremental e reutilizar de nições de tipos na criação de novos tipos de objetos; • Sobrecarga de operador: se refere à propriedade de uma operação de ser aplicada a diferentes tipos de objetos. Em tal situação, um nome de operação pode se referir a várias implementações diferentes, dependendo do tipo de objetos aos quais é aplicada. Essa característica também é conhecida como polimor smo de operador.
Página 24 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
Em bancos de dados tradicionais, a informação sobre objetos complexos é, normalmente, distribuída em várias relações ou registros, levando à perda de correspondência direta entre um objeto do mundo real e sua representação no banco de dados. O mesmo não ocorre em bancos de dados orientados a objetos, que são capazes de manter estruturas de objetos com complexidade arbitrária. (D) INCORRETA O modelo de dados semiestruturados é um modelo de bancos de dados em que não há separação entre dados e esquema e sua estruturação depende do propósito da aplicação. Por não haver essa separação, o esquema é normalmente associado em conjunto com os dados. Em outros casos, o esquema existe apenas para de nir restrições fracas aos dados. Um compromisso feito quando bancos de dados que usam esse modelo são adotados é que as consultas podem não ser tão e cientes quanto a alternativa em bancos de dados relacionais, devido à forma típica como esses bancos de dados são implementados. Neles, os registros são normalmente armazenados com identi cadores únicos referenciados por ponteiros para suas posições no disco. Como é necessário percorrer o disco seguindo os ponteiros, suas consultas podem não ser tão e cientes. (E) INCORRETA O modelo objeto-relacionamento (OR) é baseado no modelo de entidade-relacionamento (ER). No modelo OR, o mundo é visto como um conjunto de objetos e seus relacionamentos. A diferença entre esse e o modelo de ER é que no modelo OR os atributos são tratados como objetos e, com isso, os benefícios da orientação a objetos são unidos aos benefícios do modelo relacional (ambos modelos descritos acima). Essa resposta é incorreta porque o modelo objeto-relacional é usado para modelagem de sistemas de bancos de dados, não para representar os dados. Fonte: Symposium on Applied Computing Proceedings of the 1992 ACM/SIGAPP Symposium on Applied computing: technological challenges of the 1990's table of contents Kansas City, Missouri, United States Páginas: 299 - 307 Ano de publicação: 1992 ISBN:0-89791502-X Disponível em: http://portal.acm.org/citation.cfm?id=143655
Página 25 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 10. Assuntos relacionados:
Volume 9 Edição 1
Banco de Dados, SQL,
Banca: ESAF Instituição: Agência Nacional de Águas (ANA) Cargo: Analista Administrativo - Tecnologia da Informação
e Comunicação / Desenvolvi-
mento de Sistemas e Administração de Banco de Dados
Ano: 2009 Questão: 23
Em SQL, a cláusula check aplicada a uma declaração de domínio (a). permite especi car um predicado que deve ser satisfeito por qualquer valor atribuído a uma variável de determinado domínio. (b). especi ca um predicado que deve ser satisfeito por uma tupla em uma relação. (c). proíbe a inserção de um valor nulo para as variáveis do domínio. (d). veri ca se os atributos considerados formam uma chave candidata. (e). não tem efeito, pois não se aplica esta cláusula a declarações de domínio.
Solução: Uma tabela em um banco de dados é de nida por um nome e pelos seus campos (atributos) e restrições. Por exemplo:
create table carro ( nome char (20) not null, placa char (7) not nul, marca char (50) not nul, ano integer ) Como pode ser observado, o nome da tabela é carro e possui os seguintes atributos: nome, placa, marca e ano cada um com seu tipo de dado. Cada tipo de dado representa um domínio (intervalo) de valores para um determinado atributo. Assim, um domínio é a coleção de valores permitidos para um atributo. A cláusula check na SQL pode ser aplicada a declarações de domínio. Quando aplicado a um domínio, a cláusula check permite especi car um predicado que precisa ser satisfeito para qualquer valor atribuído a uma variável cujo tipo é o domínio. Por exemplo, uma cláusula check pode garantir que um domínio de idade permita apenas valores maiores do que um valor especi cado (pessoa maior de idade).
create domain Idade numeric (5,2) constraint teste-valor-idade check (value >= 18) O domínio Idade possui uma restrição que garante que o atributo idade seja maior ou igual a 18 anos. A cláusula constraint teste-valor-idade é opcional usada para atribuir o nome teste-valor-idade a restrição. O nome é usado pelo sistema para indicar a restrição que uma atualização violou. Outro exemplo sobre a cláusula check: um domínio pode ser restrito para conter apenas um conjunto especi cado de valores usando a cláusula in: Página 26 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
create domain TipoConta char(10) constrait teste-valor-idade check(value in ('Corrente','Poupança') ) Desse modo, a cláusula check permite que atributos e domínios sejam restritos, descrevendo um predicado que deve ser satisfeito por qualquer valor atribuído a uma variável de domínio. Portanto, a questão correta é a letra A.
Página 27 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 11. Assuntos relacionados:
Volume 9 Edição 1
XML,
Banca: ESAF Instituição: Agência Nacional de Águas (ANA) Cargo: Analista Administrativo - Tecnologia da Informação
e Comunicação / Desenvolvi-
mento de Sistemas e Administração de Banco de Dados
Ano: 2009 Questão: 24
Analise as seguintes a rmações a respeito do esquema conceitual XML: I. Um elemento qualquer é de nido por um nome e um valor. II. Um documento XML é de nido por um nome e um elemento. III. Um atributo é de nido por um nome de tipo, caracteres de dados e elementos associados. Assinale a opção correta. (a). Apenas a a rmação I é verdadeira. (b). Apenas a a rmação II é verdadeira. (c). Apenas a a rmação III é verdadeira. (d). As a rmações I, II e III são corretas. (e). Nenhuma das a rmações é verdadeira.
Solução: A XML é uma tecnologia para criar linguagens de marcação que descrevem dados de praticamente qualquer tipo de uma forma estruturada, podendo ser utilizada para a descrição de dados em quase qualquer campo. Algumas linguagens de marcação baseadas em XML são a MathML, desenvolvida pelo W3C para descrever notações e expressões matemáticas com a sintaxe XML; a Chemical Markup Language (CML), linguagem que representa informações moleculares e químicas; a Wireless Markup Language (WML), que permite que as páginas Web sejam exibidas em dispositivos sem- o, como telefones celulares e PDAs; a Geography Markup Language (GML), que descreve informações geográ cas para utilização e reutilização por diferentes aplicativos para diferentes propósitos; e Scalable Vector Graphics (SVG), uma maneira de descrever dados de imagens vetoriais para utilização na Web. Os documentos XML são geralmente armazenados em arquivos de texto que terminam com a extensão .xml (embora isso não seja um requisito da XML) e devem conter apenas um elemento raiz. Este elemento pode conter outros elementos. Apesar de um documento XML estar bem de nido por seu nome e por seu elemento raiz, uma declaração XML inicial na primeira linha do documento é extremamente incentivada para identi car a versão utilizada. O exemplo a seguir esclarece esses e outros conceitos:
----- Início de documento ----<?xml version = ``1.0''?> <!-- Documento: carta.xml --> <carta> <contato tipo = ``remetente''> Página 28 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
<nome>Maria da Silva</name> <logradouro>Rua das Roseiras</logradouro> <cidade>Vila Nova</cidade> <cep>98765</cep> <flag sexo=''F''/> </contato> <contato tipo = ``destinatário''> <nome>Paulo Novaes</name> <logradouro>Rua Quinze</logradouro> <cidade>Corcova</cidade> <cep>12345</cep> <flag sexo=''M''/> </contato> <saudação>Prezado Senhor:</saudação> <parágrafo>Comunicamos a recebimento de sua solicitação. Na oportunidade, informamos </parágrafo> <fechamento>Atenciosamente</fechamento> <assinatura>Sra. Maria da Silva</assinatura> </carta> ----- Final de documento ----Observa-se que o documento carta.xml inicia-se com uma declaração que indica a versão da XML adotada. A linha seguinte exibe um comentário delimitado por <! e >, aos moldes da HTML. O elemento raiz <carta> possui elementos lhos, devidamente aninhados, que de nem a estrutura do documento. O texto com marcação (os elementos) está contido entre os sinais menor e maior (< e >), sendo que o texto entre uma marca de abertura e uma marca de nalização são considerados dados de caracteres. Evidentemente, os elementos lhos são considerados marcações, e não dados de caracteres. Todas as marcas de abertura de XML devem ter uma marca correspondente de nalização (identi cada por </), e todas as marcas de abertura e de nalização devem estar corretamente aninhadas. Com a XML diferencia letras maiúscula de minúsculas, as marcas de abertura e de nalização devem ter as letras maiúsculas e minúsculas correspondentes. Desta forma, o elemento <carta> possui um correspondente </carta>. Quando o elemento não possui conteúdo, pode ser fechado na própria marcação de abertura, como é o caso de < ag sexo= F />. Além de conteúdo (dados de caracteres) e de elementos lhos, um elemento pode possuir atributos que o descrevam. Os atributos são aninhados dentro da marca de abertura do elemento e seus valores são colocados entre aspas ou apóstrofes. Assim, o elemento <contato tipo = remetente > possui o atributo tipo cujo valor é remetente . Dito isso, percebe-se que a a rmativa I da questão encontra-se em desacordo com a teoria, pois um elemento é de nido por uma marcação (que pode ser considerada o seu nome), mas, não obrigatoriamente deve possuir um valor em termos de atributos e elementos lhos. Semelhantemente, os atributos são de nidos por um nome e um valor, porém não Página 29 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
possuem elementos associados, o que invalida a a rmativa III. A a rmativa II está correta, pois um documento XML é de nido por um nome e por seu elemento raiz. Desta forma, a resposta para a questão é o item b).
Página 30 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 12. Assuntos relacionados:
Volume 9 Edição 1
Programação, Programação Estruturada,
Banca: ESAF Instituição: Agência Nacional de Águas (ANA) Cargo: Analista Administrativo - Tecnologia da Informação
e Comunicação / Desenvolvi-
mento de Sistemas e Administração de Banco de Dados
Ano: 2009 Questão: 26
Na programação estruturada, são necessários apenas três blocos de formas de controle para implementar algoritmos. São eles: (a). (b). (c). (d). (e).
seleção, repetição e aninhamento. empilhamento, aninhamento e operação. sequência, aninhamento e seleção. sequência, seleção e repetição. função, operação e programa.
Solução: Um programa ou um software é constituído de um conjunto de instruções (operação sobre um determinado dado) apresentadas de forma sequencial, tais instruções estabelecem o comportamento que será executado e a ordem que as regras devem ser aplicadas. Para tanto, os programas utilizam blocos elementares (estruturas) de código que se interligam através de três mecanismos básicos de programação:
• Estrutura de sequência. Normalmente, instruções em um programa são executadas uma após a outra na ordem em que são escritas. Esse processo é chamado de execução sequencial. Para alterar esse uxo de execução sequência o programa utiliza os elementos seleção e repetição; • Estrutura de seleção. Os programas utilizam instruções de seleção para escolher os uxos de execução de acordo com condições de nidas na estrutura de seleção. As estruturas de seleção podem ser de dois tipos: simples e compostas. As estruturas simples apenas selecionam se um determinado trecho de instruções será executado ou não. Já as estruturas composta de seleção, interligam várias estruturas simples formando uma estrutura mais complexa, esta forma de organização da estrutura de seleção composta é chamada de aninhamento; • Estrutura de repetição. Programas de computador em muitos casos precisão executar uma determinada instrução ou mesmo um determinado conjunto de instruções repetidas vez, para isso, utilizam a estrutura de repetição. A quantidade de vezes que as instruções são repetidas é determinada pela estrutura de repetição. Além das estruturas elementares que constituem um programa estruturado existe um conceito chamado de modularização. A modularização de um programa estruturado é a divisão de trechos de código que executam ações para um m especí co, para esse agrupamento de trechos de código se dá o nome de função e/ou em alguns casos procedimento. Imagine uma função como uma caixa preta de códigos que recebe entradas (parâmetros), executa os cálculos e/ou ações e então retorna o resultado. Este conceito não forma um bloco de controle apesar de ser vastamente usado na programação estruturada. Como pode ser observado, os três blocos de formas de controle necessários para a programação estruturada são a estrutura sequência, seleção e repetição fazendo a assertiva D como correta. Página 31 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 13. Assuntos relacionados: Linguagens de Programação, Classes e Superclasses, Java, Modi cadores de Acesso,
Volume 9 Edição 1 Orientação a Objeto, Herança,
Banca: ESAF Instituição: Agência Nacional de Águas (ANA) Cargo: Analista Administrativo - Tecnologia da Informação
e Comunicação / Desenvolvi-
mento de Sistemas e Administração de Banco de Dados
Ano: 2009 Questão: 29
Em Java, para que um método de uma superclasse não seja sobrescrito em suas subclasses, aplica-se o modi cador (a). static (b). public (c). nal (d). protected (e). abstract
Solução: Esta é uma questão que aborda como a linguagem Java aborda um dos principais conceitos da programação orientada a objetos a herança. No entanto, antes de explicarmos o que é herança, vamos rever os conceitos de classe, objeto, classe, atributos e métodos. Um objeto pode ser de nido como uma entidade com limites bem de nidos e um signi cado para a aplicação. Tais entidades representar elementos físicos (como um carro, uma casa, um cliente etc), elementos conceituais (como uma venda, uma matrícula etc), elementos de software (uma lista, um array, um arquivo etc). Uma classe, por sua vez, consiste da descrição de um grupo de objetos com propriedades e comportamento idênticos entre si. As propriedades da qual são representadas pelos atributos dos objetos. Um objeto da classe casa, por exemplo, poderia ter como propriedades 2 portas, 4 janelas, 100 metros quadrados de área, entre outras. A combinação de valores dos atributos de um determinado objeto é o que determina o seu estado. Para alterá-lo, é necessário utilizar os métodos. Vamos agora ao conceito de herança. A herança é um mecanismo que permite criar novas classes a partir de classes já existentes, aproveitando-se das características (atributos e métodos) destas. Ou seja, com a herança é possível criar classes derivadas (subclasses) a partir de classes bases (superclasses). As subclasses herdam todos os atributos e métodos de suas superclasses. Entretanto, as subclasses não estão limitadas às características herdadas de sua superclasse, uma vez que nas subclasses podem existir atributos e métodos que não existem na superclasse. Em alguns casos, as subclasses também podem rede nir os métodos herdados, oferecendo implementações especializadas para os métodos quando necessário. Essa técnica é também conhecida como sobrescrita ou override. Recordados alguns dos conceitos básicos sobre orientação a objetos, vamos agora falar um pouco sobre as alternativas trazidas na questão static, public, nal, protected e abstract
Página 32 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
que, na linguagem Java, são conhecidos como modi cadores de acesso, que são keywords introduzidas no código para determinar a forma como as classes, métodos e atributos podem ser acessados pelas diversas partes do programa. O modi cador static, quando usado em um atributo, serve para criar uma variável de classe. Isso signi ca dizer que este atributo será comum em todos os objetos da classe, de modo que as modi cações neste atributo feitas por um objeto se re itam em todos os demais. Já os métodos, quando de nidos como static, impede que estes sejam sobrescritos pelas subclasses. Com isso, esta é a resposta da questão. O modi cador de acesso private indica que um um atributos ou métodos só podem ser acessados de dentro da classe que os criou. Este modi cador de acesso é o que permite ao Java implementar o conceito de encapsulamento. Já o modi cador de acesso public determina que a classe, método ou atributo podem ser acessados por qualquer parte do programa, e a qualquer instante da execução deste. O modi cador nal determina que a classe, método ou atributo se mantenham imutáveis no decorrer do processamento do programa. Ao utilizarmos o modi cador nal em um atributo, estamos de nindo uma constante. Já quando aplicamos este modi cador a um método de uma superclasse, impedimos que ele seja sobrescrito em suas subclasses. Em Java, um pacote é uma coleção das classes relacionadas, que podem ser importadas (por meio do comando import) em programas que necessitem das classes contidas no pacote. Neste contexto, o modi cador protected é o que determina que um método ou um atributo podem ser acessados somente dentro do pacote em que estão contidos. Por m, temos o modi cador de acesso abstract, que servem para declara métodos ou classes abstratas. Para recapitulação, métodos abstratos são aqueles que não são implementados nas classes, cando esta tarefa a cargo das subclasses. Já uma classe abstrata é aquela que não está completamente implementada, cando a cargo das subclasses implementar o restante delas. Diante do exposto, podemos a rmar que a resposta da questão é a alternativa C.
Página 33 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 14. Assuntos relacionados: Java,
Volume 9 Edição 1
Linguagens de Programação, Java, Tratamento de Exceção em
Banca: ESAF Instituição: Agência Nacional de Águas (ANA) Cargo: Analista Administrativo - Tecnologia da Informação
e Comunicação / Desenvolvi-
mento de Sistemas e Administração de Banco de Dados
Ano: 2009 Questão: 30
Em uma aplicação Java, se o carregador de classes não conseguir localizar a classe do driver de banco de dados para uma conexão JDBC, é lançada a exceção (a). java.lang.ClassNotFoundException. (b). java.io.FileNotFoundException. (c). java.lang.SecurityException. (d). java.io.IOException. (e). java.util.InputMismatchException.
Solução: Exceções, como o nome sugere, são situações que fogem às regras e, no caso das linguagens de programação, geralmente indesejáveis. Ocorrem no momento da execução de um programa e precisam ser devidamente tratadas para não interromperem o processamento normal de uma aplicação. Podem ocorrer por diversos motivos, como uma inadvertida divisão por zero, uso de referências para objetos inexistentes, falta de memória, dentre outros. A Linguagem Java possui um mecanismo de tratamento de exceções baseado em escopo, o que permite utilizar um bloco de código separado daquele que gerou uma determinada exceção para tratá-la adequadamente, propiciando maior organização ao projeto codi cado. Da mesma forma que os demais elementos desta linguagem, as exceções são objetos em Java, sendo a classe Exception a superclasse de todas as exceções. Esta estruturação permite que um programador de na suas próprias exceções, que herdam características pré-de nidas na classe Exception. Quando uma exceção ocorre, códigos escritos por um programador podem tratá-la através de diretivas especializadas para este m (throws, try, catch e nally). Para tanto, o tipo (classe) de exceção deve ser indicado, possibilitando-se, assim, que toda e qualquer exceção seja individualmente tratada. Uma exceção comumente lançada durante a execução de códigos em Java é a ClassNotFoundException, que adverte ao programador que uma determinada classe não está acessível à JVM, isto é, nenhuma de nição para uma classe com o nome especi cado pôde ser encontrada. Esta exceção, classe integrante do pacote java.lang, pode ocorrer por inexistência real da classe indicada ou por falta de referência à sua localização no ambiente de programação utilizado (variáveis de ambiente do sistema operacional). Desta forma, a assertiva A apresenta-se como a resposta para a questão. A exceção java.io.FileNotFoundException ocorre para sinalizar que a tentativa de abertura do arquivo indicado falhou. Já a exceção java.lang.SecurityException indica a tentativa negada de acesso a algum recurso do sistema, como um arquivo. Operações de entrada/saída interrompidas ou falhas lançam a exceção java.io.Exception para indicar o
Página 34 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
ocorrido. A classe Scanner (um parser simples para textos com tipos primitivos) lança a exceção java.util.InputMismatchException para indicar que ou o token capturado não coincide com o padrão do tipo esperado ou seu valor está fora da faixa esperada.
Página 35 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 15. Assuntos relacionados:
Volume 9 Edição 1
Linguagens de Programação, Java, JavaServer Pages (JSP),
Banca: ESAF Instituição: Agência Nacional de Águas (ANA) Cargo: Analista Administrativo - Tecnologia da Informação
e Comunicação / Desenvolvi-
mento de Sistemas e Administração de Banco de Dados
Ano: 2009 Questão: 32
Analise as seguintes a rmações a respeito de JSP: I. Em uma aplicação
Web,
há apenas um objeto page em cada JSP.
II. Comentários JSP aparecem na resposta ao cliente. III. Os objetos com escopo
session
duram por toda a sessão de navegação do cliente.
Assinale a opção correta. (a). Apenas a a rmação I é verdadeira. (b). Apenas a a rmação II é verdadeira. (c). Apenas a a rmação III é verdadeira. (d). As a rmações I, II e III são verdadeiras. (e). Nenhuma das a rmações é verdadeira.
Solução: (JSP) é uma tecnologia baseada em Java utilizada no desenvolvimento de páginas Web com conteúdo dinâmico, similar às tecnologias Active Server Page (ASP) e PHP. Ela faz parte de uma tecnologia maior referida como Java 2 Enterprise Edition (J2EE). JavaServer Pages
Além das tags HTML, que geram o conteúdo estático, uma página JSP também contém elementos JSP especiais que permitem inserir conteúdo dinâmico por meio dos elementos JSP. Os elementos JSP são processados pelo servidor Web antes da página HTLM ser enviada de volta ao browser. Ou seja, quando o usuário faz uma requisição a uma página JSP, o servidor executa os elementos JSP da página, inserindo os resultados dos mesmos junto a parte estática da página, e envia a página HTML para o usuário. A tecnologia JSP pode ser usada, por exemplo, para recuperar informação em um banco de dados, manipular arquivos, obter informações sobre o visitante, etc. Após uma breve introdução de JSP, a seguir, analisamos as a rmativas da questão: I. Como forma de facilitar a programação Web, em uma página JSP existem 9 objetos instanciados, conhecidos como Objetos Implícitos, que são:
page : representa a própria página JSP, ou melhor, uma instância da classe servlet na qual a página foi convertida. É simplesmente um sinônimo para this; con g : armazena os parâmetros de inicialização (con guração) do servlet da página JSP; request : solicitação que aciona o processamento da página; response : responsável pela devolução do resultado ao usuário; out : representa o uxo de saída (output) para a página em si; pageContext : dados de contexto para a execução da página; session : representa a sessão atual de um usuário individual;
Página 36 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
application :
representa a aplicação à qual a página pertence; exception : incluso nas páginas especí cas para tratar exceções ou erros não capturados.
Para cada página JSP processada existe um servlet correspondente, ou seja, o que um faz outro também deve fazer. Como o objeto page faz referência ao servlet gerado, existe um objeto page para cada JSP. Portanto, esta a rmativa é verdadeira. II. Como qualquer linguagem de programação Web, os comentários não aparecem na resposta ao cliente. Logo, esta a rmativa é falsa. III. O escopo de um objeto está relacionado com as páginas JSPs que podem acessar o objeto. Os escopos disponíveis são: application, request, response, page e session. O objeto que possui escopo session está disponível para todas as JSPs e os servlets, e todos os objetos vinculados à session estão disponíveis para toda a sessão de usuário. A principal utilização do escopo session é manter os estados de conexão entre cliente e servidor, pois o protocolo HTTP não armazena informações de estado. Isso permite o usuário navegar entre várias páginas na aplicação Web sem perda de informações referentes à sessão de usuário. Um exemplo típico de utilização do escopo session é em autenticação de usuários, onde é possível restringir acesso a determinadas páginas. Portanto, esta a rmativa é verdadeira porque os objetos com o escopo rante toda a sessão negação do cliente.
session
duram du-
Após a análise das a rmativas, chegamos a conclusão que as a rmativas I e III são verdadeiras. Portanto, a alternativa correta é a (E). Note que o gabarito fornecido para esta questão não confere com o gabarito o cial. Possivelmente, a banca que organizou a prova deve ter cometido um equívoco na a rmativa I.
Página 37 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 16. Assuntos relacionados: Segurança da Informação, dade, Checksum, Cyclic Redundancy Check (CRC),
Volume 9 Edição 1 Integridade de Dados, Bits de Pari-
Banca: ESAF Instituição: Agência Nacional de Águas (ANA) Cargo: Analista Administrativo - Tecnologia da Informação
e Comunicação / Desenvolvi-
mento de Sistemas e Administração de Banco de Dados
Ano: 2009 Questão: 36
Bits de paridade, somas de veri cação e veri cações de redundância cíclica (CRC) são úteis para a detecção de ataques (a). à Con dencialidade. (b). à Disponibilidade. (c). à Integridade. (d). à Autorização. (e). ao Não-repúdio.
Solução: De nições • Con dencialidade é um termo que indica uma propriedade de uma informação que indica que ela não estará disponível ou será divulgada a indivíduos, entidades ou processos sem alteração. Ou seja, a con dencialidade garante que a informação seja acessível apenas àqueles autorizados a ter acesso; • Disponibilidade é o termo usado para indicar se um sistema está disponível para que sua comunidade de usuários possa acessá-lo, seja para submissão, atualização, alteração de trabalhos ou coleta de resultados. Se o acesso por usuários não for possível, diz-se que o sistema está indisponível; • Integridade é o termo usado para indicar que os dados não podem sofrer modi cações não autorizadas, ou não explícitas. Em outras palavras, um dado é íntegro se ele não contiver erros; • Autorização é o mecanismo responsável por garantir que apenas usuários autorizados consumam os recursos protegidos; • Não-repúdio é a garantia de segurança que impede uma entidade participante numa dada operação de negar essa participação.
Técnicas I. Somas de veri cação: Uma soma de veri cação (ou checksum) é um dado computado a partir de um bloco de dados digitais com o propósito de detectar erros nos dados que podem ter sido adicionados durante a transmissão ou armazenamento dos dados. A integridade dos dados pode ser veri cada a qualquer momento posterior, bastando, para isso, calcular novamente o valor da soma de veri cação dos dados e compará-lo com o já armazenado. Bons algoritmos de soma de veri cação devem ser capazes de gerar, com grande probabilidade, resultados diferentes sempre que os dados forem acidentalmente corrompidos.
Página 38 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
Se os valores, no entanto, forem iguais, então deve ser alta a probabilidade dos dados não terem sido corrompidos. Bits de paridade e veri cações de redundância cíclica são exemplos de funções de soma de veri cação. II. Veri cação de redundância cíclica: A veri cação de redundância cíclica (ou CRC, do Inglês Cyclic Redundancy Check) é um código detector de erros que gera um valor expresso em poucos bits a partir do processamento de um bloco maior de dados, como um pacote de dados ou um arquivo. Seu nome se deve ao fato de haver a adição de um código de veri cação que é redundante (e, portanto, não adiciona informação) aos dados baseado em códigos cíclicos. O termo CRC pode se referir, além do código de veri cação, à função que o calcula. Essa função aceita dados de qualquer tamanho como entrada, mas gera sempre saídas em códigos com tamanho xo. O CRC é calculado e anexado à informação a transmitir (ou armazenar) e veri cado após a recepção ou acesso, para con rmar se não ocorreram alterações. O CRC é popular por ser simples de implementar em hardware binário, simples de ser analisado matematicamente, e pela e ciência em detectar erros típicos causados por ruído em canais de transmissão. Um exemplo de função de CRC é a técnica de bits de paridade, descrita abaixo. III. Bits de paridade: Em telecomunicações e computação, a paridade de um número indica se o seu número de bits com valores um é par ou ímpar e, portanto, é determinada pelo valor de todos os seus bits. Ela pode ser calculada através de uma soma com XOR (ou exclusivo) dos bits, resultando em 0 para paridade par e 1 para paridade ímpar. Por depender de todos os bits do número e ter seu valor modi cado no caso de qualquer um dos bits do número mudar, os bits de paridade podem ser usados para detecção de erros. Como exemplo do cálculo da paridade, considere que se deseja calcular a paridade do número binário 1010, que o símbolo denota a operação XOR e que o símbolo denota a negação binária. Supondo paridade par, ela será computada da seguinte forma:
Número a ter paridade computada: 1010 Cálculo da paridade (par): 1 0 1 0 = 0 Já no caso da paridade ímpar:
Número a ter paridade computada: 1010 Cálculo da paridade (ímpar): (1 0 1 0) = 1 Em qualquer um dos casos, caso o número fosse transmitido com o bit de paridade e houvesse um erro de transmissão com a mudança de qualquer um dos bits, a veri cação de paridade detectaria que o número está errado e que outra transmissão é necessária. Outros exemplos com paridade são exibidos na Tabela 16:
Página 39 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
7 bits de dados (número de 1s) 8 bits, incluindo paridade 0000000 1010001 1101001 1111111
(0) (3) (4) (7)
par 00000000 11010001 01101001 11111111
ímpar 10000000 01010001 11101001 01111111
Conclusão Como todas as técnicas apresentadas são relacionadas à veri cação da integridade dos dados, temos que a resposta correta a esta questão se encontra na alternativa c: as técnicas supracitadas permitem detectar ataques (ou falhas) à integridade dos dados.
Página 40 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 17. Assuntos relacionados: Criptogra a, Chave Assimétrica, Chave Simétrica,
Volume 9 Edição 1
Criptogra a Assimétrica, Criptogra a Simétrica,
Banca: ESAF Instituição: Agência Nacional de Águas (ANA) Cargo: Analista Administrativo - Tecnologia da Informação
e Comunicação / Desenvolvi-
mento de Sistemas e Administração de Banco de Dados
Ano: 2009 Questão: 38
Em um grupo de N usuários que utilizam criptogra a assimétrica, o número de encriptações necessárias para o envio de uma mensagem M con dencial de um usuário desse grupo para os demais (N-1) usuários do mesmo grupo é (a). 1. (b). N 1. (c). N. (d). 2N 1. (e). N + 1.
Solução: É importante entender claramente o cenário descrito no enunciado desta questão. Imagine que a tal mensagem M seja uma carta con dencial entre todos os N usuário do grupo. Ou seja, entende-se que apenas os N usuários desse grupo podem ter acesso à carta. O que se pede nesta questão é o número de encriptações necessárias para que a carta seja enviada, de forma segura, a partir de um usuário para todos os outros usuários do grupo. Para obtermos esse número é necessário entender o mecanismo de criptogra a assimétrica. Na criptogra a assimétrica, toda e qualquer parte envolvida tem duas chaves distintas e dependentes entre si: uma pública e outra privada. Uma chave pública, como o seu próprio nome já sugere, pode ser abertamente conhecida. É justamente por isso que esse mecanismo também é chamado de criptogra a de chaves públicas. Já uma chave privada só pode ser conhecida pelo seu dono. Essas são duas premissas para que o sistema de criptogra a assimétrica funcione. Em termos de representação compacta, a literatura geralmente utiliza a seguinte notação. K+ M ARIA (M) representa o resultado da encriptação da mensagem M com a chave pública de MARIA e K− M ARIA (M) representa o resultado da encriptação da mensagem M com a chave privada de MARIA. Esses dois tipos de chaves se relacionam da seguinte forma. Uma + mensagem encriptada por K− M ARIA só pode ser desencriptada por KM ARIA , e vice-versa. A troca de mensagens con denciais com esse sistema funciona como descrito a seguir. Digamos que JOSÉ precisa enviar uma mensagem con dencial à MARIA. Ou seja, JOSÉ precisa enviar uma mensagem que será lida apenas pela MARIA, mesmo que essa mensagem seja interceptada durante o envio. JOSÉ precisa, então, enviar à MARIA a mensagem encriptada com a chave pública de MARIA, que é disponível para todos. Quando MARIA receber a mensagem encriptada, apenas ela poderá desencriptá-la, pois por premissa somente a MARIA tem a sua própria chave privada. No caso especí co desta questão, um usuário (digamos JOSÉ) precisa enviar uma mesma
Página 41 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
mensagem M a (N - 1) usuários (digamos MARIA, RITA, VERA, etc.). Dessa forma, + JOSÉ precisará realizar os seguintes envios: K+ M ARIA (M) à MARIA, KRIT A (M) à RITA, K+ V ERA (M) à VERA, etc. Quando cada mensagem encriptada for recebida, a respectiva chave privada será utilizada para desencriptá-la. Dessa forma, nenhuma mensagem enviada pode ser lida por qualquer pessoa fora do grupo. Tendo em vista o exposto acima, é fácil concluir que serão necessárias (N-1) encriptações e outras (N-1) desencriptação para que todos os N usuários do grupo conheçam a mensagem. É interessante ressaltar que há outros mecanismos de criptogra a para troca de mensagens. Um exemplo clássico é o de criptogra a simétrica, em que apenas uma chave é utilizada tanto para encriptar quanto para desencriptar as mensagens. Como geralmente se deseja trocar mensagens con denciais dentro de um determinado grupo restrito, o ponto crítico desse mecanismo se encontra na distribuição das chaves simétricas entre usuários. Em certa situações, justi ca-se enfrentar as di culdades desse ponto crítico, pois os algoritmos de criptogra a simétrica são por natureza mais simples e rápidos que os de criptogra a assimétrica. Como exemplo de algoritmos simétricos, podemos citar: DES, 3DES, RC2 e RC4, IDEA e AES.
Página 42 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 18. Assuntos relacionados:
Volume 9 Edição 1
Governança de TI, COBIT, Atividades-Chaves,
Banca: ESAF Instituição: Controladoria-Geral da União (CGU) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 1
O COBIT - Control Objectives for Information and related Technology fornece boas práticas por meio de uma estrutura de domínio e processos e apresenta atividades de forma gerencial e lógica para a Governança de TI. O COBIT contém componentes interrelacionados, provendo suporte para a governança, gerenciamento, controle e atendimento das necessidades de diferentes organizações. O componente Atividades-Chaves do COBIT (versão 4.1) está relacionado com (a). Indicadores de Performance. (b). Modelos de Maturidade. (c). Controle de Objetivos. (d). Responsabilidades e Contabilização. (e). Controle de Práticas.
Solução: O COBIT (do Inglês Control Objectives for Information and related Technology) de ne um conjunto de boas práticas dirigido para a gerência da tecnologia da informação (TI) criado pelo ISACA (do Inglês Information Systems Audit and Control Association) e pelo ITGI (do Inglês Information Technology Governance Institute). Com a missão de pesquisar, desenvolver, publicar e promover um modelo de controle para governança de TI atualizado e internacionalmente reconhecido para ser adotado por organizações e utilizado no dia-a-dia por gerentes de negócios, pro ssionais de TI e pro ssionais de avaliação, o COBIT provê a gestores, auditores e usuários de TI um conjunto de métricas, indicadores e boas práticas para auxiliá-los nas maximização dos benefícios obtidos através do uso da tecnologia da informação. O modelo COBIT pretende alcançar seus objetivos mantendo seu foco em negócios, orientado a processos, baseado em controles e orientado por medições. Em sua estrutura, o COBIT cobre quatro domínios:
• Planejar e organizar, que consiste em:
De nir um plano estratégico de TI; De nir a arquitetura da informação; Determinar as diretrizes de tecnologia; De nir os processos, a organização e os relacionamentos de TI; Gerenciar o investimento de TI; Comunicar metas e diretrizes gerenciais; Gerenciar os recursos humanos de TI; Gerenciar a qualidade; Avaliar e gerenciar os riscos de TI;
Página 43 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
Gerenciar projetos. • Adquirir e implantar, que consiste em:
Identi car soluções automatizadas; Adquirir e manter software aplicativo; Adquirir e manter infraestrutura de TI; Habilitar operação e uso; Adquirir recursos de TI; Gerenciar mudanças; Instalar e homologar soluções e mudanças.
• Entregar e suportar, que consiste em:
De nir e gerenciar níveis de serviços; Gerenciar serviços terceirizados; Gerenciar o desempenho e a capacidade; Assegurar a Continuidade dos Serviços; Garantir a Segurança dos Sistemas; Identi car e Alocar Custos; Educar e Treinar os Usuários; Gerenciar a Central de Serviço e os Incidentes; Gerenciar a Con guração; Gerenciar Problemas; Gerenciar os Dados; Gerenciar o Ambiente Físico; Gerenciar as Operações.
• Monitorar e avaliar, que consiste em:
Monitorar e Avaliar o Desempenho de TI; Monitorar e Avaliar os Controles Internos; Assegurar a Conformidade com Requisitos Externos; Prover Governança de TI.
Como exibido na Figura 3, as atividades-chaves do modelo COBIT são uma divisão dos objetivos e processos de TI realizadas pela tabela de responsabilidade. Mais especi camente, a de nição das atividades-chaves e as entregas do processo fazem parte do controle de processo 4 (PC4) do modelo COBIT, que designa e comunica papéis e responsabilidades para uma efetiva e e ciente execução das atividades-chaves e sua documentação, bem como a responsabilização pelo processo e suas entregas.
Página 44 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
Figura 3: disponível em http://www.isaca.org/Content/NavigationMenu/Members_and _Leaders1/COBIT6/Obtain_COBIT/cobit41_portuguese.pdf. Sendo assim, as atividades-chaves estão relacionadas com as responsabilidades e contabilização do modelo COBIT, representadas pela alternativa d.
Página 45 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 19. Assuntos relacionados: MPS,
Volume 9 Edição 1
Engenharia de Software, MPS.BR, MR-MPS, MA-MPS, MN-
Banca: ESAF Instituição: Controladoria-Geral da União (CGU) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 3
O MPS.BR tem como uma das metas de nir e aprimorar o modelo de melhoria e avaliação de processo de software, visando preferencialmente as micro, pequenas e médias empresas, de forma a atender às suas necessidades de negócio e ser reconhecido nacional e internacionalmente como um modelo aplicável à indústria de software. Os componentes em que o MPS.BR está dividido são: (a). ISO/IEC 12207, CMMI-DEV, ISO/IEC 15504. (b). modelo de referência, guia geral, guia de aquisição, guia de implementação. (c). guia geral, guia de aquisição, guia de implementação, guia de avaliação. (d). modelo de referência, método de avaliação, modelo de negócio. (e). guia geral, guia de avaliação e documentos do programa.
Solução: Uma ótima fonte para se obter mais informações sobre MPS.BR é website da Softex (http://www.softex.br/mpsbr). Lá é possível encontrar a seguinte de nição: O MPS.BR é um programa mobilizador, de longo prazo, criado em dezembro de 2003, coordenado pela Associação para Promoção da Excelência do Software Brasileiro (SOFTEX), que conta com apoio do Ministério da Ciência e Tecnologia (MCT), Financiadora de Estudos e Projetos (FINEP), Serviço Brasileiro de Apoio às Micro e Pequenas Empresas (SEBRAE) e Banco Interamericano de Desenvolvimento (BID).
Em resumo, o Programa MPS.BR busca fomentar a melhoria de processos do software brasileiro. São duas as suas principais metas:
• meta técnica: que visa a criação e aprimoramento do Modelo MPS; • meta de mercado: que visa a disseminação e adoção do Modelo MPS. Perceba, portanto, que o acrônimo MPS.BR pode se referir tanto um programa quanto a um modelo. O Modelo MPS é dividido em 3 partes, que serão descritas ao longo deste comentário. São elas:
• MR-MPS: Modelo de Referência para Melhoria de Processo de Software; • MA-MPS: Modelo de Avaliação para Melhoria de Processo de Software; • MN-MPS: Modelo de Negócio para Melhoria de Processo de Software. É muito importante entender que o MPS.BR é baseado, e portanto compatível, com os seguinte padrões internacionais: CMMI, ISO/IEC 12207 (Processo de Desenvolvimento de Software) e ISO/IEC 15504 (evolução da ISO/IEC 12207). Dessa forma, o MPS.BR se caracteriza como uma solução brasileira para certi cação de qualidade, cujo ponto forte é o seu
Página 46 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
relativo baixo custo, que permite as micro, pequenas e médias empresas ascenderem na escala de qualidade e de produtividades, substituindo o modelo artesanal de desenvolvimento de software pelas melhores práticas construídas pela Engenharia de Software. Nesse sentido, o MPS.BR é geralmente visto como uma preparação para obtenção de certi cações internacionais (CMMI e ISOs), sobretudo pelas empresas interessadas em exportação de software.
MR-MPS Apesar do modelo de referência do MPS.BR ser diferente do modelo de referência CMMI, eles apresentam uma forte relação de similaridade. Enquanto o modelo CMMI classi ca o grau de maturidade de empresas em 5 níveis, o MPS.BR o faz em 7 níveis, que vão do nível A (maior maturidades) ao G (menor maturidade). Além do conceito de maturidade, há no MR-MPS outros dois conceitos muito importantes:
• processo: cada processo tem um propósito e resultados esperados. São utilizados nesse modelo de referencia os processos de nidos na ISO/IEC 15504-2. Na prática, quanto maior for o número de processos implantados cujos resultados esperados são de fato obtidos por uma determinada empresa, maior será o seu grau de maturidade; • capacidade do processo: é representada por um conjunto de atributos de processo (AP) descritos em termos de resultados esperados. Na prática, à medida que uma empresa evolui nos níveis de maturidade, um maior nível de capacidade para desempenhar o processo deve ser atingido. Os APs existentes são:
AP AP AP AP AP AP AP AP AP
1.1 2.1 2.2 3.1 3.2 4.1 4.2 5.1 5.2
-
O processo é executado; O processo é gerenciado; Os produtos de trabalho do processo são gerenciados; O processo é de nido; O processo está implementado; O processo é medido; O processo é controlado; O processo é objeto de inovações; O processo é otimizado continuamente.
A Figura 4 apresenta de forma compacta a relação entre os níveis de maturidade, os processos e os atributos de processos do MR-MPS. É muito importante destacar que a coluna de Processos é cumulativa, portanto, ela apresenta apenas os processos exclusivos de cada nível. Por exemplo, para uma empresa se enquadrar no nível G, ela precisa implementar apenas 2 processos (GRE e GPR). Já para ser considerada no nível C, uma empresa deve implementar todos os processos associados aos níveis anteriores (B-G) e também os processos exclusivos do nível C (GRI, DRU e GDE). A título de curiosidade, atualmente a quantidade de instituições por nível de maturidade é a seguinte:
• A: 4; • B: 0; • C: 2; • D: 0; • E: 3; Página 47 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
• F: 54; • G: 123.
Figura 4: relação entre os níveis de maturidade, os processos e os atributos de processos do MR-MPS.
Página 48 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
MA-MPS De acordo com o próprio Guia de Avaliação:2009 do MPS.BR, o Processo e o Método de Avaliação MA-MPS foram de nidos de forma a:
• permitir a avaliação objetiva dos processos de software de uma organização/unidade organizacional; • permitir a atribuição de um nível de maturidade do MR-MPS com base no resultado da avaliação; • ser aplicável a qualquer domínio na indústria de software; • ser aplicável a organizações/unidades organizacionais de qualquer tamanho.
MN-MPS Este é o modelo de negócio do Programa MPS.BR. Nele estão descritas as regras para que o programa se desenvolva adequadamente. É nele também que estão descritas as atuações das diversas instituições participantes: instituições implementadoras, instituições avaliadoras, consultores de aquisição, etc. A Figura 5 dá uma visão geral dessas interações.
Figura 5: visão geral do MN-MPS. Neste ponto, não é difícil de se observar que a alternativa correta desta questão é a letra D. A alternativa A está errada porque apresenta padrões internacionais que in uenciam o MPS.BR, e não subdivisões deste. O que poderia confundir o candidato seriam os diversos guias que aparecem nas alternativas B, C e E. Isso porque tais guias fazem parte da documentação MPS.BR. Na verdade, o Modelo MPS é descrito por meio de guias, que são agrupados da seguinte forma:
Página 49 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
• Guia Geral: contém a descrição geral do Modelo MPS e detalha o Modelo de Referência (MR-MPS); • Guia de Aquisição: descreve um processo de aquisição de software e serviços correlatos; • Guia de Avaliação: descreve o processo e o método de avaliação (MA-MPS), os requisitos para avaliadores líderes, avaliadores adjuntos e Instituições Avaliadoras (IA); • Guia de Implementação: série de dez documentos que fornecem orientações para implementar nas organizações os níveis de maturidade descritos no Modelo de Referência MR-MPS [SOFTEX, 2009c], [SOFTEX, 2009d], [SOFTEX, 2009e], [SOFTEX, 2009f], [SOFTEX, 2009g], [SOFTEX, 2009h], [SOFTEX, 2009i], [SOFTEX, 2009j], [SOFTEX, 2009k] e [SOFTEX, 2009l].
Página 50 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 20. Assuntos relacionados: Desenvolvimento de Sistemas, Maturidade, MPS.BR, CMMI, ISO/IEC 12207,
Volume 9 Edição 1 Qualidade de Software, Modelo de
Banca: ESAF Instituição: Controladoria-Geral da União (CGU) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 4
No MPS.BR são de nidos níveis de maturidade que são uma combinação entre processos e sua capacidade. Os níveis de maturidade estabelecem patamares de evolução de processos, caracterizando estágios de melhoria da implementação de processos na organização. Assinale a opção que identi ca todos os níveis de maturidade do MPS.BR. (a). A (Otimizado), B (Gerenciado Quantitativamente), C (De nido), D (Largamente De nido), E (Parcialmente De nido), F (Gerenciado), G (Inicial). (b). A (Otimizado), B (Parcialmente Otimizado), C (De nido), D (Largamente De nido), E (Parcialmente De nido), F (Gerenciado), G (Parcialmente Gerenciado). (c). A (Em Otimização), B (Gerenciado Quantitativamente), C (De nido), D (Largamente De nido), E (Parcialmente De nido), F (Gerenciado), G (Parcialmente Gerenciado). (d). A (Em Otimização), B (Parcialmente Otimizado), C (De nido), D (Largamente De nido), E (Parcialmente De nido), F (Gerenciado), G (Inicial). (e). A (Otimizado), B (Executado), C (De nido), D (Largamente De nido), E (Parcialmente De nido), F (Gerenciado), G (Parcialmente Gerenciado).
Solução: O MPS.BR é um programa para Melhoria de Processo do Software Brasileiro, e está em desenvolvimento desde dezembro de 2003, sendo coordenado pela Associação para Promoção da Excelência do Software Brasileiro (SOFTEX). O programa conta com apoio do Ministério da Ciência e Tecnologia (MCT), da Financiadora de Estudos e Projetos (FINEP) e do Banco Interamericano de Desenvolvimento (BID). No contexto do MPS.BR, foi de nido o modelo de referência chamado MR-MPS, que de ne níveis de maturidade do processo de desenvolvimento de software. Cada nível do MR-MPS é de nido em termos da combinação entre processos e sua capacidade, que representa a habilidade do processo para alcançar os objetivos de negócio. Neste ponto, também é importante mencionar que no MR-MPS, a de nição dos processos segue a forma apresentada pela norma ISO/IEC 12207, declarando o propósito e os resultados esperados de sua execução, o que permite avaliar e atribuir graus de efetividade na execução dos processos. Em termos bem simples, os níveis de maturidade de nidos pelo MR-MPS estabelecem patamares de evolução de processos. No total, o MR-MPS de ne sete níveis de maturidade que são apresentados a seguir em escala decrescente de maturidade:
• A (Em Otimização); • B (Gerenciado Quantitativamente); • C (De nido) ;
Página 51 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
• D (Largamente De nido); • E (Parcialmente De nido); • F (Gerenciado); • G (Parcialmente Gerenciado). Um aspecto muito importante da divisão em níveis proposta pelo MR-MPS é que, embora ela seja baseada nos níveis de maturidade do Modelo CMMI, a quantidade de níveis (7) no MR-MPS é maior que no CMMI (5). Segundo a SOFTEX, esta diferença tem por objetivo possibilitar uma implementação e avaliação mais adequada às micros, pequenas e médias empresas. A resposta da questão é, portanto, a alternativa C.
Página 52 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 21. Assuntos relacionados:
Volume 9 Edição 1
Engenharia de Software, Qualidade de Software, CMMI,
Banca: ESAF Instituição: Controladoria-Geral da União (CGU) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 11
A representação contínua do Modelo CMMI tem mais práticas especí cas que a representação em estágios, uma vez que tem dois tipos de práticas enquanto a representação em estágios possui apenas um. Quanto às práticas em cada representação, é correto a rmar que (a). existem práticas genéricas para os níveis de capacitação 1, 4 e 5 em ambas as representações. (b). na representação em estágios, somente aparecem práticas genéricas para os níveis de capacitação 2 e 3. (c). na representação contínua, as práticas genéricas existem para os níveis de capacitação 3 a 5. (d). na representação contínua, as práticas genéricas existem para todos os níveis de capacitação. (e). na representação em estágios, existem práticas genéricas para os níveis de capacitação 3, 4 e 5.
Solução: O CMMI (Capability Maturity Model Integration ) é uma evolução do CMM (Capability turity Model ) com o intuito de uni car os diversos modelos do CMM.
Ma-
O CMMI é um modelo de referência que contém práticas necessárias para o desenvolvimento de processos de software, a m de fornecer orientações (de o que fazer e não como fazer) para melhoraria de processos da organização e da capacidade da mesma de gerenciar o desenvolvimento, a aquisição e manutenção de produtos e serviços. O CMMI possui duas representações: contínua e estágio. A representação contínua utiliza os níveis de capacitação para medir a melhoria de processos, e a representação em estágios utiliza os níveis de maturidade. Essas representações permitem a organização, de acordo com o interesse, escolher diferentes caminhos para a melhoria dos processos.
Representação contínua A representação contínua tem como foco a capacidade do processo e oferece um caminho exível para a implementação de melhorias. Permite que uma organização escolha áreas especí cas do processo para implementação de melhorias e implementação de níveis diferentes de capacidade para diferentes processos. Existem dois tipos de práticas, especí cas a uma determinada Área de Processo (PA) e as genéricas indiferentemente a todas as Áreas de Processo. As práticas especí cas são atividades que são consideradas importantes na satisfação de uma meta especí ca associada. As práticas especí cas se aplicam a uma determinada Área de Processo e estão relacionadas à dimensão de um processo. As práticas genéricas são
Página 53 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
atividades que garantem que os processos associados com a Área de Processos serão efetivos, repetíveis e duradouros. Genérica porque a mesma prática apresenta-se em múltiplas Áreas de Processo. As práticas genéricas estão relacionadas à dimensão da capacidade ou da maturidade. A representação contínua tem mais práticas especí cas que a representação em estágios, pois tem dois tipos de práticas especí cas, básicas e avançadas, enquanto a representação em estágios possui apenas um tipo de prática especí ca. Na representação contínua, as Áreas de Processos são organizadas por categoria, são elas: Gerenciamento de Processos; Gerenciamento de Projetos; Engenharia e Suporte. É possível classi car o nível de capacitação de cada processo em seis níveis, de zero a cinco:
• Nível 0 - Incompleto: um processo é parcialmente realizado ou não realizado, e um ou mais objetivos do processo não estão satisfeitos; • Nível 1 - Realizado (ou Executado): um processo realizado atende todos os objetivos especí cos da área de processo e produz algum trabalho; • Nível 2 - Gerenciado: um processo gerenciado é um processo realizado (nível 1) que também é planejado e executado de acordo com as políticas pré-de nidas; • Nível 3 - De nido: um processo de nido é um processo gerenciado (nível 2) e ajustado de acordo com o conjunto de processos da organização; • Nível 4 - Gerenciado quantitativamente: um processo neste nível é de nido e controlado com ajuda de técnicas estatísticas e quantitativas; • Nível 5 - Otimizado: um processo otimizado é gerenciado quantitativamente, alterado e adaptado para atender os objetivos dos negócios atuais.
Representação em estágio A representação em estágios, que é mais utilizada, tem foco na maturidade da organização e provê um caminho evolutivo para a melhoria do processo. As Áreas de Processos são agrupadas por nível de maturidade, que devem ser atendidas na sua totalidade para permitir um estágio de nido de melhorias. A representação em estágios possui apenas um tipo de prática especí ca. A representação de estágio divide as Áreas de Processo em cinco níveis de maturidade, como no CMM:
• Nível 1 - Inicial: neste nível, os processos são caóticos e informais. A organização não possui um ambiente estável. Apesar deste ambiente informal e caótico, organizações neste nível muitas vezes produzem produtos e serviços que funcionam; entretanto, freqüentemente excedem o orçamento e o cronograma de seus projetos; • Nível 2 - Gerenciado: neste nível, os projetos da organização asseguraram que os requisitos são gerenciados e que os processos são planejados, executados, medidos e controlados. No nível 2, uma organização garante que atingiu todas as metas especí cas e genéricas das áreas de processos do nível 2 de maturidade; • Nível 3 - De nido: neste nível, os processos são bem caracterizados e entendidos e estão descritos em padrões, procedimentos, ferramentas e métodos. O conjunto de processos padrão da organização é estabelecido e melhorado ao longo do tempo e são usados para estabelecer a consistência em toda a organização. No nível 3, uma organização atingiu todas as metas especí cas e genéricas das áreas de processos de nidas para os níveis de maturidade 2 e 3;
Página 54 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
• Nível 4 - Gerenciado Qualitativamente: neste nível, são selecionados os subprocessos que contribuem signi cativamente para o desempenho geral do processo. Estes subprocessos selecionados são controlados utilizando estatísticas e outras técnicas quantitativas. No nível 4, 4, uma organização atingiu todas as metas especí cas das áreas de processos atribuídas aos níveis de maturidade 2, 3 e 4 e as metas genéricas atribuídas aos níveis de maturidade 2 e 3; • Nível 5 - Otimizado: neste nível, concentra-se no melhoramento contínuo do desempenho de processos através de melhorias tecnológicas incrementais e inovadoras. No nível 5, uma organização atingiu todas as metas especí cas das áreas de processos atribuídas aos níveis de maturidade 2, 3, 4 e 5 e as metas genéricas atribuídas aos níveis de maturidade 2 e 3. De acordo com explicado anteriormente, analisamos as alternativas da questão: (A) ERRADA Na representação contínua, as práticas genéricas existem para os níveis de capacitação de 1 a 5, enquanto que na representação em estágios somente aparecem práticas genéricas para os níveis de capacitação 2 e 3; não existem práticas genéricas para os níveis de capacitação 1, 4 e 5. A alternativa está errada ao a rmar que na representação em estágio, os níveis 1, 4 e 5 possuem práticas genéricas. (B) CORRETA Conforme explicado na alternativa (A), na representação em estágios somente aparecem práticas genéricas para os níveis de capacitação 2 e 3. Logo, a alternativa está correta. (C) ERRADA Conforme explicado na alternativa (A), na representação contínua, as práticas genéricas existem para os níveis de capacitação de 1 a 5. A alternativa C está errada, pois a rma que existem práticas genéricas para os níveis 3 a 5, ignorando os níveis 1 e 2. (D) ERRADA Na representação contínua, as práticas genéricas existem para os níveis de capacitação de 1 a 5. Não existe para o nível de capacitação 0. Portanto a alternativa está errada ao a rmar que existem práticas genéricas para todos os níveis de capacitação. (E) ERRADA Conforme explicado na alternativa (A), na representação em estágios somente aparece práticas genéricas para os níveis de capacitação 2 e 3.
Página 55 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
A alternativa está errada ao a rmar existem práticas genéricas para os níveis 3, 4, e 5, ao invés de somente os níveis 2 e 3.
Página 56 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 22. Assuntos relacionados: Nível de Serviço,
Volume 9 Edição 1
Governança de TI, ITIL, Projeto de Serviço, Gerenciamento de
Banca: ESAF Instituição: Controladoria-Geral da União (CGU) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 14
Na ITIL, o processo de Gerenciamento do Nível de Serviço é a base para o gerenciamento dos serviços que a área de TI aprovisiona para a organização. Assinale a opção que contém um subprocesso que pertence ao Gerenciamento do Nível de Serviço. (a). Monitoração do desempenho. (b). Dimensionamento da aplicação. (c). Planejamento do crescimento dos serviços. (d). Projeção dos recursos. (e). Garantia da existência de um plano de recuperação do serviço.
Solução: Uma pesquisa realizada pela International Network Services concluiu que a ITIL é a abordagem mais utilizada no mundo para o Gerenciamento de Serviços de TI. Quando tratamos de ITIL, estamos tratando de um abrangente e consistente conjunto de melhores práticas para a identi cação de processos da área de TI e para o alinhamento dos seus serviços às necessidades da organização. Ela foi criada a partir da necessidade de padronizar os processos da área de TI e baseia-se na experiência de organizações privadas e públicas de todo o mundo. A ITIL surgiu no nal da década de 1980 pela CCTA (Central Communications and Telecom Agency) e atual OGC11 (O ce of Government Commerce). O objetivo inicial era disciplinar e permitir a comparação entre as propostas dos diversos proponentes a prestadores de serviços de TI para o governo britânico. Em sua versão inicial, a ITIL era composta de aproximadamente 40 livros e, por isso, era conhecida como biblioteca. A sua versão 2 foi completamente reorganizada e publicada em 2002. Neste caso, as práticas foram reunidas em oito volumes. Já a ITIL versão 3 foi publicada em maio de 2007. A versão 3 é composta de cinco volumes:
• Estratégia do serviço (Service Strategy); • Projeto de serviço (Service Design); • Transição do serviço (Service Transition); • Operação do serviço (Service Operation); • Melhoria contínua do serviço (Continual Service Improvement). O segundo livro 2 Projeto de Serviço ou Desenho de Serviço descreve planos e objetivos e cria projetos e especi cações para execução através da operação e transição dos serviços.
Página 57 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
Na fase de Desenho de Serviço, é produzido o Pacote de Desenho de Serviço (Service Design Package SDP) para cada serviço identi cado, mudança de grande impacto, remoção de um serviço ou mudança em um pacote de Desenho de Serviço. Este pacote é passado para para a próxima fase (Transição de Serviço). Todos os aspectos e seus requisitos são esmiuçados através de todas as fases subsequentes do ciclo de vida do serviço. O processo de Gerenciamento do Nível de Serviço e que consta no livro de Projeto de Serviço na versão 3 é a base para o gerenciamento dos serviços que a área de TI aprovisiona para a organização. Ele deve assegurar que os serviços de TI, dentro dos níveis de serviços acordados, serão entregues quando e onde as áreas usuárias o de nirem. O processo Gerenciamento do Nível de Serviço, na versão 2, pode ser divido nos seguintes subprocessos:
• Revisão dos serviços disponibilizados; • Negociação com os clientes; • Revisão dos contratos de serviços com fornecedores externos; • Desenvolvimento e monitoração dos acordos de nível de serviço; • Implementação das políticas e dos processos de melhoria contínua; • Estabelecimento de prioridades; • Planejamento do crescimento dos serviços; • De nição do custo dos serviços em conjunto com o gerenciamento nanceiro e da forma de ressarcimento destes custos. Essas atividades e objetivos permanecem e são os mesmos nas versões 2 e 3, porém, na versão 3, as atividades de revisão do serviço fazem parte do livro de Melhoria Contínua do Serviço. Podemos já ver no penúltimo item Planejamento do crescimento dos serviços que a alternativa (C) é a alternativa correta, não importando se consideramos a versão 2 ou 3 do ITIL. Vamos esboçar aqui uma visão dos processos (atividades e objetivos) da versão 3 por livro. Um aprofundamento de cada processo foge do escopo da resolução desta questão e, inclusive, recomendamos o aprofundamento. Entretanto, entendemos que é vital que o candidato tenha uma visão ampla dos processos do ITIL versão para enfrentar um concurso, pois muitas questões são simples e diretas.
Estratégia de Serviço • De nir o mercado; • Desenvolver as ofertas; • Desenvolver ativos estratégicos; • Preparar para execução; • Gerenciamento de Portfólio de Serviço (GPS); • Gerenciamento da Demanda; • Gerenciamento Financeiro.
Página 58 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
Projeto de Serviço • Gerenciamento do Nível de Serviço (GNS); • Gerenciamento de Catálogo de Serviço; • Gerenciamento de Disponibilidade; • Gerenciamento de Segurança da Informação (GSI); • Gerenciamento de Fornecedor; • Gerenciamento de Capacidade; • Gerenciamento de Continuidade de Serviço de TI.
Transição de Serviço • Gerenciamento de Mudança; • Gerenciamento de Con guração e de Ativo de Serviço (GCAS); • Gerenciamento de Liberação e Implantação.
Operação de Serviço • Gerenciamento de Incidente; • Gerenciamento de Evento; • Cumprimento de Requisição; • Gerenciamento de Problema; • Gerenciamento de Acesso.
Melhoria de Serviço Continuada • 7 passos do processo de melhoria. Para complementar, na Figura 6, um resumo interessante em forma de grá co.
Página 59 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Figura 6: processos do ITIL v3.
Página 60 de 127 www.handbookdeti.com.br
Volume 9 Edição 1
Handbook de Questões de TI Comentadas para Concursos 23. Assuntos relacionados:
Volume 9 Edição 1
ITIL, Central de Serviços,
Banca: ESAF Instituição: Controladoria-Geral da União (CGU) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 15
Na ITIL, a Central de Serviços (Service Desk) é a principal interface operacional entre a área de TI e os usuários dos seus serviços. Assinale a opção que representa uma tarefa da Central de Serviços. (a). Identi car tendências de problemas. (b). Controlar erros conhecidos. (c). Revisar os principais problemas identi cados. (d). Gerenciar o trabalho das diversas equipes de suporte técnico. (e). Produzir informações gerenciais, coletando medidas e calculando indicadores de desempenho.
Solução: A ITIL (Information Technology Infrastructure Library) é uma biblioteca constituída das boas práticas de Gerenciamento de Serviços de TI. A estrutura da ITIL não apresenta uma maneira de implementação de serviços de TI, porém, disponibiliza os assuntos que são importantes para a execução/conclusão do mesmo. Para tanto, a ITIL fornece um modelo de planejamento dos processos, papéis (ator) e atividades mostrando os relacionamentos entre os vários processos de uma organização. Os processos indicados pela ITIL são genéricos podendo ser empregados por vários tipos de empresas de TI, ou seja, não importa o tamanho da empresa ou mesmo o tipo de serviço para aplicar a ITIL. Esses processos devem ser adaptados ao estilo da empresa. A ITIL de ne vários processos dentre eles a Central de Serviços (Service Desk). A Central de Serviços ou Service-Desk representa a única interface de comunicação entre os usuários e o a área de TI de uma organização. A proposta deste departamento é fornecer suporte para os usuários, ou seja, é receber todos os requerimentos de suporte ou serviço prestado pela área de TI. Desta forma, a Central de Serviço pode encaminhar o problema para os técnicos especialistas que executaram o serviço solicitado, desta forma, os técnicos não perderiam tempo nas chamadas e também não seriam mais interrompidos durante algum procedimento de suporte. Além disso, a Central de Serviços gera conhecimento de TI a partir das solicitações e conclusões de serviços, a m de, construir uma base de conhecimento que indicaram tendências e melhorias de qualidade dentro da área de TI contribuindo para a valorização da organização. Resumidamente a Central de Serviços incorpora uma série de atividades para a execução e melhoramento da empresa, são elas:
• Implementa interface de comunicação as chamadas e respostas aos requerimentos; • Registros das propriedades das chamadas, priorização de acordo com o nível do requerimento e acompanhamento do processo de desenvolvimento indicando o status e andamento das requisições;
Página 61 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
• Construção e disponibilização de informações gerenciais, além, de propor melhorias de determinado serviço e treinamento de usuários; • Monitoração completa do serviço desde conhecimento até a nalização; • Disponibilização de Indicadores de desempenho para gestão e suporte. Como pode ser observado no resumo das principais atividades que a Central de Serviço executa, podemos ver os registros das chamadas para utilizadas na construção de informações gerenciais que serão usadas em processos de melhoria. Essas informações são essenciais nos cálculos de indicadores de desempenho que são usados no processo de qualidade dos serviços de TI. Logo, a questão correta é a letra E.
Página 62 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 24. Assuntos relacionados:
Volume 9 Edição 1
Programação, Orientação a Objeto, Tipos de Métodos,
Banca: ESAF Instituição: Controladoria-Geral da União (CGU) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 21
Com relação aos conceitos de programação orientada a objetos, é correto a rmar que (a). métodos abstratos são aqueles que não devem ser rede nidos em classes derivadas, devem ser herdados tal como foram de nidos. (b). métodos estáticos são aqueles que, ao serem executados, não acessam atributos de instância da classe. (c). métodos nais, também conhecidos como nalizadores ou destrutores, são chamados na destruição de uma instância. (d). métodos construtores são métodos chamados sobre um objeto quando ele é criado. Em Java, os construtores têm o mesmo nome da classe da qual são membros e o tipo retornado por eles é especi cado na sua de nição. (e). métodos de classe são aqueles que executam operações que afetam objetos individuais da classe.
Solução: Criado por Alan Kay (autor da linguagem de programação Smalltalk), o termo Programação Orientada a Objetos diz respeito a um paradigma de análise, projeto e programação de software baseado na interação entre diversas unidades chamadas de objetos. A ideia fundamental é simular o mundo real através de programas de computador. Os objetos interagem entre si através do envio de mensagens, sendo que o programador deve especi car quais são as mensagens que cada objeto pode receber e que ações realizar ao receber mensagens especí cas. Os objetos, instâncias de classes, possuem métodos cujos acessos podem ser (re)de nidos por modi cadores de acesso. Em Java, esses modi cadores podem ser private, protected, public e static. Quando aplicado a um método, o modi cador de acesso private indica que ele só pode ser acessado de dentro da classe que o criou, característica chamada de encapsulamento. Assim, uma classe que herde de uma superclasse com métodos privados não conseguirá utilizá-los diretamente. O modi cador protected indica que o método apenas poderá ser acessado dentro do pacote em que estiver contida sua classe. Já o modi cador public indica que o método pode ser acessado em qualquer lugar e a qualquer momento da execução do programa. Por m, o modi cador static indica que o método estático deve ser acessado diretamente na classe e não em suas instâncias, ou seja, ele de ne métodos de classe em vez de métodos de instância. Em conjunto com os modi cadores de acesso, podem ser utilizados os modi cadores abstract e nal. O primeiro, serve para declarar métodos abstratos, isto é, métodos que deverão ser implementados nas subclasses. O segundo, indica que o método não pode ser alterado no decorrer do processamento (constante).
Página 63 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
Os métodos construtores são métodos especiais executados no momento da criação de um objeto. Não possuindo valor de retorno, representam uma oportunidade de inicializar dados de forma organizada e sempre têm o nome da classe à qual pertencem. Paralelamente, os métodos destrutores têm o objetivo de destruir o objeto e devolver ao sistema a memória alocada. Relativamente à questão, o item a) apresenta uma a rmação contrária à teoria, já que os métodos abstratos devem ser de nidos nas classes derivadas através de herança. O item c) busca confundir o candidato ao associar os termos destrutores e nalizadores ao modi cador nal, insinuando que este último tenha a função de nalizar (destruir) a instância de uma classe. O item d) expõe uma teoria parcialmente correta sobre construtores, exceto pelo fato de a rmar que tais métodos possuem valor de retorno. O item e) inverte as de nições de método de classe e método de instância, a rmando que o primeiro possui o comportamento do segundo. O item b) faz uma a rmativa que está de acordo com a teoria exposta, haja vista que os métodos estáticos não acessam atributos de instâncias (objetos) da classe, mas sim atributos da classe, sendo a resposta para a questão.
Página 64 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 25. Assuntos relacionados: Polimor smo, Abstração,
Volume 9 Edição 1
Programação, Orientação a Objeto, Encapsulamento, Herança,
Banca: ESAF Instituição: Controladoria-Geral da União (CGU) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 22
A programação orientada a objetos é baseada em diversos conceitos, tais como encapsulamento, herança, polimor smo e abstração. Com relação a esses conceitos, é correto a rmar que (a). o conceito de encapsulamento é alcançado por meio da de nição da visibilidade pública aos atributos e métodos. (b). herança é um mecanismo que permite que uma classe herde todo o comportamento e os atributos de outra classe. Em Java, pode-se implementar tanto a herança única quanto a herança múltipla. (c). interface pode ser considerada como a forma com que um objeto se apresenta para outros, no que diz respeito aos seus atributos e métodos. Em Java, uma mesma classe não pode implementar mais de uma interface. (d). polimor smo é o uso de um mesmo nome para identi car diferentes implementações dos métodos. Seu uso é comum na de nição de construtores, em que os mesmos podem ser implementados em diferentes versões para as diferentes formas de se instanciar a classe. (e). para uma classe ser considerada abstrata, todos os seus métodos devem ser abstratos. Em Java, para se de nir uma classe abstrata deve-se utilizar a palavra chave abstract no início de sua declaração.
Solução: (A) INCORRETA O encapsulamento permite esconder os detalhes funcionais de uma classe a objetos que podem enviar mensagens para ela. E, em linguagens de programação, pode signi car duas coisas distintas:
• Um mecanismo de uma linguagem de programação para restrição de acesso aos componentes de um objeto; • Uma construção da linguagem que facilita o agrupamento de dados com métodos que operam naqueles dados. Como forma de restrição de acesso, seu propósito é o de manter a integridade de um objeto pela prevenção de que usuários possam alterar seu estado interno, pois existe a possibilidade dessa modi cação levar o objeto a um estado inválido. No contexto da linguagem Java, há três palavras-chave explícitas para implementação da restrição de acesso (os especi cadores de acesso): public, private e protected. Quando a visibilidade pública (public) é de nida para algum elemento, isso signi ca que
Página 65 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
qualquer outro objeto de outra classe é capaz de acessar esse elemento. Já quando a palavrachave private é usada, é de nido que apenas o implementador da classe (e a própria classe) possui acesso aos membros privados. Qualquer cliente que tentar acessar um membro privado receberá um erro de compilação. A palavra-chave protected, por sua vez, funciona de maneira semelhante à private, exceto que qualquer classe que herde da classe original também terá acesso aos membros protegidos. Portanto, apesar da de nição da visibilidade de membros de uma classe fazer parte da implementação do encapsulamento, o uso de apenas a visibilidade pública não garante encapsulamento. (B) INCORRETA É verdade que a herança permite que uma classe herde o comportamento e os atributos de outra classe. No entanto, não é verdade que com ela é possível herdar todos os comportamentos e atributos, pois, como discutido na alternativa anterior, a visibilidade privada impede que subclasses herdem quaisquer características por ela afetadas. Outra informação importante é que não existe forma direta de implementar herança múltipla em Java. Uma forma de contornar essa restrição, no entanto, é através do uso de interfaces. (C) INCORRETA A parte inicial da alternativa, interface pode ser considerada como a forma com que um objeto se apresenta para outros, no que diz respeito aos seus atributos e métodos , está correta. Outras formas de compreender uma interface é como a especi cação de um protocolo para comunicação entre classes ou como um contrato de comportamento entre as classes. Em Java, quando uma interface é de nida, a palavra-chave interface deve ser usada. Já quando ela é implementada, a classe que a implementa deve usar a palavra-chave implements. Como uma interface não possui implementação, apenas especi cação, não há nada que impeça a combinação de interfaces. Isso, aliás, permite dizer uma coisa x é um a, um b e um c , através da implementação de diversas interfaces. Como no exemplo abaixo (retirado do capítulo 8 do livro Thinking in Java, revisão 4.0):
interface CanFight { void fight(); } interface CanSwim { void swim(); } interface CanFly { void fly(); } class ActionCharacter { public void fight() {} }
Página 66 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
class Hero extends ActionCharacter implements CanFight, CanSwim, CanFly { public void swim() {} public void fly() {} } public class Adventure { public static void t(CanFight x) { x.fight(); } public static void u(CanSwim x) { x.swim(); } public static void v(CanFly x) { x.fly(); } public static void w(ActionCharacter x) { x.fight(); } public static void main(String[] args) { Hero h = new Hero(); t(h); // O trata como CanFight u(h); // O trata como CanSwim v(h); // O trata como CanFly w(h); // O trata como ActionCharacter } } (D) CORRETA A de nição está correta. Uma vantagem do polimor smo é que ele permite outra forma de separação entre interface e implementação. Pois desacopla o que do como. (E) INCORRETA Em Java, para uma classe ser considerada abstrata é necessário que um ou mais métodos dessa classe seja de nido como abstract. Além disso, é necessário que a própria classe seja de nida como abstract, pois em caso contrário o compilador não a compilará. Ainda em classes abstratas, quando uma subclasse de uma classe abstrata é de nida, se não houver de nição dos métodos abstratos da classe pai, a subclasse também será considerada abstrata e, portanto, não poderá ser instanciada.
Página 67 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 26. Assuntos relacionados:
Volume 9 Edição 1
Linguagens de Programação, Java,
Banca: ESAF Instituição: Controladoria-Geral da União (CGU) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 23
Com relação à linguagem de programação Java, é correto a rmar que (a). o operador instanceof é utilizado para chamar o método construtor de uma classe e criar um novo objeto. (b). são tipos primitivos de dados: boolean, byte, short, char, int, long, string, oat e double. (c). o tipo de dado int suporta apenas números de - 32.768 a 32.767. (d). a instrução do-while não faz parte das instruções de controle de uxo da linguagem. (e). os valores booleanos não podem ser usados em uma operação de casting.
Solução: (A) ERRADA O operador instanceof determina se um tipo particular de objeto é de uma determinada classe, ou seja, o instanceof compara um objeto para um tipo (classe) especi cado. Você pode usá-lo para testar se um objeto é uma instância de uma classe ou uma instância de uma subclasse, ou uma instância de uma classe que implementa uma interface especí ca. O operador veri ca se uma referência de objeto é uma instância de um tipo, e retorna um valor booleano. A forma geral de uso do operador é: <objeto> instanceof <classe>, que retornará verdadeiro para os objetos instanciados a partir da classe avaliada. Note que instanceof sempre retornará falso se <objeto> é nulo. (B) ERRADA Java é uma linguagem fortemente tipada. Isso signi ca que toda variável deve ter um tipo declarado. Existem oito tipos primitivos em Java. Quatro deles são tipos de números inteiros, dois são tipos números de ponto utuante, um tipo boolean (intervalo de valores 0 ou 1) e um é o tipo de caracteres char, usado para unidades de código no esquema de codi cação Unicode. Os tipos de números inteiros servem para números sem parte fracionaria, sendo permitido valores negativos. O Java fornece os quatro tipos de números inteiros a seguir:
Tipo Armazenamento Necessário int short long byte
4 bytes 2 bytes 8 bytes 1 byte
Intervalo de Valores
-2,147,483,648 a 2,147,483,647 32,768 a 32, 767 -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807 -128 a 127
Os tipos utuantes representam números com parte fracionária. Os dois tipos de ponto utuante são mostrados a seguir: Página 68 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Tipo
Armazenamento Necessário
oat double
4 bytes 8 bytes
Volume 9 Edição 1
Intervalo de Valores
+/-3.4E-38 a +/- 3.4E+38 +/-1.7E-308 a +/-1.7E+308
O tipo char representa todo o conjunto de caracteres de nidos no código de caracter Unicode que é usado para de nir a extensão das possibilidades de caracteres alfanuméricos e símbolos. O código UNICODE de ne que cada caractere tenha 2 bytes. O tipo primitivo booleano é o tipo de dados mais simples da linguagem Java. Ele possui apenas dois valores, um correspondente a verdadeiro e outro a falso. O tipo boolean é tipicamente usado como resultado de expressões condicionais como variáveis identi cadoras de estado. (C) ERRADA Como pode ser observado na tabela que apresenta os tipos de números inteiros acima, o intervalo que o tipo de números inteiro pode assumir é -2,147,483,648 a 2,147,483,647. (D) ERRADA Java suporta comandos condicionais como seleção e laços para determinar o controle do uxo do programa. Java de ne os comandos de seleção (condicionais) if-else e switch, além desse, a linguagem Java determina comandos de repetição (laços ou loop) que são: while, for e do-while. Estas estruturas de controle utilizam os símbolos delimitadores (chaves) como limite de sua operação. Por exemplo:
Seleção
if(<condição>) { <comando1> <comandon> } else { <comando1> <comandon> }
Seleção
switch (<opção>) { case <const1|var1> : case <const2|var2> : } while(<condição>);
Repetição
for( <condição>) { <comando1> <comandon> }
Repetição
while(<condição>) { <comando1> <comandon> }
Repetição
do { <comando1> <comandon> }
As chaves são utilizadas quando existe a necessidade de aplicar os comandos de controle sobre vários comandos. Quando são aplicados a apenas um comando o uso das chaves não é obrigatória. (E) CORRETA A operação de casting é responsável por fazer a conversão de um tipo de dado em outro. Existem regras para esse tipo de conversão de tipo, pois podem causar perda de informações. A operação casting em Java entre tipos primitivos permite converter o valor de um tipo para outro tipo primitivo. Mais comumente ocorre com os tipos numéricos, e existe um tipo primitivo boolean que não pode ser usado em uma operação de casting, pois os valores deste tipo só podem ser verdadeiro ou falso. Página 69 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
Embora o conceito de conversão seja razoavelmente simples, o uso é complicado pelo fato de que Java tem oito tipos primitivos e vários tipos de objeto. Há três formas de casting na linguagem Java:
• Casting entre tipos primitivos, como por exemplo: int para oat ou para double; • Casting de uma instância de uma classe para uma instância de outra classe; • Casting tipos primitivos para objetos. Como apresentado, realmente o tipo primitivo boolean da linguagem Java não pode ser um dos operandos da operação de casting, fazendo a assertiva E como correta.
Página 70 de 127 www.handbookdeti.com.br
Handbook de QuestĂľes de TI Comentadas para Concursos 27. Assuntos relacionados: UsuĂĄrio,
Volume 9 Edição 1
Linguagens de Programação, Java, Pacotes Java, Interface com
Banca: ESAF Instituição: Controladoria-Geral da União (CGU) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 QuestĂŁo: 24
A linguagem Java possui uma API (Application Program Interface) que disponibiliza pacotes e classes com diversas funcionalidades para auxiliar no desenvolvimento de aplicaçþes. O pacote que contÊm classes que auxiliam na criação de interfaces de usuårio, incluindo tratamento de grå cos e imagens, Ê denominado (a). (b). (c). (d). (e).
java.util. java.applet. java.graphic. java.image. java.awt.
Solução: (A) INCORRETA O pacote java.util provê classes que tratam de coleçþes, eventos, data e hora, internacionalização, e classes de utilidade: um tokenizador, um gerador de números aleatórios e um vetor de bits, não tendo qualquer relação com interfaces grå cas. (B) INCORRETA O pacote java.applet, da distribuição padrão do Java, Ê usado para a criação de applets Java. Um applet Java Ê uma aplicação fornecida aos usuårios em formato de bytecode Java e são normalmente executados em navegadores com o intuito de prover interatividade a aplicaçþes web. Os applets Java são normalmente escritos na linguagem Java, mas nada os impede de serem escritos em linguagens que possuam compiladores para bytecode da Java Virtual Machine (JVM), como Jython, Ruby ou Ei el. Um exemplo de código de applet Java Ê exibido abaixo:
import java.applet.Applet; import java.awt.*; public class HelloWorld extends Applet { public void init() { } public void stop() { } public void paint(Graphics g) { g.drawString("Hello, world!", 20,10); } } Sendo salvo como HelloWorld.java e compilado, o seguinte trecho HTML ĂŠ capaz de carregĂĄlo: PĂĄgina 71 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
<html> <head> <title>Hello World</title> </head> <body> <h1>Um exemplo de applet Java</h1> <p><applet code="HelloWorld.class" width="200" height="40"> Aqui deveria aparecer o string "Hello World".</applet></p> </body> </html> Após a compilação e o carregamento em um navegador, este applet exibirá a string Hello, world! . Como o pacote java.applet provê uma forma para criação de applets Java e não provê, necessariamente, funcionalidade para criação de interfaces de usuário, java.applet não é a resposta correta. (C) INCORRETA Não existe pacote java.graphic na distribuição do J2SE e, portanto, esta alternativa está incorreta. (D) INCORRETA Não existe pacote java.image na distribuição do J2SE e, portanto, esta alternativa está incorreta. (E) CORRETA O pacote java.awt fornece classes para criação de interfaces de usuário e desenho de grá cos e imagens na tela. O exemplo de applet exibido acima faz uso, inclusive, do pacote awt para exibição da string Hello, world! na janela do navegador. Seu resultado é exibido na Figura 7 e, por tratar de interfaces grá cas, essa é a alternativa que responde corretamente a esta questão.
Figura 7: hello, world em applet.
Página 72 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 28. Assuntos relacionados:
Volume 9 Edição 1
Linguagens de Programação, Java, Pacotes Java,
Banca: ESAF Instituição: Controladoria-Geral da União (CGU) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 26
Um dos aprimoramentos feitos na linguagem Java foi a introdução da re exão. Com relação a esse recurso, é incorreto a rmar que (a). a classe Method do pacote java.lang.re ect decodi ca informações de modi cador sobre classes, variáveis e métodos. (b). o uso da re exão se torna mais útil quando se está trabalhando com serialização de objeto. (c). a classe Field do pacote java.lang.re ect gerencia e localiza informações sobre variáveis de classe e de instância. (d). por meio da re exão, um programa Java pode carregar uma classe sobre a qual ele nada conhece, encontrar as variáveis, métodos e construtores dessa classe e trabalhar com eles. (e). a re exão é necessária com o uso de JavaBeans, em que a capacidade de um objeto consultar outro a respeito do que ele pode fazer é útil ao se criar aplicativos mais complexos.
Solução: A linguagem de programação Java surgiu de um projeto da empresa Sun Microsystems em 1995 com a intenção de possibilitar a programação de qualquer equipamento eletrônico dotado de um microprocessador. Com o slogan Write once, run everywhere (programe um vez, execute em qualquer lugar), buscou-se (e ainda busca-se) ilustrar um dos maiores benefícios desta linguagem que tem como característica marcante a possibilidade de criação de código portável (bytecodes). Desde sua concepção e popularização, a Java vem evoluindo e ampliando seus recursos, ao mesmo tempo que as máquinas virtuais (JVM Java Virtual Machine) têm se tornado mais e cientes. Um dos aprimoramentos da linguagem foi a introdução da re exão. Re exão (ou introspecção) é a capacidade de um programa investigar e avaliar características sobre si mesmo. É comumente utilizada por programas que precisam examinar ou modi car (em tempo de execução) o comportamento de aplicações que estejam executando na JVM. Desta forma, um programa Java pode carregar uma classe sobre a qual nada conhece, encontrar as variáveis, os métodos e os construtores dessa classe, e utilizá-los. O pacote java.lang.re ect da API Java proporciona classes e interfaces para se obter informações re etidas a respeito de classes e objetos. A classe Method desse pacote, por exemplo, fornece informações sobre métodos de uma classe ou de uma interface, além de permitir o acesso dinâmico a tais métodos. Com isso, pode-se, para cada método examinado, veri car os modi cadores, o nome do método, o tipo de retorno, os parâmetros do método e as exceções que o método pode lançar. Semelhantemente, através da classe Field do mesmo pacote, é possível obter dados e informações sobre os atributos membros da classes, como
Página 73 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
modi cadores, tipo e nome. Outras técnicas e métodos de programação tiram proveito da Re exão. A Serialização é o processo de codi cação (e posterior decodi cação) de objetos em um stream de bytes, comumente utilizado para tarefas de persistência, comunicação via sockets, RMI (Remote Method Invocation), dentre outras. Em Java, esta técnica bene cia-se enormemente da re exão, pois em tempo de execução é possível inspecionar adequadamente os objetos a serem serializados. Outro exemplo é a criação de aplicativos JavaBeans, cuja API possui diversas interfaces e classes em seu pacote java.beans. Além dessas interfaces e classes, a tecnologia faz uso de modelos de eventos, de serialização de objetos e de re exão. Com a re exão ca prático examinar qualquer objeto dinamicamente para determinar (e potencialmente invocar) seus métodos. Analisando os itens da questão, observa-se que a primeira opção apresenta uma informação incorreta ao a rmar que a classe Method do pacote java.lang.re ect decodi ca informações de modi cador sobre classes, variáveis e métodos , quando na verdade a classe em questão fornece informações apenas sobre métodos. Informações sobre variáveis são obtidas pela classe Field e é através da classe Class que se obtém informações sobre as classes. As demais a rmações estão de acordo com a teoria exposta. Desta forma, a resposta à questão encontra-se no item a).
Página 74 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 29. Assuntos relacionados:
Volume 9 Edição 1
Engenharia de Software, Padrões de Projeto, Padrão Facade,
Banca: ESAF Instituição: Controladoria-Geral da União (CGU) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 29
Ao longo das últimas décadas, a engenharia de software fez progressos signi cativos no campo de padrões de projeto arquiteturas comprovadas para construir software orientado a objetos exível e fácil de manter. Com relação ao padrão Facade, é correto a rmar que (a). fornece um objeto representante ou um marcador de outro objeto para controlar o acesso ao mesmo. (b). de ne o esqueleto de um algoritmo em uma operação, postergando a de nição de alguns passos para subclasses. (c). de ne uma interface para criar um objeto, mas deixa as subclasses decidirem qual classe a ser instanciada. (d). fornece uma interface uni cada para um conjunto de interfaces em um subsistema. (e). de ne uma dependência um para muitos entre objetos, de modo que, quando um objeto muda de estado, todos os seus dependentes são automaticamente noti cados e atualizados.
Solução: A chave para maximizar o reuso reside em antecipar novos requisitos e novas mudanças relativos aos requisitos existentes, projetando sistemas que conseguem evoluir adequadamente. Para projetar sistemas que sejam robustos em face a mudanças, deve-se considerar como o sistema pode precisar ser alterado em seu ciclo de vida. Um projeto que não considere este aspecto arrisca-se a ser reprojetado no futuro. Estas mudanças podem envolver rede nição e reimplementação de classes, modi cações no cliente e reteste. O reprojeto afeta muitas partes do sistema de software e modi cações não-antecipadas são invariavelmente caras. Os padrões de projeto auxiliam o desenvolvedor a evitar problemas dessa natureza garantindo que um sistema pode ser modi cado de determinadas maneiras. Cada padrão de projeto permite que alguns aspectos da estrutura do sistema variem independentemente de outras aspectos, tornando assim o sistema mais robusto a certos tipos de mudanças. Estruturar um sistema em subsistemas auxilia na redução da complexidade. Um objetivo comum em padrões de projeto é minimizar as comunicações e as dependências entre os subsistemas. Uma forma de atingir tal objetivo é introduzir um objeto Facade que proporcione uma interface única e simpli cada para as facilidades mais gerais de um subsistema. Considerando o orientação a objetos (OO), os objetos podem variar tremendamente em tamanho e em número. Eles podem, em uma palavra, criar representações de tudo para o hardware subjacente e/ou para as aplicações. Decidir o que deve ser um objeto é uma tarefa delicada. O padrão de projeto Facade descreve como representar subsistemas completos como objetos, provendo uma interface uni cada para um conjunto de interfaces em
Página 75 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
um subsistema. Assim, ele de ne uma interface de alto-nível que torna um subsistema mais fácil de ser utilizado. Em geral, apenas um único objeto Facade é necessário. A alternativa A não descreve uma característica do padrão de projeto Facade, pois, neste, não há representação de um objeto por outro, mas sim, de subsistemas inteiros por um objeto que atua como interface. O de nição do objeto Facade é feita por completo, não havendo qualquer tarefa às classes do subsistema nesse tocante. Por este motivo, a a rmativa B está incorreta. Semelhantemente, após a de nição desse objeto Facade, o mesmo deve ter ciência das classes que interfaceia para, no momento oportuno, instanciá-las adequadamente. A alternativa C não está correta por contradizer tal característica. Por m, a assertiva E busca introduzir o conceito de dependência, inexistente no padrão de projeto em questão e, desta forma, não se alinha às características do Facade. Resta a alternativa D, que apresenta-se em acordo com a teoria exposta, sendo a resposta para a questão.
Página 76 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 30. Assuntos relacionados:
Volume 9 Edição 1
Linguagem de Modelagem, UML,
Banca: ESAF Instituição: Controladoria-Geral da União (CGU) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 31
A linguagem de Modelagem Uni cada (UML) emergiu como notação de diagramação de padrão, de fato e de direito, para a modelagem orientada a objetos. Desta forma, a sentença que conceitua apropriadamente a UML, segundo o OMG-Object Management Group, é (a). um método para especi car e modelar os artefatos dos sistemas. (b). um processo de especi cação e modelagem de sistemas orientados a objeto. (c). uma linguagem para implementar os conceitos da orientação a objetos. (d). uma linguagem visual para especi car, construir e documentar os artefatos dos sistemas. (e). um método comum para a representação da orientação a objetos.
Solução: Como o nome sugere, a UML é uma linguagem de modelagem. Oriunda da junção de três métodos de modelagem (Booch, OMT e OOSE), é mantida pela OMG (Object Management Group) e permite que os desenvolvedores visualizem o resultado de seus trabalhos em diagramas padronizados, através de uma notação grá ca bem de nida. A questão envolve, basicamente, a avaliação de terminologias. A UML não pode ser considerada um processo, pois não de ne etapas de execução. Nem tão pouco pode-se entendê-la como um método ou uma metodologia, já que não existem diretrizes de como projetar ou especi car sistemas. Essa primeira avaliação exclui as assertivas a), b) e e) como alternativas para a questão. A opção c) descreve uma linguagem de programação, o que não é o caso da UML. O item d) de ne precisamente a UML: uma linguagem visual para especi car, construir e documentar os artefatos dos sistemas. Deve-se ter em mente que a UML é uma linguagem composta por elementos grá cos a serem utilizados na modelagem dos conceitos do paradigma orientado a objetos.
Página 77 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 31. Assuntos relacionados:
Volume 9 Edição 1
Interface com Usuário, Usabilidade,
Banca: ESAF Instituição: Controladoria-Geral da União (CGU) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 40
Como características de usabilidade ou facilidade de uso, uma interface com o usuário deve possuir, entre outros, atributos tais como: facilidade de aprendizado, velocidade de operação, robustez, facilidade de recuperação e facilidade de adaptação. Para o atributo robustez, o resultado da avaliação de uma interface deve determinar (a). o nível de tolerância do sistema aos erros do usuário. (b). até que ponto o sistema está integrado a um único modelo de trabalho. (c). quanto tempo leva um novo usuário para se tornar produtivo com o sistema. (d). com que e ciência o sistema se recupera a partir dos erros cometidos pelos usuários. (e). em que grau a resposta do sistema combina com a prática de trabalho do usuário.
Solução: Geralmente, os usuários avaliam um sistema pela sua interface (responsável pela interação do usuário com o computador) e não pela sua funcionalidade. Para você ter uma idéia, a interface pode determinar o sucesso ou o fracasso da utilização de sistema, por isso é extremamente importante que os engenheiros de softwares estejam preparados para projetar uma interface com o usuário. Uma boa abordagem que os engenheiros de software adotam é fazer com que o projeto de interface seja centrado no usuário, onde o fator de sucesso é proveniente da análise das atividades do(s) usuário(s). A Figura 8 exempli ca o processo de projeto de interface (note a existência de vários).
Figura 8: processo de projeto de interface com usuário. E o que seria usabilidade no escopo de interface com o usuário?
Página 78 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
Saiba que quando você classi ca um sistema que está utilizando em fácil ou difícil, você está, na verdade, analisando a usabilidade do programa. Quando o usuário precisa de uma ferramenta, geralmente ele procura aquela que atenda a suas necessidades e que não lhe traga problemas durante o seu trabalho, ou seja, ele procura um produto com um bom nível de usabilidade, e para se obter esse nível de usabilidade é necessário levar em consideração as características acima apresentadas. Segundo a norma ISO CD 9241:
usabilidade está relacionada com a forma como um produto
pode ser usado por um grupo de usuários para alcançar um determinado conjunto de objetivos com e cácia (precisão e completeza com que os usuários atingem objetivos especí cos), e ciência (precisão e completeza dos objetivos atingidos em relação aos recursos despendidos) e satisfação (conforto e aceitabilidade na utilização do sistema) de uso em um determinado contexto de aplicação.
Já segundo Nielsen (2000):
usabilidade é o conjunto de todas as características que per-
mitem ao usuário interagir com o computador satisfatoriamente.
Achou meio vaga a de nição de Nielsen, né? Realmente, todas as características não ajudou muito. Bom, para facilitar, nós apresentaremos as 10 características por ele consideradas as mais importantes:
• facilidade de aprendizado: fornece condições que permitem que o usuário aprenda a interagir com o sistema de forma natural, independentemente de seu nível de habilidade e conhecimento. Desta forma, a interface deve se apresentar de acordo com o que é mais apropriado ao comportamento humano. Descartamos aqui a alternativa C; • facilidade de utilização (adaptação): está intrinsecamente relacionada à exibilidade do sistema, isto é, à capacidade de adaptação ao nível de conhecimento e habilidade dos usuários do sistema. Por exemplo, alguns aspectos relacionados à exibilidade são: iniciação do diálogo, o multi-threading, a possibilidade de migração de tarefas, e a adaptabilidade. Já podemos descartar as alternativas B e E; • interface intuitiva: os comandos para a execução de tarefas devem estar claramente visíveis, a m de se evitar a necessidade de memorização de funções (não confunda com a memorização de atalhos, que é opcional para a realização de tarefas); • diálogo simples e natural: uso de expressões e conceitos que façam parte do conhecimento do usuário. Portanto, evite o emprego de termos técnicos da computação, assim como, informações irrelevantes competem com o que realmente é necessário para a realização da tarefa em questão; • feedback ao usuário: a interface dever oferecer mecanismo para informar ao usuário como o sistema está se comportando internamente, de forma que o usuário não que. Por exemplo, informar o tempo restante para a conclusão da tarefa requisitada; • retenção de conhecimento: quanto tempo um usuário pode car afastado do sistema (sem interação) e ainda assim lembrar dos principais comandos disponíveis, sem necessitar consultar manuais de operação? • velocidade na execução das tarefas: quanto maior a velocidade de processamento da máquina utilizada e a performance dos algoritmos, maior será a usabilidade do sistema; • satisfação subjetiva: como o usuário sente-se ao utilizar o sistema? Por exemplo, o grau de satisfação do usuário estará diretamente relacionado à diversão proporcionada por um sistema de entretenimento; Página 79 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
• mensagens de erros consistentes: mensagem que realmente informem ao usuário o que foi feito errado, onde está o erro e ofereça a possibilidade de corrigi-lo; • robustez: em poucas palavras é a preparação do sistema para evitar/tolerar erros do usuário. O desenvolvimento da interface deve ser um processo criterioso a m de minimizar todas as possibilidades de erro. Como é praticamente impossível prever todas as ações do usuário que podem ocasionar erros, torna-se muito importante que o sistema possua mensagens de erro consistentes. Para um sistema ser robusto ele deve atender o princípio da: • observabilidade: habilidade do usuário avaliar o estado interno do sistema referente a sua representação perceptível, por exemplo, a navegabilidade; • possibilidade de recuperação: habilidade do usuário tomar ação corretiva uma vez que um erro seja reconhecido, como, por exemplo, Undo e Lixeira no caso de arquivos removidos acidentalmente. Note que robustez não é somente possibilidade de recuperação, por isso descartamos da alternativa D; • compreensibilidade: como o usuário percebe a relação de comunicação com o sistema, isto é, o grau de estabilidade; • conformidade de tarefas: qualidade com que um serviço do sistema dá suporte a todas as tarefas que o usuário deseja realizar; Do exposto acima, podemos concluir facilmente que a alternativa A está CORRETA. Candidato, se você ainda estiver se perguntando o que levaria uma empresa a investir em usabilidade, recomendamos que leia o restante do comentário. É preciso saber que a aceitabilidade de um produto está divida entre a aceitabilidade social e a aceitabilidade prática. A aceitabilidade social diz respeito à quão bem recebido um produto será em uma sociedade, o que é fundamental na determinação do sucesso ou do fracasso de um determinado produto, isso porque, quanto melhor aceito for um produto socialmente, maior será o número de pessoas que o adquirirá. Entretanto somente a aceitabilidade social não é su ciente para sua aquisição. Sem a aceitabilidade prática, de nada vale a aceitabilidade social. A aceitabilidade prática relaciona-se a fatores tais como a utilidade, o custo, a compatibilidade e a con abilidade. O fator utilidade, por sua vez, relaciona-se à funcionalidade oferecida pelo produto, assim como a usabilidade que esse produto oferece. Dessa forma, pode-se perceber que sem usabilidade a aceitabilidade do sistema é abalada, pois o produto, embora possivelmente ofereça diversas funcionalidades, não oferece uma forma fácil de acessá-la, o que pode torná-lo inútil. Sendo o produto inútil, a aceitabilidade prática não se efetua e, por sua vez, a aceitabilidade do sistema também não. Portanto, aqueles que não investem em usabilidade correm riscos consideráveis, como o de perder na comparação com um outro produto submetido às práticas de usabilidade. Além disso, quando não se investe em usabilidade é quase certo que o produto apresentado tenha que retornar aos laboratórios de desenvolvimento, para corrigir erros que poderiam ter sido detectados através da prática dos métodos de usabilidade.
Página 80 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 32. Assuntos relacionados: volvimento Formal,
Volume 9 Edição 1
Engenharia de Software, Modelo de Processo de Software, Desen-
Banca: ESAF Instituição: Controladoria-Geral da União (CGU) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 42
Um modelo de processo de software é uma representação abstrata de um processo de software. Assinale a opção que identi ca um dos modelos de processo de software. (a). Análise e de nição de requisitos. (b). Projeto de sistemas e de software. (c). Análise e projeto estruturado. (d). Análise e projeto orientado a objetos. (e). Desenvolvimento formal de sistemas.
Solução: (A) ERRADA A análise e a de nição de requisitos são etapas/atividades de processos de software que tem como objetivo identi car as necessidades (funcionalidades) que o sistema deve implementar, além de suas restrições. O ator responsável por essa atividade é o analista de sistema. O analista através de entrevistas, questionários e análise de documento identi ca as funcionalidade juntamente com o cliente ou usuário nal. Depois de reunidas as informações são avaliadas/interpretadas e organizadas em um Documento Conceitual do Sistema. A organização das informações implica na estruturação dos requisitos correspondentes o seu tipo (requisitos funcionais, requisitos não funcionais, requisitos de domínio). (B) ERRADA O projeto de software é o processo de transformar os documentos conceituais do sistema em uma especi cação de uma solução. O projeto de software utiliza a especi cação e os modelos de requisitos gerados na fase de análise para se de nir o problema. Com os documentos referentes aos requisitos interpretados em mãos o projetista indicará soluções para o problema. A solução que satis zer completamente os requisitos sobre as funcionalidades requeridas pelo cliente é construída. (C) ERRADA A análise estrutura, como todos os métodos de análise de requisitos de software, é uma atividade de construção de modelos. Usando uma notação que é própria para atividade de análise estruturada, são criados modelos que representam o uxo e informações de domínio. O analista divide o sistema em uma parte que representa suas funcionais (comportamentais) e em uma parte que representa o domínio do sistema. Durante a análise estrutura são criadas representações grá cas e diagramas como o Diagrama de Fluxo de Dados e o Modelo Comportamental.
Página 81 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
(D) ERRADA A Análise Orientada a Objeto (AOO) baseia-se em conceitos de objetos, atributos, classes e membros. A AOO de ni os objetos de um problema a partir dos atributos que descrevem um objeto para incluí-lo no modelo de análise. São os atributos que de nem o objeto - que esclarecem aquilo que o objeto signi ca no contexto do problema. O método de análise de requisitos de software OO (Orientado a Objeto) possibilita que o analista modele um problema ao representar classes, objetos, atributos e operações como os componentes da modelagem OO. O projeto orientado a objeto (POO) cria uma representação do domínio de problema do mundo real e modela um domínio de solução que é o software. O POO interliga objetos de dados e operações de processamento de uma forma que a informação e o processamento seja um único elemento (objeto), e não só o processamento com no projeto estruturado. (E) CORRETA O Desenvolvimento Formal de Sistema (DFS) abrange um conjunto de atividades que levam a especi cação matemática formal de software de computador. O DFS especi ca, desenvolve e executa veri cações do sistema baseado na aplicação de uma rigorosa notação matemática. A construção do produto software é baseada na especi cação matemática do sistema e podem ser veri cado apresentado argumentos matemáticos e mostrando que eles atendem a suas especi cações. Apesar de não vir a ser uma abordagem de uso geral, o modelo de transformação formal oferece a promessa de software livres de defeitos. Atividades envolvida no processo de software desenvolvimento formal são:
• De nição dos requisitos: de nição das funcionalidades desejadas; • Especi cação formal: detalhamento dos requisitos funcionais; • Transformação formal: mapeamento dos requisitos (detalhados) em um modelo matemático; • Integração e teste de Sistema: implementação do modelo e teste utilizando alguma linguagem de programação. Esse processo de software é geralmente aplicado a sistema que possuem requisitos críticos de segurança, isso porque o sistema deve ser livre de falhas. Isso é obtido pela modelagem matemática. Concluindo, todos os itens descritos acima, análise e de nição de requisitos, análise estruturada e orientada a objeto e projeto de software são elementos da modelagem de processo de software. O único processo de software descrito acima é o Desenvolvimento Formal de Sistema. Logo, a questão correta é a letra E.
Página 82 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 33. Assuntos relacionados: Espiral,
Volume 9 Edição 1
Engenharia de Software, Modelo de Processo de Software, Modelo
Banca: ESAF Instituição: Controladoria-Geral da União (CGU) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 44
No modelo de desenvolvimento em espiral, cada ciclo da espiral representa uma fase do processo de software. Nesse modelo, a atividade que obrigatoriamente estará presente em todos os ciclos é: (a). Planejamento de desenvolvimento. (b). Análise de requisitos. (c). Teste de unidade. (d). Análise, Projeto, Implementação e Teste. (e). Análise de riscos.
Solução: O modelo de desenvolvimento em espiral é um processo de software que agrupa as melhores características dos modelos de software cascata e prototipação. As propriedades combinadas são o controle sequencial para descrever o uxo organizado de atividades que são executadas e a características de iteratividade que o modelo de prototipação trabalha iteração com o cliente para o re namento dos requisitos e correção de requisitos mal interpretados. Além dessas características, o modelo espiral adiciona uma nova atividade análise dos riscos que é exigida em todos os estágios (ciclos) do projeto. Este novo elemento se executado corretamente proporciona o desenvolvimento do projeto sem a ocorrência de fortes impactos sobre seu uxo de execução do projeto com situações problemáticas. A partir destes elementos, o modelo espiral obtém o desenvolvimento rápido de novas versões do software/sistema partindo de um conjunto de funcionalidades básicas até se tornar um software completo. Para tanto, o modelo espiral segue um conjunto de 6 atividades como descrito e apresentado na Figura 9.
Figura 9: representação do modelo de desenvolvimento em espiral.
Página 83 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
• Planejamento: determinação dos objetivos, alternativas e restrições; • Análise de riscos: análise de alternativas e identi cação/resolução dos riscos; • Modelagem: modelagem das funcionalidades que serão adicionadas nesse estágio (ciclo) do projeto; • Construção: implementação do sistema em um linguagem de programação resultando numa versão de software e aplicação de testes sobre essa nova versão; • Implantação: instalação da versão corrente de um determinado estágio do projeto e retorno da satisfação do cliente; • Comunicação: avaliação dos resultados da engenharia. O modelo espiral é um método de desenvolvimento de sistemas e software de grande porte. Como o software evoluí à medida que as atividades avançam, o desenvolvedor e o cliente re nam melhor os requisitos e reagem aos riscos de cada nível evolucionário. Concluindo, para que este processo de software tenha sucesso ao nalizar um projeto é necessário que em cada iteração ou nível evolucionário a etapa de análise de riscos deve ser executada. Portanto, a questão correta é a letra E.
Página 84 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 34. Assuntos relacionados: Sistema,
Volume 9 Edição 1
Engenharia de Software, Requisitos de Usuário, Requisitos de
Banca: ESAF Instituição: Controladoria-Geral da União (CGU) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 45
Requisitos são capacidades e condições às quais o sistema e em termos mais amplos, o projeto deve atender. Entre as diversas classi cações e tipos de requisitos, encontramos requisitos do usuário, requisitos de sistema e especi cação de projeto de software. Assinale a opção que trata de requisitos de usuário. (a). O usuário deve dispor de recursos para de nir o tipo de arquivos externos. (b). O software deve oferecer um meio de representar e acessar arquivos externos criados por outras ferramentas. (c). Cada tipo de arquivo externo pode ter uma ferramenta associada que pode ser aplicada a ele. (d). Cada tipo de arquivo externo pode ser representado com um ícone especí co na tela do usuário. (e). Devem ser fornecidos recursos para o ícone que representa um arquivo externo, a ser de nido pelo usuário.
Solução: Requisitos são condições que descrevem o comportamento exigido do sistema de software após a sua parcial ou completa implementação. Os primeiros requisitos de um sistema são de nidos pelo usuário a partir de uma declaração abstrata das funcionalidades requeridas pelo mesmo. Outro tipo de requisito é o de sistema (requisitos de sistema) que incorpora os requisitos de usuário, porém o detalhamento dos procedimentos executados são mais especi cados seguindo um padrão de organização das funções de nidas. Os requisitos de usuários e de sistemas podem ser de nidos da seguinte forma:
• Requisitos do usuário: são descrições em linguagem natural (ou formulário e diagramas) sobre o que o sistema deve fazer. Esses requisitos explicam as funcionalidades que o sistema deve fornecer, além, das restrições sobre o que o sistema não deve fazer. As descrições do usuário devem apresentar o comportamento do sistema numa ótica de usuário sem muitos detalhes técnicos; • Requisitos de sistema: são as declarações apresentadas pelo usuário re nadas até chegar em uma descrição mais detalhada. Os requisitos de sistema são utilizados pelos engenheiros de software para a elaboração do projeto de sistema. Portanto, os requisitos de sistema devem determinar o que o sistema faz e não como ele será implementado. Os requisitos de usuário de sistema podem ser divididos em requisitos funcionais e nãofuncionais. Resumidamente, os requisitos funcionais descrevem as funcionalidades que o sistema deve apresentar. Já os requisitos não-funcionais referem-se às propriedades desejadas do sistema, por exemplo, tempo de resposta, con abilidade do sistema. É claro, que estes requisitos devem ser expostos em uma linguagem de usuário e não em termos técnicos quando relacionados aos requisitos de usuários. Em contra-partida, caso sejam requisitos de Página 85 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
sistema devem possuir um nível de detalhamento mais técnico. Depois da apresentação conceitual sobre os tipos de requisitos podemos ter certeza que o requisito de usuário deste problema é a descrição: O software deve oferecer um meio de representar e acessar arquivos externos criados por outras ferramentas, por ser de nido de forma não-técnica e pouco detalhe. Logo, a questão correta é a letra B.
Página 86 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 35. Assuntos relacionados:
Volume 9 Edição 1
Banco de Dados, SQL, Data Manipulation Language (DML),
Data De nition Language (DDL), Data Control Language (DCL),
Banca: ESAF Instituição: Controladoria-Geral da União (CGU) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 51
Em um banco de dados que utiliza a linguagem SQL para de nição, manipulação e controle de dados, é correto a rmar que os comandos (a). CREATE, DROP e INSERT fazem parte da DML (Linguagem de Manipulação de Dados). (b). GRANT e REVOKE fazem parte da DCL (Linguagem de Controle de Dados). (c). INSERT, UPDATE e SELECT fazem parte da DDL (Linguagem de De nição de Dados). (d). ALTER, DELETE e REVOKE fazem parte da DML (Linguagem de Manipulação de Dados). (e). CREATE, GRANT e DROP fazem parte da DCL (Linguagem de Controle de Dados).
Solução: Os Bancos de Dados, em geral, possuem diversos tipos de usuários, desde administradores de bancos de dados (DBAs) até usuários casuais, passando por projetistas de bancos de dados e programadores/analistas de sistemas. Para cada uma desta variedade de usuários, o Sistema de Gerenciamento de Banco de Dados (SGBD) deve proporcionar linguagens e interfaces apropriadas. Em muitos SGBDs onde não há uma clara separação entre os níveis interno e conceitual, uma linguagem chamada Linguagem de De nição de Dados (DDL Data De nition Language) é utilizada pelo DBA e pelos projetistas para de nir ambos os esquemas. Em SGBDs onde é mantida uma separação clara entre os dois níveis, a DDL é utilizada para especi car apenas o esquema conceitual e uma outra linguagem, a Linguagem de De nição de Armazenamento (SDL Storage De nition Language), é utilizada para especi car o esquema interno. Para especi car visões de usuários e seus mapeamentos para o esquema conceitual, a Linguagem de De nição de Visão (VDL View De nition Language). Entretanto, na maioria dos SGBDs a DDL é utilizada para de nir tanto o esquema conceitual quanto o esquema externo. Os SGBDs oferecem um conjunto de operações para manipulação de dados, como pesquisa, inserção, exclusão e modi cação, através de uma linguagem conhecido por Linguagem de Manipulação de Dados (DML Data Manipulation Language). A SQL (Structured Query Language Linguagem de Consulta Estruturada) representa uma combinação de DDL, VDL e DML, além de diretivas para especi car restrições e outras características. A SDL foi um componente da SQL em versões antigas, mas foi removida da linguagem para mantê-la apenas nos níveis conceitual e externo.
Página 87 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
Em SQL, a DML é composta pelos comandos INSERT, UPDATE e DELETE, que são utilizados para inserir, atualizar e excluir registros de uma tabela, respectivamente. Já a DDL possui os comandos básicos CREATE, ALTER e DROP que criam, alteram ou apagam objetos (tabelas, índices e visões) do banco de dados. Para alguns autores, os comandos CREATE VIEW e DROP VIEW comporiam a VDL de SQL. Um outro grupo de comandos de SQL serve para controlar aspectos de autorização de acesso de dados por usuários. Este grupo é chamado de DCL (Data Control Language Linguagem de Controle de Dados) e é composto pelas diretivas GRANT e REVOKE. A primeira, autoriza um usuário a executar operações e a segunda remove ou restringe o acesso. Tem-se ainda a DTL (Data Transaction Language Linguagem de Transação de Dados) que controla as transações em SQL e é composta por BEGIN WORK, COMMIT e ROLLBACK. A primeira diretiva inicia uma transação e as outras duas nalizam, sendo que COMMIT conclui a execução dos comandos e ROLLBACK desfaz as operações executadas. Embora com apenas um único comando (o comando SELECT), a DQL (Data Query Language Linguagem de Consulta de Dados) é a parte da SQL mais utilizada, permitindo que consultas sejam efetuadas ao banco de dados. Pela teoria exposta, percebe-se que a alternativa b) é a única que apresenta o correto agrupamento de comandos componentes de uma das partes da SQL, sendo a resposta para a questão.
Página 88 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 36. Assuntos relacionados:
Volume 9 Edição 1
Banco de Dados, ACID,
Banca: ESAF Instituição: Controladoria-Geral da União (CGU) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 54
O termo integridade se refere à precisão ou correção de dados. Em um banco de dados relacional, as restrições de integridade têm importância crucial, pois fornecem uma forma de garantir que as mudanças realizadas pelos usuários não resultem na perda de consistência dos dados. Com relação às restrições de integridade, é incorreto a rmar que uma restrição de (a). variável de relação especi ca os valores válidos para uma determinada variável de relação, e é veri cada quando essa variável de relação é atualizada. (b). tipo especi ca os valores válidos para um determinado tipo, e é veri cada durante invocações do seletor correspondente. (c). atributo especi ca os valores válidos para um determinado atributo, e nunca deve ser violada. (d). banco de dados especi ca os valores válidos para um determinado banco de dados, e é veri cada no instante de COMMIT. (e). domínio especi ca que o valor de um atributo não pode pertencer a mais de um domínio.
Solução: Nesta questão, o conceito apresentado de maneira incorreta é o descrito na alternativa e, dado que a descrição apresentada descreve, de maneira errônea, o que é uma restrição de domínio. Uma restrição de domínio é uma restrição que especi ca que, dentro de cada tupla do banco de dados relacional, o valor de cada atributo A deve ser um valor pertencente ao domínio de A. Em outras palavras, uma restrição de domínio testa os valores inseridos no banco de dados e as consultas realizadas para garantir que os valores inseridos sejam condizentes com os domínios das variáveis armazenadas. O domínio de um atributo envolve seu tipo de dados, o intervalo de valores possíveis que esse atributo pode possuir, seu tamanho máximo, e se existe a possibilidade de valores nulos em A. Os tipos de dados associados aos domínios incluem os tipos de dados numéricos padrão (como inteiros e números reais de representados por ponto utuante), caracteres, booleanos, strings de comprimento xo e variável, data, hora, timestamp e, em alguns casos, moeda. É possível, também, como citado, especi car subconjuntos de valores de um tipo de dado ou por uma enumeração de valores. Um domínio, por sua vez, é um conjunto de valores atômicos. Por atômico entendemos que cada valor no domínio é indivisível no que diz respeito ao modelo relacional. Um método comum para a especi cação de um domínio é de nir um tipo de dados do qual os valores de dados que formam o domínio sejam retirados. Também é útil especi car um nome para esse domínio, de modo a ajudar na interpretação de seus valores. Alguns exemplos de domínio são (com o nome do domínio à esquerda e sua descrição à direita): Página 89 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
• Número de CPF: o conjunto de onze dígitos válidos do número de CPF; • Média de pontos: possíveis valores de médias computadas para um determinado aluno. As médias devem ser não-negativas e inferiores à média máxima atingível. Em SQL é possível criar um domínio através do comando CREATE DOMAIN . No exemplo abaixo, é exibido um comando para a criação do domínio NUMERO_CPF em SQL:
CREATE DOMAIN NUMERO_CPF AS CHAR(11);
Página 90 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
37. Assuntos relacionados: UML, Diagrama de Componentes, Diagrama Diagrama de Objetos, Diagrama de Atividades, Diagrama de Caso de Uso,
de Colaboração,
Banca: ESAF Instituição: Secretaria do Tesouro Nacional (STN) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 5
Em UML (Uni ed Modeling Language), o diagrama cujo foco é a organização estrutural de objetos que enviam e recebem mensagens, exibindo assim, tais objetos e as ligações entre eles, bem como as respectivas mensagens, é o diagrama de (a). componentes. (b). colaboração. (c). objetos. (d). atividades. (e). caso de uso.
Solução: A Linguagem Uni cada de Modelagem (UML - Uni ed Modelling Language) é uma linguagem de modelagem padronizada de propósito geral no campo da Engenharia de Software. A UML inclui um conjunto de técnicas de notação grá ca pra criar modelos visuais de sistemas de software. A UML não é uma metodologia de desenvolvimento. Ela é usada para especi car, visualizar, modi car, construir e documentar os artefatos de um sistema de software orientado a objetos. Oferece uma forma padronizada de visualizar a arquitetura de um sistema, incluindo elementos tais como:
• Atores; • Processos de negócio; • Componentes (lógicos); • Atividades; • De nições de linguagem de programação; • Esquemas de banco de dados; • Componentes de software reutilizáveis. Os diagramas UML podem representar duas visões de um modelo de sistema: a Visão Estática (ou Estrutural) e a Visão Dinâmica (ou Comportamental). A primeira enfatiza as estruturas estáticas do sistema utilizando objetos, atributos, operações e relacionamentos. A segunda concentra-se no comportamento dinâmico, apresentando colaborações entre os objetos, bem como suas mudanças de estado. Em sua versão 2.0, a UML possuía os seguintes diagramas:
• Diagramas Estruturais:
Diagrama de Classes; Diagrama de Objetos; Página 91 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
Diagrama de Componentes; Diagrama de Estrutura Composta; Diagrama de Distribuição. • Diagramas de Comportamento:
Diagrama de Caso de Uso; Diagrama de Estado (ou Diagrama de Transição de Estados); Diagrama de Atividade; Diagramas de Interação; Diagrama de Sequência; Diagrama de Comunicação (ou Diagrama de Colaboração); Diagrama de Visão Geral de Interação; Diagrama Temporal;
Bom, chegou a hora de abordarmos cada diagrama apresentado nas alternativas. (A) ERRADA Na verdade, um diagrama de componente mostra os componentes do software (por exemplo, componentes CORBA, Java Beans ou seções do sistema que são claramente distintas) e os artefatos de que eles são feitos, como arquivos de código-fonte, bibliotecas de programação ou tabelas de bancos de dados relacionais. (B) CORRETA Este diagrama mudou de nome, agora (UML 2.0) ele é chamado de diagrama de comunicação (o nome já nos sugere que a alternativa está correta). Ele apresenta as interações existentes entre objetos em uma situação especí ca, o que o torna um pouco similar ao diagrama de sequência. Enquanto um diagrama de colaboração apresenta mais claramente quais objetos se relacionam entre si, um diagrama de sequência enfatiza como as interações entre objetos ocorrem ao longo do tempo. Por este diagrama apresentar todas as características do enunciado, esta é a alternativa CORRETA. (C) ERRADA O diagrama de objetos é uma variação do diagrama de classes, utilizando inclusive a mesma notação. A única diferença é que o diagrama de objetos mostra os objetos que foram instanciados (os atributos dos objetos possuem valores) das classes. Desse modo, o diagrama de objetos representa um per l do sistema em um determinado momento de sua execução. De forma simpli cada, podemos entender o diagrama de objetos como uma instância do diagrama de classes. (D) ERRADA Um diagrama de atividades é um diagrama de estados em que todos ou a grande maioria dos estados representam execuções de ações (atividades internas ao sistema). Portanto, Página 92 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
ele é um grá co de uxo (lembre-se disso, Candidato!) que evidencia os controles e as execuções das atividades. Seus principais elementos são:
• 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. (E) ERRADA Diagrama de Caso de Uso é um dos principais diagramas da UML (Uni ed Modeling Language). Ele descreve, de forma grá ca e intuitiva, relacionamentos e dependências entre um grupo de casos de uso e os atores que interagem com o sistema. O ponto de vista assumido para essa descrição é sempre o dos atores envolvidos. Lembre-se que um ator é uma entidade externa ao sistema. Ele é representado gra camente por meio de um boneco e um rótulo com o seu nome. Geralmente, é um ator que inicia um caso de uso. Alguns exemplos de atores são: usuários, outros sistemas que fazem interface com o sistema que está sendo modelado e eventos externos. Já um caso de uso é um conjunto de atividades do sistema que produz um resultado concreto e tangível. Ou seja, ele de ne uma grande função do sistema. Gra camente, casos de uso são representados por elipses com seus respectivos rótulos. Resumindo, esse tipo de diagrama descreve interações entre os atores e o sistema em si.
Página 93 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 38. Assuntos relacionados:
Volume 9 Edição 1
Engenharia de Software, UML, Hierarquia de Generalização,
Banca: ESAF Instituição: Secretaria do Tesouro Nacional (STN) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 6
Em hierarquias de generalização UML, a característica na qual uma classe herda tanto propriedades e relacionamentos de sua superclasse imediata quanto de suas superclasses não-imediatas (aquelas em um nível mais alto na hierarquia) é denominada (a). transitividade. (b). simetria. (c). assimetria. (d). herança múltipla. (e). associação.
Solução: A UML (Uni ed Modeling Language ) é uma linguagem visual para especi cação, construção e documentação de softwares baseados na modelagem orientada a objeto. A UML não é um método de desenvolvimento, mas um modelo de linguagem utilizada para que a modelagem de sistemas seja consistência, simples, compreensível e de fácil comunicação com outros sistemas. O diagrama de casos de uso é composto por atores, por casos de uso e por relacionamentos. Os atores representam o papel de uma entidade externa ao sistema como um usuário, um hardware, ou outro sistema que interage com o sistema modelado. Os casos de uso são processos ou funções que o sistema deve realizar de forma automática ou manual. Os relacionamentos podem ocorrem entre casos de usos, entre atores e casos de uso e entre atores. Os tipos de relacionamentos entre casos de uso são a extensão, a inclusão e a generalização. Os tipos de relacionamento entre atores e casos de usos é a associação. E para relacionamento entre atores é a generalização. No UML, as classes podem ser organizadas em uma hierarquia onde uma classe (superclasse) é uma generalização de uma ou mais classes (subclasses). Uma subclasse herda os atributos e operações da superclasse e pode adicionar novos métodos. Em uma hierarquia de generalização, as subclasses herdam todas as propriedades de sua superclasse. A seguir analisamos as alternativas da questão: (A) CORRETA Uma das características de hierarquia de generalização é a transitividade, onde uma classe em uma hierarquia herda propriedades e relacionamentos de todos os seus ancestrais. Isto é, herda tanto propriedades e relacionamentos de sua superclasse imediata quanto de suas
Página 94 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
superclasses não-imediatas (aquelas em um nível mais alto na hierarquia). Portanto, a alternativa está correta. (B) ERRADA O termo simetria não está relacionado a UML. Portanto, esta alternativa está errada. (C) ERRADA Outra característica da hierarquia de generalização é a assimetria, onde dadas duas classes A e B, se A for uma generalização de B, então B não pode ser uma generalização de A. Ou seja, não pode haver ciclos em uma hierarquia de generalização. Esta alternativa está errada, pois não confere com a descrição solicitada no enunciado. (D) ERRADA Em uma herança múltipla, uma classe pode ter mais de uma superclasse. Tal classe herda de todas a suas superclasses. O uso de herança múltipla pode levar a con itos quando atributos e operações de superclasses diferentes tem o mesmo nome e semânticas diferentes. Esta alternativa está errada, pois não confere com a descrição solicitada no enunciado. (E) ERRADA A associação é um mecanismo que permite objetos comunicarem entre si, isto é, um relacionamento que descreve uma série de ligações, onde a ligação é de nida como a semântica entre as duplas de objetos ligados. Esta alternativa está errada, pois não confere com a descrição solicitada no enunciado.
Página 95 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 39. Assuntos relacionados:
Volume 9 Edição 1
CMM, Níveis de Maturidade,
Banca: ESAF Instituição: Secretaria do Tesouro Nacional (STN) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 9
O nível 5 CMM (Capability Maturity Model) é caracterizado por (a). representar um estado caótico. (b). não seguir qualquer padronização. (c). possuir apenas produto gerenciado quantitativamente. (d). possuir apenas processo gerenciado qualitativamente. (e). garantir melhoria contínua e gerenciamento do processo.
Solução: Um modelo de maturidade é uma coleção bem estruturada de elementos cujo objetivo é descrever determinados aspectos da maturidade de uma organização. Para o desenvolvimento de software, existe o CMM (Capabitlity Maturity Model), ou SW-CMM (Capabitlity Maturity Model for Software), que pode ser entendido como o Modelo de Maturidade da Capacidade . Desenvolvido pelo SEI (Software Engineering Institute) desde 1986, o CMM descreve os princípios e práticas que formam a base da maturidade do processo de software, tendo por objetivo auxiliar as organizações de software a melhorar a maturidade de seus processos em termos de um caminho evolutivo partindo de processos caóticos e eventuais em direção a processos de software maduros e disciplinados. Neste contexto, o CMM não pode ser classi cado como uma metodologia, já que indica apenas o que deve ser efeito para alcançar a maturidade dos processos, sem indicar como efetuar as atividades necessárias para atingir esse intento. Devido a este fato, é independente da tecnologia a ser utilizada. Este modelo é organizado em 5 níveis de maturidade: Inicial, Repetível, De nido, Gerenciado e Otimizado (ou Otimizando). A seguir as principais características de cada nível:
• Inicial. O processo de software é caracterizado como eventual (ad hoc) e, ocasionalmente, até mesmo caótico. Poucos processos estão de nidos e o sucesso depende de esforços individuais; • Repetível. Processos básicos de gerenciamento de projeto estão estabelecidos para avaliar custos, cronogramas e funcionalidades. A disciplina de processos necessária está de nida para possibilitar a repetição de sucesso em projetos com aplicações similares; • De nido. O processo de software tanto para atividades de gerenciamento quanto para atividades de engenharia está documentado, padronizado e integrado a um processo de software padrão da organização. Todos os projetos utilizam uma versão aprovada e personalizada do processo de software padrão da organização para o desenvolvimento e a manutenção de softwares; • Gerenciado. Medidas detalhadas do processo de software e da qualidade do produto são coletadas. Tanto o processo de software quanto os produtos são quantitativamente entendidos e controlados; • Otimizando. Melhorias contínuas de processo são possibilitadas pelos retornos quantitativos oriundos do próprio processo e, inclusive, de ideias e tecnologias inovadoras. Página 96 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
Os itens a) e b) da questão apresentam características essencialmente pertencentes ao nível 1 CMM, sendo que o nível 2 ainda não possui uma padronização propriamente dita para todos os processos da organização. Os itens c) e d) são apresentados separadamente para confundir o candidato: a gerência da qualidade (tanto do processo quanto do produto) é traduzida em um resultado quantitativo, não havendo lógica nos termos gerenciamento quantitativo e gerenciamento qualitativo no contexto do CMM. Os nível 1, 2 e 3 não implementam gerência da qualidade, tarefa que passa a ser desempenhada a partir do nível 4 CMM. O nível 5 CMM caracteriza-se pela busca da melhoria contínua dos processos através de seu gerenciamento. A assertiva que condiz com a teoria exposta é a do item e).
Página 97 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 40. Assuntos relacionados:
Volume 9 Edição 1
Banco de Dados, Categorias de Linguages de Banco de Dados,
Data De nition Language (DDL), Data Manipulation Language (DML), Data Control Language (DCL), Data Query Language (DQL), Transaction Control Language (TCL), SQL,
Banca: ESAF Instituição: Secretaria do Tesouro Nacional (STN) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 11
Um SBGD (Sistema Gerenciador de Bancos de Dados) possui um compilador para uma determinada linguagem, cuja função é o processamento de declarações, a m de identi car as descrições dos componentes do esquema conceitual do Banco de Dados. Tal linguagem é de (a). consulta estrutura (SQL). (b). de nição de armazenamento (SDL). (c). manipulação de dados (DML). (d). de nição de visão (VDL). (e). de nição de dados (DDL).
Solução: Os sistemas gerenciadores de bancos de dados utilizam diferentes linguagens para de nir e manipular o banco de dados, além de realizar outras atividades. Tais linguagens podem ser classi cadas diversas categorias, entre as quais as mais populares são:
• DDL (Data De nition Language) ou (Linguagem de De nição de Dados); • DML (Data Manipulation Language) ou (Linguagem de Manipulação de Dados); • DCL (Data Control Language) ou (Linguagem de Controle de Dados); • DQL (Data Query Language) ou (Linguagem de Consulta de Dados); • TCL (Transaction Control Language) ou (Linguagem de Controle de Transações). Para de nir e exempli car cada uma das categorias, vamos nos ater aos bancos de dados relacionais, pois são estes os mais populares e cobrados em provas de concursos. No entanto, vale ressaltar que estas e outras categorias de linguagens de SGBDs existem para as demais tecnologias de bancos de dados, como a hierárquica, a de rede, a orientada a objetos etc.
DDL (Data Defnition Language) Em termos conceituais, a DDL contém o conjunto de comandos utilizados para descrever e criar a estrutura do banco de dados. Os comandos que compõe a DDL são os que permitem criar novas tabelas, views, índices, e outros elementos de dados. Exemplos típicos de comandos DDL são mostrados a seguir.
CREATE TABLE (Cria uma tabela) DROP TABLE (Exlui uma tabela) ALTER TABLE ADD COLUMN (Adiciona uma coluna a uma tabela) CREATE INDEX (Cria um índice) ALTER INDEX (Altera um índice) CREATE VIEW (Cria uma view) Página 98 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
DML (Data Manipulation Language) A DML contém o conjunto de comandos utilizados para manipular os dados, o que deve ser entendido como a criação de novos registros nas tabelas, além da atualização e da exclusão de registros já existentes. Os comandos que compõe a DML são, basicamente, os seguintes.
INSERT (Cria um novo registro de dados) UPDATE (Atualiza um registro de dados) DELETE (Exclui um registro de dados)
DCL (Data Control Language) Os comandos que compõe a DCL têm por nalidade, basicamente, permitir o controle de aspectos não funcionais do banco de dados, como a segurança dos dados. São os comandos DCL que permitem a criação e exclusão de usuários, a criação de per s de acesso, a alteração de senhas, e as operações de concessão e revogação de acesso aos diversos elementos de dados. Exemplos típicos de comandos DCL são mostrados a seguir.
GRANT (Autoriza ao usuário executar uma operação sobre algum elemento de dado) REVOKE (Revoga do usuário o direito de executar uma operação) ALTER PASSWORD (Altera a senha de um usuário) CREATE ROLE (Cria um perfil de acesso)
DQL (Data Query Language) A DQL é formada pelo conjunto de comandos e operadores que permitem a realização de consultas no banco de dados. No âmbito dos bancos de dados relacionais, o único comando DQL é o SELECT. No entanto, a DQL engloba uma vasta quantidade de cláusulas e operadores, que permite consultar o banco de dados de inúmeras formas. As principais cláusulas da DQL são as seguintes:
FROM (Utilizada para especificar a tabela que se vai selecionar os registros) WHERE (Utilizada para especificar as condições que devem reunir os registros que serão selecionados) GROUP BY (Utilizada para separar os registros selecionados em grupos específicos) HAVING (Expressar a condição que deve ser satisfeita por cada grupo selecionado) ORDER BY (Ordena os registros selecionados) DISTINCT (Selecionar dados sem repetição) Com relação aos operadores lógicos e de comparação, merecem destaque os seguintes:
AND (E lógico) OR (OU lógico) NOT (Negação lógica) < (Menor que) > (Maior que) <> (Diferente de) <= (Menor ou Igual que) >= (Maior ou Igual que) = (Igual a) BETWEEN (Utilizado para especificar um intervalo de valores) LIKE (Utilizado na comparação de padrões de cadeias de caracteres) Página 99 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
Por m, merecem destaque as funções de agregação, que adicionam à DQL a capacidade de agregar os resultados de uma consulta em um único valor. As principais funções de agregação são as seguintes:
AVG (Calcula a COUNT (Calcula SUM (Calcula a MAX (Calcula o MIN (Calcula o
média dos valores de um campo determinado) o número de registros da seleção) soma de todos os valores de um campo determinado) valor mais alto de um campo determinado) menor valor de um campo determinado)
TCL (Transaction Control Language) Finalizando as categorias de linguagens, temos a TCL, cujos comandos permitem controlar a execução das transações em um SGBD. Os comandos TCL mais comuns são os seguintes:
BEGIN TRANSACTION (Define o início de uma transação de banco de dados) COMMIT (Confirma todas as mudanças permanentemente) ROLLBACK (Descarta todas as mudanças nos dados desde que o último COMMIT) SET TRANSACTION (Modifica opções da transação, como o nível de isolamento) Diante de toda a teoria exposta, podemos a rmar que a resposta da questão é a alternativa E DDL (Data De nition Language).
Página 100 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 41. Assuntos relacionados: SGBD, Otimizador (DML), Data De nition Language (DDL),
Volume 9 Edição 1
de Consultas, Data Manipulation Language
Banca: ESAF Instituição: Secretaria do Tesouro Nacional (STN) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 13
Em um SGBD (Sistema Gerenciador de Bancos de Dados), as requisições de manipulação de dados são processadas por um componente capaz de determinar uma maneira e ciente de implementá-las. Tal componente é o (a). processador da linguagem de manipulação de dados (DML). (b). gerenciador tem tempo de execução. (c). otimizador. (d). processador da linguagem de de nição de dados (DDL). (e). esquema físico.
Solução: Um Sistema Gerenciador de Bancos de Dados (SGBD) é composto por vários módulos, com atribuições especí cas. A Linguagem de De nição de Dados (DDL Data De nition Language), responsável por construções declarativas dos objetos da base de dados, precisa de um processador de DDL (ou compilador) que lhe interprete os comandos. Tal compilador processa as de nições de esquema, especi cados na DDL, e armazena descrições dos esquemas (meta-dados) no catálogo do SGBD. Da mesma forma, a Linguagem de Manipulação de Dados (DML Data Manipulation Language), que permite o processamento ou manipulação dos dados armazenados, faz uso de um processador de DML dedicado à tarefa de compilar os comandos DML em códigos-objeto para acesso à base de dados. Essas requisições de acesso são gerenciadas pelo processador da base de dados em tempo de execução (runtime database processor), que recebe as operações de atualização ou obtenção de dados e, quando necessário, transporta tais dados para fora do banco de dados, em atendimento às consultas efetuadas. Um consulta expressa em uma linguagem de alto-nível, como a linguagem SQL, deve primeiramente ser escaneada, parseada e validada. O processo de escaneamento identi ca os tokens da linguagem no texto da consulta, ao passo que o parser veri ca a sintaxe da pesquisa para determinar se houve uma formulação segundo as regras gramaticais impostas. A etapa de validação veri ca se os atributos e relações presentes na consulta são válidos e se fazem sentido semanticamente face ao esquema do banco de dados. Em seguida, uma estratégia de execução para recuperação do resultado da consulta precisa ser de nida. Geralmente, uma consulta possui diversas estratégias de execução. O módulo otimizador de consultas é responsável por elaborar um plano de execução mais adequado para obter o resultado desejado da forma mais e ciente possível. As quatro primeiras alternativas apresentadas como possíveis respostas à questão apresentam elementos que constituem um SGBD, sendo que o item c) exibe a resposta correta, conforme à teoria explanada. A alternativa e) exibe não um elemento de SGBD, mas sim um componente da arquitetura de um banco de dados baseada em três esquemas: esquema
Página 101 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
físico (ou esquema interno, ou nível interno), esquema conceitual (ou nível conceitual) e esquema(s) externo(s) (ou nível de visão). O objetivo dessa arquitetura em três esquemas é separar as aplicações de usuário da estrutura física do banco de dados.
Página 102 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 42. Assuntos relacionados:
Volume 9 Edição 1
Banco de Dados, ACID,
Banca: ESAF Instituição: Secretaria do Tesouro Nacional (STN) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 14
Se uma restrição de integridade, classi cada como restrição de banco de dados, ocorrer no momento de um COMMIT de uma transação, imediatamente é executado um (a). DROP. (b). ROLLBACK. (c). BEGIN_TRANSACTION. (d). END_TRANSACTION. (e). LOCKING.
Solução: A integridade é a qualidade de garantir que os dados em um banco de dados estejam corretos. Geralmente, as restrições de integridade são de nições de valores permitidos de serem atribuídos a determinadas variáveis. No momento de uma inserção de dados, ou mesmo de uma atualização em dados já existentes, as restrições de integridade devem ser respeitadas e, para tanto, veri cações são efetuadas antes da inserção/atualização serem concretizadas. A questão natural que surge é o momento da veri cação e da consequente execução da operação solicitada (inserção/atualização). A concorrência de operações em um banco de dados, isto é, a execução simultânea de operações sobre uma mesma parte da base de dados disponível, é situação corriqueira a ser tratada por SGBDs (Sistemas de Gerenciamento de Banco de Dados). Essa concorrência sobre a base de dados, se mal gerenciada, pode provocar inconsistências nos dados alterados. Neste contexto, o conceito de transação surge como uma opção de solução ao problema da manutenção da integridade face a concorrência de operações. A transação, isto é, um conjunto de operações sobre uma base de dados, deve possuir 4 características essenciais com o intuito de auxiliar a garantia da integridade dos dados. Uma transação deve ser atômica, ou seja, todas as operações (ou comandos) que a compõem são executadas de uma maneira única (todas as operações são executadas com sucesso ou nenhuma delas é executada). Uma transação deve ser isolada de outras transações e, consequentemente, ser executada de forma independente das demais. Além disso, toda transação precisa ser durável, característica que garante a execução de suas operações mesmo na presença de falhas (inclusive de fornecimento de energia elétrica). E, por m, mas não com menos importância, uma transação deve ser consistente, ou seja, deve fornecer a garantia de consistência dos dados em relação a um conjunto de regras de negócio previamente estabelecidas. Para uma adequada execução, operações de controle sobre as transações são utilizadas. São elas:
• BEGIN_TRANSACTION: sinaliza o início da execução de uma transação; • END_TRANSACTION: determina o término das operações de uma transação. Contudo, a partir deste ponto é necessário veri car se as modi cações introduzidas pela Página 103 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
transação podem ser permanentemente aplicadas à base de dados (comando COMMIT) ou se a transação deve ser abortada (comando ROLLBACK) devido a algum problema ocorrido;
• COMMIT (ou COMMIT_TRANSACTION): indica o término da transação com sucesso, isto é, todas as alterações na base de dados foram executadas e não serão desfeitas; • ROLLBACK (ou ABORT): sinaliza que a transação terminou sem sucesso e nenhuma modi cação na base de dados foi efetuada. Nas opções de resposta fornecidas na questão, os itens b), c) e d) citam operações de transações dentre as quais encontra-se a operação ROLLBACK, resposta para a pergunta, conforme a teoria explanada até aqui. Mesmo de posse da resposta, cabe um comentário sobre os outros dois termos citados dentre as opções de resposta: DROP e LOCKING. O comando DROP faz parte da DDL (Data De nition Language) de um banco de dados, sendo responsável por apagar itens do catálogo do banco em conjunto com outras diretivas, como pode ser observado, por exemplo, no comando DROP TABLE que serve para apagar uma tabela do banco de dados, ou ainda no comando DROP DATABASE que serve para apagar o próprio banco de dados. LOCKING (ou congelamento) é um mecanismo presente em SGBDs para tentar garantir o controle de concorrência. Nada mais é do que a ação, tomada mediante uma transação, de indisponibilizar temporariamente parte da base de dados para as demais transações. É uma atitude que deve ser evitada por propiciar a ocorrência de deadlocks, isto é, impasses gerados por várias transações que disputam recursos e acabam provocando uma dependência circular, sem conseguirem atingirem o nal de suas execuções.
Página 104 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 43. Assuntos relacionados: Banco de Dados, Business Inteligence, Analytical Processing, On-Line Transaction Processing,
Volume 9 Edição 1 Data Warehouse, On-line
Banca: ESAF Instituição: Secretaria do Tesouro Nacional (STN) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 15
Um depósito de dados organizado por assunto, não-volátil, integrado e variável em função do tempo, utilizado para apoiar decisões de gerenciamento, é denominado (a). datawarehouse. (b). gestão do conhecimento. (c). business Intelligence. (d). mineração de dados. (e). OLAP (OnLine Analytical Processing).
Solução: Um candidato atento consegue acerta esta questão com alto grau de con ança mesmo que não conheça muito bem todos os termos envolvidos. Isso porque com uma boa leitura do enunciado e das alternativas, não é muito difícil de perceber que a única alternativa que traz um depósito de dados é a letra A. Para os concursos atuais, que abrangem uma vasta gama de assuntos, esse tipo de análise pode signi car um diferencial importante na conquista de uma vaga. Fique atento! Vamos ao comentário de cada alternativa. (A) CORRETA Um data warehouse (ou armazém de dados) é um sistema computacional utilizado para armazenar uma grande quantidade de informações relacionadas às atividades de uma organização. Em geral, essas informações são obtidas a partir de vários sistemas independentes e são consolidadas em uma base de dados própria, separada das bases de dados operacionais da organização. O desenho da base de dados de um data warehouse favorece a geração de relatórios, a análise de grandes volumes de dados e a obtenção de informações agregadas que podem facilitar tomadas de decisão. As principais características de um data warehouse que devemos manter sempre em mente são as seguintes (justamente as que aparecem no enunciado):
• orientação a assunto: pois geralmente tomadas de decisão requerem agregação de diversas informações em função de um determinado assunto; • integração de dados: como já dito, geralmente um data warehouse integra dados de diversos sistemas, por exemplo de diversos setores da organização. Em geral, essa integração possibilita visões mais amplas das informações, o que é bastante importante para o direcionamento das decisões pela administração das organizações; • não-volátil: a base de dados é fundamentalmente de leitura. Ou seja, os dados apenas são alterados em casos eventuais de correções ou adaptações;
Página 105 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
• variante no tempo: um data warehouse mantém a chamada série histórica dos dados, o que é muito importante para comparações e projeções. Pode-se entender essa séria histórica (horária, diária, semanal, etc.) como uma sequência de fotogra as das informações (fatos) que compõem o data warehouse. (B) ERRADA Gestão de conhecimento não representa uma base de dados. Portanto, esta alternativa deve ser rapidamente desconsiderada. Gestão de conhecimento é uma área de estudos, que vem crescendo muito ultimamente, composta por várias técnicas e teorias que orientam como o conhecimento de um grupo de pessoas ou instituições deve ser gerido. (C) ERRADA Business intelligence (BI) é um termo amplo e abstrato inventado pelo Gartner Group. Ele se refere a métodos utilizados para auxiliar as corporações a tomarem suas decisões em função de dados e informações obtidas por diversos sistemas de informação. Atualmente, por sua capacidade de sumarizar grandes volumes de dados, o data warehouse é o núcleo das principais soluções de BI do mercado. Duas outras ferramentas que podem ser utilizadas na composição de uma solução de BI são: data mart e data mining. Perceba, portanto, que BI não é em si uma base de dados, e sim um conceito muito mais amplo. (D) ERRADA Mineração de dados (data mining) se refere a processos analíticos de exploração de grandes quantidades de informações (geralmente associadas a business intelligence) para se buscar padrões consistentes e/ou relacionamentos entre vários tipos de dados. Perceba novamente que não temos nesta alternativa um base de dados. Ou seja, esta alternativa também deve ser prontamente descartada. (E) ERRADA OLAP (Online Analytical Processing) é um tipo de abordagem que viabiliza consultas e cientes em uma análise multidimensional de dados, por isso muito utilizada em implementações de data warehouse. Esse termo é usado em contraste com o 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, em um ambiente transacional, quase sempre é exigido que a resposta ao usuário seja imediata. Um bom exemplo é quando você acessa um site bancário para realizar uma transferência ou conferir um extrato. Uma demora de alguns segundos é inaceitável. Enquanto as abordagens OLTP são extremamente adequadas em diversas situações, elas se mostram inadequadas em outras. Um exemplo típico é a situação de acesso a informações gerenciais, como a produção de relatórios de vendas, contábeis e nanceiros. É justamente nesse tipo de cenário que a abordagem OLAP é importante. Os bancos de dados que utilizam OLAP são projetados em modelos de dados multidimensionais que possibilitam executar consultas complexas em um tempo muito menor, baseando-se principalmente em desnormalizações e em agregações. Um banco de dados OLAP pode ser armazenado de várias maneiras. Em uma arquitePágina 106 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
tura ROLAP (Relacional), os dados são armazenados em bases de dados relacionais. Já em uma arquitetura MOLAP (Multidimensional), os dados são armazenados em cubos dimensionais, em geral em formatos proprietários. HOLAP (Híbrido) tenta combinar as vantagens de MOLAP e ROLAP, extraindo o que há de melhor de cada abordagem, ou seja, a alta performance do MOLAP e a melhor escalabilidade do ROLAP. Outras siglas são utilizadas para representar arquiteturas, mas são pouco utilizadas: WOLAP (Baseado em Web), DOLAP (Desktop) e RTOLAP (Real-Time). De qualquer forma, OLAP por si só não representa uma base de dados, mesmo apesar desses termos serem correlacionados. É justamente por isso que esta alternativa não pode ser considerada correta.
Página 107 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 44. Assuntos relacionados:
Volume 9 Edição 1
Banco de Dados, Indexação de Registros,
Banca: ESAF Instituição: Secretaria do Tesouro Nacional (STN) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 17
Em termos de Bancos de Dados, a indexação mais adequada para o acesso e ciente aos registros, em consultas que considerem intervalos, para um pequeno número de linhas, corresponde ao uso de índices (a). de junção. (b). de hashing. (c). em árvores B. (d). booleanos. (e). funcionais.
Solução: (A) INCORRETA Um índice de junção é uma estrutura de dados usada para o processamento de consultas de junção (join queries) em bancos de dados. Os índices de junção usam técnicas de pré-computação para aumentar o desempenho do processamento online de consultas e são úteis para conjuntos de dados que são atualizados com pouca frequência. Como essa opção apresenta uma restrição aos bancos de dados (e como há uma opção melhor, como será visto), essa alternativa é incorreta.1 (B) INCORRETA Índices de hashing são índices que usam tabelas hash para indexação. Neles, as chaves de pesquisa são organizadas como uma tabela hash, em que as chaves de pesquisa são associadas às entradas onde essas chaves ocorrem. Uma tabela hash (ou tabela de dispersão), por sua vez, é uma estrutura de dados que associa chaves de pesquisa a valores. Seu objetivo é, a partir de uma chave simples, fazer uma busca rápida e obter o valor desejado. Por mapearem uma chave de pesquisa a um determinado índice de forma direta, as tabelas hash proporcionam um tempo médio de busca constante, ou seja, O(1). Em virtude de seu alto desempenho, as tabelas hash são tipicamente utilizadas na indexação de grandes volumes de informações em bancos de dados e na criação de esquemas associativos de acesso às memória cache. Após a construção do índice, quando uma consulta é realizada, a função hash é aplicada à chave de pesquisa para identi cação do slot onde as chaves ocorrem. As entradas das ocorrências são, então, recuperadas. Apesar de e cientes para buscar um único valor e como valores próximos são normalmente mapeados para posições distantes na tabela, uma abordagem de tabelas hash para consultas 1
Fonte: E cient Join-Index-Based Join Processing: A Clustering Approach, disponível em http://www.cs.umn.edu/tech_reports_upload/tr1999/99-030.pdf
Página 108 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
com intervalos se mostrará ine ciente, visto que a conferência dos valores nos intervalos será custosa. (C) CORRETA Índices em árvores B, como o nome diz, são índices que usam árvores B. Uma árvore B é uma estrutura de dados baseada em árvores que mantém os dados ordenados e que permite buscas, acesso sequencial, inserções e remoções em tempo logarítmico amortizado. Por ser otimizada para sistemas que leem e escrevem grandes quantidades de dados, elas são bastante utilizadas na implementação de bancos de dados e sistemas de arquivos. As árvores B são uma generalização das árvores de busca binárias, pois cada nó pode possuir mais de dois lhos. Mais formalmente, uma árvore B de ordem m (com m o número máximo de lhos de um nó) é uma árvore que satisfaz as seguintes propriedades: 1. Cada nó possui, no máximo, m lhos; 2. Cada nó (exceto a raiz), possui, no mínimo, m/2 lhos; 3. A raiz possui pelo menos dois lhos quando não for um nó folha; 4. Todas as folhas aparecem no mesmo nível; 5. Um nó não folha com k lhos possui k-1 chaves. Como exemplo, a Figura 10 exibe o desenvolvimento de uma árvore B de ordem 3 à medida que os elementos 1 , 2 , 3 , 4 , 5 , 6 e 7 são adicionados a ela. Como exibido, sempre que um nó não é capaz de armazenar mais elementos, aquele nó é dividido e a árvore, rebalanceada, de modo que suas propriedades ainda sejam mantidas. A altura de uma árvore B é, sempre, O(log n) e uma busca por um valor exato em uma árvore B é, também, O(log n). No entanto, quando é necessário buscar por um intervalo, como, internamente os nós das árvores B estão ordenados e a busca pelos limites é O(log n), a recuperação dos valores do intervalo buscado é feita rapidamente, tornando as árvores B a melhor estrutura de dados para criação do índice nesse caso e, portanto, a alternativa c é a correta. (D) INCORRETA Índice booleano não é um conceito amplamente divulgado na literatura. No entanto, existem índices chamados índices bitmap que armazenam seus dados como vetores de bits e respondem a consultas através da execução de operações lógicas bit a bit nesses vetores de bits. Esse tipo de índice foi projetado para casos em que os valores de uma variável se repetem com grande frequência. Devido a forma como são construídos, o índice de bitmap possui vantagens de desempenho para esse caso, mas não na busca de intervalos. (E) INCORRETA Índices funcionais são índices de nidos pelo usuário do sistema de banco de dados. Com eles, é possível que o usuário do banco de dados de na suas próprias funções de indexação. Esse tipo de índice adiciona exibilidade ao banco de dados e pode ser usado com tipos de nidos pelo usuário. Por poderem ser implementados da forma que melhor convier ao usuário e não um algoritmo propriamente dito, índices funcionais não são a solução para esta questão.
Página 109 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
Figura 10: desenvolvimento de uma árvore B de ordem 3 à medida que os elementos 1 , 2 , 3 , 4 , 5 , 6 e 7 são adicionados.
Página 110 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 45. Assuntos relacionados:
Volume 9 Edição 1
Estruturas de Dados, Fila, Árvore, Lista Encadeada, Pilha,
Banca: ESAF Instituição: Secretaria do Tesouro Nacional (STN) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 18
Navegadores Web armazenam as URLs (Uniform Resource Locators) visitadas recentemente em uma determinada estrutura de dados. Com isso, permite que o usuário visite o último site visitado, ao recuperar a URL na estrutura, usando uma operação de retorno (back). A estrutura de dados apropriada para implementar este recurso é a (a). la. (b). árvore. (c). lista encadeada simples. (d). lista encadeada dupla. (e). pilha.
Solução: O problema acima, dos Navegadores Web, descrevem uma forma de armazenamento de URL que possui como característica a funcionalidade de recuperar a última URL acessada. A seguir iremos fazer uma breve descrição sobre as estrutura de dados mais conhecidas, respectivamente, la, árvore, lista, e pilha. (A) ERRADA Uma la é simplesmente uma lista de informações que é acessada na ordem primeira a entrar, primeiro a sair, sendo chamada de FIFO (First Int, First Out). Isto é, o primeiro elemento colocado na la é o primeiro a ser retirado, o segundo elemento colocado é o segundo a ser recuperado e assim sucessivamente. Essa é a única forma de armazenar e recuperar em uma la, não é permitido acesso a nenhum item especí co. (B) ERRADA Uma árvore é uma estrutura de dados que organiza seus elementos de forma hierárquica. Cada elemento em uma árvore consiste de informação juntamente com um ponteiro para o membro esquerdo e um ponteiro para o membro direito. A raiz é o primeiro elemento em uma árvore. Cada elemento de dado é chamado de nó da árvore e qualquer parte da árvore é chamada de uma subárvore. Um nó que não tem subárvore ligadas a ele é chamado de nó terminal. (C) ERRADA Um lista encadeada é uma estrutura de dados onde cada elemento possui um ligação com um/dois elementos. Cada elemento possui um dado e um/dois ponteiros para o(s) elemento(s) subsequentes. Uma lista encadeada pode acessar seu armazenamento de forma randômica, porque cada
Página 111 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
porção de informação carrega consigo um ponteiro ao próximo elemento de dados na lista. Uma lista simplesmente encadeada requer que cada elemento de informação contenha um ponteiro com o próximo elemento da lista. Cada elemento de dado geralmente consiste em uma estrutura que inclui campos de informação e ponteiro de ligação com o próximo elemento. (D) ERRADA Uma lista duplamente encadeada consiste em dados e ponteiros para o próximo elemento e para o item anterior. O fato de ter dois ponteiros em lugar de um tem a vantagem da lista poder ser lida em ambas as direções. (E) CORRETA Uma pilha é o inverso de uma la porque usa o acesso no formato de último a entrar, primeiro a sair, o que algumas vezes é chamado de LIFO (Last In, First Out). Para visualizar uma pinha imagine uma pinha de pratos. O primeiro prato na mesa é o último a ser usado e o último prato colocado na pilha é o primeiro a ser usado. Pilhas são usadas em grande quantidade em software de sistema. As duas operações básicas da pilha são:
• push: coloca um elemento no topo da pilha; • pop: remove (recupera) um elemento do topo da pinha, ou seja, o último elemento da lista. Portanto, a única estrutura de dados que possui uma funcionalidade de recuperar o último elemento inserido é a estrutura pilha, desta forma, a letra correta é a E.
Página 112 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 46. Assuntos relacionados:
Volume 9 Edição 1
Programação, Java, Garbage Collection,
Banca: ESAF Instituição: Secretaria do Tesouro Nacional (STN) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 21
O que fazer para forçar a coleta de lixo de um objeto, em Java? Indique a opção correta. (a). Invocar nalize(). (b). Remover todas as referências ao objeto. (c). Invocar Runtime.gc(). (d). Invocar System.gc(). (e). A coleta de lixo não pode ser forçada.
Solução: No Java, ao contrário de algumas linguagens como o C, não é necessário que o programador se preocupe com a vida de um objeto, se responsabilizando em liberar espaços de memória antes que ela esgote. O mecanismo de coleta de lixo (garbage collection ) do Java faz uma varredura periódica em busca de posições de memória não mais referenciadas e realiza a liberação das mesmas. A alternativa A cita o método nalize(). Esse método é equivalente ao método destrutor de C++ e não é responsável em forçar a coleta de lixo. Ele é chamado diretamente pelo coletor de lixo logo antes que o objeto seja destruído. É útil quando precisamos liberar alguns recursos anteriormente à efetivação da eliminação. Por exemplo, se precisarmos fechar uma conexão antes da destruição do objeto, isso será possível de nindo o método nalize() de tal maneira que realize a tarefa de fechar a conexão. Removendo todas as referências do objeto, possibilitaremos que ele seja destruído pelo coletor de lixo, mas essa destruição ocorrerá em algum ponto especí co de sua execução, que é iniciada ao bel-prazer da JVM (Java Virtual Machine). Quando a JVM decidir que é hora de executá-lo, ele será executado, pois deve ser usado com inteligência devido aos altos recursos computacionais que são exigidos. Não é possível forçar a execução do coletor de lixo via programação no Java. Os métodos indicados nas alternativas (C) e (D) apenas noti cam à JVM que a aplicação gostaria que o coletor de lixo fosse executado, mas não garantem que ele realmente será executado imediatamente. Dado o exposto, sabemos que a execução do coletor de lixo não pode ser forçada e, portanto, a alternativa correta é a alternativa (E).
Página 113 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
47. Assuntos relacionados: Sistemas Distribuídos, Common Object Request Broker Architecture (CORBA), Distributed Component Object Model (DCOM), Java Remote Method Invocation (Java RMI), Distributed Computing Environment (DCE), Remote Procedure Call (RPC),
Banca: ESAF Instituição: Secretaria do Tesouro Nacional (STN) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 23
A tecnologia mais adequada para sistemas de objetos distribuídos que compreendem o suporte a diferentes linguagens de programação e plataformas de execução é (a). CORBA. (b). DCOM. (c). Java RMI. (d). DCE. (e). RPC.
Solução: Antes de apresentar a alternativa correta, cada uma das tecnologias acima listadas será descrita. Por se tratar de um conceito mais genérico, o RPC será apresentado primeiro, com as outras alternativas listadas pela questão apresentadas posteriormente.
RPC RPC (chamada remota a procedimento, do Inglês Remote Procedure Call) é uma tecnologia de comunicação inter-processos que permite que programas de computador causem a execução de funções ou rotinas em outro espaço de endereçamento, comumente em outro computador em uma rede, sem a necessidade de programação explícita dessa interação remota. Isso signi ca que, sendo a função local ou remota, sua chamada seria feita da mesma forma. É importante notar que RPC se refere mais a um conceito (o de chamadas a procedimentos remotos) que a uma tecnologia especí ca. O conceito de RPC já é apresentado na RFC 707, de 1976 e a primeira implementação popular dessa tecnologia foi a da Sun Microsystems (hoje chamado ONC RPC), usada na implementação do NFS (Network Filesystem). O processo de uma chamada remota a procedimento é iniciado com o envio, por parte do cliente, de uma mensagem de requisição a um servidor remoto conhecido para execução de um procedimento qualquer. Os parâmetros desse procedimento são, também, enviados com a requisição. Supondo que o procedimento existe no servidor e que ele é executado com sucesso, uma resposta é enviada ao cliente e a execução do processo do cliente continuar normalmente. Há, no entanto, variações em diversas implementações de RPC, o que resulta em protocolos incompatíveis entre si (e, portanto, na necessidade de diferenciação desses protocolos). É importante notar que o processo cliente é bloqueado enquanto o processamento remoto
Página 114 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
acontece e só retorna a executar quando uma resposta é obtida. Além disso, chamadas remotas, diferentemente de chamadas locais, podem falhar devido a problemas de rede e, neste caso, as aplicações cliente devem tratar essas falhas sem a certeza de que as chamadas remotas foram executadas com sucesso. Para permitir que servidores sejam acessados por clientes diferentes, diversos sistemas RPC foram criados e muitos utilizam uma linguagem de descrição de interface (IDL) para permitir que diversas plataformas possam executar as chamadas remotas. Os outros protocolos listados nesta questão são análogos ao RPC. A Figura 11 descreve o funcionamento básico do RPC. Nela, a execução se dá da esquerda para a direita, iniciando com a chamada local do programa usuário. Depois, no stub do usuário (cliente), é realizada a conversão dos argumentos para transmissão pelas rotinas (de tempo de execução) do RPC. Enquanto a mensagem é transmitida e a rotina é executada no servidor, o programa cliente ca em espera. Quando a mensagem chega ao servidor, as rotinas do RPC a recebem, a repassam para o stub do servidor, que a repassa para o programa que serve as rotinas para processamento. Com o m do processamento, o processo simétrico é realizado. A função do stub do cliente é iludir o cliente em pensar que está chamando uma função do servidor. O stub do servidor, de forma semelhante, ilude o programa que serve as rotinas para que pareça que ele foi chamado pelo cliente. A transmissão de mensagens pelos stubs é realizadas para que o funcionamento do RPC aconteça de forma transparente para os programas cliente e servidor.
Figura 11: funcionamento básico do RPC.
CORBA CORBA (Common Object Request Broker Architecture) é um padrão de nido pelo OMG (Object Management Group) que permite que componentes de software escritos em linguagens de programação diferentes e em diversos computadores possam trabalhar em conjunto. Em outras palavras, o CORBA é uma infraestrutura multiplataforma para chamada remota a procedimentos. O CORBA atua de modo que os objetos possam se comunicar de forma transparente para o usuário, mesmo que seja necessário se comunicar com outro programa em outro sistema operacional. Mais especi camente o CORBA é um mecanismo de software para normalização da semântica de chamadas a métodos no mesmo espaço de endereçamento (na aplicação local) ou em um espaço de endereçamento remoto. Para especi cação das interfaces, a linguagem de
Página 115 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
de nição de interface (IDL, do Inglês Interface De nition Language) é usada para especi car as interfaces dos objetos que serão disponibilizados para o mundo externo à aplicação local. Existem, então, mapeamentos de IDL para linguagens de programação especí cas como Java, ou C++. Há mapeamentos padrão para Ada, C, C++, Lisp, Ruby, Smalltalk, Java, COBOL, PL/I e Python. O mapeamento de linguagem exige que o desenvolvedor do software (usuário do CORBA, nesse caso) crie um código IDL que represente as interfaces para seus objetos. Tipicamente, uma implementação do CORBA é acompanhada de um compilador de IDL que converte o código IDL do usuário em arquivos objeto para serem ligados pela aplicação. Para linguagens em que não há uma IDL padrão, é possível implementar uma através dos uso de ORBs (Object Request Brokers) escritos para essas linguagens. O ORB é um módulo intermediário entre cliente e objeto e é o responsável por aceitar requisições, enviá-las para os objetos competentes e, assim que disponível, entregar a resposta para o cliente. Um dos problemas na adoção do CORBA é que, por usar conexões TCP/IP em portas não padrão, ele sofre com rewalls mais restritivos, que permitem apenas o tráfego HTTP pela porta 80, por exemplo.
DCOM O DCOM (Distributed Component Object Model) é uma tecnologia proprietária criada pela Microsoft para comunicação entre componentes de software distribuídos em redes de computadores. O DCOM, quando criado, era chamado Network OLE e estende a tecnologia COM (Component Object Model), também da Microsoft.2 A tecnologia COM de ne como componentes de software e seus clientes interagem. Essa interação é de nida de modo que o cliente e o componente podem se conectar sem a necessidade de um componente intermediário. É possível, então, que o cliente execute chamadas a métodos do componente sem overhead adicional. Com o COM é possível realizar comunicação entre processos de forma independente de linguagem de programação. As extensões adicionadas ao COM pelo DCOM são, basicamente:
• A serialização/deserialização de argumentos e valores de retorno de métodos; • Coleta de Lixo (Garbage Collection) distribuída, o que permite que referências mantidas por clientes de interfaces sejam liberadas quando, por exemplo, a conexão é perdida. O protocolo do DCOM foi baseado no DCE/RPC (con ra a discussão de RPC na seção DCE), que de ne regras claras sobre a serialização. O DCOM e o CORBA são padrões concorrentes e, como o CORBA, o DCOM sofre do mesmo problema de conexão através de rewalls restritivos. Há implementações do DCOM, nem todas gratuitas, para Windows, UNIX, Java e outros sistemas.
2
http://msdn.microsoft.com/en-us/library/ms809340.aspx acessado em 25/05/2010.
Página 116 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
Java RMI O Java Remote Method Invocation, Java RMI, como o próprio nome diz é uma API para a máquina virtual Java que permite a chamada remota a procedimentos de forma orientada a objetos.3 Sua implementação original depende da máquina virtual Java e, portanto, permite chamadas remotas apenas entre máquinas virtuais Java. Para permitir a execução fora da máquina virtual Java, uma versão em CORBA foi, depois, criada. Em Java, essa API pode ser acessada através do pacote java.rmi. As aplicações RMI são formadas, normalmente, por dois programas separados: um cliente e um servidor. Um servidor típico cria alguns objetos remotos, torna as referências a esse objetos acessíveis e aguarda que clientes invoquem métodos desses objetos. Um cliente típico, por sua vez, obtém uma referência remota a um ou mais objetos em um servidor e invoca métodos deles. Como em outras formas de chamadas a procedimentos remotos, o RMI provê o mecanismo de comunicação.
DCE O ambiente de computação distribuído (DCE, do Inglês Distributed Computing Environment) é um sistema de software desenvolvido no início da década de 1990 que provê um framework para desenvolvimento de aplicações cliente-servidor. Em particular, o DCE possui uma tecnologia que provê RPC, chamado DCE/RPC. O DCE/RPC é, basicamente, uma implementação de RPC para o DCE.
Discussão das alternativas O objetivo desta questão é selecionar a tecnologia mais adequada para sistemas de objetos distribuídos que compreendem o suporte a diferentes linguagens de programação e plataformas. Sendo as alternativas baseadas puramente em RPC relacionadas a programação não orientada a objetos, essas alternativas podem ser descartadas. Nos restam, portanto, as alternativas a, b e c. Ora, tendo sido o Java RMI inicialmente desenvolvida para execução apenas na máquina virtual Java, podemos considerar que, mesmo a implementação atual permitindo o uso de diferentes linguagens, que seu uso está mais reservado à linguagem Java, permitindo o descarte de sua opção correspondente. Resta-nos, portanto, a escolha entre as técnicas concorrentes DCOM e CORBA, ambas acessíveis por diversas linguagens de programação e, de certa forma, disponíveis em diversas plataformas. No entanto, a popularidade do COM (e, consequentemente, do DCOM) é maior apenas em sistemas Windows e, com a introdução do framework .NET, é possível substituir componentes DCOM por componentes implementados em .NET 4 . Além disso, o DCOM é uma tecnologia proprietária da Microsoft. Da discussão do parágrafo anterior podemos selecionar o CORBA, alternativa a como a resposta da questão. Outros aspectos que o tornam a opção mais adequada para a questão são o fato dele ser um padrão aberto de nido por um consórcio e de haver implementações funcionais para diversos sistemas operacionais e linguagens de programação. 3 4
http://java.sun.com/docs/books/tutorial/rmi/overview.html Using Web Services Instead of DCOM - http://msdn.microsoft.com/en-us/library/aa302336.aspx.
Página 117 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 48. Assuntos relacionados:
Volume 9 Edição 1
Algoritmos de Ordenação, Heapsort,
Banca: ESAF Instituição: Secretaria do Tesouro Nacional (STN) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 24
Considere a execução do algoritmo de ordenação Heap (ou Heap Sort), em sua versão emlocal (in-place), ao arranjo 13, 18, 10, 8, 11. Qual é a saída gerada, após a execução dos três (3) primeiros passos do algoritmo? (a). 13, 18, 10, 11, 8 (b). 18, 13, 10, 11, 8 (c). 8, 13, 10, 11, 18 (d). 13, 10, 11, 8, 18 (e). 18, 13, 10, 8, 11
Solução: O Heap Sort (ou Heapsort) é um algoritmo de ordenação que faz uso de uma estrutura de dados chamada heap. Ele ordena localmente (in-place), signi cando que apenas um número constante de elementos do arranjo é armazenado fora do arranjo de entrada em qualquer instante. A estrutura de dados heap é um objeto arranjo que pode ser visto como uma árvore binária praticamente completa, sendo que cada nó dessa árvore corresponde a um elemento do arranjo que armazena o valor no nó. Um arranjo A, com uma quantidade de elementos de nida por comprimento[A], tem por raiz o elemento A[1]. Dado o índice i de um nó, o índice de seu pai PARENT(i), do lho da esquerda LEFT(i) e do lho da direita RIGHT(i) podem ser calculados de modo simples. Existem dois tipos de heaps binários: heaps máximos e heaps mínimos. Os primeiros satisfazem a seguinte propriedade:
A[PARENT(i)] ≥ A[i] isto é, o valor de um nó é no máximo o valor de seu pai. Desse modo, o maior elemento em um heap máximo é armazenado na raiz, e a subárvore que tem raiz em um nó contém valores menores que o próprio nó. Um heap mínimo, organizado de forma oposta, satisfaz a seguinte propriedade:
A[PARENT(i)] ≥ A[i] sendo que sua raiz contém o menor elemento do arranjo. A Figura 12 ilustra uma estrutura heap máximo de 10 elementos para o arranjo A = [16, 14, 10, 8, 7, 9, 3, 2, 4, 1].
Página 118 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
Figura 12: estrutura heap máximo de 10 elementos para o arranjo A = [16, 14, 10, 8, 7, 9, 3, 2, 4, 1]. Quando um novo elemento é adicionado ao arranjo, é necessário manter a propriedade de heap, o que pode ser feito com as sub-rotinas MAX-HEAPFY e MIN-HEAPFY. Para o caso de um heap máximo, tem-se:
MAX-HEAPFY(A, i) l ← LEFT(i) R ← RIGHT(i) if l ≤ tamanho-do-heap[A] e A[l] > A[i] then maior ← l else maior ← i if r ≤ tamanho-do-heap[A] e A[r] > A[maior] then maior ← r if maior 6= i then trocar A[i] ↔ A[maior] MAX-HEAPFY(A, maior) Quando MAX-HEAPFY é chamada, supõe-se que as árvores binárias com raízes em LEFT(i) e RIGHT(i) são heaps máximos, mas que A[i] pode ser menor que seus lhos, violando assim a propriedade de heap máximo. A função de MAX-HEAPFY é possibilitar que o valor em A[i] ocupe o lugar adequado na estrutura, de tal forma que a subárvore com raiz no índice i se torne um heap máximo. É possível utilizar o procedimento MAX-HEAPFY para transformar um arranjo A[1..n], com n=comprimento[A], em um heap máximo. O procedimento BUILD-MAX-HEAP efetua tal operação:
BUILD-MAX-HEAP(A) tamanho-do-heap[A] ← comprimento[A] for i ← b comprimento[A]/2 c downto 1 do MAX-HEAPFY(A, i) A Figura 13 ilustra o uso do procedimento BUILD-MAX-HEAP para o arranjo A=[4, 1, 3, 2, 16, 9, 10, 14, 8, 7].
Página 119 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
Figura 13: uso do procedimento BUILD-MAX-HEAP para o arranjo A=[4, 1, 3, 2, 16, 9, 10, 14, 8, 7]. Observa-se que existe uma tendência de os valores do arranjo A carem ordenados após a execução do procedimento. Mas não há tal obrigatoriedade, pois a propriedade de heap máximo não tem relação com ordenação. Entretanto, é possível utilizar os dois procedimentos previamente apresentados para ordenar o arranjo A. E é essa a função do algoritmo Heap Sort.
HEAPSORT(A) BUILD-MAXHEAP(A) for i ← comprimento[A] downto 2 do trocar A[1] ↔ A[i] tamanho-do-heap[A] ← tamanho-do-heap[A] 1 MAX-HEAPFY(A, 1) Para os dados apresentados na questão, A = [13, 18, 10, 8, 11], tem-se a sequência de processamento apresentada na Figura 14.
Página 120 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
Figura 14: sequência de processamento do algoritmo de ordenação Heap ao arranjo 13, 18, 10, 8, 11. Infelizmente, a questão não especi ca o signi cado de passo , de sorte que ca difícil para o candidato de nir saídas. Questão prejudicada.
Página 121 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 49. Assuntos relacionados:
Volume 9 Edição 1
Algoritmos, Linguagens de Programação, Java,
Banca: ESAF Instituição: Secretaria do Tesouro Nacional (STN) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 25
Considere o seguinte fragmento de código, para o método run() de uma determinada linha de execução (thread), em Java.
1. try{ 2. sleep(1000); 3. } catch (InterruptedException ie){} Se considerarmos que a linha de execução não é interrompida, é correto a rmar que (a). o código não compila. (b). a linha de execução entra em estado Pronto , após 1000 milissegundos. (c). a linha de execução entra em estado Pronto , em exatamente 1000 milissegundos. (d). a linha de execução entra em estado Pronto , em pelo menos 1000 milissegundos. (e). o código compila, mas não executa, lançando uma exceção do tipo ThreadException.
Solução: Já que o enunciado referencia um bloco de código, uma boa forma de compreender essa questão é através de um código que implemente o bloco correspondente em conjunto com a infraestrutura necessária para compilação e execução. Considere, portanto, o código abaixo. import java.lang.Thread;
class Foo extends Thread { public void run() { try { sleep(1000); } catch (InterruptedException ie){} System.out.println("Hello World!"); } } public class ThreadedHello { public static void main(String[] args) { Foo foo; foo = new Foo(); foo.run(); } } É possível perceber que o bloco de código acima contém, em sua totalidade, o bloco de código a ser analisado na questão. Ora, se salvarmos esse código em um arquivo ThreadedHello.java e tentarmos compilá-lo, o compilador Java o compilará sem problemas, visto que Página 122 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
não há erro sintático ou semântico no código. O que invalida a solução referenciada pela opção a. Após a compilação do bloco de código, também é possível executá-lo. O exemplo abaixo exibe a chamada ao programa compilado e a saída por ele gerada:
$ time java ThreadedHello Hello World! real
0m1.131s
A correta execução desse programa invalida, portanto, a opção e, já que não houve qualquer exceção levantada e o programa exibiu a saída correta ( Hello World , neste caso). No exemplo acima, o comando time exibe os tempos de execução de um programa e optou-se por exibir apenas o tempo real de execução, de 1,131 segundos. Resta-nos, portanto, as opções b, c e d. Para isso, a melhor fonte é a referência da linguagem Java, que diz que o método sleep da classe Thread causa a suspensão temporária da thread em execução pelo número de milisegundos especi cado pelo argumento passado para o método. Disso decorre que, terminado o tempo de suspensão, a thread retornará ao estado Pronto em 1000 milissegundos. O problema com as opções c e d são os quali cadores adicionados a este tempo. Por depender da precisão do timer do computador que executará esse bloco de código e do escalonador de processos, é impossível garantir que a mudança para o estado Pronto ocorrerá em exatamente 1000 milisegundos, invalidando a alternativa c. De forma semelhante, a precisão do timer ou o escalonador podem fazer com que o tempo de suspensão da thread seja menor que 1000 milisegundos, invalidando a alternativa d. De modo geral, como não há garantias dadas pelo método sleep, é melhor selecionar a opção que responde a pergunta sem restrições adicionais. No caso, a alternativa b é a correta.
Página 123 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos 50. Assuntos relacionados:
Volume 9 Edição 1
Sistemas de Informações Gerenciais,
Banca: ESAF Instituição: Secretaria do Tesouro Nacional (STN) Cargo: Analista de Finanças e Controle - Tecnologia da Informação / Desenvolvimento de Sistemas de Informação
Ano: 2008 Questão: 28
O sistema de informação utilizado pelo Governo Federal para controlar e acompanhar a execução orçamentária, patrimonial e nanceira é denominado (a). SIGPLAN. (b). SISG. (c). SIAFI. (d). SIASG. (e). SIAPE.
Solução: Para identi cação da resposta correta é necessário conhecer o signi cado das siglas listadas. Assim, além de dizer a razão pela qual uma resposta é correta ou incorreta, o signi cado das siglas e o propósito do sistema por elas representados serão apresentados. (A) INCORRETA SIGPLAN5 é o sistema de informações gerenciais e de planejamento e contribui na elaboração, monitoramento, avaliação e revisão dos programas do Plano Plurianual. Ele foi concebido para apoiar a execução dos programas governamentais e é utilizado pelos órgãos setoriais, presidência da república, casa civil, ministérios e outras entidades. Seu objetivo é o de servir como meio de comunicação e integraçao entre as pessoas responsáveis em executar e monitorar os programas governamentais, fornecendo as informações necessárias e em tempo. Algumas de suas características mais importantes são:
• Acompanhamento da execução física em tempo real : por ele a administração pública federal pode realizar um efetivo gerenciamento das ações governamentais, em particular no que diz respeito ao desempenho físico; • Gestão de restrições: possibilita ao gerente a antecipação e sistematização das restrições, o que facilita a mobilização e a busca por soluções por parte do governo e seus parceiros; • Integração de informações: sua base de dados contém informações sobre a execução das ações, seu gerenciamento e monitoramento, e informações orçamentárias e nanceiras sobre cada programa, sendo composta de dados provenientes de diversas fontes.
5 Manual de Operação do SIGPlan, disponível em http://www.sigplan.gov.br/arquivos/Download/ManualSigplan.pdf e acessado em 25/05/2010.
Página 124 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
(B) INCORRETA O sistema de serviços gerais - SISG6 não é um sistema de informação, mas o sistema que organiza as atividades de administração de edifícios públicos e imóveis residenciais, material, transporte, comunicações administrativas e documentação. Além de ser integrado pelos órgãos e unidades da Administração Federal incumbidos especi camente de executar as atividades relacionados ao sistema, os ministérios militares e o estado-maior das forças armadas poderão aplicar, no que couber, as normas pertinentes ao SISG. O SISG compreende: I. o órgão central, responsável pela formulação de diretrizes, orientação, planejamento e coordenação, supervisão e controle dos assuntos relativos a Serviços Gerais; II. os órgãos setoriais, unidades incumbidas especi camente de atividades concernentes ao SISG, nos Ministérios e órgãos integrantes da Presidência da República; III. os órgãos seccionais, unidades incumbidas da execução das atividades do SISG, nas autarquias e fundações públicas. (C) CORRETA O SIAFI7 , ou sistema de integrado de administração nanceira, é um sistema contábil que tem por nalidade realizar todo o processamento, controle e execução nanceira, patrimonial e contábil do governo federal brasileiro. Ele é gerido pela Secretaria do Tesouro Nacional, STN. Ele foi projetado com o intuito de resolver os problemas de natureza administrativa que di cultavam a adequada gestão dos recursos públicos e a preparação do orçamento uni cado brasileiro. Assim, com a criação da STN, em 1986, a STN, em conjunto com o SERPRO, desenvolveu tal sistema. Após a criação do sistema, o governo federal tem uma conta única para gerir, de onde todas as saídas de dinheiro ocorrem com o registro de sua aplicação e do servidor público que a efetuou. Seus principais objetivos são o de:
• prover mecanismos adequados ao controle diário da execução orçamentária, nanceira e patrimonial aos órgãos da Administração Pública; • fornecer meios para agilizar a programação nanceira, otimizando a utilização dos recursos do Tesouro Nacional, através da uni cação dos recursos de caixa do Governo Federal; • permitir que a contabilidade pública seja fonte segura e tempestiva de informações gerenciais destinadas a todos os níveis da Administração Pública Federal; • padronizar métodos e rotinas de trabalho relativas à gestão dos recursos públicos, sem implicar rigidez ou restrição a essa atividade, uma vez que ele permanece sob total controle do ordenador de despesa de cada unidade gestora; 6
Decreto No 1.094, de 23 de março de 1994. Disponível em http://www.planalto.gov.br/ccivil_03/Decreto/Antigos/D1094.htm e acessado em 25/05/2010. 7 Conheça o SIAFI - A História do SIAFI. Disponível em http://www.tesouro.fazenda.gov.br/sia /index_conheca_sia .asp e acessado em 25/05/2010.
Página 125 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
• permitir o registro contábil dos balancetes dos estados e municípios e de suas supervisionadas; • permitir o controle da dívida interna e externa, bem como o das transferências negociadas; • integrar e compatibilizar as informações no âmbito do Governo Federal; • permitir o acompanhamento e a avaliação do uso dos recursos públicos; • proporcionar a transparência dos gastos do Governo Federal. (D) INCORRETA O Sistema Integrado de Administração de Serviços Gerais - SIASG8 , é um conjunto informatizado de ferramentas para operacionalizar internamente o funcionamento sistêmico das atividades inerentes ao Sistema de Serviços Gerais - SISG, quais sejam: gestão de materiais, edi cações públicas, veículos o ciais, comunicações administrativas, licitações e contratos, do qual o Ministério do Planejamento, Orçamento e Gestão é órgão central normativo. (E) INCORRETA O Sistema Integrado de Administração de Recursos Humanos, SIAPE9 , é um sistema online, de abrangência nacional, que constitui-se, hoje, na principal ferramenta para gestão do pessoal civil do governo federal. Como ele é realizado mensalmente o pagamento de cerca de um milhão e trezentos mil servidores ativos, aposentados e pensionistas em 214 órgãos da administração pública federal direta, instituições federais de ensino, ex-territórios, autarquias, fundações e empresas públicas. Para acesso aos dados do SIAPE, o Ministério do Planejamento, Orçamento e Gestão idealizou o SIAPEnet, aplicativo que possibilita ao servidor efetuar consultas, atualização e impressão de dados extraídos diretamente do SIAPE.
8
O que é SIASG. Disponível em http://www.comprasnet.gov.br/ajuda/siasg/que_e_siasg.stm e acessado em 25/05/2010. 9 O que é o SIAPEnet. Disponível em http://www.siapenet.gov.br/oque.htm e acessado em 25/05/2010.
Página 126 de 127 www.handbookdeti.com.br
Handbook de Questões de TI Comentadas para Concursos
Questao 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
Página 127 de 127
Volume 9 Edição 1
Resposta D C B B E C B B A A B D C A E C B D D C B C E B D E E A D D A E E B B E B A E E C B A C E E A E B C
Handbook de TI
Além do Gabarito
Índice Remissivo Árvore, 111 Abstração, 65 ACID, 89, 103 Agrupamento de Dados, 21 Algoritmos, 122 Algoritmos de Ordenação, 118 Atividades-Chaves, 43
Distributed Component Object Model (DCOM), 114 Distributed Computing Environment (DCE), 114 Encapsulamento, 65 Engenharia de Software, 8, 13, 15, 46, 53, 75, 81, 83, 85, 94 Estruturas de Dados, 111 Fila, 111
Garbage Collection, 113 Generalização, 15 Gerenciamento de Nível de Serviço, 57 Gerenciamento Eletrônico de Documentos (GED), 4 Categorias de Linguages de Banco de Dados, Governança de TI, 4, 43, 57 98 Heapsort, 118 Central de Serviços, 61 Herança, 32, 65 Chave Assimétrica, 17, 41 Hierarquia de Generalização, 94 Chave Secundária, 17 Chave Simétrica, 17, 41 Indexação de Registros, 108 Checksum, 38 Integridade de Dados, 38 Classes e Superclasses, 32 Interface com Usuário, 71, 78 Classi cação de Dados, 21 ISO/IEC 12207, 51 CMM, 96 ITIL, 57, 61 CMMI, 4, 51, 53 COBIT, 4, 43 Java, 32, 34, 36, 68, 71, 73, 113, 122 Common Object Request Broker Architecture Java Remote Method Invocation (Java RMI), (CORBA), 114 114 Criptogra a, 17, 41 JavaServer Pages (JSP), 36 Criptogra a Assimétrica, 41 Criptogra a Simétrica, 41 Linguagem de Modelagem, 77 Cyclic Redundancy Check (CRC), 38 Linguagens de Programação, 32, 34, 36, 68, 71, 73, 122 Data Control Language (DCL), 87, 98 Lista Encadeada, 111 Data De nition Language (DDL), 87, 98, 101 Data Manipulation Language (DML), 87, 98, MA-MPS, 46 101 MN-MPS, 46 Data Mining, 21 Modelagem de Dados, 17 Data Query Language (DQL), 98 Modelagem de Dependência entre Dados, 21 Data Warehouse, 105 Modelo de Maturidade, 51 Desenvolvimento de Sistemas, 51 Modelo de Processo de Software, 8, 81, 83 Desenvolvimento em Cascata, 8 Modelo Entidade-Relacionamento, 23 Desenvolvimento Evolucionário, 8 Modelo Espiral, 83 Desenvolvimento Formal, 81 Modelo Objeto-Relacionamento, 23 Diagrama de Atividades, 91 Modelo Relacional, 23 Diagrama de Caso de Uso, 91 Modi cadores de Acesso, 32 Diagrama de Colaboração, 91 MPS.BR, 46, 51 Diagrama de Componentes, 91 128MR-MPS, 46 Diagrama de Objetos, 91 Banco de Dados, 17, 19, 23, 26, 87, 89, 98, 103, 105, 108 Bits de Paridade, 38 Business Inteligence, 105
Handbook de Questões de TI Comentadas para Concursos
Volume 9 Edição 1
Web Services Description Language (WSDL), 11
Níveis de Maturidade, 96 Nível de Abstração, 19 Nível de Visão, 19 Nível Físco, 19 Nível Lógico, 19
XML, 28
On-line Analytical Processing, 105 On-Line Transaction Processing, 105 Organizational Project Management Maturity Model (OPM3), 4 Orientação a Objeto, 32, 63, 65 Otimizador de Consultas, 101 Pacotes Java, 71, 73 Padrão Facade, 75 Padrões de Projeto, 75 Pilha, 111 Polimor smo, 65 Portais Corporativos, 4 Programação, 31, 63, 65, 113 Programação Estruturada, 31 Projeto de Serviço, 57 Qualidade de Software, 51, 53 Remote Procedure Call (RPC), 114 Requisito de Domínio, 13 Requisito de Software, 13 Requisito Funcional, 13 Requisito Não-Funcional, 13 Requisitos de Sistema, 85 Requisitos de Usuário, 85 Segurança da Informação, 17, 38 SGBD, 101 Simple Object Access Protocol (SOAP), 11 Sistemas de Informações Gerenciais, 124 Sistemas Distribuídos, 114 SQL, 26, 87, 98 Sumarização de Dados, 21 Superchave, 17 Tipos de Métodos, 63 Transaction Control Language (TCL), 98 Transformação Formal, 8 Tratamento de Exceção em Java, 34 UML, 15, 77, 91, 94 Universal Description, Discovery and Integration (UDDI), 11 Usabilidade, 78 Web Services, 11 Página 129 de 127 www.handbookdeti.com.br