Este documento introduz o conceito de plataformas de software, discutindo o que é uma plataforma, por que são importantes e como projetá-las. Uma plataforma é definida como um ambiente de software que permite que terceiros criem aplicações acessando dados através de APIs. Plataformas são importantes pois permitem maior velocidade de desenvolvimento e mudam o paradigma de negócios para um modelo pull. Para projetar uma plataforma, deve-se identificar oportunidades, focar inicialmente em poucas APIs essenciais e consider
1. Uma
introdução
ao
Projeto
de
Plataformas
(ou
Ecosistemas)
de
Software
O
quê,
Por
quê,
Como
Rodrigo
Quites
Reis
(UFPA)
quites@ufpa.br
Outubro
/
2014
Plataformas
de
Software
2. Rodrigo
Quites
Reis
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
Plataformas
de
Software
3. Agenda
Ø Projeto
de
Plataformas
de
Software
§ O
quê?
§ Por
que?
§ Como?
Ø Material
de
Apoio
Plataformas
de
Software
3
4. O
que
é
uma
Plataforma
de
Software?
Plataformas
de
Software
4
5. 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!
Plataformas
de
Software
5
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:
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
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
meuApp
API
1
API
2
API
N
…
8. 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
Plataformas
de
Software
8
9. 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,
…)
Plataformas
de
Software
9
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
Plataformas
de
Software
11
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
q Não
é
causada
somente
pela
tecnologia
Plataformas
de
Software
13
14. 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
15. 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
Plataformas
de
Software
15
16. Por
que
Plataformas?
Ø Plataformas
muitas
vezes
foram,
antes,
produtos
bem
sucedidos
Ø …ou
serviram
de
diferencial
para
turbinar
o
sucesso
Plataformas
de
Software
16
17. Por
que
Plataformas?
Ø Exemplos
de
Plataformas
Atuais
Plataformas
de
Software
17
18. Por
que
Plataformas?
Ø Exemplos
de
Plataformas
Atuais
Plataformas
de
Software
18
20. 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
21. 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
23. Como
Projetar
Plataformas?
Ø Primeiro
Passo:
Identificar
Oportunidade
§ Meu
produto
i n t e r e s sa
para
outro
desenvolvedor?
§ Como
posso
fazer
que
meu
produto
seja
interessante
para
outros
sites
ou
serviços
online?
Plataformas
de
Software
23
24. 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
Plataformas
de
Software
24
Quase
impossível
de
se
alcançar
no
início
25. 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)
Plataformas
de
Software
25
27. 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
28. Como
Projetar
Plataformas?
Ø Lembrar
de
projetar
tanto
do
seu
ponto
de
vista
quanto
do
consumidor/usuário
Plataformas
de
Software
28
29. 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
30. 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
31. 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
32. Como
Projetar
Plataformas?
Ø Cuidado
com
“envelopamento
de
plataforma”
Plataforma
/
Software
“daninho”
Plataformas
de
Software
32
Sua
plataforma
34. 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