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

  • View
    500

  • Download
    1

  • Category

    Travel

Preview:

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

Recommended