Upload
rafael-caceres
View
500
Download
1
Embed Size (px)
Citation preview
Rafael Recalde Caceres
Estudo da Aplicação de Extreme Programming no Desenvolvimento
Distribuído de Software
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
Introdução
● Justificativas
– Ambiente de negócios mutável
– Como gerenciar equipes ágeis distribuídas?
– Como gerenciar imprevisibilidade?
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;
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
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
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
19% das funcionalidades são raramente usadas
45% das funcionalidades nunca são usadas
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
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
Desenvolvimento de Software
● Metodologias Iterativas– Incremental
– Bom para encontrar erros no começo
– Acomodação para mudanças
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
Desenvolvimento de Software
● Iterativas X Ágeis– Ágeis: semanas/dias
– Iterativas: meses
– Ágeis: comunicação informal
– Iterativas: documentação
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
Extreme Programming
● Valores– Feedback
– Comunicação
– Simplicidade
– Coragem
Extreme Programming
● Práticas– Cliente Presente
– Jogo do Planejamento
– Stand Up Meeting
– Programação em Par
– Desenvolvimento Guiado pelos Testes
– Refatoração
Extreme Programming
● Práticas– Código Coletivo
– Código Padronizado
– Design Simples
– Metáfora
– Ritmo Sustentável
– Integração Contínua
– Releases Curtos
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
Desenvolvimento Distribuído de
Software (DSS)● Redução de 25% - 50% custos● Profissionais habilitados em outro idioma● Baixas taxas de turnover
● Incentivos fiscais
● 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
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)
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
Desenvolvimento Distribuído de
Software (DSS)
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?
● desafios culturais são comuns● literatura pessimista● métodos ágeis pode mudar o modelo de
comando e controle
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
Combinando DDS e Métodos Ágeis
● XP Distribuído (DXP)
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
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
Combinando DDS e Métodos Ágeis
● 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
Conclusão
Futuro do Projeto
● Estudar outras metodologias ágeis, e combinar algumas
● Estudo de Caso em um projeto real