Você está na página 1de 36

Uma

introduo 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

Rodrigo Quites Reis


Coordenador do Laboratrio de Engenharia de Software da UFPA

Coordenador de Informao e Prospeco Tecnolgica da Secretaria
de Estado de Cincia, Tecnologia e Inovao (SECTI)

Bacharel (1994, UFPA), Mestre (1998, UFRGS) e Doutor (2002,
UFRGS) em Cincia da Computao

Plataformas de Software

Agenda
Projeto de Plataformas de Software
O qu?
Por que?
Como?

Material de Apoio

Plataformas de Software

O que uma Plataforma de


Software?

Plataformas de Software

O que uma Plataforma de


Software?
Primeiro Conceito

API Application Programming Interface


q

Uma coleo de funes, classes, tipos de dados,


eventos, protocolos, arquivos, etc

Com as APIs, os aplicativos conversam uns com os


outros sem conhecimento ou interveno dos
usurios.
q

Exemplos de APIs comerciais:

Google Maps, Facebook, Twitter, .

Exemplos de usos (consumo) de APIs:


Inmeros!

Denio para plataforma a caminho


Plataformas de Software

O que uma Plataforma de


Software?
Facebook Platform

A plataforma Facebook um ambiente de


software para permitir que terceiros criem suas
prprias aplicaes e servios que acessam dados
do Facebook. (Wikipedia, 2014)
Lanado em Maio de 2007
APIs:
q
q
q
q
q

Graph API
Authentication
Social plugins
Facebook Connect ou Log in with Facebook

Denio para plataforma a caminho


Plataformas de Software

O que uma Plataforma de


Software?
Na prtica, o que queremos usar as APIs
existentes para desenvolver nossa aplicao
com:
Maior velocidade de desenvolvimento
Menor complexidade

meuApp
API 1

API 2

API N
7

Diferena entre Produto e


Plataforma
Produto:
Vida isolada
Consome recursos fornecidos pelo S.O.,
Linguagens de Programao e APIs externas
Somente quem desenvolveu consegue agregar
novas funcionalidades

Plataformas de Software

Diferena entre Produto e


Plataforma
Plataforma:

Uma plataforma deve fornecer uma funo ou


servio til e permitir acesso de terceiros atravs
de APIs

Obs: aqui estamos interessados em plataformas de


alto nvel e que no estejam presas a hardware
especco (ex: iOS, Android, Xbox, )
Plataformas de Software

Plataformas em diferentes
contextos

Plataformas de Software

10

Plataformas em diferentes
contextos
Plataformas automotivas (Ford):

Uma arquitetura comum (ex: sequncia de montagem,


congurao para solda, interfaces de sistemas, etc)
A denio de interfaces para mdulos
Um conjunto de pontos comuns usados por uma
variao de produtos que compartilham a plataforma e
os processos fabris

Plataformas de Software

11

Por que Plataformas?

Plataformas de Software

12

Por que Plataformas?


H uma mudana no comportamento (EUA)

A quantidade de linhas telefnicas ativas est


decaindo
Banda larga mvel > Banda larga xa
5 milhes cancelaram a tv por assinatura no ltimo
ano
Hotis no so mais o alvo preferencial para se
hospedar em viagens

Estas mudanas no comportamento so


causadas por fatores scio-econmicos
q

No causada somente pela tecnologia


Plataformas de Software

13

Por que Plataformas?


Mudana de Paradigma de Negcios
Modelo Push
Baseado na existncia de uma previso de demanda
q Prev que as pessoas certas e os recursos certos
estaro disponveis nos lugares e momentos certos
q Funciona bem se for possvel prever precisamente a
demanda
q

Modelo Pull
Unir pessoas e recursos onde e quando necessrio
q Busca de um equilbrio dinmico
q

Plataformas de Software

14

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 dbitos da empresa
Pode resultar em muitas chamadas ao suporte
tcnico
Plataformas de Software

15

Por que Plataformas?


Plataformas muitas vezes foram, antes,
produtos bem sucedidos
ou serviram de diferencial para turbinar o
sucesso

Plataformas de Software

16

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

Nveis de Plataformas
Nvel I
(agregar)

Agregao de recursos em um nico ponto de acesso


Baseadas em transaes
Encontrar uma resposta para pergunta, encontrar um comprador
Exemplos: Mercado Livre, Google

Nvel II
(socializar)

Agregam pessoas e funcionam como uma rede Mesh.


Fogem do conceito de transaes para relacionamentos, os quais
persistem no tempo.
Usurios com histrico prossional semelhante, vnculo afetivo, vnculo
familiar
Exemplos: Twitter, Facebook, LinkedIn

Nvel III
(mobilizar)

Juntam participantes no apenas para relacionamento mas para


alcanar um objetivo comum.
Plataformas de processo que mobilizam pessoas para desenvolver
plataformas de negcio
Exemplos: plataformas para desenvolvedores

Nvel IV
(aprender)

Plataformas que aprendem.


Aceleram o aprendizado e performance dos participantes.
Pessoas se agregam em equipes, times, grupos
Usurio pode acessar os recursos disponveis em toda a plataforma
Exemplo: Plataformas
World of Warcraft
de Software

(John Hagel, 2014)

20

Por que Plataformas?


Bons programas so modulares
Cada mdulo deve ter uma API
Camadas
A'key'lesson'here'is'that
API'is'not'just a'documented
class.'' And,'APIs'dont
just'happen;' they'area
big'investment."'

Erich Gamma

Plataformas de Software

21

Como Projetar Plataformas?

Plataformas de Software

22

Como Projetar Plataformas?


Primeiro Passo: Identicar Oportunidade
M e u p r o d u 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 servios
online?

Plataformas de Software

23

Como Projetar Plataformas?


Uma boa plataforma / API deve ser:

Fcil de aprender
Fcil de usar, mesmo sem documentao
Difcil de usar incorretamente
Quase
Fcil de estender impossvel de
se alcanar no
Fcil de ler e manter
o incio
cdigo que a usa
Focada em um propsito
Poderosa o bastante para atender os requisitos
Apropriada e direcionada a um pblico
Bem documentada
Plataformas de Software

24

Como Projetar Plataformas?


Ns no construmos plataformas. Ns as
evolumos e
Uma plataforma perfeita no existe! (Ming Zeng
Alibaba, 2014)
Falhe cedo, falhe barato, falhe sempre
Mantra da Inovao gil

Software Sucientemente Bom

(Yourdon, 1997 Decline and Fall of the American


Programmer)
Plataformas de Software

25

Como Projetar Plataformas?


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

26

Como Projetar Plataformas?


O que fazer?
Comece com o projeto de quais so as APIs
necessrias
q

No incio, poucas APIs com os servios essenciais

Para cada API, comece o projeto dos servios


Liste os requisitos
q Escreva os casos de uso
q

Mantenha o limite de uma pgina


q

Escreva cdigo para cada Caso de Uso


Plataformas de Software

27

Como Projetar Plataformas?


Lembrar de projetar tanto do seu ponto de
vista quanto do consumidor/usurio

Plataformas de Software

28

Como Projetar Plataformas?


API deve ser o mais simples possvel, mas
no simplria
API deve ser to pequena quanto possvel,
mas no a menor
Escolha bons nomes para os servios
(pronunciveis e memorveis)
(Leito, 2014)
Plataformas de Software

29

Como Projetar Plataformas?


Documentao de Referncia
JavaDoc e Similares

Tutorias
Como comear rapidamente e fazer algo de valor
O que eu posso fazer em 2 minutos

Guia do Programador
Introduo, glossrio, conceitos, padres, etc
Excees !
(Leito, 2014)

Plataformas de Software

30

Como Projetar Plataformas?


Tratamento de Exceo
Encaminhar para o consumidor dos servios as
excees - quando impossvel de tratar
internamente

Plataformas de Software

31

Como Projetar Plataformas?


Cuidado com envelopamento de
plataforma
Plataforma / Software daninho
Sua plataforma

Plataformas de Software

32

Material de Apoio

Plataformas de Software

33

Material de Apoio
Gilmar P.S. Leito. Projeto de API
(SlideShare)
MIT Platform Strategy Summit August
2014
http://platforms.mit.edu

Plataformas de Software

34

Material de Apoio

Plataformas de Software

35

Material de Apoio

Plataformas de Software

36

Você também pode gostar