introdução ao projeto de plataformas de software: o quê, por que, como

36
Rodrigo Quites Reis (UFPA) [email protected] Outubro / 2014 Uma introdução ao Projeto de Plataformas (ou Ecosistemas) de Software O quê, Por quê, Como Plataformas de Software

Upload: rodrigo-reis

Post on 04-Jul-2015

202 views

Category:

Technology


0 download

DESCRIPTION

Uma rápida introdução respondendo o que são, por que investir no seu desenvolvimento, e como projetar Plataformas de software.

TRANSCRIPT

Page 1: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Rodrigo  Quites  Reis  (UFPA)  [email protected]  

 Outubro  /  2014  

Uma  introdução  ao  Projeto  de  Plataformas  (ou  Ecosistemas)  de  Software  

O  quê,  Por  quê,  Como  

Plataformas  de  Software  

Page 2: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Coordenador  do  Laboratório  de  Engenharia  de  Software  da  UFPA    Coordenador  de  Informação  e  Prospecção  Tecnológica  da  Secretaria  de  Estado  de  Ciência,  Tecnologia  e  Inovação  (SECTI)    Bacharel  (1994,  UFPA),  Mestre  (1998,  UFRGS)  e  Doutor  (2002,  UFRGS)  em  Ciência  da  Computação    

Rodrigo  Quites  Reis  

Plataformas  de  Software  

Page 3: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Agenda  

Ø Projeto  de  Plataformas  de  Software  § O  quê?  §  Por  que?  §  Como?  

Ø Material  de  Apoio  

3  Plataformas  de  Software  

Page 4: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

O  que  é  uma  Plataforma  de  Software?  

4  Plataformas  de  Software  

Page 5: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

O  que  é  uma  Plataforma  de  Software?  Ø Primeiro  Conceito  

§  API  –  Application  Programming  Interface  q  Uma   coleção   de   funções,   classes,   tipos   de   dados,  eventos,  protocolos,  arquivos,  etc  

§  Com  as  APIs,  os  aplicativos  conversam  uns  com  os  outros   sem   conhecimento   ou   intervenção   dos  usuários.  

q  Exemplos  de  APIs  comerciais:  •  Google  Maps,  Facebook,  Twitter,  ….  

q  Exemplos  de  usos  (consumo)  de  APIs:  •  Inúmeros!  

5  Plataformas  de  Software  Definição  para  ‘plataforma’  a  caminho  

Page 6: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

O  que  é  uma  Plataforma  de  Software?  Ø Facebook  Platform  

§  “A   plataforma   Facebook   é   um   ambiente   de  software   para   permitir   que   terceiros   criem   suas  próprias   aplicações   e   serviços   que   acessam   dados  do  Facebook.”  (Wikipedia,  2014)  

§  Lançado  em  Maio  de  2007  §  APIs:  

q  Graph  API  q  Authentication  q  Social  plugins  q  Facebook  Connect  ou  “Log  in  with  Facebook”  q  …  

6  

Definição  para  ‘plataforma’  a  caminho  Plataformas  de  Software  

Page 7: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

O  que  é  uma  Plataforma  de  Software?  Ø Na  prática,  o  que  queremos  é  usar  as  APIs  existentes  para  desenvolver  nossa  aplicação  com:  § Maior  velocidade  de  desenvolvimento  § Menor  complexidade  

7  

API  1   API  2   API  N  

meuApp  

…  

Page 8: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Diferença  entre  Produto  e  Plataforma  Ø Produto:  

§  “Vida”  isolada  §  Consome   recursos   fornecidos   pelo   S.O.,  Linguagens  de  Programação  e  APIs  externas  

§  Somente   quem   desenvolveu   consegue   agregar  novas  funcionalidades  

8  Plataformas  de  Software  

Page 9: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Diferença  entre  Produto  e  Plataforma  Ø Plataforma:  

§  Uma   plataforma   deve   fornecer   uma   função   ou  serviço   útil   e   permitir   acesso   de   terceiros   através  de  APIs  

§  Obs:  aqui  estamos  interessados  em  plataformas  de  alto   nível   e   que   não   estejam   presas   a   hardware  específico  (ex:  iOS,  Android,  Xbox,  …)  

9  Plataformas  de  Software  

Page 10: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Plataformas  em  diferentes  contextos  

10  Plataformas  de  Software  

Page 11: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Plataformas  em  diferentes  contextos  Ø Plataformas  automotivas  (Ford):  

§  Uma  arquitetura  comum  (ex:  sequência  de  montagem,  configuração  para  solda,  interfaces  de  sistemas,  etc)  

§  A  definição  de  interfaces  para  módulos  §  Um   conjunto   de   pontos   comuns   usados   por   uma  variação  de  produtos  que  compartilham  a  plataforma  e  os  processos  fabris  

11  Plataformas  de  Software  

Page 12: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Por  que  Plataformas?  

12  Plataformas  de  Software  

Page 13: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Por  que  Plataformas?  Ø Há  uma  mudança  no  comportamento  (EUA)  

§  A   quantidade   de   linhas   telefônicas   ativas   está  decaindo    

§  Banda  larga  móvel  >  Banda  larga  fixa  §  5  milhões  cancelaram  a  tv  por  assinatura  no  último  ano  

§  Hotéis   não   são   mais   o   alvo   preferencial   para   se  hospedar  em  viagens  

Ø Estas  mudanças  no  comportamento  são  causadas  por  fatores  sócio-­‐econômicos  

q  Não  é  causada  somente  pela  tecnologia  

13  Plataformas  de  Software  

Page 14: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Por  que  Plataformas?  

14  

Ø Mudança  de  Paradigma  de  Negócios  § Modelo  Push  

q  Baseado  na  existência  de  uma  previsão  de  demanda    q  Prevê   que   as   pessoas   certas   e   os   recursos   certos  estarão  disponíveis  nos  lugares  e  momentos  certos  

q  Funciona  bem  se  for  possível  prever  precisamente  a  demanda  

§ Modelo  Pull  q  Unir  pessoas  e  recursos  onde  e  quando  necessário  q  Busca  de  um  equilíbrio  dinâmico    

Plataformas  de  Software  

Page 15: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Por  que  Plataformas?  

Ø Lado  positivo:  §  Plataforma  constitui  um  ativo  organizacional  §  Clientes   investem:   comprando,   escrevendo   e  aprendendo  

§  Plataformas  de  sucesso  captam  clientes  

Ø Riscos  §  Pode  se  tornar  um  dos  maiores  débitos  da  empresa  §  Pode   resultar   em   muitas   chamadas   ao   suporte  técnico  

15  Plataformas  de  Software  

Page 16: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Por  que  Plataformas?  

Ø Plataformas  muitas  vezes  foram,  antes,  produtos  bem  sucedidos  

Ø …ou  serviram  de  diferencial  para  turbinar  o  sucesso  

16  Plataformas  de  Software  

Page 17: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Por  que  Plataformas?  

Ø Exemplos  de  Plataformas  Atuais  

Plataformas  de  Software   17  

Page 18: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Por  que  Plataformas?  

Ø Exemplos  de  Plataformas  Atuais  

Plataformas  de  Software   18  

Page 19: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Por  que  Plataformas?  

Ø Exemplos  de  Plataformas  Atuais  

19  

Page 20: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Níveis  de  Plataformas  

20  

• Agregação  de  recursos  em  um  único  ponto  de  acesso  •  Baseadas  em  transações  •  Encontrar  uma  resposta  para  pergunta,  encontrar  um  comprador  •  Exemplos:  Mercado  Livre,  Google  

Nível  I  (agregar)  

• Agregam  pessoas  e  funcionam  como  uma  rede  Mesh.  •  Fogem  do  conceito  de  transações  para  relacionamentos,  os  quais  persistem  no  tempo.  

• Usuários  com  histórico  profissional  semelhante,  vínculo  afetivo,  vínculo  familiar  

•  Exemplos:  Twitter,  Facebook,  LinkedIn    

Nível  II  (socializar)  

•  Juntam  participantes  não  apenas  para  relacionamento  mas  para  alcançar  um  objetivo  comum.  

•  Plataformas  de  processo  que  mobilizam  pessoas  para  desenvolver  plataformas  de  negócio  

•  Exemplos:  plataformas  para  desenvolvedores  

Nível  III  (mobilizar)  

•  Plataformas  que  aprendem.  • Aceleram  o  aprendizado  e  performance  dos  participantes.  •  Pessoas  se  agregam  em  equipes,  times,  grupos  • Usuário  pode  acessar  os  recursos  disponíveis  em  toda  a  plataforma  •  Exemplo:  World  of  Warcraft  

Nível  IV  (aprender)  

(John  Hagel,  2014)  Plataformas  de  Software  

Page 21: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Por  que  Plataformas?  

Ø Bons  programas  são  modulares  Ø   Cada  módulo  deve  ter  uma  API  Ø Camadas  

21  

A'key'lesson'here'is'that’’  API'is'not'just  a'documented’  class.''  And,'APIs'don’t  just'happen;'  they'are’a  big'investment."'      Erich  Gamma  

Plataformas  de  Software  

Page 22: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Como  Projetar  Plataformas?  

Plataformas  de  Software   22  

Page 23: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Como  Projetar  Plataformas?  

Ø Primeiro  Passo:  Identificar  Oportunidade  §  Meu   p r odu t o   i n t e r e s s a   p a r a   o u t r o  desenvolvedor?  

§  Como   posso   fazer   que   meu   produto   seja  interessante   para   outros   sites   ou   serviços  online?  

Plataformas  de  Software   23  

Page 24: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Como  Projetar  Plataformas?  

Ø Uma  boa  plataforma  /  API  deve  ser:  §  Fácil  de  aprender  §  Fácil  de  usar,  mesmo  sem  documentação  §  Difícil  de  usar  incorretamente  §  Fácil  de  estender  §  Fácil  de  ler  e  manter  o  código  que  a  usa  §  Focada  em  um  propósito  §  Poderosa  o  bastante  para  atender  os  requisitos    §  Apropriada  e  direcionada  a  um  público  §  Bem  documentada  

24  Plataformas  de  Software  

Quase  impossível  de  se  alcançar  no  

início  

Page 25: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Como  Projetar  Plataformas?  Ø “Nós  não  construímos  plataformas.  Nós  as  

evoluímos”  e  Ø “Uma  plataforma  perfeita  não  existe!”    (Ming  Zeng  

–  Alibaba,  2014)  

Ø “Falhe  cedo,  falhe  barato,  falhe  sempre”  §  Mantra  da  Inovação  Ágil  

Ø “Software  Suficientemente  Bom”  §  (Yourdon,   1997   –   Decline   and   Fall   of   the   American  Programmer)  

25  Plataformas  de  Software  

Page 26: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Como  Projetar  Plataformas?  

Ø Os  dois  lados  do  projeto  de  uma  Plataforma  (produtor  x  consumidor)  

26  

Page 27: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Como  Projetar  Plataformas?  

Ø O  que  fazer?  §  Comece   com   o   projeto   de   quais   são   as   APIs  necessárias  

q  No  início,  poucas  APIs  com  os  serviços  essenciais  

§  Para  cada  API,  comece  o  projeto  dos  serviços  q  Liste  os  requisitos  q  Escreva  os  casos  de  uso  

•  Mantenha  o  limite  de  uma  página  

q  Escreva  código  para  cada  Caso  de  Uso  

Plataformas  de  Software   27  

Page 28: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Como  Projetar  Plataformas?  

Ø Lembrar  de  projetar  tanto  do  seu  ponto  de  vista  quanto  do  consumidor/usuário  

Plataformas  de  Software   28  

Page 29: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Como  Projetar  Plataformas?  

Ø   “API  deve  ser  o  mais  simples  possível,  mas  não  simplória”    

Ø “API  deve  ser  tão  pequena  quanto  possível,  mas  não  a  menor”  

Ø “Escolha  bons  nomes  para  os  serviços  (pronunciáveis  e  memoráveis)”  

(Leitão,  2014)  

Plataformas  de  Software   29  

Page 30: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Como  Projetar  Plataformas?  

Ø “Documentação  de  Referência  §  JavaDoc  e  Similares  

Ø Tutorias    §  Como  começar  rapidamente  e  fazer  algo  de  valor  §  O  que  eu  posso  fazer  em  2  minutos  

Ø Guia  do  Programador  §  Introdução,  glossário,  conceitos,  padrões,  etc”  §  Exceções  !  

(Leitão,  2014)    

Plataformas  de  Software   30  

Page 31: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Como  Projetar  Plataformas?  

Ø Tratamento  de  Exceção  §  Encaminhar  para  o  consumidor  dos  serviços  as  exceções   -­‐   quando   impossível   de   tratar  internamente  

Plataformas  de  Software   31  

Page 32: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Como  Projetar  Plataformas?  

Ø Cuidado  com  “envelopamento  de  plataforma”  

Plataformas  de  Software   32  

Sua  plataforma  

Plataforma  /  Software  “daninho”  

Page 33: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Material  de  Apoio  

Plataformas  de  Software   33  

Page 34: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Material  de  Apoio  

Ø Gilmar  P.S.  Leitão.  Projeto  de  API  (SlideShare)  

Ø MIT  Platform  Strategy  Summit  –  August  2014  §  http://platforms.mit.edu  

Plataformas  de  Software   34  

Page 35: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Material  de  Apoio  

Plataformas  de  Software   35  

Page 36: Introdução ao Projeto de Plataformas de Software: o quê, por que, como

Material  de  Apoio  

Plataformas  de  Software   36