Los servicios Web son entidades software que exhiben cierta funcionalidad y que pueden ser accedidos por otros elementos software a través de protocolos de Internet. En ejemplo sencillo podría ser un servicio que informa de las temperaturas mínima y máxima en una ciudad y fecha dadas. En las arquitecturas orientadas a servicios, los servicios son los componentes básicos para construir aplicaciones, donde la reutilización de los servicios es una característica fundamental. Para que los servicios sean conocidos y, por tanto, puedan ser invocados o compuestos formando servicios más complejos, éstos deben ser descritos y anunciados en algún tipo de directorio (páginas amarillas). En este proyecto se plantea la implementación de un componente que seleccione cuáles de los servicios del directorio cumplen la funcionalidad buscada. Se asume que los servicios están anotados mediante palabras clave (tags) por parte de los usuarios del servicio, teniendo por tanto asociado cada servicio una nube de tags (tag cloud), resultado de la agregación de los tags anotados por cada usuario del servicio. Se utilizarán técnicas de “clustering” jerárquico, formando una jerarquía donde cada nodo representará a un conjunto de servicios con características similares. De esta manera, el usuario del sistema podrá navegar por la jerarquía hasta encontrar el servicio deseado. Para la evaluación del componente implementado se utilizará algunas colecciones de servicios, por ejemplo las disponibles en SEEKDA (http://seekda.com) o recursos anotados en del.icio.us (http://delicious.com/).
El lenguaje de programación a utilizar será java.