Buscador - 52723david/Buscador_Arq_Apli GitHub Wiki

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
- Servidor con interfaz tipo REST (interacción vía HTTP, XML, JASON, CSV, etc.)
- Esquema de datos configurable.
- Utiliza varios caches para agilizar las búsquedas.
- Interface Web de administración.
- Navegación de resultados por facetas.
- Escalable a varios servidores para búsquedas distribuidas.
- Módulos de importación de datos desde bases de datos, e-mail y archivos de texto enriquecido (PDF, Word, RTF).
- 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.
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
