Questão EXtreme Programming (XP) Concurso Público BNDS
Autor: Thaísa | Publicado: 2011-10-25T04:18:00-07:00

Assuntos relacionados: Desenvolvimento de Sistemas, Metodologia de Desenvolvimento
de Software, Extreme Programming (XP),
Banca: Cesagranrio
Instituição: BNDES
Cargo: Analista de Sistemas - Desenvolvimento
Ano: 2008
Questão: 31
Que situação favorece a escolha do uso de XP para um projeto de desenvolvimento de
software, em oposição à escolha do RUP ou do modelo Cascata?
(a). Equipe do projeto localizada em diferentes cidades e com poucos recursos de colabora
ção.
(b). Equipe do projeto formada por pessoas com alto grau de competitividade.
(c). Cliente do projeto trabalhando em parceria com a equipe do projeto e sempre
disponível para retirar dúvidas.
(d). Requisitos do software com pequena probabilidade de mudanças.
(e). Presença de um processo organizacional que exige a elaboração de vários documentos
especí cos para cada projeto.
Solução:
O Rational Unified Process (RUP) é um framework muito difundido e utilizado que pode
ser adaptado a vários tipos de projetos de software. Podem ser derivados do RUP processos
para projetos de vários portes, pois este framework de nele uma grande lista de papéis,
artefatos, atividades e usos. No entanto, o RUP é tido como muito complexo, e costuma
ser visto como um pesado e burocrático, ao contrário das metodologias ágeis.
Em contrapartida, o EXtreme Programming (XP) aparece como uma alternativa mais leve
para times de tamanho pequeno e médio porte, que desenvolvem software em um contexto
de requisitos vagos e rapidamente modi cados. O XP enfatiza a codi cação e os testes de
códigos, considerando a presença constante dos clientes no desenvolvimento fundamental.
Pela característica de simplicidade que esta técnica apresenta, poucos artefatos, papéis e
atividades são de nidos. Portanto, a resposta da questão é a alternativa C.
Ainda sobre o XP, são muito úteis ainda as seguintes informações. Os quatro valores fundamentais
da metodologia XP são a comunicação, simplicidade, feedback e coragem. Para
fazer valer tais valores, a metodologia adota como práticas as seguintes:
Jogo de Planejamento: O desenvolvimento é feito em iterações semanais. No início
da semana, desenvolvedores e cliente reúnem-se para priorizar as funcionalidades. O
escopo é reavaliado semanalmente, e o projeto é regido por um contrato de escopo
negociável;
Pequenas Versões: A liberação de pequenas versões funcionais do projeto auxilia
muito no processo de aceitação por parte do cliente, que já pode testar uma parte do
sistema que está comprando;
Metáforas: A metologia prega o uso de metáforas, como forma de facilitar a comunica
ção com o clientes;
Time Coeso: A equipe de desenvolvimento é formada pelo cliente e pela equipe de
desenvolvimento;
Ritmo Sustentável: Trabalhar com qualidade, buscando ter ritmo de trabalho saudável,
sem horas extras. Horas extras são permitidas quando trouxerem produtividade para
a execução do projeto;
Reuniões em pé: Reuniões em pé para não se perder o foco nos assuntos, produzindo
reuniões rápidas, apenas abordando tarefas realizadas e tarefas a realizar pela equipe;
Posse Coletiva do Código: O código fonte não tem dono e ninguém precisa solicitar
permissão para poder modi car o mesmo. Tal prática tem como objetivo fazer com
que a equipe conheça todas as partes do sistema;
Programação em Duplas: Geralmente a dupla é formada por um iniciante na linguagem
e outra pessoa funcionando como um instrutor. Como é apenas um computador,
o novato é que ca à frente fazendo a codi cação, e o instrutor acompanha
ajudando a desenvolver suas habilidades. Desta forma o programa sempre é revisto
por duas pessoas, evitando e diminuindo assim a possibilidade de erros;
Padrões de Codificação: A equipe de desenvolvimento precisa estabelecer regras
para programar e todos devem seguir estas regras. Desta forma, parecerá que todo o
código foi editado pela mesma pessoa, mesmo quando a equipe possui uma quantidade
maior de programadores;
Refatoração: É um processo que permite a melhoria continua da programação, que
tem como alvos a melhoria da legibilidade do código, maiores modularização e reaproveitamento
do código.