Desenvolvimento Global de Software
description
Transcript of Desenvolvimento Global de Software
Desenvolvimento Global de SoftwareMestrado de Informática / UFPB
Francilene Procópio Garcia, [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
Hoje, muitas empresas já consideram economicamente atrativo fazer outsourcing ou desenvolver software de forma cooperativa em outros países
1970 1980 1990
Número demicros
disponíveis
Número deprofissionais des/w disponíveis
Demanda porsoftware
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
Mercado dovendedor
Resposta do Mercado
Expectativas doConsumidor
Mercado docomprador
Os clientes cada vez mais vão demandar software para suasnecessidades...
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
Desenvolvimento de subsistemasGeração da documentaçãoColocação do produto no mercado local Localização do produto
Geração de documentaçãoDesenvolvimento de subsistemas
Colocação do produto fora do mercado local
Controle de versõesSuporte on-siteManutenção
Aliança estratégica
ParceiroParceiro
Parceiro da joint venture
Parceiro da joint venture
Empresa criada joint venture
• Retorno financeiro• Tecnologia
• Retorno financeiro• Tecnologia
• Estratégia• Investimento capital• Investimento RH
Joint Venture
Produção global de software
Produção Global de Software
Ciclos de Localização
Necessidades e Valores de um Mercado Global
Tecnologia
Capacidade de Inovação
Time to Market
Entrada: Linha de produção
Entrada: Info sobre Clientes e Concorrentes
Entrada: Componentes reusáveis, ferramentas, etc.
Saída: Plano de evolução
Saída: Impacto do produto
Saída: Desempenho do produto
Valor/Preç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ãode esforços
Prós Contras Comentários
Parcerias de negócios Percentagem deesforços/orçamento Motivada pelaexperiência técnica
Definida pelopotencial deinvestimentos e seuROI Boas chances desucesso se existealguma liderançatécnica
Pode não estaralinhada com a áreafoco da empresa - umrisco a ser considerado Pode não alcançaros objetivos financeiros
Um investimento derisco vs. Retornos vs.Custo da oportunidade
Fases deDesenvolvimento
O potencial dodesenvolvimento éfortalecido se asempresas encontram-se alinhadas com oprocesso
A necessidade de maiscomunicação poderetardar o projeto
É típico entre empresasmenores e grandescontratos envolvendo oGoverno
Aspectos arquiteturais É frequente; muitasempresas preferemeste formato deatuação
Dificuldades de gestãose a parte terceirizadafor muito grande(funcionalidades)
Muito usado naindústria
Organização do esforço de desenvolvimentoBases para a divisãode esforços
Prós Contras Comentários
Conhecimento eExperiência
Baixo risco técnico, altaeficiência
É melhor gerenciadoquando implementadopara subsistemasmaiores e críticos
É muito comum o seuuso para fixação deáreas deresponsabilidade
Liderança Bons líderes agregamvalor
A liderança pode nãoestar alinhada com ashabilidades técnicas daorganização
É recomendada quandograndes investimentossão realizados
Pessoal Oferece bonsresultados nas fasesiniciais do projeto
Quando o grupo éinexperiente pode haveruma longa curva deaprendizagem
É mais comum emprojetos comcronogramas muitofechados
Tools e Recursos deCapital
Durante odesenvolvimento dosoftware, tools e capitalnão são limitantes
Algumas vezes aempresa que detém astools e o capital éinexperiente
Dependente da parceirade negócio e da fixaçãodos 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.e Projetoalto nível
Projetobaixo nível
Codif.Teste
unidade
Testeintegração
Testeaceitação
Instalação esuporte
Empresa comexperiência em
projetoEmpresa com
experiência emcodificação
Empresa comexperiência em
teste
Empresa comexperiê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
Lista Atividades Prioridades Eventos
EscalonadorGerente Tarefas
Gerente Pacote Comunicação
Empresa A
Empresa B
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
Lista Atividades Prioridades Eventos
EscalonadorGerente Tarefas
Gerente Pacote Comunicação
Empresa Terceira
Tarefas do Disco Ótico [L] [P] [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 os envolvidos devem ter meios para receber e transmitir mensagens
verbais ou textuais Existem duas dimensões para se determinar se um método de
comunicação é efetivo: 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çãoConteúdo
Baixo Tempo
Alto
Baixo Alto
e-Mail de Voz
Correio e-Mail
Video conferência
Conferência telefone
Face a face
Desenvolvimento Global: Comunicação
Gerador Receptor
Modelo face a face
Gerador Receptor
Modelo conferência por telefone
Gerador Receptor
Modelo video conferência
Gerador Receptor
Modelo comunicação eletrônica
Próxima ao tempo real
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
LocalVirtual 1
LocalVirtual 3
LocalVirtual 2
LocalVirtual 4
Descentralizado• Pequenos grupos• Ciclos curtos
LocalVirtual 1
LocalVirtual 3
LocalVirtual 2
LocalVirtual 4
Feature
Featurecompleta
Centralizado• Ciclos longos• % pequeno do s/wsofre mudanças
LocalVirtual 1
LocalVirtual 3
LocalVirtual 2
LocalVirtual 4
Updates
Just-in-time• Projetos incrementais• Ciclos curtos centradosem funcionalidades
Updates
Updates
Feature
Main site Main site
Main site
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 Planos de Testes Testes
Critérios de aceitação 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