Desenvolvimento Global de Software
Mestrado de Informática / UFPB
Francilene Procópio Garcia, D.Sc.
[email protected]
Desenv. Global Software - Parte I
Introdução: A economia do software global

Na entrada do século XXI, em todo o mundo, soam questões como:

Quais países são os que mais dependem da tecnologia?

Quem está seguro?

A infraestrutura básica de componentes caminha na direção
correta?

Se as questões fossem sobre finanças - e não sistemas de
software - talvez a resposta emergisse mais facilmente (qual país
tem o mercado financeiro mais estável? Qual país tem
infraestrutura financeira mais robusta?)

Vamos levantar alguns aspectos da economia do software global
(ou da TI)
Introdução: Alguns números




Qual país tem a maioria dos profissionais de engenharia de
software? Fácil …
 Estados Unidos
Qual país tem os engenheiros de software mais produtivos?
 Indía? Errado… Canadá
Os EUA estão perdendo ou ganhando em termos de MIPshare a
nível mundial?
 Em 2000, os EUA decresceram de 37% para 30%
Qual país melhor suporta o desenvolvimento de negócios em TI?
 Nova Zelândia, é a resposta hoje
Introdução: A nova realidade global (24x7)



O desenvolvimento de software hoje acontece em todo o mundo,
24 horas por dia e 7 dias por semana
A dinâmica de negócios em software em termos do fluxo de
trabalho, movimento de produtos e mobilidade de profissionais é
verdadeiramente global
Se considerarmos que a engenharia de software seja a
competência central da era da informação, um aspecto importante
para os países medirem sua competitividade é dispor deste tipo de
informação
 desempenho dos engenheiros de software em termos de:
produtividade, qualidade e capacidade para projetos locais e
entre países
Introdução: Nova forma de gestão de
competências e competitividade






Gestão remota: a habilidade de gerenciar atividades
geograficamente distribuídas
Gestão de consumidores: desenvolvimento de relacionamentos
mais refinados
Gestão do processo: eficiência na implementação de estratégias
globais
Gestão da cadeia de valor: a habilidade de desenvolver parcerias
Gestão de tecnologias: a habilidade de explorar o potencial
disponível e ser produtivo
Gestão de custos: a habilidade de maximizar os lucros a partir da
gestão de custos
Introdução: Variações são evidentes



Enquanto os EUA exibem um misto de gestão e competências, na
Europa percebe-se uma alto grau de especialização (Irlanda e
França), e no Oriente fortes indícios de terceirização (India)
Não importa que plataforma ou ambiente se utilize - qualidade é
uma peça chave
 Qualidade de código e de produto é uma manifestação clara do
processo de software e dos hábitos dos indivíduos
 Quando se expressa qualidade em termos de defeitos por
linhas de código as diferenças são significativas de país para
país (EUA - 1,6; Japão - 1,8; Alemanha - 2,2; Israel - 2,3;
França - 2,5; India - 2,6; Irlanda - 3,7; Canadá - 3,9)
Do ponto de vista global, as variações em produtividade, custo,
desempenho, e capacidade de trabalho são indicadores claros dos
avanços da economia global de software
Introdução: É possível atingir o
desenvolvimento global de software?



Não importa o quanto avance a automação do processo de criação
de software ou o quanto se desenvolvam novas tecnologias e
ferramentas de suporte ao processo de software - o futuro é claro:
as pessoas continuaram desenvolvendo software
A única coisa padrão até hoje em TI é o tamanho de um byte. No
contexto da eng. de software existem pelo menos 5 padrões e 3
modelos de de capacidade de engenharia de sistemas
No âmbito do desenv. global, as diferenças culturais podem causar
variações na semântica de algumas definições entre países
 Tais diferenças devem resultar em estágios no mesmo projeto
sendo implementados de forma variada para as diferentes
culturas
Introdução: É possível atingir o
desenvolvimento global de software?

Alguns fatores devem ser mantidos nas nossas mentes:


O tipo de software a ser implementado. O desenvolvimento de um
grande sistema é um bom exemplo de um processo distribuído. O
sistema e as ferramentas podem ser distribuídos entre parceiros
segundo a mesma especificação técnica
Gestão de projeto. Um processo de gestão flexível e distribuído o
suficiente assegura uma cooperação salutar entre os diversos grupos.
Idealmente, todas as partes envolvidas devem fazer uso dos mesmos
métodos e ferramentas, seguindo as mesmas regras de controle e
qualidade. Na medida do possível, decisões sobre o produto, seus
algorítmos, desempenho, funcionalidades, e/ou interface necessitam
serem tomadas nas fases iniciais do processo e, nas fases finais elas
devem ser revistas e aceitas
Introdução: É possível atingir o
desenvolvimento global de software?

Alguns fatores devem ser mantidos nas nossas mentes:



Qualidade. A qualidade dos componentes é essencial ao processo de
criação num ambiente virtual assíncrono. Os resultados obtidos com o
processo de software, a sua aderência às necessidades do mercado, o
treinamento dos usuários, e a melhoria contínua do processo de gestão
e do próprio software possuem uma grande influência sobre a utilidade
da solução e satisfação do cliente
Formalismos. Padrões, métodos e tecnologias apropriados devem ser
escolhidos por pessoas que gerenciam o projeto e devem ser
adaptados conforme a as demandas do projeto. Não devem ser vistos
como uma religião
Tecnologia. As plataformas de comunicação e cooperação entre grupos
não estão maduras ainda. Video conferências serão importantes.
Contatos face-a-face ainda serão importantes como suporte às
tecnologias formais
Posição da indústria

Por quê a indústria de software está mudando?

Oferta e demanda - a demanda por serviços de software tem sido maior
que a oferta
Número de
Número de profissionais de
s/w disponíveis
micros
disponíveis
1970

1980
Demanda por
software
1990
Hoje, muitas empresas já consideram economicamente atrativo fazer
outsourcing ou desenvolver software de forma cooperativa em outros
países
Posição da indústria

Por quê a indústria de software está mudando?


Mercado global - o que se vê hoje é um deslocamento crescente de um
mercado predominantemente Americano para um mercado global
A Microsoft, por exemplo, já possui 55% de sua produção centrada nas
vendas fora dos EUA
Resposta do
Mercado
Mercado do
vendedor
Mercado do
comprador
Expectativas do
Consumidor
Os clientes cada vez mais vão demandar software para suas
necessidades...
Posição do mercado

O desenvolvimento global de software também ocorre devido aos
novos arranjos de negócios - parcerias estratégicas e joint ventures

Uma parceria estratégica, ou aliança, traz situações onde um produto
existente seja modificado ou suportado por empresas que não fizeram
parte do desenvolvimento original



Em geral, as interfaces entre clientes e o feedback do mercado são
compartilhados entre parceiros
Um dos parceiros pode ser o responsável pelo desenvolvimento e
manutenção; outro pelo relacionamento com clientes …
As joint ventures resulta da união de empresas diferentes que passam
a assumir responsabilidades fiscais conjuntas

São dependentes das legislações de cada país - um parceiro deve trazer a
tecnologia, outro o capital, um outro pode prover recursos humanos...
Posição do mercado
Parceiro
Desenvolvimento de subsistemas
Geração da documentação
Colocação do produto no mercado local
Parceiro
Controle de versões
Suporte on-site
Manutenção
Localização do produto
Geração de documentação
Desenvolvimento de subsistemas
Colocação do produto fora do mercado local
Aliança estratégica
Parceiro da joint
venture
• Retorno financeiro
• Tecnologia
• Estratégia
• Investimento capital
• Investimento RH
Empresa criada
joint venture
Parceiro da joint
venture
Joint Venture
• Retorno financeiro
• Tecnologia
Produção global de software
Ciclos de Localização
Entrada: Linha de
produção
Valor/Preço
Necessidades e
Valores de um
Mercado Global
Saída: Desempenho
do produto
Entrada: Info
sobre Clientes e
Concorrentes
Time to Market
Produção Global
de Software
Tecnologia
Entrada:
Componentes
reusáveis,
ferramentas, etc.
Capacidade de Inovação
Saída: Impacto do
produto
Saída: Plano de
evolução
Mudanças à vista




Parcerias estratégicas - não requerem muito investimento em
capital, porém a integração de estruturas e práticas é fundamental
Joint ventures - vão exigir alguns ajustes culturais - todos devem
entender o que cada parceiro traz e espera da nova empresa
Empresas globais - num ambiente diverso (gestão, práticas de
desenvolvimento, ferramentas, etc) a gestão conjunta do processo
será um diferencial importante, inclusive com a superação de
barreiras culturais
Desenvolvimento in-house - devem se manter, sempre uma opção
para projetos de software específicos - porém as empresas devem
se manter competitivas e manter-se em dia com as mudanças
tecnológicas
Organização do esforço de
desenvolvimento



Fazer uso de práticas de desenvolvimento cooperativo é uma
estratégia em alta nos dias hoje. Porém, as empresas devem saber
que componentes ou atividades do desenvolvimento podem ser
realizadas por terceiros
Como decidir? Fatores técnicos e não técnicos devem ser
considerados
Dependendo do projeto, a divisão de esforços pode ser definida
segundo uma combinação de elementos:





parcerias de negócios
fases do desenvolvimento de software
aspectos da arquitetura do produto
experiência das equipes
investimentos de capital
Organização do esforço de
desenvolvimento
Bases para a divisão
de esforços
Prós
Contras
Comentários
Parcerias de negócios
 Percentagem de
esforços/orçamento
 Motivada pela
experiência técnica
 Definida pelo
potencial de
investimentos e seu
ROI
 Boas chances de
sucesso se existe
alguma liderança
técnica
O potencial do
desenvolvimento é
fortalecido se as
empresas encontramse alinhadas com o
processo
É frequente; muitas
empresas preferem
este formato de
atuação
 Pode não estar
alinhada com a área
foco da empresa - um
risco a ser considerado
 Pode não alcançar
os objetivos financeiros
Um investimento de
risco vs. Retornos vs.
Custo da oportunidade
A necessidade de mais
comunicação pode
retardar o projeto
É típico entre empresas
menores e grandes
contratos envolvendo o
Governo
Dificuldades de gestão
se a parte terceirizada
for muito grande
(funcionalidades)
Muito usado na
indústria
Fases de
Desenvolvimento
Aspectos arquiteturais
Organização do esforço de
desenvolvimento
Bases para a divisão
de esforços
Prós
Contras
Comentários
Conhecimento e
Experiência
Baixo risco técnico, alta
eficiência
É melhor gerenciado
quando implementado
para subsistemas
maiores e críticos
É muito comum o seu
uso para fixação de
áreas de
responsabilidade
Liderança
Bons líderes agregam
valor
A liderança pode não
estar alinhada com as
habilidades técnicas da
organização
É recomendada quando
grandes investimentos
são realizados
Pessoal
Oferece bons
resultados nas fases
iniciais do projeto
Quando o grupo é
inexperiente pode haver
uma longa curva de
aprendizagem
É mais comum em
projetos com
cronogramas muito
fechados
Tools e Recursos de
Capital
Durante o
desenvolvimento do
software, tools e capital
não são limitantes
Algumas vezes a
empresa que detém as
tools e o capital é
inexperiente
Dependente da parceira
de negócio e da fixação
dos investimentos
Organização do esforço: Fases de
desenvolvimento

É muito comum dividir os esforços segundo as fases de
desenvolvimento do ciclo de vida do processo em uso:
 Algumas empresas parceiras são mais experientes em certas
áreas (projeto do sistema, integração e teste, suporte ao cliente)
Contrato Requisitos
Arquit. Projeto
e Projeto baixo nível
alto nível
Empresa com
experiência em
projeto
Codif.
Teste
Teste
integração
unidade
Empresa com
experiência em
codificação
Teste
Instalação e
aceitação
suporte
Empresa com
experiência em
teste
Empresa com
experiência em
suporte
Organização do esforço: Aspectos
arquiteturais

É o formato mais comum usado para divisão de esforços em
projetos terceirizados (outsourcing):
 Pratica-se um princípio já bem conhecido - “Divida e conquiste”
Executivo
Escalonador
Lista Atividades
Gerente
Tarefas
Prioridades
Empresa B
Gerente Pacote
Comunicação
Eventos
Empresa A
Organização do esforço: Conhecimento e
experiência

Também é popular. É aplicado quando as empresas demandam por
alguns serviços que são dificéis de obter:
 Em geral, um esquema arquitetural é usado para melhor
definição da parceria
Executivo
Escalonador
Lista Atividades
Tarefas do Disco Ótico
Gerente
Tarefas
Prioridades
[L] [P]
Empresa Terceira
Gerente Pacote
Comunicação
Eventos
[A] [X] [X] [X]
[X]
Com base na
experiência
Organização do esforço: Liderança


Embora não muito frequente, esta abordagem parq divisão de
esforços é muito visível em empresas com alta experiência no
mercado e grupos competentes
Recomenda-se a discussão de três questões chaves:
 A empresa detém conhecimento sobre o domínio do problema?
Possui uma visão acerca de sua solução?
 A empresa possui recursos para viabilizar o projeto?
 A empresa enconta-se comprometida com as fases do projeto?
Desenvolvimento Global: Comunicação

Comunicação é um aspecto determinante quando se gerencia
projetos de software desenvolvidos em diferentes locais


Existem duas dimensões para se determinar se um método de
comunicação é efetivo:



os envolvidos devem ter meios para receber e transmitir mensagens
verbais ou textuais
Tempo - o quanto oportuna é a informação recebida
Conteúdo - o volume de informação escrita ou verbal comunicada e o
que pode ser lido junto com ela (expressões faciais e tons de vozes
em casos verbais; nível de formalidade em casos escritos)
Alguns métodos de comunicação combinam conteúdos verbais e
não-verbais
Desenvolvimento Global: Comunicação
Conteúdo
Alto
 Face a face
 Conferência telefone
 Video conferência
 Correio
 e-Mail
 e-Mail de Voz
Baixo
Tempo
Baixo
Alto
Desenvolvimento Global: Comunicação
Gerador
Receptor
Próxima ao tempo real
Modelo face a face
Gerador
Receptor
Modelo conferência por telefone
Gerador
Receptor
Modelo video conferência
Gerador
Receptor
Modelo comunicação eletrônica
Muito atraso no tempo
de recepção
Pouco conteúdo
Muito conteúdo
Comunicação fuzzy
Desenvolvimento Global: Comunicação
eletrônica

O meio mais popular em organizações virtuais:
WEB e Internet - muito útil, este tipo de estrutura custa relativamente
pouco se comparado ao seu uso relativo. Em geral, as empresas
organizam um ambiente específico para troca de informações sobre
o projeto. A segurança é um aspecto chave a ser considerado
 Redes dedicadas (WANs e LANs) - o modelo de comunicação de
uma rede dedicada possui muitas das características da Web e
Internet, porém neste caso o controle de acesso é mais eficaz.
Porém, para algumas empresas os custos com equipamentos, linhas
de comunicação, software e manutenção são proibitivos
Outros aspectos a serem considerados:
 Diferenças culturais
 Fuso horário


Desenvolvimento Global: Integração

Em qualquer situação de projetos desenvolvidos por várias
“cabeças”, os grupos virtuais devem dispor de métodos de
comunicação, algum plano de gestão de configuração deve ser
estruturado e ferramentas de apoio são disponibilizadas


ALERTA! A integração de tudo isto é o mais difícil em projetos deste
tipo
Será necessária a criação de uma estratégia para integração sem
maiores riscos
 aquisição das ferramentas mais adequadas
 uso correto de produtos para testes
 definição de critérios de aceitação
 definição do nível de documentação
 definição do nível de suporte necessário
Desenvolvimento Global: Estratégias para
Integração
Local
Virtual 1
Local
Virtual 3
Local
Virtual 1
Main site
Feature
Feature
completa
Local
Virtual 3
Local
Virtual 1
Local
Virtual 3
Main site
Updates
Updates
Feature
Main site
Updates
Local
Virtual 2
Local
Virtual 4
Descentralizado
• Pequenos grupos
• Ciclos curtos
Local
Virtual 2
Local
Virtual 4
Centralizado
• Ciclos longos
• % pequeno do s/w
sofre mudanças
Local
Virtual 2
Local
Virtual 4
Just-in-time
• Projetos incrementais
• Ciclos curtos centrados
em funcionalidades
Desenvolvimento Global: Tools para
Integração

Algumas ferramentas são relevantes na integração do projeto
virtual:



Gestão de versões, gerenciando as versões em todas os locais de
desenvolvimento e suportando o desenvolvimento distribuído. Tais
ferramentas devem permitir a entrada de arquivos de fora de seu
ambiente host
Integração, ferramentas de integração são úteis para junção dos n
componentes do software. Podem gerar releases com módulos ainda
não fechados e com erros; resolvem problemas de referência não
definidas; e acionam versões iniciais de módulos via um linker. Tais
ferramentas devem se capaz de recuperar componentes externos
Depurador, ferramentas de depuração devem ser capazes de rastrear
os múltiplos módulos distribuídos entre os ambientes
Desenvolvimento Global: Testes para
Integração

Dois tipos de testes devem ser praticados
Testes nos módulos desenvolvidos num dado local,
 Testes para os módulos já terminados
Os testes devem apresentar alguma forma de documentação que indique o
que foi testado e o que ainda estar para ser testado


Desenvolvimento Global: Critérios de
aceitação para Integração


Definem uma lista de critérios que determinam quando um dado
componente do software é aceitável para ser integrado ao produto
Devem ser definidos antes do início da tarefa de integração e são
vitais por três razões chaves:



Diferenças culturais (diferentes formas de integração)
Os parceiros necessitam de alguma forma de evento (milestones) que
definam a disponibilização do produto
Em geral, existem algumas dúvidas ou indefinições quanto aos
requisitos levantados para o produto
Requisitos do
software
Codificação
Critérios de
aceitação
Planos de Testes
Testes
Entrega
Desenvolvimento Global: Critérios de
aceitação para Integração

Os critérios de aceitação, em geral, dependem:




Das expectativas do consumidor/mercado
Do tempo disponível
Do capital disponível
Do estágio do software
Desenvolvimento Global: Documentação
para Integração

É extremamente importante para auxílio à integração, deve incluir:



Uma matriz de rastreamento. Define as funções o software deve
atender
Descrição do ambiente de integração. Descreve as ferramentas,
processos e versões dos suítes de testes, arquivos de configuração, e
outras ferramentas de suporte à integração
Matriz de versões dos módulos. Identifica cada módulo do software e a
versão da configuração usada para construir a release. Este tipo de
matriz pode ser encontrada num linker ou num ambiente de SCM
Discussão sobre artigo





WHAT CHARACTERIZES DISTRIBUTED
DEVELOPMENT? – 1 aluno
WHAT HAVE COMPANIES LEARNED FROM DSD? – 2
alunos
DECISION CRITERIA FOR A DISTRIBUTED
ENVIRONMENT – 1 aluno
METHODOLOGIES AND TECHNIQUES IN DSD – 1
aluno
OVERVIEW OF TOOLS AND TECHNOLOGY - 1 aluno