Quais são as dificuldades essenciais da área de Engenharia de Software?
Qual a diferença entre requisitos funcionais e requisitos não-funcionais? Dê exemplos.
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).
No contexto de projeto de software, qual a diferença entre uma interface provida e uma interface requerida?
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.
Qual a diferença entre verificação e validação de software?
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.
Cite 3 tipos de manutenção que podem ser realizadas em um software.
Quais são os 4 principais pontos do Manifesto Ágil?
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.
Dê três exemplos de características presentes em todas as metodologias ágeis.
Dê três exemplos de práticas de programação do XP.
Design incremental, programação pareada, desenvolvimento dirigido por testes (TDD), build automatizado, integração contínua.
Dê 3 exemplos de práticas de desenvolvimento do XP.
Representante dos clientes, histórias dos usuários, iterações, releases, planejamento de releases, planejamento de iterações, planning poker, slack.
Dê três exemplos de práticas de Gerenciamento de Projetos do XP.
Métricas, ambiente de trabalho, contratos com escopo aberto.
No contexto de desenvolvimento ágil, o que são as histórias de usuário (user stories)?
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).
Qual a diferença entre histórias de usuários e tarefas?
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.
No contexto de desenvolvimento ágil, para que serve o representante dos clientes? Qual a sua principal entrega em uma sprint?
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.
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.
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.
Dê 3 exemplos de pontos que devem ser alinhados antes de começar a usar XP num ambiente de trabalho.
Como um projeto XP é subdivido? Quanto tempo dura cada etapa?
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).
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?
É 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.
No contexto de práticas de programação, o que significa Pair Programming? Quais são seus principais pontos positivos e negativos?
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.
Defina e explique os três papéis do Scrum.
Defina e explique 3 artefatos do Scrum.
Defina e explique os 5 principais eventos do Scrum.
O que é, como funciona e para que serve um teste A/B?
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.
O que é, como funciona e para que serve um teste 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.