Palestra Plataformas de Software

36
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

description

Palestra introdutória sobre o tema plataformas de software (desenvolvimento)

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