Desenvolvimento Global de Software

34
Desenvolvimento Global de Software Mestrado de Informática / UFPB Francilene Procópio Garcia, D.Sc. [email protected] Desenv. Global Software - Par

description

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: - PowerPoint PPT Presentation

Transcript of Desenvolvimento Global de Software

Page 1: Desenvolvimento Global de Software

Desenvolvimento Global de SoftwareMestrado de Informática / UFPB

Francilene Procópio Garcia, [email protected]

Desenv. Global Software - Parte I

Page 2: Desenvolvimento Global de Software

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)

Page 3: Desenvolvimento Global de Software

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

Page 4: Desenvolvimento Global de Software

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

Page 5: Desenvolvimento Global de Software

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

Page 6: Desenvolvimento Global de Software

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

Page 7: Desenvolvimento 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

Page 8: Desenvolvimento Global de Software

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

Page 9: Desenvolvimento Global de Software

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

Page 10: Desenvolvimento Global de Software

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

Page 11: Desenvolvimento Global de Software

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...

Page 12: Desenvolvimento Global de Software

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...

Page 13: Desenvolvimento Global de Software

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

Page 14: Desenvolvimento Global de Software

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

Page 15: Desenvolvimento Global de Software

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

Page 16: Desenvolvimento Global de Software

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

Page 17: Desenvolvimento Global de Software

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

Page 18: Desenvolvimento Global de Software

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

Page 19: Desenvolvimento Global de Software

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

Page 20: Desenvolvimento Global de Software

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

Page 21: Desenvolvimento Global de Software

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

Page 22: Desenvolvimento Global de Software

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?

Page 23: Desenvolvimento Global de Software

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

Page 24: Desenvolvimento Global de Software

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

Page 25: Desenvolvimento Global de Software

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

Page 26: Desenvolvimento Global de Software

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

Page 27: Desenvolvimento Global de Software

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

Page 28: Desenvolvimento Global de Software

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

Page 29: Desenvolvimento Global de Software

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

Page 30: Desenvolvimento Global de Software

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

Page 31: Desenvolvimento Global de Software

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

Page 32: Desenvolvimento Global de Software

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

Page 33: Desenvolvimento Global de 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

Page 34: Desenvolvimento Global de Software

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