BR102014019318A2 - sistema para a busca de aplicativos de software, método para a busca de aplicativos de software e método para a busca de aplicativos - Google Patents

sistema para a busca de aplicativos de software, método para a busca de aplicativos de software e método para a busca de aplicativos Download PDF

Info

Publication number
BR102014019318A2
BR102014019318A2 BR102014019318A BR102014019318A BR102014019318A2 BR 102014019318 A2 BR102014019318 A2 BR 102014019318A2 BR 102014019318 A BR102014019318 A BR 102014019318A BR 102014019318 A BR102014019318 A BR 102014019318A BR 102014019318 A2 BR102014019318 A2 BR 102014019318A2
Authority
BR
Brazil
Prior art keywords
application
software applications
app
data
server
Prior art date
Application number
BR102014019318A
Other languages
English (en)
Inventor
Hsiu-Ping Lin
Jii Jen Wu
Original Assignee
Fiiser Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fiiser Inc filed Critical Fiiser Inc
Publication of BR102014019318A2 publication Critical patent/BR102014019318A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/60Subscription-based services using application servers or record carriers, e.g. SIM application toolkits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2101Auditing as a secondary aspect
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W88/00Devices specially adapted for wireless communication networks, e.g. terminals, base stations or access point devices
    • H04W88/18Service support devices; Network management devices
    • H04W88/182Network node acting on behalf of an other network entity, e.g. proxy

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Stored Programmes (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

sistema para a busca de aplicativos de software, método para a busca de aplicativos de software e método para a busca de aplicativos. um método para a busca de aplicativos de software (ou apps) é provido. no método, um ou mais aplicativos de software são agendados para execução de acordo com uma apólice de agendamento. os um ou mais aplicativos de software são executados de acordo com a apólice de agendamento. dados de aplicativo dos um ou mais aplicativos de software são coletados. os dados de aplicativo coletados são armazenados. uma consulta é recebida. os dados de aplicativo armazenados são buscados. informações sobre aplicativos de software cujos correspondentes dados de aplicativo armazenados relevantes para a consulta do aplicativo são transmitidas.

Description

SISTEMA PARA A BUSCA DE APLICATIVOS DE SOFTWARE, MÉTODO PARA A BUSCA DE APLICATIVOS DE SOFTWARE E MÉTODO PARA A
BUSCA DE APLICATIVOS CAMPO TÉCNICO
[0001] A presente invenção refere-se a aplicativos de software. Particularmente, a presente invenção refere-se aos sistemas e métodos de prover serviços de instrumento de busca para localizar os aplicativos de software desejados.
FUNDAMENTOS DA INVENÇÃO
[0002] Instrumentos de busca são ferramentas importantes para as pessoas buscarem informações online. Além disso, aplicativos móveis (doravante designados como "app ou apps") tornaram-se populares devido ao uso difundido de smartphones. Hoje, apps são pré-carregados em dispositivos móveis ou baixados da Internet. Plataformas de distribuição de aplicativos tais como "APP store" da Apple, "Google Play" do Google ou "bao.myapp.com" da Tencent (doravante designadas como "lojas de apps") permitem aos usuários navegar e baixar aplicativos de seus interesses. Um app store normalmente organiza apps em categorias e prove utilitários de busca convencionais para que usuários possam encontrar apps desejados pela pesquisa de palavra-chave. Tal utilitário de busca convencional em uma loja de apps procura num título e descrição de um app, que geralmente são preparados pelo desenvolvedor do app, por uma correspondência com a palavra-chave(s) digitada pelo usuário. Algumas lojas de App ainda provem interfaces web, tais como "Editar Aplicativo" no Google Play e "Gerenciar Seus aplicativos" na App Store da Apple, para os desenvolvedores carregarem e editarem os títulos e descrições de seus aplicativos.
[0003] Quando um aplicativo é instalado e rodado, gera dados (doravante designados como "dados de aplicativo") que podem ser de natureza dinâmica, além de dados estáticos (como o título ou descrição dos apps), Especificamente, quando um app está rodando em um dispositivo móvel, o app gera dados de aplicativo, dependendo de vários gatilhos, tais como mas não limitado ao comportamento do usuário do app. Por exemplo, se um usuário quiser verificar a previsão do tempo usando um app de tempo, o usuário pode inserir seu local de escolha na interface do aplicativo. O app de tempo irá entregar os dados de aplicativo relevantes, neste caso a previsão parar o local do usuário. Em outras palavras, dados de aplicativos podem ser dinâmicos com base na operação do usuário no aplicativo, e podem também ser originários de um ou mais servidores de aplicativo associados com o app ou criados pelo próprio app.
[0004] Como indicado acima, utilitários de busca convencionais encontrados nas Lojas de Apps limitam-se à busca de palavra-chave dos dados estáticos. O escopo da busca não se estende para os dados de aplicativo. Em outras palavras, utilitários de busca convencionais podem não buscar "em" um arquivo de pacote de aplicativo relativo ao app (por exemplo, um arquivo apk ou um arquivo, ipa), e também não podem buscar nos dados de aplicativo gerados depois que o arquivo de pacote de aplicativo esteja sendo ou já tenha sido executado no dispositivo eletrônico de um usuário. Isso significa que dados de aplicativo gerados pelo app em resposta à entrada de um usuário do app podem nunca ser encontrados ou buscados por outro usuário que pode achar essas informações valiosas.
BREVE RESUMO
[0005] Um sistema para a busca de aplicativos de software (ou apps) é divulgado. O sistema inclui um ou mais aplicativos de software, um ou mais servidores, um ou mais agendadores, um ou mais bancos de dados, um ou mais programas de computador e um ou mais instrumentos de busca. O um ou mais servidores são configurados para executar o um ou mais aplicativos de software. Os um ou mais agendadores são configurados para agendar os um ou mais servidores para executar os um ou mais aplicativos de software de acordo com uma apólice de agendamemto. Os um ou mais programas de computador estão configurados para coletar dados de aplicativo dos um ou mais aplicativos de software e para armazenar os dados de aplicativo coletados no um ou mais bancos de dados. Os um ou mais instrumentos de busca são configurados para prover serviços de busca para a busca de aplicativos de software usando os dados de aplicativo coletados e armazenados nos um ou mais bancos de dados.
[0006] Um método para a busca de aplicativos de software (ou apps) é divulgado. No método, um ou mais aplicativos de software são agendados para execução de acordo com uma apólice de agendamento. Os um ou mais aplicativos de software são executados de acordo com a apólice de agendamento. São coletados dados de aplicativo dos um ou mais aplicativos de software. Os dados coletados do aplicativo são armazenados. Uma consulta é recebida. Os dados coletados do aplicativo são buscados. Informações sobre aplicativos de software cujos correspondentes dados de aplicativo armazenados relevantes para a consulta do aplicativo são transmitidas.
[0007] É provido um método para a busca de aplicativos. No método, pelo menos um aplicativo de software é agendado para execução de acordo com uma apólice de agendamento. O pelo menos um aplicativo de software é executado. Dados de aplicativos do pelo menos um aplicativo de software, de um módulo de colheita de dados juntamente com pelo menos um aplicativo de software e/ou de um servidor de aplicativo, juntamente com o pelo menos um aplicativo de software são coletados. Os dados coletados do aplicativo são armazenados. Uma consulta é recebida. Os dados coletados do aplicativo são buscados. Informações sobre aplicativos de software cujos correspondentes dados de aplicativo armazenados são relevantes para a consulta do aplicativo são transmitidas.
[0008] É provido um método para a busca de aplicativos. No método, dados de aplicativo de aplicativos de software dos um ou mais servidores de aplicativos são coletados. Os dados recolhidos são armazenados. Uma consulta é recebida. Os dados recolhidos são buscados. Informações sobre aplicativos de software cujos correspondentes dados de aplicativo coletados são relevantes para a consulta do aplicativo são transmitidas.
BREVE DESCRIÇÃO DOS VÁRIOS PONTOS DE VISTA DOS DESENHOS
[0009] O resumo acima mencionado» bem como a seguinte descrição detalhada da invenção, serão melhor compreendidos quando lidos em conjunto com os desenhos acrescentados. Com o propósito de ilustrar a invenção, algumas modalidades preferenciais são mostradas nos desenhos. Deve ser entendido, no entanto, que a presente invenção não é limitada aos arranjos precisos e instrumentalidades mostrados. Nos desenhos: [0010] FIG. 1 é um diagrama conceituai ilustrando um sistema em rede para a busca de aplicativos com base em dados de aplicativo de acordo com uma modalidade da presente invenção;
[0011] FIG. 2 é um diagrama ilustrando um sistema em rede para a busca de apps com base em dados de aplicativo de acordo com uma modalidade da presente invenção;
[0012] FÍGS. 3A e 3B são diagramas ilustrando estruturas de dados de acordo com uma modalidade da presente invenção;
[0013] FIGS. 3C e 3D são diagramas ilustrando estruturas de dados de uma tabela lógica e uma fileira dela de acordo com uma modalidade da presente invenção;
[0014] FIG. 4A é um diagrama ilustrando um sistema em rede para a busca de apps com base em dados de aplicativo de acordo com uma modalidade da presente invenção;
[0015] FIG. 4B é um diagrama ilustrando um sistema em rede para a busca de apps com base em dados de aplicativo de acordo com uma modalidade da presente invenção;
[0016] FIG, 4C é um diagrama ilustrando um sistema em rede para a busca de apps com base em dados de aplicativo de acordo com uma modalidade da presente invenção;
[0017] FIG. 4D é um diagrama ilustrando um sistema em rede para a busca de apps com base em dados de aplicativo de acordo com uma modalidade da presente invenção;
[0018] FIG. 4E é um diagrama ilustrando um sistema com framework de colheita de dados de acordo com uma modalidade da presente invenção;
[0019] FIG. 4F é um diagrama ilustrando um sistema incluindo um proxy recolhedor de dados colocado entre um servidor e uma rede para procura e/ou armazenamento temporário de dados de acordo com uma modalidade da presente invenção;
[0020] FIG. 4G é um diagrama ilustrando um sistema incluindo um invólucro usado em um servidor para envolver cada app com uma interface de programação de aplicativos (API) de dispositivo para rodar de acordo com uma modalidade da presente invenção;
[0021] FIG. 4H é um diagrama ilustrando um sistema incluindo um módulo hipervisor para ajudar as máquinas virtuais de um servidor a executarem apps de acordo com uma modalidade da presente invenção;
[0022] FIG. 4I é um diagrama ilustrando um sistema incluindo um módulo robô, integrando um script, um terceiro módulo, um segundo módulo e um primeiro módulo mostrado na FIG. 4A de acordo com uma modalidade da presente invenção;
[0023] FIG. 4H é um diagrama ilustrando um sistema incluindo um agendador para facilitar a execução de apps de acordo com uma modalidade da presente invenção;
[0024] FIG. 4K é um diagrama que ilustra um sistema incluindo um módulo de verificação de segurança de app para verificar seguranças de aplicativos de software ou de apps acordo com uma modalidade da invenção atual [0025] FIGS. 5A a 5E são diagramas ilustrando as interfaces de usuário exemplares de um app de acordo com uma modalidade da presente invenção;
[0026] FIGS. 6A a 8C são diagramas ilustrando as interfaces de usuário exemplares providas por instrumentos de busca de aplicativos de acordo com uma modalidade da presente invenção;
[0027] FIGS. 7A - 7H ilustram modalidades exemplares de um sistema da presente invenção utilizando uma máquina virtual única ou máquinas virtuais múltiplas para executar um ou mais aplicativos;
[0028] FIG. 8A ilustra um diagrama do conceito OS para um módulo de colheita de dados em procurar ou interceptar os dados de aplicativo a partir de chamadas do sistema no nível de usuário [0029] FIG. 8B ilustra um diagrama do conceito OS para um módulo de colheita de dados em procurar ou interceptar os dados de aplicativo a partir de chamadas do sistema no nível de kernel [0030] FIG. 9A e FIG. 9B ilustram exemplos de uso dos proxies mostrados nas FIGS. 7A - 7H para realizarem a tarefa de um módulo de colheita de dados;
[0031] FIG. 9C ilustra um fluxograma simplificado de um módulo de colheita de dados ou os proxies mostrados nas FIGS. 7A - 7H em buscar ou interceptar dados/conteúdos relacionados a um app de acordo com uma modalidade [0032] FIG. 9D ilustra um fluxograma simplificado de um agendador de acordo com uma modalidade; e [0033] FIG. 9E ilustra um fluxograma simplificado de um gerenciador de máquina virtual de acordo com uma modalidade.
DESCRICÃQ DETALHADA
[0034] Será agora feita referência em detalhe aos exemplos da invenção, que são ilustrados nos desenhos que acompanham. Sempre que possível, os mesmos números de referência serão usados em todos os desenhos para se referir aos mesmos ou partes similares.
[0035] FIG. 1 é um diagrama conceituai ilustrando um sistema de acordo com um exemplo da presente invenção. O sistema pode incluir um agregado de servidores 100 (ou uma nuvem), servidores de aplicativos 200, um primeiro usuário 10 e um segundo usuário 20, cada um dos quais pode se comunicar uns com os outros através de uma rede 30, que pode ser, mas não está limitada à Internet ou uma rede de celular. Neste exemplo, o agregado de servidores pode incluir uma pluralidade de servidores (por exemplo, servidores 100a - 100d mostrados na FIG. 1), cada um dos quais é configurado para realizar pelo menos uma parte das tarefas, processos ou etapas da presente invenção, separadamente, em sequência, em paralelo ou uma combinação desses para melhorar a eficiência do sistema. Um servidor do agregado de servidores 100 pode incluir, mas não está limitado a um processador, uma memória, uma porta de comunicação e um dispositivo de armazenamento, incluindo um banco de dados. Um exemplo de agregado de servidores pode ser descrito com referência à FIG. 2.
[0036] Em referência às FIGS. 1, 4A e 4B, o servidor 100a é configurado como um servidor de aplicativo web (doravante o "servidor de aplicativo web 100a") que se acopla ao servidor 100b (doravante "servidor de instrumento de busca de aplicativo 100b") para servir o primeiro usuário 10 e o segundo usuário 20. A principal função do servidor de aplicativo web 100a é prover utilitários relacionados à web para os usuários. Por exemplo, interfaces web que permitem aos usuários entrar com solicitações de busca são providas pelo servidor de aplicativo web 100a. A principal função de um servidor de instrumento de busca de aplicativo 100b é prover utilitários relacionados à web para os usuários. Observe que dados de aplicativos podem incluir, mas não estão limitados a caracteres, atributos, descrições, números de série, identificadores, estatísticas, registros históricos, hiperlinks, caminhos de arquivo, áudio, vídeo, qualquer outra informação em formatos pesquisáveis e qualquer combinação destes.
[0037] O servidor de aplicativo vveb 100a pode prover (ou fazer com que um navegador da web mostre) um campo de busca ou um botão de busca 502 em uma tela 131 do primeiro usuário 10 ou em uma tela de 231 do segundo usuário 20 para permitir acessos para os utilitários de busca providos pelo servidor de instrumento de busca de aplicativo 100b. Um usuário pode inserir uma consulta através do campo de busca para iniciar uma busca. Pessoas versadas na técnica entendem que a consulta neste exemplo pode ser sob a forma de uma ou mais palavras-chave, imagens, fluxos de vídeo, áudio ou uma combinação destes. Por exemplo, um usuário pode inserir uma palavra-chave no campo de pesquisa 502 digitando uma ou mais palavras ou pronunciando uma ou mais palavras. Em outro exemplo, o usuário pode pressionar o botão de busca 502 para enviar consultas em formato de imagem, vídeo ou áudio.
[0038] Ver a FIG. 4A, um aplicativo pode ser instalado no servidor de instrumento de busca de aplicativo 100b ou primeiro usuário 10. Quando o app é instalado, ativado e rodado/operado (doravante designados juntos como "executado"), o app pode gerar dados de aplicativo, dependendo de como o aplicativo é operado. Os dados de aplicativo podem ser providos por um servidor de aplicativo 200 ou gerados pelo próprio aplicativo. O Servidor de instrumento de busca de aplicativo 100b subsequentemente coleta esses dados de aplicativo.
[0039] Ver a FIG. 4F, um proxy recolhedor de dados 610 pode ser usado entre um servidor (por exemplo, servidor de instrumento de busca de aplicativo 100b) e a rede 30 para procurar e/ou armazenar em cache os dados de aplicativo de acordo com uma modalidade da presente invenção. Se o proxy recolhedor de dados 610 recebe uma busca de dados do segundo usuário 20, ele pode pesquisar na sua memória cache local de dados de aplicativo salvos anteriormente por uma correspondência. Se uma correspondência for encontrada, o proxy recolhedor de dados 610 pode retornar os dados para o segundo usuário 20 sem a necessidade de encaminhar a solicitação para servidor de instrumento de busca de aplicativo 100b.
[0040J Ver as FIGS, 1 e 4A, dados de aplicativos podem ser armazenados em um banco de dados no servidor de aplicativo web 100a ou servidor de instrumento de busca de aplicativo 100b, como mostrado nas FIGS. 2 e 4A. Os dados de aplicativo podem ser armazenados como cadeia(s) ou código(s) binário(s) no banco de dados. Os dados coletados de aplicativo podem ser gerenciados, acessados ou consultados pelo servidor de aplicativo web 100a ou o servidor de instrumento de busca de aplicativo 100b com linguagens de programação tais como SQL, C, C++ ou outras ferramentas de gerenciamento de dados. Em um exemplo, a(s) cadeia(s) ou o(s) código(s) binários no banco de dados podem ser buscados baseados em uma consulta. Em outro exemplo, pedaços de dados armazenados no banco de dados podem ser associados a uma ou mais chaves únicas (por exemplo, uma chave primária), e partes específicas de dados podem ser localizados pela pesquisa de chaves. Antes de serem armazenados em um banco de dados, os dados de aplicativo podem primeiro ser organizados em uma pluralidade de categorias onde cada categoria está relacionada a uma pluralidade de palavras-chave (por exemplo, palavras-chave como "hotel" e "alojamento" estão associadas com a categoria "viagens"). Dados pertencentes à mesma categoria podem ser armazenados e vinculados a um grupo de chaves, tendo, por exemplo, números sequenciais ou relacionados (ou tendo números específicos, tais como números todos pares ou todos ímpares, todos começando/terminando com um número como "1", "2", etc., ou uma específica parte/dígito de todos os números são "1", "2", etc.). Quando o servidor de instrumento de busca de aplicativo 100b busca por dados de aplicativos relativos a uma determinada consulta, as chaves associadas com a pluralidade de palavras-chave que correspondem a essa determinada consulta podem ser selecionadas primeiro. Posteriormente, os dados de aplicativo no banco de dados que corresponde com as chaves selecionadas são procurados por relevância à consulta. Observe que os dados de aplicativo coletados podem ser armazenados e buscados por meio de outras tecnologias de instrumentos de busca. Em um exemplo, os dados de aplicativo podem ser armazenados em uma tabela lógica (por exemplo, BigTable) ou um sistema de arquivos do Hadoop (HFS) no framework do Hadoop. FIG. 3C é uma tabela lógica 3000. FIG. 3D ilustra uma fileira 320 da tabela lógica 3000. Aqui, dados de aplicativos podem ser armazenados em tablets 320-324 em um sistema de arquivos replicados que é acessível por todos os servidores de tablet (não mostrados, por exemplo, todos os servidores de tablet BigTable). Quaisquer alterações nos tablets são gravadas em um registro de transação que é armazenado em um sistema de arquivo compartilhado. Neste exemplo, os tablets 320-324 armazenam dados imutavelmente (isto é, uma vez que os dados são escritos na tabela lógica 3000, não mudam nunca mais). Em outro exemplo, para permitir atualizações, novos dados podem ser armazenados na RAM, Considerando que os dados mais antigos são armazenados em uma série de arquivos na tabela lógica 3000.
[0041] Outro exemplo (referindo-se às FiGS. 1 e 4B), os dados de aplicativo podem ser armazenados em um banco de dados independente 888'. O banco de dados 888' pode ser gerenciado pelo servidor de aplicativo web 100a ou pelo servidor de instrumento de busca de aplicativo 100b com linguagens de programação tais como SQL, C, C++, ou as outras línguas ou ferramentas de gerência de dados. Os dados de aplicativo armazenados no banco de dados 888' podem ser buscados pelo servidor de instrumento de busca de aplicativo 100b.
[0042] Pessoas versadas na técnica entendem que o servidor de aplicativo web 100a ou o servidor de instrumento de busca de aplicativo 100b podem por si só prover as funções de busca acima referidas. Por conseguinte, aplicativo da web e a função de busca não precisam ser implementados em dois servidores separados. Além disso, essas funções também podem ser implementadas através de PaaS, iaaS ou SaaS.
[0043] Em outro exemplo (referindo-se a FIG. 1), o agregado de servidores 100 pode adicionalmente incluir um servidor 100 c (doravante o "servidor de gerenciamento de banco de dados 100C") configurado para funcionar tanto como um primeiro banco de dados, quanto para realizar serviços de gerenciamento de banco de dados para um segundo banco de dados (não mostrado) que se acopla ao servidor 100 C e é usado para armazenar dados de aplicativo. Por exemplo, o segundo banco de dados pode existir em uma rede de área de armazenamento (SAN) e o servidor de gerenciamento de banco de dados 100c pode controlar o segundo banco de dados na SAN. Os dados de aplicativo armazenados no primeiro ou segundo banco de dados podem ser gerenciados por linguagem de programação, tais como SQL, C, C++ ou outras ferramentas de gerenciamento de dados (ou seja, o primeiro ou o segundo banco de dados pode ser controlado e acessado pelo servidor de gerenciamento de banco de dados 100 c quando o servidor de gerenciamento de banco de dados 100 c realiza o método da presente invenção).
[0044] Em outro exemplo, se os dados de aplicativo são uma imagem, um vídeo, um arquivo de voz/áudio ou texto, eles podem ser armazenados em um dispositivo de armazenamento (não mostrado) do servidor de aplicativo da web 100a, um dispositivo de armazenamento 19 do servidor de instrumento de busca de aplicativo 100b (Ver FIG. 2), um dispositivo de armazenamento (não mostrado) do servidor 100 c (Ver FIG. 1), ou um dispositivo de armazenamento 19 acoplado ao servidor 100a ou 100b ou 100c (Ver FIG. 4B). Um nome de arquivo , título, descrição ou âncora correspondente (ver por exempio, FIG.3A ou 3B) de tais dados pode ser armazenado como uma(s) cadeia(s) no banco de dados do servidor de aplicativo da web 100a, no banco de dados do servidor de instrumento de busca de aplicativo 100b ou no referido primeiro banco de dados ou o segundo banco de dados para permitir a busca.
[0045J Em um exemplo, cada cadeia(s) correspondente à imagem, vídeo, arquivos de voz/áudio ou texto também pode ter um caminho de arquivo armazenado no banco de dados para indicar a localização dos dados. Por exemplo, o agregado de servidores 100 pode adicionalmente incluir um servidor 100d (doravante o "servidor de gerenciamento de arquivos 100d”, Ver FIG. 1) que pode acoplar com os servidores 100a, 100b ou 100c e realizar serviços de gerenciamento de arquivos. Um arquivo com sua(s) cadeia(s) correspondendo com a palavra-chave será apresentado como um resultado de busca. O arquivo é recuperado através de um caminho correspondente a sua(s) cadeia(s) quando a(s) cadeia(s) correspondendo com a palavra-chave for(em) encontrada(s) no banco de dados.
[0046] Pessoas versadas na técnica entendem que o(s) servidor(es) 100a, 100b e/ou 100 c também pode(m) realizar serviços de gerenciamento de arquivo para o armazenamento (ou NAS).
[0047] Em outro exemplo, uma pluralidade de servidores são configurados para trabalhar em paralelo para se igualarem ao agregado de servidores 100 para prestar serviços a uma grande quantidade de clientes em uma rede. Aqui, dispositivos de armazenamento e bancos de dados acoplados ao(s) servidor(es) acima referidos também poderiam ser igualados.
[0048] Além disso, o tráfego de dados em ou serviços prestados pelos servidores 100a, 100b, 100c e 100d podem ser controlados por um módulo ou servidor de balanceamento de carga (não mostrado). Uma pessoa versada na técnica entende que o(s) método(s) da presente invenção não é(são) limitado(s) ao número de servidores no agregado de servidores 100.
[0049] Em outro exemplo, um servidor único é configurado para realizar todas as tarefas e processos do lado de servidor da rede, como mostrado na FIG. 1. Tal servidor único pode substituir o agregado de servidores 100, se a quantidade de dados de aplicativo é pequena e as tarefas necessárias a serem rodadas pelo servidor são simples.
[0050] Também é possível que os servidores de 100a a 100d possam trocar seus papéis dinamicamente. Os servidores no agregado de servidores 100 podem trocar a(s) tarefa(s), processo(s) ou etapa(s) entre si e ainda manter a integridade do sistema.
[0051] O primeiro usuário 10 pode executar quaisquer aplicativos rodando em um dispositivo de computação para solicitar dados de aplicativo do servidor de aplicativo relevantes ou nuvem. O dispositivo de computação pode ser, mas não se limita a um smart-phone 10a, um tablet (ou um "pad") 10b (referidos coletivamente como dispositivos móveis), um lapíop 10c ou um computador pessoal 10D, uma televisão inteligente, um console de jogos de TV, um computador de carro ou um gravador de condução. Similarmente, um segundo usuário 20 pode operar os mesmos apps em um dispositivo de computação, conforme descrito acima. Uma pessoa versada na técnica entende que não é necessário ter um humano para operar os apps para se obter dados de aplicativo. Uma máquina, programa ou robô configurado para executar automaticamente os aplicativos também é possível.
[0052] FIG. 2 ilustra um sistema com um servidor de instrumento de busca de aplicativo 100b, o servidor de aplicativo 200, um primeiro usuário 10 e um segundo usuário 20. Servidor de instrumento de busca de aplicativo 100b pode incluir, mas não está limitado a uma memória 12, um caminho de dados 14, um controlador de memória 16, uma porta de comunicação 17, um processador 18 e um dispositivo de armazenamento 19. Em um exemplo, o dispositivo de armazenamento 19 pode incluir um banco de dados, 888. Observe que o banco de dados 888 ou o dispositivo de armazenamento 19 também pode ser configurado para existir fora do sistema do servidor mas se acopla com servidor de instrumento de busca de aplicativo 100b. 10053] O primeiro usuário 10 ou o segundo usuário 20 cada um inclui uma memória 139 ou 239, um módulo de caminho 160 ou 260, um módulo controlador 137 ou 237, um processador 135 ou 235, um dispositivo de armazenamento 118 ou 218, um periférico 134 ou 234, um AGPS (sistema de posicionamento global assistido) de memória 132 ou 232, um módulo RF (radiofrequência) de dados 140 ou 240, um sistema l/O 133 ou 233, incluindo um controlador de exibição 133a ou 233a e um controlador de entrada 133b ou 233b, uma tela 131 ou 231 incluindo uma interface de usuário 131a ou 231a e uma entrada ou dispositivo 138 ou 238. Em um exemplo, o dispositivo de armazenamento 118 ou 218 pode incluir um meio legível a computadores 118a ou 218a respectivamente. Em outro exemplo, o dispositivo de armazenamento 118 ou 218 também pode ser tratado como um meio legível a computadores.
[0054] A máquina virtual é uma implementação de software de um ambiente de computação em que um sistema operacional ou programa pode ser instalado e rodado. A máquina virtual tipicamente emula um ambiente de computação físico, mas pedidos por memória de CPU , disco rígido, rede e outros recursos de hardware são gerenciados por uma camada de virtualização que traduz esses pedidos para o hardware físico subjacente. Máquinas virtuais são criadas dentro de uma camada de virtualização, tais como um hipervisor ou uma plataforma de virtualização que roda em cima de um cliente ou servidor de sistema operacional. Este sistema operacional é conhecido como o OS hospedeiro. A camada de virtualização pode ser usada para criar muitos ambientes de máquinas virtuais individuais, isolados . Máquinas virtuais podem proporcionar inúmeras vantagens sobre a instalação de OS's e sistemas de software diretamente no hardware físico. Isolamento assegura que aplicativos e serviços que rodam dentro de uma máquina virtual não podem interferir com o OS hospedeiro ou outras máquinas virtuais. Máquinas virtuais podem também ser facilmente movidas, copiadas e re-atribuídas entre servidores hospedeiros para otimizar a utilização de recursos de hardware.
[0055] Apps podem ser executados pelo primeiro usuário 10 para gerar dados de aplicativo. Apps também podem ser executados em servidores ou máquinas virtuais do sistema da presente invenção para gerar dados de aplicativo. Como apps podem ser específicos para o sistema de operacional, ou seja, determinados apps só podem ser executados em um tipo específico de OS, é essencial que essa informação específica de OS para um determinado app seja reconhecida para que o aplicativo seja executado com êxito. Em um exemplo, o servidor (por exemplo, servidor de instrumento de busca de aplicativo 100b) pode obter as informações específicas de sistema operacional dos apps, para que o sistema da presente invenção saiba em qual ambiente os aplicativos devem ser executados.
[0056] Em outro exemplo, como exemplificado na FIG. 4G, um envoltório 630 pode ser utilizado adicionalmente pelo servidor (por exemplo, servidor de instrumento de busca de aplicativo 100b) para envolver cada app (ou apk de app) com uma interface de programação de aplicativos (API) de dispositivo para rodar. Com a ajuda do API de dispositivo para rodar, o servidor pode obter as informações específicas de sistema operacional dos apps, para que o sistema da presente invenção saiba em qual ambiente os aplicativos devem ser executados.
[0057] Em outro exemplo, o API de dispositivo para rodar pode ser utilizado diretamente para ajudar uma ou mais máquinas virtuais do servidora obterem as informações específicas de sistema operacional dos apps, para que o sistema da presente invenção saiba em qual ambiente os devem ser executados.
[0058] Em outro exemplo, como exemplificado na FIG. 4H, um módulo hipervisor 640 pode ser utilizado pelo servidor (por exemplo, servidor de instrumento de busca de aplicativo 100b) para controlar o número de máquinas virtuais executando os apps. Por exemplo, o módulo hipervisor 640 pode gerar, excluir, ativar ou desativar as máquinas virtuais. O módulo hipervisor 640 pode atuar como uma ferramenta administrativa que gerencia os recursos das máquinas virtuais para que os apps possam ser executados efetivamente.
[0059] Em outro exemplo, o módulo hipervisor 640 é uma máquina virtual baseada em kernel (KVM), e a KVM é configurada para rodar simultaneamente várias máquinas virtuais com sistemas operacionais diferentes sem alterar os arquivos de imagem do sistema operacional. Com a ajuda do KVM, ambientes personalizados rodando com diferentes sistemas operacionais (em máquinas virtuais diferentes) podem ser providos simultaneamente.
[0060] Os dados de aplicativo podem ser providos por um servidor de aplicativo 200 ou pelo próprio aplicativo. Os dados de aplicativo são armazenados no banco de dados 888. O segundo usuário 20 pode realizar uma busca através de uma interface de usuário 231a. Servidor de instrumento de busca de aplicativo 100b pode conduzir a busca e transmitir o resultado da busca para o segundo usuário 20.
[0061] Pessoas versadas na técnica entendem que os elementos, módulos ou dispositivos descritos nos sistemas acima podem ser integrados em um módulo ou em um único chip. Além disso, o sistema de servidor no servidor de instrumento de busca de aplicativo 100b, o primeiro usuário 10 e o segundo usuário 20 podem se acoplar uns aos outros pela Internet 30. Além disso, sistema(s) de servidor no servidor 100a, 100c ou 100d também pode(m) incluir os mesmos elementos, módulos ou dispositivos como os mostrados na FIG, 2.
Banco de dados [0062] FIG. 3A e 3B ilustram estruturas de dados exemplares do banco de dados 888 ou 888' de acordo com um exemplo da presente invenção. Neste exemplo, o banco de dados 888 ou 888’ é um banco de dados relacionai. Referindo-se à FIG. 3A, a estrutura de dados inclui mas não se limita a um primeiro campo 300-1 para armazenar o nome de um app 1, um segundo campo 300-2 para armazenar o ID de aplicativo usado para identificar o app 1, um terceiro campo 300-3 para armazenar o nome do arquivo ou o nome de um pacote de aplicativo do aplicativo 1, um quarto campo 300-4 para armazenar a localização do app 1, um quinto campo 300-5 para armazenar o ID do conteúdo da lista, um sexto campo 300-6 para armazenar o número de downloads para o app 1 ou um sétimo campo300-7 para armazenar o número de curtidas (likes) para o app 1. Além disso, FIG. 3B representa uma das estruturas de dados exemplares para ID de lista conteúdo armazenado em 300-5 referida na FIG. 3A. pessoas versadas na técnica entendem que alguns campos mostrados nas FIGS. 3A e 3B são opcionais.
[0063] em outro exemplo, a estrutura de dados no banco de dados 888 ou 888' pode ser implementada como uma tabela lógica 3000 ou e HFS ilustrada nas FIGS. 3C e/ou 3D, em que cada dado no HFS ou na tabela lógica 3000 são um par de valor-chave (ou um par de dados-chave, onde, por exemplo, o nome do App, "App de Joseph," pode ser a chave para os dados na FIG. 3D).
Instrumento de busca de aplicativos [0064] FIG. 4A ilustra um sistema para a busca de dados de aplicativo de acordo com um exemplo da presente invenção. Referindo-se à FIG. 4a, o sistema pode incluir servidor de instrumento de busca de aplicativo 100b, o primeiro usuário 10 e o servidor de aplicativo 200. O servidor de aplicativo 200 pode se comunicar com o app 1 para prover dados dinâmicos e/ou em tempo real, além de dados estáticos. Neste exemplo, servidor de instrumento de busca de aplicativo 100b inclui uma máquina virtual 400, um aplicativo web 500, um instrumento de busca do aplicativo 600 e o dispositivo de armazenamento 19. A máquina virtual 400 é um sistema operacional (OS) simulando ambiente capaz de ser hospedeiro de aplicativos. Em outras palavras, apps podem ser executados na máquina virtual 400 da mesma maneira que eles são executados em um dispositivo móvel.
[0065] Em outro exemplo, uma abordagem puramente de máquina também pode ser aplicada para ser hospedeira de apps no servidor 100b ou 100e. Ao aplicar a abordagem puramente de máquina, um programa (não mostrado) configurado como uma interface entre o servidor 100b ou 100e e os aplicativos hospedados podem ser usado para traduzir chamadas do sistema dos apps hospedados em códigos de máquina e alimentar diretamente os códigos de máquina para o servidor 100b ou 100e para lidar com todas as comunicações entre o servidor 100b ou 100e (ou o servidor de app 200) e os aplicativos hospedados (por exemplo enviando um pedido, recebendo dados de aplicativo, etc.).
[0066] Em um exemplo, um pacote de aplicativo para o app 1 pode ser baixado do servidor de aplicativo 200 ou outros locais de dados (não mostrados, por exemplo, uma loja/mercado de aplicativos tais como o "APP Store" ou o "Google Play") que armazenam o pacote de aplicativo ou podem prover um link de download relacionado com o pacote de aplicativo.
[0067] Em um exemplo, a máquina virtual 400 pode incluir um primeiro módulo (ou programa) 402 configurado para instalar um pacote de aplicativo na máquina virtual 400. Aqui, a máquina virtual 400 pode adicionalmente incluir um segundo módulo (ou programa) 404 configurado para executar o app 1. O segundo módulo 404 pode executar continuamente ou periodicamente o app 1. Em um exemplo, se mais do que um apps estão rodando na máquina virtual 400, o segundo módulo ou programa 404 pode executar todos os apps ou seqüenciaimente, em aleatório, ou em paralelo, dependendo das apólices e regras definidas no segundo módulo 404.
[0068] Em um outro exemplo, a máquina virtual 400 pode adicionalmente incluir um terceiro módulo (ou programa) 406 configurado para analisar o app 1 executado. Este módulo determina como o app 1 se comunica com o servidor de aplicativo 200. Por exemplo, o terceiro módulo 406 pode inspecionar as diferentes funções que o app 1 oferece e como tais funções podem ser executadas para solicitar dados de aplicativo do servidor de aplicativo correspondente 200. Na sequência de tal análise, um script (405) pode ser programado para automaticamente e sistematicamente executar o app 1 para gerar dados de aplicativo.
[0069] FIGS. 5A-5E são interfaces de usuário exemplares para o app 1. Neste exemplo, o aplicativo 1 prove uma função para solicitar dados do seu servidor de aplicativo 200 associado quando o(s) item(ns) (por exemplo, 90-1) é(são) tocado(s) ou clicado(s), como mostrado na FIG. 5B. Aqui, o terceiro módulo 406 pode analisar a Interface do usuário para determinar os locais e as funções dos itens 1-90 a 90-5. E um script 405 pode ser executado para simular os comportamentos de um usuário do app 1, como clicar ou tocar o item 90-1, para solicitar dados a partir dos dados de aplicativo 200. Um exemplo é programar o script 405 no servidor de instrumento de busca de aplicativo 100b (ou o terceiro módulo 406) quando o terceiro módulo 406 está analisando o app 1. Em outro exemplo, o script 405 pode ser armazenado no dispositivo de armazenamento 19 do servidor de instrumento de busca de aplicativo 100b e ser transmitido para o terceiro módulo 406 quando o app 1 está sendo analisado.
[0070] Em outro exemplo, o script 405, o terceiro módulo 406, o segundo módulo 404 e o primeiro módulo 402 podem ser integrados para formar um módulo robô 650, como exemplificado na FIG. 4I. O módulo robô 650 é configurado para simular comportamentos humanos para que eie possa executar um app da mesma maneira que um ser humano real faria. Ainda num outro exemplo, o módulo robô 650 pode também aprender/gravar como se operar um app, pelo monitoramento e gravação dos comandos de usuários humanos do app. Por exemplo, o módulo robô 650 pode ser encarregado de monitorar entradas de histórias de usuário a fim de aprender/gravar de padrões de comportamento relacionados com o app. Em outro exemplo, o módulo robô 650 pode ser configurado para analisar interfaces de usuário gráficas (GUIs) de um app usando um algoritmo de reconhecimento de imagem.
[0071] Em outro exemplo, o algoritmo de reconhecimento de imagem pode incluir um algoritmo de reconhecimento de caracteres óptico (OCR). Quando usando o algoritmo OCR para analisar os GUIs do app, botões, personagens, linhas, páginas e janelas no GUI podem ser reconhecidos, e ações específicas podem ser executadas pelo módulo robô em conformidade.
[0072] Em outro exemplo, o módulo robô pode utilizar um algoritmo de sondagem aleatório para analisar GUIs. O algoritmo de sondagem aleatório direciona o módulo robô a aleatoriamente sondar ou ativar GUIs de um app, por exemplo, sondando ou ativando pixels na teia GUI de uma forma aleatória. Se um determinado pixel ou localização de pixel do GUI gera dados de aplicativo com base neste algoritmo de sondagem aleatório, tal análise pode ser aprendida e gravada pelo módulo robô, por exemplo, de uma forma de aprendizado de máquina.
[0073] A máquina virtual 400 pode ainda incluir um quarto módulo (ou programa) 408 configurado para armazenar dados de aplicativo no banco de dados 888 ou o dispositivo de armazenamento 19 (ou qualquer outro(s) dispositivo(s) de armazenamento, juntamente com o servidor de instrumento de busca de aplicativo 100b).
[0074] Outra modalidade da invenção pode ser descrita da seguinte forma. O app 1 é executado em uma máquina virtual 400 por um segundo módulo 404. O terceiro módulo 406 na máquina virtual 400 realiza uma análise sobre o app 1. Posteriormente, um script 450 é executado para gerar uma atividade no app 1. A atividade envolve a solicitação de dados de aplicativo do servidor de aplicativo, 200. O servidor de aplicativo 200 entrega os dados de aplicativo solicitados ao app 1. Os dados entregues são coletados e armazenados no banco de dados 888. Como alternativa, o app 1 pode gerar dados de aplicativo por si só. Quaisquer dados de aplicativo gerados peto aplicativo são também coletados e armazenados no banco de dados 888. Portanto, os dados de aplicativo coletados e armazenados pelo instrumento de busca do aplicativo podem ser dados transmitidos de um servidor de aplicativo 200, bem como os dados gerados pelo próprio app 1. Um usuário remoto 20 dá entrada em uma consulta em um campo 502 e pressiona um botão de busca 522 em uma interface de usuário 131a para gerar uma solicitação de busca de dados relevantes para a palavra-chave. Um instrumento de busca de aplicativo 600, depois de receber o pedido de busca, busca por dados de aplicativo no banco de dados 888 que é relevante para a consulta. Sedados relevantes são encontrados, o instrumento de busca de aplicativo 600 gera um resultado de busca que inclui tais dados, lista de aplicativos relevantes, um ou mais links para os um ou mais apps relevantes associados com tais dados ou um ou mais links de download para os um ou mais pacotes de aplicativos de um ou mais aplicativos relevantes. Posteriormente, o aplicativo da web 500 transmite o resultado da busca para o usuário remoto 20.
[0075] FIGS. 6A - 6C ilustram alguns resultados de busca exemplares. Onde mais de um dados de aplicativo relevantes são encontrados pelo instrumento de busca de aplicativo 600, os links para os dados de aplicativo, os links para download de aplicativos que contêm tais dados de aplicativo ou os próprios dados de aplicativo podem ser mostrados e classificados de acordo com o número de downloads» curtidas (likes) ou check-ins para cada aplicativo. Em um exemplo, o número de downloads, curtidas ou check-ins para cada app pode ser armazenado no banco de dados 888 (referindo-se a FIG. 3A ou 3B), e os dados de aplicativo do servidor de aplicativo também podem ser armazenados no dispositivo de armazenamento 19 para o instrumento de busca de aplicativos 600 para busca.
[0076] FIG. 4B ilustra outra modalidade de rede de acordo com um exemplo da presente invenção. A rede na FIG. 4b é semelhante à da FIG. 4A, exceto que, a máquina virtual 400 é configurada em um sistema operacional móvel simulando um servidor 100e, que é separado do instrumento de busca de aplicativos 600 agora configurado no servidor de instrumento de busca de aplicativo 100b. Em outro exemplo, pelo uso de uma pluralidade de servidores configurados como um único servidor simulador de OS móvel 100e (doravante a "pluralidade de servidores simuladores de OS móveis"), pode-se atingir um melhor desempenho ao se executar vários apps ou se processar uma grande quantidade de dados de aplicativos de vários servidores de aplicativos.
[0077] Em ainda outro exemplo, o aplicativo de web 500 pode ser configurado dentro do servidor de aplicativo web 100a. O aplicativo de web 500 é separado do instrumento de busca de aplicativo 600 que é configurado dentro do servidor de instrumento de busca de aplicativo 100b. Para efetivamente atender uma grande quantidade de usuários, uma pluralidade de servidores é configurada como um único servidor de aplicativo web 100a (doravante a "pluralidade de servidores de aplicativos web") ou como um único servidor de instrumento de busca de aplicativo 100b (doravante a "pluralidade de servidores de instrumento de busca de aplicativo"). Um servidor de equilíbrio de carga (ou uma pluralidade de servidores de equilíbrio de carga) pode ser aplicado antes da pluralidade de servidores de aplicativos de web ou a pluralidade de servidores de instrumento de busca de aplicativo para melhor lidar com solicitações de busca do usuário. Para atingir um volume de armazenamento mais eficiente e tempo de resposta mais rápido para acessar/procurar um(ns) dispositivo(s) de armazenamento ou banco(s) de dados, o dispositivo de armazenamento 19 do servidor de instrumento de busca de aptícativolOOb na FIG. 4A pode ser substituído por um dispositivo de armazenamento 19x dispostos fora do servidor de instrumento de busca de aplicativo 100b (mas ainda acoplado com o servidor de instrumento de busca de aplicativo 100b). Em um exemplo, o dispositivo de armazenamento 1Ôx pode ter capacidade maior do que o dispositivo de armazenamento incorporado 19 do servidor de instrumento de busca de aplicativo 100b na FIG. 4A. Em outro exemplo, uma pluralidade de dispositivos de armazenamento (por exemplo, uma matriz de dispositivos de armazenamento), cada um dos quais é configurado como o dispositivo de armazenamento 19x, pode prover mais capacidade para o servidor simulador de OS 100e ou o servidor de instrumento de busca de aplicativo 100b. Em outro exemplo, o dispositivo de armazenamento 19x também pode ser configurado no servidor de gerenciamento de arquivos 100d.
[0078} Da mesma forma, o banco de dados 888 na FIG. 4A pode ser substituído pelo banco de dados 888' na FIG. 4B. O banco de dados 888’ pode acoplar-se com um servidor de gerenciamento de banco de dados ou um dispositivo de armazenamento 19x. Em outro exemplo, uma pluralidade de banco de dados configurado como o banco de dados 888‘ pode ser usada como um único banco de dados 888’ para um tempo de resposta mais rápido.
[0079] FIG. 4C ilustra outra modalidade de rede de acordo com um exemplo da presente invenção. O pacote de aplicativo pode ser executado em um dispositivo de computação 5000 com um ambiente de sistema operacional móvel. Como alternativa, o dispositivo de computação 5000 pode incluir um ambiente de sistema operacional de computador para hospedar aplicativos tais como web apps, extensões e plug-ins. Em um exemplo, o app 1 poderá solicitar os dados de aplicativo do servidor de aplicativo 200 ou gerar os dados por si só, quando é rodado pelo primeiro usuário 10. Os dados resultantes de aplicativo são coletados pelo servidor de instrumento de busca de aplicativo 100b. Os dados de aplicativo coletados podem ser armazenados no dispositivo de armazenamento de acoplado com o servidor de instrumento de busca de aplicativo 100b. Em um exemplo, o dispositivo de computação 5000 pode ser um smartphone 10a, um tablet 10b, um iaptop 10c ou um computador pessoal 10d.
[0080] em outro exemplo, o servidor de instrumento de busca de aplicativo 100b pode adicionalmente incluir uma máquina virtual 400, que compreende o programa/módulo 404 para executar o app1 no dispositivo de computação 5000. Em outro exemplo, a máquina virtual 400 também pode incluir um módulo 406 que roda um script 405 para executar o aplicativo 1 no dispositivo de computação 5000. O script 405 pode ser armazenado no dispositivo de armazenamento ou incorporado no módulo 406. O módulo 406 pode também ser configurado para armazenar os dados de aplicativo no dispositivo de armazenamento 19 ou outro dispositivo de armazenamento acoplado ao servidor de instrumento de busca de aplicativo 100b [0081] FIG. 4D ilustra outra modalidade de rede de acordo com um exemplo da presente invenção. Os dados de aplicativo podem ser transmitidos do servidor de aplicativo 200 ou o primeiro usuário 10 diretamente para o servidor de instrumento de busca de aplicativo 100b, e o servidor de instrumento de busca de aplicativo 100b irá armazenar os dados no dispositivo de armazenamento 19 ou outro dispositivo de armazenamento. Em outro exemplo, o servidor de aplicativo 200 pode transmitir dados de aplicativo diretamente para um dispositivo de armazenamento e os dados de aplicativo serão armazenados num dispositivo de armazenamento como tal» O servidor de instrumento de busca de aplicativo 100b pode buscar no dispositivo de armazenamento dados que são relevantes para qualquer consulta.
[0082] A modalidade ilustrada pela FIG. 4D não exige a execução de um app para obter dados de aplicativo do servidor de aplicativo. Por exemplo, um programa pode ser implementado, configurado em ou acoplado com o servidor de aplicativo 200 para transferir ou prover os dados de aplicativo que possui a serem armazenados em um dispositivo de armazenamento da presente invenção. O programa pode ser um script ou quaisquer códigos de software que podem se comunicar com o servidor de aplicativo 200. Os dados de aplicativo no servidor de aplicativo 200 podem ser transferidos. Uma vez que a consulta do usuário é recebida, servidor de instrumento de busca de aplicativo 100b pode buscar no dispositivo de armazenamento dados que são relevantes para qualquer consulta. Pessoas versadas na técnica entendem que a presente invenção não é limitada aos exemplos divulgados neste documento. Existem outras maneiras de coletar dados no servidor de aplicativo 200 sem a necessidade de executar o app e elas devem todas cair no escopo da presente invenção. Por exemplo, um programa pode ser implementado no servidor de instrumento de busca de aplicativo 100b com a finalidade de acessar e/ou obter dados de aplicativo do servidor de aplicativo 200. Aqui, o programa só precisa saber um URL/URI correspondente ao servidor de aplicativo 200 para rastrear dados de aplicativo no servidor de aplicativo, 200. Em outro exemplo, o servidor (por exemplo, o instrumento de busca de aplicativo 100b) pode executar um script para analisar o app 1 para determinar o que e onde está o servidor de aplicativo 200 correspondente para acessar e/ou obter os dados de aplicativo.
[0083] na modalidade acima, um módulo de colheita de dados ou framework 3000 (Ver FIG. 4E) também pode ser implementado no servidor de instrumento de busca de aplicativos 100b para analisar e processar dados de aplicativo que estão sendo transmitidos diretamente do servidor de aplicativo 200. Tal framework de colheita de dados pode simular as funções de um app para processar e entender os dados de aplicativo providos pelo servidor de aplicativo 200. Por exemplo, se dados de aplicativo transmitidos pelo servidor de aplicativo 200 estão em pacotes discretos, o framework de colheita de dados pode coletar os pacotes de dados e processá-los em dados de aplicativo significativos capazes de serem buscados. Além disso, o framework de colheita de dados também pode analisar dados de aplicativo para identificar o dados de aplicativo desejados, excluir dados de aplicativos indesejados e categorizar os dados de aplicativo ou uma combinação deles.
[0084] O(s) programa/módulo(s) aqui descrito(s) pode(m) ser executado(s) em um processador do(s) servidor(es) acima referido(s) (por exemplo, o processador 18 do servidor de instrumento de busca de aplicativo 100b). Os dados temporários do programa/módulo(s) também pode(m) ser armazenados em uma memória cache do processador ou memória dos servidores (por exemplo, a memória 12 do servidor de instrumento de busca de aplicativo 100b). No entanto, uma pessoa versada na técnica entende que o(s) presente(s) programa/módulo(s) também pode(m) ser implementado(s) em hardware (por exemplo, um módulo de hardware), tais como um chip ou um circuito.
Rastreador/Spiderinq [0085] Em um exemplo, um rastreador web (ou um web spider) pode ser usado para coletar pacotes de aplicativos, dados de aplicativos, dados/informações (por exemplo, descrições) relacionadas com apps ou links de aplicativo. O servidor de instrumento de busca de aplicativo 100b ou servidor simulador de OS 100e podem baixar os apps coletados pelo rastreador web e executá-los no agregado de servidores 100.
Recuperação de informação [0086] Recuperação de informação pode ser aplicada a dados de aplicativo providos pelo servidor de aplicativo ou pelo próprio app em resposta a solicitações. O objetivo é organizar e indexar dados em categorias significativas para alcançar eficiência de busca.
Navegador de App {0087] Um aplicativo pode ser executado em servidores remotos ou nuvem e dados de aplicativo do servidor de aplicativo podem ser transmitidos para o cliente e mostrados em um navegador de App. Um usuário pode operar os apps através do browser de App, sem a necessidade de instalar os apps localmente.
Uma aplicação exemplar [0088] FIGS. 5A a 5E ilustram interfaces de usuário exemplares de um app de acordo com um exemplo da presente invenção; Na FIG. 5a, o app tem uma tela de boas-vindas (ou página de ativação) 988 que normalmente inclui uma foto. A tela dando boas-vindas 988 pode ser mostrada depois que o aplicativo é ativado ou aberto.
[0089] Em referência às FIGS. 5B-5E, a interface do usuário pode incluir o recipiente 900 da qual o conteúdo mostrado no recipiente 900 pode ser alterado dependendo de qual guia está selecionada (as guias podem ser mostradas na parte inferior do recipiente 900 como guias, 918, 920, 922 e 924). Por exemplo, na FIG. 5B mostra uma disposição do recipiente 900 quando a guia 918 (isto é, a guia nomeada “item”) é selecionada. O layout pode incluir uma barra de ação ou banner 926 (que pode ainda incluir um link para que um usuário faça login no app), um plano de fundo ou anúncio 910 (por exemplo, um vídeo, uma animação, um plano de fundo deslizante de um flash). Itens 1-90 a 90-5 podem incluir imagens opcionais 90-1p a 90-5p. Em um exemplo, os itens 1-90 a 90-5 se acoplam a um servidor de aplicativo de web para procurar dados de aplicativo dinâmicos, em tempo real do servidor de aplicativo por métodos http (por exemplo, método "POST" ou "GET" como "POST http://example.com/apiPurpose.php" ou "GET http://example.com/apiPurpose.php?mode=GetData&lD=C00001"). Aqui, quando o aplicativo solicita dados de aplicativo do servidor de aplicativo, o servidor de aplicativo pode transmitir uma resposta em uma estrutura de JavaScript Object Notation (JSON) ou uma estrutura de eXtensible Markup Language (XML) (por exemplo, ("status":"OK", "result" : fname" : "Happy Cafe", "display" : "1", "addr" : "3F., No.18-6, Jinhua St., Taipei, Taiwan, R.O.C", "desc" : "This is the Introduction of Happy Cafe", "shophours" : "0800-2200", "openweek" : "0111110", "shoptel" : "886-33433997", "shopurl" : "http://anotherexample.com", "shopimage" : [{"http://example.com/images/90-1p.jpg"}]}}). Em um exemplo da presente invenção, os dados de aplicativo procurados no servidor de aplicativo podem incluir um link para um modo de exibição de um aplicativo, um link para os dados de aplicativo, um link para download de um pacote de aplicativo do aplicativo, um texto relativo ao aplicativo ou dados de aplicativo, uma imagem relativa ao aplicativo ou dados de aplicativo, um vídeo relativo ao aplicativo ou dados de aplicativo e um áudio relativo ao aplicativo ou dados de aplicativo.
Interfaces de Usuário Exemplares providas pelos Instrumentos de Busca de Aplicativo [0090] FIGS. 6A a 6C ilustram outras interfaces de usuário exemplares providas pelo servidor de aplicativo web 100a ou pelo servidor de instrumento de busca de aplicativo 100b a um usuário (por exemplo, o segundo usuário 20), de acordo com um exemplo da presente invenção. As interfaces de usuário mostradas nas FIGS. 6A a 6C podem ser em uma tela de um dispositivo, tal como um computador, um laptop, um tablet/pad, um smartphone ou outros dispositivos móveis. Referindo-se a FIG. 6A, apps relevantes para a palavra-chave podem ser mostrados com ícones de aplicativo correspondentes 2104, 2108 ou 2112 e nomes de aplicativos ou descrições 2106, 2110 ou 2114 como resultados de busca. Referindo-se à FIG. 6B, os resultados de busca podem ser exibidos como uma lista do conteúdo do app 2118, 2120 ou 2122 como links para esses conteúdos.
Referindo-se à FIG, 6C, os resultados de busca também podem ser exibidos no mapa 2124, Os ícones de aplicativo 2104, 2108 e 2112, como resultados de busca, podem ser mostrados no mapa 2124.
Web Apps, Extensões e Pluq-ins [0091] Já que web apps, extensões e plug-ins (aplicativos) operam de forma semelhante aos apps, a presente invenção também divulga um método de busca de aplicativos. Observe que web apps, extensões e plug-ins podem ser executados em um dispositivo inteligente ou em um dispositivo de computação (por exemplo, um PC). Ao rodar aplicativos em um computador pessoal, os usuários desses aplicativos comunicam-se com servidores de aplicativos designados durante a realização das suas tarefas. Por exemplo, ao usar a extensão "The Weather Channel" para o navegador Chrome, a extensão obtém a localização do usuário (ou o usuário pode inserir sua localização). Posteriormente, servidor de aplicativo, em conjunto com a extensão de "The Weather Channel", entregará a previsão do tempo para a localização do usuário ou escolha de localização do usuário para o navegador do usuário no computador. O mecanismo aqui é muito similar a como os usuários de apps solicitam dados do servidor de aplicativo.
Aqendador [0092] Um Agendador pode ser adicionalmente utilizado no sistema da presente invenção, A principal função de um agendador é determinar e organizar as maneiras das quais os aplicativos são executados. Um programador pode ser um script, código ou programa que pode ser implementado em qualquer um dos servidores ou bancos de dados da presente invenção. Um agendador também pode ser configurado para agendar servidores, máquinas virtuais ou módulos robô para executar apps baseados em uma apólice de agendamento.
[0093] Em uma modalidade, um ou mais agendadores podem ser configurados para programar máquinas virtuais ou servidores para executarem aplicativos. Em uma outra modalidade, os agendadores podem ser configurados para programar módulos robô para executarem apps. O agendador é implementado com o objetivo de melhorar o desempenho geral do sistema da presente invenção por meio de eficientemente alocar e utilizar os recursos do sistema. Por exemplo, na F1G. 4J, um agendador 660 pode ser utilizado para coordenar o servidor (por exemplo, o servidor de instrumento de busca de aplicativo 100b), o dispositivo eletrônico do primeiro usuário 10, a rede 30, o servidor de aplicativo 200 e o dispositivo eletrônico para o segundo usuário 20, para facilitar a execução dos apps. Por exemplo, o agendador 660 pode coordenar de acordo com os requisitos dos componentes do sistema, tais como a quantidade de recursos necessários, o número de tarefas rodando, tempo de espera, prioridades, dependência de dados e etc. O agendador 660 também pode ser eliminado dentro do servidor (por exemplo, no servidor de instrumento de busca de aplicativo 100b) de acordo com um exemplo da presente invenção.
[0094] O agendador pode agendar os vários componentes dos sistemas com base em uma apólice de agendamento. Uma apólice de agendamento define as maneiras das quais os aplicativos são executados. Por exemplo, a apólice pode estabelecer regras que governam a ordem na qual os aplicativos são executados por robôs, máquinas virtuais ou servidores. A apólice de agendamento também pode definir a frequência de execução de apps, tal que o sistema sabe quantas vezes um app deve ser executado e o intervalo entre cada execução. A apólice de agendamento pode também administrar o tempo, frequência, prioridade e comprimento de execução e/ou qualquer combinação destes. A apólice de agendamento pode ser salva em um banco de dados (por exemplo, o banco de dados 888 ou 888').
[0095] Em um exemplo, o agendador pode aumentar a frequência de execução de um aplicativo se o carregamento do robô, máquina virtual ou servidor gerindo o app é leve. Por outro lado, uma apólice de agendamento poderá instruir o agendador a diminuir a frequência de execução, se o carregamento do robô, máquina virtual ou servidor gerindo o app é pesado.
[0096] A ordem e a prioridade em que aplicativos são executados também podem ser definidas pela apólice de agendamento. Por exemplo, a apólice de agendamento pode incluir algoritmos como o algoritmo de agendamento por ordem de chegada, o algoritmo de agendamento por trabalho mais curto primeiro, o algoritmo de agendamento por prioridade, o algoritmo de agendamento por turno, o algoritmo de agendamento por vários níveis de fila, o algoritmo de agendamento por vários níveis de fila com feedback, e/ou o algoritmo de agendamento em tempo real. Entender as condições do sistema e recursos, bem como averiguar as categorias e as características dos apps pode ajudar a determinar quais algoritmos de agendamento devem ser aplicados. Por exemplo, a apólice de agendamento pode atribuir dinamicamente um status para cada app que determinará a prioridade em que os aplicativos devem ser executados. Em particular, um tempo ocioso ou um tempo decorrido (depois que o app foi executado pela primeira vez) pode ser registrado para cada app tal que o agendador possa alternar dinamicamente a ordem de execução dos aplicativos dependendo do status dos apps.
[0097] A apólice de agendamento pode ser gerada por uma abordagem de inteligência artificial (Al) ou uma abordagem manual. Em uma abordagem de Al, o agendador pode possuir uma inteligência de nível mais alto para aprender as características dos apps, onde as características dos apps podem incluir as frequências de execução ou os tipos (ou seja, categorias) dos apps, etc. Aprender o tipo ou categoria de um app pode ajudar o agendador a determinar a frequência de execução de tal app. Por exemplo, um app de notícias pode exigir uma maior frequência de execução do que um app de jogo porque um app de notícias normalmente atualiza seu conteúdo mais frequentemente do que um app de jogo.
Portanto, se um app de notícias é encontrado, o agendador pode dinamicamente elevar a prioridade ou a frequência de sua execução, por um robô, máquina virtual ou servidor. Por outro lado, o agendador pode também dinamicamente diminuir a prioridade ou a frequência de execução de um app se for encontrado um app que raramente atualiza seu conteúdo.
[0098] Sob uma abordagem manual, a apólice de agendamento é definida pela entrada manual da apólice. Por exemplo, o administrador do sistema atual pode manualmente comandar a ordem de execução desejada, prioridade ou frequência em que os aplicativos são executados. Módulo de Verificação de Segurança de App [0099] Segurança de software móvel tornou-se uma grande questão hoje tanto com desenvolvedores quanto com usuários. Com um vasto número de apps no mercado, uma medida de verificação de segurança sólida deve ser posta em prática para garantir que os aplicativos encontrados pelos rastreadores são seguros e não contêm vírus malicioso algum.
[00100] Em uma modalidade, como exemplificado na FIG. 4K, um módulo de verificação de segurança de aplicativo 670 pode ser configurado para verificar a segurança de aplicativos de software ou apps com base em uma pluralidade de níveis de segurança. Mais especificamente, uma pluralidade de diferentes níveis de segurança pode ser definida para diferentes requisitos de processamento de aplicativos e pode ser utilizada para bloqueio de apps não qualificados para o nível de segurança específico. Observe que o módulo de verificação de segurança de app 670 pode ser disposto fora da máquina virtual 400 mas ainda no servidor (por exemplo, no servidor de instrumento de busca de aplicativo 100b), em um exemplo da presente invenção.
[00101] Em outra modalidade, o módulo de verificação de segurança de app 670 é configurado para prover certificação de segurança para apps. Apps encontrados pelo rastreador são verificados pelo módulo de verificação de segurança 670 para determinar se podem passar por qualquer um dos cinco níveis de segurança, incluindo, por exemplo, nível 1, nível 2, nível 3, nível 4 e nível 5.
[00102] O módulo de verificação de segurança de app 670 pode incluir um conjunto de mecanismos de certificação de segurança para cada um dos níveis de segurança. Os mecanismos de certificação de segurança podem incluir certificação de comunicação, detecção de malware através de manifesto e rastreamento de chamadas de APl e detecção de comportamentos de sistema maliciosos.
Mecanismos para única/múttipla máquina virtual [00103] Nos diagramas acima referidos (por exemplo, FIGS. 4A -4K), uma única máquina virtual com um agendador é usada para executar apps. Em outras modalidades, várias máquinas virtuais podem ser utilizadas para executar simultaneamente vários aplicativos em um servidor. Nesse sentido, dados de aplicativos de vários aplicativos podem ser simultaneamente gerados, processados e/ou armazenados no servidor da presente invenção. Para um usuário utilizando o sistema da presente invenção, dados de aplicativo de vários aplicativos podem ser simultaneamente mostrados ou exibidos em uma interface de usuário suportada pelo servidor usando várias máquinas virtuais.
[00104] FIGS. 7A-7H ilustram modalidades exemplares da presente invenção utilizando uma máquina virtual única ou máquinas virtuais múltiplas para executar aplicativos;
[00105] Na FIG. 7a, um sistema exemplar 700 pode incluir um servidor 701a e um ou mais servidores de aplicativo 201 e 202 e os servidores 701a e 201/202 podem se acoplar/comunicar entre si através de uma rede 30. Os servidores de aplicativo 201 e 202 podem ter funcionalidades similares às do servidor de aplicativo 200. Os servidores de aplicativo 201 e 202 são respectivamente atribuídos (por desenvolvedor(es) de app correspondente(s)) para processar dados de aplicativo de diferentes apps ou de diferentes segmentos de um mesmo app, por exemplo, o servidor de aplicativo 201 pode ser especificamente atribuído para processar os dados de aplicativo relacionados a um app "APP_kk" pelo desenvolvedor de app APP_kk, e o servidor de aplicativo 202 pode ser atribuído especificamente para processar dados de aplicativos relacionados a um app "APPJj", pelo o desenvolvedor de app do app APPJj. A rede 30 atua como um meio termo entre o servidor 701a e servidores de aplicativos 201 e 202 para transmissão de dados.
[00106] O servidor 701a pode ser projetado com base no servidor 100b mostrados nas FIGS. 4A - 4K, mas também pode ter funcionalidades adicionais. O servidor 701a pode ter um agendador 710, um gerenciador de máquina virtual (Gerenciador VM) 720, um dispositivo de armazenamento 740, um envoltório 750, um módulo de armazenamento de pacote de aplicativo 760 e uma ou mais máquinas virtuais 88 e 89. O servidor 701a também opcionalmente pode incluir uma rede definida de software configurável (SDN) 730.
[00107] O Gerenciador VM 720 é configurado para gerenciar máquinas virtuais 88 e 89 sob a instrução do agendador 710 (por exemplo, uma instrução "Ctrl_sm5” para controlar a máquina virtual 89 ou uma instrução "Ctrl_sm4" para controlar a máquina virtual 88). O Gerenciador VM 720 pode gerenciar a geração, exclusão, ativação ou desativação de máquinas virtuais no servidor 701a. Por exemplo, quando há um app para ser ativado no servidor 701a, o agendador 710 instrui o Gerenciador VM 720 a criar uma nova máquina virtual no servidor 701a para executar o aplicativo. Em outro exemplo, quando há um app para ser desativado no servidor 701a, o agendador 710 instrui o Gerenciador VM 720 a excluir uma máquina virtual previamente atribuída ao app do servidor 701a. Note que o Gerenciador VM 720 pode ser operado com base em uma apólice de agendamento do agendador 710.
[00108] Note que, em algumas modalidades o Gerenciador VM 720 pode ser implementado como parte do módulo robô anteriormente mencionado (por exemplo, como parte do módulo robô 650 na FIG. 4I).
[00109] Note que o agendador 710 pode ser implementado como códigos de programa ou Scripts armazenados dentro do servidor 701a em algumas modalidades da presente invenção, [00110] Em um exemplo, o envoltório 750 está configurado para prover uma pluralidade de eventos de entrada e/ou instruções para a operação de um app de tal forma que o app possa ser executado diretamente no servidor 701a. Eventos de entrada podem incluir um evento de gesto, como um evento de toque, movimento ou agito com a finalidade de se operar o app.
[00111] Em outro exemplo, o envoltório 750 é configurado para envolver um app com uma interface de programação de app (API) de dispositivo para rodar, para que o app seja executável no servidor 701a com o auxílio do API de dispositivo para rodar. O app pode não ser executável antes de ser envolvido com o API de dispositivo para rodar já que o aplicativo pode usar um formato/linguagem específico que um ou mais sistemas operacionais utilizados pelo servidor 701a não conseguem analisar (por exemplo, um arquivo ipa executável em um ambiente de iOS não é ínstalável e/ou executável em um ambiente Android antes de ser envolvido com o API de dispositivo para rodar para traduzir/converter o l/O de sua app iOS correspondente em um(ns) formato de Android aceitável(eís)). Com o auxílio do API de dispositivo para rodar, o app será executável nos sistemas operacionais utilizados pelo servidor 701a. Observe que os apps a serem envolto pelo envoltório 750 podem vir do rastreador acima referido em alguns exemplos.
[00112] O módulo de armazenamento de pacote de aplicativo 760 é configurado para armazenar apps para o servidor 701a, por exemplo, para armazenar apps APP_J 1, APP_12 APP_1m, APPJ21,..., APPJ„.„ APP_n1, APP_n2,... e APP_nm.
[00113] O dispositivo de armazenamento 740 é configurado para armazenar dados de aplicativo gerados pela execução de um ou mais apps no servidor 701a.
[00114] Tomando-se que a máquina virtual 88 é gerada pelo Gerenciador VM 720 para especificamente executar o app APP_kk, a máquina virtual 88 também pode incluir um hípervísor 88a, que é configurado para gerenciar dinamicamente os recursos da máquina virtual 88. Por exemplo, o hipervisor 88a pode solicitar recursos exigidos pela máquina virtual 88 do servidor 701a, ou pode liberar recursos adquiridos pela máquina virtual 88 de volta para o servidor 701a. O hipervisor 88a pode incluir um sistema operacional OS_kk. O sistema operacional OS_kk pode incluir pelo menos um gerenciador de app SM_kk e um proxy Pr_kk. O gerenciador de app SM_kk pode incluir um controlador de instalação IC_kk para instalar o app APP_kk do armazenamento de pacote de aplicativo 760 usando uma identidade Apkjd_kk do app APP_kk. O proxy Pr_kk é configurado para rotear ou receber dados de aplicativos do aplicativo APP_kk. É de se notar que os proxies no servidor 701a podem agir como os proxy recolhedores de dados 710 mencionados acima.
[00115] Da mesma forma, a máquina virtual 89 é gerada pelo Gerenciador VM 720 para especificamente executar o app APPJj. A máquina virtual 89 pode incluir um hipervisor 89a, que é configurado para gerenciar dinamicamente os recursos da máquina virtual 89. Por exemplo, o hipervisor 89a pode solicitar recursos exigidos pela máquina virtual 89 do servidor 701a, ou pode liberar recursos adquiridos pela máquina virtual 89 de volta para o servidor 701a. O hipervisor 89a pode incluir um sistema operacional OSJj. O sistema operacional OSJj pode incluir pelo menos um gerenciador de app SMJj e um proxy Prjj. O gerenciador de app SMJj pode incluir um controlador de instalação ICJj para instalar o app APPJj do armazenamento de pacote de aplicativo 760.
[00116] O proxy PrJj é configurado para rotear ou receber dados de aplicativos do aplicativo APPJj.
[00117] Em alguns exemplos, os sistemas operacionais do servidor 701a podem ser sistemas operacionais para dispositivos eletrônicos móveis, como iOS, Android, Android-x86 e etc.
[00118] Em alguns exemplos, os hipervisores 88a e 89a podem ser máquinas virtuais baseadas em kerneí (KVM).
[00119] Em alguns exemplos, as máquinas virtuais, 88 e 89 podem rodar um sistema operacional baseado em Linux, por exemplo, o CentOS (por exemplo, o CentOS 6.4) ou Ubunto.
[00120] Em algumas modalidades da presente invenção, a SDN 730 é configurada para gerenciar a transmissão e/ou recepção de dados de aplicativos entre as máquinas virtuais (por exemplo, as máquinas virtuais 88 e 89) e os servidores de aplicativo correspondentes (por exemplo, servidores de aplicativos 201 e 202). A 730 SDN configurável armazena endereços (tais como endereços IP) das máquinas virtuais providas pelo servidor 701a. Quando o servidor de aplicativo (por exemplo, o servidor de aplicativo 201) solicita dados de aplicativos de um aplicativo (por exemplo o app APP__kk), a SDN 730 conftgurável roteia os dados de aplicativo de uma máquina virtual executando o app (por exemplo, a máquina virtual 88) para o servidor correspondente de acordo com os endereços armazenados. Quando o servidor 701a é utilizado para hospedar simultaneamente uma grande quantidade de máquinas virtuais, a 730 SDN configurável ajudará o servidor 701a a gerir eficientemente o tráfego de dados de aplicativo entre as máquinas virtuais e seus servidores correspondentes.
[00121] Em alguns exemplos, a 730 SDN configurável pode ser implementada por Open vSwitch.
[00122] Um fluxo de operação exemplar do servidor 701a é explicado em seguida. Quando o servidor 701a prepara-se para executar o aplicativo APP_kk is, o agendador 710 instrui o gerenciador VM 720 a gerar a máquina virtual 88. O controlador de instalação IC_kk instala o app APP_kk do módulo de armazenamento de pacote de aplicativo 760 na máquina virtual 88. O gerenciador de app SM_kk pode então executar o aplicativo APP_kk para gerar dados de aplicativo. O proxy Pr_kk pode armazenar os dados de aplicativo ao dispositivo de armazenamento 740, direcionar os dados de aplicativo ao servidor de aplicativo 201 através da rede 30 (pode também através da ajuda da SDN 730 configurável em algumas modalidades da presente invenção), ou receber uma solicitação do servidor 201. Como resultado, a máquina virtual 88 é capaz de gerar dados de aplicativo em resposta a uma solicitação do servidor de aplicativo 201 e retornar dados de aplicativo de volta para o servidor de aplicativo 201. Mediante a execução do app APP_kk na máquina virtual 88, o hipervisor 88a gerencia dinamicamente os recursos da máquina virtual 88.
[00123] Na FIG. 7B, um servidor 702a é implementado de forma semelhante ao servidor 701a, exceto que os proxies das máquinas virtuais (por exemplo, os proxies Pr_kk e PrJj) são removidos e um proxy integrado 770 é utilizado para servir as máquinas virtuais.
[00124] Na FIG. 7C, um servidor 703a é implementado de forma semelhante ao servidor 701a, exceto que as máquinas virtuais (por exemplo, as máquinas virtuais 88 e 89) são integradas a uma única máquina virtual 780. Observe que uma única máquina virtual (por exemplo, a máquina virtual 780) está configurada para gerenciar vários hipervisores (por exemplo, os hipervisores 88a e 89a) no servidor 703a para que a máquina virtual 780 seja capaz de executar simultaneamente um ou mais aplicativos.
[00125] Na FIG. 7D, um servidor 704a é implementado de forma semelhante ao servidor 702a, exceto que as máquinas virtuais (por exemplo, as máquinas virtuais 88 e 89) são integradas a uma única máquina virtual 790, e os hipervisores das máquinas virtuais (por exemplo, os hipervisores 88a e 89a) também são integrados a um único hipervisor 88c Observe que o hipervisor (por exemplo, o hipervisor 88c) está configurado para gerenciar simultaneamente um ou mais sistemas operacionais (por exemplo, os sistemas operacionais OS_kk e OSJj) no servidor 704a.
[00126] Na FIG. 7E, um servidor 701b é implementado de maneira semelhante à do servidor 701a, exceto que o envoltório 750 é realocado para o gerenciador de app, por exemplo, como os dispositivos de rodagem 75a e 75b. O dispositivo para rodar 75a é configurado para envolver o app APP_kk com um envolvedor API para que o app APP_kk seja executável no sistema operacional OS_kk. O dispositivo para rodar 75b é configurado para envolver o app APPJj com um API de dispositivo para rodar para que o sistema operacional OSJj possa executar o aplicativo APPJj.
[00127] Na FIG. 7F, um servidor 702b é implementado de maneira semelhante à do servidor 702a, exceto que o envoltório 750 é transferido para o gerenciador de app, por exemplo, como os dispositivos para rodar 75a e 75b.
[00128] Na FIG. 7G, um servidor 703b é implementado de maneira semelhante à do servidor 703a, exceto que o envoltório 750 é realocado para o gerenciador de app, por exemplo, como os dispositivos para rodar 75a e 75b.
[00129] Na FIG. 7H, um servidor 704b é implementado de maneira semelhante à do servidor 704a, exceto que o envoltório 750 é realocado para o gerenciador de app, por exemplo, como os dispositivos para rodar 75a e 75b.
[00130] Observe que alterar o número de máquinas virtuais, mostrado nas FIGS. 7A-7H também deve estar no escopo da presente invenção.
[00131] Note que a combinação razoável e/ou realocação dos elementos mostrados nas FIGS. 7A-7H também deve estar no escopo da presente invenção. Módulo de Colheita de Pados [00132] Em algumas modalidades, o framework de colheita de dados 3000 mostrado na FIG. 4E também pode ser implementado dentro dos gerenciadores VM mostrados nas FIGS. 7A-7H (por exemplo, os gerenciadores VM SM_kk e SMJj) para análise e processamento de dados de aplicativo. O gerenciador VM pode ser implementado como parte do módulo robô descrito anteriormente (por exemplo, como parte do módulo robô 650 na FIG. 4I). O módulo de colheita de dados 3000 pode agir como um gancho para interceptar chamadas de API (ou seja, chamadas de sistema) relacionadas aos apps que foram envolvidos com a presente invenção se refere à dispositivo para rodar e pode gravar e analisar comportamentos de apps em uma forma de aprendizagem de máquina (ou procurando dados de aplícativo/conteúdo da(s) chamada(s) de sístemas(s)).
[00133] FIG. 8A ilustra um diagrama de sistema operacional-conceito do módulo de colheita de dados 3000 para ligar dados de aplicativos no nível de usuário de acordo com um exemplo da presente invenção. Referindo-se à FIG. 8a, um servidor de gancho 810 é acoplado com ou disposto no servidor 100b ou 100e e é configurado para receber os dados de aplicativo ligados e transferi-los para o repositório de dados, o dispositivo de armazenamento ou outros meios de pré-processamento. Um programa de gancho 820 está configurado para procurar/interceptar, gravar ou analisar os dados de aplicativo quando ou depois estes são recebidos por uma biblioteca 840, através de um sistema/chamada kernel 850 que chama a biblioteca 840.
[00134] Uma interação exempiar que ocorreu durante a execução do aplicativo 830 pode ser descrita em referência à FIG. 8a nos parágrafos seguintes: [00135] Estágio SOA: O servidor de gancho 810 recebe os dados de aplicativo buscados/interceptados do programa gancho 820.
[00136] Estágio 801: O app 830 chama a biblioteca 840 para gerar uma solicitação de dados de aplicativo do seu servidor de aplicativo remoto 200.
[00137] Estágio 802: O programa de gancho 820 liga a biblioteca 840 (por exemplo, chama um gancho API para ligar os dados de aplicativo recebidos da biblioteca 840) para receber os dados de aplicativo gerados depois que a chamada de sistema 850 chame a biblioteca 840 (como feito no Estágio 804).
[00138] Estágio 803: Depois que a biblioteca 840 é chamada pelo app 830, uma solicitação (por exemplo, um método HTTP POST ou GET) é gerada para a chamada de sistema 850. A chamada de sistema 850 pode transmitir a solicitação HTTP POST ou GET para um(ns) driver(s) correspondente(s), por exemplo, para um driver de placa de interface de rede (NIC). O driver NIC irá converter/transformar/codificar/incorporar a solicitação HTTP POST ou GET para formar um(ns) blocos e tê-la transmitida para o servidor de aplicativo remoto relacionado ao app 830 (por exemplo, servidor de aplicativo 200) através da Internet por uma subcamada MAC (ou seja, a subcamada de controle ao acesso a mídia da camada de link de dados do modelo OSI) e/ou uma camada PHY (ou seja, a camada física do modelo OSI).
[00139] Estágio 804: A chamada de sistema 850 transfere os dados de aplicativo que recebe do(s) driver(s) à biblioteca 840.
[00140] Estágio 805: Os dados de aplicativo recebidos pela biblioteca 840 da chamada de sistema 850 são interceptados ou procurados pelo programa de gancho 820 neste estágio.
[00141] Estágio 806: Um resultado em resposta à solicitação no estágio 803 é gerado apôs ter recebido os dados de aplicativo e ter chamado a biblioteca 840 da chamada de sistema 850 . Por exemplo, se a solicitação original é uma solicitação de conteúdo, então depois que o conteúdo (por exemplo, um artigo com uma pluralidade de textos) é recebido pelo sistema de chamada 850, ele chama a biblioteca 840 para mostrar o conteúdo em uma UI (ou seja, interface do usuário) do app 830 (por exemplo, uma ciasse para exibir uma vista/janela dobrada sobre a UI do aplicativo 830 pode ser usada para exibir/demonstrar o conteúdo).
[00142] Em um exemplo, a solicitação pode levar palavras-chave, os dados de aplicativo podem levar resultados de busca, correspondentes a essa palavras-chave e o programa de gancho 820 pode ser aplicado para receber os resultados da busca. Os resultados da busca podem ser armazenados em um dispositivo de armazenamento (por exemplo, o dispositivo de armazenamento 740 ou o depósito de dados 8888) após uma série de processamentos iniciados a partir do servidor de gancho 810.
[00143] FIG. 8B ilustra um diagrama de sistema operacional-conceito do módulo de colheita de dados 3000 para ligar dados de aplicativos no nível kernel de acordo com um exemplo da presente invenção. Referindo-se â FIG. 8B, as funcionalidades dos elementos mostrados na FIG. 8B são semelhantes àquela da FIG. 8A, então eles não serão repetidos aqui.
[00144] Uma interação exemplar que ocorreu durante a execução de apps 830 mostrados na FIG. 8B são descritos nos parágrafos seguintes: [00145] Estágio 80A: Mesmo que aqueles descritos com referência à FIG 8A.
[00146] Estágio 801: Mesmo que aqueles descritos com referência à FIG. 8A.
[00147] Estágio 812: Depois que a biblioteca 840 é chamada pelo app 830, uma solicitação é gerada e interceptada pelo programa gancho 820.
[00148] Estágio 813: O programa gancho 820 envia a solicitação para a chamada de sistema/kernel 850. Da mesma forma, a chamada de sistema/kernel 850 transmite a solicitação (por exemplo, um método HTTP POST ou GET) para o(s) driver(s) correspondente(s) e o(s) driver(s) converte(m)/transforma(m)/codifica(m)/incorpora(m) a solicitação para formar um(ns) bloco(s) e tê-lo(s) transmitido(s) para o servidor de aplicativo relacionado ao app 830 (por exemplo, o servidor de aplicativo 200) através da Internet pelo MAC ou PHY.
[00149] Estágio 814: A chamada de sistema/kernel 850 transfere os dados de aplicativo recebidos para o programa gancho 820.
[00150] Estágio 815: O programa gancho 820 transfere os dados de aplicativo para a biblioteca 840 .
[00151] Estágio 806: Mesmo que aqueles descritos com referência à FIG. 8A.
[00152] Em algumas modalidades, parte das funções do módulo de colheita de dados 3000 podem ser transferidas para os proxies mostrados nas FIGS. 7A-7H para aliviar a carga dos gerenciadores VM mostrados nas FIGS. 7A - 7H.
[00153] FIGS. 9A e 9B ilustram os exemplos de uso dos proxies mostrados nas FIGS. 7A - 7H para executar a(s) tarefa(s) dos dados da colheita módulo 3000 para efeitos de recolha de dados de aplicativo.
[00154] Na FIG. 9A e FIG. 9B, a "apólice & lógica" indica a apólice de agendamento de um agendador, por exemplo, o agendador 710.
[00155] Estágios da FIG. 9A são descritos em seguida: [00156] Estágio 901: O agendador solicita uma apólice de programação relacionada a um app.
[00157] Estágio 902: A solicitação é respondida com um reconhecimento.
[00158] Estágio 903: O agendador ativa um gerenciador VM correspondente ao app.
[00159] Estágio 904: Sob o controle do agendador, o gerenciador VM ativa ou desativa o app ou opera o app.
[00160] Estágio 905: O app envia uma solicitação para seu servidor de aplicativo correspondente.
[00161] Estágio 906: O servidor de aplicativo retorna uma resposta levando dados ou conteúdos relacionados à solicitação.
[00162] Estágio 907: Um proxy correspondente ao app procura/intercepta e armazena os dados ou conteúdo em resposta a um dispositivo de armazenamento ou um repositório de dados.
[00163] Estágios da FIG. 9B são descritos da seguinte maneira para incluir mecanismo de verificação de segurança de app: [00164] Estágio 911: O agendador solicita uma apólice de programação relacionada a um app.
[00165] Estágio 912: A solicitação é respondida com um reconhecimento.
[00166] Estágio 913: O agendador ativa um gerenciador VM correspondente ao app.
[00167] Estágio 914a: O gerenciador VM chama um módulo de verificação de segurança de app para monitorar o nível de segurança do app.
[00168] Estágio 914b: O gerenciador VM chama um proxy para procurar/interceptar dados transmitidos relativos ao app para análise futura.
[00169] Estágio 915: Sob o controle do agendador, o gerenciador VM ativa ou desativa o app ou opera o app.
[00170] Estágio 916: O app envia uma solicitação para seu servidor de aplicativo correspondente sob o monitor do módulo de verificação de segurança de app e a intercepção do proxy.
[00171] Estágio 917: O servidor de aplicativo retorna uma resposta levando dados ou os conteúdos relacionados à solicitação, sob o monitor do módulo de verificação de segurança de app e da intercepção do proxy.
[00172] Estágio 918a: O aplicativo solicita que o módulo de verificação de segurança de app finalize o monitoramento.
[00173] Estágio 918b: O aplicativo solicita que o proxy finalizar a procura/intercepção de dados relacionados ao app.
[00174] Estágio 919: O proxy armazena dados procurados/interceptados ou conteúdos para um dispositivo de armazenamento ou um repositório de dados.
[00175] Estágio 920: O app responde à solicitação de finalização.
[00176] Estágio 921: O proxy responde à solicitação de finalização.
[00177] Estágio 922: O gerenciador VM responde à solicitação de finalização.
[00178] Estágio 923: O agendador armazena resultados do procedimento de coleta de dados de aplicativos no dispositivo de armazenamento ou no repositório de dados.
[00179] FIG. 9C é um fluxograma do módulo de colheita de dados 3000 ou os proxies mostrados nas FIGS. 7A-7H em procurar/interceptar dados/conteúdos relacionados a um app [00180] Estágio 931: Receber uma solicitação de interceptação do gerenciador VM quando o app é ativado. Note que a solicitação de interceptação pode incluir a identidade de um app.
[00181] Estágio 932: Associar a solicitação interceptadora com dados/conteúdos novos relacionados ao app durante o recolhimento de dados/conteúdos novos. Note que os dados ou conteúdos novos podem ser associados na forma de pilhas.
[00182] Estágio 933: Interceptar ou/e analisar os dados/conteúdos recolhidos relacionados ao app.
[00183] Estágio 934: Responder a uma solicitação de finalização e armazenar os dados/conteúdo recolhidos em um dispositivo de armazenamento ou um repositório de dados.
[00184] FIG. 9D ilustra um fluxograma de um agendador de acordo com uma modalidade; e [00185] Estágio 941: Recuperar uma apólice de agendamento de um dispositivo de armazenamento ou um repositório de dados. Note que um evento de cronômetro (por exemplo, estabelecer um registro de tempo) pode ser invocado ao se recuperar a apólice de agendamento.
[00186] Estágio 942: Enviar uma solicitação interceptadora a um gerenciador VM.
[00187] Estágio 943: Esperar por um aviso de finalização, e armazenar os dados/conteúdos interceptados relativos ao app mediante o recebimento do aviso de finalização.
[00188] FIG. 9E é um fluxograma de um gerenciador VM (robô) de acordo com uma modalidade.
[00189] Estágio 951: Receber uma solicitação de interceptação de um agendador quando um aplicativo é ativado, onde a solicitação de interceptação é para interceptar dados/conteúdos relacionados com o app.
[00190] Estágio 952: O gerenciador VM é ativado pelo agendador para interceptar os dados/conteúdos relacionados com o app.
[00191] Estágio 953: Executar as funções do aplicativo de acordo com o agendador.
[00192] Estágio 954: Enviar a solicitação de interceptação para um módulo de verificação de segurança de aplicativo.
[00193] Estágio 955: Enviar a solicitação de interceptação para um módulo de colheita de dados ou proxy.
[00194] Estágio 956: Informar o agendador para finalizar a sua atividade e armazenar dados/conteúdos relacionados com o app para um dispositivo de armazenamento ou um repositório de dados.
[00195] A presente invenção divulga um outro método de busca de aplicativos. O método inclui a etapa de execução de pelo menos um aplicativo. O aplicativo pode ser executado em um ambiente em que se pretendia rodar ou em uma máquina virtual. Quando os aplicativos são executados, dados de aplicativo correspondentes são gerados. Dados de aplicativo podem ser recebidos do servidor de aplicativo correspondente e/ou criados pelo próprio aplicativo. Os dados de aplicativo podem ser estáticos ou dinâmicos com base em como funciona o aplicativo. Os dados de aplicativo podem ser armazenados em um dispositivo de armazenamento tal como um banco de dados ou uma memória do sistema presente. Interface, tal como um campo de busca da web, pode ser então provida para permitir que os usuários deem entrada em suas consultas de busca. Quando uma consulta de usuário é recebida, uma busca é realizada para identificar dados de aplicativos relevantes para as consultas. Se dados de aplicativos relevantes são identificados, informações sobre os aplicativos correspondentes a esses dados de aplicativo relevantes são transmitidas para o usuário consultando.
[00196] Uma pessoa versada na técnica entende que o método de pesquisa associado ao aplicativo é semelhante ao método de pesquisa no contexto dos aplicativos, que foi descrito em detalhes anteriormente.
Portanto, todas as modalidades, métodos, sistemas e componentes relacionados aos apps se aplicam para aplicativos.
REIVINDICAÇÕES

Claims (28)

1. Sistema para a busca de aplicativos de software, caracterizado pelo fato de que compreende: um ou mais aplicativos de software; um ou mais servidores configurados para executar o um ou mais aplicativos de software; um ou mais agendadores configurados para agendar os um ou mais servidores para executar os um ou mais aplicativos de software de acordo com uma apólice de agendamento; um ou mais bancos de dados; um ou mais programas de computador configurados para coletar dados de aplicativo dos um ou mais aplicativos de software e para armazenar os dados de aplicativo coletados no um ou mais bancos de dados; e um ou mais instrumentos de busca configurados para prover serviços de busca para a busca de aplicativos de software usando os dados de aplicativo coletados e armazenados nos um ou mais bancos de dados.
2. Sistema, de acordo com a reivindicação 1, caracterizado pelo fato de que os um ou mais programas de computador adicíonalmente compreendem um módulo robô configurado para simular comportamentos de usuário para executar os um ou mais aplicativos de software para pelo menos um dentre gerar e receber os dados de aplicativo.
3. Sistema, de acordo com a reivindicação 2, caracterizado pelo fato de que o módulo robô simula os comportamentos de usuário pela gravação de comportamentos de usuários reais que operam os um ou mais aplicativos de software.
4. Sistema, de acordo com a reivindicação 1, caracterizado pelo fato de que um ou mais programas de computador adicionalmente compreendem um proxy recolhedor de dados configurado para procurar ou armazenar em cache os dados de aplicativo dos um ou mais aplicativos de software
5. Sistema, de acordo com a reivindicação 1, caracterizado pelo fato de que adicionalmente compreende: um envoltório, configurado para prover eventos de entrada e/ou instruções para a execução de um ou mais aplicativos de software.
6. Sistema, de acordo com a reivindicação 5, caracterizado pelo fato de que o envoltório é adicionalmente configurado para envolver os um ou mais aplicativos de software com um API para ajudar os um ou mais servidores a executar os um ou mais aplicativos de software.
7. Sistema, de acordo com a reivindicação 1, caracterizado pelo fato de que adicionalmente compreende: um API de dispositivo para rodar, configurado para ajudar uma máquina virtual de um ou mais servidores para executar os um ou mais aplicativos de software.
8. Sistema, de acordo com a reivindicação 1, caracterizado pelo fato de que adicionalmente compreende: um módulo hipervísor, configurado para controlar uma máquina virtual executando os um ou mais aplicativos de software.
9. Sistema, de acordo com a reivindicação 1, caracterizado pelo fato de que os um ou mais aplicativos de software compreendem um app móvel, um aplicativo da web, uma extensão ou um plug-in capaz de ser executado em um computador pessoal.
10. Sistema, de acordo com a reivindicação 1, caracterizado pelo fato de que os um ou mais programas de computador adicionalmente compreendem um ou mais módulos robô e os um ou mais agendadores são adicionalmente configurados para agendar os um ou mais módulos robô com base na apólice de agendamento.
11. Sistema, de acordo com a reivindicação 1, caracterizado pelo fato de que a apólice de agendamento é gerada pela análise de pelo menos um dentre uma frequência de execução, uma ordem de execução, um comprimento de execução e uma prioridade de execução de um ou mais aplicativos de software.
12. Sistema, de acordo com a reivindicação 1, caracterizado pelo fato de que o agendador é adicionalmente configurado para analisar pelo menos um dentre uma categoria e frequência de execução de um ou mais aplicativos de software para definir a apólice de agendamento
13. Método para a busca de aplicativos de software, caracterizado pelo fato de que compreende: agendamento de um ou mais aplicativos de software para execução de acordo com uma apólice de agendamento; execução de um ou mais aplicativos de software de acordo com a apólice de agendamento; coleta de dados de aplicativo dos um ou mais aplicativos de software. armazenamento dos dados de aplicativo coletados; recepção de uma consulta; busca dos dados de aplicativo coletados; e transmissão de informações sobre aplicativos de software cujos correspondentes dados de aplicativo armazenados são relevantes para a consulta do aplicativo.
14. Método de acordo com a reivindicação 13, caracterizado pelo fato de que adicionalmente compreende uma etapa de: simulação de comportamentos de usuário para executar os um ou mais aplicativos de software para gerar os dados de aplicativo.
15. Método de acordo com a reivindicação 14, caracterizado pelo fato de que a etapa de simulação compreende: análise de interfaces dos um ou mais aplicativos de software.
16. Método de acordo com a reivindicação 15, caracterizado pelo fato de que a etapa de análise adicionalmente compreende: sonda aleatória das interfaces dos um ou mais aplicativos de software.
17. Método de acordo com a reivindicação 14, caracterizado pelo fato de que a etapa de simulação compreende: simulação dos comportamentos de usuário pela gravação de comportamentos de usuários humanos que operam os um ou mais aplicativos de software.
18. Método de acordo com a reivindicação 13, caracterizado pelo fato de que adicionalmente compreende: procura dos dados de aplicativo dos um ou mais aplicativos de software; e armazenamento dos dados de aplicativo procurados e armazenados em cache.
19. Método de acordo com a reivindicação 13, caracterizado pelo fato de que adicionalmente compreende: envolvimento dos um ou mais aplicativos de software com um aplicativo de dispositivo para rodar para ajudar a execução dos um ou mais aplicativos de software.
20. Método de acordo com a reivindicação 13, caracterizado pelo fato de que os um ou mais aplicativos de software compreendem um app móvel, um aplicativo da web, uma extensão e/ou um píug-in capaz de ser executado em um computador pessoal.
21. Método de acordo com a reivindicação 13, caracterizado pelo fato de que a etapa de agendamento adicionalmente compreende agendar um ou mais módulos robô para executar os um ou mais aplicativos de software de acordo com a apólice de agendamento.
22. Método para a busca de aplicativos, caracterizado pelo fato de que compreende as etapas de: agendamento de pelo menos um aplicativo de software para execução de acordo com uma apólice de agendamento; execução do pelo menos um aplicativo de software; coleta de dados de aplicativo de pelo menos um aplicativo de software; armazenamento dos dados de aplicativo coletados; recepção de uma consulta; busca dos dados de aplicativo coletados; e transmissão de informações sobre aplicativos de software cujos correspondentes dados de aplicativo armazenados são relevantes para a consulta.
23. Método de acordo com a reivindicação 22, caracterizado pelo fato de que a etapa de execução compreende: execução do pelo menos um aplicativo de software numa máquina virtual;
24. Método de acordo com a reivindicação 22, caracterizado pelo fato de que a etapa de execução compreende: execução do pelo menos um aplicativo de software através de um comando de usuário, módulo, programa, script ou robô.
25. Método de acordo com a reivindicação 22, caracterizado pelo fato de que o pelo menos um aplicativo de software compreende pelo menos um app, um app da web, uma extensão e/ou um plug-ín capaz de ser executado num dispositivo smart ou em um dispositivo de computação,
26. Método para a busca de aplicativos, caracterizado pelo fato de que compreende as etapas de: coleta de dados de um ou mais aplicativos de software ou servidores de aplicativo; armazenamento dos dados coletados; recepção de uma consulta; busca dos dados de aplicativo coletados; e transmissão das informações sobre aplicativos de software cujos correspondentes dados coletados são relevantes para a consulta.
27. Método de acordo com a reivindicação 26, caracterizado pelo fato de que a etapa de coleta adicionalmente compreende: dirigir os um ou mais aplicativos de software ou os um ou mais servidores de aplicativo para transferir os dados.
28. Método de acordo com a reivindicação 26, caracterizado pelo fato de que adicionalmente compreende: análise dos um ou mais aplicativos de software para achar a URL/URI do servidor de aplicativo para coletar os dados.
BR102014019318A 2013-08-07 2014-08-05 sistema para a busca de aplicativos de software, método para a busca de aplicativos de software e método para a busca de aplicativos BR102014019318A2 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US201361862967P 2013-08-07 2013-08-07

Publications (1)

Publication Number Publication Date
BR102014019318A2 true BR102014019318A2 (pt) 2016-09-27

Family

ID=51300568

Family Applications (1)

Application Number Title Priority Date Filing Date
BR102014019318A BR102014019318A2 (pt) 2013-08-07 2014-08-05 sistema para a busca de aplicativos de software, método para a busca de aplicativos de software e método para a busca de aplicativos

Country Status (6)

Country Link
EP (1) EP2846273A1 (pt)
JP (1) JP5859074B2 (pt)
CN (1) CN105354189A (pt)
BR (1) BR102014019318A2 (pt)
RU (1) RU2598988C2 (pt)
TW (1) TWI553493B (pt)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI581588B (zh) * 2015-06-12 2017-05-01 財團法人工業技術研究院 行動邊緣計算之控制方法、網路系統與服務平台
US10120949B2 (en) 2015-10-29 2018-11-06 Google Llc Indexing native application data
CN105488112B (zh) * 2015-11-20 2019-09-17 小米科技有限责任公司 信息推送方法及装置
CN106844019A (zh) * 2015-12-04 2017-06-13 阿里巴巴集团控股有限公司 应用程序控制方法、应用程序跳转关联配置方法及装置
US11087234B2 (en) * 2016-01-29 2021-08-10 Verizon Media Inc. Method and system for distributed deep machine learning

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5910903A (en) * 1997-07-31 1999-06-08 Prc Inc. Method and apparatus for verifying, analyzing and optimizing a distributed simulation
US6785671B1 (en) * 1999-12-08 2004-08-31 Amazon.Com, Inc. System and method for locating web-based product offerings
US7234139B1 (en) * 2000-11-24 2007-06-19 Catharon Productions, Inc. Computer multi-tasking via virtual threading using an interpreter
US7552422B2 (en) * 2004-03-31 2009-06-23 Microsoft Corporation Test case inheritance controlled via attributes
US7356590B2 (en) * 2005-07-12 2008-04-08 Visible Measures Corp. Distributed capture and aggregation of dynamic application usage information
US7630972B2 (en) * 2007-01-05 2009-12-08 Yahoo! Inc. Clustered search processing
JP2009116733A (ja) * 2007-11-08 2009-05-28 Nec Corp アプリケーション検索システム、アプリケーション検索方法、モニタ端末、検索サーバおよびプログラム
JP5287099B2 (ja) * 2008-09-29 2013-09-11 日本電気株式会社 検索装置、情報処理装置、検索方法、プログラム及び記録媒体
US8943478B2 (en) * 2009-07-14 2015-01-27 International Business Machines Corporation Fault detection and localization in dynamic software applications
WO2012014284A1 (ja) * 2010-07-27 2012-02-02 株式会社日立製作所 テストシナリオ生成方法、テストシナリオ生成システム、及び、テストシナリオ生成プログラム
US9805022B2 (en) * 2010-12-09 2017-10-31 Apple Inc. Generation of topic-based language models for an app search engine
US20120316955A1 (en) * 2011-04-06 2012-12-13 Yahoo! Inc. System and Method for Mobile Application Search
EP2610776B1 (en) * 2011-09-16 2019-08-21 Veracode, Inc. Automated behavioural and static analysis using an instrumented sandbox and machine learning classification for mobile security
US8737980B2 (en) * 2011-09-27 2014-05-27 W2Bi, Inc. End to end application automatic testing
JP5420623B2 (ja) * 2011-11-05 2014-02-19 京セラドキュメントソリューションズ株式会社 プログラム
JP5906705B2 (ja) * 2011-12-06 2016-04-20 日本電気株式会社 テストシステム、テスト方法、及び、プログラム

Also Published As

Publication number Publication date
RU2598988C2 (ru) 2016-10-10
TWI553493B (zh) 2016-10-11
JP5859074B2 (ja) 2016-02-10
TW201508523A (zh) 2015-03-01
JP2015035216A (ja) 2015-02-19
CN105354189A (zh) 2016-02-24
RU2014131897A (ru) 2016-02-20
EP2846273A1 (en) 2015-03-11

Similar Documents

Publication Publication Date Title
Xu et al. Hey, you have given me too many knobs!: Understanding and dealing with over-designed configuration in system software
US20150046425A1 (en) Methods and systems for searching software applications
Anwar et al. Improving docker registry design based on production workload analysis
Harter et al. Slacker: Fast distribution with lazy docker containers
Venner Pro hadoop
US9087066B2 (en) Virtual disk from network shares and file servers
US11062022B1 (en) Container packaging device
US20150178052A1 (en) Automated experimentation platform
US20140040231A1 (en) Methods and systems for searching software applications
US8359317B2 (en) Method and device for indexing resource content in computer networks
US20110283181A1 (en) Test Framework of Visual Components in a Multitenant Database Environment
Lehner et al. Web-scale data management for the cloud
BR102014019318A2 (pt) sistema para a busca de aplicativos de software, método para a busca de aplicativos de software e método para a busca de aplicativos
US20190034464A1 (en) Methods and systems that collect data from computing facilities and export a specified portion of the collected data for remote processing and analysis
US11222083B2 (en) Web crawler platform
CN110781505B (zh) 系统构建方法及装置、检索方法及装置、介质和设备
Vivian et al. Rapid and efficient analysis of 20,000 RNA-seq samples with Toil
Paro ElasticSearch cookbook
US11429257B1 (en) Dynamically generated help based on derived hierarchical context
Chullipparambil Big data analytics using Hadoop tools
US11936739B2 (en) Automated reset of session state
Parthasarathy Learning Cassandra for Administrators
Meng et al. Conducting reproducible research with Umbrella: Tracking, creating, and preserving execution environments
US20200272679A1 (en) Missing web page relocation
US20190303501A1 (en) Self-adaptive web crawling and text extraction

Legal Events

Date Code Title Description
B03A Publication of an application: publication of a patent application or of a certificate of addition of invention
B08F Application fees: dismissal - article 86 of industrial property law

Free format text: REFERENTE A 4A ANUIDADE.

B08K Lapse as no evidence of payment of the annual fee has been furnished to inpi (acc. art. 87)

Free format text: EM VIRTUDE DO ARQUIVAMENTO PUBLICADO NA RPI 2473 DE 29-05-2018 E CONSIDERANDO AUSENCIA DE MANIFESTACAO DENTRO DOS PRAZOS LEGAIS, INFORMO QUE CABE SER MANTIDO O ARQUIVAMENTO DO PEDIDO DE PATENTE, CONFORME O DISPOSTO NO ARTIGO 12, DA RESOLUCAO 113/2013.