Rodrigo Quites Reis (LABES-UFPA)
quites@ufpa.br
IV Semana Acadêmica da Faculdade de Computação
Outubro / 2015
Plataformas de Software
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
Agenda
Projeto de Plataformas de Software
 O quê?
 Por que?
 Como?
Material de Apoio
3Plataformas de Software
O que é uma Plataforma de
Software?
4Plataformas de Software
O que é uma Plataforma de
Software?
Primeiro Conceito
 API – Application Programming Interface
 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.
 Exemplos de APIs comerciais:
• Google Maps, Facebook, Twitter, ….
 Exemplos de usos (consumo) de APIs:
• Inúmeros!
5Plataformas de Software
Definição para ‘plataforma’ a caminho
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:
 Graph API
 Authentication
 Social plugins
 Facebook Connect ou “Log in with Facebook”
 …
6
Definição para ‘plataforma’ a caminho
Plataformas de Software
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
…
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
8Plataformas de Software
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, …)
9Plataformas de Software
Plataformas em diferentes
contextos
10Plataformas de Software
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
11Plataformas de Software
Por que Plataformas?
12Plataformas de Software
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
 Não é causada somente pela tecnologia
13Plataformas de Software
Por que Plataformas?
14
Mudança de Paradigma de Negócios
 Modelo Push
 Baseado na existência de uma previsão de demanda
 Prevê que as pessoas certas e os recursos certos
estarão disponíveis nos lugares e momentos certos
 Funciona bem se for possível prever precisamente a
demanda
 Modelo Pull
 Unir pessoas e recursos onde e quando necessário
 Busca de um equilíbrio dinâmico
Plataformas de Software
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
15Plataformas de Software
Por que Plataformas?
Plataformas muitas vezes foram, antes,
produtos bem sucedidos
…ou serviram de diferencial para turbinar o
sucesso
16Plataformas de Software
Por que Plataformas?
Exemplos de Plataformas Atuais
Plataformas de Software 17
Por que Plataformas?
Exemplos de Plataformas Atuais
Plataformas de Software 18
Por que Plataformas?
Exemplos de Plataformas Atuais
19
Plataformas de Software 20
Plataformas de Software 21
Plataformas de Software 22
Níveis de Plataformas
23
• 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
Por que Plataformas?
Bons programas são modulares
 Cada módulo deve ter uma API
Camadas
24
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
Como Projetar Plataformas?
Plataformas de Software 25
Como Projetar Plataformas?
Primeiro Passo: Identificar Oportunidade
 Meu produto interessa para outro
desenvolvedor?
 Como posso fazer que meu produto seja
interessante para outros sites ou serviços
online?
Plataformas de Software 26
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
27Plataformas de Software
Quase
impossível de
se alcançar no
início
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)
28Plataformas de Software
Como Projetar Plataformas?
Os dois lados do projeto de uma Plataforma
(produtor x consumidor)
29
Como Projetar Plataformas?
O que fazer?
 Comece com o projeto de quais são as APIs
necessárias
 No início, poucas APIs com os serviços essenciais
 Para cada API, comece o projeto dos serviços
 Liste os requisitos
 Escreva os casos de uso
• Mantenha o limite de uma página
 Escreva código para cada Caso de Uso
Plataformas de Software 30
Como Projetar Plataformas?
Lembrar de projetar tanto do seu ponto de
vista quanto do consumidor/usuário
Plataformas de Software 31
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 32
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 33
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 34
Como Projetar Plataformas?
Cuidado com “envelopamento de
plataforma”
Plataformas de Software 35
Sua plataforma
Plataforma / Software “daninho”
Material de Apoio
Plataformas de Software 36
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 37
Material de Apoio
Plataformas de Software 38
Material de Apoio
Plataformas de Software 39
Rodrigo Quites Reis (LABES-UFPA)
quites@ufpa.br
IV Semana Acadêmica da Faculdade de Computação
Outubro / 2015
Plataformas de Software
Estes slides estão no SlideShare

Palestra plataformas software

  • 1.
    Rodrigo Quites Reis(LABES-UFPA) quites@ufpa.br IV Semana Acadêmica da Faculdade de Computação Outubro / 2015 Plataformas de Software
  • 2.
    Coordenador do Laboratóriode 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
  • 3.
    Agenda Projeto de Plataformasde Software  O quê?  Por que?  Como? Material de Apoio 3Plataformas de Software
  • 4.
    O que éuma Plataforma de Software? 4Plataformas de Software
  • 5.
    O que éuma Plataforma de Software? Primeiro Conceito  API – Application Programming Interface  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.  Exemplos de APIs comerciais: • Google Maps, Facebook, Twitter, ….  Exemplos de usos (consumo) de APIs: • Inúmeros! 5Plataformas de Software Definição para ‘plataforma’ a caminho
  • 6.
    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:  Graph API  Authentication  Social plugins  Facebook Connect ou “Log in with Facebook”  … 6 Definição para ‘plataforma’ a caminho Plataformas de Software
  • 7.
    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 …
  • 8.
    Diferença entre Produtoe Plataforma Produto:  “Vida” isolada  Consome recursos fornecidos pelo S.O., Linguagens de Programação e APIs externas  Somente quem desenvolveu consegue agregar novas funcionalidades 8Plataformas de Software
  • 9.
    Diferença entre Produtoe 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, …) 9Plataformas de Software
  • 10.
  • 11.
    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 11Plataformas de Software
  • 12.
  • 13.
    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  Não é causada somente pela tecnologia 13Plataformas de Software
  • 14.
    Por que Plataformas? 14 Mudançade Paradigma de Negócios  Modelo Push  Baseado na existência de uma previsão de demanda  Prevê que as pessoas certas e os recursos certos estarão disponíveis nos lugares e momentos certos  Funciona bem se for possível prever precisamente a demanda  Modelo Pull  Unir pessoas e recursos onde e quando necessário  Busca de um equilíbrio dinâmico Plataformas de Software
  • 15.
    Por que Plataformas? Ladopositivo:  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 15Plataformas de Software
  • 16.
    Por que Plataformas? Plataformasmuitas vezes foram, antes, produtos bem sucedidos …ou serviram de diferencial para turbinar o sucesso 16Plataformas de Software
  • 17.
    Por que Plataformas? Exemplosde Plataformas Atuais Plataformas de Software 17
  • 18.
    Por que Plataformas? Exemplosde Plataformas Atuais Plataformas de Software 18
  • 19.
    Por que Plataformas? Exemplosde Plataformas Atuais 19
  • 20.
  • 21.
  • 22.
  • 23.
    Níveis de Plataformas 23 •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
  • 24.
    Por que Plataformas? Bonsprogramas são modulares  Cada módulo deve ter uma API Camadas 24 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
  • 25.
  • 26.
    Como Projetar Plataformas? PrimeiroPasso: Identificar Oportunidade  Meu produto interessa para outro desenvolvedor?  Como posso fazer que meu produto seja interessante para outros sites ou serviços online? Plataformas de Software 26
  • 27.
    Como Projetar Plataformas? Umaboa 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 27Plataformas de Software Quase impossível de se alcançar no início
  • 28.
    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) 28Plataformas de Software
  • 29.
    Como Projetar Plataformas? Osdois lados do projeto de uma Plataforma (produtor x consumidor) 29
  • 30.
    Como Projetar Plataformas? Oque fazer?  Comece com o projeto de quais são as APIs necessárias  No início, poucas APIs com os serviços essenciais  Para cada API, comece o projeto dos serviços  Liste os requisitos  Escreva os casos de uso • Mantenha o limite de uma página  Escreva código para cada Caso de Uso Plataformas de Software 30
  • 31.
    Como Projetar Plataformas? Lembrarde projetar tanto do seu ponto de vista quanto do consumidor/usuário Plataformas de Software 31
  • 32.
    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 32
  • 33.
    Como Projetar Plataformas? “Documentaçãode 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 33
  • 34.
    Como Projetar Plataformas? Tratamentode Exceção  Encaminhar para o consumidor dos serviços as exceções - quando impossível de tratar internamente Plataformas de Software 34
  • 35.
    Como Projetar Plataformas? Cuidadocom “envelopamento de plataforma” Plataformas de Software 35 Sua plataforma Plataforma / Software “daninho”
  • 36.
  • 37.
    Material de Apoio GilmarP.S. Leitão. Projeto de API (SlideShare) MIT Platform Strategy Summit – August 2014  http://platforms.mit.edu Plataformas de Software 37
  • 38.
  • 39.
  • 40.
    Rodrigo Quites Reis(LABES-UFPA) quites@ufpa.br IV Semana Acadêmica da Faculdade de Computação Outubro / 2015 Plataformas de Software Estes slides estão no SlideShare