Introducao a projetos de desenvolvimento distribuído de software

40
1 Introdução a Projetos de Desenvolvimento Distribuído de Software Adailton Magalhães Lima Universidade Federal do Pará Campus Universitário de Castanhal Curso Bacharelado em Sistemas de Informação

description

Aula de introdução aos conceitos de desenvolvimento distribuído de software

Transcript of Introducao a projetos de desenvolvimento distribuído de software

Page 1: Introducao a projetos de desenvolvimento distribuído de software

1

Introdução a Projetos de Desenvolvimento Distribuído de Software

Adailton Magalhães Lima

Universidade Federal do ParáCampus Universitário de Castanhal

Curso Bacharelado em Sistemas de Informação

Page 2: Introducao a projetos de desenvolvimento distribuído de software

2

Introdução

Page 3: Introducao a projetos de desenvolvimento distribuído de software

3

Na Engenharia de Software, vem se destacando o chamado Desenvolvimento Distribuído de Software (DDS);

DDS implica na dispersão do desenvolvimento de componentes de software entre diversas localidades no mundo; [Moitra 2001] [Ebert 2006]

A B

C

Distância entre países

Distância no mesmo país

Contexto

Page 4: Introducao a projetos de desenvolvimento distribuído de software

4Dissertação PPGCC - Adailton Lima

Relação Organizacional:

In Sourcing; Outsourcing;

Distância geográfica: Onshore; Offshore;

Variantes: Outsourcing: Alliance,

Multi-Sourcing; In Sourcing: Join Venture;

4

A B

C

Distância entre países

Distância no mesmo país

[Hyder 2006][Audy 2007]

ContextoDiferentes Modelos Organizacionais

Page 5: Introducao a projetos de desenvolvimento distribuído de software

5Dissertação PPGCC - Adailton Lima

Contexto Coordenação de Projetos:

Distribuição dispersão física dos dados e as entidades

envolvidas no desenvolvimento de software [Ben-Shaul 1994];

relacionada com Sistemas Distribuídos [Coulouris 2005];

5

DistribuídoLocal

Page 6: Introducao a projetos de desenvolvimento distribuído de software

6Dissertação PPGCC - Adailton Lima

Contexto

6

[Rittgen 2007]

Negociação

Acordo

1

2

Cliente Fornecedor

Processo de Engenharia no Fornecedor3

4

Relatórios de Monitoração

Processo de Aquisição do MPS.BR

Page 7: Introducao a projetos de desenvolvimento distribuído de software

7

Desenvolvimento Distribuído de Software

Significa que o desenvolvimento de software está distribuído em diversos sítios diferentes localizados em cidades diferentes

Porque é interessante? Pela dificuldade da coordenação das atividades; O caso SERPRO:

Clientes em Brasília; Desenvolvimento em Belém;

Page 8: Introducao a projetos de desenvolvimento distribuído de software

8

8

Desenvolvimento Global de Software Significa que o desenvolvimento de software está

distribuído em diversos sítios localizados em países diferentes e até mesmo diferentes continentes.

Exemplo Lucent tem desenvolvimento nos EUA, Alemanha, Inglaterra,

Índia e Brasil; IBM desenvolve nos EUA, Irlanda e Canadá, e testa na China; Motorola desenvolve nos EUA e testa no Brasil (Recife); Dell desenvolve software nos EUA e no Brasil (POA); Siemens desenvolve software na Alemanha, Brasil, EUA,

Polônia, e vários outros países;

Page 9: Introducao a projetos de desenvolvimento distribuído de software

9

Níveis de Dispersão

Distância Física Inter-Atores;

Page 10: Introducao a projetos de desenvolvimento distribuído de software

10Projeto de Qualificação – Adailton M. Lima / PPGEE-UFPA

Mesma localização física: todos os atores estão em um mesmo lugar. Não existem dificuldades de reuniões e há comunicação constantes entre os membros.

Distância Nacional: as equipes distribuídas estão localizadas em um mesmo país. As reuniões acontecem com menos freqüência.

Distância Continental: as equipes distribuídas estão localizadas em países diferentes, mas nomes continente. As reuniões face a face ficam mais difíceis de acontecer e o fuso-horário pode dificultar a interação entre as equipes.

Distância Global: as equipes estão em países e continentes diferentes. As reuniões face a face geralmente acontecem no início do projeto e as dificuldades de comunicação e diferenças culturais podem ser barreiras para o projeto.

Níveis de Dispersão

Page 11: Introducao a projetos de desenvolvimento distribuído de software

11Dissertação PPGCC - Adailton Lima

ContextoCoordenação de projetos DDS

Atividades: atualização ; divulgação da situação do projeto;

São peças chave na manutenção do feedback entre as equipes distribuídas;[Sengupta 2006] [Ebert 2006]

11

Page 12: Introducao a projetos de desenvolvimento distribuído de software

12

12

Motivação

Compra de empresas e união (“merge”) de empresas para complementar produtos desenvolvidos por companhias;

Para a participação em determinados mercados, certas leis requerem o desenvolvimento de certas operações localmente;

Partes da organização devem estar perto de onde o mercado para elas existe;

Competição por profissionais competentes;

Page 13: Introducao a projetos de desenvolvimento distribuído de software

13

13

Motivação Organizações acreditam que a distribuição possa levar

a desenvolvimento de software em tempo integral (“round-the-clock development”), o que levaria a redução de custos;

Quando alguém pára de desenvolver na Califórnia, outra pessoa começa a desenvolver na Índia: Chamado de “siga o sol” (follow-the-sun); Em teoria diminui o tempo de desenvolvimento em 50%;

Page 14: Introducao a projetos de desenvolvimento distribuído de software

14

14

Problemas Diferença em Fusos Horários Comunicação

Informal Linguagem

Coordenação Cultura Confiança Encontrar pessoas (experts)

Page 15: Introducao a projetos de desenvolvimento distribuído de software

15

15

Efeitos da Distância Dificuldade na comunicação, através de email ou em

horários inadequados devido ao fuso horário; Perda da comunicação informal, que é essencial para a

coordenação do projeto; Dificuldade de saber quando contactar uma

determinada pessoa; Dificuldade de saber quem é responsável por um

determinado componente (quem projetou ou implementou) para resolver um problema.

Page 16: Introducao a projetos de desenvolvimento distribuído de software

16

16

Problemas de Cultura Culturas diferentes geralmente tem

comportamento diferente Alemães ligam para um desenvolvedor e dizem:

“Tem um problema no seu código”. Os ingleses esperam uma abordagem mais

“educada” onde uma pessoa sugere problemas no código da outra;

Diferenças no idioma e na forma de utilização do idioma;

Feriados e normas religiosas são diferentes;

Page 17: Introducao a projetos de desenvolvimento distribuído de software

17

17

Problemas

Em resumo Desenvolvimento de software distribuído é

mais lento que desenvolvimento quando colocado (Herbsleb e colegas, 2000);

Mas, é necessário!

Page 18: Introducao a projetos de desenvolvimento distribuído de software

18

Riscos em projetos DDS O que é Risco?

É a probabilidade de sofrer perdas diante dos objetivos do projeto;[Pandian 2007]

Riscos podem resultar em problemas de projeto tais como estouro de custo e prazos; [Huey-Ming 2009]

Avaliação de riscos deve prover apoio à quantificação destes impactos em objetivos do projeto; [Bohem 1991]

Page 19: Introducao a projetos de desenvolvimento distribuído de software

19

Riscos em projetos DDS Projetos DDS intensificam os riscos envolvidos nos

projetos de desenvolvimento de software; [Aspray 2006]

São criados novos riscos, que não são tratados adequadamente em projetos DDS; [Hussey 2008]

Continua um campo aberto para pesquisa a identificação de quais práticas de gerenciamento e processos se adequam melhor a projetos DDS; [Ramasubbu 2007]

Page 20: Introducao a projetos de desenvolvimento distribuído de software

20

Riscos em projetos DDS Segundo [Ebert 2008], dentre os principais riscos

envolvidos em projetos DDS podem-se destacar:① Estouro de prazo; ② Estouro de custo; ③ Baixa qualidade dos produtos;④ Problemas de coordenação causados pela

distância geográfica;⑤ Conflitos causados pela distância cultural;⑥ Alta rotatividade das equipes;⑦ Expertise insuficiente;⑧ Inflação de custos e salários;⑨ Dependência de fornecedores;

Page 21: Introducao a projetos de desenvolvimento distribuído de software

21

Riscos em projetos DDS Segundo [Ebert 2008], dentre os principais riscos

envolvidos em projetos DDS podem-se destacar:① Estouro de prazo; ② Estouro de custo; ③ Baixa qualidade dos produtos;④ Problemas de coordenação causados pela

distância geográfica;⑤ Conflitos causados pela distância cultural;⑥ Alta rotatividade das equipes;⑦ Expertise insuficiente;⑧ Inflação de custos e salários;⑨ Dependência de fornecedores;

Críticos em DDS

Page 22: Introducao a projetos de desenvolvimento distribuído de software

22

Exemplo de Projeto DDS

Page 23: Introducao a projetos de desenvolvimento distribuído de software

23

Observação na Siemens

• Caracterização do projeto e equipes:• 11 Equipes trabalhando de maneira distribuída;• 5 sites diferentes;• Não iniciaram o projeto de maneira sincronizada;

• Contexto organizacional• Projeto de desenvolvimento gerenciado em SCRUM;• Integração de várias sub-empresas adquiridas pela Siemens

que possuíam tecnologias complementares, mas em diferentes plataformas;

• O objetivo era integrar o conhecimento distribuído em apenas uma plataforma e tecnologia, capaz de tornar a empresa líder o setor.

Page 24: Introducao a projetos de desenvolvimento distribuído de software

24Projeto de Qualificação – Adailton M. Lima / PPGEE-UFPA

Milão

Bangalore

Pune

Princeton

Chicago

12

3

32

Contexto - Sites Envolvidos

X Número de equipes no mesmo site

Page 25: Introducao a projetos de desenvolvimento distribuído de software

25Projeto de Qualificação – Adailton M. Lima / PPGEE-UFPA

Milão

Bangalore

Pune

Princeton

Chicago

12

3

32

Contexto – Concentração dos testes de integração

Integração e Testes

X Número de equipes no mesmo site

Page 26: Introducao a projetos de desenvolvimento distribuído de software

26

Descrição do contexto Em projeto de desenvolvimento de software, onde o

desenvolvimento de um sistema é distribuído entre diferentes sites de acordo com expertise da equipe local.

Cada equipe trabalha com ciclos iterativos, contendo medição sobre: estimativas da capacidade de desenvolvimento da iteração; conjunto de requisitos pendentes das iterações anteriores (retrabalho); conjunto de requisitos desenvolvidos; conjunto de requisitos não finalizados; esforço estimado e real para cada tarefa; agrupamento de tarefas em:

Garantia da Qualidade; Overhead; Problemas; Desenvolvimento de Funcionalidades;

Page 27: Introducao a projetos de desenvolvimento distribuído de software

27

Riscos envolvidos em projetos DDS Estouro de prazo;

Atual Estouro de custo;

Adicionar custo médio ao tempo de trabalho das equipes Baixa qualidade dos produtos;

Adicionar taxa de erros ao modelo (já incluída nas planilhas);

Problemas de coordenação causados pela distância geográfica;

Medir impacto do delay em cada site e no projeto total do atraso de comunicação;

Dependência de fornecedores; Comparar resultados entre alocação a 1 site e outros

sites com menor ou expertise equivalente; Verificar o impacto das variaveis de netrada

Projeto de Qualificação – Adailton M. Lima / PPGEE-UFPA

[Ebert 2008]

Page 28: Introducao a projetos de desenvolvimento distribuído de software

28

Communication Workload alto [Hanakawa 2002] Utiliza informação de dependência entre tarefas e

produtos derivados destas;

Projeto de Qualificação – Adailton M. Lima / PPGEE-UFPA

Riscos envolvidos em projetos DDS

Page 29: Introducao a projetos de desenvolvimento distribuído de software

29

Outros fatores a considerar em riscos de projetos DDS

Outros fatores a influenciar comunicação remota: Qualidade dos produtos; Nível de abertura de comunicação; Experiência passada com assunto ou funcionalidade;

Considerar custos na avaliação de riscos; Novas heurísticas encontradas na literatura [Verner 2012]

Definir pontos de sincronização das equipes; Minimizar número de sites distribuídos; Colocalização temporária de equipes em fases críticas; Resolver problemas imediatamente; Etc...

Page 30: Introducao a projetos de desenvolvimento distribuído de software

30

Coleta de Dados Entrevistas com participantes do projeto;

Planilhas gerenciais contendo: base de dados de gerência das atividades de 10

releases para 5 sites (12 equipes) distribuídos; Listagem de requisitos do sistema;

Tácito: conversas informais com arquiteto de software do projeto durante análise de dados;

Page 31: Introducao a projetos de desenvolvimento distribuído de software

31

Entrevistas - Algumas afirmações

Entre as equipes, as mais motivadas tinham que compensar a produtividade das menos motivadas; [Gerente]

Entre todas as equipes havia contexto similar de pressão, onde algumas possuíam melhores recursos que outras; [Gerente]

A equipe de integração era a única responsável por integrar e testar o software; [Testador 1]

A diferença de produtividade interna pode ser causada por: estimativas super-otimistas e pela baixa qualidade dos produtos entregues para testes; [Testador 1]

O gerente não deixava tirar dúvidas diretamente com os desenvolvedores do PCT1, pois achava que tomava tempo deles; [Testador 1]

Produtos com baixa qualidade demandaram mais sessões de conversa remota. Em muitos casos precisou de demonstrações pra entender as funcionalidades; [Testador 2]

Quando funcionalidades estavam quebradas tiveram dificuldades em contatar as pessoas corretas pra tratar do problema; [Testador 2]

Comunicação

Produtividade

Centralização

Page 32: Introducao a projetos de desenvolvimento distribuído de software

32

Relações lógicas do modeloPara cada time de Desenvolvimento ou Integração e Testes Produtividade

A produtividade real é impactada negativamente por outros fatores, tais como a necessidade de comunicação com outras equipes e o overhead de outras atividades do processo;

Comunicação Durante atividades de desenvolvimento, existem momentos em que é necessário se comunicar com

outros times para esclarecer dúvidas sobre a tarefa específica que se está atuando; Timezone

Quanto maior a diferença de timezone com a outra equipe a qual faz-se uma requisição de informação, maior a probabilidade da outra equipe não estar disponível online para responder as questões solicitadas. Desta forma demora-se mais tempo para responder a uma requisição de comunicação;

Expertise Quanto menor o expertise de um time na tarefa que lhe foi delegada, maior a probabilidade deste time

precisar realizar requisições a outras equipes mais experientes para sanar dúvidas; Overhead

Existe o overhead de outras atividades durante o desenvolvimento de software, que podem ser overheads locais ou inerentes ao DDS. Como exemplo de overhead local podem-se citar: reuniões locais e tarefas para resolução de problemas de infraestrutura. Como exemplo de overhead inerente ao DDS podem-se citar: viagens, reuniões com pessoas de outros sites e contato de suporte de outros times remotos.

Page 33: Introducao a projetos de desenvolvimento distribuído de software

33

Conclusões

Page 34: Introducao a projetos de desenvolvimento distribuído de software

34

34

Soluções para DDS Tecnologias Colaborativas e Infra-Estrutura de

Tele-Comunicações; Dinâmicas de Grupo para Motivação de Times

(team building); Pessoas que viajam para outros sites com certa

frequência para servem como “ponte” para a facilitar a colaboração entre os sites;

Ajuda a estabelecer confiança entre os times;

Page 35: Introducao a projetos de desenvolvimento distribuído de software

35

35

Soluções para DDS

Lideranças; Arquitetura do Software e Alocação de Tarefas; Utilização de Metodologias de

Desenvolvimento de Software (Processo de Software);

Page 36: Introducao a projetos de desenvolvimento distribuído de software

36

36

Conclusões Desenvolvimento de software é uma atividade

colaborativa que requer ferramentas, abordagens, e técnicas para seu sucesso; Como treinar estudantes e profissionais?

Desenvolvimento de software é hoje uma tarefa globalizada Problemas difíceis, mas as soluções estão sendo

encontradas; Excelente Oportunidade de Negócios!

Page 37: Introducao a projetos de desenvolvimento distribuído de software

3737

Conclusões No contexto da globalização, a distribuição dos processos

de desenvolvimento de software em locais estrategicamente distribuídos tem se tornado uma prática cada vez mais comum;

Com o desenvolvimento distribuído de software, os problemas tradicionais da ES aumentaram e foram gerados novos desafios para a área;

A existência de um processo de desenvolvimento de software único e bem definido responde por grande parte dos resultados obtidos em um projeto de desenvolvimento distribuído;

Page 38: Introducao a projetos de desenvolvimento distribuído de software

3838

Conclusões Os requisitos são vistos como um grande desafio,

envolvendo atividades desde a realização de reuniões até a formalização (documentação) dos requisitos definidos, a rastreabilidade e controle dos mesmos;

Um processo único e bem definido de acordo com o ambiente em que o projeto está sendo desenvolvido pode ser a solução para muitas dificuldades do desenvolvimento distribuído;

Ferramentas de apoio atuam como facilitador na interação distribuída;

Page 39: Introducao a projetos de desenvolvimento distribuído de software

39

39

Conclusões Mercado precisa de profissionais capazes de

liderar ou apenas trabalhar em projetos DDS;

Aquisição de conhecimento/expertise demanda experiência e um contexto de projetos prática que não são facilmente encontrados na academia;

Page 40: Introducao a projetos de desenvolvimento distribuído de software

40

Introdução a Projetos de Desenvolvimento Distribuído de Software

Adailton Magalhães Lima

Universidade Federal do ParáCampus Universitário de Castanhal

Curso Bacharelado em Sistemas de Informação