SlideShare une entreprise Scribd logo
1  sur  40
Rodrigo Quites Reis (LABES-UFPA)
quites@ufpa.br
IV Semana Acadêmica da Faculdade de Computação
Outubro / 2015
Plataformas de Software
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
Agenda
Projeto de Plataformas de Software
 O quê?
 Por que?
 Como?
Material de Apoio
3Plataformas de Software
O que é uma Plataforma de
Software?
4Plataformas de Software
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
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
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
…
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
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
Plataformas em diferentes
contextos
10Plataformas de Software
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
Por que Plataformas?
12Plataformas de Software
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
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
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
Por que Plataformas?
Plataformas muitas vezes foram, antes,
produtos bem sucedidos
…ou serviram de diferencial para turbinar o
sucesso
16Plataformas 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
Plataformas de Software 20
Plataformas de Software 21
Plataformas de Software 22
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
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
Como Projetar Plataformas?
Plataformas de Software 25
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
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
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
Como Projetar Plataformas?
Os dois lados do projeto de uma Plataforma
(produtor x consumidor)
29
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
Como Projetar Plataformas?
Lembrar de projetar tanto do seu ponto de
vista quanto do consumidor/usuário
Plataformas de Software 31
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
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
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
Como Projetar Plataformas?
Cuidado com “envelopamento de
plataforma”
Plataformas de Software 35
Sua plataforma
Plataforma / Software “daninho”
Material de Apoio
Plataformas de Software 36
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
Material de Apoio
Plataformas de Software 38
Material de Apoio
Plataformas de Software 39
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

Contenu connexe

Similaire à Projeto de Plataformas de Software

Modelos de negocio em Open Source
Modelos de negocio em Open SourceModelos de negocio em Open Source
Modelos de negocio em Open SourceCezar Taurion
 
Mercado de trabalho para Desenvolvedores de Sistemas
Mercado de trabalho para Desenvolvedores de SistemasMercado de trabalho para Desenvolvedores de Sistemas
Mercado de trabalho para Desenvolvedores de SistemasIvan Sanches
 
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
 
Sistemas de Informações Gerenciais - Aula4
Sistemas de Informações Gerenciais - Aula4Sistemas de Informações Gerenciais - Aula4
Sistemas de Informações Gerenciais - Aula4Leandro Rezende
 
Jukebox Webpanel Datasul
Jukebox Webpanel DatasulJukebox Webpanel Datasul
Jukebox Webpanel Datasuldatasul20
 
Jukebox Webpanel
Jukebox WebpanelJukebox Webpanel
Jukebox Webpanelguesta3ecbb
 
Planejamento de produtos digitais - 1
Planejamento de produtos digitais - 1Planejamento de produtos digitais - 1
Planejamento de produtos digitais - 1Jornalismo Digital
 
ICPD_2011_2012
ICPD_2011_2012ICPD_2011_2012
ICPD_2011_2012Rui Raposo
 
Relatório Semestral PIBITIVOL 2011 - Izabella Rezende
Relatório Semestral PIBITIVOL 2011 - Izabella RezendeRelatório Semestral PIBITIVOL 2011 - Izabella Rezende
Relatório Semestral PIBITIVOL 2011 - Izabella RezendeIzabella Rezende
 
Izabella Relatório Semetral PIBITIVOL
Izabella Relatório Semetral PIBITIVOLIzabella Relatório Semetral PIBITIVOL
Izabella Relatório Semetral PIBITIVOLIzabella Rezende
 
Disciplina Gerencia de Projetos - Prof. Rogerio P C do Nascimento, PhD
Disciplina Gerencia de Projetos - Prof. Rogerio P C do Nascimento, PhDDisciplina Gerencia de Projetos - Prof. Rogerio P C do Nascimento, PhD
Disciplina Gerencia de Projetos - Prof. Rogerio P C do Nascimento, PhDRogerio P C do Nascimento
 
Portais Corporativos - Planejamento e Levantamento de Necessidades
Portais Corporativos - Planejamento e Levantamento de NecessidadesPortais Corporativos - Planejamento e Levantamento de Necessidades
Portais Corporativos - Planejamento e Levantamento de NecessidadesThiago Macedo
 
A proteção jurídica do programa de computador: ótica da empresa
A proteção jurídica do programa de computador: ótica da empresaA proteção jurídica do programa de computador: ótica da empresa
A proteção jurídica do programa de computador: ótica da empresaCEST
 
Palestra "Usabilidade: conceito, aplicações e testes" de Renato Rosa
Palestra "Usabilidade: conceito, aplicações e testes" de Renato RosaPalestra "Usabilidade: conceito, aplicações e testes" de Renato Rosa
Palestra "Usabilidade: conceito, aplicações e testes" de Renato Rosawudrs
 
Liferay Portugal UG Meetup 2018 09-12 - Slides
Liferay Portugal UG Meetup 2018 09-12 - Slides Liferay Portugal UG Meetup 2018 09-12 - Slides
Liferay Portugal UG Meetup 2018 09-12 - Slides Fernando Fernández
 
Aula 1. Introdução: Interface Homem-Máquina
Aula 1. Introdução: Interface Homem-MáquinaAula 1. Introdução: Interface Homem-Máquina
Aula 1. Introdução: Interface Homem-MáquinaSilvia Dotta
 
Modelos de Negócio com Software Livre e como ganhar dinheiro com isso
Modelos de Negócio com Software Livre e como ganhar dinheiro com issoModelos de Negócio com Software Livre e como ganhar dinheiro com isso
Modelos de Negócio com Software Livre e como ganhar dinheiro com issoLuiz Henrique Rauber Rodrigues
 
Plataforma OpenSuite
Plataforma OpenSuitePlataforma OpenSuite
Plataforma OpenSuiteStart4up
 

Similaire à Projeto de Plataformas de Software (20)

Negócios em FLOSS
Negócios em FLOSSNegócios em FLOSS
Negócios em FLOSS
 
Modelos de negocio em Open Source
Modelos de negocio em Open SourceModelos de negocio em Open Source
Modelos de negocio em Open Source
 
Mercado de trabalho para Desenvolvedores de Sistemas
Mercado de trabalho para Desenvolvedores de SistemasMercado de trabalho para Desenvolvedores de Sistemas
Mercado de trabalho para Desenvolvedores de Sistemas
 
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
 
Sistemas de Informações Gerenciais - Aula4
Sistemas de Informações Gerenciais - Aula4Sistemas de Informações Gerenciais - Aula4
Sistemas de Informações Gerenciais - Aula4
 
Jukebox Webpanel Datasul
Jukebox Webpanel DatasulJukebox Webpanel Datasul
Jukebox Webpanel Datasul
 
Jukebox Webpanel
Jukebox WebpanelJukebox Webpanel
Jukebox Webpanel
 
Planejamento de produtos digitais - 1
Planejamento de produtos digitais - 1Planejamento de produtos digitais - 1
Planejamento de produtos digitais - 1
 
ICPD_2011_2012
ICPD_2011_2012ICPD_2011_2012
ICPD_2011_2012
 
Relatório Semestral PIBITIVOL 2011 - Izabella Rezende
Relatório Semestral PIBITIVOL 2011 - Izabella RezendeRelatório Semestral PIBITIVOL 2011 - Izabella Rezende
Relatório Semestral PIBITIVOL 2011 - Izabella Rezende
 
Izabella Relatório Semetral PIBITIVOL
Izabella Relatório Semetral PIBITIVOLIzabella Relatório Semetral PIBITIVOL
Izabella Relatório Semetral PIBITIVOL
 
Disciplina Gerencia de Projetos - Prof. Rogerio P C do Nascimento, PhD
Disciplina Gerencia de Projetos - Prof. Rogerio P C do Nascimento, PhDDisciplina Gerencia de Projetos - Prof. Rogerio P C do Nascimento, PhD
Disciplina Gerencia de Projetos - Prof. Rogerio P C do Nascimento, PhD
 
Portais Corporativos - Planejamento e Levantamento de Necessidades
Portais Corporativos - Planejamento e Levantamento de NecessidadesPortais Corporativos - Planejamento e Levantamento de Necessidades
Portais Corporativos - Planejamento e Levantamento de Necessidades
 
A proteção jurídica do programa de computador: ótica da empresa
A proteção jurídica do programa de computador: ótica da empresaA proteção jurídica do programa de computador: ótica da empresa
A proteção jurídica do programa de computador: ótica da empresa
 
Palestra "Usabilidade: conceito, aplicações e testes" de Renato Rosa
Palestra "Usabilidade: conceito, aplicações e testes" de Renato RosaPalestra "Usabilidade: conceito, aplicações e testes" de Renato Rosa
Palestra "Usabilidade: conceito, aplicações e testes" de Renato Rosa
 
Liferay Portugal UG Meetup 2018 09-12 - Slides
Liferay Portugal UG Meetup 2018 09-12 - Slides Liferay Portugal UG Meetup 2018 09-12 - Slides
Liferay Portugal UG Meetup 2018 09-12 - Slides
 
Desenvolvimento mobile
Desenvolvimento mobileDesenvolvimento mobile
Desenvolvimento mobile
 
Aula 1. Introdução: Interface Homem-Máquina
Aula 1. Introdução: Interface Homem-MáquinaAula 1. Introdução: Interface Homem-Máquina
Aula 1. Introdução: Interface Homem-Máquina
 
Modelos de Negócio com Software Livre e como ganhar dinheiro com isso
Modelos de Negócio com Software Livre e como ganhar dinheiro com issoModelos de Negócio com Software Livre e como ganhar dinheiro com isso
Modelos de Negócio com Software Livre e como ganhar dinheiro com isso
 
Plataforma OpenSuite
Plataforma OpenSuitePlataforma OpenSuite
Plataforma OpenSuite
 

Projeto de Plataformas de Software

  • 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
  • 3. Agenda Projeto de Plataformas de Software  O quê?  Por que?  Como? Material de Apoio 3Plataformas 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
  • 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
  • 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
  • 29. Como Projetar Plataformas? Os dois lados do projeto de uma Plataforma (produtor x consumidor) 29
  • 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
  • 31. Como Projetar Plataformas? Lembrar de projetar tanto do seu ponto de vista quanto do consumidor/usuário Plataformas de Software 31
  • 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