Palestra Plataformas de Software
-
Upload
rodrigo-quites-reis -
Category
Documents
-
view
214 -
download
0
description
Transcript of Palestra Plataformas de Software
-
Rodrigo Quites Reis (UFPA) [email protected]
Outubro / 2014
Uma introduo ao Projeto de Plataformas (ou Ecosistemas) de Software
O qu, Por qu, Como
Plataformas de Software
-
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
Rodrigo Quites Reis
Plataformas de Software
-
Agenda
Projeto de Plataformas de Software O qu? Por que? Como?
Material de Apoio
3 Plataformas de Software
-
O que uma Plataforma de Software?
4 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, .
q Exemplos de usos (consumo) de APIs: Inmeros!
5 Plataformas de Software Denio 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 prprias aplicaes e servios que acessam dados do Facebook. (Wikipedia, 2014)
Lanado em Maio de 2007 APIs:
q Graph API q Authentication q Social plugins q Facebook Connect ou Log in with Facebook q
6
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
7
API 1 API 2 API N
meuApp
-
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
8 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, )
9 Plataformas de Software
-
Plataformas em diferentes contextos
10 Plataformas de Software
-
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
11 Plataformas de Software
-
Por que Plataformas?
12 Plataformas de Software
-
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
13 Plataformas de Software
-
Por que Plataformas?
14
Mudana de Paradigma de Negcios Modelo Push
q 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
Modelo Pull q Unir pessoas e recursos onde e quando necessrio q Busca de um equilbrio dinmico
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 dbitos da empresa Pode resultar em muitas chamadas ao suporte tcnico
15 Plataformas de Software
-
Por que Plataformas?
Plataformas muitas vezes foram, antes, produtos bem sucedidos
ou serviram de diferencial para turbinar o sucesso
16 Plataformas 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
-
Nveis de Plataformas
20
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 I (agregar)
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 II (socializar)
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 III (mobilizar)
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: World of Warcraft
Nvel IV (aprender)
(John Hagel, 2014) Plataformas de Software
-
Por que Plataformas?
Bons programas so modulares Cada mdulo deve ter uma API Camadas
21
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
-
Como Projetar Plataformas?
Plataformas de Software 22
-
Como Projetar Plataformas?
Primeiro Passo: Identicar 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 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 Fcil de estender Fcil de ler e manter o cdigo que a usa Focada em um propsito Poderosa o bastante para atender os requisitos Apropriada e direcionada a um pblico Bem documentada
24 Plataformas de Software
Quase impossvel de se alcanar no
incio
-
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)
25 Plataformas de Software
-
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 q Liste os requisitos q Escreva os casos de uso
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
Plataformas de Software 32
Sua plataforma
Plataforma / Software daninho
-
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