Desenvolvimento ágil e pontos de função: gerenciando o projeto de maneira ági...
Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software
1. Rafael Recalde Caceres
Estudo da Aplicação de Extreme
Programming no Desenvolvimento
Distribuído de Software
2. Introdução
● Motivação
– Busca de técnicas para reduzir os custos
– Tornar o desenvolvimento mais produtivo
– Reduzir distâncias e melhorar a comunicação
em equipes distribuídas
3. Introdução
● Justificativas
– Ambiente de negócios mutável
– Como gerenciar equipes ágeis distribuídas?
– Como gerenciar imprevisibilidade?
4. Introdução
● Objetivos
– Estudar metodologias ágeis;
– Estudar o desenvolvimento distribuído de
software (DDS);
– Analisar os efeitos do uso de metodologias
ágeis no desenvolvimento distribuído de
software;
5. Introdução
● Roteiro
– Desenvolvimento de Software
– Extreme Programming
– Desenvolvimento Distribuído de Software
– Combinado Desenvolvimento Distribuído de
Software e Métodos Ágeis
– Conclusão
6. Desenvolvimento de Software
● Metodologias de Desenvolvimento
– Estudo dos métodos
– Técnica de como fazer
– Conjunto de Tarefas
● comunicação, análise de requisitos, modelagem
de projeto, construção de programas, testes e
manutenção
7. Desenvolvimento de Software
● O Caos
– Codifica/corrige
– Crise do Software
– CHAOS Report
● 15% dos projetos falha totalmente
● 51% estouram orçamento ou cronograma
● apenas 34% atingem sucesso
9. Desenvolvimento de Software
● Metodologias Tradicionais
– Modelo em Cascata
● Mais famoso e mais antigo e mais utilizado
● Assume que a engenharia de software é igual a
outras engenharias
● Linear, especialista, com foco na execução e
maximização da produção
● Reconhecidamente ineficaz
10.
11. Desenvolvimento de Software
● Metodologias Tradicionais
– Problemas
● Trabalho Manual x Trabalho do Conhecimento
● Trabalhador Manual
– trabalho físico e repetitivo
– não depende de muito conhecimento
– fácil de automatizar
● Trabalhador do Conhecimento
– Uso intensivo de conhecimento e criatividade
● Desenvolvimento de Software é feito por
Trabalhadores do Conhecimento
12. Desenvolvimento de Software
● Metodologias Iterativas
– Incremental
– Bom para encontrar erros no começo
– Acomodação para mudanças
13. Desenvolvimento de Software
● Metodologias Ágeis
– Manifesto Ágil
● Indivíduos e interações em vez de
processos e ferramentas
● Softwares funcionando em vez de
documentação abrangente
● Colaboração com o cliente em vez de
negociação de contratos
● Resposta a modificações em vez de
seguir um plano
– Jogo com objetivo, finito, cooperativo de
invenção e comunicação
14. Desenvolvimento de Software
● Iterativas X Ágeis
– Ágeis: semanas/dias
– Iterativas: meses
– Ágeis: comunicação informal
– Iterativas: documentação
15. Extreme Programming
● Voltado para:
– Requisitos vagos e mudanças freqüentes
– Sistemas orientados a objeto
– Equipes pequenas
– Desenvolvimento incremental
● Kent Beck e Ward Cunningham
● Práticas do Smalltalk
● C3
17. Extreme Programming
● Práticas
– Cliente Presente
– Jogo do Planejamento
– Stand Up Meeting
– Programação em Par
– Desenvolvimento Guiado pelos Testes
– Refatoração
19. Desenvolvimento Distribuído de
Software (DSS)
● Teletrabalho e Comércio Eletrônico
– Trabalho de volta ao lar
– Ligação por tecnologias
– Artesanato imaterial
● Trabalhador Conhecimento
– Trancado não produz
– Ao contrário do trabalhador manual
● Mercados Globais
20. Desenvolvimento Distribuído de
Software (DSS)
● Redução de 25% - 50% custos
● Profissionais habilitados em outro idioma
● Baixas taxas de turnover
● Incentivos fiscais
21. Desenvolvimento Distribuído de
Software (DSS)
● Características
– colaboração e cooperação entre
departamentos globais
– pequenos grupos que trabalham em conjunto
em localizações diferentes
– dispersão
● geográfica
● temporal
● culturais
22. Desenvolvimento Distribuído de
Software (DSS)
● Características
– 3 formas principais
● outsourcing
● join-venture
● insourcing
– Do ponto de vista geográfico
● offshore
● onshore (offsite ou onsite)
23. Desenvolvimento Distribuído de
Software (DSS)
● Desafios
– interdependência entre os itens distribuídos,
– dificuldade de coordenação
– divisão de trabalho em modulos
– comunicação
24. Combinando DDS e Métodos Ágeis
● Algumas questões
– Como realizar a comunicação efetivamente?
– Que práticas de comunicação e mídia são
apropriadas?
– Como a comunicação informal pode ser
incentivada?
– Como os riscos por enganos na comunicação
podem ser minimizados?
– Como a confiança pode ser construída e
mantida para garantir uma comunicação
aberta?
25. Combinando DDS e Métodos Ágeis
● desafios culturais são comuns
● literatura pessimista
● métodos ágeis pode mudar o modelo de
comando e controle
26. Combinando DDS e Métodos Ágeis
● XP Distribuído (DXP)
– poucos estudos
– redução no tempo de resposta da
comunicação
– comunicação de qualidade entre clientes e
times de desenvolvedores distribuídos
– todas as experiências estudas tiveram
sucesso
28. Combinando DDS e Métodos Ágeis
● XP Distribuído (DXP)
– Cliente Presente > Cliente Virtualmente
Presente
– Jogo do Planejamento > Vídeo
Conferência, compartilhamento de desktop,
VOIP
– Programação em Par > Compartilhamento
de Desktop
– Stand Up Meeting > email, wiki, IRC
29. Combinando DDS e Métodos Ágeis
● XP Distribuído (DXP)
– Comunicação: possível com vídeo e áudio
conferência
– Simplicidade: não é afetada
– Feedback: caso a comunicação seja efetiva,
não é afetado
– Coragem: ainda mais necessária
30. Conclusão
● DXP não é tão efetivo quanto XP
● DXP não perde os valores básicos do XP
● DXP é mais efetivo que outras
metodologias em ambiente distribuído
● DXP está tendo sucesso
31. Futuro do Projeto
● Estudar outras metodologias ágeis, e
combinar algumas
● Estudo de Caso em um projeto real