Exercícios de Exame

Limpar todos os resolvidos?

Fundamentos e processos

Primeiro bug de software registadoEscolha múltipla

Exame, 2019/20

Qual foi o primeiro bug de software registado e como foi identificado? Justifique a resposta.

  • a) Nos anos 50, com os sistemas avançados de identificação de bugs da NATO
  • b) Nos anos 80, por análise de serviços críticos
  • c) Nos anos 40, manualmente
  • d) Nos anos 90, com testes automatizados
A tua resposta

Solução

c) Nos anos 40, manualmente.

Nos anos 40, os computadores enchiam salas inteiras e o seu calor atraía insetos, que provocavam curto-circuitos. A 9 de setembro de 1945, a oficial Grace Hopper encontrou manualmente uma traça entre os relés do Harvard Mark II, registando o primeiro bug de software.

  • Nos anos 50, com os sistemas avançados de identificação de bugs da NATO. Não existiam sistemas de identificação de bugs da NATO nos anos 50.
  • Nos anos 80, por análise de serviços críticos. A análise de serviços críticos não foi o método de identificação do primeiro bug.
  • Nos anos 40, manualmente. Em 1945, nos anos 40, Grace Hopper encontrou manualmente uma traça (moth) entre os relés do computador Harvard Mark II.
  • Nos anos 90, com testes automatizados. Os testes automatizados não foram usados na identificação do primeiro bug registado.
Voltar à explicação
Complexidade essencial e acidentalEscolha múltipla

Teste, 2022/23

Os sistemas de software atuais são muito grandes e muito complexos. Como se podem classificar os projetos de software quanto à sua complexidade global?

  • a) Complexidade acidental e complexidade de gestão
  • b) Complexidade acidental e complexidade essencial
  • c) Complexidade técnica e complexidade de gestão
  • d) Complexidade técnica e complexidade essencial
A tua resposta

Solução

b) Complexidade acidental e complexidade essencial.

A complexidade essencial resulta da dificuldade intrínseca do problema, enquanto a acidental resulta das ferramentas, linguagens e métodos escolhidos. Reduzir a complexidade acidental não resolve o problema em si.

  • Complexidade acidental e complexidade de gestão. A complexidade de gestão não é uma das duas classes fundamentais da complexidade do software.
  • Complexidade acidental e complexidade essencial. A complexidade do software divide-se na essencial, que vem da dificuldade do problema, e na acidental, que vem das ferramentas e métodos usados.
  • Complexidade técnica e complexidade de gestão. Esta não é a classificação habitual da complexidade global dos projetos de software.
  • Complexidade técnica e complexidade essencial. A complexidade técnica não substitui a distinção entre complexidade essencial e acidental.
Voltar à explicação
Engenharia inversa como atividade de reengenhariaEscolha múltipla

Exame, 2019/20

A engenharia inversa (reverse engineering):

  • a) É uma atividade do processo de reengenharia
  • b) Significa converter código para uma nova linguagem
  • c) É limpar e reestruturar os dados do sistema
  • d) É reorganizar a estrutura do programa
A tua resposta

Solução

a) É uma atividade do processo de reengenharia.

A engenharia inversa consiste em analisar um programa ou código existente, de forma estática ou dinâmica, para o compreender melhor. Tal como as outras atividades de reengenharia, ajuda a reestruturar e a documentar o software para o tornar mais fácil de perceber e de alterar.

  • É uma atividade do processo de reengenharia. A engenharia inversa analisa um programa existente para o compreender melhor, servindo de base à reengenharia.
  • Significa converter código para uma nova linguagem. Converter código para outra linguagem é uma tarefa específica, não a definição de engenharia inversa.
  • É limpar e reestruturar os dados do sistema. A reestruturação dos dados é outra atividade da reengenharia, não a engenharia inversa.
  • É reorganizar a estrutura do programa. Reorganizar a estrutura do programa é reengenharia, não engenharia inversa.
Voltar à explicação

Engenharia de requisitos

Da necessidade vaga à definição clara do sistemaEscolha múltipla

Teste, 2022/23

O processo que leva de "necessidades vagamente definidas" a uma "definição clara e bem percebida do sistema" é comummente conhecido como:

  • a) Engenharia de requisitos
  • b) Especificação de requisitos
  • c) Análise de requisitos
  • d) Elicitação de requisitos
A tua resposta

Solução

a) Engenharia de requisitos.

A engenharia de requisitos é o processo global que transforma necessidades vagas numa definição clara e percebida do sistema, incluindo elicitação, análise, especificação e validação.

  • Engenharia de requisitos. A engenharia de requisitos engloba elicitar, analisar, especificar e validar os requisitos, levando das necessidades vagas até à definição clara do sistema.
  • Especificação de requisitos. A especificação é apenas uma parte do processo, a produção do documento de requisitos.
  • Análise de requisitos. A análise estuda e organiza os requisitos já elicitados, não cobre todo o processo.
  • Elicitação de requisitos. A elicitação é a recolha das necessidades junto das partes interessadas, apenas o início do processo.
Voltar à explicação
Requisito não funcionalEscolha múltipla

Teste, 2022/23

Qual das seguintes afirmações é um requisito não funcional de um sistema?

  • a) O sistema deve permitir ao cliente comprar vários bilhetes de uma só vez
  • b) O sistema deve permitir ao cliente iniciar sessão
  • c) O sistema deve ser desenvolvido com uma base de dados SQL
  • d) O sistema deve permitir ao cliente comprar bilhetes presencialmente
A tua resposta

Solução

c) O sistema deve ser desenvolvido com uma base de dados SQL.

As opções a), b) e d) descrevem o que o sistema faz, ou seja, requisitos funcionais. A opção c) restringe como o sistema é construído, sendo uma restrição de projeto que se classifica como requisito não funcional.

  • O sistema deve permitir ao cliente comprar vários bilhetes de uma só vez. É uma funcionalidade do sistema, logo um requisito funcional.
  • O sistema deve permitir ao cliente iniciar sessão. O início de sessão é uma funcionalidade, logo um requisito funcional.
  • O sistema deve ser desenvolvido com uma base de dados SQL. Impor uma tecnologia de implementação é uma restrição de projeto, que conta como requisito não funcional.
  • O sistema deve permitir ao cliente comprar bilhetes presencialmente. Descreve uma funcionalidade, logo é um requisito funcional.
Voltar à explicação
Brainstorming na elicitação de requisitosEscolha múltipla

Exame, 2019/20

O brainstorming é uma técnica comum de elicitação de requisitos na qual (justifique a resposta):

  • a) As ideias vêm apenas dos utilizadores finais do sistema
  • b) Todas as ideias são bem-vindas
  • c) Não existe um facilitador
  • d) O limite é de 15 pessoas na sala
A tua resposta

Solução

b) Todas as ideias são bem-vindas.

Numa sessão de brainstorming há um moderador e cerca de 4 a 8 pessoas com perspetivas diferentes sobre o produto. Todas as ideias são bem-vindas, por mais criativas que pareçam, dando prioridade à quantidade sobre a qualidade; num passo posterior são discutidas, revistas e organizadas.

  • As ideias vêm apenas dos utilizadores finais do sistema. Participam pessoas com várias perspetivas sobre o produto, não apenas os utilizadores finais.
  • Todas as ideias são bem-vindas. O objetivo é recolher o maior número de ideias novas, dando prioridade à quantidade sobre a qualidade; só depois são discutidas e organizadas.
  • Não existe um facilitador. Existe um moderador que conduz a sessão.
  • O limite é de 15 pessoas na sala. A sessão reúne normalmente cerca de 4 a 8 pessoas com perspetivas diferentes.
Voltar à explicação

Modelação UML

Elementos de um diagrama de casos de usoEscolha múltipla

Teste, 2022/23

Quais dos seguintes elementos estão TODOS presentes num diagrama de casos de uso?

  • a) Ator, caso de uso, fronteira do sistema, nome do sistema
  • b) Ator, pacote, nome do sistema, sistema externo
  • c) Caso de uso, ator, classe principal, nome do sistema
  • d) Caso de uso, generalização, nome do sistema, teste
A tua resposta

Solução

a) Ator, caso de uso, fronteira do sistema, nome do sistema.

Num diagrama de casos de uso representam-se os atores, os casos de uso que eles iniciam e a fronteira do sistema, identificada pelo nome do sistema. Classes, pacotes e testes pertencem a outros tipos de diagrama.

  • Ator, caso de uso, fronteira do sistema, nome do sistema. Um diagrama de casos de uso mostra atores, casos de uso e a fronteira do sistema com o seu nome.
  • Ator, pacote, nome do sistema, sistema externo. Pacotes e sistemas externos não são elementos próprios deste diagrama.
  • Caso de uso, ator, classe principal, nome do sistema. Classes não fazem parte de um diagrama de casos de uso.
  • Caso de uso, generalização, nome do sistema, teste. Testes não são um elemento deste diagrama.
Voltar à explicação
Diagramas de comportamento em UMLEscolha múltipla

Teste, 2022/23

Qual dos seguintes NÃO é um diagrama UML normalmente usado para modelar o comportamento de um sistema de software?

  • a) Diagrama de atividades
  • b) Diagrama de casos de uso
  • c) Diagrama de classes
  • d) Diagrama de máquina de estados
A tua resposta

Solução

c) Diagrama de classes.

Os diagramas de atividades, de casos de uso e de máquina de estados descrevem aspetos dinâmicos do sistema. O diagrama de classes descreve a estrutura estática: classes, atributos e relações entre elas.

  • Diagrama de atividades. Modela fluxos de atividades, incluindo paralelismo com fork e join.
  • Diagrama de casos de uso. Mostra as interações entre atores e o sistema, sendo usado para modelar comportamento.
  • Diagrama de classes. O diagrama de classes modela a estrutura estática do sistema, não o seu comportamento.
  • Diagrama de máquina de estados. Modela o ciclo de vida de objetos com comportamento orientado por eventos.
Voltar à explicação
Relações include em casos de usoEscolha múltipla

Exame, 2019/20

Em modelação de casos de uso, as relações include servem para (justifique a resposta):

  • a) Representar comportamento opcional
  • b) Representar comportamento crítico
  • c) Representar comportamento obrigatório
  • d) Representar comportamento importado de outro sistema
A tua resposta

Solução

c) Representar comportamento obrigatório.

Quando vários casos de uso partilham algum comportamento comum, esse comportamento pode ser separado e descrito num novo caso de uso, que os primeiros incluem. Esse comportamento comum é sempre obrigatório e não pode ser removido.

  • Representar comportamento opcional. O comportamento opcional modela-se com relações extend, não include.
  • Representar comportamento crítico. O include não distingue comportamento crítico de outro tipo.
  • Representar comportamento obrigatório. Quando vários casos de uso partilham um comportamento comum, esse comportamento separa-se num novo caso de uso incluído por eles, e é sempre executado.
  • Representar comportamento importado de outro sistema. O comportamento incluído pode ou não vir de outro sistema, mas é sempre obrigatório.
Voltar à explicação

Scrum, XP e gestão ágil

Como funciona o Planning GameEscolha múltipla

Teste, 2022/23

Qual das seguintes afirmações sobre o funcionamento do Planning Game é VERDADEIRA?

  • a) Os gestores estimam o tamanho de cada história de utilizador
  • b) Os programadores contribuent para uma lista de funcionalidades que desejam
  • c) Os programadores decidem quando as funcionalidades devem ser entregues
  • d) O cliente prioriza quais as histórias de utilizador a implementar
A tua resposta

Solução

d) O cliente prioriza quais as histórias de utilizador a implementar.

No Planning Game, o cliente apresenta as histórias de utilizador por ordem de prioridade de negócio e os programadores estimam o esforço de cada uma. A combinação das duas perspetivas define o que entra em cada entrega.

  • Os gestores estimam o tamanho de cada história de utilizador. No Planning Game são os programadores que estimam o esforço.
  • Os programadores contribuent para uma lista de funcionalidades que desejam. A lista de funcionalidades vem do cliente, não dos programadores.
  • Os programadores decidem quando as funcionalidades devem ser entregues. As entregas resultam das iterações combinadas com o cliente.
  • O cliente prioriza quais as histórias de utilizador a implementar. No Planning Game o cliente ordena as histórias por valor de negócio e os programadores estimam o esforço de cada uma.
Voltar à explicação
Práticas que não são de XPEscolha múltipla

Teste, 2022/23

Qual das seguintes NÃO é uma prática de XP?

  • a) Test-driven Deployment
  • b) On-Site Customer
  • c) Planning Game
  • d) Continuous Integration
A tua resposta

Solução

a) Test-driven Deployment.

On-Site Customer, Planning Game e Continuous Integration são práticas de XP. O que existe é desenvolvimento orientado a testes (test-driven development), não "test-driven deployment".

  • Test-driven Deployment. O XP pratica desenvolvimento orientado a testes (TDD), não "test-driven deployment".
  • On-Site Customer. Ter o cliente presente na equipa é uma prática clássica de XP.
  • Planning Game. O Planning Game é a prática de planeamento conjunto de XP.
  • Continuous Integration. A integração contínua é uma prática central de XP.
Voltar à explicação
Quem escreve os testes no XPAutoavaliação

Exame, 2019/20

O XP previne regressões de software promovendo uma abordagem test-first. Quem deve participar nesse processo? Justifique a sua resposta.

Solução

A equipa de desenvolvimento, com contributos do cliente, escreve os testes antes de abordar novas funcionalidades.

São os programadores que escrevem os testes unitários antes de implementar cada nova funcionalidade. O cliente participa especificando os testes de aceitação: uma história de utilizador só está completa quando todos os testes de aceitação passam. Os testes unitários testam métodos, classes ou cenários específicos e são internos à equipa de desenvolvimento.

Confere a tua resposta:

  • A resposta indica que a equipa de desenvolvimento escreve os testes antes de implementar novas funcionalidades.
  • A resposta reconhece que o cliente participa especificando os testes de aceitação (customer tests).
  • A resposta refere que uma história de utilizador está completa quando todos os seus testes de aceitação passam.
Voltar à explicação
Como o Scrum tenta cumprir prazosEscolha múltipla

Exame, 2019/20

Não cumprir os prazos do projeto é possivelmente a falha mais reincidente no desenvolvimento de software. Como é que o Scrum tenta resolver esse problema? Justifique a resposta.

  • a) O Scrum garante apenas que existe um incremento do produto no fim de cada sprint, mas não a quantidade de funcionalidades
  • b) O Scrum Master é responsável por garantir que a equipa é eficiente e entrega o software a tempo
  • c) As estimativas de esforço e a velocidade podem ser usadas para prever quando o backlog ficará completo
  • d) Um processo bem definido garante eficiência no desenvolvimento e, por isso, o cumprimento do prazo
A tua resposta

Solução

c) As estimativas de esforço e a velocidade podem ser usadas para prever quando o backlog ficará completo.

Em cada sprint mede-se a velocidade e o esforço da equipa, para que nos sprints seguintes essa informação permita prever que progresso é possível fazer. Com este método, a equipa percebe melhor como avança e pode prioritar as próximas tarefas de forma mais informada, aumentando a probabilidade de cumprir os prazos e de estimar quando o backlog ficará completo.

  • O Scrum garante apenas que existe um incremento do produto no fim de cada sprint, mas não a quantidade de funcionalidades. O Scrum não se limita a garantir a existência do incremento; usa a medição para prever o progresso.
  • O Scrum Master é responsável por garantir que a equipa é eficiente e entrega o software a tempo. O Scrum Master facilita o processo, mas não é o responsável direto pela entrega a tempo.
  • As estimativas de esforço e a velocidade podem ser usadas para prever quando o backlog ficará completo. Em cada sprint mede-se a velocidade e o esforço da equipa para prever, nos sprints seguintes, quanto falta para completar o backlog.
  • Um processo bem definido garante eficiência no desenvolvimento e, por isso, o cumprimento do prazo. Um processo rígido não garante por si só o cumprimento dos prazos.
Voltar à explicação

Testes e arquitetura

Teste de caixa pretaEscolha múltipla

Teste, 2022/23

Qual das seguintes é uma abordagem de teste de caixa preta (black-box)?

  • a) Partição por classes de equivalência
  • b) Nenhuma das opções
  • c) Teste estrutural, por exemplo baseado em cobertura
  • d) Teste de mutação
A tua resposta

Solução

a) Partição por classes de equivalência.

No teste de caixa preta os casos de teste são escolhidos a partir da especificação do componente, sem olhar para o código. A partição por classes de equivalência agrupa as entradas equivalentes e escolhe representantes de cada classe. O teste estrutural e o teste de mutação são de caixa branca.

  • Partição por classes de equivalência. A partição por classes de equivalência deriva os casos de teste apenas da especificação, sem conhecer a estrutura interna do código.
  • Nenhuma das opções. Existe pelo menos uma opção correta.
  • Teste estrutural, por exemplo baseado em cobertura. O teste estrutural é de caixa branca, pois usa o conhecimento do código.
  • Teste de mutação. O teste de mutação também se apoia na estrutura interna do programa.
Voltar à explicação
Objetivo do teste de integraçãoEscolha múltipla

Teste, 2022/23

Qual é o objetivo do teste de integração?

  • a) Verificar o comportamento e a funcionalidade corretos de um widget ou ecrã específico
  • b) Testar a integração e a interação entre diferentes unidades ou componentes
  • c) Testar as unidades ou componentes individuais de forma isolada
  • d) Garantir que a aplicação cumpre os requisitos de desempenho e capacidade de resposta especificados
A tua resposta

Solução

b) Testar a integração e a interação entre diferentes unidades ou componentes.

O teste unitário testa cada unidade isoladamente, o teste de componentes testa widgets ou ecrãs, e o teste de desempenho mede tempos de resposta. O teste de integração junta as unidades já testadas e verifica se comunicam e funcionam corretamente em conjunto.

  • Verificar o comportamento e a funcionalidade corretos de um widget ou ecrã específico. Isso é objetivo do teste de componentes ou de interface.
  • Testar a integração e a interação entre diferentes unidades ou componentes. O teste de integração verifica se os componentes funcionam corretamente em conjunto.
  • Testar as unidades ou componentes individuais de forma isolada. O teste isolado de unidades é o teste unitário.
  • Garantir que a aplicação cumpre os requisitos de desempenho e capacidade de resposta especificados. Isso é objetivo do teste de desempenho.
Voltar à explicação
Padrão para interface interativaEscolha múltipla

Teste, 2022/23

Qual dos seguintes padrões é o mais adequado para arquitetar uma aplicação com uma interface de utilizador interativa?

  • a) Repository
  • b) Pipes and filters
  • c) Todas as outras opções
  • d) Model-View-Controller
A tua resposta

Solução

d) Model-View-Controller.

O padrão Model-View-Controller separa os dados (modelo), a apresentação (vista) e o controlo da interação (controlador), sendo o mais adequado para aplicações com interface de utilizador interativa. Repository e pipes and filters servem outros tipos de problema.

  • Repository. O padrão Repository organiza o acesso centralizado a dados, não a interface interativa.
  • Pipes and filters. Pipes and filters adequa-se a fluxos de processamento de dados em cadeia, não a interfaces interativas.
  • Todas as outras opções. Nem todos os padrões listados servem para interfaces interativas.
  • Model-View-Controller. O MVC separa o modelo, a vista e o controlador, sendo o padrão clássico para aplicações com interface interativa.
Voltar à explicação
Disciplinas mais ativas na construção do RUPAutoavaliação

Exame, 2019/20

No RUP, a fase de construção é aquela em que o software é desenvolvido mais ativamente. Identifique as disciplinas mais ativas durante esta fase e explique resumidamente porquê.

Solução

As disciplinas mais ativas são a conceção (analysis & design), a implementação e os testes.

Na fase de construção o software é desenvolvido mais ativamente, ou seja, é implementado. Ao mesmo tempo, é testado de forma extensiva segundo os critérios de avaliação definidos, e os produtos libertados são avaliados segundo os critérios de aceitação da visão, pelo que os testes também têm um papel importante. Além disso, deve haver atenção à gestão de recursos, ao controlo e à otimização do processo, análise que pode levar a alterações de conceção.

Confere a tua resposta:

  • A resposta identifica as disciplinas de conceção (analysis & design), implementação e testes.
  • A justificação refere que o software é implementado e testado segundo os critérios de avaliação definidos.
  • A justificação refere que podem surgir alterações de conceção a partir da análise do processo e dos recursos.
Voltar à explicação

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.