Introdução ao Projeto de Plataformas de Software: o quê, por que, como
-
Upload
rodrigo-reis -
Category
Technology
-
view
202 -
download
0
description
Transcript of Introdução ao Projeto de Plataformas de Software: o quê, por que, como
Rodrigo Quites Reis (UFPA) [email protected]
Outubro / 2014
Uma introdução ao Projeto de Plataformas (ou Ecosistemas) de Software
O quê, Por quê, Como
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
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 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!
5 Plataformas 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:
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
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
8 Plataformas 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, …)
9 Plataformas de Software
Plataformas em diferentes contextos
10 Plataformas 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
11 Plataformas de Software
Por que Plataformas?
12 Plataformas 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
q Não é causada somente pela tecnologia
13 Plataformas de Software
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
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
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 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 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
24 Plataformas 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)
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 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”
Plataformas de Software 32
Sua plataforma
Plataforma / Software “daninho”
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