Rodrigo Quites Reis apresentou sobre plataformas de software na IV Semana Acadêmica da Faculdade de Computação da UFPA em outubro de 2015. Ele definiu plataformas de software, explicou por que são importantes, e discutiu como projetá-las, incluindo a necessidade de considerar tanto os produtores quanto os consumidores. O documento forneceu exemplos atuais de plataformas e materiais de apoio sobre o assunto.
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ó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
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 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
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, …)
9Plataformas de Software
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
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ç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
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
15Plataformas de Software
16. Por que Plataformas?
Plataformas muitas vezes foram, antes,
produtos bem sucedidos
…ou serviram de diferencial para turbinar o
sucesso
16Plataformas de Software
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?
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
26. 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
27. 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
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
30. 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
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çã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
34. 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
35. Como Projetar Plataformas?
Cuidado com “envelopamento de
plataforma”
Plataformas de Software 35
Sua plataforma
Plataforma / Software “daninho”
37. 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
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