BR112016027820B1 - Sistema de desenvolvimento e método implementado por computador para desenvolver elementos de aplicativo de um sistema de computador e controlar uma pesquisa dos elementos - Google Patents

Sistema de desenvolvimento e método implementado por computador para desenvolver elementos de aplicativo de um sistema de computador e controlar uma pesquisa dos elementos Download PDF

Info

Publication number
BR112016027820B1
BR112016027820B1 BR112016027820-8A BR112016027820A BR112016027820B1 BR 112016027820 B1 BR112016027820 B1 BR 112016027820B1 BR 112016027820 A BR112016027820 A BR 112016027820A BR 112016027820 B1 BR112016027820 B1 BR 112016027820B1
Authority
BR
Brazil
Prior art keywords
search
type
elements
user
development
Prior art date
Application number
BR112016027820-8A
Other languages
English (en)
Other versions
BR112016027820A8 (pt
BR112016027820A2 (pt
Inventor
Anton Shakirzianov
Suriya Narayanan
Liang Yu
Tomasz Kaminski
Original Assignee
Microsoft Technology Licensing, Llc
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
Priority claimed from US14/539,521 external-priority patent/US9377999B2/en
Application filed by Microsoft Technology Licensing, Llc filed Critical Microsoft Technology Licensing, Llc
Publication of BR112016027820A2 publication Critical patent/BR112016027820A2/pt
Publication of BR112016027820A8 publication Critical patent/BR112016027820A8/pt
Publication of BR112016027820B1 publication Critical patent/BR112016027820B1/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/36Creation of semantic tools, e.g. ontology or thesauri
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • 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

Abstract

ACESSO A CONTEÚDO SEMÂNTICO EM UM SISTEMA DE DESENVOLVIMENTO. Um sistema de desenvolvimento compreende, em um exemplo, um módulo de desenvolvimento detectando entradas de desenvolvimento de usuário e transformando elementos do sistema de computador com base nas entradas de desenvolvimento de usuário. Os elementos compreendem tipos modelados no sistema de computador. Um módulo de interface de usuário gera uma exibição de interface de usuário com um mecanismo de entrada de usuário, e detecta uma entrada de pesquisa de usuário recebida por meio do mecanismo de entrada de usuário indicativa de uma consulta de pesquisa de usuário para procurar os elementos do sistema de computador. Um mecanismo de pesquisa identifica um parâmetro de pesquisa baseada em tipo para a consulta de pesquisa de usuário. O mecanismo de pesquisa é controlado para ativar um componente de pesquisa baseada em tipo com base no parâmetro de pesquisa baseada em tipo. O componente de pesquisa baseada em tipo executa uma pesquisa de elemento para retornar um conjunto de resultados de pesquisa na exibição de interface de usuário.

Description

Antecedentes
[0001] Programas de computador são desenvolvidos por meio de várias ferramentas de desenvolvimento. Por exemplo, muitos desenvolvedores de softwares usam ambientes de desenvolvimento interativos (ou integrados) (IDEs) a fim de desenvolver software. Os desenvolvedores usam um IDE a fim de desenvolver modelos de tipos dentro de um sistema de computador, e a fim de personalizar esses modelos.
[0002] Um ambiente de desenvolvimento interativo exemplar inclui uma pluralidade de ferramentas diferentes de tal maneira que desenvolvedores podem desenvolver e testar o código que precisa ser desenvolvido e a fim de personalizar um sistema de computador tal como desejado. A título de exemplo, um IDE pode incluir um editor de código fonte, uma ou mais ferramentas de automação de construção e um depurador que permitem a programadores de computador desenvolver software. Ilustrativamente, alguns IDEs incluem um compilador, um interpretador ou ambos. Eles podem incluir um sistema de controle de versão e várias ferramentas para simplificar a construção de interfaces gráficas de usuário. Eles também podem incluir um navegador de classe, um navegador de objeto e um diagrama de hierarquia de classes para uso com desenvolvimento de software orientado a objeto. Assim, desenvolvedores podem usar IDEs para gerar o código e metadados, junto com personalizações para código e metadados, os quais podem ser utilizados ao desenvolver um sistema para uso em uma dada organização. Por exemplo, um desenvolvedor pode trabalhar com código fonte e arquivos de metadados que dizem respeito a elementos de aplicação. Uma aplicação pode exigir criar ou mudar tanto metadados quanto código que consome os metadados em vários modos.
[0003] Ao gerar ou personalizar software usando um IDE, o de senvolvedor de aplicações modela conceitos específicos (que podem ser representados como tipos) dentro de uma aplicação e, onde necessário, grava código. Aplicações grandes, para as quais desenvolvedores frequentemente usam IDEs, podem incluir milhares de tipos diferentes.
[0004] A título de exemplo, alguns sistemas de computadores in cluem sistemas de negócios, tais como sistemas de planejamento de recursos de empresa (ERP), sistemas de gerenciamento de relações com clientes (CRM), sistemas de linhas de negócios (LOB) entre outros. Estes tipos de sistemas de computadores frequentemente têm muitos milhares de tipos diferentes que são modelados e personalizados. A título de exemplo, alguns destes sistemas de negócios frequentemente têm milhares de formas diferentes, sozinhos, para não mencionar muitos outros tipos.
[0005] Sistemas de negócios não são os únicos tipos de sistemas de computadores que têm um grande número de tipos. Por exemplo, sistemas de jogos de computador, ou uma grande variedade de outros tipos de sistemas, frequentemente também têm muitos milhares de tipos diferentes que são modelados no sistema de software.
[0006] A discussão anterior é fornecida meramente para informação de antecedentes geral e não é pretendida para ser usada como uma ajuda ao determinar o escopo da matéria em questão reivindicada.
Sumário
[0007] Durante desenvolvimento de software, um desenvolvedor procura por elementos para facilitar o processo de desenvolvimento. Uma arquitetura de pesquisa permite a um desenvolvedor pesquisar metadados e código que satisfazem certos critérios. A arquitetura de pesquisa aproveita informação de elemento semântico para retornar resultados que são relevantes para a consulta do desenvolvedor.
[0008] Um sistema de desenvolvimento compreende, em um exemplo, um módulo de desenvolvimento que detecta entradas de de-senvolvimento de usuário e transforma elementos do sistema de computador com base nas entradas de desenvolvimento de usuário. Os elementos compreendem tipos modelados no sistema de computador. Um módulo de interface de usuário gera uma exibição de interface de usuário com um mecanismo de entrada de usuário, e detecta uma entrada de pesquisa de usuário recebida por meio do mecanismo de entrada de usuário indicativa de uma consulta de pesquisa de usuário para procurar os elementos do sistema de computador. Um mecanismo de pesquisa identifica um parâmetro de pesquisa baseada em tipo para a consulta de pesquisa de usuário. O mecanismo de pesquisa é controlado para ativar um componente de pesquisa baseada em tipo com base no parâmetro de pesquisa baseada em tipo. O componente de pesquisa baseada em tipo executa uma pesquisa de elemento para retornar um conjunto de resultados de pesquisa na exibição de interface de usuário.
[0009] Este Sumário é fornecido para introduzir uma seleção de conceitos em uma forma simplificada, os quais são descritos adicionalmente a seguir na Descrição Detalhada. Este Sumário não é pretendido para identificar recursos chaves ou recursos essenciais da matéria em questão reivindicada, nem é pretendido para ser usado como uma ajuda ao determinar o escopo da matéria em questão reivindicada. A matéria em questão reivindicada não está limitada às implementações que resolvem algumas ou todas as desvantagens notadas nos antecedentes.
Descrição Resumida dos Desenhos
[00010] A figura 1 é um diagrama de blocos de um exemplo de uma arquitetura de pesquisa semântica.
[00011] A figura 2 é um fluxograma ilustrando um exemplo de um método para gerar componentes de pesquisa semântica.
[00012] A figura 3 é um diagrama de blocos ilustrando funcionalidade de pesquisa semântica, de acordo com um exemplo.
[00013] A figura 4 é um fluxograma ilustrando um exemplo de um método para executar uma pesquisa usando componentes de pesquisa semântica.
[00014] A figura 5 ilustra um exemplo de uma exibição de interface de usuário.
[00015] A figura 6 ilustra um exemplo de uma exibição de interface de usuário.
[00016] A figura 7 é um diagrama de blocos mostrando um exemplo da arquitetura ilustrada na figura 1, implementada em uma arquitetura de computação em nuvem.
[00017] As figuras 8-12 mostram vários exemplos de dispositivos móveis que podem ser usados com a arquitetura mostrada na figura 1.
[00018] A figura 13 é um diagrama de blocos de um ambiente de computação de exemplo.
Descrição Detalhada
[00019] A figura 1 é um diagrama de blocos de um exemplo de uma arquitetura de pesquisa semântica 100. A arquitetura 100 inclui um sistema de desenvolvimento interativo (por exemplo, um IDE) 102 tendo a funcionalidade de desenvolvimento 104. A figura 1 mostra que um desenvolvedor 106 interage com o sistema 102 para executar desenvolvimento e/ou personalização dos elementos de aplicação 107 que estão executando em um sistema de computador. Por exemplo, cada um dos elementos de aplicação inclui os metadados 109, e também pode incluir o código 111. A título de exemplo, o desenvolvedor 106 usa a funcionalidade 104 para desenvolver os elementos 107 para uma aplicação, tal como ao criar ou mudar os metadados 109 e o có- digo 111. Em um exemplo, mas não a título de limitação, os elementos 107 compreendem objetos em um ambiente de programação orientada a objetos. Qualquer(s) linguagem(s) de programação adequada(s) po- de(m) ser utilizada(s) no sistema 102.
[00020] No exemplo ilustrado, um armazenamento de modelos 108 armazena os metadados e código correspondendo a vários tipos diferentes de elementos de aplicação (por exemplo, tipos), e é acessível, por exemplo, para o sistema 102 e para um gerador de código de componente de pesquisa 130. Um "tipo" se refere a uma abstração, representando conceitos modelados em um sistema. Por exemplo, em um sistema de negócios, tipos de elementos podem incluir formas, entidades, classes, tabelas, itens de menu, funções de segurança e/ou permissões, para citar alguns. Em um exemplo, objetos de tabelas contêm metadados e código para persistir dados de aplicação em uma base de dados. Em um outro exemplo, objetos de formas contêm metadados e código para descrever conteúdo de informação para ser exibido em vários dispositivos para usuários de aplicações consumirem informação e interagir com a aplicação.
[00021] Em um exemplo, ao utilizar a funcionalidade de desenvolvimento 104 para desenvolver os elementos de aplicação 107, ao desenvolvedor 106 é apresentada uma vista integrada ou de IDE para codificar os elementos de aplicação 107. Um exemplo simplificado está mostrado na Tabela 1 a seguir para ilustração. Tabela 1 public class Table ! extends common
[00022] Neste modo, código e metadados sendo autorados pelo desenvolvedor 106 para desenvolver os elementos de aplicação 107 são apresentados em um primeiro formato, por exemplo, em uma vista de editor de código que fornece uma interface favorável ao usuário para codificar os elementos de aplicação 107. Entretanto, enquanto o desenvolvedor 106 observa e autora o código e metadados no primeiro formato, o sistema de desenvolvimento interativo 102 mantém e opera em uma representação de código fonte dos elementos de aplicação desenvolvidos em uma segundo formato que é diferente do primeiro formato. Em um exemplo, uma representação serializada compreendendo código e metadados é mantida pelo sistema 102 para cada elemento. O segundo formato é legível por máquina e tratável para execução pelo sistema 102. Em um exemplo, mas não para limitação, o armazenamento de modelos 108 compreende um sistema de arquivo que armazena as representações de código fonte como arquivos XML. Os XMLs de metadados e código compreendem estruturas de elementos serializadas, cada uma com seu próprio tipo. A Tabela 2 a seguir mostra um arquivo XML de exemplo que corresponde à vista integrada mostrada na Tabela 1: Tabela 2
[00024] No exemplo anterior, os metadados e código estão seriali- zados em um arquivo XML. Isto é, fragmentos de código (isto é, sequências de caracteres não estruturadas) e de metadados (isto é, conjuntos estruturados de propriedades e valores) estão intercalados no arquivo XML. Entretanto, os versados na técnica entendem que outros formatos podem ser utilizados.
[00025] O desenvolvedor 106 pode interagir com o sistema de de-senvolvimento interativo 102 por meio de um dispositivo de desenvolvedor separado (tal como um computador pessoal, um tablet, um outro dispositivo móvel, etc.), ou diretamente. O desenvolvedor 106 também pode interagir com o sistema 102 por meio de uma rede (por exemplo, remotamente). O desenvolvedor 106 está mostrado interagindo diretamente (por exemplo, localmente) com o sistema 102 na figura 1 somente para o propósito de exemplo.
[00026] O sistema de desenvolvimento interativo 102, em um exemplo, inclui um processador 110 e o módulo de interface de usuário 112. O módulo de interface de usuário 112 gera a exibição de interface de usuário 116 com os mecanismos de entrada de usuário 118, para interação pelo desenvolvedor 106. O desenvolvedor 106 interage com os mecanismos de entrada de usuário 118 a fim de controlar e manipular o sistema de desenvolvimento interativo 102. Em um exemplo, o desenvolvedor 106 pode fazer isto para implementar a funcionalidade de desenvolvimento 104 assim como para usar um módulo de pesquisa 120 e um módulo de navegação 122. O sistema 102 também pode incluir os outros itens 114.
[00027] O desenvolvedor 106 pode usar código e metadados existentes no armazenamento de modelos 108, ou pode gerar novo código e metadados ou uma combinação de código e metadados existentes e novos. Ao fazer assim, elementos existentes no armazenamento de modelos 108 podem ser mudados ou deletados, e novos elementos podem ser adicionados. Para facilitar desenvolvimento, o desenvolvedor 106 pode desejar uma pesquisa no armazenamento de modelos 108 para descobrir elementos de interesse. Por exemplo, o desenvolvedor 106 pode desejar localizar um elemento particular para personalizar dentro da aplicação.
[00028] Entretanto, por causa em parte do tamanho da base de códigos, a qual frequentemente é muito grande, pode ser difícil descobrir elementos que satisfaçam certos critérios de pesquisa de desenvolvedor. Uma implementação de pesquisa conta com construir um índice antecipadamente, junto ao qual a consulta de desenvolvedor é executada. Por exemplo, existem rastreadores que navegam em conteúdo e constroem índices, os quais são então usados para pesquisa. No caso de uma plataforma de desenvolvimento, uma vez que um elemento é mudado ou adicionado, o índice se torna desatualizado. Adicionalmente, dado o tamanho da base de códigos, reconstruir o índice repetidamente gasta uma grande quantidade de tempo.
[00029] No exemplo ilustrado, a arquitetura de pesquisa semântica 100 obtém resultados de pesquisa ao usar o módulo de pesquisa 120 para pesquisar de forma semântica no armazenamento de modelos 108 considerando os nomes, tipos e/ou propriedades dos elementos. A pesquisa é semântica em que ela aproveita um entendimento da estrutura dos tipos de elementos, e um significado dos tipos de elementos e das propriedades dentro desses tipos de elementos. Tal como discutido com detalhes adicionais a seguir, a estrutura particular dos tipos de ele- mentos pode ser relevante para procurar os elementos do armazenamento de modelos 108. A título de ilustração, mas não para limitação, cada tipo de elemento tem uma estrutura particular de propriedades, métodos e/ou computações que definem comportamento de tempo de execução para elementos desse tipo de elemento. Por exemplo, um tipo de elemento de tabela pode incluir um nome (por exemplo, "tabela de clientes") e um conjunto de propriedades que identificam atributos para um cliente (por exemplo, ID de cliente, endereço, etc.). Também, neste exemplo, o tipo de elemento de tabela pode incluir um método para computar um valor para o cliente e/ou um método para exibir o valor.
[00030] Antes de descrever a operação completa da arquitetura 100 com mais detalhes, uma vista geral resumida será fornecida. Em um exemplo, o módulo de pesquisa 120 compreende um mecanismo de pesquisa que recebe uma consulta de pesquisa de usuário definindo critérios de pesquisa na forma de uma ou mais indicações. As indicações definem parâmetros de pesquisa, e podem incluir um ou mais caracteres formando uma sequência de caracteres ou termo. O mecanismo de pesquisa analisa sintaticamente a consulta de pesquisa do desenvolvedor 106 para identificar um parâmetro ou restrição de pesquisa semântica e executa a consulta de pesquisa junto ao armazenamento de modelos 108 para obter um conjunto de resultados de pesquisa que são fornecidos para o desenvolvedor 106. Em um exemplo, executar a consulta compreende casar a uma ou mais indicações com propriedades e/ou métodos nos elementos de aplicação.
[00031] O parâmetro de pesquisa semântica pode ser fornecido explicitamente na consulta de pesquisa propriamente dita, ou pode ser implicado ou derivado da consulta de pesquisa. Por exemplo, no exemplo descrito a seguir com relação à figura 5, o desenvolvedor 106 introduz uma consulta de pesquisa de: type:table, method name:insert property:"source=crosscompany"
[00032] Aqui, o parâmetro de pesquisa semântica identificado da consulta compreende uma restrição baseada em tipo. Isto é, o desenvolvedor 106 deseja elementos que são do tipo de elemento "table", têm um método com um nome casando com a indicação "insert", e uma propriedade de origem com um valor casando com a indicação "crosscompany". Embora modalidades neste documento sejam discutidas no contexto de restrições baseadas em tipos, é notado que outros parâmetros ou restrições de pesquisa semântica podem ser usados.
[00033] No exemplo ilustrado, para executar a pesquisa, o módulo de pesquisa 120 acessa um armazenamento de componentes de pesquisa 128 que armazena uma pluralidade de componentes de pesquisa (isto é, os componentes de pesquisa 124 e 126) que tenham sido gerados por um gerador de código de componente de pesquisa 130. Um exemplo de gerar componentes de pesquisa usando o gerador de código de componente de pesquisa 130 é discutido com detalhes adicionais a seguir com relação à figura 2. Resumidamente, o gerador de código de componente de pesquisa 130 inclui um processador 131 configurado para gerar um componente de pesquisa para cada tipo de elemento diferente modelado no armazenamento de modelos 108. Cada componente de pesquisa é gerado para um tipo de elemento particular dos tipos de elementos. Neste modo, cada componente de pesquisa é específico para a estrutura do tipo de elemento particular para o qual ele foi gerado. Em um exemplo, componentes de pesquisa são gerados e armazenados no armazenamento 128 para todos os tipos de elementos possíveis que podem ser usados pelo desenvolvedor 106. Por exemplo, em um caso um conjunto predefinido de tipos de elementos está disponível para o desenvolvedor 106, e quaisquer novos tipos de elementos são adicionados ao sistema 102 por meio de uma atualização para o sistema 102.
[00034] O módulo de pesquisa 120 usa as restrições de pesquisa baseada em tipo da consulta de pesquisa para identificar um ou mais dos componentes de pesquisa do armazenamento de componentes de pesquisa 128 para serem usados para retornar uma lista de resultados, a partir dos elementos no armazenamento de modelos 108. Um exemplo de pesquisar no armazenamento de modelos 108 usando os componentes de pesquisa é discutido com detalhes adicionais a seguir com relação à figura 4. Resumidamente, o módulo de pesquisa 120 identifica um componente de pesquisa correspondente para cada restrição de pesquisa baseada em tipo. No exemplo anterior, o módulo de pesquisa 120 identifica o componente de pesquisa (isto é, o componente de pesquisa 124 ou 126) que foi gerado para o tipo de elemento de tabela. O componente de pesquisa identificado é instanciado para cada elemento no armazenamento de modelos 108 tendo o tipo de elemento de tabela, para identificar elementos que casam com os valores de nome de método e de propriedade na consulta de pesquisa. O módulo de pesquisa 120 agrega resultados de pesquisa obtidos do componente de pesquisa instanciado. O módulo de navegação 122 facilita navegação de usuário nos resultados de pesquisa.
[00035] A arquitetura de pesquisa 100 aproveita assim informação semântica com relação aos elementos de aplicação 107 ao executar uma pesquisa no armazenamento de modelos 108, sem ter que construir ou manter um índice antecipadamente. Isto pode reduzir carga e tempo de processamento, e exigências de memória na execução da funcionalidade de pesquisa no sistema de desenvolvimento, e pode melhorar relevância de resultado de pesquisa para a consulta do usuário.
[00036] Para o propósito de ilustração, no exemplo da figura 1, para cada tipo diferente de elemento de aplicação, a arquitetura 100 mantém um componente de pesquisa específico que é configurado para pesquisar os elementos existentes do armazenamento de modelos 108 desse tipo de elemento. Entretanto, esses componentes de pes- quisa também são capazes de pesquisar quaisquer novos elementos adicionados pelo desenvolvedor 106 ao armazenamento de modelos 108, independente do tipo (isto é, todos os tipos de elementos têm um componente de pesquisa predefinido) ou das propriedades específicas do novo elemento. De modo oposto, no caso de um sistema de pesquisa indexado, adicionar os novos elementos ao armazenamento de modelos 108 exigiria que o índice fosse atualizado para incluir os novos elementos.
[00037] Para o propósito de ilustração adicional, assumir que o ar-mazenamento de modelos 108 inclui dois tipos de elementos diferentes (isto é, um tipo de elemento de tabela 132 e um tipo de elemento de forma 134). Um primeiro componente de pesquisa 124 é gerado para o tipo de elemento 132 e um segundo componente de pesquisa 126 é gerado para o tipo de elemento 134. No exemplo da figura 1, o gerador de código 130 precisa ser acionado somente uma vez para cada tipo de elemento. Neste modo, uma vez que os componentes de pesquisa 124 e 126 tenham sido gerados, o gerador de código 130 não precisa regenerar ou modificar os mesmos, mesmo se elementos existentes dos tipos 132 e 134 forem modificados no armazenamento de modelos 108 e/ou novos elementos dos tipos 132 e 134 forem adicionados ao armazenamento de modelos 108.
[00038] O componente de pesquisa 124 é instanciado quando o módulo de pesquisa 120 procura por elementos do tipo 132 e o componente de pesquisa 126 é instanciado quando o módulo de pesquisa 120 procura por elementos do tipo 134. Em um exemplo, quando ambos os tipos de elementos 132 e 134 estão sendo pesquisados, os componentes de pesquisa 124 e 126 podem operar em paralelo para reduzir o tempo de pesquisa. É notado que embora somente dois tipos de elementos e componentes de pesquisa baseada em tipo estejam mostrados na figura 1, qualquer número de tipos de elementos e de componentes de pesquisa semântica pode ser implementado.
[00039] Embora o armazenamento de modelos 108 e o armazenamento de componentes de pesquisa 128 estejam ilustrados na figura 1 como sendo separados do sistema de desenvolvimento interativo 102, é notado que o armazenamento de modelos 108 e/ou o armazenamento de componentes de pesquisa 128 podem ser parte do sistema de desenvolvimento interativo 102. Entretanto, por causa de considerações de largura de banda e de latência, em algumas implementações o armazenamento de modelos 108 e o armazenamento de componentes de pesquisa 128 podem ser mantidos em um mesmo sistema de computação, contudo isto é exatamente um exemplo. Neste modo, embora as solicitações e resultados de pesquisa possam ser enviados por meio de uma rede, a arquitetura de pesquisa 100 não exige transmissão do armazenamento de modelos 108. De novo, isto é somente um exemplo de uma arquitetura.
[00040] Também, a figura 1 mostra uma variedade de blocos funcionais diferentes. Será notado que os blocos podem ser consolidados de maneira que mais funcionalidade seja executada por cada bloco, ou eles podem ser divididos de maneira que a funcionalidade também seja distribuída.
[00041] Também deve ser notado que a discussão anterior mostrou um número de armazenamentos de dados, incluindo o armazenamento de modelos 108 e o armazenamento de componentes de pesquisa 128. Embora eles estejam mostrados como dois armazenamentos de dados independentes, eles também podem ser formados dentro de um único armazenamento de dados. Além do mais, os dados nesses armazenamentos de dados também podem ser armazenados em múltiplos armazenamentos de dados adicionais. Também, os armazenamentos de dados podem ser locais para os ambientes, agentes, módulos e/ou componentes que os acessam, ou eles podem ficar remotos dos mesmos e acessíveis para esses ambientes, agentes, módulos e/ou componentes. De forma similar, alguns podem ser locais enquanto que outros são remotos.
[00042] No exemplo ilustrado, os processadores 110 e 131 compreendem processadores de computador com memória associada e conjunto de circuitos de sincronismo (não mostrados separadamente). Eles são uma parte funcional do agente ou ambiente ao qual eles pertencem, e ilustrativamente são ativados por outros itens nesse ambiente ou agente e facilitam a funcionalidade dos mesmos.
[00043] A figura 2 é um fluxograma ilustrando um exemplo de um método 200 para gerar componentes de pesquisa semântica. Para o propósito de ilustração, e não para limitação, o método 200 será descrito no contexto da arquitetura 100 gerando componentes de pesquisa baseada em tipo.
[00044] O método 200 pode ser iniciado periodicamente e/ou em resposta a uma condição ou evento. Por exemplo, o método 200 pode ser iniciado em resposta a uma atualização para o sistema 102 que adiciona ou modifica os tipos de elementos que são suportados pelo sistema 102. Em um outro exemplo, o método 200 pode ser iniciado em resposta a uma entrada proveniente do desenvolvedor 106 (por exemplo, ao selecionar um controle tal como abrir, fechar, salvar, etc. na interface de usuário 116).
[00045] Na etapa 202, o gerador de código de componente de pesquisa 130 acessa o armazenamento de modelos 108 e determina, na etapa 204, se existem quaisquer novos tipos de elementos para os quais deve gerar um componente de pesquisa baseada em tipo. Em um exemplo, o gerador de código de componente de pesquisa 130 analisa alguns (por exemplo, as mudanças e adições mais recentes) ou todos os elementos no armazenamento de modelos 108 e compara esses elementos com tipos de elementos existentes ou conhecidos (isto é, os tipos 132 e 134). Por exemplo, o gerador de código de componente de pesquisa 130 identifica elementos que tenham sido mudados ou adicionados pelo desenvolvedor 106.
[00046] Se um novo tipo de elemento for identificado, o gerador de código de componente de pesquisa 130 analisa a estrutura do novo tipo de elemento na etapa 206 para gerar um componente de pesquisa baseada em tipo para o novo tipo de elemento na etapa 208. Em um exemplo, o gerador de código de componente de pesquisa 130 analisa sintaticamente a estrutura do novo tipo de elemento em quaisquer sub- tipos, e determina quais propriedades o tipo e/ou subtipos contêm, quaisquer tipos de elementos filhos, quais tipos de elementos derivam do tipo de elemento, e uma implementação para reprodutores de propriedade do tipo de elemento. Cada reprodutor de propriedade define uma função para recuperar uma propriedade do tipo de elemento, por exemplo, com base na localização da propriedade no tipo de elemento e/ou em relações para outras propriedades. Em um exemplo, o gera-dor de código de componente de pesquisa 130 gera código de reprodutor de propriedade diferente para pesquisar partes diferentes do tipo de elemento estrutura. Por exemplo, uma peça do código pode pesquisar métodos em uma dada parte do elemento e uma peça do código pode considerar controles, etc. Com relação ao exemplo de tipo de elemento de tabela de clientes discutido anteriormente, um reprodutor de propriedade pode ser configurado para retornar a propriedade "ID de cliente" e um outro reprodutor de propriedade pode ser configurado para retornar a propriedade "endereço".
[00047] Cada componente de pesquisa é configurado para seguir um elemento padrão definido (por exemplo, um padrão de elementos, propriedades, métodos filhos, etc.), o qual é baseado no tipo de elemento para o qual o componente de pesquisa é gerado. Por exemplo, mas não por limitação, na figura 1 os tipos de elementos 132 e 134 têm padrões diferentes de elementos filhos um do outro. O componente de pesquisa 124 é configurado para chamar método(s) de pesquisa para examinar e retornar valores dos elementos filhos associados com o tipo de elemento 132, e o componente de pesquisa 126 é configurado para chamar método(s) de pesquisa para examinar e retornar valores dos elementos filhos associados com o tipo de elemento 134.
[00048] A título de exemplo, um elemento de metadados compreende uma estrutura de dados de árvore e é definido por um nome e um tipo de elemento de metadados. O tipo de elemento de metadados é definido adicionalmente por um conjunto de propriedades, com cada propriedade definida por um nome e um tipo de um valor de propriedade. O tipo de valor de propriedade pode ser, por exemplo, mas não por limitação, primitivo (convertível para uma sequência de caracteres (Sim, Não, Data, Etiquetas, etc.)). Tal propriedade é referida como uma "propriedade simples". Um outro tipo de valor de propriedade é um tipo de elemento de metadados contendo elementos de metadados filhos. Tal propriedade pode ser referida como uma "propriedade de nó". Elementos de metadados raízes são elementos que são armazenados diretamente em armazenamento de metadados e não têm quaisquer pais. Elementos de metadados filhos são elementos que são contidos em parte da outra propriedade de nó de elemento. Um caminho de metadados compreende uma sequência de caracteres que identifica unicamente o elemento de metadados e facilita localizar o elemento de metadados. Em um exemplo, a forma do caminho é: dynamics: //<Root_type>/<Root_element_name>[/<Subtype_l>/<Subelement_na mc_ 1 > [/<S ubty pc_2>/<Subc lcmcnt_namc_2> [...]]] Onde: <Root_typc> - tipo do elemento de metadados raiz <Root_element_name> - nome do elemento raiz <Subtype_i> - tipos de cada elemento de metadados filho em uma árvore <Subelement_name_i> - nomes de cada elemento de metadados filho em uma árvore
[00049] Na etapa 210, o componente de pesquisa semântica gerado é armazenado no armazenamento de componentes de pesquisa 128. Se alguns novos tipos de elementos adicionais forem identificados na etapa 212, as etapas 206, 208 e 210 são repetidas para o(s) novo(s) tipo(s) de elemento(s).
[00050] A figura 3 é um diagrama de blocos ilustrando funcionalidade de pesquisa semântica, de acordo com um exemplo. Para o propósito de ilustração, mas não por limitação, a figura 3 será descrita no contexto de funcionalidade de pesquisa semântica na arquitetura 100.
[00051] O bloco 250 fornece uma interface para o sistema de desenvolvimento interativo 102. Por meio do bloco 250, o módulo de pesquisa 120 recebe uma consulta de pesquisa que é fornecida para um analisador sintático de consulta no bloco 252. A consulta fornece um ou mais critérios de pesquisa que definem filtro(s), e pode ter qualquer sintaxe ou gramática adequada.
[00052] Um exemplo de sintaxe relativamente simples é fornecido a seguir: Consulta de pesquisa é search_string, onde: search_string = empty_string search_string = text_without_colon search_string = filter search_string = search_string filter filter = filter_name:filter_value filter_value = text_without_comma filter_value = "any_text" filter_value = filter_value,filter_value filter_name = name OR type OR model OR property Assim a sequência de caracteres de pesquisa consiste de um conjunto de filtros na forma geral: <fil- ter_1>:<filter_1_value>[<filter_2>:<filter_2_value>...[<filter_N>:<filter_N _value>]] Onde <filter_i> é um dos nomes de filtros aceitáveis, e <fil- ter_i_value> é separado por vírgula e possíveis valores de filtragem cotados.
[00053] Tal como ilustrado acima e mostrado na figura 3, um exemplo de critério de pesquisa de usuário é nome de elemento, o qual pode especificar uma sequência de caracteres ou um conjunto de sequências de caracteres. Um elemento é considerado como satisfazendo este critério se o nome do elemento contiver pelo menos uma das sequências de caracteres. Cada valor separado por vírgula pode ser um nome de elemento aceitável. Em um exemplo, nome de elemento é o filtro padrão. Assim, se uma consulta de pesquisa incluir uma única indicação, ela é assumida para ser o nome de elemento. Neste exemplo, se nenhuma restrição baseada em tipo não for identificada, a arquitetura de pesquisa pode instanciar os componentes de pesquisa para todos os tipos de elementos disponíveis.
[00054] Um outro critério de exemplo é tipo de elemento, o qual pode especificar um tipo de elemento ou um conjunto de tipos de elementos. Um elemento é considerado como satisfazendo este critério se ele for de um dos tipos especificados. Cada valor separado por vírgula pode ser um nome de um dos tipos de elementos (isto é, tabela, classe, campo). A consulta de pesquisa pode especificar tanto raiz quanto subtipos como um valor. Em um exemplo, lógica de filtragem pode ser tal como se segue: (roottype_1 OR roottype_2 OR ... OR roottype_N) AND (sub- type_1 OR subtype_2 OR ... OR subtype_N)
[00055] Um outro critério de exemplo é propriedade de elemento, o qual pode especificar um conjunto dos pares de valores chaves "nome da propriedade - valor da propriedade". Um elemento é considerado como satisfazendo o critério se para cada par for verdadeiro que a) o elemento contém uma propriedade "simples" com o nome especificado, e b) este valor da propriedade convertido para uma sequência de caracteres contém o valor especificado. Cada valor separado por vírgula pode ser na forma property_name = property_value.
[00056] No bloco 254, um ou mais componentes de pesquisa baseada em tipo (por exemplo, o componente 124 e/ou 126) são instanciados com base em tipo(s) de elemento(s) identificado(s). Por exemplo, isto pode ser executado ao acessar informação de tipo (por exemplo, do armazenamento de componentes de pesquisa baseada em tipo 128) no bloco 256 com base nos critérios de filtragem de tipo do bloco analisador sintático 252. O bloco 256 fornece informação a respeito do(s) tipo(s) de elemento(s) incluindo, mas não limitado a isto, quais propriedades o(s) tipo(s) contém(êm), os tipos de elementos filhos do tipo de elemento, quais tipos de elementos são derivados do tipo de elemento, e implementação de reprodutores de propriedade para o tipo de elemento.
[00057] Em um exemplo, o bloco 254 usa informação de tipo fornecida pelo bloco 256 para processar as opções de pesquisa a fim de concordar critérios de tipos com critérios de propriedade. Se os critérios de pesquisa incluírem uma ou mais propriedades, usar o bloco de informação de tipo 254 pode filtrar todos os tipos de elementos que não podem conter as propriedades pesquisadas.
[00058] Para cada tipo de elemento a ser pesquisado, o componente de pesquisa baseada em tipo correspondente é instanciado de acordo com o código gerado pelo gerador de código 130.
[00059] No bloco 258, referências para elementos no armazenamento de modelos 108 são obtidas de acordo com os critérios de pesquisa do bloco 254 e os componentes de pesquisa semântica instanciados no bloco 256. Por exemplo, referências de elemento de metada dos podem facilitar obtenção de um nome do elemento raiz (operação rápida que não é conectada com acesso a armazenamento) e/ou carregamento do elemento (operação relativamente grande conectada com acesso a armazenamento).
[00060] No bloco 260, as referências de elementos obtidas no bloco 258 são priorizadas em agrupamentos baseados, por exemplo, nos critérios especificados do nome do elemento ou em outra heurística. Por exemplo, um elemento raiz tendo um nome que contém qualquer um dos nomes pesquisados seria processado antes de elementos raízes que não contêm o nome.
[00061] O bloco 262 processa elementos específicos no armazenamento de modelos 108 para determinar se eles satisfazem os critérios de pesquisa. Em um exemplo, um elemento é considerado como satisfazendo os critérios de pesquisa se o tipo do elemento for um dos tipos exigidos especificados no bloco 254, o nome do elemento contiver um dos nomes exigidos ou uma parte dos mesmos, e para cada par "nome da propriedade - valor da propriedade" especificado por critérios de pesquisa for verdadeiro que o elemento contém uma propriedade com um nome como este, e este valor da propriedade contém o valor da propriedade especificada.
[00062] Em um exemplo, o bloco 262 obtém uma função de predicado de elemento ou outra informação do bloco 264, a qual é usada para determinar se um elemento satisfaz critérios de pesquisa. O bloco 264 cria uma função de predicado para cada um dos tipos de elementos, fornecidos por 262, usando informação do bloco 256. Por exemplo, o bloco 264 fornece os tipos de elementos para o bloco 256 e recebe informação a respeito de implementação de reprodutores de propriedade para cada tipo de elemento.
[00063] Se um elemento no armazenamento de modelos 108 satisfizer os critérios de pesquisa, o resultado é fornecido para o desenvol- vedor 106 por meio do bloco de interface 250.
[00064] A figura 4 é um fluxograma ilustrando um exemplo de um método 300 para executar uma pesquisa usando componentes de pesquisa semântica. Para o propósito de ilustração, mas não por limitação, o método 300 será descrito no contexto da arquitetura 100 executando uma pesquisa usando componentes de pesquisa baseada em tipo.
[00065] Na etapa 302 uma superfície de desenvolvimento é exibida, por exemplo, usando a exibição de interface de usuário 116. Na etapa 304 uma entrada de pesquisa é recebida, e na etapa 306 a entrada de pesquisa é analisada sintaticamente para identificar critérios de pesquisa. Exemplos de critérios de pesquisa incluem, mas não estão limitados a isto, restrições baseadas em tipo, nomes de métodos e valores de propriedades. O módulo de pesquisa 120 então procura no armazenamento de modelos 108 elementos que satisfazem os critérios de pesquisa.
[00066] Na etapa 308, um ou mais componentes de pesquisa baseada em tipo são identificados e instanciados para pesquisa no armazenamento de modelos 108. Por exemplo, tal como discutido anteriormente com relação à figura 3, uma restrição de pesquisa baseada em tipo pode ser definida explicitamente na entrada de pesquisa. Em um outro exemplo, uma restrição de pesquisa baseada em tipo pode ser inferida das indicações fornecidas na entrada de pesquisa. Por exemplo, para um valor de propriedade fornecido na entrada de pesquisa, a etapa 308 pode determinar quais tipos de elementos têm a propriedade correspondente.
[00067] Então, o um ou mais componentes de pesquisa baseada em tipo são instanciados pelo módulo de pesquisa 120 para pesquisar os elementos no armazenamento de modelos 108 com base na consulta de pesquisa. Em um exemplo, uma instanciação separada de um componente de pesquisa é criada para cada elemento do tipo de elemento correspondente.
[00068] Os componentes de pesquisa instanciados são usados para procurar os elementos no armazenamento de modelos 108 na etapa 310, e, na etapa 312, para identificar elementos que satisfazem os critérios identificados pela etapa 306. Tal como discutido anteriormente, em um exemplo, os componentes de pesquisa podem pesquisar representações serializadas (por exemplo, arquivos XML) dos elementos, em vez de pesquisar diretamente os elementos desenvolvidos pelo desenvolvedor 106.
[00069] A título de exemplo, mas não por limitação, enquanto pesquisando uma representação serializada de um elemento no armazenamento de modelos 108, um componente de pesquisa identifica uma parte do elemento que satisfaz os critérios de pesquisa ao descobrir referências (por exemplo, posições de números de linha e de coluna) para os elementos correspondentes nas representações serializadas. O componente de pesquisa pode distinguir o código dos metadados e, para um casamento identificado na representação serializada, computar a posição no código tal como se ele tivesse pesquisado a vista de código integrado que é apresentada para o desenvolvedor. Assim, a partir da perspectiva do desenvolvedor 106, o módulo de pesquisa 120 procura e retorna resultados dentro das vistas de editor de código e/ou editor de metadados, em vez de a representação serializada.
[00070] Em um exemplo, o componente de pesquisa lê o elemento, converte o mesmo para uma expressão orientada a objetos, e aplica seus reprodutores de propriedade para identificar e casar uma propriedade com um critério de pesquisa baseada em propriedade da consulta de pesquisa. O componente de pesquisa converte a propriedade casada para um caminho correspondente que identifica unicamente a propriedade dentro do objeto. Por exemplo, o caminho compreende um identificador de recurso uniforme (URI), o qual pode ser um caminho de metadados tal como discutido anteriormente.
[00071] Na etapa 314, os resultados são retornados como um conjunto de links que indicam casamentos de elementos com os critérios de pesquisa. Por exemplo, o componente de pesquisa identifica um casamento de elemento ao retornar o URI correspondente para um componente agregador do módulo de pesquisa 120. Os URIs de agre- gador são fornecidos para o módulo de interface de usuário 112 para apresentação para o desenvolvedor 106.
[00072] Na etapa 316, uma seleção pelo desenvolvedor 106 de um URI particular é recebida, por exemplo, por meio de interação de usuário tal como um clique de mouse ou outra entrada de usuário. O módulo de navegação 122 decodifica o URI selecionado para identificar a localização de elemento correspondente. Em um exemplo, o URI compreende uma referência para uma propriedade distinta (por exemplo, "source=crosscompany"), onde seleção do URI abre um editor de metadados na localização identificada pelo URI. Em um outro exemplo, o URI compreende uma referência para um corpo de método que inclui um valor, onde seleção do URI abre um editor de código.
[00073] Em um exemplo, os resultados de pesquisa são obtidos e exibidos de modo assíncrono. Isto está representado na figura 4 pela seta 320. Isto é, à medida que os componentes de pesquisa semântica instanciados identificam um elemento que satisfaz os critérios de pesquisa na etapa 312, um URI para o elemento identificado é exibido para o desenvolvedor enquanto a pesquisa continua no plano de fundo.
[00074] A figura 5 ilustra um exemplo de uma exibição de interface de usuário 400 que fornece uma superfície de desenvolvimento por meio da qual o desenvolvedor 106 pode desenvolver elementos de aplicação e executar uma pesquisa usando a arquitetura 100. Para o propósito de ilustração, mas não por limitação, a exibição de interface de usuário 400 será descrita no contexto da arquitetura 100.
[00075] A exibição de interface de usuário 400 inclui uma vista de editor de código 402 que recebe entradas de desenvolvedor para autorar os elementos de aplicação 107 e uma interface de pesquisa semântica 404 que recebe um consulta de pesquisa de desenvolvedor. A título de exemplo, a seguinte consulta de pesquisa foi introduzida no elemento 404: type:table, method name:insert property:"source=crosscompany"
[00076] Usando a sintaxe de exemplo descrita com relação à figura 3, a consulta de pesquisa especifica um filtro de tipo de "table", um filtro de nome de método de "insert", e um filtro de nome de propriedade de "crosscompany". O módulo de pesquisa 120 instancia o componente de pesquisa baseada em tipo correspondendo a um tipo de tabela. A consulta de pesquisa pode ser executada de modo assíncrono que povoa uma janela de resultados 406 com URIs de resultados de pesquisa à medida que eles são obtidos. Isto é, a pesquisa pode começar ao exibir um ou mais URIs de resultados de pesquisa na janela 406, e então acrescentar URIs de resultados de pesquisa adicionais à janela 406 à medida que eles são obtidos. Neste modo, o desenvolvedor 106 pode continuar a interagir com a exibição de interface de usuário 400, por exemplo, ao clicar em um URI desejado, para direcionar a vista 402 para o resultado de pesquisa correspondente enquanto a pesquisa continua a ser executada no plano de fundo para retornar quaisquer resultados adicionais. No exemplo ilustrado, cada URI inclui a informação de etiqueta 408 e a informação de localização 410 que identifica um elemento e uma localização do elemento.
[00077] Em um exemplo, a capacidade de pesquisa do módulo de pesquisa 120 é exposta como uma interface de programação de aplicações (API) junto com um modelo de objeto, que é independente da sintaxe de consulta de pesquisa. Usando a API, uma operação de pesquisa pode ser chamada como um serviço em uma rede que pode ser consumido remotamente a partir de qualquer um de uma pluralidade de dispositivos diferentes (por exemplo, sujeitos aos direitos e segurança de acesso). Os parâmetros para a API de pesquisa são objetos no modelo de objeto e não uma sequência de caracteres de consulta para confirmar para uma sintaxe. Assim, a sintaxe de consulta de pesquisa é desacoplada do pesquisador.
[00078] A título de exemplo, um diagrama de classes para o modelo de objeto pode incluir uma pluralidade de classes diferentes, com cada classe definindo uma ou mais restrições de pesquisa semântica e métodos a ser chamados para procurar e examinar elementos correspondentes. Exemplos de restrições de pesquisa semântica definidas pelas classes de modelos de objetos incluem, mas não estão limitados a isto, restrições de tipo, restrições de propriedade, restrições de código e restrições de nome.
[00079] A figura 6 ilustra uma interface de usuário de exemplo 450 que renderiza resultados de pesquisa usando a API de pesquisa. A interface de usuário 450 inclui um campo de entrada de consulta 452 que recebe uma consulta de pesquisa definindo os parâmetros de pesquisa e um campo de resultados de consulta 454 que exibe os resultados de consulta correspondentes retornados pelo módulo de pesquisa. No exemplo ilustrado, os parâmetros de pesquisa incluem uma classe de restrição de código e identificam uma sequência de caracteres (isto é, "while select") para a restrição de código. A classe de restrição de código inclui métodos para casar a sequência de caracteres, priorizar a pesquisa, etc. O módulo de pesquisa instancia um objeto da classe de restrição de código e executa a pesquisa junto ao armazenamento de modelos.
[00080] Em um exemplo, uma sintaxe diferente pode ser fornecida dependendo do dispositivo do qual a pesquisa é iniciada. Por exemplo, a partir de um computador de mesa de desenvolvedor com uma tela de fator de forma maior, ao desenvolvedor pode ser permitido introduzir uma sequência de caracteres de consulta em uma sintaxe formal. Por outro lado, a partir de um dispositivo móvel com um fator de forma menor, entrada na sintaxe formal pode ser mais difícil para o desenvolvedor. A arquitetura de pesquisa pode ser configurada para facilitar entrada de consulta em uma forma mais simples. Por exemplo, ao usar um dispositivo móvel ou coisa parecida, ao desenvolvedor podem ser apresentados controles tendo funções de pesquisa predefinidas, tal como uma tecla designada para um conjunto específico de restrições de pesquisa (por exemplo, uma pesquisa baseada em tipo específico).
[00081] A presente discussão tem mencionado processadores e servidores. Em um exemplo, os processadores e servidores incluem processadores de computador com memória associada e conjunto de circuitos de sincronismo, não mostrados separadamente. Eles são partes funcionais dos sistemas ou dispositivos aos quais eles pertencem e pelos quais são ativados, e facilitam a funcionalidade dos outros módulos, componentes e/ou itens nesses sistemas.
[00082] Também, diversas exibições de interfaces de usuário têm sido discutidas. Elas podem ter uma grande variedade de formas diferentes e podem ter uma grande variedade de mecanismos de entrada acionáveis por usuário diferentes dispostos nas mesmas. Por exemplo, os mecanismos de entrada acionáveis por usuário podem ser caixas de textos, caixas de verificação, ícones, links, menus suspensos, caixas de pesquisa, etc. Eles também podem ser acionados em uma grande variedade de modos diferentes. Por exemplo, eles podem ser acionados usando um dispositivo da apontar e clicar (tal como um mouse estacionário ou mouse). Eles podem ser acionados usando teclas de hardware, comutadores, um joystick ou teclado, comutadores de polegar almofadas de polegar, etc. Eles também podem ser acionados usando um teclado virtual ou outros acionadores virtuais. Além do mais, onde a tela na qual eles são exibidos é uma tela sensível ao toque, eles podem ser acionados usando gestos de toque. Também, onde o dispositivo que os exibe tem componentes de reconhecimento de fala, eles podem ser acionados usando comandos de fala.
[00083] Diversos armazenamentos de dados também têm sido discutidos. Será notado que cada um deles pode ser dividido em múltiplos armazenamentos de dados. Todos podem ser locais para os sistemas acessando os mesmos, todos podem ser remotos, ou alguns podem ser locais enquanto que outros são remotos. Todas estas configurações são consideradas neste documento.
[00084] Também, as figuras mostram diversos blocos com funcionalidade designada para cada bloco. Será notado que menos blocos podem ser usados e assim a funcionalidade é executada por menos componentes. Também, mais blocos podem ser usados com a funcionalidade distribuída entre mais componentes.
[00085] A figura 7 é um diagrama de blocos da arquitetura 100 mostrada na figura 1, exceto que seus elementos estão dispostos em uma arquitetura de computação em nuvem 500. Computação em nuvem fornece serviços de computação, software, acesso a dados e de armazenamento que não exigem de usuário final conhecimento da localização ou configuração física do sistema que entrega os serviços. Em vários exemplos, computação em nuvem entrega os serviços por meio de uma rede de área estendida, tal como a Internet, usando protocolos apropriados. Por exemplo, provedores de computação em nuvem entregam aplicações através de uma rede de área estendida e eles po-dem ser acessados por meio de um navegador de rede ou qualquer outro componente de computação. Software, módulos ou componentes da arquitetura 100, assim como os dados correspondentes, podem ser armazenados em servidores em uma localização remota. Os recursos de computação em um ambiente de computação em nuvem podem ser consolidados em uma localização de centro de dados remoto ou eles podem ser dispersados. Infraestruturas de computação em nuvem podem entregar serviços por meio de centros de dados compartilhados, mesmo que eles apareçam como um único ponto de acesso para o usuário. Assim, os módulos, funções e componentes descritos neste documento podem ser fornecidos por um provedor de serviços em uma localização remota usando uma arquitetura de computação em nuvem. Alternativamente, eles podem ser fornecidos por um servidor convencional, ou eles podem ser instalados em dispositivos clientes diretamente, ou de outros modos.
[00086] A descrição é pretendida para incluir tanto computação em nuvem pública quanto computação em nuvem privada. Computação em nuvem (tanto pública quanto privada) fornece substancialmente sem interrupção combinações de recursos, assim como uma necessidade reduzida para gerenciar e configurar infraestrutura de hardware subjacente.
[00087] Uma nuvem pública é gerenciada por um fornecedor e tipicamente suporta múltiplos consumidores usando a mesma infraestru- tura. Também, uma nuvem pública, tal como o oposto a uma nuvem privada, pode livrar os usuários finais de gerenciar o hardware. Uma nuvem privada pode ser gerenciada pela organização propriamente dita e a infraestrutura tipicamente não é compartilhada com outras organizações. A organização ainda mantém o hardware para alguma extensão, tal como instalações e reparos, etc.
[00088] No exemplo mostrado na figura 7, alguns itens são similares àqueles mostrados na figura 1 e eles estão numerados de forma similar. A figura 7 mostra especificamente que o sistema de desenvolvimento interativo 102, o armazenamento de modelos 108, o armaze- namento de componentes de pesquisa 128 e o gerador de código do componente de pesquisa 130 podem ficar localizados na nuvem 502 (que pode ser pública, privada, ou uma combinação onde partes são públicas enquanto que outras são privadas). Portanto, o desenvolvedor 106 usa um dispositivo de usuário 504 para acessar esses sistemas por meio da nuvem 502.
[00089] A figura 7 também representa um outro exemplo de uma arquitetura de nuvem. A figura 7 mostra que também é considerado que alguns elementos da arquitetura 100 podem ser dispostos na nuvem 502 enquanto que outros são não. A título de exemplo, o armazenamento de modelos 108 pode ser disposto fora da nuvem 502, e acessado por meio da nuvem 502. Em um outro exemplo, o armazenamento de componentes de pesquisa 128 também pode ficar fora da nuvem 502. Em um outro exemplo, o gerador de código do componente de pesquisa 130 também pode ficar fora da nuvem 502. Indepen-dente de onde eles estejam localizados, eles podem ser acessados diretamente pelo dispositivo 504, por meio de uma rede (uma rede de área estendida ou uma rede de área local), eles podem ser hospedados em um sítio remoto por um serviço, ou eles podem ser fornecidos como um serviço por meio de uma nuvem ou acessados por um serviço de conexão que reside na nuvem. Todas estas arquiteturas são consideradas neste documento.
[00090] Também deve ser notado que a arquitetura 100, ou partes dela, pode ser disposta em uma grande variedade de dispositivos diferentes. Alguns desses dispositivos incluem servidores, computadores de mesa, laptops, tablets ou outros dispositivos móveis, tais como computadores de mão, telefones celulares, telefones inteligentes, reprodutores de multimídia, assistentes digitais pessoais, etc.
[00091] A figura 8 é um diagrama de blocos simplificado de um exemplo de um dispositivo de computação móvel ou portátil que pode ser usado como um dispositivo de mão de usuário ou de cliente 16, no qual o presente sistema (ou partes dele) pode ser implementado. As figuras 9-12 são exemplos de dispositivos portáteis ou móveis.
[00092] A figura 8 fornece um diagrama de blocos geral dos componentes de um dispositivo cliente 16 que pode executar módulos ou componentes da arquitetura 100 ou que interage com a arquitetura 100, ou ambos. No dispositivo 16, um enlace de comunicações 13 é fornecido que permite que o dispositivo portátil se comunique com outros dispositivos de computação e em alguns exemplos fornece um canal para receber informação automaticamente, tal como por meio de varredura. Exemplos do enlace de comunicações 13 incluem uma porta infravermelha, uma porta serial/USB, uma porta de rede a cabo tal como uma porta de Ethernet, e uma porta de rede sem fio permitindo comunicação por meio de um ou mais protocolos de comunicação incluindo Serviço Geral de Rádio por Pacotes (GPRS), LTE, HSPA, HSPA+ e outros protocolos de rádio 3G e 4G, 1Xrtt e Serviço de Mensagens Curtas, os quais são serviços sem fio usados para fornecer acesso celular a uma rede, assim como os protocolos 802.11 e 802.11b (Wi-Fi) e o protocolo Bluetooth, os quais fornecem conexões sem fio locais para redes.
[00093] Em outros exemplos, aplicações ou sistemas são recebidos em uma placa Digital Segura (SD) removível que é conectada a uma interface de cartão SD 15. A interface de cartão SD 15 e os enlaces de comunicação 13 se comunicam com um processador 17 (que também pode incorporar os processadores 110 da figura 1) ao longo de um barramento 19 que também é conectado à memória 21 e aos componentes de entrada/saída (I/O) 23, assim como ao relógio 25 e ao sistema de localização 27.
[00094] Os componentes de entrada/saída 23, em um exemplo, são fornecidos para facilitar operações de entrada e de saída. Os compo- nentes de entrada/saída 23 para vários exemplos do dispositivo 16 podem incluir componentes de entrada tais como teclas, sensores de toque, sensores de múltiplos toques, sensores óticos ou de vídeo, sensores de voz, telas sensíveis ao toque, sensores de proximidade, microfones, sensores de inclinação, e comutadores de gravidade e componentes de saída tais como um dispositivo de exibição, um alto- falante e ou uma porta de impressora. Outros componentes de entra- da/saída 23 também podem ser usados.
[00095] O relógio 25 compreende um componente de relógio de tempo real que produz um horário e data. Ele também pode fornecer funções de sincronismo para o processador 17.
[00096] O sistema de localização 27 inclui um componente que produz uma localização geográfica corrente do dispositivo 16. Isto pode incluir, por exemplo, um sistema de posicionamento global (GPS) receptor, um sistema LORAN, um sistema de cálculo de posição, um sistema de triangulação celular ou outro sistema de posicionamento. Ele também pode incluir, por exemplo, software de mapeamento ou software de navegação que gera mapas, rotas de navegação e outras funções geográficas desejadas.
[00097] A memória 21 armazena o sistema operacional 29, as configurações de rede 31, as aplicações 33, os arranjos de configurações de aplicação 35, o armazenamento de dados 37, os acionadores de comunicação 39 e os arranjos de configurações de comunicação 41. Ela também pode armazenar um sistema cliente 24 que pode ser parte ou toda a arquitetura 100. A memória 21 pode incluir todos os tipos de dispositivos de memória legível por computador tangível volátil e não volátil. Ela também pode incluir mídias de armazenamento de computador (descritas a seguir). A memória 21 armazena instruções legíveis por computador que, quando executadas pelo processador 17, fazem com que o processador execute etapas ou funções implementadas por computador de acordo com as instruções. O processador 17 também pode ser ativado por outros módulos ou componentes para facilitar sua funcionalidade.
[00098] Exemplos das configurações de rede 31 incluem coisas tais como informação proxy, informação de conexão de Internet e mapeamentos. Os arranjos de configurações de aplicação 35 incluem arranjos que adaptam a aplicação para uma empresa ou usuário específico. Os arranjos de configurações de comunicação 41 fornecem parâmetros para se comunicar com outros computadores e incluem itens tais como parâmetros GPRS, parâmetros SMS, nomes e senhas de usuários de conexão.
[00099] As aplicações 33 podem ser aplicações que tenham sido armazenadas anteriormente no dispositivo 16 ou aplicações que são instaladas durante o uso, contudo estas podem ser parte do sistema operacional 29, ou também hospedadas externas ao dispositivo 16.
[000100] A figura 9 mostra um exemplo no qual dispositivo 16 é um tablet 600. Na figura 9, o computador 600 está mostrado com a tela de exibição de interface de usuário 602. A tela 602 pode ser uma tela sensível ao toque (assim gestos de toque de um dedo do usuário podem ser usados para interagir com a aplicação) ou uma interface capacitada para caneta que recebe entradas de uma caneta ou apontador. Ele também pode usar um teclado virtual na tela. Certamente, ele também pode ser conectado a um teclado ou outro dispositivo de entrada de usuário por meio de um mecanismo de conexão adequado, tal como um enlace sem fio ou porta USB, por exemplo. O computador 600 também pode receber entradas de voz igualmente.
[000101] As figuras 10 e 11 fornecem exemplos adicionais dos dispositivos 16 que podem ser usados, contudo outros também podem ser usados. Na figura 10, um telefone com recursos, telefone inteligente ou telefone móvel 45 é fornecido como o dispositivo 16. O telefone 45 inclui um conjunto dos miniteclados 47 para discar números de telefones, um mostrador 49 capaz de exibir imagens incluindo imagens de aplicação, ícones, páginas de rede, fotografias e vídeo, e as teclas de controle 51 para selecionar itens mostrados no mostrador. O telefone inclui uma antena 53 para receber sinais de telefone celular tais como Serviço Geral de Rádio por Pacotes (GPRS) e 1Xrtt, e sinais de Serviço de Mensagens Curtas (SMS). Em alguns exemplos, o telefone 45 também inclui um encaixe para cartão Digital Seguro (SD) 55 que aceita um cartão SD 57.
[000102] O dispositivo móvel da figura 11 é um assistente digital pessoal (PDA) 59 ou um reprodutor de multimídia ou um tablet, etc. (referido em seguida como PDA 59). O PDA 59 inclui uma tela indutiva 61 que detecta a posição de um apontador 63 (ou de outros indicadores, tais como um dedo do usuário) quando o apontador é posicionado sobre a tela. Isto permite ao usuário selecionar, destacar e deslocar itens na tela assim como desenhar e gravar. O PDA 59 também inclui diversas teclas ou botões de entrada de usuário (tais como a tecla 65) que permitem ao usuário rolar através de opções de menu ou de outras opções de exibição que são exibidas no mostrador 61, e permitem ao usuário mudar aplicações ou selecionar funções de entrada de usuário, sem contactar o mostrador 61. Embora não mostrado, o PDA 59 pode incluir uma antena interna e um transmissor/receptor infra-vermelho que permitem comunicação sem fio com outros computadores, assim como portas de conexão que permitem conexões de hardware para outros dispositivos de computação. Tais conexões de hardware tipicamente são feitas por meio de um berço que se conecta ao outro computador por meio de uma porta serial ou USB. Como tal, estas conexões não são conexões de rede. Em um exemplo, o dispositivo móvel 59 também inclui uma abertura para cartão SD 67 que aceita um cartão SD 69.
[000103] A figura 12 é similar à figura 10 exceto que o telefone é um telefone inteligente 71. O telefone inteligente 71 tem um mostrador sensível ao toque 73 que exibe ícones ou azulejos ou outros mecanismos de entrada de usuário 75. Os mecanismos 75 podem ser usados por um usuário para executar aplicações, fazer chamadas, executar operações de transferência de dados, etc. De uma maneira geral, o telefone inteligente 71 é construído em um sistema operacional móvel e oferece capacidade de computação e conectividade mais avançadas do que um telefone com recursos.
[000104] Deve ser notado que outras formas dos dispositivos 16 são possíveis.
[000105] A figura 13 é um exemplo de um ambiente de computação no qual a arquitetura 100, ou partes dela, (por exemplo) pode ser implementada. Com referência para a figura 13, um sistema exemplar para implementar alguns exemplos inclui um dispositivo de computação de uso geral na forma de um computador 810. Componentes do computador 810 podem incluir, mas não estão limitados a isto, uma unidade de processamento 820 (que pode compreender o processador 110), uma memória de sistema 830 e um barramento de sistema 821 que acopla vários componentes de sistema incluindo a memória de sistema à unidade de processamento 820. O barramento de sistema 821 pode ser qualquer um dos diversos tipos de estruturas de barra- mento incluindo um barramento de memória ou controlador de memória, um barramento periférico e um barramento local usando qualquer uma de uma variedade de arquiteturas de barramento. A título de exemplo, e não de limitação, tais arquiteturas incluem barramento de Arquitetura Padrão da Indústria (ISA), barramento de Arquitetura de Microcanal (MCA), barramento ISA Aprimorado (EISA), barramento local da Associação de Padrões Eletrônicos de Vídeo (VESA), e bar- ramento de Interconexão de Componentes Periféricos (PCI) também conhecido como barramento Mezanino. Memória e programas descritos com relação à figura 1 podem ser implementados em partes correspondentes da figura 13.
[000106] O computador 810 tipicamente inclui uma variedade de mídias legíveis por computador. Mídias legíveis por computador podem ser quaisquer mídias disponíveis que possam ser acessadas pelo computador 810 e incluem tanto mídias voláteis e não voláteis quanto mídias removíveis e não removíveis. A título de exemplo, e não de limitação, mídias legíveis por computador podem compreender mídias de armazenamento de computador e mídias de comunicação. Mídias de armazenamento de computador são diferentes de um sinal de dados modulado ou onda portadora e não incluem os mesmos. Elas incluem mídias de armazenamento de hardware incluindo mídias voláteis e não voláteis, removíveis e não removíveis, implementadas em qualquer método ou tecnologia para armazenamento de informação tal como instruções legíveis por computador, estruturas de dados, módulos de programa ou outros dados. Mídias de armazenamento de computador incluem, mas não estão limitadas a isto, RAM, ROM, EEPROM, memória flash ou outra tecnologia de memória, CD-ROM, discos versáteis digitais (DVD) ou outro armazenamento de disco ótico, cassetes magnéticos, fita magnética, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético, ou qualquer outra mídia que possa ser usada para armazenar a informação desejada e que possa ser acessada pelo computador 810. Mídias de comunicação tipicamente incorporam instruções legíveis por computador, estruturas de dados, módulos de programa ou outros dados em um mecanismo de transporte e incluem quaisquer mídias de entrega de informação. O termo "sinal de dados modulado" significa um sinal que tenha uma ou mais das suas características estabelecidas ou mudadas de uma maneira tal como para codificar informação no sinal. A tí- tulo de exemplo, e não de limitação, mídias de comunicação incluem mídias com fio tais como uma rede com fio ou conexão direta com fio, e mídias sem fio tais como acústica, RF, infravermelha e outras mídias sem fio. Combinações de qualquer uma das indicadas acima também devem ser incluídas no escopo de mídias legíveis por computador.
[000107] A memória de sistema 830 inclui mídias de armazenamento de computador na forma de memória volátil e/ou não volátil tal como a memória somente de leitura (ROM) 831 e a memória de acesso aleatório (RAM) 832. Um sistema de entrada/saída básico 833 (BIOS), contendo as rotinas básicas que ajudam a transferir informação entre elementos dentro do computador 810, tal como durante inicialização, tipicamente é armazenado na ROM 831. A RAM 832 tipicamente contém módulos de dados e/ou de programas que são imediatamente acessíveis e/ou sendo operado presentemente pela unidade de processamento 820. A título de exemplo, e não de limitação, a figura 13 ilustra o sistema operacional 834, os programas de aplicação 835, os outros módulos de programa 836 e os dados de programa 837.
[000108] O computador 810 também pode incluir outras mídias de armazenamento de computador removíveis/não removíveis, volá- teis/não voláteis. Somente a título de exemplo, a figura 13 ilustra uma unidade de disco rígido 841 que lê ou grava em mídias magnéticas não removíveis não voláteis, e uma unidade de disco ótico 855 que lê ou grava em um disco ótico não volátil removível 856 tal como um CD ROM ou em outras mídias óticas. Outras mídias de armazenamento de computador removíveis/não removíveis, voláteis/não voláteis, que podem ser usadas no ambiente de operação exemplar incluem, mas não estão limitadas a isto, cassetes de fita magnética, cartões de memória flash, discos versáteis digitais, fita de vídeo digital, RAM de estado sólido, ROM de estado sólido e outros mais. A unidade de disco rígido 841 tipicamente é conectada ao barramento de sistema 821 por meio de uma interface de memória não removível tal como a interface 840, e a unidade de disco ótico 855 tipicamente é conectada ao bar- ramento de sistema 821 por uma interface de memória removível, tal como a interface 850.
[000109] Alternativamente, ou além disso, a funcionalidade descrita neste documento pode ser executada, pelo menos em parte, por um ou mais componentes lógicos de hardware. Por exemplo, e sem limitação, tipos de componentes lógicos de hardware que podem ser usados incluem Matrizes de Portas Programáveis em Campo (FPGAs), Circuitos Integrados de Aplicação Específica (ASICs), Produtos Padrões de Aplicação Específica (ASSPs), sistemas em um chip (SOCs), Dispositivos Lógicos Programáveis Complexos (CPLDs), etc.
[000110] As unidades e suas mídias de armazenamento de computador associadas discutidas anteriormente e ilustradas na figura 13 fornecem armazenamento de instruções legíveis por computador, estruturas de dados, módulos de programa e outros dados para o computador 810. Na figura 13, por exemplo, a unidade de disco rígido 841 está ilustrada como armazenando o sistema operacional 844, os programas de aplicação 845, os outros módulos de programa 846 e os dados de programa 847. Deve ser notado que estes componentes podem ser iguais ou diferentes do sistema operacional 834, dos programas de aplicação 835, dos outros módulos de programa 836 e dos da-dos de programa 837. O sistema operacional 844, os programas de aplicação 845, os outros módulos de programa 846 e os dados de programa 847 têm números diferentes aqui para ilustrar que, no mínimo, eles são cópias diferentes.
[000111] Um usuário pode introduzir comandos e informação para o computador 810 por meio de dispositivos de entrada tais como um teclado 862, um microfone 863 e um dispositivo indicador 861, tal como um mouse, mouse estacionário ou superfície sensível ao toque. Outros dispositivos de entrada (não mostrados) podem incluir um joystick, controle para jogos de computador, antena parabólica, scanner ou coisa parecida. Estes e outros dispositivos de entrada frequentemente são conectados à unidade de processamento 820 por meio de uma interface de entrada de usuário 860 que é acoplada ao barramento de sistema, mas podem ser conectados por outra interface e estruturas de barramento, tais como uma porta paralela, porta de jogos ou um barramento serial universal (USB). Um mostrador 891 ou outro tipo de dispositivo de exibição também é conectado ao barramento de sistema 821 por meio de uma interface, tal como uma interface de vídeo 890. Além do monitor, computadores também podem incluir outros dispositivos periféricos de saída tais como os alto-falantes 897 e a impressora 896, os quais podem ser conectados por meio de uma interface periférica de saída 895.
[000112] O computador 810 é operado em um ambiente de rede usando conexões lógicas para um ou mais computadores remotos, tais como um computador remoto 880. O computador remoto 880 pode ser um computador pessoal, um dispositivo de mão, um servidor, um roteador, um PC de rede, um dispositivo par ou outro nó de rede comum, e tipicamente inclui todos ou muitos dos elementos descritos anteriormente em relação ao computador 810. As conexões lógicas representadas na figura 13 incluem uma rede de área local (LAN) 871 e uma rede de área estendida (WAN) 773, mas também podem incluir outras redes. Tais ambientes de rede são comuns em escritórios, redes de computadores estendidas de empresa, intranets e na Internet.
[000113] Quando usado em um ambiente de rede LAN, o computador 810 é conectado à LAN 871 por meio de uma interface ou adaptador de rede 870. Quando usado em um ambiente de rede WAN, o computador 810 tipicamente inclui um modem 872 ou outro dispositivo para estabelecer comunicações pela WAN 873, tal como a Internet. O modem 872, o qual pode ser interno ou externo, pode ser conectado ao barramento de sistema 821 por meio da interface de entrada de usuário 860, ou por outro mecanismo apropriado. Em um ambiente de rede, módulos de programa representados em relação ao computador 810, ou partes do mesmo, podem ser armazenados no dispositivo de armazenamento de memória remoto. A título de exemplo, e não de limitação, a figura 13 ilustra os programas de aplicação remota 885 como residindo no computador remoto 880. Será percebido que as conexões de rede mostradas são exemplares e outros meios de estabelecer um enlace de comunicações entre os computadores podem ser usados.
[000114] Também deve ser notado que as diferentes modalidades descritas neste documento podem ser combinadas em diferentes modos. Isto é, partes de uma ou mais modalidades podem ser combinadas com partes de uma ou mais outras modalidades. Tudo isto é considerado neste documento.
[000115] O Exemplo 1 é um sistema de desenvolvimento compreendendo um módulo de desenvolvimento detectando entradas de desenvolvimento de usuário e transformando elementos do sistema de computador com base nas entradas de desenvolvimento de usuário. Os elementos compreendem tipos modelados no sistema de computador. Um módulo de interface de usuário gera uma exibição de interface de usuário com um mecanismo de entrada de usuário, e detecta uma entrada de pesquisa de usuário recebida por meio do mecanismo de entrada de usuário indicativa de uma consulta de pesquisa de usuário para procurar os elementos do sistema de computador. Um mecanis-mo de pesquisa identifica um parâmetro de pesquisa baseada em tipo para a consulta de pesquisa de usuário. O mecanismo de pesquisa é controlado para ativar um componente de pesquisa baseada em tipo com base no parâmetro de pesquisa baseada em tipo. O componente de pesquisa baseada em tipo executa uma pesquisa de elemento para retornar um conjunto de resultados de pesquisa na exibição de interface de usuário.
[000116] O Exemplo 2 é o sistema de desenvolvimento de qualquer um ou de todos os exemplos anteriores, em que o módulo de desenvolvimento é parte de um ambiente de desenvolvimento interativo (IDE).
[000117] O Exemplo 3 é o sistema de desenvolvimento de qualquer um ou de todos os exemplos anteriores, em que o usuário é um desenvolvedor, e os elementos do sistema de computador compreendem elementos de aplicação que são personalizados pelo desenvolvedor.
[000118] O Exemplo 4 é o sistema de desenvolvimento de qualquer um ou de todos os exemplos anteriores, em que o parâmetro de pesquisa baseada em tipo identifica um tipo de elemento particular selecionado dos tipos modelados no sistema de computador, e o mecanismo de pesquisa é controlado para restringir a pesquisa de elemento a elementos tendo o tipo de elemento particular.
[000119] O Exemplo 5 é o sistema de desenvolvimento de qualquer um ou de todos os exemplos anteriores, em que a consulta de pesquisa de usuário inclui uma série de caracteres e o tipo de elemento particular.
[000120] O Exemplo 6 é o sistema de desenvolvimento de qualquer um ou de todos os exemplos anteriores, em que o conjunto de resultados de pesquisa compreende elementos do tipo de elemento particular que têm valores de propriedades que casam com a série de caracteres.
[000121] O Exemplo 7 é o sistema de desenvolvimento de qualquer um ou de todos os exemplos anteriores, em que os elementos do sistema de computador compreendem uma pluralidade de tipos diferentes, cada tipo tendo um conjunto de propriedades e métodos que defi- nem comportamento de tempo de execução para elementos desse tipo de elemento. O sistema compreende adicionalmente um armazenamento de componentes de pesquisa armazenando uma pluralidade de componentes de pesquisa, cada componente de pesquisa correspondendo a um dado tipo dos tipos diferentes e sendo configurado para pesquisar o conjunto de propriedades e métodos para elementos do dado tipo.
[000122] O Exemplo 8 é o sistema de desenvolvimento de qualquer um ou de todos os exemplos anteriores, em que o mecanismo de pesquisa identifica o componente de pesquisa baseada em tipo do armazenamento de componentes de pesquisa que corresponde ao tipo de elemento particular, identifica cada um de uma pluralidade de elementos do sistema de computador que tem o tipo de elemento particular, e procura os elementos identificados com base na consulta de pesquisa de usuário usando o componente de pesquisa identificado.
[000123] O Exemplo 9 é o sistema de desenvolvimento de qualquer um ou de todos os exemplos anteriores, em que o componente de pesquisa identificado é instanciado para cada um da pluralidade de elementos identificados tendo o tipo de elemento particular, e o mecanismo de pesquisa obtém o conjunto de resultados de pesquisa ao agregar resultados de pesquisa da pluralidade de componentes de pesquisa instanciados, e exibe os resultados de pesquisa agregados na exibição de interface de usuário.
[000124] O Exemplo 10 é o sistema de desenvolvimento de qualquer um ou de todos os exemplos anteriores, em que o conjunto de resultados de pesquisa é obtido e exibido de modo assíncrono.
[000125] O Exemplo 11 é o sistema de desenvolvimento de qualquer um ou de todos os exemplos anteriores, e compreendendo adicionalmente um armazenamento de modelos armazenando, para cada um dos elementos, uma representação serializada do elemento compre- endendo código e metadados do elemento. O mecanismo de pesquisa executa a pesquisa de elemento ao acessar as representações seriali- zadas no armazenamento de modelos.
[000126] O Exemplo 12 é o sistema de desenvolvimento de qualquer um ou de todos os exemplos anteriores, em que o mecanismo de pesquisa identifica uma representação serializada particular no armazenamento de modelos, correspondendo a um dado elemento dos elementos, com base no parâmetro de pesquisa baseada em tipo, e procura a representação serializada particular com base na consulta de pesquisa de usuário.
[000127] O Exemplo 13 é o sistema de desenvolvimento de qualquer um ou de todos os exemplos anteriores, em que o mecanismo de pesquisa identifica uma parte do dado elemento, da representação seriali- zada particular, que casa com a consulta de pesquisa de usuário, e identifica informação de caminho que identifica unicamente a parte do dado elemento.
[000128] O Exemplo 14 é o sistema de desenvolvimento de qualquer um ou de todos os exemplos anteriores, em que a informação de caminho compreende um identificador de recurso uniforme (URI), o módulo de interface de usuário gera uma representação selecionável por usuário do URI, a qual é selecionável para apresentar a parte do dado elemento em uma interface de usuário de editor.
[000129] O Exemplo 15 é um sistema de desenvolvimento compreendendo um armazenamento de dados que modela uma pluralidade de tipos de elementos diferentes, um módulo de desenvolvimento detectando entradas de desenvolvedor e transformando elementos de aplicação dos tipos de elementos diferentes com base nas entradas de desenvolvedor, e um gerador de componente de pesquisa gerando um componente de pesquisa diferente para cada um dos tipos de elementos modelados no armazenamento de dados. O sistema de desenvol- vimento também compreende um armazenamento de componentes de pesquisa armazenando os componentes de pesquisa gerados pelo gerador de componente de pesquisa para a pluralidade de tipos de elementos, e um mecanismo de pesquisa detectando uma entrada de pesquisa de usuário e sendo controlado para ativar um componente de pesquisa selecionado dos componentes de pesquisa para pesquisar os elementos de aplicação de um dado tipo de elemento dos tipos de elementos.
[000130] O Exemplo 16 é o sistema de desenvolvimento de qualquer um ou de todos os exemplos anteriores, em que o gerador de componente de pesquisa é configurado para gerar cada componente de pesquisa ao analisar uma estrutura de um dado tipo de elemento dos tipos de elementos e gerar funções de pesquisa correspondentes com base na estrutura do dado tipo de elemento.
[000131] O Exemplo 17 é o sistema de desenvolvimento de qualquer um ou de todos os exemplos anteriores, em que a estrutura do dado tipo de elemento é definida por um conjunto de propriedades e métodos que definem comportamento de tempo de execução de elementos tendo o dado tipo de elemento.
[000132] O Exemplo 18 é o sistema de desenvolvimento de qualquer um ou de todos os exemplos anteriores, em que o mecanismo de pesquisa recebe uma consulta de pesquisa tendo pelo menos um termo de pesquisa, identifica um parâmetro de pesquisa baseada em tipo para a consulta de pesquisa, e identifica um dos componentes de pesquisa do armazenamento de componentes de pesquisa com base no parâmetro de pesquisa baseada em tipo. O componente de pesquisa identificado é instanciado para pesquisar um ou mais dos elementos de aplicação com base no termo de pesquisa.
[000133] O Exemplo 19 é um método implementado por computador para desenvolver elementos de um sistema de computador e controlar uma pesquisa dos elementos. O método compreende detectar entradas de usuário de desenvolvimento e transformar elementos do sistema de computador com base nas entradas de usuário de desenvolvimento. O sistema de computador compreende uma pluralidade de tipos de elementos diferentes, cada tipo de elemento sendo definido por uma estrutura de propriedades para elementos do tipo de elemento. O método compreende gerar uma exibição de interface de pesquisa e detectar uma entrada de usuário, por meio da exibição de interface de pesquisa, indicativa de uma consulta de pesquisa de usuário para pesquisar os elementos do sistema de computador. O método com-preende controlar uma pesquisa dos elementos do sistema de computador com base na consulta de pesquisa de usuário e em uma restrição de pesquisa semântica que é baseada nas estruturas de propriedades dos elementos de um sistema de computador. O método compreende retornar resultados de pesquisa da pesquisa e gerar uma exibição de resultados que mostra os resultados de pesquisa.
[000134] O Exemplo 20 é o método implementado por computador de qualquer um ou de todos os exemplos anteriores, e compreendendo adicionalmente acessar um armazenamento de dados que modela uma pluralidade de tipos de elementos diferentes, e para cada tipo de elemento diferente, gerar um componente de pesquisa baseado em tipo correspondente com base em uma estrutura de propriedades do tipo de elemento. O método compreende usar pelo menos um dos componentes de pesquisa baseada em tipo gerados, que é selecionado com base na restrição de pesquisa semântica, para pesquisar no armazenamento de dados com base na consulta de pesquisa de usuário.
[000135] Embora a matéria em questão tenha sido descrita em linguagem específica para recursos estruturais e/ou procedimentos metodológicos, é para ser entendido que a matéria em questão definida nas reivindicações anexas não está necessariamente limitada aos re- cursos ou procedimentos específicos descritos anteriormente. Particu-larmente, os recursos e procedimentos específicos descritos anteriormente estão revelados como formas de exemplo de implementar as reivindicações e outros recursos e procedimentos equivalentes são pretendidos para estar dentro do escopo das reivindicações.

Claims (12)

1. Sistema de desenvolvimento (102) para desenvolvimento de elementos de aplicação (107) de um sistema de computador e controlar uma pesquisa dos elementos (107), o sistema de desenvolvimento (102) compreendendo: um módulo de desenvolvimento (104) detectando entradas de desenvolvimento de usuário e transformando elementos (107) do sistema de computador com base nas entradas de desenvolvimento do usuário, em que os elementos (107) do sistema de computador compreendem uma pluralidade de tipos de elementos (107) diferentes, cada tipo de elemento tendo um conjunto de propriedades e métodos que definem um comportamento em tempo de execução para elementos (107) desse tipo de elemento; um módulo de interface de usuário (112) gerando uma exibição de interface de usuário (116) com um mecanismo de entrada de usuário (118), e detectando uma entrada de pesquisa de usuário recebida por meio do mecanismo de entrada de usuário indicativo de uma consulta de pesquisa de usuário para pesquisar os elementos (107) do sistema de computador, em que a consulta de pesquisa do usuário inclui um parâmetro de pesquisa baseado em tipo e um parâmetro de pesquisa baseado em propriedade; caracterizado pelo fato de que compreende ainda: um armazenamento de componentes de pesquisa (128) armazenando uma pluralidade de componentes de pesquisa, cada componente de pesquisa correspondendo a um dado dos diferentes tipos de elemento e sendo configurado para pesquisar o conjunto de propriedades e métodos para elementos (107) do tipo de elemento dado; um mecanismo de pesquisa (120) identificando o parâmetro de pesquisa baseado em tipo a partir da consulta de pesquisa do usu- ário, o mecanismo de pesquisa (120) sendo controlado para ativar um componente de pesquisa baseado em tipo correspondente ao parâmetro de pesquisa baseado em tipo, o componente de pesquisa baseado em tipo realizando uma pesquisa de elemento para retornar um conjunto de resultados de pesquisa na exibição da interface do usuário; e em que o conjunto de resultados de pesquisa compreende elementos (107) tendo um tipo de elemento específico selecionado a partir dos tipos de elemento correspondentes ao parâmetro de pesquisa baseado em tipo e valores de propriedade correspondentes ao parâmetro de pesquisa baseado em propriedade.
2. Sistema de desenvolvimento (102), de acordo com a rei-vindicação 1, caracterizado pelo fato de que o módulo de desenvolvimento (104) faz parte de um ambiente de desenvolvimento interativo (IDE).
3. Sistema de desenvolvimento (102), de acordo com a rei-vindicação 1, caracterizado pelo fato de que o usuário é um desenvolvedor, e os elementos (107) de aplicativo do sistema de computador compreendem elementos (107) de aplicativo que são personalizados pelo desenvolvedor.
4. Sistema de desenvolvimento (102), de acordo com a rei-vindicação 1, caracterizado pelo fato de que o mecanismo de pesquisa (120) é controlado para restringir a pesquisa de elemento a elementos (107) com o tipo de elemento específico.
5. Sistema de desenvolvimento (102), de acordo com as reivindicações 1 ou 4, caracterizado pelo fato de que o mecanismo de pesquisa (120) identifica o componente de pesquisa baseado em tipo a partir do armazenamento de componentes de pesquisa (128) que corresponde ao tipo de elemento específico, identifica cada um de uma pluralidade de elementos (107) do sistema de computador que possui o tipo de elemento específico, e pesquisa os elementos (107) identificados com base na consulta de pesquisa do usuário usando o componente de pesquisa identificado.
6. Sistema de desenvolvimento (102), de acordo com a rei-vindicação 5, caracterizado pelo fato de que o componente de pesquisa baseado em tipo identificado é instanciado para cada um da pluralidade de elementos (107) identificados com o tipo de elemento específico e o mecanismo de pesquisa (120) obtém o conjunto de resultados de pesquisa agregando resultados de pesquisa da pluralidade de componentes de pesquisa instanciados, e exibe os resultados de pesquisa agregados na exibição da interface do usuário.
7. Sistema de desenvolvimento (102), de acordo com a rei-vindicação 6, caracterizado pelo fato de que o conjunto de resultados da pesquisa é obtido e exibido de forma assíncrona.
8. Sistema de desenvolvimento (102), de acordo com a rei-vindicação 1, caracterizado pelo fato de que compreende ainda: um armazenamento de modelo armazenando, para cada um dos elementos (107), uma representação serializada do elemento compreendendo código e metadados do elemento; e o mecanismo de pesquisa (120) realizando a pesquisa do elemento acessando as representações serializadas no armazenamento do modelo.
9. Sistema de desenvolvimento (102), de acordo com a rei-vindicação 8, caracterizado pelo fato de que o mecanismo de pesquisa identifica uma representação serializada específica no armazenamento de modelos, correspondendo a um determinado dos elementos (107), com base no parâmetro de pesquisa baseado em tipo, e pesquisando a representação serializada específica com base na consulta de pesquisa do usuário.
10. Sistema de desenvolvimento (102), de acordo com a reivindicação 9, caracterizado pelo fato de que o mecanismo de pesquisa identifica uma parte do elemento fornecido, a partir da representação serializada específica, que corresponde à consulta de pesquisa do usuário, e identifica informação de caminho que identifica exclusivamente a parte do elemento fornecido.
11. Sistema de desenvolvimento (102), de acordo com a reivindicação 10, caracterizado pelo fato de que a informação de caminho compreende um identificador de recurso uniforme (URI), o módulo de interface de usuário (112) gerando uma representação se- lecionável pelo usuário do URI, que é selecionável para apresentar a parte do elemento fornecido em uma interface de usuário do editor.
12. Método implementado por computador para desenvolver elementos de aplicativo (107) de um sistema de computador e controlar uma pesquisa dos elementos (107), caracterizado pelo fato de que compreende as etapas de: detectar entradas de desenvolvimento do usuário e transformar elementos (107) do sistema de computador com base nas entradas de desenvolvimento do usuário, o sistema de computador compreendendo uma pluralidade de tipos de elementos (107) diferentes, cada tipo de elemento tendo um conjunto de propriedades e métodos que definem o comportamento em tempo de execução para elementos (107) desse elemento tipo; armazenar uma pluralidade de componentes de pesquisa, cada componente de pesquisa correspondendo a um dado um dos diferentes tipos de elemento e sendo configurado para pesquisar o conjunto de propriedades e métodos para elementos (107) do tipo de elemento dado; gerar uma exibição de interface de pesquisa; detectar uma entrada do usuário, através da exibição da interface de pesquisa, indicativa de uma consulta de pesquisa do usuário para pesquisar os elementos (107) do sistema de computador, em que a consulta de pesquisa do usuário inclui um parâmetro de pesquisa baseado em tipo e um parâmetro de pesquisa baseado em propriedade; identificar, por um mecanismo de pesquisa (120), o parâmetro de pesquisa baseado em tipo a partir da consulta de pesquisa do usuário; ativar, pelo mecanismo de pesquisa (120), um componente de pesquisa baseado em tipo correspondente ao parâmetro de pesquisa baseado em tipo; realizar, pelo componente de pesquisa baseada em tipo, uma pesquisa de elemento; retornar resultados de pesquisa da pesquisa de elemento, em que os resultados da pesquisa compreendem elementos (107) têm um tipo de elemento específico selecionado a partir dos tipos de elemento correspondentes ao parâmetro de pesquisa baseado em tipo e valores de propriedade correspondentes ao parâmetro de pesquisa baseado em propriedade; e gerar uma exibição de resultados que exibe os resultados da pesquisa.
BR112016027820-8A 2014-06-02 2015-06-01 Sistema de desenvolvimento e método implementado por computador para desenvolver elementos de aplicativo de um sistema de computador e controlar uma pesquisa dos elementos BR112016027820B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462006662P 2014-06-02 2014-06-02
US62/006,662 2014-06-02
US14/539,521 2014-11-12
US14/539,521 US9377999B2 (en) 2014-06-02 2014-11-12 Semantic content accessing in a development system
PCT/US2015/033554 WO2015187567A1 (en) 2014-06-02 2015-06-01 Semantic content accessing in a development system

Publications (3)

Publication Number Publication Date
BR112016027820A2 BR112016027820A2 (pt) 2021-06-08
BR112016027820A8 BR112016027820A8 (pt) 2022-11-16
BR112016027820B1 true BR112016027820B1 (pt) 2023-05-30

Family

ID=

Similar Documents

Publication Publication Date Title
US11106816B2 (en) Database public interface
US9635138B2 (en) Client-server input method editor architecture
US11687571B2 (en) Interactive lineage analyzer for data assets
US9395890B2 (en) Automatic discovery of system behavior
KR102193404B1 (ko) 상호작용 개발 환경으로부터의 소프트웨어 아티팩트의 점진적 컴파일링 기법
US9690689B2 (en) Test case generation in a development environment
US20170161511A1 (en) Database public interface
US8655913B1 (en) Method for locating web elements comprising of fuzzy matching on attributes and relative location/position of element
US20220334809A1 (en) Process flow builder for extensible web component sequences
JP6639418B2 (ja) 開発システムにおける意味論的なコンテンツアクセス
US20220245206A1 (en) Process flow builder for user-configurable web component sequences
BR112016027820B1 (pt) Sistema de desenvolvimento e método implementado por computador para desenvolver elementos de aplicativo de um sistema de computador e controlar uma pesquisa dos elementos
US20150121343A1 (en) Test impact analysis using cross reference data and metadata
US11797638B2 (en) Aggregate component for parallel browser-initiated actions
US20240129402A1 (en) Customization framework for native mobile applications
US10705802B2 (en) Extensible and queryable strong types
US10032203B2 (en) Dynamic property surfacing