31
Rafael Recalde Caceres Estudo da Aplicação de Extreme Programming no Desenvolvimento Distribuído de Software

Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software

Embed Size (px)

Citation preview

Page 1: Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software

Rafael Recalde Caceres

Estudo da Aplicação de Extreme Programming no Desenvolvimento

Distribuído de Software

Page 2: 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

Page 3: Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software

Introdução

● Justificativas

– Ambiente de negócios mutável

– Como gerenciar equipes ágeis distribuídas?

– Como gerenciar imprevisibilidade?

Page 4: Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software

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;

Page 5: Estudo da Aplicação de Extreme programming 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

Page 6: Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software

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

Page 7: Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software

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

Page 8: Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software

19% das funcionalidades são raramente usadas

45% das funcionalidades nunca são usadas

Page 9: Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software

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

Page 10: Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software
Page 11: Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software

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

Page 12: Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software

Desenvolvimento de Software

● Metodologias Iterativas– Incremental

– Bom para encontrar erros no começo

– Acomodação para mudanças

Page 13: Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software

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

Page 14: Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software

Desenvolvimento de Software

● Iterativas X Ágeis– Ágeis: semanas/dias

– Iterativas: meses

– Ágeis: comunicação informal

– Iterativas: documentação

Page 15: Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software

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

Page 16: Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software

Extreme Programming

● Valores– Feedback

– Comunicação

– Simplicidade

– Coragem

Page 17: Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software

Extreme Programming

● Práticas– Cliente Presente

– Jogo do Planejamento

– Stand Up Meeting

– Programação em Par

– Desenvolvimento Guiado pelos Testes

– Refatoração

Page 18: Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software

Extreme Programming

● Práticas– Código Coletivo

– Código Padronizado

– Design Simples

– Metáfora

– Ritmo Sustentável

– Integração Contínua

– Releases Curtos

Page 19: Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software

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

Page 20: Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software

Desenvolvimento Distribuído de

Software (DSS)● Redução de 25% - 50% custos● Profissionais habilitados em outro idioma● Baixas taxas de turnover

● Incentivos fiscais

Page 21: Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software

● 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)

Page 22: Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software

● 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)

Page 23: Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software

● 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)

Page 24: Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software

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?

Page 25: Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software

● desafios culturais são comuns● literatura pessimista● métodos ágeis pode mudar o modelo de

comando e controle

Combinando DDS e Métodos Ágeis

Page 26: Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software

● 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

Page 27: Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software

● XP Distribuído (DXP)

Combinando DDS e Métodos Ágeis

Page 28: Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software

● 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

Page 29: Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software

● 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

Page 30: Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software

● 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

Page 31: Estudo da Aplicação de Extreme programming no Desenvolvimento Distribuído de Software

Futuro do Projeto

● Estudar outras metodologias ágeis, e combinar algumas

● Estudo de Caso em um projeto real