• Nenhum resultado encontrado

Esta seção apresenta a revisão da literatura relacionada ao desenvolvimento distribuído de software. Inicialmente será apresentada uma visão geral e posteriormente os desafios relacionados ao DDS.

2.3.1

Visão Geral

A gestão, desenvolvimento e manutenção de software têm evoluído durante as duas últimas décadas em se concentrar em um único local para ser distribuído geograficamente (SENGUPTA et al., 2006). De acordo com Cavrak et al. (2012, p.1) “a demanda de mercado para o desenvolvimento de software distribuído, conhecimento e habilidades é alta e crescente”. Segundo os autores os projetos estão cada vez mais multidisciplinares o que torna difícil encontrar especialistas no mesmo lugar.

O processo distribuído de software é uma prática que está cada vez mais presente em organizações ao redor do mundo (AUDY & PRIKLADNICKI, 2007). As empresas de software vêm adotando muitas estratégias em busca de diferenciais para manter-se no mercado. Dentre elas uma que vem adquirindo muitos adeptos e estimulando muitas pesquisas é o DDS (LIVIERO, 2007). As equipes virtuais ou distribuídas são equipes dispersas geograficamente que trabalham em conjunto com o auxílio da tecnologia da informação e da comunicação no intuito de realizar as atividades atribuídas (POWELL et al. 2004).

A distribuição das equipes em DDS pode ser estabelecida de acordo com a distância, tais como a nacional, continental e global. A distância nacional é caracterizada pela localização das equipes no mesmo país, podendo haver diferenças de fuso horário e aspectos culturais que são mais gerenciáveis; na distância continental, as diferenças de fuso e culturais já podem gerar dificuldades no projeto, pois, a mesma é caracterizada pela distribuição dos membros dentro de um mesmo continente; e na distância global, a comunicação entre os membros podem ser limitadas devido a grandes distâncias temporais e diferenças culturais mais acentuadas, criando obstáculos para o sucesso do projeto (AUDY & PRIKLADNICKI, 2007). Existem várias razões para o crescimento de projetos de software com equipes distribuídas, entre elas: vantagens competitivas em termos de custos, melhor utilização global da disponibilidade limitada de recursos humanos, qualidade e flexibilidade no desenvolvimento de software, maior quantidade de horas de trabalho disponíveis de acordo com os diferentes fusos horários, incentivos para investimentos em mercados emergentes, um crescimento significativo na demanda de software no mundo e diminuição de riscos do projeto (SENGUPTA et al. (2006); HERBSLEB & MOITRA (2001)).

Devido aos benefícios mostrados, diversas empresas estão distribuindo seus projetos de desenvolvimento de software, tanto local quanto globalmente. De acordo com Carmel (1999), quando a distância física entre os atores em um ambiente de DDS envolve mais de um país colaborando ativamente em um projeto comum, pode ser chamada de DGS (Desenvolvimento Global de Software).

De acordo com Farias Júnior et al. (2010), o número de empresas em busca de certificações de qualidade, como por exemplo, os modelos de maturidade Capability Maturity Model Integration (CMMI) e Melhoria de Processos do Software Brasileiro (MPS.BR) é notório e de acordo com os autores esses modelos não dão uma atenção satisfatória para o DDS, apesar desses modelos manterem algumas práticas de maturidade para os processos de

comunicação, as variáveis externas, como geográfica e/ ou dispersão temporal e as diferenças culturais têm um grande impacto e não são devidamente contempladas, sendo assim, não é possível fornecer um processo de comunicação adequado para a DDS.

O desenvolvimento distribuído de software pode basicamente se enquadrar em quatro modelos de negócio. Onshore Insourcing, Offshore Insourcing, Onshore Outsourcing e Offshore Outsourcing. O modelo Onshore Insourcing é caracterizado quando há um departamento dentro da empresa ou uma subsidiária da empresa no mesmo país. No modelo Offshore Insourcing há uma subsidiária da empresa que fornece serviços de desenvolvimento de software em um país diferente da empresa contratante desses serviços. No modelo Onshore Outsourcing há a contratação de uma empresa terceirizada localizada no mesmo país da empresa contratante. E o modelo Offshore Outsourcing aborda contratação de uma empresa terceirizada localizada em um país diferente da contratante (AUDY; PRIKLADNICKI, 2007). Do ponto de vista de operacionalização do DDS nas organizações, o desenvolvimento Offshore tem sido considerado uma das formas mais comuns para caracterizar o DDS (PRIKLADNICKI, 2009).

Diante do exposto, o DDS está sendo adotado por várias empresas devido às vantagens que este tipo de desenvolvimento proporciona como: a baixa dos custos e o aumento da produtividade, incentivo entre outros.

2.3.2

Desafios de DDS

De acordo com Carmel (1999), os profissionais de Engenharia de Software possuem diversas dificuldades, independente se os mesmos trabalham com o desenvolvimento de software tradicional quanto com o distribuído, sendo as principais diferenças entre eles: a dispersão geográfica; dispersão temporal; e diferenças culturais entre os membros.

A literatura relata vários desafios relacionados com o DDS. Sengupta et al. (2006), apresenta em seu trabalho alguns desafios como comunicação inadequada onde a frequência da comunicação diminui com a distância física, diferenças de fuso horário que em alguns casos reduz significativamente a comunicação entre equipes distribuídas, diferenças culturais que impedem a comunicação fácil, falta de confiança e gestão de conhecimento. Quanto à área de teste os autores descobriram novos desafios devido à privacidade de dados de testes por causa do aumento da preocupação com a segurança, o tamanho da base de dados de

produção e imprecisão de documentos de interface. De acordo com a pesquisa, a indisponibilidade de dados reais devido à privacidade dos mesmos dificulta a realização de testes de unidade mais abrangentes de seus módulos.

O trabalho de Damian & Zowghi (2002), estudou os desafios encontrados nas atividades de engenharia de requisitos como elicitação, priorização, negociação, validação entre outras em equipes distribuídas. Como o trabalho de Sengupta et al. (2006), eles encontraram os mesmos desafios de comunicação inadequada, gestão do conhecimento, diversidade cultural e diferença de tempo.

Herbsleb et al. (2005), relata que sutis diferenças culturais, podem muitas vezes levar à frustração e mal-entendidos complicando a comunicação. Em Damian et al. (2007), são apresentados desafios de awareness, que representa a necessidade de conhecer o trabalho de outros colegas, permitindo uma melhor coordenação das equipes. Como por exemplo, saber quem é especialista em um módulo, quem trabalhou recentemente em uma determinada atividade.

A partir de uma revisão sistemática apresentada por Jiménez et al. (2007), alguns desafios do DDS foram levantados. Os desafios de comunicação encontrados estão relacionados às diferenças culturais que implicam diferentes terminologias que pode causar erros de mensagens e erros de tradução, definição dos requisitos e segurança das comunicações. Os outros desafios encontrados podem ser observados na Figura 2.7.

Figura 2.7. Desafios de DDS. Fonte: Adaptado de Jiménez et al. (2007).

Prikladnicki (2009) menciona os principais desafios encontrados na literatura de DDS, os mesmos estão organizados em categorias diferentes: pessoas, projetos e organização. Os desafios de pessoas estão relacionados a habilidades interpessoais, coordenação e comunicação. Os desafios de projetos incluem o uso de ferramentas, métodos, dados e processos necessários. Os desafios de organização estão relacionados à estrutura organizacional, responsabilidades, papéis, princípios operacionais e métodos de gestão de uma organização. Os desafios por categorias são mostrados na Figura 2.8.

Figura 2.8. Desafios de DDS por categorias. Fonte: Adaptado de Prikladnicki (2009).

Os desafios de uma equipe de desenvolvedores e testadores em preparar e executar testes de desempenho relatadas em Bondi & Ros (2009) foram às diferenças culturais, uma grande diferença de tempo, além da necessidade de explicar à distância as ferramentas, práticas, procedimentos de medição, necessidade de documentações relacionadas aos de testes de desempenho.

Pehmöller et al. (2011), investigaram os problemas em teste no desenvolvimento global de software, dentre todos os problemas levantados, o controle na transferência de conhecimento a partir de especificação para equipe de testes, comunicação na abertura e fechamento de defeitos no software, descoberta tardia de defeitos e/ou funcionalidades erradas, falta de habilidades para estratégias de teste e fornecimento de dados de teste necessários foram alguns dos problemas mencionados.

Em Collins et al. (2012), é apresentada uma experiência industrial de uma equipe de teste distribuída seguindo um método ágil, os desafios encontrados nesta experiência são mostrados no Quadro 2.1.

Quadro 2.1. Desafios de uma experiência industrial. Desafios

Comunicação e coordenação Disponibilidade da informação Processos de teste

Dependência das ferramentas Fonte: Collins et al. (2012).

Diante do exposto, pode-se verificar que existem vários desafios quando se fala em equipes de teste distribuídas. É notável que os desafios mais citados foram: comunicação inadequada, gestão do conhecimento, diferenças culturais e dispersão geográfica e temporal. Em trabalhos relacionados a teste de software também foram citados estes desafios e outros quanto ao processo, organização da equipe de teste entre outros.