Engenharia de Software - 1 Flashcards
Introdução e Metodologias Ágeis
Quais são as dificuldades essenciais da área de Engenharia de Software?
- 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)
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.
- 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)
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.
- 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.
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.
- 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.