Buscador - 52723david/Buscador_Arq_Apli GitHub Wiki

Texto alternativo a la imagen

BUSCADOR

Integrantes:

@fdbustamante @dfguevara


Propósito del proyecto

Construir una sistema web, que permita buscar planes de estudios, que se encuentran indexados por Solr, y además construir mecanismo de logeo, y auditoría del sistema.


1. Marco Teorico


1.1 Herramientas usadas

Para el desarollo del buscador fue necesario utilizar las siguientes herramientas que se describen a continiacion:

  • NetBeans: es un entorno integrado de desarrollo o IDE (Integrated Development Environment). En él podemos realizar todas las tareas asociadas a la programación como: editar el código, Compilarlo, Ejecutarlo, Depurarlo.
  • Mysql: es un sistema de administración de bases de datos (Database Management System, DBMS) para bases de datos relacionales. Así, MySQL no es más que una aplicación que permite gestionar archivos llamados de bases de datos.
  • GlassFihs: es un servidor de aplicaciones desarrollado por Sun Microsystems que implementa las tecnologías definidas en la plataforma Java EE y permite ejecutar aplicaciones que siguen esta especificación.
  • html5: siglas deHyperText Markup Language («lenguaje de marcas de hipertexto»), hace referencia al enguaje de marcado para la elaboración de páginas web.
  • css: es un lenguaje utilizado en la presentación de documentos HTML. Un documento HTML viene siendo coloquialmente “una página web”. Entonces podemos decir que el lenguaje CSS sirve para organizar la presentación y aspecto de una página web.
  • boostrap: es un framework CSS que permite dar forma a un sitio web mediante librerias CSS que incluyen tipografías, botones, cuadros, menus y otros elementos que pueden ser utilizados en cualquier sitio web.
  • JQuery: es una biblioteca de JavaScript, creada inicialmente por John Resig, que permite simplificar la manera de interactuar con los documentos HTML, manipular el árbol DOM, manejar eventos, desarrollar animaciones y agregar interacción con la técnica AJAX a páginas web.
  • JavaScript: es un lenguaje de programación, al igual que PHP, si bien tiene diferencias importantes con éste. JavaScript se utiliza principalmente del lado del cliente (es decir, se ejecuta en nuestro ordenador, no en el servidor) permitiendo crear efectos atractivos y dinámicos en las páginas web.
  • Json: (JavaScript Object Notation - Notación de Objetos de JavaScript) es un formato ligero de intercambio de datos. Leerlo y escribirlo es simple para humanos, mientras que para las máquinas es simple interpretarlo y generarlo.
  • Apache Solr: es un motor de búsquedas de código abierto que proporciona potentes funcionalidades de búsqueda y navegación por facetas, es decir, explorar la información desde diversas perspectivas. Tales funcionalidades pueden ser difíciles de implementar sobre una base de datos relacional. Solr es capaz de manejar complejos criterios de búsqueda, corrige ortografía en las consultas, permite realzar resultados (highlighting), configurar la relevancia de términos, entre otras funcionalidades. Solr funciona como un servidor independiente de búsquedas a texto completo dentro de un contendedor de servlets.

Caracteristicas

  1. Servidor con interfaz tipo REST (interacción vía HTTP, XML, JASON, CSV, etc.)
  2. Esquema de datos configurable.
  3. Utiliza varios caches para agilizar las búsquedas.
  4. Interface Web de administración.
  5. Navegación de resultados por facetas.
  6. Escalable a varios servidores para búsquedas distribuidas.
  7. Módulos de importación de datos desde bases de datos, e-mail y archivos de texto enriquecido (PDF, Word, RTF).
  8. Análisis de texto (Tokenización, normalización, etc.)

Integracion

En este esquema, Solr es simplemente el apoyo de la aplicación para búsquedas y no la fuente principal de la información, que sigue siendo la base de datos, es decir, como respuesta a una búsqueda, Solr regresa un conjunto de campos entre los que se encuentra la llave primaria de los elementos que conforman los resultados. Una vez identificada la información requerida, es recuperada de la base de datos usando las llaves primarias devueltas por Solr y desplegada al usuario. (Figura 1)

Patrones:

Los patrones de diseño son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces. Un patrón de diseño resulta ser una solución a un problema de diseño


1.2 Tecnologias usadas

Estas son las siguientes tecnologias usadas:

  • Web Service: Es un servicio ofrecido por una aplicación que expone su lógica a clientes de cualquier plataforma mediante una interfaz accesible a través de la red utilizando tecnologías (protocolos) estándar de Internet.

Principal ventaja

La principal ventaja de utilizar un servicio web es que son bastante prácticos debido a que son independientes de las aplicaciones.

Caracteristicas

Aportan interoperabilidad entre aplicaciones de software independientemente de sus propiedades o de las plataformas sobre las que se instalen.
Los servicios Web fomentan los estándares y protocolos basados en texto, que hacen más fácil acceder a su contenido y entender su funcionamiento.
Al apoyarse en HTTP, los servicios Web pueden aprovecharse de los sistemas de seguridad firewall sin necesidad de cambiar las reglas de filtrado.
Permiten que servicios y software de diferentes compañías ubicadas en diferentes lugares geográficos puedan ser combinados fácilmente para proveer servicios integrados.
Permiten la interoperabilidad entre plataformas de distintos fabricantes por medio de protocolos estándar y abiertos. Las especificaciones son gestionadas por una organización abierta, la W3C, por tanto no hay secretismos por intereses particulares de fabricantes concretos y se garantiza la plena interoperabilidad entre aplicaciones.
  • Rest Full:

Un servicio web RESTful hace referencia a un servicio web que implementa la arquitectura REST. Un servicio web RESTful contiene lo siguiente:

-- URI del recurso. Por ejemplo: http://api.servicio.com/recursos/casas/1 (esto nos daría acceso al recurso “Casa” con el ID “1″)

-- El tipo de la representación de dicho recurso. Por ejemplo, podemos devolver en nuestra cabecera “Content-type: application/json”, por lo que el cliente sabrá que el contenido de la respuesta es una cadena en formato JSON, y podrá procesarla como prefiera. El tipo es arbitrario, siendo los más comunes JSON, XML y TXT.

-- Operaciones soportadas: HTTP define varios tipos de operaciones (verbos) [3], que pueden ser GET, PUT, POST, DELETE, PURGE, entre otros. Es importante saber para que están pensados cada verbo, de modo que sean utilizados correctamente por los clientes.

-- Hipervínculos: por último, nuestra respuesta puede incluir hipervínculos hacia otras acciones que podamos realizar sobre los recursos. Normalmente se incluyen en el mismo contenido de la respuesta, así si por ejemplo, nuestra respuesta es un objeto en JSON, podemos añadir una propiedad más con los hipervínculos a las acciones que admite el objeto.


1.3 Metodologías usadas (XP)

Desarrollo

La metodologia usada en el presente proyecto es XP (Programación Extrema). XP Es una metodología ágil centrada en potenciar las relaciones interpersonales como clave para el éxito en desarrollo de software, promoviendo el trabajo en equipo, preocupándose por el aprendizaje de los desarrolladores, y propiciando un buen ambiente de trabajo.

Características

  • Desarrollo iterativo e incremental: pequeñas mejoras, unas tras otras.
  • Pruebas unitarias continuas.
  • Corrección de todos los errores antes de añadir nueva funcionalidad. Hacer entregas frecuentes.
  • Refactorización del código, es decir, reescribir ciertas partes del código para aumentar su legibilidad y mantenibilidad pero sin modificar su comportamiento.
  • Propiedad del código compartida: en vez de dividir la responsabilidad en el desarrollo de cada módulo e n grupos de trabajo distintos, este método promueve el que todo el personal pueda corregir y extender cualquier parte del proyecto.
Fases Entregables
Planificacion Documento de requerimientos, historias de usuario
Diseño Tarjetas CRC, diagrama de dominio, casos de uso, prototipos
Codificacion Programación e Integracion
Pruebas Entrega de la aplicación funcionando

2. Documento de diseño


2.1 Requerimientos de la solucion

Codigo Requerimientos funcionales Descripcion
R1 Registro de usuarios Existirán distintos perfiles de usuario: logueado y y no logueado. Los no logueados únicamente podrán visualizar las búsquedas
R2 Guardar busqueda de usuarios El usuario registrado podrá guardar todas su búsquedas
R3 Uso de redes sociales Los usuarios podrán compartir sus resultados de búsquedas en Facebook.
R4 Registrar acciones de los usuarios El sistema a implementar deberá poder guardar la mayor cantidad de acciones que realice el usuario logueado en el buscador

2.2 Casos de uso

Modelado de Actores

Tabla de actores

Actor Desscriipción Cargo
Usuario Interactua con los diferentes módulos de la aplicación Usuario

Modelado de Casos de Uso

Lista de casos de Uso

Id Nombre Descripción Actor Requerimiento_Id
01 Iniciar Sesión Ingreso del usuario al buscador. Usuario R1
02 Registrarse Registrarse en el buscador. Usuario R1
03 Realizar Búsquedas Realizar búsquedas ya sea que haya iniciado o no sesión Usuario R1
04 Marcar Favoritos Se podrá marcar como favorita una búsqueda que se haya realizado. Usuario R2
05 Compartir búsqueda en redes sociales Compartir los resultados de las búsquedas en Facebook y Twitter. Usuario R3
06 Visualizar Historial Mostrar las fechas y busquedas que ha realizado el usuario . Usuario R4

diagrama de casos de uso

Diagrama general

especificacion de casos de uso


2.3 Diagramas de dominio


2.4 Usos de patrones

Singleton

El patrón singleton esta incluido dentro del api de logout de facebook lo que nos permite que exista una sola instancia hacia los servidores de bases de datos de facebook.

Facade

El patrón facade se genera de manera automática al realizar el restFull al servicio web desde la base de datos.


2.5 Diagramas de secuencia (si fuera necesario)


2.6 Arquitectura del software

3. Documento de contrucción


3.1 Estandares de la construccion

La construcción del siguiente proyecto fue realizado en la siguientes fases:

fase 1: Maquetado

Para realizar el maquetado de todo el proyecto se trabajo con el framework de boostrap.

_Fase 2: Login_y registro

En esta fase del proyecto se utilizo el Api de facebook la que nos permite loguearnos de forma segura y poder sacar los datos del usuario para realizar el registro.

Fase 3: Búsqueda

Se utilizo el servicio web de apache solr atraves de rest lo que que permite realizar búsquedas atraves de facetas.

Fase 4: Compartir búsquedas

Se coloca un botón de compartir en cada uno de los resultados de la búsqueda para que se pueda compartir la búsqueda en el facebook

fase 5: favoritos

Se utiliza la arquitectura de rest para marcar algún tipo de búsqueda y posteriormente proceder a guardar en la base de datos

fase 6: historial

De igual manera se utiliza la arquitectura rest guardar en la base de datos y poder visualizar los diversos tipos de actividades que un usuario a realizado.


3.2 Construcción del proyecto

Para la construcción del proyecto fue prescindible utilizar las siguientes herramientas:

SO Ubuntu 14.04

Computador 1 Toshiba core i5 64 bits

ID net beans 8.0.2

Glass fish server 4.1

Bootstrap 3.3.6

Html5

Ccs 3

Motor de búsqueda de Solr

Jquery 1.11.1.min


3.3 Clases


3.4 Interfaz de usuario

Busqueda

Logueo con Facebook

Resultados de busqueda

Favoritos

Historial

compartir con Facebook


3.5 Servicios

Atraves del motor de búsqueda de Solr, se realiza peticiones HTTP para poder consultar documentos al servidor que nos ofrece el servicio de base de dato atravez de REST permitiéndonos la recuperación de documentos en este caso tipo JSON


3.6 Funcionalidades adicionaeles


4 Presentación