SlideShare uma empresa Scribd logo
1 de 36
Baixar para ler offline
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
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
Agenda 
Ø Projeto 
de 
Plataformas 
de 
Software 
§ O 
quê? 
§ Por 
que? 
§ Como? 
Ø Material 
de 
Apoio 
Plataformas 
de 
Software 
3
O 
que 
é 
uma 
Plataforma 
de 
Software? 
Plataformas 
de 
Software 
4
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
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
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 
…
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
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
Plataformas 
em 
diferentes 
contextos 
Plataformas 
de 
Software 
10
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
Por 
que 
Plataformas? 
Plataformas 
de 
Software 
12
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
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
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
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
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
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
Como 
Projetar 
Plataformas? 
Plataformas 
de 
Software 
22
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
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
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
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 
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
Como 
Projetar 
Plataformas? 
Ø Lembrar 
de 
projetar 
tanto 
do 
seu 
ponto 
de 
vista 
quanto 
do 
consumidor/usuário 
Plataformas 
de 
Software 
28
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
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
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
Como 
Projetar 
Plataformas? 
Ø Cuidado 
com 
“envelopamento 
de 
plataforma” 
Plataforma 
/ 
Software 
“daninho” 
Plataformas 
de 
Software 
32 
Sua 
plataforma
Material 
de 
Apoio 
Plataformas 
de 
Software 
33
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
Material 
de 
Apoio 
Plataformas 
de 
Software 
35
Material 
de 
Apoio 
Plataformas 
de 
Software 
36

Mais conteúdo relacionado

Mais procurados

Aula 03.2 - Algoritmos, Diagramas de Blocos e Fluxograma
Aula 03.2 - Algoritmos, Diagramas de Blocos e FluxogramaAula 03.2 - Algoritmos, Diagramas de Blocos e Fluxograma
Aula 03.2 - Algoritmos, Diagramas de Blocos e FluxogramaMessias Batista
 
Descrição formal de Casos de Uso
Descrição formal de Casos de UsoDescrição formal de Casos de Uso
Descrição formal de Casos de UsoNatanael Simões
 
PLC and Industrial Automation - Technology Overview
PLC and Industrial Automation - Technology OverviewPLC and Industrial Automation - Technology Overview
PLC and Industrial Automation - Technology OverviewNereus Fernandes
 
INTRODUCTION TO MICROCONTROLLER
INTRODUCTION TO MICROCONTROLLERINTRODUCTION TO MICROCONTROLLER
INTRODUCTION TO MICROCONTROLLERAnkita Jaiswal
 
FactoryTalk View SE - Building a Better View
FactoryTalk View SE -  Building a Better ViewFactoryTalk View SE -  Building a Better View
FactoryTalk View SE - Building a Better ViewTony Carrara
 
Unit 1 Introduction to Embedded computing and ARM processor
Unit 1 Introduction to Embedded computing and ARM processorUnit 1 Introduction to Embedded computing and ARM processor
Unit 1 Introduction to Embedded computing and ARM processorVenkat Ramanan C
 
Embedded networking
Embedded networkingEmbedded networking
Embedded networkingArul Kumar
 
Naučimo se modeliranja poslovnih procesov z BPMN
Naučimo se modeliranja poslovnih procesov z BPMNNaučimo se modeliranja poslovnih procesov z BPMN
Naučimo se modeliranja poslovnih procesov z BPMNGregor Polančič
 
Gerenciamento de Memoria
Gerenciamento de MemoriaGerenciamento de Memoria
Gerenciamento de Memoriaaudineisilva1
 
Software engineering : Layered Architecture
Software engineering : Layered ArchitectureSoftware engineering : Layered Architecture
Software engineering : Layered ArchitectureMuhammed Afsal Villan
 
Introduction to PLC
Introduction to PLCIntroduction to PLC
Introduction to PLCVeerakumar S
 
ARM 32-bit Microcontroller Cortex-M3 introduction
ARM 32-bit Microcontroller Cortex-M3 introductionARM 32-bit Microcontroller Cortex-M3 introduction
ARM 32-bit Microcontroller Cortex-M3 introductionanand hd
 
Programação Orientada a objetos em Java
Programação Orientada a objetos em JavaProgramação Orientada a objetos em Java
Programação Orientada a objetos em JavaDenis L Presciliano
 

Mais procurados (20)

Aula 03.2 - Algoritmos, Diagramas de Blocos e Fluxograma
Aula 03.2 - Algoritmos, Diagramas de Blocos e FluxogramaAula 03.2 - Algoritmos, Diagramas de Blocos e Fluxograma
Aula 03.2 - Algoritmos, Diagramas de Blocos e Fluxograma
 
Descrição formal de Casos de Uso
Descrição formal de Casos de UsoDescrição formal de Casos de Uso
Descrição formal de Casos de Uso
 
air craft Pitch
air craft Pitchair craft Pitch
air craft Pitch
 
PLC and Industrial Automation - Technology Overview
PLC and Industrial Automation - Technology OverviewPLC and Industrial Automation - Technology Overview
PLC and Industrial Automation - Technology Overview
 
INTRODUCTION TO MICROCONTROLLER
INTRODUCTION TO MICROCONTROLLERINTRODUCTION TO MICROCONTROLLER
INTRODUCTION TO MICROCONTROLLER
 
Plc Simulation Examples
Plc Simulation ExamplesPlc Simulation Examples
Plc Simulation Examples
 
Incremental model
Incremental modelIncremental model
Incremental model
 
FactoryTalk View SE - Building a Better View
FactoryTalk View SE -  Building a Better ViewFactoryTalk View SE -  Building a Better View
FactoryTalk View SE - Building a Better View
 
waterfall model
waterfall modelwaterfall model
waterfall model
 
Unit 1 Introduction to Embedded computing and ARM processor
Unit 1 Introduction to Embedded computing and ARM processorUnit 1 Introduction to Embedded computing and ARM processor
Unit 1 Introduction to Embedded computing and ARM processor
 
Embedded networking
Embedded networkingEmbedded networking
Embedded networking
 
Naučimo se modeliranja poslovnih procesov z BPMN
Naučimo se modeliranja poslovnih procesov z BPMNNaučimo se modeliranja poslovnih procesov z BPMN
Naučimo se modeliranja poslovnih procesov z BPMN
 
Gerenciamento de Memoria
Gerenciamento de MemoriaGerenciamento de Memoria
Gerenciamento de Memoria
 
Software engineering : Layered Architecture
Software engineering : Layered ArchitectureSoftware engineering : Layered Architecture
Software engineering : Layered Architecture
 
Introduction to PLC
Introduction to PLCIntroduction to PLC
Introduction to PLC
 
Software Evolution
Software EvolutionSoftware Evolution
Software Evolution
 
AUToSAR introduction
AUToSAR introductionAUToSAR introduction
AUToSAR introduction
 
ARM 32-bit Microcontroller Cortex-M3 introduction
ARM 32-bit Microcontroller Cortex-M3 introductionARM 32-bit Microcontroller Cortex-M3 introduction
ARM 32-bit Microcontroller Cortex-M3 introduction
 
RTOS Basic Concepts
RTOS Basic ConceptsRTOS Basic Concepts
RTOS Basic Concepts
 
Programação Orientada a objetos em Java
Programação Orientada a objetos em JavaProgramação Orientada a objetos em Java
Programação Orientada a objetos em Java
 

Semelhante a Introdução às Plataformas de Software

Palestra plataformas software
Palestra plataformas softwarePalestra plataformas software
Palestra plataformas softwareRodrigo Reis
 
Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016
Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016
Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016Leonardo Turbiani
 
Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...
Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...
Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...Ambiente Livre
 
O que move a web atualmente?
O que move a web atualmente?O que move a web atualmente?
O que move a web atualmente?Fabio Janiszevski
 
Arte e Tecnologia - Artes Visuais - 2013
Arte e Tecnologia - Artes Visuais - 2013Arte e Tecnologia - Artes Visuais - 2013
Arte e Tecnologia - Artes Visuais - 2013tecampinasoeste
 
Lidando com Equipes de Desenvolvimento
Lidando com Equipes de DesenvolvimentoLidando com Equipes de Desenvolvimento
Lidando com Equipes de Desenvolvimento4Soft
 
Workshop: Ouvindo usuários e stakeholders
Workshop: Ouvindo usuários e stakeholdersWorkshop: Ouvindo usuários e stakeholders
Workshop: Ouvindo usuários e stakeholdersNeue Labs
 
Desenvolvendo Windows Store Apps
Desenvolvendo Windows Store AppsDesenvolvendo Windows Store Apps
Desenvolvendo Windows Store AppsThiago Coelho
 
Desenvolvendo Produtos sobre a Plataforma Pentaho
Desenvolvendo Produtos sobre a Plataforma PentahoDesenvolvendo Produtos sobre a Plataforma Pentaho
Desenvolvendo Produtos sobre a Plataforma PentahoPentahoBrasil
 
Palestra: Desenvolvendo Produtos sobre a Plataforma Pentaho - Pentaho Day 2013
Palestra: Desenvolvendo Produtos sobre a Plataforma Pentaho - Pentaho Day 2013Palestra: Desenvolvendo Produtos sobre a Plataforma Pentaho - Pentaho Day 2013
Palestra: Desenvolvendo Produtos sobre a Plataforma Pentaho - Pentaho Day 2013Marcio Junior Vieira
 
Desenvolvendo Produtos sobre a Plataforma Pentaho
Desenvolvendo Produtos sobre a Plataforma PentahoDesenvolvendo Produtos sobre a Plataforma Pentaho
Desenvolvendo Produtos sobre a Plataforma PentahoAmbiente Livre
 
A Experiência como Vantagem Competitiva (UX) - Goiânia 2014
A Experiência como Vantagem Competitiva (UX) - Goiânia 2014A Experiência como Vantagem Competitiva (UX) - Goiânia 2014
A Experiência como Vantagem Competitiva (UX) - Goiânia 2014Horácio Soares
 
Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...
Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...
Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...Caio Moreno
 
Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...
Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...
Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...IT4biz IT Solutions
 
Plataforma para Apresentação de Eventos Online
Plataforma para Apresentação de Eventos OnlinePlataforma para Apresentação de Eventos Online
Plataforma para Apresentação de Eventos OnlineJoelson Abreu
 
Prototipagem Em Papel
Prototipagem Em PapelPrototipagem Em Papel
Prototipagem Em Papelelliando dias
 

Semelhante a Introdução às Plataformas de Software (20)

Palestra plataformas software
Palestra plataformas softwarePalestra plataformas software
Palestra plataformas software
 
Negócios em FLOSS
Negócios em FLOSSNegócios em FLOSS
Negócios em FLOSS
 
Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016
Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016
Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016
 
Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...
Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...
Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...
 
O que move a web atualmente?
O que move a web atualmente?O que move a web atualmente?
O que move a web atualmente?
 
Carreira de dev
Carreira de devCarreira de dev
Carreira de dev
 
Arte e Tecnologia - Artes Visuais - 2013
Arte e Tecnologia - Artes Visuais - 2013Arte e Tecnologia - Artes Visuais - 2013
Arte e Tecnologia - Artes Visuais - 2013
 
Intro web cms
Intro web cmsIntro web cms
Intro web cms
 
3 apres pb_g4
3 apres pb_g43 apres pb_g4
3 apres pb_g4
 
Lidando com Equipes de Desenvolvimento
Lidando com Equipes de DesenvolvimentoLidando com Equipes de Desenvolvimento
Lidando com Equipes de Desenvolvimento
 
Workshop: Ouvindo usuários e stakeholders
Workshop: Ouvindo usuários e stakeholdersWorkshop: Ouvindo usuários e stakeholders
Workshop: Ouvindo usuários e stakeholders
 
Desenvolvendo Windows Store Apps
Desenvolvendo Windows Store AppsDesenvolvendo Windows Store Apps
Desenvolvendo Windows Store Apps
 
Desenvolvendo Produtos sobre a Plataforma Pentaho
Desenvolvendo Produtos sobre a Plataforma PentahoDesenvolvendo Produtos sobre a Plataforma Pentaho
Desenvolvendo Produtos sobre a Plataforma Pentaho
 
Palestra: Desenvolvendo Produtos sobre a Plataforma Pentaho - Pentaho Day 2013
Palestra: Desenvolvendo Produtos sobre a Plataforma Pentaho - Pentaho Day 2013Palestra: Desenvolvendo Produtos sobre a Plataforma Pentaho - Pentaho Day 2013
Palestra: Desenvolvendo Produtos sobre a Plataforma Pentaho - Pentaho Day 2013
 
Desenvolvendo Produtos sobre a Plataforma Pentaho
Desenvolvendo Produtos sobre a Plataforma PentahoDesenvolvendo Produtos sobre a Plataforma Pentaho
Desenvolvendo Produtos sobre a Plataforma Pentaho
 
A Experiência como Vantagem Competitiva (UX) - Goiânia 2014
A Experiência como Vantagem Competitiva (UX) - Goiânia 2014A Experiência como Vantagem Competitiva (UX) - Goiânia 2014
A Experiência como Vantagem Competitiva (UX) - Goiânia 2014
 
Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...
Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...
Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...
 
Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...
Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...
Pentaho: Inteligência de Negócios utilizando Software Livre - FliSOL São Paul...
 
Plataforma para Apresentação de Eventos Online
Plataforma para Apresentação de Eventos OnlinePlataforma para Apresentação de Eventos Online
Plataforma para Apresentação de Eventos Online
 
Prototipagem Em Papel
Prototipagem Em PapelPrototipagem Em Papel
Prototipagem Em Papel
 

Introdução às Plataformas de Software

  • 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
  • 10. Plataformas em diferentes contextos Plataformas 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 Plataformas de Software 11
  • 12. Por que Plataformas? Plataformas 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 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
  • 19. Por que Plataformas? Ø Exemplos de Plataformas Atuais 19
  • 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
  • 22. Como Projetar Plataformas? Plataformas de Software 22
  • 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
  • 26. Como Projetar Plataformas? Ø Os dois lados do projeto de uma Plataforma (produtor x consumidor) 26
  • 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
  • 33. Material de Apoio Plataformas de Software 33
  • 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
  • 35. Material de Apoio Plataformas de Software 35
  • 36. Material de Apoio Plataformas de Software 36