SlideShare uma empresa Scribd logo
1 de 44
PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL

                FACULDADE DE INFORMÁTICA

PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DE COMPUTAÇÃO




          DESENVOLVIMENTO FOLLOW-THE-SUN

           EM   AMBIENTE DE DESENVOLVIMENTO

                 DISTRIBUÍDO DE SOFTWARE




                 ESTEVÃO RICARDO HESS




         Orientador: Prof. Dr. Jorge Luis Nicolas Audy




                         Porto Alegre

                            2010
2

    Desenvolvimento Follow-the-sun em Ambiente de Desenvolvimento
                             Distribuído de Software




                                   RESUMO




      Atualmente, o processo de globalização está se destacando, o que está
gerando grande desafio para a área de engenharia de software, tornando o
desenvolvimento cada vez mais distribuído e global. Em busca de vantagens
competitivas, tais como redução de custo e ganho de produtividade, as
organizações optam por distribuir o processo de desenvolvimento de software em
países com custo de produção mais acessível. Cada vez mais projetos estão
sendo desenvolvidos em ambientes geograficamente distribuídos, caracterizando
o desenvolvimento distribuído de software. Entretanto, os desafios inerentes a
este ambiente de desenvolvimento de software são significativos. Dentre estes
desafios está a diferença de fuso horário, o qual pode ser também encarado como
uma vantagem, através do uso do desenvolvimento follow-the-sun. Este trabalho
apresenta uma revisão da literatura desta temática e constata a escassez de
trabalhos nesta área. Apresenta ainda, estudos que concluem que o ganho obtido
com o desenvolvimento follow-the-sun ainda está muito aquém do esperado,
devido as dificuldades impostas por esta forma de desenvolvimento. Portanto,
torna-se cada vez mais importante encontrar maneiras de atenuar estas
dificuldades. Neste sentido, este trabalho mostra a importância em definir um
processo formal para a transferência diária de tarefas durante a fase de
desenvolvimento de um projeto de software.

      Palavras      Chave:     Desenvolvimento    distribuído   de    software,
Desenvolvimento global software, Engenharia de software, Follow-the-sun, Round
the clock, Time to market.
3

     Desenvolvimento Follow-the-sun em Ambiente de Desenvolvimento
                                 Distribuído de Software




                                      ABSTRACT



      Nowadays, the globalization process is emerging, what is generating huge
challenges to the software engineering area, making the software development
more distributed and global. Looking for the competitive advantages as low coast
and productivity gains, organizations choose to distribute their software
development process to other countries with production costs more affordable.
Increasingly,   projects   are    being   developed   in   geographically   distributed
environments, featuring the distributed software development. However, the
challenges inherent in this software development environment are significant.
Among these challenges is the time zone difference, which can also be tackled as
an advantage, through the use of the follow-the-sun development. This paper
presents a literature review in this subject and concludes the scarcity of studies in
this area. Also presents studies that conclude that the gain that the follow-the-sun
development can provide are still worse than expected, due to difficulties imposed
by follow-the-sun. Therefore, it becomes increasingly important to find ways to
alleviate these difficulties. In this direction, this paper shows the importance to
define a formal process to alleviate the daily hand-offs during the development
phase in a software project




      Keywords:       Distributed      software   development,     Global    software
development, Software engineer, Follow-the-sun, Round the clock, Time to
market.
4


                                LISTA DE TABELAS



Tabela 1. Comparação entre as definições apresentadas ................................... 19

Tabela 2. Comparação entre os experimentos apresentados .............................. 37
5


                                           LISTA DE FIGURAS



Figura 1. Modelo cascata, adaptado de [SOM07] ................................................ 22

Figura 2. Distribuição típica da duração das fases de um projeto, adaptado de
[CAR09] ................................................................................................................ 25

Figura 3. Utilização do FTS durante a fase de testes ........................................... 26

Figura 4. Utilização do FTS durante a fase de testes com trabalho simultâneo .. 26

Figura 5. Modelo de Prototipação ........................................................................ 28

Figura 6. Modelo Incremental, adaptado de [PRE10] ........................................... 29

Figura 7. Disposição inicial das equipes, adaptado de [SET07] .......................... 30

Figura 8. Duração do experimento, adaptado de [CAR09] ................................... 33

Figura 9. Fluxo principal do processo................................................................... 40
6


           LISTA DE ABREVIATURAS E SIGLAS



AS    Arquitetura de Software

DDS   Desenvolvimento Distribuído de Software

ES    Engenharia de Software

FTS   Follow-the-sun

GSD   Global Software Development

VPN   Virtual Private Network
7


                                                   SUMÁRIO


1      INTRODUÇÃO ............................................................................................... 8

2      CONTEXTUALIZAÇÃO................................................................................ 10

     2.1 Desenvolvimento Distribuído de Software ............................................. 10

     2.2 Desenvolvimento Follow-the-sun ........................................................... 14

3      CONCEITOS ................................................................................................ 16

4      CICLOS DE VIDA NO PROCESSO DE DESENVOLVIMENTO FOLLOW-
THE-SUN ............................................................................................................. 21

     4.1 Modelo Cascata ..................................................................................... 21

         4.1.1 Follow-the-Sun no Modelo Cascata ................................................ 23

     4.2 Modelo de Prototipação ......................................................................... 27

         4.2.1 Follow-the-Sun no Modelo de Prototipação .................................... 28

     4.3 Modelo Incremental ............................................................................... 29

         4.3.1 Follow-the-Sun no Modelo Incremental .......................................... 29

5      ESTUDOS EM FOLLOW-THE-SUN ............................................................ 30

     5.1 Estudo apresentado por Setamanit, Wakeland e Raffo (2007).............. 30

     5.2 Estudo apresentado por Carmel, Dubinsky e Espinosa (2009) ............. 32

     5.3 Estudo apresentado por Solingen e Valkema (2010) ............................ 34

     5.4 Análise comparativa .............................................................................. 36

6      CONSIDERAÇÕES FINAIS ......................................................................... 39

REFERÊNCIAS BIBLIOGRÁFICAS ..................................................................... 41
8


1 INTRODUÇÃO



      No ambiente em que estamos vivendo atualmente, o processo de
globalização está se destacando, o que está gerando grande desafio para a área
de Engenharia de Software (ES). Hoje em dia, mais projetos estão sendo
desenvolvidos em ambientes geograficamente distribuídos, caracterizando o
Desenvolvimento Distribuído de Software (DDS). O DDS é caracterizado sempre
que um ou mais recursos envolvidos no projeto estiver fisicamente distante dos
demais      [AUD07].   Pode-se    dizer     também   que   uma      equipe   global   de
desenvolvimento de software está tipicamente em países diferentes, porém
colaborando em um mesmo projeto de qualquer natureza (criação ou manutenção
de software) [LAN08].

      Durante a implementação do DDS, diversos desafios de gerenciamento
emergem. Dentre estes desafios, diversos autores mostram que a diferença de
fuso horário pode ser um fator de extrema relevância [HOL06, HER01, TRE06].
Porém, a diferença de fuso horário pode ser utilizada ainda como vantagem e não
apenas como uma desvantagem [CAR09, HOL06, LIN07, SET07, SOL10,
KNO07,      TRE06].    Neste     sentido,    surge   o   conceito    conhecido    como
desenvolvimento follow-the-sun (a partir deste ponto, referenciado como FTS),
também conhecido como desenvolvimento round-the-clock, no qual o projeto é
desenvolvido 24 horas por dia, utilizando times alocados em diferentes
localidades, com diferentes fusos horários, utilizando esta diferença como uma
vantagem para o projeto [KNO07, TRE06].

      Dentro desta área de estudo, este trabalho será desenvolvido com o
objetivo de desenvolver um processo formal para a transferência diária de tarefas
em um ambiente FTS, durante a fase de implementação de um projeto de
software.

      Portanto, esta pesquisa torna-se relevante, pois a criação de um processo
para a transferência de trabalho pode facilitar o uso desta estratégia nos projetos
de software. Além disto, para a teoria da área, esta pesquisa torna-se importante,
9

pois a literatura não apresenta a definição de um processo para a transferência de
trabalho em projetos que utilizam esta estratégia.

      Sintetizando, a questão de pesquisa que norteia este estudo é: como
transferir trabalho durante a fase de desenvolvimento do ciclo de vida de um
software em um ambiente de DDS, utilizando estratégia FTS?Para alcançar os
objetivos citados, este trabalho estará estruturado da seguinte forma: a seção dois
destinada a apresentar uma Contextualização envolvendo o desenvolvimento
distribuído de software e o desenvolvimento follow-the-sun; a seção três aborda
os Conceitos encontrados na literatura relacionados ao desenvolvimento follow-
the-sun; a seção quatro apresenta o Ciclo de Vida no Processo de
Desenvolvimento Follow-the-sun, focando em uma breve descrição de modelos
de ciclos de vida e, para cada modelo, serão abordadas diferentes formas de
utilizar o desenvolvimento FTS; a seção cinco aborda os Estudos encontrados na
literatura sobre a área de pesquisa; e, finalmente, na seção seis será exposto as
Considerações Finais, onde será realizada uma análise crítica da pesquisa em
desenvolvimento.
10




2 CONTEXTUALIZAÇÃO


       O Desenvolvimento Distribuído de Software (DDS) está tornando-se uma
tendência na indústria de software [DAM06, HER01], pois apresenta diversos
fatores motivadores que levam as empresas a utilizar cada vez mais este conceito
em seus negócios. Porém, o DDS adiciona inúmeros desafios ao processo de
desenvolvimento de software. Dentre estes desafios, podemos citar a diferença
de fuso horário entre as equipes distribuídas. Entretanto, o fuso horário pode ser
encarado como uma vantagem para o projeto. Esta diferença de fuso horário
pode ser utilizada para realizar o uso do desenvolvimento FTS [HOL06, LIN07].
Sendo assim, neste capítulo apresentam-se os desafios existentes no
desenvolvimento distribuído de software (DDS), e como surge a utilização do
desenvolvimento FTS neste contexto. Na seção 2.1 é apresentado o
desenvolvimento distribuído de software (DDS), juntamente com suas vantagens
e os seus desafios. Na seção 2.2 será mostrado como surge o desenvolvimento
FTS em ambiente de DDS.



2.1   Desenvolvimento Distribuído de Software



       Para contextualização do desenvolvimento distribuído de software, nesta
seção apresentam-se alguns resultados obtidos na revisão da literatura abordada
no trabalho de Introdução à Pesquisa I. Serão apresentados os fatores que
motivam a utilização do DDS e os desafios encontrados nesta área.

       O DDS não é um conceito novo. O DDS surgiu nos anos 90, quando as
empresas começaram a desenvolver software com times distribuídos [LAN08]. O
11

DDS é caracterizado sempre que um ou mais recursos envolvidos no projeto
estiverem fisicamente distantes dos demais [AUD07]. Quando a distância física
entre os integrantes dos times de um projeto abrange mais de um país,
caracteriza-se o Desenvolvimento Global de Software (GSD, do inglês Global
Software Development) [LAN08].

      A utilização do DDS pelas empresas está cada vez mais comum. Isto deve-
se ao fato das diversas vantagens que a utilização deste conceito pode trazer. A
seguir são apresentados alguns destes fatores motivadores. Optou-se por
apresentar apenas uma breve descrição das vantagens mais citadas por
diferentes autores, pois o detalhamento das mesmas foi abordado no trabalho de
Introdução à Pesquisa I.

      - Redução de custos [LAN08, DAM06, PRI08, AUD07, MAR09]:
organizações procuram alternativas para que o custo de produção seja cada vez
menor. Desta maneira, contratam mão de obra de outro país ou localidade onde o
custo de produção seja mais baixo [KNO07];

      - Ganho de proximidade com o cliente [LAN08]: como a demanda de
software cresce em diversos países [KNO07], uma empresa que esteja
expandindo seus negócios para uma nova região poderia iniciar uma operação de
DDS nesta localidade e, assim, estaria se aproximando dos seus clientes.

      - Redução do tempo de projeto [LAN08, DAM06, PRI08]: também chamado
de time-to-market [CAR09], incluir um produto no mercado antes do concorrente
pode ser vital para o sucesso do mesmo. Sendo assim, com mais recursos
trabalhando nos projetos, o tempo de desenvolvimento pode ser reduzido.

      - Recursos especializados [LAN08] e globais [DAM06, PRI08, AUD07,
MAR09]: com o DDS é possível obter a disponibilidade da mão de obra tão
especializada quanto em projetos tradicionais, porém com a vantagem de manter
o baixo custo.

      Apesar de todas as vantagens que o DDS disponibiliza para as
organizações, o processo de desenvolvimento de software continua sendo uma
atividade complexa. Utilizando o DDS, adiciona-se ao processo alguns desafios,
12

como a distância física, diferenças de fusos horários e diferenças culturais [PRI09,
AUD07, DAM06], os quais tornam este tipo de projeto extremamente complexo de
ser gerenciado. Segundo alguns autores, os desafios encontrados no DDS podem
ser divididos em algumas categorias [AUD07, PRI09, KNO07, PIL06], as quais
afetam determinadas áreas do processo. Optou-se por apenas listar os desafios,
pois os mesmos estão detalhadamente descritos no trabalho de Introdução à
Pesquisa I.

       Os desafios relacionados a Organização [PRI09, HER01, PIL06, KNO07],
mostram dificuldades que afetam as definições estratégicas de processos [PIL06,
KNO07] e métodos de gestão de uma organização [PRI09]. Alguns exemplos são:
legislação [KAR98] e gerenciamento de portfólio de projeto [PRI09, PIL06]:

       Desafios relacionados a Projetos [PRI07, HER01], também chamados
como    dificuldades   técnicas   [PIL06,   KNO07],     contemplam     dificuldades
relacionadas a forma como o projeto será desenvolvido, incluindo o uso de
ferramentas e métodos [PRI09]. Dizem respeito ainda as adversidades
relacionadas com a gerência de requisitos, integração, gerência de configuração,
dificuldades no acompanhamento do projeto e na utilização de ferramentas
[PIL06, KNO07]. Exemplos destes desafios são: arquitetura de software [AUD07,
PRI09, HER99, BOS10], processos de desenvolvimento [AUD07, PRI09]:
telecomunicações [AUD07], gerência de configuração [MAR09] e gerenciamento
de projetos [PRI09].

       Desafios relacionados a Pessoas [PRI09], também identificado como
problemas sociais [PIL06, KNO07] dizem respeito aos problemas que afetam
diretamente os recursos envolvidos no projeto [PRI09], alguns exemplos são:
confiança [OSH07, AUD07, PRI09], conflitos [AUD07, PRI09], diferenças culturais
[BIN07] e diferenças de fusos horários:

       Em função do aprofundamento do estudo realizado a partir do trabalho de
Introdução à Pesquisa I, os próximos parágrafos mostram detalhadamente como
a diferença de fuso horário pode afetar projetos de software. Estas diferenças
podem afetar os projetos de DDS de diferentes formas, dependendo do tamanho
da diferença de horário entre os centros distribuídos. Este fator está diretamente
13

ligado ao desenvolvimento FTS. A seguir, são mostrados exemplos de como esta
diferença afeta os projetos.

      Quando existem equipes separadas por uma pequena diferença de horário,
onde podem passar a maior parte do dia trabalhando ao mesmo tempo. Como
exemplo, podemos citar uma equipe localizada na cidade de Dallas, e outra no
Rio de Janeiro. Para este caso a diferença de fuso horário seria de apenas duas
horas na maior parte do ano. Neste modo a comunicação é facilitada, pois é
possível usar a comunicação síncrona, como ferramentas de mensagens
instantâneas, ligações telefônicas, vídeo conferências, entre outras.

      Quando a diferença de horário atinge em torno de cinco horas, a
possibilidade de trabalhar juntos na maior parte do tempo já não é mais válida.
Então, para este caso, a comunicação síncrona tende a diminuir e a comunicação
assíncrona aumenta. Para este exemplo, poderíamos citar uma equipe localizada
em Nova Iorque e outra em Londres. Para este caso a diferença seria de cinco
horas na maior parte do ano.

      Finalmente, temos o caso em que as equipes distribuídas nunca trabalham
no mesmo horário. Neste caso, quando uma equipe está terminando o seu dia de
trabalho a outra está começando. Além da falta de comunicação síncrona, torna-
se vital que a comunicação assíncrona seja realizada de forma clara e efetiva.
Qualquer dependência de uma resposta de algum membro do outro time pode
demorar no mínimo um dia. Para este exemplo, poderíamos citar uma equipe
localizada em São Paulo e outra em Tóquio, onde a diferença será de doze horas
na maior parte do ano.

      Nota-se que os problemas relacionados ao fuso horário tendem a ficar mais
evidentes na medida em que a diferença aumenta. Para que esta diferença possa
ser utilizada como uma vantagem, alguns autores defendem a utilização do
desenvolvimento FTS. Porém, atualmente este conceito é pouco explorado na
indústria [HOL06, LIN07, TRE06].
14

2.2   Desenvolvimento Follow-the-sun



       Devido aos desafios impostos pelo desenvolvimento distribuído de software
relacionadas à diferenças de fusos horários, surge o conceito chamado de
desenvolvimento follow-the-sun (FTS). O desenvolvimento FTS é um subconjunto
do desenvolvimento global de software, o qual está, principalmente, focado na
diminuição do tempo de desenvolvimento de um projeto [CAR09, GOR96-II,
GUP09-II]. Utilizando a diferença de fuso horário das equipes distribuídas, como
uma vantagem [CAR09, HOL06, LIN07, SET07, SOL10, KNO07, TRE06], para
fazer o desenvolvimento do projeto durante as 24 horas do dia. Porém, devido ao
fato de ser uma área nova de estudo na engenharia de software, pouco sobre
esta temática foi publicado [TRE06]. Casos de sucesso na indústria utilizando o
FTS ainda são escassos [SOL10]. [CAR09] afirma que não há casos de sucesso
na indústria [CAR09].

       Esta forma de trabalho, em outros ramos da indústria não é uma novidade.
Dependendo do tipo de produto a ser criado, existe a necessidade de trabalhar
em um único local, e dependendo da velocidade necessária para criá-los, durante
as 24 horas do dia, implicando em trabalhos fora do horário convencional. Um
exemplo é a indústria automobilística, onde uma equipe termina o seu turno, e a
próxima assume logo após, para iniciar a sua jornada, mantendo a produção 24
horas por dia, porém, no mesmo local [GOR96-II]. Este fato poderia afetar a
qualidade do produto, pois pessoas ao redor do mundo estão acostumadas a
trabalhar durante o dia, e descansar durante a noite [CAR09, JAL04].

       Na indústria do desenvolvimento de software, a primeira tentativa
documentada do uso do desenvolvimento FTS foi protagonizada pela IBM
[CAR99]. Em 1997 [SOO08], a IBM decidiu desenvolver um projeto utilizando o
desenvolvimento FTS [CAR09]. Para isto, criou cinco equipes distribuídas em
cinco centros de desenvolvimento distintos em cinco países diferentes [SOO08].
Durante o projeto, muitas dificuldades de coordenação foram encontradas,
principalmente durante as transferências diárias de trabalho [SET07]. Portanto,
como o FTS não estava funcionando como planejado, não trazendo o ganho
esperado pelos gestores, os responsáveis pelo projeto desistiram de utilizar o
15

FTS para acelerar o processo de desenvolvimento, mantendo apenas o
desenvolvimento global de software [CAR09].

      Para melhor entender do desenvolvimento FTS, nos próximos capítulos
este tema será abordado em maior profundidade. Para isto, no capítulo 3 será
mostrado os conceitos encontrados na literatura, no capítulo 4 será exposta uma
breve descrição sobre o ciclo de vida do software e, posteriormente, é
apresentado formas de utilizar o desenvolvimento FTS durante o processo de
desenvolvimento de software, com o objetivo de aumentar as suas chances de
sucesso.
16


3 CONCEITOS


        Devido ao fato do FTS ser um assunto recente na literatura e na indústria
do desenvolvimento de software, existem poucos trabalhos publicados nesta área
[TRE06]. Neste sentido, é possível observar a existência de diversas formas de
definir o desenvolvimento FTS, também referenciado como desenvolvimento 24-
horas     [GUP09,    GOR96-II],     desenvolvimento   round-the-clock   [CAR09],
desenvolvimento around-the-clock [YAP05] e software shift work [GOR96-II].
Diversos autores possuem suas próprias definições para este tema, sendo assim,
na literatura desta área não há um consenso na forma de definir o
desenvolvimento FTS. Os próximos parágrafos apresentaram definições de
diferentes autores e, ao final desta seção, é apresentada uma reflexão sobre
estas definições, com o objetivo de oferecer uma definição onde sintetizaremos as
principais idéias encontradas na literatura.

        Segundo Visser [VIS09], o desenvolvimento follow-the-sun pode ser
determinado ao ter equipes de desenvolvimento de software distribuídas por
múltiplos fusos horários, onde ao final do dia de trabalho, uma equipe deve
entregar as informações relevantes do trabalho realizado até o momento,
juntamente com o código fonte do produto, para a próxima equipe, a qual está
iniciando a sua jornada. O trabalho deve ser continuado do ponto onde o time
anterior parou. Desta forma, o projeto estará sendo desenvolvido vinte e quatro
horas por dia e não apenas durante oito horas, como normalmente acontece.

        Outra forma de identificar esta maneira de desenvolver software é
apresentada por Gorton e Motwani [GOR96-II], onde é proposta uma nova
denominação: software shift work. Os autores mostram que a indústria tem a
necessidade de criar seus produtos em um tempo cada vez menor, porém,
dependendo do tipo de produto a ser criado, existe a necessidade de trabalhar em
um único local, porém durante as 24 horas do dia (implicando em trabalhos fora
do horário convencional), como exemplo, o autor cita a indústria automobilística.
Porém, a criação de software difere radicalmente, pois o produto final é uma
coleção de arquivos binários, documentação, código-fonte e executáveis, onde
utilizando redes modernas e rápidas de comunicação de dados como as que
17

existem atualmente na grande parte dos países onde o desenvolvimento global de
software é utilizado, estes artefatos podem rapidamente ser transferidos para
qualquer lugar do mundo. Portando o desenvolvimento 24-horas de software pode
ser alcançado apenas utilizando a diferença de fuso horário entre os locais onde
os times estão alocados. Cada time trabalha no seu horário convencional e, ao
final do seu turno (um dia de trabalho), o próximo time, o qual está iniciando o seu
turno assume o trabalho de onde a equipe anterior parou.

          Já    para   Gupta,    Mattarelli,   Seshasai   e   Broschak   [GUP09-II]   o
desenvolvimento follow-the-sun pode ser estendido para diferentes tarefas, além
do desenvolvimento. Os autores mostram o conceito de fábrica de conhecimento,
onde as tarefas a serem desenvolvidas em um projeto podem ser voltadas ao
conhecimento, o qual é passado entre os times globalmente distribuídos ao final
de cada dia. Para exemplificar este conceito para o desenvolvimento contínuo
durante 24 horas por dia, é apresentado o ciclo de testes de um software, onde o
conhecimento é o próprio software em desenvolvimento, e o conhecimento está
onde o software atende os requisitos de forma satisfatória ou não. Este
conhecimento é passado entre os times de desenvolvimento e de testes, os quais
estão distribuídos em locais distintos. Desta forma, a fase de testes pode ser
finalizada de forma mais rápida, o que segundo os autores, é um dos principais
benefícios ao distribuir equipes de desenvolvimento em fusos horários distintos e
utilizar o desenvolvimento follow-the-sun.

          Treinen e Miller-Frost [TRE06] definem o follow-the-sun, de uma forma
mais sucinta. Para estes autores, a diferença de fuso horário deve ser vista como
uma vantagem, para assim, distribuir equipes com o objetivo de criar um ambiente
de desenvolvimento de software onde as equipes trabalham apenas durante as
suas horas normais de trabalho, e ao final do dia, apenas redistribuem as suas
tarefas ao time que está iniciando a sua jornada, criando assim, efetivamente o
desenvolvimento 24-horas.

          Carmel, Dubinsky e Espinosa [CAR09], propõem uma definição para o
follow-the-sun aonde quatro idéias básicas devem ser seguidas:

     i.        Equipes de desenvolvimento devem estar localizadas a diversos fusos-
               horários de diferença;
18

    ii.       Um dos principais objetivos é reduzir o tempo de desenvolvimento/
              time-to-market;
    iii.      A cada momento existe somente uma equipe que possui a posse do
              produto;
    iv.       A transferência de tarefas deve ser realizada diariamente, onde esta é
              definida por um check-in de uma unidade de trabalho da qual a próxima
              equipe depende para continuar o trabalho.

           Após apresentar estas quatro idéias básicas, o trabalho de [CAR09]
apresenta a seguinte definição para o desenvolvimento follow-the-sun: um tipo de
fluxo de trabalho de conhecimento global, criado com o objetivo de reduzir a
duração de um projeto, onde o produto é de propriedade de um centro de
desenvolvimento até ser entregue ao próximo. Esta entrega deve ser diária, e a
próxima equipe deve estar localizada diversos fusos horários a frente para dar
continuidade ao trabalho.

           Após a apresentação das diferentes definições por diferentes autores, a
Tabela 1 mostra uma análise comparativa entre estas diferentes abordagens.
Para cada critério (colunas), procurou-se saber se a definição apresentada, de
alguma forma, indicou importância para este fator.

           Os fatores utilizados para a análise comparativa apresentada na Tabela 1
surgiram de uma avaliação prévia dos conceitos apresentados pelos autores.
Procurou-se identificar os principais fatores de cada conceito encontrado na
literatura, os quais poderiam ser comparados entre as definições.
19

                          Tabela 1. Comparação entre as definições apresentadas
                                          Objetivo principal                                          Transferências
                                                                                                                                                Considera relevante
                                                do FTS                                               diárias de tarefas




                                                  Diminuir time to market




                                                                            diário desenvolvimento
                          de desenvolvimento do




                                                                                                                                                                          Diversos fusos horários
                                                                                                                                                 Trabalhar somente nos
                                                                                                                                                 horários convencionais
                           Aumentar velocidade




                                                                                                     (apenas codificação)
                                                                              Aumentar tempo de




                                                                                                                            Múltiplas tarefas
                                                                                                        Código fonte




                                                                                                                                                                               de diferença
         Autor




                                 projeto
     Visser [VIS09]                                                                 X                      X                   X                                                  X
   Gorton e Motwani
                                  X                  X                                                     X                   X                        X
      [GOR96-II]
   Gupta, Mattarelli,
  Seshasai e Broschak             X                                                 X                                          X
      [GUP09-II]
 Treinen e Miller-Frost
                                                                                                           X                   X                        X
        [TRE06]
  Carmel, Dubinsky e
                                                     X                                                     X                                             X                        X
   Espinosa [CAR09]



       Como podemos perceber, não há uma convergência para apenas uma
definição para o desenvolvimento FTS. Podemos identificar que apenas um autor
define o FTS somente para a codificação, enquanto que os autores restantes
defendem a utilização para qualquer tarefa dentro do projeto. Outra característica
nas definições está relacionada ao objetivo principal da utilização do FTS. Apesar
de expresso de maneira distinta pelos autores, podemos perceber que o objetivo
principal do FTS é a diminuição do tempo necessário para desenvolver um
projeto. A diferença mínima necessária de fusos horários entre as equipes
distribuídas foi pouco citada. Também existem poucos trabalhos que consideram
relevante a importância de ter equipes distintas trabalhando no seu horário
habitual, evitando horas extras durante a noite. Este fator poderia ser mais
considerado, pois a maior parte das pessoas ao redor do mundo está acostumada
a trabalhar durante o dia e descansar durante a noite [CAR09].

       Portanto, após esta análise comparativa das diferentes definições
sugeridas pelos autores, foram identificados pontos importantes em todas elas.
Assim, através destas informações coletadas, propomos uma definição para o
desenvolvimento FTS, a qual sintetiza as principais idéias e pode ser descrita da
seguinte forma:
20

      O follow-the-sun é tipo de desenvolvimento global de software onde o
principal objetivo é a diminuição do time-to-market, acelerando a construção do
produto final desde a concepção até a sua distribuição. Este ambiente opera com
equipes distribuídas em fusos horários e países distintos, onde cada equipe
detém o trabalho por determinado período, até que o mesmo seja transmitido para
a próxima equipe que inicia a sua jornada. A transferência pode ser para qualquer
tipo de tarefa relacionada com o desenvolvimento do projeto de software. Esta
transferência deve acontecer diariamente e de forma padronizada.
21


4 CICLOS DE VIDA NO PROCESSO DE DESENVOLVIMENTO
      FOLLOW-THE-SUN


       Para tornar o desenvolvimento de software uma atividade mais estruturada
e padronizada, surgiram os modelos de processo de software [SOM07], também
conhecidos como ciclos de vida de um software [MCC99, KRI08]. A
funcionalidade principal de um modelo de ciclo de vida de um software é
estabelecer uma ordem na qual um projeto de software faz suas atividades como
por exemplo: especificação, implementação e testes [MCC99]. Estabelece ainda,
critérios que devem ser usados para determinar o momento de seguir para a
próxima fase do projeto [MCC99]. Atualmente existem diversos modelos de ciclos
de vida, dentre estes, podemos citar como exemplo, o modelo cascata, modelo
incremental e o modelo de prototipação.

       A importância da escolha de um processo adequado para a utilização do
desenvolvimento FTS é fator importante para o sucesso do projeto [CAR09].
Atualmente, não existem processos largamente aceitos para esta forma de
desenvolver software. Diferentes autores defendem maneiras distintas para a
utilização do desenvolvimento FTS. Neste sentido, este capítulo apresenta uma
breve descrição de alguns modelos de ciclos de vida e, para cada modelo, serão
abordadas diferentes formas de utilizar o desenvolvimento FTS.



4.1   Modelo Cascata



       Este modelo, também chamado de ciclo de vida clássico [PRE10], propõe
uma forma sistemática e seqüencial, onde inicia-se com os requisitos do sistema,
terminando na entrega e manutenção do mesmo. Durante este processo, existem
fases bem definidas, onde o final de cada fase marca o início da fase
imediatamente seguinte. A Figura 1 ilustra este modelo.
22




                      Figura 1. Modelo cascata, adaptado de [SOM07]



      Cada fase encontrada no modelo cascata pode ser resumidamente
definida, segundo [SOM07], da seguinte forma:

      - Definição de requisitos: esta fase é marcada como o início do ciclo de
vida do software. Nesta fase do processo, são estabelecidas as funcionalidades
que o sistema deverá atender [SOM07].

      - Projeto: esta fase caracteriza-se por traduzir os requisitos em uma
representação de software [PRE95]. Consiste em projetar o que foi definido na
fase anterior, do ponto de vista do sistema. Neste momento, é planejada a
arquitetura do sistema, estruturas de dados, e detalhes procedurais a serem
utilizados [SOM07].

      - Implementação: utilizando as informações oriundas da fase de projeto,
esta fase está focada na implementação de cada unidade do sistema, ou seja,
transformar os requisitos em código fonte, e realizar testes unitários dos mesmos
[SOM07].

      - Integração e testes: com a implementação de cada unidade do sistema
concluída, é realizada a integração e os testes de todo o sistema. Esta fase
caracteriza-se por identificar problemas no sistema, e resolvê-los. Ao final desta
fase, o sistema deve estar pronto para a sua utilização [SOM07].

      - Manutenção: esta é a fase mais longa do ciclo de vida. O sistema é
instalado e utilizado pelo usuário final. Neste momento, deve ser realizado a
correção de problemas encontrados durante a utilização do sistema [SOM07].
23

      Este modelo de ciclo de vida é recomendado para projetos onde os
requisitos estão bem definidos e são geralmente fixos, ou seja, não mudam no
decorrer do projeto. Assim, o projeto pode ser desenvolvido de maneira linear do
início ao fim [PRE10].



4.1.1 Follow-the-Sun no Modelo Cascata



      No modelo cascata, segundo trabalhos encontrados na literatura, o
desenvolvimento FTS pode ser realizado em três fases distintas: implementação
[CAR09], integração e testes [CAR09, GOR96, HOL06] e manutenção [LUC02,
CON06, HEL06, JAL04]. Os itens 4.1.1.1, 4.1.1.2 e 4.1.1.3 descrevem como
poderia ser realizado o desenvolvimento FTS nestas três fases respectivamente.



4.1.1.1 Implementação



      Muitas dificuldades diminuem a chance de sucesso da utilização do FTS
durante esta fase [SOL10, CAR09]. Porém, para obter êxito nesta fase do
processo, [CAR09] apresenta práticas oriundas de metodologias ágeis para
facilitar e aumentar as chances de sucesso no uso do desenvolvimento FTS. A
abordagem ágil possui algumas características que apóiam a estruturação de
projetos para utilizar o desenvolvimento FTS [CAR09]. Estas características
facilitam áreas problemáticas apresentadas nesta forma de desenvolver software,
como hand-off diário, comunicação e coordenação [CAR09, SET07, RAF07,
CON06, HOL06, SOO08].

      Para suportar a transferência diária de tarefas (hand-offs), fazer o uso de
integração continua através de um ambiente de integração automatizado [CAR09,
YAP05], permite que cada time possa desenvolver suas tarefas no seu próprio
código fonte e no seu horário habitual. Assim, cada time mantém um código fonte,
estável, ou seja, testado e sem problemas, para ser utilizado pela próxima equipe.
A política de manter os testes de integração funcionais, ou seja, não terminar o
dia com problemas em qualquer teste automatizado, bem como manter a
24

integração continua do produto são práticas comuns em metodologias ágeis, e
cabem no desenvolvimento FTS, pois deste modo facilitam a transferência diárias
de tarefas.

      Para evitar problemas de comunicação, as metodologias ágeis enfatizam a
comunicação face a face. O trabalho [CAR09] afirma que esta comunicação deve
ser mantida, porém para comunicação entre os membros de uma mesma equipe
co-localizada. Entretanto, ao utilizar o FTS, o objetivo é reduzir a comunicação
entre centros distribuídos para o menor nível possível, confiando mais nas
ferramentas e processos utilizados para suportar os aspectos técnicos, gerenciais
e sociais do desenvolvimento. Facilitando assim, a transferência de tarefas ao
final do dia, diminuindo os problemas de comunicação enfrentados por equipes
que utilizam o FTS.

      A colaboração é vital no processo de desenvolvimento de software
[CAR09]. A abordagem ágil enfatiza a colaboração entre todas as pessoas
envolvidas no desenvolvimento. Ao utilizar o desenvolvimento FTS a colaboração
está relacionada a forma como os membros da equipe mantém as regras do
processo de desenvolvimento. Desta forma, é importante manter protocolos que
permitam ao próximo centro continuar o trabalho entregue pelo centro anterior
sendo necessário o mínimo de comunicação síncrona entre centros distribuídos.
Ou seja, manter claro o que cada equipe deve entregar a outra ao final do dia e,
da mesma forma, o que esperar no início do dia.

      Ao utilizar o desenvolvimento FTS durante a fase de implementação de um
software é difícil, pois ao final de cada dia, tarefas inacabadas devem ser
transferidas para o próximo time, o qual deve continuar o seu desenvolvimento.
Sem fazer o uso de comunicação síncrona, a próxima equipe iniciando o seu dia
de trabalho deve continuar a tarefa deixada pela equipe anterior, o que torna o
trabalho muito difícil. Porém, apesar de não haver na indústria exemplos de
sucesso [CAR09], seguindo estas práticas durante esta fase do projeto, pode-se
obter sucesso na utilização do desenvolvimento FTS [CAR09].
25

4.1.1.2 Integração e Testes



      O maior consenso encontrado na literatura relacionado a aplicação do
desenvolvimento FTS está na utilização desta forma de trabalho na fase do ciclo
de vida onde são realizados os testes e correções dos problemas encontrados
[CAR09, GOR96, HOL06]. Esta forma de trabalho vem sendo aplicada na
indústria com bastante sucesso [CAR09]. Utilizar o desenvolvimento FTS nesta
abordagem pode, porém, diminuir o ganho teórico de 50% no tempo de
desenvolvimento do projeto (para projetos que utilizam dois centros de
desenvolvimento) [CAR09]. Conforme mostrado na Figura 2, percebemos que a
fase de testes, onde seria utilizado o FTS, compreende apenas 25% do tempo
total do projeto [CAR09]. Neste caso, o ganho teórico de 50% seria somente
dentro desta fase, resultando num ganho de apenas 12,5% no total do projeto
[CAR09].




      Figura 2. Distribuição típica da duração das fases de um projeto, adaptado de [CAR09]



      Uma equipe trabalha nos testes do sistema desenvolvido. Os problemas
identificados por esta equipe devem ser documentos em um sistema de controle
centralizado, do qual integrantes de todos os times distribuídos têm acesso. Ao
terminar o dia de trabalho do time de teste, os problemas estão todos
documentados [CAR09]. No momento em que o time de desenvolvimento inicia o
seu trabalho, os defeitos encontrados e todas as informações relevantes aos
mesmos estão acessíveis, sendo assim, possível iniciar a sua correção. A Figura
3 ilustra a utilização do FTS durante a fase de integração e testes.
26




                      Figura 3. Utilização do FTS durante a fase de testes



      É importante destacar que, para o funcionamento desta forma de utilização
do desenvolvimento FTS, a transferência de tarefas ao final de cada dia deve
seguir uma estrutura bem definida e entendida por todos os times envolvidos no
desenvolvimento. Os problemas encontrados devem ser documentados de forma
clara e compreensível, com todas as informações necessárias, evitando
problemas de entendimento na comunicação [CAR09]. Para equipes que, devido
a diferença de fuso horário, não trabalham em nenhum período simultaneamente,
as soluções de dúvidas podem demorar mais de um dia, comprometendo o
andamento do projeto. Portanto, a padronização das entregas de uma equipe
para outra é fundamental.

      Uma pequena variação desta forma de utilizar o desenvolvimento FTS é
apresentada por [GOR09]. Para evitar alguns problemas de coordenação e
comunicação, o trabalho [GOR09] propõe uma pequena modificação. Deve existir
pelo menos 2 horas de trabalho simultâneo entre mais de uma equipe (a equipe
que está terminando o seu dia, e a que está iniciando). Neste período de tempo
devem ser discutidos os problemas de forma síncrona e qualquer dúvida que
possa surgir pode ser resolvida neste momento, evitando assim, atrasos no
projeto [GOR09]. A Figura 4 ilustra esta variação na utilização do FTS durante a
fase de integração e testes.




          Figura 4. Utilização do FTS durante a fase de testes com trabalho simultâneo
27

4.1.1.3 Manutenção



       Alguns autores citam ainda a fase de manutenção como uma fase do ciclo
de vida propícia para utilizar o FTS [LUC02, CON06, HEL06, JAL04]. Para a
utilização do desenvolvimento FTS nesta fase deve-se manter times distribuídos
ao redor do mundo, garantindo que a diferença de fuso horário cubra 24 horas, ou
seja, sempre haverá um time trabalhando [LUC02]. Portanto, sempre que algum
problema for identificado, um time de suporte poderá ser acionado e, assim,
sempre haverá uma equipe disponível. Se for encontrado algum problema, a
equipe que estiver disponível no momento recebe o problema e inicia o trabalho.

       Chegando ao final do seu dia de trabalho, e este problema ainda não foi
resolvido, esta equipe repassa todo o conhecimento adquirido até o momento
sobre o problema para a próxima equipe, que assume o mesmo, e a investigação
continua do ponto onde parou. Utiliza-se o FTS desta forma para soluções críticas
como sistemas de controle de cartões de crédito e sistemas de telefonia [LUC02].



4.2   Modelo de Prototipação



       A característica principal deste modelo é gerar protótipos do sistema,
normalmente não funcionais, baseado nas definições propostas pelo cliente.
Normalmente os requisitos de um sistema no início do processo de
desenvolvimento não estão bem definidos, e o modelo de prototipação pode ser
usado para ajudar a identificar e definir requisitos [PRE10]. Este modelo é uma
forma iterativa, onde a primeira iteração inicia com os requisitos, logo após os
protótipos são criados, para então, serem validados pelo cliente [PRE10]. Após
esta avaliação, o cliente pode fornecer informações relevantes para que este
protótipo seja modificado ou melhorado. Neste momento, uma nova iteração é
iniciada. Este ciclo é repetido até o momento em que o protótipo gerado atinja o
nível de satisfação esperado pelo cliente [SOM07, PRE10]. A Figura 5 ilustra este
modelo.
28




                           Figura 5. Modelo de Prototipação

      A vantagem da utilização deste modelo está na sua rapidez de
desenvolvimento, focando apenas no que será visível ao cliente, como interface
gráfica, formatos de entradas e saídas do sistema [SOM07, PRE10]. Neste
modelo, a parte funcional do sistema não é abordada.



4.2.1 Follow-the-Sun no Modelo de Prototipação



      Prototipação é um modelo de ciclo de vida onde, segundo [CAR09],
poderia, também, empregar o uso do desenvolvimento FTS. Para este modo de
utilização do desenvolvimento FTS, a equipe responsável por criar os requisitos e
a equipe que desenvolve os protótipos devem estar em localidades distintas.
Desta forma, uma das equipes constrói os requisitos e, ao final do seu dia de
trabalho, disponibiliza todas as informações necessárias para a próxima equipe, a
qual irá desenvolver os protótipos. Ao terminar a sua jornada de trabalho, a
equipe que desenvolveu os protótipos disponibiliza os mesmos para o time que
fará a verificação destes, apontando problemas e melhorias a serem realizadas.
Este processo é repetido desta forma até o momento em que o protótipo gerado
atinja o nível de satisfação esperado pelo cliente [SOM07, PRE10]. Desta forma,
obter ganho durante a prototipação também é possível, através do uso do
desenvolvimento FTS [CAR09].
29

4.3   Modelo Incremental


       O modelo incremental utiliza elementos do modelo linear, também
chamado de modelo cascata, porém com fluxos de processos paralelos [PRE10].
O modelo incremental é realizado em ciclos, e dentro de cada ciclo, utiliza-se o
modelo cascata. Cada um destes ciclos, também chamados de incrementos
[PRE10], produz alguma funcionalidade nova ao sistema, e ao finalizar o último
ciclo, obtém-se a versão final e funcional do produto. Os requisitos podem ser
priorizados onde os mais prioritários são entregues nos primeiros incrementos, ou
seja, funcionalidades mais críticas são entregues nos primeiros ciclos, deixando
funcionalidades adicionais para os próximos [SOM07, PRE10]. Ao iniciar um
incremento, os requisitos são congelados, deixando novos requisitos para ciclos
futuros [SOM07]. Desta forma, o sistema é entregue em pequenas versões, ao
invés de uma única entrega ao final [SOM07]. A Figura 6 representa este modelo.




                    Figura 6. Modelo Incremental, adaptado de [PRE10]




4.3.1 Follow-the-Sun no Modelo Incremental


       Podemos notar que o modelo incremental, é constituído de ciclos do
modelo cascata (incrementos) [PRES10]. Desta forma, o desenvolvimento FTS
neste modelo de ciclo de vida, ocorre da mesma forma que no modelo cascata. A
principal diferença está no fato de utilizar o FTS a cada incremento, dentro das
fases citadas nos itens 4.1.1.1 (implementação), 4.1.1.2 (integração e testes) e
4.1.1.3 (manutenção).
30


5 ESTUDOS EM FOLLOW-THE-SUN


       A literatura apresenta poucos trabalhos relacionados ao desenvolvimento
FTS [TRE06]. Após uma extensa pesquisa, encontrou-se um número reduzido de
artigos que realizam estudos teóricos nesta área. Esta seção apresenta uma
compilação dos principais estudos relacionados à esta temática. Os estudos
apresentados versam sobre diferentes óticas para avaliar o desenvolvimento FTS.



5.1   Estudo apresentado por Setamanit, Wakeland e Raffo (2007)


       Apresentado por Setamanit, Wakeland e Raffo [SET07], o estudo mostra as
vantagens ao utilizar o FTS em relação a um projeto realizado em um único local.
O objetivo é identificar quando há uma vantagem ao utilizar o FTS, e quais são os
requisitos para alcançar uma vantagem que seja interessante para um projeto
desenvolvido desta forma.

       O estudo inicia descrevendo forma como as equipes devem realizar o
desenvolvimento do projeto. Para esta fase, duas equipes distintas foram criadas.
Uma delas opera em apenas                uma localidade, sem fazer o uso do
desenvolvimento FTS. A outra equipe é dividida em duas localidades com fuso
horário distinto, e faz o uso do desenvolvimento FTS. A Figura 7 ilustra o formato
das equipes.




                Figura 7. Disposição inicial das equipes, adaptado de [SET07]


       Neste primeiro cenário, após realizar 30 testes para cada configuração (co-
localizado e follow-the-sun), os autores identificaram que a utilização do
31

desenvolvimento FTS não gerou o ganho esperado. Os resultados mostraram um
aumento de 50% no tempo necessário para o desenvolvimento do projeto, foi
notado também um aumento de 70% no esforço, e a qualidade foi pior, pois a
quantidade de defeitos foi maior que o dobro.

      Após adquirir estes dados iniciais sobre o desempenho das equipes, os
autores buscaram identificar fatores que teriam um forte impacto para a melhoria
destas medidas. Estes fatores, segundo os autores, podem direcionar os projetos
para a utilização de práticas onde os benefícios podem ser alcançados com maior
facilidade. Após a identificação destes fatores, os autores mostram que os
principais resultados foram:

      - Diminuir o esforço: aumentando o tempo de trabalho simultâneo (também
conhecido como overlap) entre equipes distribuídas resulta em um menor esforço
necessário. Como na primeira configuração, as equipes não tinham a
possibilidade de trabalhar ao mesmo tempo, a comunicação síncrona não existia.
Ao introduzir a possibilidade deste tipo de comunicação, foi possível notar um
aumento na produtividade. Entre outras vantagens, este tipo de comunicação
melhora a confiança entre os membros da equipe, resultando, assim na
diminuição do esforço.

      - Diminuir duração do projeto: aumentar o overlap entre as equipes
distribuídas   pode   aumentar   a   duração do    projeto, pois   o   tempo   de
desenvolvimento diário diminui. Porém, ao notar que, além de ter um período
maior de trabalho simultâneo entre equipes distribuídas, outros fatores já citados
(produtividade, confiança), ajudam a diminuir o esforço, resultando assim num
menor tempo de desenvolvimento.

      - Diminuição do número de defeitos: tendo um aumento na efetividade da
comunicação síncrona entre as equipes através do trabalho simultâneo,
diminuíram os problemas de entendimento das comunicações assíncronas. Isto
resultou em um número menor de defeitos encontrados.

      Após identificar os fatores que poderiam melhorar o desempenho do
projeto, realizou-se o experimento novamente, porém, desta vez com um overlap
de horas de trabalho entre as equipes distribuídas.      O resultado encontrado
apresentou uma pequena melhora em relação a primeira execução, porém, o
32

desempenho do FTS ainda mostrou-se pior que o desenvolvimento em um único
local.

          Na tentativa de alcançar uma melhora significativa, os autores incluíram
mais um centro de desenvolvimento, obtendo assim, a distribuição em três locais
distintos para o desenvolvimento. Neste modelo, o tempo de duração foi menor
(11,1%). Entretanto o esforço foi significativamente maior (45,4%), porém,
segundo os autores, este fator não se mostra relevante, devido ao fato de os
centros de desenvolvimento distribuídos normalmente estarem em países que
possuem baixo custo. A qualidade continuou pior neste modelo, devido a
dificuldade de comunicação e coordenação entre os 3 centros.

          Finalmente, os autores afirmam que o FTS pode ser uma boa estratégia se
dentre     as   necessidades   do   projeto   está   a   diminuição   do   tempo   de
desenvolvimento. Porém, salientam que se esta decisão for tomada, deve-se
utilizar a abordagem com no mínimo três centros distribuídos de forma a obter o
desenvolvimento 24 horas por dia, e tendo um período de trabalho simultâneo
para comunicação síncrona entre as equipes distribuídas.



5.2      Estudo apresentado por Carmel, Dubinsky e Espinosa (2009)



          O recente estudo apresentado por Carmel, Dubisnky e Espinosa [CAR09]
relata um quasi-experimento comparando duas formas distintas de desenvolver
um projeto de software. O objetivo deste estudo foi medir o ganho no tempo de
desenvolvimento de um projeto de software, o qual, para este tipo de projeto,
teoricamente deveria ser de 50%.

          O experimento controlado inicia com a escolha de duas equipes de
desenvolvimento de software, uma delas denominada controle (CO), composta
por 7 integrantes e a outra equipe, denominada de FTS, composta por 8
participantes. As duas equipes deveriam implementar os mesmos requisitos de
sistema. Todos os participantes do estudo eram estudantes de Ciência da
Computação ou Engenharia Elétrica de uma grande universidade. O tempo de
desenvolvimento por recurso era o mesmo para ambos os times. Definiu-se que o
33

tempo de desenvolvimento do projeto seria 5 semanas. Porém, como a equipe
FTS faria o uso do desenvolvimento FTS, teoricamente, o tempo necessário para
o projeto deveria de duas semanas e meia. A Figura 8 ilustra o tempo de projeto
definido para cada equipe.




                   Figura 8. Duração do experimento, adaptado de [CAR09]



      Para a equipe CO, nenhuma restrição foi imposta, ou seja, o software foi
desenvolvido da forma tradicional, com todos os recursos da equipe trabalhando
no mesmo local. Para a equipe FTS, a primeira etapa foi dividir a equipe em duas,
SubTeamA, composta por 3 recursos, e SubTeamB, integrada por 5 recursos.
Cada uma destas duas equipes, oriundas do grupo FTS, deveria trabalhar em
horários diferentes, para simular a diferença de fuso horário: SubTeamA entre
21:30 e 11:00 e SubTeamB entre 11:30 e 21:00, mantendo 30 minutos para
alguma hora extra, quando necessário. Para garantir que nenhuma comunicação
síncrona entre as equipes SubTeamA e SubTeamB ocorressem, mecanismos
como mensagens SMS, comunicador instantâneo, e qualquer outro tipo de
comunicação síncrona foi proibido. Para controlar os horários de trabalho, cada
uma das duas equipes do FTS só poderia alterar códigos no repositório nos
horários determinados. Este controle foi realizado de forma automática pelo
sistema de repositório de código utilizado no projeto.

      Ao final do estudo, os resultados apresentados pelos autores ficaram muito
aquém do esperado no início do estudo. Houve um ganho de apenas 10% no
tempo de duração do projeto, ao invés dos 50% que teoricamente deveria ser
alcançado. Analisando as estatísticas geradas pelo sistema de repositório de
código utilizado, uma constatação foi importante para justificar a pouca redução
do tempo de desenvolvimento deste experimento. A equipe FTS realmente
34

terminou o projeto num tempo menor que a equipe CO, porém, devido a falta de
uma diretriz sobre o momento de parar a codificação, mesmo tendo terminado a
codificação das funcionalidades propostas, continuou-se apenas aprimorando-as.
Foi possível identificar que na última semana do projeto a equipe FTS fez check-
ins apenas sobre arquivos que já estavam no repositório, ou seja, atualizaram
arquivos, melhorando funcionalidades prontas. Enquanto isso, a equipe CO
realizava a criação das funcionalidades. Cabe lembrar, que segundo os autores,
ambas as equipes concluíram a codificação dos requisitos de forma satisfatória.
Os autores argumentam que apesar de terem identificado um ganho de apenas
10%, este número poderia ser maior, se tivessem definido o momento para
terminar a fase de codificação para a equipe FTS. Este ponto foi identificado
como uma limitação do estudo.



5.3   Estudo apresentado por Solingen e Valkema (2010)



       No estudo apresentado por Solingen e Valkema [SOL10], os autores
apresentaram algumas hipóteses, e através de um experimento controlado,
apontam a validade ou não das hipóteses propostas. O estudo foca na
investigação do impacto do aumento do número de centros distribuídos na
velocidade de desenvolvimento de projetos que utilizam o FTS. Procura-se saber
qual o número ideal de equipes para se trabalhar em um projeto FTS.

       O experimento inicia definindo a configuração das equipes, as quais foram
definidas da seguinte forma: cada execução do experimento seria realizada
utilizando um número de centros de desenvolvimento diferente entre 2 e 4. Estes
centros foram configurados da seguinte forma: sempre existe um centro
responsável por prover os requisitos e os feedbacks do trabalho realizado, então,
na configuração com duas equipes, existirá uma equipe de desenvolvimento e
uma de requisitos, para três equipes, da mesma forma, haverá uma de requisitos
enquanto as outras duas para o desenvolvimento e assim sucessivamente.

       Devido ao fato de ser um experimento controlado, as diferenças de fusos
horários foram todas simuladas, criando horários de trabalho pré definidos entre
as diferentes equipes. Cada ciclo diário consiste de 2 a 4 dias trabalhados (um
35

para cada equipe distinta), dependendo do número de centros adotados. Os dias
de trabalhos são contínuos, onde quando um dia termina (para um determinado
centro) outro está começando, simulando assim fusos horários distintos. Ao final
de um dia, o trabalho é repassado ao próximo time que está iniciando a sua
jornada.

      O experimento foi realizado com estudantes de Ciência da Computação. A
cada dia, três execuções foram realizadas, utilizando 4, 3 e 2 centros de
desenvolvimentos.    Ao    final   de   cada    execução,   retirou-se   uma   equipe
aleatoriamente. Ao final de cada dia, a primeira equipe (responsável por requisitos
e feedbacks) relatava para o primeiro time de desenvolvimento as informações
necessárias para iniciar o próximo ciclo. As tarefas a serem realizados eram
extremamente simples, sendo possível assim, simular um dia de trabalho em
apenas quatro minutos. Com esta configuração, segundo os autores, foi possível
analisar o efeito do número de centros distribuídos em um projeto FTS
relacionado com o tempo de desenvolvimento.

      O estudo discute os resultados obtidos da seguinte forma: apresenta a
hipótese, e a validade ou não da mesma. A seguir estão relacionadas as
hipóteses propostas pelos autores, juntamente com o resultado obtido em relação
as mesmas.

      - Quantidade de trabalho entregue:

             Htotal: total4 > total3 > total2

      Apresentados os dados coletados, foi possível identificar que a quantidade
de trabalho entregue realmente aumenta a medida que a quantidade de centros
de desenvolvimento aumenta, concluindo assim, favoravelmente a esta hipótese.

      - Velocidade média de trabalho por centro:

             Havgspd: avgspd4 < avgspd3 < avgspd2

      Os dados mostram que a adição de centros de desenvolvimento diminuem
a velocidade de trabalho por volta de 20% na média por centro de
desenvolvimento. Portanto, concluindo assim favoravelmente a está hipótese.
36

       - Exatidão do trabalho realizado:

               Haccur: accur4 < accur3 < accur2

       Devido a pequena diferença encontrada nas três variações, nada pôde-se
afirmar sobre está hipótese.

       - Percepção de velocidade:

               Hperspd: perspd4 < perspd3 < perspd2

       Segundo os dados obtidos, houve apenas uma diminuição desta percepção
na configuração com 4 centros. Portanto, segundo os autores mostram, esta
hipótese não foi confirmada.

       - Percepção de exatidão do trabalho:

               Hperacc: peracc4 < peracc3 < peracc2

       Mantendo 2 centros, a percepção de exatidão mostra-se normal, porém,
quando esta configuração possuí mais de 2 centros distintos trabalhando, esta
percepção caí drasticamente, e os participantes encontram mais dificuldade para
medir a exatidão do trabalho em desenvolvimento entre todos os centros,
confirmando assim esta hipótese.

       Ao final do estudo, os autores discutem os resultados obtidos e mostram
que   apesar     das   dificuldades   de   coordenação   e   comunicação   que    o
desenvolvimento FTS impõe, dependendo do que espera-se de um projeto de
software, a sua utilização pode ser benéfica. A principal vantagem que o FTS
pode alcançar, segundo os autores, está na diminuição do tempo de projeto, o
que está em consonância com os outros estudos apresentados no capítulo 5.



5.4   Análise comparativa



       Após a apresentação dos estudos analisados, a Tabela 2 mostra uma
análise comparativa entre diferentes trabalhos. Para cada critério (colunas),
procurou-se saber se o experimento relacionado, de alguma forma indicou
importância para este fator.
37

         Os fatores utilizados para a análise comparativa apresentada na Tabela 2
surgiram de uma avaliação prévia dos estudos apresentados. Procurou-se
identificar os principais fatores de cada estudo, os quais poderiam utilizados para
critério de comparação entre os estudos.



                      Tabela 2. Comparação entre os experimentos apresentados

                                       Mede                   Atinge                 Sugere




                                           Vantagem do
                              Diminuição




                                                                                              Utilizar FTS
                                            número de




                                                                              mínimo de
                               do tempo




                                                                   Esperado

                                                                               Número
                                             centros




                                                                               centros
                                                         Ganho


                                                                    Ganho
                                                         Algum
Experimentos Apresentados



Setamanit, Wakeland e            X             X          X                      X             X
    Raffo [SET07]
  Carmel, Dubisnky e             X                        X                                    X
  Espinosa [CAR09]
  Solingen e Valkema             X             X          X                      X             X
        [SOL10]



         A primeira constatação que podemos perceber em relação aos estudos
apresentados está relacionada às métricas utilizadas. Percebe-se que todos os
estudos medem a diminuição do tempo de projeto através do uso do FTS.
[CAR09] e [SET07] identificam esta métrica de uma maneira semelhante,
comparando um projeto executado de forma tradicional, co-localizada em um
único centro, com um projeto executado deforma distribuída, utilizando o FTS.
[CAR09] executa o experimento uma única vez, alcançando um resultado inferior
ao esperado, enquanto [SET07], ao obter um resultado aquém do esperado,
investiga os problemas enfrentados e refaz o experimento, para tentar melhorar o
ganho no tempo de projeto, alcançando um pequeno ganho. Já [SOL10] faz o
experimento utilizando diversas distribuições com 2, 3 e 4 equipes, buscando
avaliar se há uma melhora no ganho do tempo de projeto ao adicionar novos
times.

         A métrica relacionada ao número de centros necessários para obter
vantagem na utilização do FTS foi utilizada por [SET07] e [SOL10]. Estes estudos
fazem uma comparação do ganho no tempo de desenvolvimento adicionando
mais de dois centros de desenvolvimento, obtendo resultados satisfatórios.
38

Conseqüentemente, estes trabalhos sugerem um número mínimo de centros de
desenvolvimento para aumentar as chances de sucesso na utilização do
desenvolvimento FTS. Para [SET07], a vantagem no tempo de desenvolvimento
só é atingida quando existem, pelo menos, três centros distribuídos. Enquanto
que [SOL10] defende que o ganho aumenta conforme o número de centros
distribuídos aumenta (este estudo utilizou distribuição entre dois e quatro centros
para chegar a esta conclusão).

      O resultado mais importante apresentado nos estudos avaliados está
relacionado ao ganho que o FTS pode prover. Percebemos que houve realmente
um ganho em relação ao tempo de desenvolvimento em todos os trabalhos
apresentados. Porém, este ganho ficou muito aquém do ganho teórico esperado
pelo desenvolvimento FTS. Segundo [CAR09], este ganho ficou em torno de 10%,
já para [SET07], o ganho foi de 11,1%, porém, apenas quando um terceiro centro
de desenvolvimento foi adicionado ao projeto, pois utilizando apenas dois, o
tempo para desenvolver o projeto, foi 50% maior. [SOL10] mostra apenas que a
quantidade de trabalho entregue é maior se aumentarmos o número de centros
de desenvolvimentos distribuídos, obtendo melhor resultado com quatro centros
distribuídos (número máximo utilizado).

      Portanto, segundo os resultados apresentados, o desenvolvimento FTS
ainda não produz o ganho teórico esperado, principalmente devido as dificuldades
impostas, porém pode-se obter algum ganho no tempo de projeto. Percebe-se
que todos os estudos indicam a utilização do desenvolvimento FTS. Porém,
devido às dificuldades de coordenação e comunicação neste tipo de projeto,
principalmente durante a transição de tarefas, a utilização desta forma de
desenvolvimento deve ser utilizada, segundo os estudos, apenas quando há a
necessidade de desenvolver o produto em um tempo menor, ou seja, diminuir o
time-to-market [SET07, SOL10, CAR09]. As conclusões destes estudos vão ao
encontro com a literatura desta área, a qual afirma que a principal vantagem do
uso do desenvolvimento FTS está na diminuição do tempo de desenvolvimento de
um projeto [CAR09, GUP09-II, GOR96-II, VIS09].
39


6 CONSIDERAÇÕES FINAIS


      A utilização do DDS pelas organizações está cada vez mais comum. Isto
se deve ao fato das diversas vantagens que a utilização deste ambiente de
desenvolvimento pode trazer. Porém, o DDS apresenta alguns desafios, dentre
estes, está a diferença de fuso horário entre centros de desenvolvimento
distribuídos. Alguns autores sugerem que esta diferença possa ser vista como
uma vantagem, através do uso do desenvolvimento FTS [CAR09, HOL06, LIN07,
SET07, SOL10, KNO07, TRE06].

      Contudo, de acordo com os estudos apresentados [SET07, CAR09,
SOL10], o desenvolvimento FTS pode resultar em um ganho no tempo de
desenvolvimento do projeto, ou seja, redução do time-to-market. Porém o ganho
apresentado ainda é muito inferior ao esperado. Portanto, devido aos desafios
que esta forma de desenvolver software pode apresentar, os estudos expostos no
capítulo 5 sugerem o uso do FTS apenas para projetos onde existe a necessidade
da redução do tempo de projeto. Ainda, a revisão da literatura mostrou que devido
ao fato do desenvolvimento FTS ser uma área nova de estudo na engenharia de
software, poucos estudos sobre esta temática foram publicados [TRE06]. Estudos
empíricos que envolvem casos de sucesso na indústria utilizando esta forma de
desenvolver software ainda são raros [SOL10, CAR09]. Este fato está relacionado
as inúmeras dificuldades de coordenação e comunicação em projetos desta
natureza [SET07, CAR09]. Estas adversidades surgem principalmente durante a
transição de tarefas entre equipes distribuídas, os chamados hand-offs.

      Neste sentido, identifica-se a oportunidade de desenvolver um estudo que
atue nas dificuldades relatadas. Portanto, esta pesquisa visa a definição de um
processo para atuar na transição de tarefas entre equipes distribuídas,
especificamente durante a fase de implementação.

      Para atingir este objetivo, as próximas etapas desta pesquisa estarão
focadas na identificação de técnicas e abordagens que possam ser utilizadas,
como, por exemplo, metodologias ágeis, RUP, etc. Somente como exemplo,
explorando preliminarmente o uso de técnicas, como Test-driven Development
(TDD) e integração contínua, poderia ser criado um processo com a seguinte
40

idéia: para cada funcionalidade do projeto, definem-se testes unitários antes do
início da sua implementação, durante a fase de projeto. Estes artefatos seriam
utilizados como um guia para as equipes distribuídas. Ao final de cada dia de
trabalho, deve-se fazer o check-in do código desenvolvido, e um build
automatizado é executado. Nesta etapa, todos os testes unitários são executados
e, ao final, sabe-se quais os testes que estão cobertos pelo código atual. Desta
maneira, seria possível identificar de forma clara e precisa em qual ponto do
desenvolvimento a equipe anterior terminou o seu dia de trabalho, e de onde o
trabalho deve ser continuado. A Figura 9 apresenta a idéia principal do processo a
ser desenvolvido, iniciando desde o ponto em que os testes unitários são criados,
até o momento em que a implementação da funcionalidade está concluída.




                          Figura 9. Fluxo principal do processo
41


                        REFERÊNCIAS BIBLIOGRÁFICAS


[AUD07]      Audy, J.; Prikladnicki, R., “Desenvolvimento Distribuído de Software –
             Desenvolvimento de Software com Equipes Distribuídas.” Brasil:
             Campus, 2007. 232 p.
[BIN07]      Bin X., “A Service Oriented Model for Role Based Global Cooperative
             Software Development," Convergence Information Technology, 2007.
             International Conference on , vol., no., pp.376-381, 21-23 Nov. 2007
[BOS10]      Bosch, J.; Bosch-Sijtsema, P., "Software Product Lines , Global
             Development and Ecosystems : Collaboration in Software Engineering,"
             Collaborative Software Engineering, Springer Berlin Heidelberg, pp.77-
             92, 10 Mar. 2010
[CAR01]      Carmel, E.; Agarwal, R.; , "Tactical approaches for alleviating distance in
             global software development," Software, IEEE , vol.18, no.2, pp.22-29,
             Mar/Apr 2001
[CAR06]      Carmel, E.; "Building your Information Systems from the Other Side of the
             World: How Infosys manages time differences" . Management Information
             Systems Quarterly - Executive , March, 2006.
[CAR09]      Carmel, E.;Espinosa, A.; Dubinsky, Y., "Follow The Sun Software
             Development : New Perspectives , Conceptual Foundation , and
             Exploratory Field Study," 42nd Hawaii International Conference on
             System Sciences, Proceedings , 2009
[CAR10]      "Follow the Sun" Workflow in Global Software Development Journal of
             Management Information Systems Vol. 27 No. 1 , Summer 2010 , pp. 17 -
             38
[CAR99]      Carmel, E. Global Software Teams: collaborating across borders and time
             zones, 1999. publicado por Prentice Hall-PTR
[CON06]      Ó Conchúir, E., Ågerfalk, P.J., Fitzgerald, B and Holmström H.
             (forthcoming). Global Software Development. Never mind the Problems –
             Where are the Benefits? To appear in Communications of the ACM
             Special Issue on Distributed Development.
[DAM06]      Damian, D.; Moitra, D., "Guest Editors' Introduction: Global Software
             Development:        How        Far       Have       We       Come?",
             Software,IEEE,vol.23,no.5,Sept.-Oct. 2006, p.17-19.
[GOR06]      Gorton, I.; Hawryszkiewycz, I.; Fung, L.; , "Enabling software shift work
             with groupware: a case study," System Sciences, 1996., Proceedings of
             the Twenty-Ninth Hawaii International Conference on , , vol.3, no., pp.72-
             81 vol.3, 3-6 Jan 1996
[GOR96-II]   Ian Gorton, Sanjeev Motwani, Issues in co-operative software engineering
             using globally distributed teams, Information and Software Technology,
             Volume 38, Issue 10, 1996, Pages 647-655
[GUP09]      Amar Gupta, Deriving mutual benefits from offshore outsourcing,
             Communications of the ACM, v.52 n.6, June 2009
42

[GUP09-II]   Amar Gupta, Elisa Mattarelli, Satwik Seshasai, Joseph Broschak, Use of
             collaborative technologies and knowledge sharing in co-located and
             distributed teams: Towards the 24-h knowledge factory, The Journal of
             Strategic Information Systems, Volume 18, Issue 3, September 2009,
             Pages 147-161
[HER01]      Herbsleb, J.D.; Mockus, A.; Finholt, T.A.; Grinter, R.E.; , "An empirical
             study of global software development: distance and speed," Software
             Engineering, 2001. ICSE 2001. Proceedings of the 23rd International
             Conference on , vol., no., pp. 81- 90, 12-19 May 2001
[HER99]      Herbsleb, J.D.; Grinter, R.E., "Architectures, coordination, and distance:
             Conway's law and beyond ," Software, IEEE , vol.16, no.5, pp.63-70,
             Sep/Oct 1999
[HOL06]      Helena Holmstrom; Eoin O Conchuir; Par J Agerfalk; Brian Fitzgerald; ,
             "Global Software Development Challenges: A Case Study on Temporal,
             Geographical and Socio-Cultural Distance," Global Software Engineering,
             2006. ICGSE '06. International Conference on , vol., no., pp.3-11, Oct.
             2006
[JAL04]      Jalote, P.; Jain, G.; , "Assigning tasks in a 24-hour software development
             model," Software Engineering Conference, 2004. 11th Asia-Pacific , vol.,
             no., pp. 309- 315, 30 Nov.-3 Dec. 2004
[KAR98]      Karolak, D. W., "Global Software Development - Managing Virtual Teams
             and Environments." Los Alamitos, EUA: IEEE Computer Society, 1998.
             159 p.
[KNO07]      Knob, F. F., “RiskFree4ppm: uma proposta de processo para o
             gerenciamento de portfólios de projetos distribuídos.” Dissertação de
             Mestrado, PPGCC, Faculdade de Informática, PUCRS, 2007.
[KRI08]      Krishnamurthy, N.; Saran, A. ; “Building Software: A Practitioner's Guide
             (Applied Software Engineering Series)”. EUA: Auerbach Publications,
             2008.
[LAN08]      Lane, M.; Agerfalk, P., "On the Suitability of Particular Software
             Development Roles to Global Software Development", Global Software
             Engineering, 2008. ICGSE 2008. IEEE International Conference on , vol.,
             no., pp.3-12, 17-20 Aug. 2008.
[LIN07]      Lings B., Lundell B., Ågerfalk P. J., Fitzgerald B., "A reference model for
             successful Distributed Development of Software Systems," Global
             Software Engineering, 2007. ICGSE 2007. IEEE International Conference
             on , vol., no., pp. 130-139. 2007
[LOP04]      Lopes, L.,“Um Modelo de Processo de Engenharia de Requisitos para
             Ambientes de Desenvolvimento Distribuído de Software.” Dissertação de
             Mestrado, PPGCC, Faculdade de Informática, PUCRS, 2004.
[LUC02]      Di Lucca, G.A.; Di Penta, M.; Gradara, S.; , "An approach to classify
             software maintenance requests," Software Maintenance, 2002.
             Proceedings. International Conference on , vol., no., pp. 93- 102, 2002
[MAR09]      Martignoni, R., "Global Sourcing of Software Development - A Review of
             Tools and Services," Global Software Engineering, 2009. ICGSE 2009.
             Fourth IEEE International Conference on , vol., no., pp.303-308, 13-16
             July 2009
[MCC96]      McConnell, S. “Rapid Development: Taming Wild Software Schedules ”.
             EUA: Microsoft Press, 1996.
43

[OSH07]      Oshri I., Kotlarsky J. and Willcocks L.P., “Global Software Development:
             Exploring Socialization in Distributed Strategic Projects”, Journal of
             Strategic Information Systems 16 (1), pp. 25-49. 2007
[PIL06]      Pilatti, L. S. M., “Estrutura e Características para Análise de Ambientes de
             Desenvolvimento Global de Software em Organizações Offshore
             Insourcing.” Dissertação de Mestrado, PPGCC, Faculdade de
             Informática, PUCRS, 2006.
[PRE10]      Pressman, Roger S. “Software Engineering: a practitioner’s approach
             (seventh edition)”. EUA: McGraw Hill, 2010. 888p
[PRE95]      Pressman, Roger S. “Engenharia de Software”. Brasil: Makron Books,
             1995. 1027p
[PRI08]      Prikladnicki, R.; Damian, D.; Audy, J., "Patterns of Evolution in the
             Practice of Distributed Software Development in Wholly Owned
             Subsidiaries: A Preliminary Capability Model," Global Software
             Engineering, 2008. ICGSE 2008. IEEE International Conference on , vol.,
             no., pp.99-108, 17-20 Aug. 2008
[PRI09]      Prikladnicki, R., “Padrões de Evolução na Prática de Desenvolvimento de
             Software em Ambientes de Internal Offshoring: Um Modelo de
             Capacidade.” Tese de Doutorado, PPGCC, Faculdade de Informática,
             PUCRS, 2009.
[SCH00]      Schmidt, M. E.C. “Implementing the IEEE Software Engineering
             Standards”. EUA: Sams, 2000.
[SET07]      Setamanit, S.-o.; Wakeland, W.; Raffo, D.; , "Improving Global Software
             Development Project Performance Using Simulation," Management of
             Engineering and Technology, Portland International Center for , vol., no.,
             pp.2458-2466, 5-9 Aug. 2007
[SET07-II]   Siri-on Setamanit , Wayne Wakeland , David Raffo, Using simulation to
             evaluate global software development task allocation strategies:
             Research Sections, Software Process: Improvement and Practice, v.12
             n.5, p.491-503, September 2007
[SOL10]      van Solingen, Rini; Valkema, Menno; , "The Impact of Number of Sites in
             a Follow the Sun Setting on the Actual and Perceived Working Speed and
             Accuracy: A Controlled Experiment," Global Software Engineering
             (ICGSE), 2010 5th IEEE International Conference on , vol., no., pp.165-
             174, 23-26 Aug. 2010
[SOM07]      SOMMERVILLE, Ian. “Software Engineering (eighth edition)”. Pearson
             Education Limited, 2007, 865p.
[SOO08]      P. Sooraj, Pratap K.J. Mohapatra, (2008) "Modeling the 24-h software
             development process", Strategic Outsourcing: An International Journal,
             Vol. 1 Iss: 2, pp.122 - 141
[TRE06]      Treinen, James J., Miller-Frost, Susan L. Following the Sun : Case
             Studies in Global Software Development. In : IBM Systems Journal,
             Volume 45, Number 4, October 2006.
[VIS09]      Visser, C; "Connecting Time Zones and Languages in Follow-the-Sun: a
             routing model", Dissertação de Mestrado - Delf University of Technology -
             Holanda
44

[YAP05]   Yap, M.; , "Follow the sun: distributed extreme programming
          development," Agile Conference, 2005. Proceedings , vol., no., pp. 218-
          224, 24-29 July 2005

Mais conteúdo relacionado

Mais procurados

Resenha: O Impacto do Software Livre e de Código Aberto na Indústria Brasileira
Resenha: O Impacto do Software Livre e de Código Aberto na Indústria BrasileiraResenha: O Impacto do Software Livre e de Código Aberto na Indústria Brasileira
Resenha: O Impacto do Software Livre e de Código Aberto na Indústria Brasileiraantonio sérgio nogueira
 
Resenha Producao de Software: Software Livre / Código Aberto
Resenha Producao de Software: Software Livre / Código AbertoResenha Producao de Software: Software Livre / Código Aberto
Resenha Producao de Software: Software Livre / Código Abertoantonio sérgio nogueira
 
Planejamento em desenvolvimento_de_sistemas
Planejamento em desenvolvimento_de_sistemasPlanejamento em desenvolvimento_de_sistemas
Planejamento em desenvolvimento_de_sistemasTiago
 
Kmobile, Jpilot e Kpilot
Kmobile, Jpilot e KpilotKmobile, Jpilot e Kpilot
Kmobile, Jpilot e KpilotHudson Augusto
 
TCC - MBA em Gestão de Projetos - PMI da Faculdade IBTA
TCC - MBA em Gestão de Projetos - PMI da Faculdade IBTATCC - MBA em Gestão de Projetos - PMI da Faculdade IBTA
TCC - MBA em Gestão de Projetos - PMI da Faculdade IBTALeonardo Lima
 
Java awt
Java awtJava awt
Java awtTiago
 
Tcc escola educacao Gerenciamento de Projetos
Tcc escola educacao Gerenciamento de ProjetosTcc escola educacao Gerenciamento de Projetos
Tcc escola educacao Gerenciamento de ProjetosIverson moya
 
Drupal
DrupalDrupal
DrupalTiago
 
Java applet
Java appletJava applet
Java appletTiago
 
Pascal
PascalPascal
PascalTiago
 
Java swing
Java swingJava swing
Java swingTiago
 
TCC - Estudo de caso: Implantação do Modelo MPS.BR
TCC - Estudo de caso: Implantação do Modelo MPS.BRTCC - Estudo de caso: Implantação do Modelo MPS.BR
TCC - Estudo de caso: Implantação do Modelo MPS.BREdimar Ramos
 

Mais procurados (18)

Ltsp
LtspLtsp
Ltsp
 
Resenha: O Impacto do Software Livre e de Código Aberto na Indústria Brasileira
Resenha: O Impacto do Software Livre e de Código Aberto na Indústria BrasileiraResenha: O Impacto do Software Livre e de Código Aberto na Indústria Brasileira
Resenha: O Impacto do Software Livre e de Código Aberto na Indústria Brasileira
 
Resenha Producao de Software: Software Livre / Código Aberto
Resenha Producao de Software: Software Livre / Código AbertoResenha Producao de Software: Software Livre / Código Aberto
Resenha Producao de Software: Software Livre / Código Aberto
 
Planejamento em desenvolvimento_de_sistemas
Planejamento em desenvolvimento_de_sistemasPlanejamento em desenvolvimento_de_sistemas
Planejamento em desenvolvimento_de_sistemas
 
Kmobile, Jpilot e Kpilot
Kmobile, Jpilot e KpilotKmobile, Jpilot e Kpilot
Kmobile, Jpilot e Kpilot
 
jogo
jogojogo
jogo
 
TCC Aporano Play'ed SCRUM'ces - Apresentacao
TCC Aporano Play'ed SCRUM'ces - ApresentacaoTCC Aporano Play'ed SCRUM'ces - Apresentacao
TCC Aporano Play'ed SCRUM'ces - Apresentacao
 
TCC - MBA em Gestão de Projetos - PMI da Faculdade IBTA
TCC - MBA em Gestão de Projetos - PMI da Faculdade IBTATCC - MBA em Gestão de Projetos - PMI da Faculdade IBTA
TCC - MBA em Gestão de Projetos - PMI da Faculdade IBTA
 
Java awt
Java awtJava awt
Java awt
 
Tcc escola educacao Gerenciamento de Projetos
Tcc escola educacao Gerenciamento de ProjetosTcc escola educacao Gerenciamento de Projetos
Tcc escola educacao Gerenciamento de Projetos
 
Drupal
DrupalDrupal
Drupal
 
Tcc Redmini Software de Gestão de Projetos
Tcc Redmini Software de Gestão de ProjetosTcc Redmini Software de Gestão de Projetos
Tcc Redmini Software de Gestão de Projetos
 
J2me
J2meJ2me
J2me
 
Java applet
Java appletJava applet
Java applet
 
Pascal
PascalPascal
Pascal
 
Java swing
Java swingJava swing
Java swing
 
TCC - Estudo de caso: Implantação do Modelo MPS.BR
TCC - Estudo de caso: Implantação do Modelo MPS.BRTCC - Estudo de caso: Implantação do Modelo MPS.BR
TCC - Estudo de caso: Implantação do Modelo MPS.BR
 
Jabber
JabberJabber
Jabber
 

Semelhante a PUCRS - Desenvolvimento FTS em DDS

ARQUITETURA DISTRIBUÍDA DE SOFTWARE PARA AMBIENTE DE DESENVOLVIMENTO DISTRIBUÍDO
ARQUITETURA DISTRIBUÍDA DE SOFTWARE PARA AMBIENTE DE DESENVOLVIMENTO DISTRIBUÍDOARQUITETURA DISTRIBUÍDA DE SOFTWARE PARA AMBIENTE DE DESENVOLVIMENTO DISTRIBUÍDO
ARQUITETURA DISTRIBUÍDA DE SOFTWARE PARA AMBIENTE DE DESENVOLVIMENTO DISTRIBUÍDOEstevão Hess
 
Inkscape
InkscapeInkscape
InkscapeTiago
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on railsTiago
 
Gerenciamento de projetos
Gerenciamento de projetosGerenciamento de projetos
Gerenciamento de projetosTiago
 
Tcl tk
Tcl tkTcl tk
Tcl tkTiago
 
PROJETO: AVALIAÇÃO DO PROGRAMA DE INCENTIVOS À SUBSTITUIÇÃO DE LÂMPADAS INCAN...
PROJETO: AVALIAÇÃO DO PROGRAMA DE INCENTIVOS À SUBSTITUIÇÃO DE LÂMPADAS INCAN...PROJETO: AVALIAÇÃO DO PROGRAMA DE INCENTIVOS À SUBSTITUIÇÃO DE LÂMPADAS INCAN...
PROJETO: AVALIAÇÃO DO PROGRAMA DE INCENTIVOS À SUBSTITUIÇÃO DE LÂMPADAS INCAN...Gilberto De Martino Jannuzzi
 
AGILE UNIFIED PROCESS
AGILE UNIFIED PROCESSAGILE UNIFIED PROCESS
AGILE UNIFIED PROCESSEder Nogueira
 
T(C)laudio(C)osenza - Consonância dos Objetivos da Governança Corporativa e d...
T(C)laudio(C)osenza - Consonância dos Objetivos da Governança Corporativa e d...T(C)laudio(C)osenza - Consonância dos Objetivos da Governança Corporativa e d...
T(C)laudio(C)osenza - Consonância dos Objetivos da Governança Corporativa e d...Claudio Cosenza, Manager, MBA
 
TCC MBA/FGV - Paulo Rogério Batalhão
TCC MBA/FGV - Paulo Rogério BatalhãoTCC MBA/FGV - Paulo Rogério Batalhão
TCC MBA/FGV - Paulo Rogério BatalhãoPaulo Batalhão
 
Trabalho Fábrica de Softwares baseado em ISO 9001:2008
Trabalho Fábrica de Softwares baseado em ISO 9001:2008Trabalho Fábrica de Softwares baseado em ISO 9001:2008
Trabalho Fábrica de Softwares baseado em ISO 9001:2008Claudio Cardozo
 
A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...
A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...
A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...Marcelo Dieder
 
Instalacao xoops
Instalacao xoopsInstalacao xoops
Instalacao xoopsTiago
 
Post gis
Post gisPost gis
Post gisTiago
 
Postfix
PostfixPostfix
PostfixTiago
 

Semelhante a PUCRS - Desenvolvimento FTS em DDS (20)

ARQUITETURA DISTRIBUÍDA DE SOFTWARE PARA AMBIENTE DE DESENVOLVIMENTO DISTRIBUÍDO
ARQUITETURA DISTRIBUÍDA DE SOFTWARE PARA AMBIENTE DE DESENVOLVIMENTO DISTRIBUÍDOARQUITETURA DISTRIBUÍDA DE SOFTWARE PARA AMBIENTE DE DESENVOLVIMENTO DISTRIBUÍDO
ARQUITETURA DISTRIBUÍDA DE SOFTWARE PARA AMBIENTE DE DESENVOLVIMENTO DISTRIBUÍDO
 
Métodos ágeis
Métodos ágeisMétodos ágeis
Métodos ágeis
 
Inkscape
InkscapeInkscape
Inkscape
 
Monografia-Devops
Monografia-DevopsMonografia-Devops
Monografia-Devops
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on rails
 
Mps.br guia de_aquisicao_2013
Mps.br guia de_aquisicao_2013Mps.br guia de_aquisicao_2013
Mps.br guia de_aquisicao_2013
 
Gerenciamento de projetos
Gerenciamento de projetosGerenciamento de projetos
Gerenciamento de projetos
 
Tcl tk
Tcl tkTcl tk
Tcl tk
 
PROJETO: AVALIAÇÃO DO PROGRAMA DE INCENTIVOS À SUBSTITUIÇÃO DE LÂMPADAS INCAN...
PROJETO: AVALIAÇÃO DO PROGRAMA DE INCENTIVOS À SUBSTITUIÇÃO DE LÂMPADAS INCAN...PROJETO: AVALIAÇÃO DO PROGRAMA DE INCENTIVOS À SUBSTITUIÇÃO DE LÂMPADAS INCAN...
PROJETO: AVALIAÇÃO DO PROGRAMA DE INCENTIVOS À SUBSTITUIÇÃO DE LÂMPADAS INCAN...
 
AGILE UNIFIED PROCESS
AGILE UNIFIED PROCESSAGILE UNIFIED PROCESS
AGILE UNIFIED PROCESS
 
Estudo de caso obra
Estudo de caso   obraEstudo de caso   obra
Estudo de caso obra
 
T(C)laudio(C)osenza - Consonância dos Objetivos da Governança Corporativa e d...
T(C)laudio(C)osenza - Consonância dos Objetivos da Governança Corporativa e d...T(C)laudio(C)osenza - Consonância dos Objetivos da Governança Corporativa e d...
T(C)laudio(C)osenza - Consonância dos Objetivos da Governança Corporativa e d...
 
TCC MBA/FGV - Paulo Rogério Batalhão
TCC MBA/FGV - Paulo Rogério BatalhãoTCC MBA/FGV - Paulo Rogério Batalhão
TCC MBA/FGV - Paulo Rogério Batalhão
 
Trabalho Fábrica de Softwares baseado em ISO 9001:2008
Trabalho Fábrica de Softwares baseado em ISO 9001:2008Trabalho Fábrica de Softwares baseado em ISO 9001:2008
Trabalho Fábrica de Softwares baseado em ISO 9001:2008
 
A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...
A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...
A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...
 
Instalacao xoops
Instalacao xoopsInstalacao xoops
Instalacao xoops
 
Post gis
Post gisPost gis
Post gis
 
Uml
UmlUml
Uml
 
Postfix
PostfixPostfix
Postfix
 
Ltsp
LtspLtsp
Ltsp
 

PUCRS - Desenvolvimento FTS em DDS

  • 1. PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL FACULDADE DE INFORMÁTICA PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DE COMPUTAÇÃO DESENVOLVIMENTO FOLLOW-THE-SUN EM AMBIENTE DE DESENVOLVIMENTO DISTRIBUÍDO DE SOFTWARE ESTEVÃO RICARDO HESS Orientador: Prof. Dr. Jorge Luis Nicolas Audy Porto Alegre 2010
  • 2. 2 Desenvolvimento Follow-the-sun em Ambiente de Desenvolvimento Distribuído de Software RESUMO Atualmente, o processo de globalização está se destacando, o que está gerando grande desafio para a área de engenharia de software, tornando o desenvolvimento cada vez mais distribuído e global. Em busca de vantagens competitivas, tais como redução de custo e ganho de produtividade, as organizações optam por distribuir o processo de desenvolvimento de software em países com custo de produção mais acessível. Cada vez mais projetos estão sendo desenvolvidos em ambientes geograficamente distribuídos, caracterizando o desenvolvimento distribuído de software. Entretanto, os desafios inerentes a este ambiente de desenvolvimento de software são significativos. Dentre estes desafios está a diferença de fuso horário, o qual pode ser também encarado como uma vantagem, através do uso do desenvolvimento follow-the-sun. Este trabalho apresenta uma revisão da literatura desta temática e constata a escassez de trabalhos nesta área. Apresenta ainda, estudos que concluem que o ganho obtido com o desenvolvimento follow-the-sun ainda está muito aquém do esperado, devido as dificuldades impostas por esta forma de desenvolvimento. Portanto, torna-se cada vez mais importante encontrar maneiras de atenuar estas dificuldades. Neste sentido, este trabalho mostra a importância em definir um processo formal para a transferência diária de tarefas durante a fase de desenvolvimento de um projeto de software. Palavras Chave: Desenvolvimento distribuído de software, Desenvolvimento global software, Engenharia de software, Follow-the-sun, Round the clock, Time to market.
  • 3. 3 Desenvolvimento Follow-the-sun em Ambiente de Desenvolvimento Distribuído de Software ABSTRACT Nowadays, the globalization process is emerging, what is generating huge challenges to the software engineering area, making the software development more distributed and global. Looking for the competitive advantages as low coast and productivity gains, organizations choose to distribute their software development process to other countries with production costs more affordable. Increasingly, projects are being developed in geographically distributed environments, featuring the distributed software development. However, the challenges inherent in this software development environment are significant. Among these challenges is the time zone difference, which can also be tackled as an advantage, through the use of the follow-the-sun development. This paper presents a literature review in this subject and concludes the scarcity of studies in this area. Also presents studies that conclude that the gain that the follow-the-sun development can provide are still worse than expected, due to difficulties imposed by follow-the-sun. Therefore, it becomes increasingly important to find ways to alleviate these difficulties. In this direction, this paper shows the importance to define a formal process to alleviate the daily hand-offs during the development phase in a software project Keywords: Distributed software development, Global software development, Software engineer, Follow-the-sun, Round the clock, Time to market.
  • 4. 4 LISTA DE TABELAS Tabela 1. Comparação entre as definições apresentadas ................................... 19 Tabela 2. Comparação entre os experimentos apresentados .............................. 37
  • 5. 5 LISTA DE FIGURAS Figura 1. Modelo cascata, adaptado de [SOM07] ................................................ 22 Figura 2. Distribuição típica da duração das fases de um projeto, adaptado de [CAR09] ................................................................................................................ 25 Figura 3. Utilização do FTS durante a fase de testes ........................................... 26 Figura 4. Utilização do FTS durante a fase de testes com trabalho simultâneo .. 26 Figura 5. Modelo de Prototipação ........................................................................ 28 Figura 6. Modelo Incremental, adaptado de [PRE10] ........................................... 29 Figura 7. Disposição inicial das equipes, adaptado de [SET07] .......................... 30 Figura 8. Duração do experimento, adaptado de [CAR09] ................................... 33 Figura 9. Fluxo principal do processo................................................................... 40
  • 6. 6 LISTA DE ABREVIATURAS E SIGLAS AS Arquitetura de Software DDS Desenvolvimento Distribuído de Software ES Engenharia de Software FTS Follow-the-sun GSD Global Software Development VPN Virtual Private Network
  • 7. 7 SUMÁRIO 1 INTRODUÇÃO ............................................................................................... 8 2 CONTEXTUALIZAÇÃO................................................................................ 10 2.1 Desenvolvimento Distribuído de Software ............................................. 10 2.2 Desenvolvimento Follow-the-sun ........................................................... 14 3 CONCEITOS ................................................................................................ 16 4 CICLOS DE VIDA NO PROCESSO DE DESENVOLVIMENTO FOLLOW- THE-SUN ............................................................................................................. 21 4.1 Modelo Cascata ..................................................................................... 21 4.1.1 Follow-the-Sun no Modelo Cascata ................................................ 23 4.2 Modelo de Prototipação ......................................................................... 27 4.2.1 Follow-the-Sun no Modelo de Prototipação .................................... 28 4.3 Modelo Incremental ............................................................................... 29 4.3.1 Follow-the-Sun no Modelo Incremental .......................................... 29 5 ESTUDOS EM FOLLOW-THE-SUN ............................................................ 30 5.1 Estudo apresentado por Setamanit, Wakeland e Raffo (2007).............. 30 5.2 Estudo apresentado por Carmel, Dubinsky e Espinosa (2009) ............. 32 5.3 Estudo apresentado por Solingen e Valkema (2010) ............................ 34 5.4 Análise comparativa .............................................................................. 36 6 CONSIDERAÇÕES FINAIS ......................................................................... 39 REFERÊNCIAS BIBLIOGRÁFICAS ..................................................................... 41
  • 8. 8 1 INTRODUÇÃO No ambiente em que estamos vivendo atualmente, o processo de globalização está se destacando, o que está gerando grande desafio para a área de Engenharia de Software (ES). Hoje em dia, mais projetos estão sendo desenvolvidos em ambientes geograficamente distribuídos, caracterizando o Desenvolvimento Distribuído de Software (DDS). O DDS é caracterizado sempre que um ou mais recursos envolvidos no projeto estiver fisicamente distante dos demais [AUD07]. Pode-se dizer também que uma equipe global de desenvolvimento de software está tipicamente em países diferentes, porém colaborando em um mesmo projeto de qualquer natureza (criação ou manutenção de software) [LAN08]. Durante a implementação do DDS, diversos desafios de gerenciamento emergem. Dentre estes desafios, diversos autores mostram que a diferença de fuso horário pode ser um fator de extrema relevância [HOL06, HER01, TRE06]. Porém, a diferença de fuso horário pode ser utilizada ainda como vantagem e não apenas como uma desvantagem [CAR09, HOL06, LIN07, SET07, SOL10, KNO07, TRE06]. Neste sentido, surge o conceito conhecido como desenvolvimento follow-the-sun (a partir deste ponto, referenciado como FTS), também conhecido como desenvolvimento round-the-clock, no qual o projeto é desenvolvido 24 horas por dia, utilizando times alocados em diferentes localidades, com diferentes fusos horários, utilizando esta diferença como uma vantagem para o projeto [KNO07, TRE06]. Dentro desta área de estudo, este trabalho será desenvolvido com o objetivo de desenvolver um processo formal para a transferência diária de tarefas em um ambiente FTS, durante a fase de implementação de um projeto de software. Portanto, esta pesquisa torna-se relevante, pois a criação de um processo para a transferência de trabalho pode facilitar o uso desta estratégia nos projetos de software. Além disto, para a teoria da área, esta pesquisa torna-se importante,
  • 9. 9 pois a literatura não apresenta a definição de um processo para a transferência de trabalho em projetos que utilizam esta estratégia. Sintetizando, a questão de pesquisa que norteia este estudo é: como transferir trabalho durante a fase de desenvolvimento do ciclo de vida de um software em um ambiente de DDS, utilizando estratégia FTS?Para alcançar os objetivos citados, este trabalho estará estruturado da seguinte forma: a seção dois destinada a apresentar uma Contextualização envolvendo o desenvolvimento distribuído de software e o desenvolvimento follow-the-sun; a seção três aborda os Conceitos encontrados na literatura relacionados ao desenvolvimento follow- the-sun; a seção quatro apresenta o Ciclo de Vida no Processo de Desenvolvimento Follow-the-sun, focando em uma breve descrição de modelos de ciclos de vida e, para cada modelo, serão abordadas diferentes formas de utilizar o desenvolvimento FTS; a seção cinco aborda os Estudos encontrados na literatura sobre a área de pesquisa; e, finalmente, na seção seis será exposto as Considerações Finais, onde será realizada uma análise crítica da pesquisa em desenvolvimento.
  • 10. 10 2 CONTEXTUALIZAÇÃO O Desenvolvimento Distribuído de Software (DDS) está tornando-se uma tendência na indústria de software [DAM06, HER01], pois apresenta diversos fatores motivadores que levam as empresas a utilizar cada vez mais este conceito em seus negócios. Porém, o DDS adiciona inúmeros desafios ao processo de desenvolvimento de software. Dentre estes desafios, podemos citar a diferença de fuso horário entre as equipes distribuídas. Entretanto, o fuso horário pode ser encarado como uma vantagem para o projeto. Esta diferença de fuso horário pode ser utilizada para realizar o uso do desenvolvimento FTS [HOL06, LIN07]. Sendo assim, neste capítulo apresentam-se os desafios existentes no desenvolvimento distribuído de software (DDS), e como surge a utilização do desenvolvimento FTS neste contexto. Na seção 2.1 é apresentado o desenvolvimento distribuído de software (DDS), juntamente com suas vantagens e os seus desafios. Na seção 2.2 será mostrado como surge o desenvolvimento FTS em ambiente de DDS. 2.1 Desenvolvimento Distribuído de Software Para contextualização do desenvolvimento distribuído de software, nesta seção apresentam-se alguns resultados obtidos na revisão da literatura abordada no trabalho de Introdução à Pesquisa I. Serão apresentados os fatores que motivam a utilização do DDS e os desafios encontrados nesta área. O DDS não é um conceito novo. O DDS surgiu nos anos 90, quando as empresas começaram a desenvolver software com times distribuídos [LAN08]. O
  • 11. 11 DDS é caracterizado sempre que um ou mais recursos envolvidos no projeto estiverem fisicamente distantes dos demais [AUD07]. Quando a distância física entre os integrantes dos times de um projeto abrange mais de um país, caracteriza-se o Desenvolvimento Global de Software (GSD, do inglês Global Software Development) [LAN08]. A utilização do DDS pelas empresas está cada vez mais comum. Isto deve- se ao fato das diversas vantagens que a utilização deste conceito pode trazer. A seguir são apresentados alguns destes fatores motivadores. Optou-se por apresentar apenas uma breve descrição das vantagens mais citadas por diferentes autores, pois o detalhamento das mesmas foi abordado no trabalho de Introdução à Pesquisa I. - Redução de custos [LAN08, DAM06, PRI08, AUD07, MAR09]: organizações procuram alternativas para que o custo de produção seja cada vez menor. Desta maneira, contratam mão de obra de outro país ou localidade onde o custo de produção seja mais baixo [KNO07]; - Ganho de proximidade com o cliente [LAN08]: como a demanda de software cresce em diversos países [KNO07], uma empresa que esteja expandindo seus negócios para uma nova região poderia iniciar uma operação de DDS nesta localidade e, assim, estaria se aproximando dos seus clientes. - Redução do tempo de projeto [LAN08, DAM06, PRI08]: também chamado de time-to-market [CAR09], incluir um produto no mercado antes do concorrente pode ser vital para o sucesso do mesmo. Sendo assim, com mais recursos trabalhando nos projetos, o tempo de desenvolvimento pode ser reduzido. - Recursos especializados [LAN08] e globais [DAM06, PRI08, AUD07, MAR09]: com o DDS é possível obter a disponibilidade da mão de obra tão especializada quanto em projetos tradicionais, porém com a vantagem de manter o baixo custo. Apesar de todas as vantagens que o DDS disponibiliza para as organizações, o processo de desenvolvimento de software continua sendo uma atividade complexa. Utilizando o DDS, adiciona-se ao processo alguns desafios,
  • 12. 12 como a distância física, diferenças de fusos horários e diferenças culturais [PRI09, AUD07, DAM06], os quais tornam este tipo de projeto extremamente complexo de ser gerenciado. Segundo alguns autores, os desafios encontrados no DDS podem ser divididos em algumas categorias [AUD07, PRI09, KNO07, PIL06], as quais afetam determinadas áreas do processo. Optou-se por apenas listar os desafios, pois os mesmos estão detalhadamente descritos no trabalho de Introdução à Pesquisa I. Os desafios relacionados a Organização [PRI09, HER01, PIL06, KNO07], mostram dificuldades que afetam as definições estratégicas de processos [PIL06, KNO07] e métodos de gestão de uma organização [PRI09]. Alguns exemplos são: legislação [KAR98] e gerenciamento de portfólio de projeto [PRI09, PIL06]: Desafios relacionados a Projetos [PRI07, HER01], também chamados como dificuldades técnicas [PIL06, KNO07], contemplam dificuldades relacionadas a forma como o projeto será desenvolvido, incluindo o uso de ferramentas e métodos [PRI09]. Dizem respeito ainda as adversidades relacionadas com a gerência de requisitos, integração, gerência de configuração, dificuldades no acompanhamento do projeto e na utilização de ferramentas [PIL06, KNO07]. Exemplos destes desafios são: arquitetura de software [AUD07, PRI09, HER99, BOS10], processos de desenvolvimento [AUD07, PRI09]: telecomunicações [AUD07], gerência de configuração [MAR09] e gerenciamento de projetos [PRI09]. Desafios relacionados a Pessoas [PRI09], também identificado como problemas sociais [PIL06, KNO07] dizem respeito aos problemas que afetam diretamente os recursos envolvidos no projeto [PRI09], alguns exemplos são: confiança [OSH07, AUD07, PRI09], conflitos [AUD07, PRI09], diferenças culturais [BIN07] e diferenças de fusos horários: Em função do aprofundamento do estudo realizado a partir do trabalho de Introdução à Pesquisa I, os próximos parágrafos mostram detalhadamente como a diferença de fuso horário pode afetar projetos de software. Estas diferenças podem afetar os projetos de DDS de diferentes formas, dependendo do tamanho da diferença de horário entre os centros distribuídos. Este fator está diretamente
  • 13. 13 ligado ao desenvolvimento FTS. A seguir, são mostrados exemplos de como esta diferença afeta os projetos. Quando existem equipes separadas por uma pequena diferença de horário, onde podem passar a maior parte do dia trabalhando ao mesmo tempo. Como exemplo, podemos citar uma equipe localizada na cidade de Dallas, e outra no Rio de Janeiro. Para este caso a diferença de fuso horário seria de apenas duas horas na maior parte do ano. Neste modo a comunicação é facilitada, pois é possível usar a comunicação síncrona, como ferramentas de mensagens instantâneas, ligações telefônicas, vídeo conferências, entre outras. Quando a diferença de horário atinge em torno de cinco horas, a possibilidade de trabalhar juntos na maior parte do tempo já não é mais válida. Então, para este caso, a comunicação síncrona tende a diminuir e a comunicação assíncrona aumenta. Para este exemplo, poderíamos citar uma equipe localizada em Nova Iorque e outra em Londres. Para este caso a diferença seria de cinco horas na maior parte do ano. Finalmente, temos o caso em que as equipes distribuídas nunca trabalham no mesmo horário. Neste caso, quando uma equipe está terminando o seu dia de trabalho a outra está começando. Além da falta de comunicação síncrona, torna- se vital que a comunicação assíncrona seja realizada de forma clara e efetiva. Qualquer dependência de uma resposta de algum membro do outro time pode demorar no mínimo um dia. Para este exemplo, poderíamos citar uma equipe localizada em São Paulo e outra em Tóquio, onde a diferença será de doze horas na maior parte do ano. Nota-se que os problemas relacionados ao fuso horário tendem a ficar mais evidentes na medida em que a diferença aumenta. Para que esta diferença possa ser utilizada como uma vantagem, alguns autores defendem a utilização do desenvolvimento FTS. Porém, atualmente este conceito é pouco explorado na indústria [HOL06, LIN07, TRE06].
  • 14. 14 2.2 Desenvolvimento Follow-the-sun Devido aos desafios impostos pelo desenvolvimento distribuído de software relacionadas à diferenças de fusos horários, surge o conceito chamado de desenvolvimento follow-the-sun (FTS). O desenvolvimento FTS é um subconjunto do desenvolvimento global de software, o qual está, principalmente, focado na diminuição do tempo de desenvolvimento de um projeto [CAR09, GOR96-II, GUP09-II]. Utilizando a diferença de fuso horário das equipes distribuídas, como uma vantagem [CAR09, HOL06, LIN07, SET07, SOL10, KNO07, TRE06], para fazer o desenvolvimento do projeto durante as 24 horas do dia. Porém, devido ao fato de ser uma área nova de estudo na engenharia de software, pouco sobre esta temática foi publicado [TRE06]. Casos de sucesso na indústria utilizando o FTS ainda são escassos [SOL10]. [CAR09] afirma que não há casos de sucesso na indústria [CAR09]. Esta forma de trabalho, em outros ramos da indústria não é uma novidade. Dependendo do tipo de produto a ser criado, existe a necessidade de trabalhar em um único local, e dependendo da velocidade necessária para criá-los, durante as 24 horas do dia, implicando em trabalhos fora do horário convencional. Um exemplo é a indústria automobilística, onde uma equipe termina o seu turno, e a próxima assume logo após, para iniciar a sua jornada, mantendo a produção 24 horas por dia, porém, no mesmo local [GOR96-II]. Este fato poderia afetar a qualidade do produto, pois pessoas ao redor do mundo estão acostumadas a trabalhar durante o dia, e descansar durante a noite [CAR09, JAL04]. Na indústria do desenvolvimento de software, a primeira tentativa documentada do uso do desenvolvimento FTS foi protagonizada pela IBM [CAR99]. Em 1997 [SOO08], a IBM decidiu desenvolver um projeto utilizando o desenvolvimento FTS [CAR09]. Para isto, criou cinco equipes distribuídas em cinco centros de desenvolvimento distintos em cinco países diferentes [SOO08]. Durante o projeto, muitas dificuldades de coordenação foram encontradas, principalmente durante as transferências diárias de trabalho [SET07]. Portanto, como o FTS não estava funcionando como planejado, não trazendo o ganho esperado pelos gestores, os responsáveis pelo projeto desistiram de utilizar o
  • 15. 15 FTS para acelerar o processo de desenvolvimento, mantendo apenas o desenvolvimento global de software [CAR09]. Para melhor entender do desenvolvimento FTS, nos próximos capítulos este tema será abordado em maior profundidade. Para isto, no capítulo 3 será mostrado os conceitos encontrados na literatura, no capítulo 4 será exposta uma breve descrição sobre o ciclo de vida do software e, posteriormente, é apresentado formas de utilizar o desenvolvimento FTS durante o processo de desenvolvimento de software, com o objetivo de aumentar as suas chances de sucesso.
  • 16. 16 3 CONCEITOS Devido ao fato do FTS ser um assunto recente na literatura e na indústria do desenvolvimento de software, existem poucos trabalhos publicados nesta área [TRE06]. Neste sentido, é possível observar a existência de diversas formas de definir o desenvolvimento FTS, também referenciado como desenvolvimento 24- horas [GUP09, GOR96-II], desenvolvimento round-the-clock [CAR09], desenvolvimento around-the-clock [YAP05] e software shift work [GOR96-II]. Diversos autores possuem suas próprias definições para este tema, sendo assim, na literatura desta área não há um consenso na forma de definir o desenvolvimento FTS. Os próximos parágrafos apresentaram definições de diferentes autores e, ao final desta seção, é apresentada uma reflexão sobre estas definições, com o objetivo de oferecer uma definição onde sintetizaremos as principais idéias encontradas na literatura. Segundo Visser [VIS09], o desenvolvimento follow-the-sun pode ser determinado ao ter equipes de desenvolvimento de software distribuídas por múltiplos fusos horários, onde ao final do dia de trabalho, uma equipe deve entregar as informações relevantes do trabalho realizado até o momento, juntamente com o código fonte do produto, para a próxima equipe, a qual está iniciando a sua jornada. O trabalho deve ser continuado do ponto onde o time anterior parou. Desta forma, o projeto estará sendo desenvolvido vinte e quatro horas por dia e não apenas durante oito horas, como normalmente acontece. Outra forma de identificar esta maneira de desenvolver software é apresentada por Gorton e Motwani [GOR96-II], onde é proposta uma nova denominação: software shift work. Os autores mostram que a indústria tem a necessidade de criar seus produtos em um tempo cada vez menor, porém, dependendo do tipo de produto a ser criado, existe a necessidade de trabalhar em um único local, porém durante as 24 horas do dia (implicando em trabalhos fora do horário convencional), como exemplo, o autor cita a indústria automobilística. Porém, a criação de software difere radicalmente, pois o produto final é uma coleção de arquivos binários, documentação, código-fonte e executáveis, onde utilizando redes modernas e rápidas de comunicação de dados como as que
  • 17. 17 existem atualmente na grande parte dos países onde o desenvolvimento global de software é utilizado, estes artefatos podem rapidamente ser transferidos para qualquer lugar do mundo. Portando o desenvolvimento 24-horas de software pode ser alcançado apenas utilizando a diferença de fuso horário entre os locais onde os times estão alocados. Cada time trabalha no seu horário convencional e, ao final do seu turno (um dia de trabalho), o próximo time, o qual está iniciando o seu turno assume o trabalho de onde a equipe anterior parou. Já para Gupta, Mattarelli, Seshasai e Broschak [GUP09-II] o desenvolvimento follow-the-sun pode ser estendido para diferentes tarefas, além do desenvolvimento. Os autores mostram o conceito de fábrica de conhecimento, onde as tarefas a serem desenvolvidas em um projeto podem ser voltadas ao conhecimento, o qual é passado entre os times globalmente distribuídos ao final de cada dia. Para exemplificar este conceito para o desenvolvimento contínuo durante 24 horas por dia, é apresentado o ciclo de testes de um software, onde o conhecimento é o próprio software em desenvolvimento, e o conhecimento está onde o software atende os requisitos de forma satisfatória ou não. Este conhecimento é passado entre os times de desenvolvimento e de testes, os quais estão distribuídos em locais distintos. Desta forma, a fase de testes pode ser finalizada de forma mais rápida, o que segundo os autores, é um dos principais benefícios ao distribuir equipes de desenvolvimento em fusos horários distintos e utilizar o desenvolvimento follow-the-sun. Treinen e Miller-Frost [TRE06] definem o follow-the-sun, de uma forma mais sucinta. Para estes autores, a diferença de fuso horário deve ser vista como uma vantagem, para assim, distribuir equipes com o objetivo de criar um ambiente de desenvolvimento de software onde as equipes trabalham apenas durante as suas horas normais de trabalho, e ao final do dia, apenas redistribuem as suas tarefas ao time que está iniciando a sua jornada, criando assim, efetivamente o desenvolvimento 24-horas. Carmel, Dubinsky e Espinosa [CAR09], propõem uma definição para o follow-the-sun aonde quatro idéias básicas devem ser seguidas: i. Equipes de desenvolvimento devem estar localizadas a diversos fusos- horários de diferença;
  • 18. 18 ii. Um dos principais objetivos é reduzir o tempo de desenvolvimento/ time-to-market; iii. A cada momento existe somente uma equipe que possui a posse do produto; iv. A transferência de tarefas deve ser realizada diariamente, onde esta é definida por um check-in de uma unidade de trabalho da qual a próxima equipe depende para continuar o trabalho. Após apresentar estas quatro idéias básicas, o trabalho de [CAR09] apresenta a seguinte definição para o desenvolvimento follow-the-sun: um tipo de fluxo de trabalho de conhecimento global, criado com o objetivo de reduzir a duração de um projeto, onde o produto é de propriedade de um centro de desenvolvimento até ser entregue ao próximo. Esta entrega deve ser diária, e a próxima equipe deve estar localizada diversos fusos horários a frente para dar continuidade ao trabalho. Após a apresentação das diferentes definições por diferentes autores, a Tabela 1 mostra uma análise comparativa entre estas diferentes abordagens. Para cada critério (colunas), procurou-se saber se a definição apresentada, de alguma forma, indicou importância para este fator. Os fatores utilizados para a análise comparativa apresentada na Tabela 1 surgiram de uma avaliação prévia dos conceitos apresentados pelos autores. Procurou-se identificar os principais fatores de cada conceito encontrado na literatura, os quais poderiam ser comparados entre as definições.
  • 19. 19 Tabela 1. Comparação entre as definições apresentadas Objetivo principal Transferências Considera relevante do FTS diárias de tarefas Diminuir time to market diário desenvolvimento de desenvolvimento do Diversos fusos horários Trabalhar somente nos horários convencionais Aumentar velocidade (apenas codificação) Aumentar tempo de Múltiplas tarefas Código fonte de diferença Autor projeto Visser [VIS09] X X X X Gorton e Motwani X X X X X [GOR96-II] Gupta, Mattarelli, Seshasai e Broschak X X X [GUP09-II] Treinen e Miller-Frost X X X [TRE06] Carmel, Dubinsky e X X X X Espinosa [CAR09] Como podemos perceber, não há uma convergência para apenas uma definição para o desenvolvimento FTS. Podemos identificar que apenas um autor define o FTS somente para a codificação, enquanto que os autores restantes defendem a utilização para qualquer tarefa dentro do projeto. Outra característica nas definições está relacionada ao objetivo principal da utilização do FTS. Apesar de expresso de maneira distinta pelos autores, podemos perceber que o objetivo principal do FTS é a diminuição do tempo necessário para desenvolver um projeto. A diferença mínima necessária de fusos horários entre as equipes distribuídas foi pouco citada. Também existem poucos trabalhos que consideram relevante a importância de ter equipes distintas trabalhando no seu horário habitual, evitando horas extras durante a noite. Este fator poderia ser mais considerado, pois a maior parte das pessoas ao redor do mundo está acostumada a trabalhar durante o dia e descansar durante a noite [CAR09]. Portanto, após esta análise comparativa das diferentes definições sugeridas pelos autores, foram identificados pontos importantes em todas elas. Assim, através destas informações coletadas, propomos uma definição para o desenvolvimento FTS, a qual sintetiza as principais idéias e pode ser descrita da seguinte forma:
  • 20. 20 O follow-the-sun é tipo de desenvolvimento global de software onde o principal objetivo é a diminuição do time-to-market, acelerando a construção do produto final desde a concepção até a sua distribuição. Este ambiente opera com equipes distribuídas em fusos horários e países distintos, onde cada equipe detém o trabalho por determinado período, até que o mesmo seja transmitido para a próxima equipe que inicia a sua jornada. A transferência pode ser para qualquer tipo de tarefa relacionada com o desenvolvimento do projeto de software. Esta transferência deve acontecer diariamente e de forma padronizada.
  • 21. 21 4 CICLOS DE VIDA NO PROCESSO DE DESENVOLVIMENTO FOLLOW-THE-SUN Para tornar o desenvolvimento de software uma atividade mais estruturada e padronizada, surgiram os modelos de processo de software [SOM07], também conhecidos como ciclos de vida de um software [MCC99, KRI08]. A funcionalidade principal de um modelo de ciclo de vida de um software é estabelecer uma ordem na qual um projeto de software faz suas atividades como por exemplo: especificação, implementação e testes [MCC99]. Estabelece ainda, critérios que devem ser usados para determinar o momento de seguir para a próxima fase do projeto [MCC99]. Atualmente existem diversos modelos de ciclos de vida, dentre estes, podemos citar como exemplo, o modelo cascata, modelo incremental e o modelo de prototipação. A importância da escolha de um processo adequado para a utilização do desenvolvimento FTS é fator importante para o sucesso do projeto [CAR09]. Atualmente, não existem processos largamente aceitos para esta forma de desenvolver software. Diferentes autores defendem maneiras distintas para a utilização do desenvolvimento FTS. Neste sentido, este capítulo apresenta uma breve descrição de alguns modelos de ciclos de vida e, para cada modelo, serão abordadas diferentes formas de utilizar o desenvolvimento FTS. 4.1 Modelo Cascata Este modelo, também chamado de ciclo de vida clássico [PRE10], propõe uma forma sistemática e seqüencial, onde inicia-se com os requisitos do sistema, terminando na entrega e manutenção do mesmo. Durante este processo, existem fases bem definidas, onde o final de cada fase marca o início da fase imediatamente seguinte. A Figura 1 ilustra este modelo.
  • 22. 22 Figura 1. Modelo cascata, adaptado de [SOM07] Cada fase encontrada no modelo cascata pode ser resumidamente definida, segundo [SOM07], da seguinte forma: - Definição de requisitos: esta fase é marcada como o início do ciclo de vida do software. Nesta fase do processo, são estabelecidas as funcionalidades que o sistema deverá atender [SOM07]. - Projeto: esta fase caracteriza-se por traduzir os requisitos em uma representação de software [PRE95]. Consiste em projetar o que foi definido na fase anterior, do ponto de vista do sistema. Neste momento, é planejada a arquitetura do sistema, estruturas de dados, e detalhes procedurais a serem utilizados [SOM07]. - Implementação: utilizando as informações oriundas da fase de projeto, esta fase está focada na implementação de cada unidade do sistema, ou seja, transformar os requisitos em código fonte, e realizar testes unitários dos mesmos [SOM07]. - Integração e testes: com a implementação de cada unidade do sistema concluída, é realizada a integração e os testes de todo o sistema. Esta fase caracteriza-se por identificar problemas no sistema, e resolvê-los. Ao final desta fase, o sistema deve estar pronto para a sua utilização [SOM07]. - Manutenção: esta é a fase mais longa do ciclo de vida. O sistema é instalado e utilizado pelo usuário final. Neste momento, deve ser realizado a correção de problemas encontrados durante a utilização do sistema [SOM07].
  • 23. 23 Este modelo de ciclo de vida é recomendado para projetos onde os requisitos estão bem definidos e são geralmente fixos, ou seja, não mudam no decorrer do projeto. Assim, o projeto pode ser desenvolvido de maneira linear do início ao fim [PRE10]. 4.1.1 Follow-the-Sun no Modelo Cascata No modelo cascata, segundo trabalhos encontrados na literatura, o desenvolvimento FTS pode ser realizado em três fases distintas: implementação [CAR09], integração e testes [CAR09, GOR96, HOL06] e manutenção [LUC02, CON06, HEL06, JAL04]. Os itens 4.1.1.1, 4.1.1.2 e 4.1.1.3 descrevem como poderia ser realizado o desenvolvimento FTS nestas três fases respectivamente. 4.1.1.1 Implementação Muitas dificuldades diminuem a chance de sucesso da utilização do FTS durante esta fase [SOL10, CAR09]. Porém, para obter êxito nesta fase do processo, [CAR09] apresenta práticas oriundas de metodologias ágeis para facilitar e aumentar as chances de sucesso no uso do desenvolvimento FTS. A abordagem ágil possui algumas características que apóiam a estruturação de projetos para utilizar o desenvolvimento FTS [CAR09]. Estas características facilitam áreas problemáticas apresentadas nesta forma de desenvolver software, como hand-off diário, comunicação e coordenação [CAR09, SET07, RAF07, CON06, HOL06, SOO08]. Para suportar a transferência diária de tarefas (hand-offs), fazer o uso de integração continua através de um ambiente de integração automatizado [CAR09, YAP05], permite que cada time possa desenvolver suas tarefas no seu próprio código fonte e no seu horário habitual. Assim, cada time mantém um código fonte, estável, ou seja, testado e sem problemas, para ser utilizado pela próxima equipe. A política de manter os testes de integração funcionais, ou seja, não terminar o dia com problemas em qualquer teste automatizado, bem como manter a
  • 24. 24 integração continua do produto são práticas comuns em metodologias ágeis, e cabem no desenvolvimento FTS, pois deste modo facilitam a transferência diárias de tarefas. Para evitar problemas de comunicação, as metodologias ágeis enfatizam a comunicação face a face. O trabalho [CAR09] afirma que esta comunicação deve ser mantida, porém para comunicação entre os membros de uma mesma equipe co-localizada. Entretanto, ao utilizar o FTS, o objetivo é reduzir a comunicação entre centros distribuídos para o menor nível possível, confiando mais nas ferramentas e processos utilizados para suportar os aspectos técnicos, gerenciais e sociais do desenvolvimento. Facilitando assim, a transferência de tarefas ao final do dia, diminuindo os problemas de comunicação enfrentados por equipes que utilizam o FTS. A colaboração é vital no processo de desenvolvimento de software [CAR09]. A abordagem ágil enfatiza a colaboração entre todas as pessoas envolvidas no desenvolvimento. Ao utilizar o desenvolvimento FTS a colaboração está relacionada a forma como os membros da equipe mantém as regras do processo de desenvolvimento. Desta forma, é importante manter protocolos que permitam ao próximo centro continuar o trabalho entregue pelo centro anterior sendo necessário o mínimo de comunicação síncrona entre centros distribuídos. Ou seja, manter claro o que cada equipe deve entregar a outra ao final do dia e, da mesma forma, o que esperar no início do dia. Ao utilizar o desenvolvimento FTS durante a fase de implementação de um software é difícil, pois ao final de cada dia, tarefas inacabadas devem ser transferidas para o próximo time, o qual deve continuar o seu desenvolvimento. Sem fazer o uso de comunicação síncrona, a próxima equipe iniciando o seu dia de trabalho deve continuar a tarefa deixada pela equipe anterior, o que torna o trabalho muito difícil. Porém, apesar de não haver na indústria exemplos de sucesso [CAR09], seguindo estas práticas durante esta fase do projeto, pode-se obter sucesso na utilização do desenvolvimento FTS [CAR09].
  • 25. 25 4.1.1.2 Integração e Testes O maior consenso encontrado na literatura relacionado a aplicação do desenvolvimento FTS está na utilização desta forma de trabalho na fase do ciclo de vida onde são realizados os testes e correções dos problemas encontrados [CAR09, GOR96, HOL06]. Esta forma de trabalho vem sendo aplicada na indústria com bastante sucesso [CAR09]. Utilizar o desenvolvimento FTS nesta abordagem pode, porém, diminuir o ganho teórico de 50% no tempo de desenvolvimento do projeto (para projetos que utilizam dois centros de desenvolvimento) [CAR09]. Conforme mostrado na Figura 2, percebemos que a fase de testes, onde seria utilizado o FTS, compreende apenas 25% do tempo total do projeto [CAR09]. Neste caso, o ganho teórico de 50% seria somente dentro desta fase, resultando num ganho de apenas 12,5% no total do projeto [CAR09]. Figura 2. Distribuição típica da duração das fases de um projeto, adaptado de [CAR09] Uma equipe trabalha nos testes do sistema desenvolvido. Os problemas identificados por esta equipe devem ser documentos em um sistema de controle centralizado, do qual integrantes de todos os times distribuídos têm acesso. Ao terminar o dia de trabalho do time de teste, os problemas estão todos documentados [CAR09]. No momento em que o time de desenvolvimento inicia o seu trabalho, os defeitos encontrados e todas as informações relevantes aos mesmos estão acessíveis, sendo assim, possível iniciar a sua correção. A Figura 3 ilustra a utilização do FTS durante a fase de integração e testes.
  • 26. 26 Figura 3. Utilização do FTS durante a fase de testes É importante destacar que, para o funcionamento desta forma de utilização do desenvolvimento FTS, a transferência de tarefas ao final de cada dia deve seguir uma estrutura bem definida e entendida por todos os times envolvidos no desenvolvimento. Os problemas encontrados devem ser documentados de forma clara e compreensível, com todas as informações necessárias, evitando problemas de entendimento na comunicação [CAR09]. Para equipes que, devido a diferença de fuso horário, não trabalham em nenhum período simultaneamente, as soluções de dúvidas podem demorar mais de um dia, comprometendo o andamento do projeto. Portanto, a padronização das entregas de uma equipe para outra é fundamental. Uma pequena variação desta forma de utilizar o desenvolvimento FTS é apresentada por [GOR09]. Para evitar alguns problemas de coordenação e comunicação, o trabalho [GOR09] propõe uma pequena modificação. Deve existir pelo menos 2 horas de trabalho simultâneo entre mais de uma equipe (a equipe que está terminando o seu dia, e a que está iniciando). Neste período de tempo devem ser discutidos os problemas de forma síncrona e qualquer dúvida que possa surgir pode ser resolvida neste momento, evitando assim, atrasos no projeto [GOR09]. A Figura 4 ilustra esta variação na utilização do FTS durante a fase de integração e testes. Figura 4. Utilização do FTS durante a fase de testes com trabalho simultâneo
  • 27. 27 4.1.1.3 Manutenção Alguns autores citam ainda a fase de manutenção como uma fase do ciclo de vida propícia para utilizar o FTS [LUC02, CON06, HEL06, JAL04]. Para a utilização do desenvolvimento FTS nesta fase deve-se manter times distribuídos ao redor do mundo, garantindo que a diferença de fuso horário cubra 24 horas, ou seja, sempre haverá um time trabalhando [LUC02]. Portanto, sempre que algum problema for identificado, um time de suporte poderá ser acionado e, assim, sempre haverá uma equipe disponível. Se for encontrado algum problema, a equipe que estiver disponível no momento recebe o problema e inicia o trabalho. Chegando ao final do seu dia de trabalho, e este problema ainda não foi resolvido, esta equipe repassa todo o conhecimento adquirido até o momento sobre o problema para a próxima equipe, que assume o mesmo, e a investigação continua do ponto onde parou. Utiliza-se o FTS desta forma para soluções críticas como sistemas de controle de cartões de crédito e sistemas de telefonia [LUC02]. 4.2 Modelo de Prototipação A característica principal deste modelo é gerar protótipos do sistema, normalmente não funcionais, baseado nas definições propostas pelo cliente. Normalmente os requisitos de um sistema no início do processo de desenvolvimento não estão bem definidos, e o modelo de prototipação pode ser usado para ajudar a identificar e definir requisitos [PRE10]. Este modelo é uma forma iterativa, onde a primeira iteração inicia com os requisitos, logo após os protótipos são criados, para então, serem validados pelo cliente [PRE10]. Após esta avaliação, o cliente pode fornecer informações relevantes para que este protótipo seja modificado ou melhorado. Neste momento, uma nova iteração é iniciada. Este ciclo é repetido até o momento em que o protótipo gerado atinja o nível de satisfação esperado pelo cliente [SOM07, PRE10]. A Figura 5 ilustra este modelo.
  • 28. 28 Figura 5. Modelo de Prototipação A vantagem da utilização deste modelo está na sua rapidez de desenvolvimento, focando apenas no que será visível ao cliente, como interface gráfica, formatos de entradas e saídas do sistema [SOM07, PRE10]. Neste modelo, a parte funcional do sistema não é abordada. 4.2.1 Follow-the-Sun no Modelo de Prototipação Prototipação é um modelo de ciclo de vida onde, segundo [CAR09], poderia, também, empregar o uso do desenvolvimento FTS. Para este modo de utilização do desenvolvimento FTS, a equipe responsável por criar os requisitos e a equipe que desenvolve os protótipos devem estar em localidades distintas. Desta forma, uma das equipes constrói os requisitos e, ao final do seu dia de trabalho, disponibiliza todas as informações necessárias para a próxima equipe, a qual irá desenvolver os protótipos. Ao terminar a sua jornada de trabalho, a equipe que desenvolveu os protótipos disponibiliza os mesmos para o time que fará a verificação destes, apontando problemas e melhorias a serem realizadas. Este processo é repetido desta forma até o momento em que o protótipo gerado atinja o nível de satisfação esperado pelo cliente [SOM07, PRE10]. Desta forma, obter ganho durante a prototipação também é possível, através do uso do desenvolvimento FTS [CAR09].
  • 29. 29 4.3 Modelo Incremental O modelo incremental utiliza elementos do modelo linear, também chamado de modelo cascata, porém com fluxos de processos paralelos [PRE10]. O modelo incremental é realizado em ciclos, e dentro de cada ciclo, utiliza-se o modelo cascata. Cada um destes ciclos, também chamados de incrementos [PRE10], produz alguma funcionalidade nova ao sistema, e ao finalizar o último ciclo, obtém-se a versão final e funcional do produto. Os requisitos podem ser priorizados onde os mais prioritários são entregues nos primeiros incrementos, ou seja, funcionalidades mais críticas são entregues nos primeiros ciclos, deixando funcionalidades adicionais para os próximos [SOM07, PRE10]. Ao iniciar um incremento, os requisitos são congelados, deixando novos requisitos para ciclos futuros [SOM07]. Desta forma, o sistema é entregue em pequenas versões, ao invés de uma única entrega ao final [SOM07]. A Figura 6 representa este modelo. Figura 6. Modelo Incremental, adaptado de [PRE10] 4.3.1 Follow-the-Sun no Modelo Incremental Podemos notar que o modelo incremental, é constituído de ciclos do modelo cascata (incrementos) [PRES10]. Desta forma, o desenvolvimento FTS neste modelo de ciclo de vida, ocorre da mesma forma que no modelo cascata. A principal diferença está no fato de utilizar o FTS a cada incremento, dentro das fases citadas nos itens 4.1.1.1 (implementação), 4.1.1.2 (integração e testes) e 4.1.1.3 (manutenção).
  • 30. 30 5 ESTUDOS EM FOLLOW-THE-SUN A literatura apresenta poucos trabalhos relacionados ao desenvolvimento FTS [TRE06]. Após uma extensa pesquisa, encontrou-se um número reduzido de artigos que realizam estudos teóricos nesta área. Esta seção apresenta uma compilação dos principais estudos relacionados à esta temática. Os estudos apresentados versam sobre diferentes óticas para avaliar o desenvolvimento FTS. 5.1 Estudo apresentado por Setamanit, Wakeland e Raffo (2007) Apresentado por Setamanit, Wakeland e Raffo [SET07], o estudo mostra as vantagens ao utilizar o FTS em relação a um projeto realizado em um único local. O objetivo é identificar quando há uma vantagem ao utilizar o FTS, e quais são os requisitos para alcançar uma vantagem que seja interessante para um projeto desenvolvido desta forma. O estudo inicia descrevendo forma como as equipes devem realizar o desenvolvimento do projeto. Para esta fase, duas equipes distintas foram criadas. Uma delas opera em apenas uma localidade, sem fazer o uso do desenvolvimento FTS. A outra equipe é dividida em duas localidades com fuso horário distinto, e faz o uso do desenvolvimento FTS. A Figura 7 ilustra o formato das equipes. Figura 7. Disposição inicial das equipes, adaptado de [SET07] Neste primeiro cenário, após realizar 30 testes para cada configuração (co- localizado e follow-the-sun), os autores identificaram que a utilização do
  • 31. 31 desenvolvimento FTS não gerou o ganho esperado. Os resultados mostraram um aumento de 50% no tempo necessário para o desenvolvimento do projeto, foi notado também um aumento de 70% no esforço, e a qualidade foi pior, pois a quantidade de defeitos foi maior que o dobro. Após adquirir estes dados iniciais sobre o desempenho das equipes, os autores buscaram identificar fatores que teriam um forte impacto para a melhoria destas medidas. Estes fatores, segundo os autores, podem direcionar os projetos para a utilização de práticas onde os benefícios podem ser alcançados com maior facilidade. Após a identificação destes fatores, os autores mostram que os principais resultados foram: - Diminuir o esforço: aumentando o tempo de trabalho simultâneo (também conhecido como overlap) entre equipes distribuídas resulta em um menor esforço necessário. Como na primeira configuração, as equipes não tinham a possibilidade de trabalhar ao mesmo tempo, a comunicação síncrona não existia. Ao introduzir a possibilidade deste tipo de comunicação, foi possível notar um aumento na produtividade. Entre outras vantagens, este tipo de comunicação melhora a confiança entre os membros da equipe, resultando, assim na diminuição do esforço. - Diminuir duração do projeto: aumentar o overlap entre as equipes distribuídas pode aumentar a duração do projeto, pois o tempo de desenvolvimento diário diminui. Porém, ao notar que, além de ter um período maior de trabalho simultâneo entre equipes distribuídas, outros fatores já citados (produtividade, confiança), ajudam a diminuir o esforço, resultando assim num menor tempo de desenvolvimento. - Diminuição do número de defeitos: tendo um aumento na efetividade da comunicação síncrona entre as equipes através do trabalho simultâneo, diminuíram os problemas de entendimento das comunicações assíncronas. Isto resultou em um número menor de defeitos encontrados. Após identificar os fatores que poderiam melhorar o desempenho do projeto, realizou-se o experimento novamente, porém, desta vez com um overlap de horas de trabalho entre as equipes distribuídas. O resultado encontrado apresentou uma pequena melhora em relação a primeira execução, porém, o
  • 32. 32 desempenho do FTS ainda mostrou-se pior que o desenvolvimento em um único local. Na tentativa de alcançar uma melhora significativa, os autores incluíram mais um centro de desenvolvimento, obtendo assim, a distribuição em três locais distintos para o desenvolvimento. Neste modelo, o tempo de duração foi menor (11,1%). Entretanto o esforço foi significativamente maior (45,4%), porém, segundo os autores, este fator não se mostra relevante, devido ao fato de os centros de desenvolvimento distribuídos normalmente estarem em países que possuem baixo custo. A qualidade continuou pior neste modelo, devido a dificuldade de comunicação e coordenação entre os 3 centros. Finalmente, os autores afirmam que o FTS pode ser uma boa estratégia se dentre as necessidades do projeto está a diminuição do tempo de desenvolvimento. Porém, salientam que se esta decisão for tomada, deve-se utilizar a abordagem com no mínimo três centros distribuídos de forma a obter o desenvolvimento 24 horas por dia, e tendo um período de trabalho simultâneo para comunicação síncrona entre as equipes distribuídas. 5.2 Estudo apresentado por Carmel, Dubinsky e Espinosa (2009) O recente estudo apresentado por Carmel, Dubisnky e Espinosa [CAR09] relata um quasi-experimento comparando duas formas distintas de desenvolver um projeto de software. O objetivo deste estudo foi medir o ganho no tempo de desenvolvimento de um projeto de software, o qual, para este tipo de projeto, teoricamente deveria ser de 50%. O experimento controlado inicia com a escolha de duas equipes de desenvolvimento de software, uma delas denominada controle (CO), composta por 7 integrantes e a outra equipe, denominada de FTS, composta por 8 participantes. As duas equipes deveriam implementar os mesmos requisitos de sistema. Todos os participantes do estudo eram estudantes de Ciência da Computação ou Engenharia Elétrica de uma grande universidade. O tempo de desenvolvimento por recurso era o mesmo para ambos os times. Definiu-se que o
  • 33. 33 tempo de desenvolvimento do projeto seria 5 semanas. Porém, como a equipe FTS faria o uso do desenvolvimento FTS, teoricamente, o tempo necessário para o projeto deveria de duas semanas e meia. A Figura 8 ilustra o tempo de projeto definido para cada equipe. Figura 8. Duração do experimento, adaptado de [CAR09] Para a equipe CO, nenhuma restrição foi imposta, ou seja, o software foi desenvolvido da forma tradicional, com todos os recursos da equipe trabalhando no mesmo local. Para a equipe FTS, a primeira etapa foi dividir a equipe em duas, SubTeamA, composta por 3 recursos, e SubTeamB, integrada por 5 recursos. Cada uma destas duas equipes, oriundas do grupo FTS, deveria trabalhar em horários diferentes, para simular a diferença de fuso horário: SubTeamA entre 21:30 e 11:00 e SubTeamB entre 11:30 e 21:00, mantendo 30 minutos para alguma hora extra, quando necessário. Para garantir que nenhuma comunicação síncrona entre as equipes SubTeamA e SubTeamB ocorressem, mecanismos como mensagens SMS, comunicador instantâneo, e qualquer outro tipo de comunicação síncrona foi proibido. Para controlar os horários de trabalho, cada uma das duas equipes do FTS só poderia alterar códigos no repositório nos horários determinados. Este controle foi realizado de forma automática pelo sistema de repositório de código utilizado no projeto. Ao final do estudo, os resultados apresentados pelos autores ficaram muito aquém do esperado no início do estudo. Houve um ganho de apenas 10% no tempo de duração do projeto, ao invés dos 50% que teoricamente deveria ser alcançado. Analisando as estatísticas geradas pelo sistema de repositório de código utilizado, uma constatação foi importante para justificar a pouca redução do tempo de desenvolvimento deste experimento. A equipe FTS realmente
  • 34. 34 terminou o projeto num tempo menor que a equipe CO, porém, devido a falta de uma diretriz sobre o momento de parar a codificação, mesmo tendo terminado a codificação das funcionalidades propostas, continuou-se apenas aprimorando-as. Foi possível identificar que na última semana do projeto a equipe FTS fez check- ins apenas sobre arquivos que já estavam no repositório, ou seja, atualizaram arquivos, melhorando funcionalidades prontas. Enquanto isso, a equipe CO realizava a criação das funcionalidades. Cabe lembrar, que segundo os autores, ambas as equipes concluíram a codificação dos requisitos de forma satisfatória. Os autores argumentam que apesar de terem identificado um ganho de apenas 10%, este número poderia ser maior, se tivessem definido o momento para terminar a fase de codificação para a equipe FTS. Este ponto foi identificado como uma limitação do estudo. 5.3 Estudo apresentado por Solingen e Valkema (2010) No estudo apresentado por Solingen e Valkema [SOL10], os autores apresentaram algumas hipóteses, e através de um experimento controlado, apontam a validade ou não das hipóteses propostas. O estudo foca na investigação do impacto do aumento do número de centros distribuídos na velocidade de desenvolvimento de projetos que utilizam o FTS. Procura-se saber qual o número ideal de equipes para se trabalhar em um projeto FTS. O experimento inicia definindo a configuração das equipes, as quais foram definidas da seguinte forma: cada execução do experimento seria realizada utilizando um número de centros de desenvolvimento diferente entre 2 e 4. Estes centros foram configurados da seguinte forma: sempre existe um centro responsável por prover os requisitos e os feedbacks do trabalho realizado, então, na configuração com duas equipes, existirá uma equipe de desenvolvimento e uma de requisitos, para três equipes, da mesma forma, haverá uma de requisitos enquanto as outras duas para o desenvolvimento e assim sucessivamente. Devido ao fato de ser um experimento controlado, as diferenças de fusos horários foram todas simuladas, criando horários de trabalho pré definidos entre as diferentes equipes. Cada ciclo diário consiste de 2 a 4 dias trabalhados (um
  • 35. 35 para cada equipe distinta), dependendo do número de centros adotados. Os dias de trabalhos são contínuos, onde quando um dia termina (para um determinado centro) outro está começando, simulando assim fusos horários distintos. Ao final de um dia, o trabalho é repassado ao próximo time que está iniciando a sua jornada. O experimento foi realizado com estudantes de Ciência da Computação. A cada dia, três execuções foram realizadas, utilizando 4, 3 e 2 centros de desenvolvimentos. Ao final de cada execução, retirou-se uma equipe aleatoriamente. Ao final de cada dia, a primeira equipe (responsável por requisitos e feedbacks) relatava para o primeiro time de desenvolvimento as informações necessárias para iniciar o próximo ciclo. As tarefas a serem realizados eram extremamente simples, sendo possível assim, simular um dia de trabalho em apenas quatro minutos. Com esta configuração, segundo os autores, foi possível analisar o efeito do número de centros distribuídos em um projeto FTS relacionado com o tempo de desenvolvimento. O estudo discute os resultados obtidos da seguinte forma: apresenta a hipótese, e a validade ou não da mesma. A seguir estão relacionadas as hipóteses propostas pelos autores, juntamente com o resultado obtido em relação as mesmas. - Quantidade de trabalho entregue: Htotal: total4 > total3 > total2 Apresentados os dados coletados, foi possível identificar que a quantidade de trabalho entregue realmente aumenta a medida que a quantidade de centros de desenvolvimento aumenta, concluindo assim, favoravelmente a esta hipótese. - Velocidade média de trabalho por centro: Havgspd: avgspd4 < avgspd3 < avgspd2 Os dados mostram que a adição de centros de desenvolvimento diminuem a velocidade de trabalho por volta de 20% na média por centro de desenvolvimento. Portanto, concluindo assim favoravelmente a está hipótese.
  • 36. 36 - Exatidão do trabalho realizado: Haccur: accur4 < accur3 < accur2 Devido a pequena diferença encontrada nas três variações, nada pôde-se afirmar sobre está hipótese. - Percepção de velocidade: Hperspd: perspd4 < perspd3 < perspd2 Segundo os dados obtidos, houve apenas uma diminuição desta percepção na configuração com 4 centros. Portanto, segundo os autores mostram, esta hipótese não foi confirmada. - Percepção de exatidão do trabalho: Hperacc: peracc4 < peracc3 < peracc2 Mantendo 2 centros, a percepção de exatidão mostra-se normal, porém, quando esta configuração possuí mais de 2 centros distintos trabalhando, esta percepção caí drasticamente, e os participantes encontram mais dificuldade para medir a exatidão do trabalho em desenvolvimento entre todos os centros, confirmando assim esta hipótese. Ao final do estudo, os autores discutem os resultados obtidos e mostram que apesar das dificuldades de coordenação e comunicação que o desenvolvimento FTS impõe, dependendo do que espera-se de um projeto de software, a sua utilização pode ser benéfica. A principal vantagem que o FTS pode alcançar, segundo os autores, está na diminuição do tempo de projeto, o que está em consonância com os outros estudos apresentados no capítulo 5. 5.4 Análise comparativa Após a apresentação dos estudos analisados, a Tabela 2 mostra uma análise comparativa entre diferentes trabalhos. Para cada critério (colunas), procurou-se saber se o experimento relacionado, de alguma forma indicou importância para este fator.
  • 37. 37 Os fatores utilizados para a análise comparativa apresentada na Tabela 2 surgiram de uma avaliação prévia dos estudos apresentados. Procurou-se identificar os principais fatores de cada estudo, os quais poderiam utilizados para critério de comparação entre os estudos. Tabela 2. Comparação entre os experimentos apresentados Mede Atinge Sugere Vantagem do Diminuição Utilizar FTS número de mínimo de do tempo Esperado Número centros centros Ganho Ganho Algum Experimentos Apresentados Setamanit, Wakeland e X X X X X Raffo [SET07] Carmel, Dubisnky e X X X Espinosa [CAR09] Solingen e Valkema X X X X X [SOL10] A primeira constatação que podemos perceber em relação aos estudos apresentados está relacionada às métricas utilizadas. Percebe-se que todos os estudos medem a diminuição do tempo de projeto através do uso do FTS. [CAR09] e [SET07] identificam esta métrica de uma maneira semelhante, comparando um projeto executado de forma tradicional, co-localizada em um único centro, com um projeto executado deforma distribuída, utilizando o FTS. [CAR09] executa o experimento uma única vez, alcançando um resultado inferior ao esperado, enquanto [SET07], ao obter um resultado aquém do esperado, investiga os problemas enfrentados e refaz o experimento, para tentar melhorar o ganho no tempo de projeto, alcançando um pequeno ganho. Já [SOL10] faz o experimento utilizando diversas distribuições com 2, 3 e 4 equipes, buscando avaliar se há uma melhora no ganho do tempo de projeto ao adicionar novos times. A métrica relacionada ao número de centros necessários para obter vantagem na utilização do FTS foi utilizada por [SET07] e [SOL10]. Estes estudos fazem uma comparação do ganho no tempo de desenvolvimento adicionando mais de dois centros de desenvolvimento, obtendo resultados satisfatórios.
  • 38. 38 Conseqüentemente, estes trabalhos sugerem um número mínimo de centros de desenvolvimento para aumentar as chances de sucesso na utilização do desenvolvimento FTS. Para [SET07], a vantagem no tempo de desenvolvimento só é atingida quando existem, pelo menos, três centros distribuídos. Enquanto que [SOL10] defende que o ganho aumenta conforme o número de centros distribuídos aumenta (este estudo utilizou distribuição entre dois e quatro centros para chegar a esta conclusão). O resultado mais importante apresentado nos estudos avaliados está relacionado ao ganho que o FTS pode prover. Percebemos que houve realmente um ganho em relação ao tempo de desenvolvimento em todos os trabalhos apresentados. Porém, este ganho ficou muito aquém do ganho teórico esperado pelo desenvolvimento FTS. Segundo [CAR09], este ganho ficou em torno de 10%, já para [SET07], o ganho foi de 11,1%, porém, apenas quando um terceiro centro de desenvolvimento foi adicionado ao projeto, pois utilizando apenas dois, o tempo para desenvolver o projeto, foi 50% maior. [SOL10] mostra apenas que a quantidade de trabalho entregue é maior se aumentarmos o número de centros de desenvolvimentos distribuídos, obtendo melhor resultado com quatro centros distribuídos (número máximo utilizado). Portanto, segundo os resultados apresentados, o desenvolvimento FTS ainda não produz o ganho teórico esperado, principalmente devido as dificuldades impostas, porém pode-se obter algum ganho no tempo de projeto. Percebe-se que todos os estudos indicam a utilização do desenvolvimento FTS. Porém, devido às dificuldades de coordenação e comunicação neste tipo de projeto, principalmente durante a transição de tarefas, a utilização desta forma de desenvolvimento deve ser utilizada, segundo os estudos, apenas quando há a necessidade de desenvolver o produto em um tempo menor, ou seja, diminuir o time-to-market [SET07, SOL10, CAR09]. As conclusões destes estudos vão ao encontro com a literatura desta área, a qual afirma que a principal vantagem do uso do desenvolvimento FTS está na diminuição do tempo de desenvolvimento de um projeto [CAR09, GUP09-II, GOR96-II, VIS09].
  • 39. 39 6 CONSIDERAÇÕES FINAIS A utilização do DDS pelas organizações está cada vez mais comum. Isto se deve ao fato das diversas vantagens que a utilização deste ambiente de desenvolvimento pode trazer. Porém, o DDS apresenta alguns desafios, dentre estes, está a diferença de fuso horário entre centros de desenvolvimento distribuídos. Alguns autores sugerem que esta diferença possa ser vista como uma vantagem, através do uso do desenvolvimento FTS [CAR09, HOL06, LIN07, SET07, SOL10, KNO07, TRE06]. Contudo, de acordo com os estudos apresentados [SET07, CAR09, SOL10], o desenvolvimento FTS pode resultar em um ganho no tempo de desenvolvimento do projeto, ou seja, redução do time-to-market. Porém o ganho apresentado ainda é muito inferior ao esperado. Portanto, devido aos desafios que esta forma de desenvolver software pode apresentar, os estudos expostos no capítulo 5 sugerem o uso do FTS apenas para projetos onde existe a necessidade da redução do tempo de projeto. Ainda, a revisão da literatura mostrou que devido ao fato do desenvolvimento FTS ser uma área nova de estudo na engenharia de software, poucos estudos sobre esta temática foram publicados [TRE06]. Estudos empíricos que envolvem casos de sucesso na indústria utilizando esta forma de desenvolver software ainda são raros [SOL10, CAR09]. Este fato está relacionado as inúmeras dificuldades de coordenação e comunicação em projetos desta natureza [SET07, CAR09]. Estas adversidades surgem principalmente durante a transição de tarefas entre equipes distribuídas, os chamados hand-offs. Neste sentido, identifica-se a oportunidade de desenvolver um estudo que atue nas dificuldades relatadas. Portanto, esta pesquisa visa a definição de um processo para atuar na transição de tarefas entre equipes distribuídas, especificamente durante a fase de implementação. Para atingir este objetivo, as próximas etapas desta pesquisa estarão focadas na identificação de técnicas e abordagens que possam ser utilizadas, como, por exemplo, metodologias ágeis, RUP, etc. Somente como exemplo, explorando preliminarmente o uso de técnicas, como Test-driven Development (TDD) e integração contínua, poderia ser criado um processo com a seguinte
  • 40. 40 idéia: para cada funcionalidade do projeto, definem-se testes unitários antes do início da sua implementação, durante a fase de projeto. Estes artefatos seriam utilizados como um guia para as equipes distribuídas. Ao final de cada dia de trabalho, deve-se fazer o check-in do código desenvolvido, e um build automatizado é executado. Nesta etapa, todos os testes unitários são executados e, ao final, sabe-se quais os testes que estão cobertos pelo código atual. Desta maneira, seria possível identificar de forma clara e precisa em qual ponto do desenvolvimento a equipe anterior terminou o seu dia de trabalho, e de onde o trabalho deve ser continuado. A Figura 9 apresenta a idéia principal do processo a ser desenvolvido, iniciando desde o ponto em que os testes unitários são criados, até o momento em que a implementação da funcionalidade está concluída. Figura 9. Fluxo principal do processo
  • 41. 41 REFERÊNCIAS BIBLIOGRÁFICAS [AUD07] Audy, J.; Prikladnicki, R., “Desenvolvimento Distribuído de Software – Desenvolvimento de Software com Equipes Distribuídas.” Brasil: Campus, 2007. 232 p. [BIN07] Bin X., “A Service Oriented Model for Role Based Global Cooperative Software Development," Convergence Information Technology, 2007. International Conference on , vol., no., pp.376-381, 21-23 Nov. 2007 [BOS10] Bosch, J.; Bosch-Sijtsema, P., "Software Product Lines , Global Development and Ecosystems : Collaboration in Software Engineering," Collaborative Software Engineering, Springer Berlin Heidelberg, pp.77- 92, 10 Mar. 2010 [CAR01] Carmel, E.; Agarwal, R.; , "Tactical approaches for alleviating distance in global software development," Software, IEEE , vol.18, no.2, pp.22-29, Mar/Apr 2001 [CAR06] Carmel, E.; "Building your Information Systems from the Other Side of the World: How Infosys manages time differences" . Management Information Systems Quarterly - Executive , March, 2006. [CAR09] Carmel, E.;Espinosa, A.; Dubinsky, Y., "Follow The Sun Software Development : New Perspectives , Conceptual Foundation , and Exploratory Field Study," 42nd Hawaii International Conference on System Sciences, Proceedings , 2009 [CAR10] "Follow the Sun" Workflow in Global Software Development Journal of Management Information Systems Vol. 27 No. 1 , Summer 2010 , pp. 17 - 38 [CAR99] Carmel, E. Global Software Teams: collaborating across borders and time zones, 1999. publicado por Prentice Hall-PTR [CON06] Ó Conchúir, E., Ågerfalk, P.J., Fitzgerald, B and Holmström H. (forthcoming). Global Software Development. Never mind the Problems – Where are the Benefits? To appear in Communications of the ACM Special Issue on Distributed Development. [DAM06] Damian, D.; Moitra, D., "Guest Editors' Introduction: Global Software Development: How Far Have We Come?", Software,IEEE,vol.23,no.5,Sept.-Oct. 2006, p.17-19. [GOR06] Gorton, I.; Hawryszkiewycz, I.; Fung, L.; , "Enabling software shift work with groupware: a case study," System Sciences, 1996., Proceedings of the Twenty-Ninth Hawaii International Conference on , , vol.3, no., pp.72- 81 vol.3, 3-6 Jan 1996 [GOR96-II] Ian Gorton, Sanjeev Motwani, Issues in co-operative software engineering using globally distributed teams, Information and Software Technology, Volume 38, Issue 10, 1996, Pages 647-655 [GUP09] Amar Gupta, Deriving mutual benefits from offshore outsourcing, Communications of the ACM, v.52 n.6, June 2009
  • 42. 42 [GUP09-II] Amar Gupta, Elisa Mattarelli, Satwik Seshasai, Joseph Broschak, Use of collaborative technologies and knowledge sharing in co-located and distributed teams: Towards the 24-h knowledge factory, The Journal of Strategic Information Systems, Volume 18, Issue 3, September 2009, Pages 147-161 [HER01] Herbsleb, J.D.; Mockus, A.; Finholt, T.A.; Grinter, R.E.; , "An empirical study of global software development: distance and speed," Software Engineering, 2001. ICSE 2001. Proceedings of the 23rd International Conference on , vol., no., pp. 81- 90, 12-19 May 2001 [HER99] Herbsleb, J.D.; Grinter, R.E., "Architectures, coordination, and distance: Conway's law and beyond ," Software, IEEE , vol.16, no.5, pp.63-70, Sep/Oct 1999 [HOL06] Helena Holmstrom; Eoin O Conchuir; Par J Agerfalk; Brian Fitzgerald; , "Global Software Development Challenges: A Case Study on Temporal, Geographical and Socio-Cultural Distance," Global Software Engineering, 2006. ICGSE '06. International Conference on , vol., no., pp.3-11, Oct. 2006 [JAL04] Jalote, P.; Jain, G.; , "Assigning tasks in a 24-hour software development model," Software Engineering Conference, 2004. 11th Asia-Pacific , vol., no., pp. 309- 315, 30 Nov.-3 Dec. 2004 [KAR98] Karolak, D. W., "Global Software Development - Managing Virtual Teams and Environments." Los Alamitos, EUA: IEEE Computer Society, 1998. 159 p. [KNO07] Knob, F. F., “RiskFree4ppm: uma proposta de processo para o gerenciamento de portfólios de projetos distribuídos.” Dissertação de Mestrado, PPGCC, Faculdade de Informática, PUCRS, 2007. [KRI08] Krishnamurthy, N.; Saran, A. ; “Building Software: A Practitioner's Guide (Applied Software Engineering Series)”. EUA: Auerbach Publications, 2008. [LAN08] Lane, M.; Agerfalk, P., "On the Suitability of Particular Software Development Roles to Global Software Development", Global Software Engineering, 2008. ICGSE 2008. IEEE International Conference on , vol., no., pp.3-12, 17-20 Aug. 2008. [LIN07] Lings B., Lundell B., Ågerfalk P. J., Fitzgerald B., "A reference model for successful Distributed Development of Software Systems," Global Software Engineering, 2007. ICGSE 2007. IEEE International Conference on , vol., no., pp. 130-139. 2007 [LOP04] Lopes, L.,“Um Modelo de Processo de Engenharia de Requisitos para Ambientes de Desenvolvimento Distribuído de Software.” Dissertação de Mestrado, PPGCC, Faculdade de Informática, PUCRS, 2004. [LUC02] Di Lucca, G.A.; Di Penta, M.; Gradara, S.; , "An approach to classify software maintenance requests," Software Maintenance, 2002. Proceedings. International Conference on , vol., no., pp. 93- 102, 2002 [MAR09] Martignoni, R., "Global Sourcing of Software Development - A Review of Tools and Services," Global Software Engineering, 2009. ICGSE 2009. Fourth IEEE International Conference on , vol., no., pp.303-308, 13-16 July 2009 [MCC96] McConnell, S. “Rapid Development: Taming Wild Software Schedules ”. EUA: Microsoft Press, 1996.
  • 43. 43 [OSH07] Oshri I., Kotlarsky J. and Willcocks L.P., “Global Software Development: Exploring Socialization in Distributed Strategic Projects”, Journal of Strategic Information Systems 16 (1), pp. 25-49. 2007 [PIL06] Pilatti, L. S. M., “Estrutura e Características para Análise de Ambientes de Desenvolvimento Global de Software em Organizações Offshore Insourcing.” Dissertação de Mestrado, PPGCC, Faculdade de Informática, PUCRS, 2006. [PRE10] Pressman, Roger S. “Software Engineering: a practitioner’s approach (seventh edition)”. EUA: McGraw Hill, 2010. 888p [PRE95] Pressman, Roger S. “Engenharia de Software”. Brasil: Makron Books, 1995. 1027p [PRI08] Prikladnicki, R.; Damian, D.; Audy, J., "Patterns of Evolution in the Practice of Distributed Software Development in Wholly Owned Subsidiaries: A Preliminary Capability Model," Global Software Engineering, 2008. ICGSE 2008. IEEE International Conference on , vol., no., pp.99-108, 17-20 Aug. 2008 [PRI09] Prikladnicki, R., “Padrões de Evolução na Prática de Desenvolvimento de Software em Ambientes de Internal Offshoring: Um Modelo de Capacidade.” Tese de Doutorado, PPGCC, Faculdade de Informática, PUCRS, 2009. [SCH00] Schmidt, M. E.C. “Implementing the IEEE Software Engineering Standards”. EUA: Sams, 2000. [SET07] Setamanit, S.-o.; Wakeland, W.; Raffo, D.; , "Improving Global Software Development Project Performance Using Simulation," Management of Engineering and Technology, Portland International Center for , vol., no., pp.2458-2466, 5-9 Aug. 2007 [SET07-II] Siri-on Setamanit , Wayne Wakeland , David Raffo, Using simulation to evaluate global software development task allocation strategies: Research Sections, Software Process: Improvement and Practice, v.12 n.5, p.491-503, September 2007 [SOL10] van Solingen, Rini; Valkema, Menno; , "The Impact of Number of Sites in a Follow the Sun Setting on the Actual and Perceived Working Speed and Accuracy: A Controlled Experiment," Global Software Engineering (ICGSE), 2010 5th IEEE International Conference on , vol., no., pp.165- 174, 23-26 Aug. 2010 [SOM07] SOMMERVILLE, Ian. “Software Engineering (eighth edition)”. Pearson Education Limited, 2007, 865p. [SOO08] P. Sooraj, Pratap K.J. Mohapatra, (2008) "Modeling the 24-h software development process", Strategic Outsourcing: An International Journal, Vol. 1 Iss: 2, pp.122 - 141 [TRE06] Treinen, James J., Miller-Frost, Susan L. Following the Sun : Case Studies in Global Software Development. In : IBM Systems Journal, Volume 45, Number 4, October 2006. [VIS09] Visser, C; "Connecting Time Zones and Languages in Follow-the-Sun: a routing model", Dissertação de Mestrado - Delf University of Technology - Holanda
  • 44. 44 [YAP05] Yap, M.; , "Follow the sun: distributed extreme programming development," Agile Conference, 2005. Proceedings , vol., no., pp. 218- 224, 24-29 July 2005