1 / 34

Desenvolvimento Global de Software

Desenvolvimento Global de Software. Mestrado de Informática / UFPB Francilene Procópio Garcia, D.Sc. francilene@ieee.org. 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:

sarai
Download Presentation

Desenvolvimento Global de Software

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Desenvolvimento Global de Software Mestrado de Informática / UFPB Francilene Procópio Garcia, D.Sc. francilene@ieee.org Desenv. Global Software - Parte I

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

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

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

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

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

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

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

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

  10. Demanda por software Número de profissionais de s/w disponíveis Número de micros disponíveis 1970 1980 1990 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

  11. Resposta do Mercado Mercado do comprador Expectativas do Consumidor Mercado do vendedor 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 Os clientes cada vez mais vão demandar software para suas necessidades...

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

  13. Desenvolvimento de subsistemas Geração da documentação Colocação do produto no mercado local Localização do produto Geração de documentação Desenvolvimento de subsistemas Colocação do produto fora do mercado local Controle de versões Suporte on-site Manutenção Parceiro da joint venture • Estratégia • Investimento capital • Investimento RH Parceiro da joint venture • Retorno financeiro • Tecnologia • Retorno financeiro • Tecnologia Empresa criada joint venture Posição do mercado Parceiro Parceiro Aliança estratégica Joint Venture

  14. 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 Produção Global de Software Time to Market Entrada: Info sobre Clientes e Concorrentes Saída: Plano de evolução Tecnologia Entrada: Componentes reusáveis, ferramentas, etc. Capacidade de Inovação Saída: Impacto do produto

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

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

  17. Organização do esforço de desenvolvimento

  18. Organização do esforço de desenvolvimento

  19. Arquit. e Projeto alto nível Projeto baixo nível Contrato Requisitos Codif. Teste unidade Teste integração Teste aceitação Instalação e suporte Empresa com experiência em projeto Empresa com experiência em codificação Empresa com experiência em teste Empresa com experiência em suporte 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)

  20. 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 Empresa B Escalonador Gerente Tarefas Gerente Pacote Comunicação Lista Atividades Prioridades Eventos Empresa A

  21. Executivo Empresa Terceira Escalonador Gerente Tarefas Gerente Pacote Comunicação Lista Atividades Prioridades Eventos 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 Tarefas do Disco Ótico [L] [P] [A] [X] [X] [X] [X] Com base na experiência

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

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

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

  25. Gerador Receptor Próxima ao tempo real Modelo face a face Muito atraso no tempo de recepção Gerador Receptor Pouco conteúdo Modelo conferência por telefone Muito conteúdo Gerador Receptor Comunicação fuzzy Modelo video conferência Gerador Receptor Modelo comunicação eletrônica Desenvolvimento Global: Comunicação

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

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

  28. Local Virtual 1 Local Virtual 3 Local Virtual 1 Local Virtual 3 Local Virtual 1 Local Virtual 3 Feature Feature completa Updates Updates Feature Updates Local Virtual 2 Local Virtual 4 Local Virtual 2 Local Virtual 4 Local Virtual 2 Local Virtual 4 • Descentralizado • Pequenos grupos • Ciclos curtos • Centralizado • Ciclos longos • % pequeno do s/w • sofre mudanças • Just-in-time • Projetos incrementais • Ciclos curtos centrados • em funcionalidades Desenvolvimento Global: Estratégias para Integração Main site Main site Main site

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

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

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

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

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

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

More Related