Engenharia de Software - 1 Flashcards

Introdução e Metodologias Ágeis

1
Q

Quais são as dificuldades essenciais da área de Engenharia de Software?

A
  • Complexidade (desenvolver software é uma atividade complexa)
  • Conformidade (o software precisa se adaptar a todo momento ao mundo real)
  • Facilidade de mudanças (o software pode receber novas features a todo momento)
  • Invisibilidade (por ser algo invisível, é por vezes difícil medir o tempo e o esforço necessário para construir)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Qual a diferença entre requisitos funcionais e requisitos não-funcionais? Dê exemplos.

A

Requisitos funcionais são requisitos que definem o que o sistema deve fazer (por exemplo, ele deve exibir o saldo do usuário). Não-funcionais se referem a como o sistema deve fazer (por exemplo, a consulta ao saldo deve levar no máximo 2 segundos).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

No contexto de projeto de software, qual a diferença entre uma interface provida e uma interface requerida?

A

Interfaces providas são serviços que um código disponibiliza para uso do sistema. Interfaces requeridas são interfaces que um software precisa para funcionar.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Qual a diferença entre verificação e validação de software?

A

Verificação checa se o sistema atende aos requisitos especificados pelo cliente. Validação checa se esses requisitos se alinham com o que o cliente realmente busca.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Cite 3 tipos de manutenção que podem ser realizadas em um software.

A
  • Corretiva (corrigir bugs que impactaram o usuário)
  • Preventiva (corrigir bugs que não impactaram o usuário ainda)
  • Adaptativa (adaptar o sistema a uma mudança de ambiente)
  • Refactoring (melhorar a qualidade do código sem mudar a funcionalidade)
  • Evolutiva (introdução de novas funcionalidades)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Quais são os 4 principais pontos do Manifesto Ágil?

A

Valorizar:
- Indivíduos e interações, mais do que processos e ferramentas
- Software em funcionamento, mais do que documentação abrangente
- Colaboração com o cliente, mais do que negociação de contratos
- Resposta a mudanças, mais do que seguir um plano.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Dê três exemplos de características presentes em todas as metodologias ágeis.

A
  • Adoção de ciclos curtos e iterativos de desenvolvimento.
  • Menor ênfase em documentação
  • Menor ênfase em planos detalhados
  • Inexistência de uma fase dedicada a design
  • Desenvolvimento em times pequenos
  • Ênfase em práticas alternativas de desenvolvimento como programação em pares, testes automatizados e integração contínua.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Dê três exemplos de práticas de programação do XP.

A

Design incremental, programação pareada, desenvolvimento dirigido por testes (TDD), build automatizado, integração contínua.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Dê 3 exemplos de práticas de desenvolvimento do XP.

A

Representante dos clientes, histórias dos usuários, iterações, releases, planejamento de releases, planejamento de iterações, planning poker, slack.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Dê três exemplos de práticas de Gerenciamento de Projetos do XP.

A

Métricas, ambiente de trabalho, contratos com escopo aberto.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

No contexto de desenvolvimento ágil, o que são as histórias de usuário (user stories)?

A

São artefatos através dos quais o representante dos clientes define o que o produto deve fazer. Elas são compostas por três elementos, cartão (descrições curtas em 2 ou 3 frases do que o sistema deve fazer, escritas em papel), conversa (onde o time esclarece qualquer dúvida sobre as descrições) e confirmação (uma forma definida pelo cliente de validar o processo).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Qual a diferença entre histórias de usuários e tarefas?

A

Histórias são descrições feitas pelo representante dos clientes sobre o que o sistema deve fazer. Tarefas são as etapas que os programadores devem fazer para alcançar o objetivo da história.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

No contexto de desenvolvimento ágil, para que serve o representante dos clientes? Qual a sua principal entrega em uma sprint?

A

O representante dos clientes entende o que o cliente busca e o que o sistema deve conter para satisfazer suas necessidades. Sua principal entrega é a definição das histórias de usuários no início e suas validações ao final.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Os story points se referem a quantas horas um desenvolvedor deve levar em média para concluir uma story. Essa afirmação é verdadeira ou falsa? Justifique.

A

Falsa. Story points medem a complexidade de uma story específica em comparação com as outras stories, não necessariamente o tempo de implementação.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Dê 3 exemplos de pontos que devem ser alinhados antes de começar a usar XP num ambiente de trabalho.

A
  • Definir a duração de uma iteração.
  • Definir o número de iterações de uma release.
  • Conseguir um conjunto de histórias, escritas pelo representante dos clientes.
  • Estimar cada história, tarefa feita pelos desenvolvedores.
  • Definir a velocidade do time, isto é, o número de story points que ele consegue implementar por iteração.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Como um projeto XP é subdivido? Quanto tempo dura cada etapa?

A

Ele é subdividido em releases (conjunto de iterações, dura alguns meses), iterações (conjuntos de tarefas, duração de algumas semanas) e tarefas (duração de alguns dias).

17
Q

No contexto de práticas de programação, o que significa Design Incremental? Que condição é necessária para que ele seja implementado com sucesso?

A

É um processo de programação que consiste em pensar no design do software conforme as necessidades forem aparecendo ao invés de fazer um grande processo no início da sprint. Para que essa prática funcione, é importante que práticas como refactoring também estejam em vigor para que o código esteja sempre alinhado com a visão atual de seu design.

18
Q

No contexto de práticas de programação, o que significa Pair Programming? Quais são seus principais pontos positivos e negativos?

A

Pair programming consiste em dois desenvolvedores programarem juntos. Um é responsável pela escrita do código enquanto o outro oferece uma segunda visão enquanto orienta. O principal ponto negativo é o custo de colocar dois programadores para fazer uma tarefa. Pontos positivos incluem código de melhor qualidade, boa forma de treinar novos desenvolvedores e disseminação do conhecimento do código.

19
Q

Defina e explique os três papéis do Scrum.

A
  • Dono do Produto -> Responsável por escrever e validar as histórias de usuários.
  • Scrum Master -> Responsável por validar e intervir para que o time esteja continuamente usando o Scrum de forma apropriada
  • Desenvolvedor -> Responsável por desenvolver o produto em questão
20
Q

Defina e explique 3 artefatos do Scrum.

A
  • Backlog do Produto -> Lista de histórias ordenadas por prioridade
  • Backlog do Sprint -> Lista com as tarefas do sprint onde consta a duração.
  • Quadro Scrum -> Quadro onde as tarefas são categorizadas em “a fazer”, “fazendo” e “finalizadas”
  • Gráfico de Burndown -> Gráfico que exibe quantas horas são necessárias para implementar as tarefas que ainda não foram finalizadas.
21
Q

Defina e explique os 5 principais eventos do Scrum.

A
  • Planejamento do Sprint -> Reunião na qual o time decide as histórias que serão implementadas na sprint que vai se iniciar.
  • Sprint -> Iteração de desenvolvimento, ao final da qual deve-se entregar um produto com valor real para o cliente
  • Reuniões Diárias -> Reuniões na qual cada membro da equipe deve dizer o que ele fez no dia anterior, o que ele pretende fazer no dia corrente e se ele está enfrentando algum problema na sua tarefa.
  • Revisão do Sprint -> Reunião para mostrar os resultados de um sprint.
  • Retrospectiva -> Reunião do time com o objetivo de refletir sobre o sprint que está terminando e identificar pontos de melhorias para as próximas.
22
Q

O que é, como funciona e para que serve um teste A/B?

A

Testes A/B são uma forma de decidir, entre duas versões diferentes do mesmo produto, qual melhor atende aos usuários. Ele consiste no desenvolvimento de duas versões, uma base e uma com características diferentes. Quando um usuário acessa o sistema, o sistema decide de forma aleatória qual versão ele usará.

Após o sistema ser usado por vários usuários, usa-se então uma métrica (como taxa de conversão ou tempo de permanência) para verificar se a versão alternativa possuiu um desempenho melhor ou pior que a versão base.

23
Q

O que é, como funciona e para que serve um teste A/A?

A

Um teste A/A é uma variação do teste A/B em que só se usa uma versão. Ele serve para validar se as métricas do teste A/B estão corretamente calibradas, visto que o teste A/A deve falhar com 95% de segurança.