• Nenhum resultado encontrado

Mecanismos de Ranqueamento na Web aplicados na Busca e Recuperação de Componentes de Software

N/A
N/A
Protected

Academic year: 2022

Share "Mecanismos de Ranqueamento na Web aplicados na Busca e Recuperação de Componentes de Software"

Copied!
16
0
0

Texto

(1)

Mecanismos de Ranqueamento na Web aplicados na Busca e Recuperação de Componentes de Software

Cássio de Albuquerque Melo Universidade Federal de Pernambuco

Centro de Informática

Av. Prof Luiz Freire – Cidade Universitária Recife/PE – Brasil – CEP: 50740-540

Telefone: +55-81-2126-8430 cassio.ufpe@gmail.com

Orientador: Eduardo Santana de Almeida Agosto, 2006

(2)

Resumo

O reuso tem sido a abordagem mais eficiente para trazer à indústria melhores níveis de produtividade e qualidade de software. Artefatos de software já testados desempenham um papel essencial no reuso de software, uma vez que já foram validados e estão disponíveis em centenas de repositórios na Internet. Embora atualmente existam diversos engenhos de busca de propósito geral, muitos usuários ainda não conseguem encontrar de forma rápida e eficiente, artefatos reusáveis de software, devido aos mecanismos de ranqueamento não refletirem de forma adequada as necessidades do usuário. Nesta monografia, apresentaremos uma análise crítica entre as abordagens de ranqueamento, em especial o ranqueamento na web e o ranqueamento de componentes de software.

Abstract

Reuse has been the most efficient approach to bring to the industry better levels of productivity and quality of software. Software artifacts already tested play an essential role in software reuse, since it had been evaluated and are available in hundreds of repositories over the Internet. Although nowadays there are several general purpose search engines, many users do not find in a quick and efficient way, reusable artifacts of software, due to the ranking mechanisms does not to reflect the user needs. In this work, we will present an analysis between the ranking approaches, in special web ranking and software components ranking.

(3)

Sumário

1. Introdução... 5

2. Ranqueamento em engenhos de busca na web ... 6

2.1 PageRank... 6

2.2 Contex-Aware Semantic Ranking ... 7

2.3 Context-Sensitive Ranking... 8

2.4 Top-Ranking ... 9

3. Ranqueamento em engenhos de busca de componentes... 10

3.1 Component Rank ... 11

4. Conclusões e trabalhos futuros... 12

Referências Bibliográficas ... 14

(4)

“Para reusar componentes de software, primeiro é necessário encontrá-los”.

Doug Mcilroy, 1969.

(5)

1. Introdução

Durante vários anos os sistemas de banco de dados existiam para buscar dados estruturados, e a recuperação de informação se restringia à busca de documentos simples e previamente ordenados.

Atualmente, com crescimento rápido na quantidade e diversificação dos tipos de informação, as páginas na web se proliferam sem nenhum controle de qualidade ou custos de publicação [1].

Estudos recentes mostram que a maior parte da recuperação de informação na web é através de engenhos de busca [2]. Algoritmos de ranqueamento são utilizados para melhorar os resultados da busca capturando as informações relevantes, desempenhando um papel fundamental nos engenhos de busca. Adicionalmente, os algoritmos de ranqueamento podem ser expandidos para outras aplicações como na recuperação de componentes de software.

A utilização de algoritmos de ranqueamento da web adaptados para ranqueamento de componentes de software partiu da necessidade de aprimorar a precisão dos resultados dos engenhos de busca específicos para software [3], operando em sistemas heterogêneos e complexos.

Apesar do surgimento recente de ferramentas de auxílio à busca e recuperação de software como o Koders [9], Krugle [10] e Spars-J [11], ainda são escassos os trabalhos expressivos na área de ranqueamento de software e muitos ainda estão limitados ao uso de técnicas simples e pouco eficientes com relação ao código-fonte como cálculos baseados na freqüência da query.

Existem, entretanto, vários desafios para os atuais mecanismos de ranqueamento, tais como a enorme quantidade de informação a ser ranqueada e categorizada, a disponibilidade da base de dados, a qualidade nos resultados da busca, além da inexperiência dos usuários e as páginas maliciosamente projetadas para manipular funções de ranqueamento dos algoritmos de busca.

As duas questões principais que motivaram essa pesquisa são as seguintes: Primeiro, quais diferenças, se houver, existem entre os mecanismos de ranqueamento de engines para web e as engines de busca de componentes? Segundo, quais diferenças, em termos de propriedades, entre eles no ranqueamento de artefatos de software?

Abstraímos fórmulas e análises de complexidade algorítmica para apresentar os conceitos e valores que estão por trás das várias estratégias e como isso influencia a busca. Na próxima seção discutiremos trabalhos relacionados aos mecanismos de ranqueamento na web. Na seguinte, trataremos sobre os trabalhos direcionados aos mecanismos de ranqueamento para componentes de software, em especial o ComponentRank, seguidos da análise e conclusão.

(6)

2. Ranqueamento em engenhos de busca na web

Na literatura, vários trabalhos que exploram algoritmos de ranqueamento para documentos na web podem ser encontrados, desde a década de 1990 até hoje. Entretanto, poucos são destinados a analisar um conjunto de mecanismos em função de sua aplicabilidade em outras áreas.

A web é uma vasta coleção e documentos heterogêneos e completamente incontrolável [1].

A quantidade de informação vem crescendo de forma rápida, como também o número de usuários sem experiência na arte de buscar na web [4]. Felizmente, os engenhos de busca têm conseguido um bom progresso na capacidade de localizar informações relevantes dentro de um conjunto enorme de informações na web, utilizando-se técnicas sofisticadas como a extração de metadados semânticos ou estratégias baseadas em votting dentro de contexto, por exemplo, desenvolvidos para aprimorar os resultados da busca.

Fundamentalmente, os mecanismos de ranqueamento da web aproveitam-se da própria estrutura das páginas, como o hipertexto, para dar significância à informação, apesar de que é razoavelmente grande a quantidade de outras técnicas complementares envolvidas nesse processo.

A seguir, discutiremos quatro dos principais mecanismos de ranqueamento para páginas da web que surgiram ao longo desses anos: PageRank, Context-Aware Semantic Ranking, Context-Sensitive Ranking e Top-Ranking

2.1 PageRank

Provavelmente o mais conhecido algoritmo de ranqueamento por sua aplicação no engenho de busca do Google, o PageRank é um mecanismo para computar um ranking para cada página tendo como base o grafo da web [1]. Sua principal característica é explorar a estrutura do hipertexto de uma página para representar associações e a partir daí quantificar e propagar a importância de determinado documento pela web, processo conhecido como “voting”.

Uma página A que possui um link, ou referência, para uma página B, é contado como um

“voto” para a página B. Entretanto, não apenas essa informação é levada em consideração, mas também a pontuação ou importância das páginas que referenciaram B, neste caso, o escore da página A influencia no escore da página B. Esse tipo de característica evita que páginas maliciosamente criadas distorçam o ranqueamento original apenas por serem referenciadas por um conjunto de páginas vazias, ou completamente irrelevantes.

(7)

Fig. 1. Diagrama simplificado ilustrando um simples engenho de busca utilizando PageRank

O mecanismo de ranqueamento do Google, entretanto, armazena muito mais informações sobre os documentos da web do que os engenhos de busca comuns tipicamente o fazem. Primeiro, ele tem a localização da informação para todos os resultados encontrados e então faz uso extensivo da proximidade dessa informação com a query. Depois, Google verifica alguns detalhes de representação visual como o tamanho e destaque das palavras na página. Palavras em fontes maiores ou em negrito são mais pontuadas do que outras palavras. Esse escore é combinado com o PageRank para definir o escore final do documento. O algoritmo calcula o escore offline, de forma que o cálculo a ser realizado durante a busca seja mínimo, representando uma clara vantagem em termos de tempo de resposta para o mecanismo.

2.2 Contex-Aware Semantic Ranking

Devido à mudança crescente de dados para conhecimento - conceito da web semântica [5] - existe um grande interesse atualmente na área de extração de dados automático que gerem metadados representativos dos documentos e serviços da web. Uma vez passada essa fase, surge a necessidade de tecnologias que facilitem o acesso a esse conhecimento e informação em massas de dados espalhadas na Internet. Nesse cenário, o mecanismo proposto utiliza metadados semânticos que são metadados que descrevem o contexto, informações ligadas ao domínio que oferecem características

(8)

adicionais ao conteúdo. As associações semânticas são baseadas em noções intuitivas tais como conectividade e similaridade semântica.

O ranqueamento é computado em função de quais associações são mais ou menos significantes, mais ou menos distantes, mais ou menos confiáveis. Diferentemente de apenas quantas referencias existe para ele, como no PageRank. Os pesos das associações são classificados e computados de duas formas: Pesos universais e pesos definidos pelo usuário.

Os pesos universais influenciam na computação dos pesos sem levar em consideração a query e o contexto de interesse do usuário. Neste caso, as entidades que estão no nível mais baixo da hierarquia representam informações mais especializadas do que as entidades que estão no nível mais alto e, portanto, não devem possuir um peso relevante. Por exemplo, a entidade “CITi” possui um peso menor do que a entidade “Centro de Informática” que por sua vez é menos pontuada do que a entidade “UFPE”, que representa o nível mais genérico da associação.

Considerando a ontologia, parte da definição dos pesos das associações é computada pelo usuário no sistema através da query, chamada de pesos definidos pelo usuário. O usuário é capaz de selecionar, dentro dos resultados obtidos da query, o conjunto de associações que mais o interessar.

Isto é importante por que a relevância das associações está por trás dos critérios escolhidos pelo usuário, como os caminhos diretos ou mais curtos na rede de associações – o que pode significar uma relação mais forte entre as entidades - ou caminhos mais longos, encontrando possíveis relações escondidas, indiretas, mas relevantes.

Um dos pontos fortes desse mecanismo é que o ranqueamento dos resultados leva em consideração o contexto especificado pelo usuário, diferentemente das métricas tradicionais que utilizam apenas o precision e recall como avaliação de eficiência do sistema de recuperação.

2.3 Context-Sensitive Ranking

Como descrito anteriormente, o mecanismo de ranqueamento PageRank original computa um vetor único, usando a estrutura de link da web para capturar a “importância” relativa de uma página, independentemente da query do usuário. O propósito do Topic-Sensitive é melhorar a precisão da busca através da computação offline uma série de vetores PageRank usando um conjunto de tópicos representativos e diferentes. Portanto, ao invés de possuir apenas um escore, a página possuirá tantos escores quanto o número de vetores gerados pelo algoritmo, permitindo qualificar a importância da página com relação a vários tópicos. Além disso, a informação da query pode

(9)

influenciar os escores das páginas, embora isto requeira que o sistema seja processado também em tempo de busca.

Basicamente o mecanismo calcula a combinação linear dos vetores sensíveis ao tópico da página, pontuados de acordo com a similaridade e query para tais tópicos. Computando uma série de vetores, é capaz de se determinar mais precisamente quais páginas são mais confiáveis e quais são mais importantes em relação a uma determinada query. Isso evita o problema de se terem páginas bastante referenciadas possuindo alta pontuação para queries que em princípio não têm correlação alguma com as páginas. Em [5] demonstra que as propriedades do gráfico da web são sensíveis ao tópico da página, ou seja, páginas tendem a apontar para outras páginas que tem o mesmo tópico.

2.4 Top-Ranking

As técnicas descritas no Top-Ranking baseiam-se na tentativa de promover os resultados além da primeira página de resultados da busca, através da maior interação do usuário com elas [6]. Por esta razão, muitas páginas da web são maliciosamente criadas para que apareçam de forma consistente na primeira página das engines de busca mais populares. Por outro lado, a relutância dos usuários em olhar além da primeira página dos resultados significa que podem estar perdendo documentos significantes em páginas posteriores, preferindo reformular a query e buscar novamente.

Em [6] apresentam-se duas técnicas principais que promovem a interação do usuário com uma maior parte dos resultados da busca – facilitando a análise cognitiva e evitando sobrecargas na engine de busca, técnicas que recomendam páginas da busca aos usuários através de indicadores do tipo de informação encontrada nos documentos recuperados.

O uso das sentenças permite que os usuários vejam amostras representativas do texto de uma página antes de acessar o texto completo de uma página e a partir daí, fazer decisões melhores a respeito de quais páginas a ver. A validação do sistema foi realizada utilizando três sistemas da busca. Cada sistema consiste em uma relação, com funcionalidade subjacente, que conecta aos engines de busca existentes da web.

O primeiro sistema é um sistema de sumarização. Uma vez executada a busca, os resultados das trinta primeiras páginas serão sumarizados. O processo de sumarização é feito por um modelo de extração de sentenças [7], em que seleciona as sentenças da página e as ordena por importância.

As sentenças mais pontuadas são escolhidas como sumário da página.

(10)

O segundo sistema é uma extensão do primeiro, desta vez implementa um mecanismo de

“top-ranking sentences” onde as sentenças mais pontuadas dentre as trinta primeiras páginas são pontuadas em conjunto, e não individualmente apenas como no primeiro sistema. Mais de uma sentença podem aparecer por documento. A intenção do “top-ranking sentences” é encorajar os usuários a inferirem melhor sobre o conteúdo de uma página a partir de uma informação que não seja apenas o título e fragmentos de texto, além de promover a visibilidade de documentos que eventualmente possam relevantes e tinham baixa pontuação nas engines de busca tradicionais.

O terceiro sistema propõe um mecanismo de contexto próprio para melhorar o ranking das sentenças indicadas ao usuário. O contexto neste caso é a informação implícita dada por um usuário interagindo com o sistema de busca. Como será discutido abaixo, a informação implícita é a evidência que o usuário provê vendo um sumário de uma página. Esta informação é considerada como sendo implícita porque o usuário não dá a informação com a finalidade explícita de mudar os resultados da busca.

Os resultados são re-ordenados dinamicamente, baseado em informações indiretamente deixadas pelos usuários sobre suas preferências, como o tempo de permanência na visualização de um documento [7]. Essa informação é usada para pontuar os sumários em que os usuários visualizaram por mais tempo do que o esperado são aqueles que contém informações similares as que ele está procurando. O terceiro sistema pontua as sentenças a partir da query do usuário e nos termos retirados do conteúdo dos sumários relevantes.

3. Ranqueamento em engenhos de busca de componentes

Fazer buscas manuais em repositórios de componentes, dependendo do seu tamanho, torna-se uma atividade inviável [12]. Para conseguir um alto nível de reuso de componentes de software é necessário um mecanismo de busca e recuperação de componentes eficiente associado ao ambiente de desenvolvimento do usuário. Apesar de a literatura possuir muitos trabalhos relacionados a este assunto, ainda não se conseguiu um reuso efetivo nas empresas.

Existem grandes repositórios de software, como o SourceForge [13] onde vários projetos estão disponíveis em um modelo de desenvolvimento open-source. No site é possível realizar buscar por projetos, contudo, não oferece suporte para a busca de partes de código, bibliotecas ou componentes de software

Apesar do surgimento recente de ferramentas de auxílio à busca e recuperação de software como o Krugle [9], Koders [10] e Spars-J [11], ainda são escassos os trabalhos expressivos na área

(11)

de ranqueamento de software e muitos ainda estão limitados ao uso de técnicas simples e pouco eficientes com relação ao código-fonte como cálculos baseados na freqüência da query. A seguir, descreveremos o funcionamento do mecanismo Component Rank, um dos mais populares algoritmos de ranqueamento de software, utilizado no engenho Spars-J.

3.1 Component Rank

A idéia por trás do Component Rank [14] é computar o escore do artefato a partir de fatores chamados “pesos de influência” que indica quão referenciado é um componente de software, de forma similar ao PageRank [1] descrito anteriormente. Uma coleção de componentes de software é representado como um grafo direcionado cujos nós correspondem às relações de uso.

Fig. 2. Arquitetura do Component Rank

Cada arquivo é inicialmente processado por um mecanismo de medição de similaridade entre os componentes, onde a partir de determinado linear de similaridade os componentes são agrupados através do processo “clustering” de forma que os nós duplicados são removidos do grafo (1). Paralelamente, a etapa (3) é responsável por delinear a estrutura do grafo a ser montado, a partir da análise dos relacionamentos entre os componentes, isto é, invocação de método, herança,

(12)

implementação de classes abstratas que juntamente com o agrupamento de componentes similares, ambos representam as arestas e os nós do grafo respectivamente na fase de construção (4). Os pesos dos nós são computados propagando-se os valores iniciais dos nós através de suas arestas até que o sistema se estabilize e todos os componentes tenham seus escores definidos (5). Logo em seguida, os pesos dos nós do grafo são mapeados de volta aos componentes originais, neste caso, os arquivos .java.

O resultados mostram que classes freqüentemente invocadas ou herdadas por outras classes possuem geralmente um ranking mais alto, como componentes que são fundamentais e padrões, como os componentes nativos da linguagem. Componentes específicos e independentes possuem ranking menores.

4. Conclusões e trabalhos futuros

Os mecanismos de ranqueamento utilizados nos engenhos de busca da web obedecem, em geral, o mesmo princípio de análise de relacionamentos entre entidades e propagação das dependências. Tal abordagem é julgada válida a ser aplicada nos sistemas de busca e recuperação de componentes de software [14] por permitir explorar a própria estrutura do código-fonte, como sentenças de chamadas aos métodos ou importação de outros componentes, para definir a relevância do componente.

Contudo, os mecanismos de ranqueamento não podem ser encarados como solução para todos os problemas de busca e recuperação de software e não é a única alternativa para conseguir resultados mais precisos do que os algoritmos tradicionais que se tem projetado ao longo desses anos, mas um complemento deles.

Outras abordagens estão sendo desenvolvidas na ferramenta BART (Basic Asset Retrieval Tool). Em nosso modelo de ranqueamento, empregamos o uso de atributos que influenciem no escore dos componentes de software, por exemplo, a avaliação do histórico de uso do artefato, quantidade de documentação do código, e padronização do componente e estratégias sofisticadas como ciência de contexto na busca do usuário.

Atualmente, o BART possui dois plug-ins de busca, que são os eBart e jBart, operando em plataforma Eclipse e Microsoft Word, respectivamente. O BART está implementado para indexar, processar e buscar apenas código-fonte escrito na linguagem Java. Pretendemos ampliar o número

(13)

de plug-ins que integram o sistema e estender suas funcionalidades para linguagens procedural tais como C e C++.

Muitos pontos descritos aqui já existem em engenhos de busca, como o www.google.com. É claro que questões importantes, como precision, recall e familiaridade com os componentes não estão sendo alcançados por esses engenhos de propósito geral da web. Como em [3], essas questões não estão sendo consideradas tão essenciais hoje, mas em mercados maiores isso pode ser tornar um grande problema.

(14)

Referências Bibliográficas

[1] PAGE. L.; BRIN, S.; MOTWANI, R.; WINOGRAD, T. The PageRank Citation Ranking:

Bringing Order to the Web. 1998. Technical Report. Stanford Digital Library Technologies, Starnford University, Starnford. Disponível em: <http://www- db.stanford.edu/backrub/pageranksub.ps>. Acesso em: 12 de jul. 2006.

[2] LAN, M. Algorithms and Applications of Preference Based Ranking for Information Retrieval. 2005. 174 p. Dissertação (Doutorado em Ciência da Computação) - University of Lanzhou, China.

[3] LUCRÉDIO, D.; ALMEIDA, E. S.; PRADO, A. F. A Survey on Software Components Search and Retrieval. In: 30th IEEE EUROMICRO Conference, Component-Based Software Engineering Track, 2004, Rennes - France. IEEE Press. 2004.

[4] PAGE. L.; BRIN, S. The Anatomy of a Large-scale Hipertextual Web Search Engine. 1998.

Computer Science Department, Stanford University, Starford, Estados Unidos. Disponível em:

<http://www-db.stanford.edu/backrub/pageranksub.ps>. Acesso em: 11 de jul. 2006.

[5] YE, Y.; FISCHER, G. Context-Aware Browsing of Large Component Repositories.

Department of Computer Science, University of Colorado, Boulder. Disponível em:

<http://citeseer.ist.psu.edu/ye02supporting.html> . Acesso em: 12 de jul. 2006.

[6] WHITE, R. W.; RUTHVEN, I.; JOSE, J. M. Finding Relevant Documents using Top Ranking Sentences: An Evaluation of Two Alternative Schemes. Department of Computer Science, University of Glasgow, Reino Unido. Disponível em:

<http://citeseer.ist.psu.edu/ye03supporting.html> . Acesso em: 12 de jul. 2006.

[7] WHITE, R. W.; RUTHVEN, I.; JOSE, J. M. Documents using Top Ranking Sentences: An Evaluation. Department of Computer Science, University of Glasgow, Reino Unido. Disponível em: <http://citeseer.ist.psu.edu/ye03supporting.html> . Acesso em: 12 de jul. 2006.

[8] WHITE, R. W.; RUTHVEN, I.; JOSE, J. M. A task-oriented study on the influencing effects of query-based summarisation in web searching. Information Processing and Management. 2002. in press.

[9] KODERS: Koders - Source Code Search Engine, 2006. Disponível em:

<http://www.koders.com>. Acesso em: 17 jul. 2006.

(15)

[10] KRUGLE: Source Code Search Engine, 2006. Disponível em: <http://www.krugle.com>.

Acesso em: 17 jul. 2006.

[11] SPARS-J: Source Code Search Engine, 2006. Disponível em: <http://demo.spars.info/>.

Acesso em: 17 jul. 2006.

[12] VANDERLEI, T. A. Um mecanismo de classificação cooperativa para busca e recuperação de componentes de software. 2006. 120f. Dissertação (Mestrado em Ciência da Computação) - Universidade Federal de Pernambuco, Recife, Brasil, 2006

[13] SOURCEFORGE: A Source Code Repository, 2006. Disponível em:

<http://www.sourceforge.org/>. Acesso em: 17 jul. 2006.

[14] INOUE, J.; YOKOMORI, R.; FUGIWARA, H.; YAMAMOTO, T.; MATSUSHITA, M.;

KUSUMOTO, S. Component Rank: Relative Significance Rank for Software Component Search. 2003. Graduate School of Information Science and Technology, Osaka University, Osaka, Japão. Disponível em: <http://iip-lab.ics.es.osaka-u.ac.jp/~lab- db/betuzuri/archive/391/391.pdf>. Acesso em: 10 de jun. 2006.

ALMEIDA, E. S. Uma Abordagem para o Desenvolvimento de Software Baseado em Componentes Distribuídos. 2003. 165f. Dissertação (Mestrado em Ciência da Computação) - Universidade Federal de São Carlos, São Paulo, Brasil, 2003.

ALMEIDA, E.; ALVARO, A.; LUCREDIO, D.; GARCIA, V.; MEIRA, S. RiSE Project:

Towards a Robust Framework for Software Reuse. In: IEEE International Conference on Information Reuse and Integration (IRI), Las Vegas, USA, 2004.

ALMEIDA, E.; ÁLVARO, A.; MEIRA, S. RiSE Project: Key Developments in the Field of Software Reuse. In: 15th PhDOOS Workshop Glasgow, Scotland, 2005.

ÁLVARO, A.; ALMEIDA, E.; MEIRA, S. Software Component Certification: A Survey. In:

31st IEEE EUROMICRO Conference on Software Engineering and Advanced Applications (SEAA), Component-Based Software Engineering Track, Portugal, IEEE Press, 2005.

BAEZA-YATES, R.; RIBEIRO-NETO, B. Modern Information Retrieval. ISBN:

020139829X, 1st edition, ACM Press, 1999.

BIGGERSTAFF, T. J.; RICHTER, C. Reusability Framework, Assessment, and Directions.

In: IEEE Software, Vol. 4, No. 2, mar. 1987, pp. 41-49.

BOEHM, B. W. Improving Software Productivity. In: IEEE Computer, Vol. 20, No. 9, set.

1987, pp. 43-57.

BURÉGIO, V. A. A.; ALMEIDA, E. S.; MEIRA, S. R. L. Specification, Design an Implementation of a Reuse Repository. In: 13th Asia Pacific Software Engineering Conference (APSEC06), Bangalore, Índia, 2006. (Em avaliação)

CALDIERA, G.; BASILI, V. Identifying and Qualifying Reusable Software Components.

In: IEEE Computer, Vol. 24, No. 2, fev. 1991, pp. 61–71.

(16)

FRAKES, W. B.; ISODA, S. Success Factors of Systematic Reuse. In: IEEE Software, Vol.

11, No. 05, set./out. 1994, pp. 14-19.

FRAKES, W. B.; POLE, T. P. An Empirical Study of Representation Methods for Reusable Software Component. In: IEEE Transactions on Software Engineering, Vol. 20, No. 8, ago.

1994, pp.617-630.

FREEMAN, P. Reusable Software Engineering Concepts and Research Directions. In: ITT Proceedings of the Workshop on Reusable Software (ITT, Newport, R. I., 1983).

GARCIA, V. C.; DURÃO, F. A.; JÚNIOR, G. S. A.; SANTOS, M. D. S.; ALMEIDA, E. S.;

LUCRÉDIO, D.; ALBUQUERQUE, J. O.; MEIRA, S. R. L. Especificação, Projeto e Implementação de uma Arquitetura para um Engenho de Busca de Componentes, In: 5th Workshop de Desenvolvimento baseado em Componentes (WDBC’2005), Juiz de Fora-MG, Brasil, 2005.

GARCIA, V. C.; LUCRÉDIO, D.; DURÃO, F. A.; SANTOS, E. C. R.; ALMEIDA, E. S.;

FORTES, R. P. M.; MEIRA, S. R. L. From Specification to the Experimentation: A Software Component Search Engine Architecture. In: 9th International Symposium on Component-Based Software Engineering (CBSE 2006), Lecture Notes in Computer Science (lncs), Mälardalen University, Västerås, Sweden, 2006.

ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. Entrada para nomes de língua portuguesa em registros bibliográficos: NBR10523. Rio de Janeiro, 1997. 5 p.

Referências

Documentos relacionados

Muito embora este estudo tenha incluído um número relativamente pequeno de casos, a análise multivariada confirmou o impacto prognóstico independente dos fatores idade e

Entretanto, para integrar o brincar na educação da criança é preciso incluir atividades lúdicas no seu cotidiano, estimulando o desenvolvimento integral da mesma e oferecendo a ela

E é justamente por uma doença respiratória, sistema do qual a boca faz parte, que a personagem morre, sendo a boca um dos primeiros objetos da sexualidade

Nesse sentido, entende-se que escola deveria procurar desenvolver um trabalho baseado em brincadeiras, incentivando as crianças por meio do brincar, pois seria um passo

Kulčar 40 , encontrou benefícios semelhantes (Tabela 3) e, além disso, ao acompanhar os membros permanentes do grupo por um período de 10 anos, constatou uma

A origem do nome Açaí é que nós justamente tivemos o trabalho né, foi o processo foi feito com o SEBRAE né, foi dado as aulas pra nós, aí então, lá no curso ela pediu pra

A função gerente de obras torna-se cada vez mais necessária na construção civil, pois o setor está cada vez mais desenvolvendo e aprimorando a área de coordenação

Na Nova Zelândia em sistemas pastoris as vacas produzem em média 17 litros de leite ao dia, enquanto nos produtores analisados neste estudo a média de