INMO: A Web Architecture For Real Estate Search Systems L. Martínez, J. Contreras, Member, IEEE, R. Mendoza and P. Torres Abstract— This paper describes the development of a real estate electronic marketplace based on platform J2EE. A novel real estate search method based on Google Maps APIs is included. We explain the approach we propose on a prototypical implementation exhibiting the described functionality. Keywords— software architecture, information systems, J2EE, real estate, geo localization, marketplace, Google Maps. E I. INTRODUCCIÓN L SECTOR inmobiliario, es un excelente escenario en el desarrollo de soluciones informáticas que apunten a una innovación en los procesos inmobiliarios a través de plataformas y aplicaciones dinámicas que generen crecimiento al sector y promoción de sus servicios. Se ha comprobado, que las operaciones inmobiliarias de alguna manera se originan por medio de Internet, facilitando al cliente, una comunicación directa con el vendedor. Para conseguirlo, el diseño estructural, arquitectura e implementación de la aplicación debe estar bien pensado y ejecutado [1]-[4]. INMO es una propuesta arquitectónica para el modelamiento de aplicaciones del sector inmobiliario, bajo una arquitectura cliente servidor, desarrollada en plataforma Java Enterprise Edition, bajo las tecnologías: JSF (Java Server Faces), JPA (Java Persistence API), ORM (Object-Relational Mapping Hibernate), y Spring Framework integrado al CMS Content Management System Drupal. INMO como aplicación web es un Marketplace Inmobiliario que integra un sin número de agencias inmobiliarias en un mismo sitio. Estos entornos virtuales facilitan procesos de negocio entre empresas y la relación entre compradores y vendedores [5], [6]. También, es un CRM (Customer Relationship Management) que ayuda a las relaciones entre agentes de ventas y clientes creando una relación directa de mercadeo, además de las diferentes estadísticas que ayuda a los gestores de venta [7],[8]. La arquitectura también integra herramientas para la búsqueda de inmuebles como el API Street View y Google Maps con el fin de disponer de una vista en 3D de la zona, al L. Martínez, Corporación Universitaria Rafael Núñez, Cartagena, Colombia, laura.martinez@curnvirtual.edu.co. J. Contreras, Corporación Universitaria Rafael Núñez, Cartagena, Colombia, epcontrerasj@ieee.org. R. Mendoza, Fundación Universitaria Tecnológico Comfenalco, Cartagena, Colombia, rmendoza@tecnologicocomfenalco.edu.co. P. Torres, Fundación Universitaria Tecnológico Comfenalco, Cartagena, Colombia, ptorres@tecnologicocomfenalco.edu.co. igual que incluir servicios de ayuda para los clientes y recibir alertas personalizadas según las preferencias del usuario. II. MARCO TEÓRICO A. Arquitectura J2EE J2EE es una plataforma abierta de desarrollo empresarial que define un estándar para el desarrollo y despliegue de aplicaciones empresariales multicapa con n-niveles, basadas en servidor, distribuidas y en componentes. La plataforma J2EE conforma un conjunto de especificaciones que proveen de servicios y componentes en todos los niveles de una arquitectura para la creación de aplicaciones clientes y para desarrollar grandes aplicaciones distribuidas de servidor [9][12]. Una aplicación J2EE está formada por un conjunto de componentes que se ensamblan y despliegan en contenedores o piezas de software que ofrecen acceso a los servicios de los componentes desplegados dentro del contenedor. A su vez los contenedores forman parte de los servidores de aplicaciones, que implementan los servicios que ofrecen los contenedores a los componentes. B. API Google Map y Street View Google Maps es un servicio de mapas al que se accede desde un navegador web y dependiendo de la ubicación geográfica, se pueden ver mapas básicos o personalizados e información sobre negocios locales, como ubicación, datos de contacto, indicaciones sobre cómo llegar hasta ellos, etc. En estos mapas se pueden ver al instante las áreas adyacentes sin tener que esperar a que se carguen Imágenes por satélite con datos de mapa superpuestos [13], [14]. Por su parte, Street View, es un complemento de los mapas de Google, que permite hacer recorridos virtuales de 360 grados por las calles de una ciudad. La aplicación de georeferenciación, fue lanzada en 2007 con el propósito de complementar las plataformas Google Maps y Google Earth y permitirles a los navegadores ver y recorrer las panorámicas de espacios públicos y atractivos turísticos. Street View, como parte de Google Maps, permite ver durante un desplazamiento, las indicaciones de sentido de las vías, giros, nombres y números de las calles para ir de un lugar a otro de manera guiada [15]. III. DESCRIPCIÓN DE LA ARQUITECTURA Arquitectura es un concepto indispensable entre las aplicaciones hoy en día y se refiere a la combinación e integración de múltiples ambientes y plataformas. Los sistemas de información pueden moldearse según el estilo de arquitectura de niveles de abstracción o capas. INMO es una aplicación web desarrollada en lenguaje Java en una arquitectura N - Capas, donde los clientes se conectan a la aplicación a través de una conexión HTTP o HTTPS. Para la comunicación entre objetos se utiliza el Framework Spring en su versión 3.0 para la inyección de dependencia, lo cual permite desacoplar las clases, componentes u objetos. La comunicación de la aplicación se desarrolla por medio de mensajes entre objetos, y como su arquitectura es N-Capas, su comunicación al nivel más bajo es de tipo RMI (Java Remote Method Invocation), el cual forma parte del entorno estándar de ejecución de Java y proporciona un mecanismo simple para la comunicación de servidores en aplicaciones distribuidas. INMO presenta un modelo de capas separadas, lo que la hace extensible y fácil de mantener. Cada capa tiene una función muy específica y a través de APIs existirá una comunicación entre la presentación, la lógica de negocio y el acceso a datos. Este estilo se organiza de forma jerárquica, donde cada capa ofrece servicios a la capa superior y la capa inferior a los usuarios finales. El modelo básico de la arquitectura propuesta se puede observar en la Fig. 1, en donde la comunicación entre la parte cliente y servidor en este caso se puede considerar como contenedores de servicios. La Capa de presentación representa la interfaz de usuario que maneja el cliente a través de un navegador web, donde un archivo JSP (Java Server Pages) muestra la información en el navegador del cliente. En esta capa se utilizan Prime Faces para controlar que componentes de la página actual se actualizarán y cuáles no; JSF con el fin de simplificar el desarrollo de las interfaces de usuario en la aplicación y Managed Beans para manejar los datos y su instanciación y hacerlo disponible en las páginas JSP, además de removerlo cuando su scope haya salido de contexto. Figura 1. Arquitectura INMO. En el modelo de negocio encontramos el componente de búsqueda inmobiliaria que muestra el estado de cada uno de los inmuebles y localización geográfica, de acuerdo a distintos tipos de búsqueda: mapas, nombre de inmuebles, rango, inmobiliarias, código, zona, tipo de negocio, etc. Consultar Por tipo de inmueble Consultar Por rango precio Consultar Por inmobiliaria Consultar Por tipo de negocio Consultar Por cantidad de habitaciones Consultar Por zona Usuario (Clientes ) Consultar Por ciudad Consultar Por código Búsqueda por mapa Consultar Por departamento Cionsultar por mapa Por su parte, la Capa de Negocio, contiene los componentes de negocio reutilizables y reúne todos los aspectos del software que automatizan o apoyan los procesos que llevan a cabo los usuarios y está compuesta por un conjunto de servicios web y objetos de negocio utilizando el Framework de aplicaciones Spring 3.0. El framework separa el acceso a datos de los aspectos relacionados con las transacciones, con el fin de permitir objetos en la capa de negocio reutilizables que no dependan de ninguna estrategia de acceso a datos. Figura 2. Caso de Uso de componente de Búsqueda. Este componente de búsqueda se conecta con el API de Google a través de un Web Service consumiendo los recursos de la aplicación y mostrando detalles del inmueble, principalmente información del entorno en el que está ubicado, información sobre qué hay y qué se ve alrededor, paisaje y vistas de la calle, volumen de tráfico, tiendas que hay alrededor, estado del barrio, información sobre cómo se ve la vivienda desde la calle, el estado de la fachada y de las aceras, la altura del edificio y vista de la entrada desde la calle. Arquitectura”. Dentro de las capas servidor y cliente se realizaron pruebas unitarias a las clases generadas. Para esto se utilizó la herramienta que automatiza este tipo de pruebas para el lenguaje de programación Java denominada JUnit. Figura 3. Información general del inmueble solicitado en la búsqueda. Con el framework JUnit se realizaron las pruebas unitarias al código a través de la ejecución de clases Java para verificar si el funcionamiento de cada una de los métodos de las clases que componen el proyecto se comporta como se espera. Se definieron los casos de prueba principalmente para la búsqueda de inmuebles y se compararon los resultados. Después de realizarles las pruebas, se observa que se cumplieron con las especificaciones, por lo tanto JUnit devuelve el método de la clase lo que indica que el procedimiento fue exitoso. A su vez, se hicieron pruebas de integración de los distintos componentes. Esta prueba fue fundamental para un despliegue de la aplicación exitoso, como se muestra en la Fig. 5 y 6. Figura 4. Ubicación geográfica utilizando la API de Google maps. En la Capa de Acceso a Datos se utiliza tanto JPA como DAO. Aquí los datos compartidos entre los componentes web y las invocaciones de persistencia de la aplicación se mantienen en una base de datos MySQL, utilizando JPA para accederla. Con DAO (Objetos de Acceso a Datos) se busca aislar a la aplicación de la tecnología de persistencia Java subyacente (API de Persistencia Java), la cual podría ser JDBC, JDO, Enterprise JavaBeans, Hibernate, o cualquier otra tecnología de persistencia. Usando Objetos de Acceso de Datos significa que la tecnología subyacente puede ser actualizada o cambiada sin cambiar otras partes de la aplicación. Figura 5. Modulo administrativo Ingreso de Inmuebles. Por último, la capa de integración está enfocada en permitir la integración entre una implementación del aplicativo y cualquier otro sistema de la organización. Esta incluye el servicio de mensajería como mecanismo de comunicación utilizando Java Message Service (JMS) y Simple Object Access Protocol (SOAP). La aplicación, se despliega bajo un servidor de aplicaciones Glasfish, en el cual se configura un pool de conexiones para el manejo de concurrencia. Este servidor de aplicaciones tiene una manera peculiar de tratar los recursos JDBC: Tiene un pool de conexiones, y después un JDBC Resources. Lo anterior, debido a que un pool de conexiones puede tener varios JDBC Resources. Figura 6. Simulador de credito inmobiliario. Por último, se hicieron pruebas de integración alfa y beta realizadas por los usuarios expertos, con el fin de comprobar si el producto está listo para ser implantado para el uso operativo en el entorno del usuario. V. CONCLUSIONES IV. RESULTADOS Para validar la arquitectura propuesta, se procedió a la implementación de un software, que utiliza las herramientas, tecnologías e infraestructura descrita en III, “Descripción de la El sector inmobiliario depende en gran medida que posibles clientes reciban la información que necesitan en el momento indicado y de la forma más adecuada para captar su atención. J2EE puede ser la mejor opción al escoger una tecnología sobre la cual desarrollar aplicaciones empresariales ya que posee un alto grado de estructuración además de ofrecer aplicaciones robustas, escalables, flexibles y portables. Con este conjunto de tecnologías se construyó el portal inmobiliario, sistema que cuenta con un componente de búsqueda de inmuebles, con la capacidad de generar y mostrar resultados precisos y contextualizados de la información contenida en el sitio. La principal ventaja del aplicativo INMO en comparación con una página web de búsqueda de inmuebles, es que es un CRM en el cual el agente tiene una comunicación directa con los clientes de manera integrada. Además permite guardar los resultados de las búsquedas de los clientes, con el fin de que las inmobiliarias y los agentes organicen sus bases datos de posibles clientes potenciales tomando como referencia los intereses de estos. Por otra parte, permite posicionamiento de inmuebles basados en algoritmos de puntuación, cuenta con conexión con Google Street View, de igual manera se debe tener en cuenta que en el aplicativo pueden existir diferentes inmobiliaria en un solo esquema y siempre se respeta la integridad de cada una, complementando todo lo anterior, la carga de imágenes mediante comprensión lo cual permite rapidez a la hora de subirlas, sumándole a todas estas la ventaja de un simulador de crédito, que permite a los clientes tener como referencias cuales serían los diferentes valores de las cuotas para créditos hipotecarios. Por su parte, el portal administrativo fue implementado a través de plataforma Java, el cual integra herramientas como Street View y Google Maps con el fin de disponer de una vista en 3D de la zona, al igual que incluir servicios de ayuda para los clientes y recibir alertas personalizadas según las preferencias del usuario. Este portal administrativo también cuenta con un completo módulo de administración de inmuebles, inmobiliarias, clientes, agentes, entre otros datos que pueden ser gestionados de forma dinámica. A continuación se muestra una comparación entre el sistema INMO y dos de los sistemas de software para el sector inmobiliario más importantes del mundo: Zillow (http://www.zillow.com/) y Trulia (http://www.trulia.com/). TABLA I. COMPARACIÓN CON OTROS SOFTWARE DEL SECTOR INMOBILIARIO. CRITERIO Búsqueda Mapas Vista de Calle CRM Multimedia Modelo negocio INMO Si ZILLOW Si TRULIA Si la Si Si Si Si Imagen Si Imagen de Si Imagen y video Realtor Business Solutions Si Publicidad Publicidad No Si Si Si Si Si Si Si Simuladores de crédito Información demográfica Responsive Design Si analizamos la tabla anterior, podemos concluir que la plataforma INMO se encuentra en un buen nivel arquitectónico teniendo en cuenta los sitios web inmobiliarios con los cuales fue comparado. Como trabajo futuro, se plantea el desarrollo en entorno móvil nativo, dado que por ser una arquitectura n-capas y además de estar su capa de presentación en JSF implementando el framework Primefaces es de fácil escalabilidad al ambiente móvil, ya que Prime Faces permite el desarrollo tanto en ambientes móviles como web. Actualmente ofrece una plantilla en Drupal basada en HTML5 Responsive Design. VI. AGRADECIMIENTOS El grupo de investigadores agradece al Departamento Administrativo de Ciencia, Tecnología e Innovación de Colombia, COLCIENCIAS, por la financiación de este proyecto mediante el contrato No. 0099 – 2012. REFERENCIAS [1] [2] [3] [4] [5] V. Urbanavičienė. A. Kaklauskas, E. K. Zavadskas, and M. Seniut, “The Web–Based Real Estate Multiple Criteria Negotiation Decision Support System: A New Generation of Decision Support Systems”, International Journal of Strategic Property Management, vol. 13, pp. 267-286. 2009. V. Urbanavičienė. A. Kaklauskas, E. K. Zavadskas, and M. Seniut, “The Web–Based Real Estate Multiple Criteria Negotiation Decision Support System: A New Generation of Decision Support Systems”, International Journal of Strategic Property Management, vol. 13, pp. 267-286. 2009. B. Resch and B. Zimmer, User Experience Design in Professional MapBased Geo-Portals. International Journal of Geo-Information, vol. 2, pp. 1015-1037. 2013. M. Wang and A. Xu. Architecture and Implement for the Real Estate Surveying Business System. Advances in information Sciences and Service Sciences(AISS), vol 5, no. 2, pp. 678-684. 2013. J. Guo, L. Xu, Z. Gong, Ch-P. Che and S. Chaudhry, “Semantic Inference on Heterogeneous E-Marketplace Activities”. IEEE Trans. on Systems, Man, and Cybernetics. vol. 42, no. 2, pp. 316-330. 2012. [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] S.Hariharaputhiran, “Challenges and Opportunities of E-Commerce”, International Journal of Marketing, Financial Services & Management Research, vol. 1, no. 3, pp. 98-1o8, 2012. F. Maroofi, B. M. Aliabadi, H. Fakhri and Hadikolivand. Effective Factors on CRM Development. Asian Journal of Business Management, vol. 5, no. 1, pp. 52-59. 2013 D. Das and P. Kundu. Applications of Dynamic Program Analysis in a CRM Process: A Futuristic Concept. International Journal of Scientific and Research Publications, vol. 2, no. 4, pp. 1-13. 2012. R. Udayakumar, .K.P. Thooyamani and V. Khanaa. A Comparison of J2EE and .NET as Platforms for Developing E-Government Applications. International Journal of Engineering Research and Development, vol 7, no. 1, pp. 116-121. 2013. H. Li-Xia, Z. Feng-Qing, J. Shu-Hong and M. Chao-Hua, “Design and Analysis of the Third-party Logisitics Management System Based on J2EE”, Advanced Engineering Forum, vol. 6, pp. 491-495. 2012. O. Morariu, C. Morariu and T. Borangiu, “Transparent Real Time Monitoring for Multi-tenant J2EE Applications”, Journal of Control Engineering and Applied Informatics, vol.15, no.4 pp. 37-46, 2013. D. Krafzig, K. Banke, D. Slama, “Enterprise SOA Service-Oriented Architecture Best Practices”. Prentice Hall. April 2005. Sh. Hu, and T. Dai. Online Map Application Development Using Google Maps API, SQL Database, and ASP.NET. International Journal of Information and Communication Technology Research, vol. 3, no. 3, pp. 102-110, 2013. Z. Yu-lin and F. Zhong-liang, “Release of spatial information based on Google Maps API”, Journal of Computer Applications, vol. 5, pp. 14501452, 2011. V. Ganesh and L.G.Malik. Text Extraction From Big Data Images. International Journal of Advanced Research, vol 2, no. 5, pp. 844-854. 2014. Laura Martínez es Ingeniera de Sistemas de la universidad de San Buenaventura y Magister en Ingeniería de Sistemas de la Universidad Tecnológica de Bolívar. Entre sus áreas de interés se encuentran la ingeniería de software, Computación móvil, metodologías agiles en el desarrollo de software e ingeniería ontológica. Juan Contreras. Se graduó de Ingeniero Electricista en 1987 en la Universidad Tecnológica de Bolívar y como especialista en Automatización Industrial en 1998 en la misma universidad. En el año 2008 obtuvo el título de PhD en el Instituto Superior Politécnico José Antonio Echeverría, en La Habana, Cuba. Su campo de interés incluye la Identificación de Sistemas, Control Inteligente y el desarrollo de métodos de modelación y control difusos. Raynel Mendoza es Ingeniero de Sistemas de la Fundación Universitaria Tecnológico Comfenalco, de Cartagena, Colombia, y Magister en Software Libre de la Universidad Politécnica de Cataluña, España, y actualmente adelanta estudios de Doctorado en Tecnología en la Universidad de Girona, España. Entre sus áreas de interés se encuentran la ingeniería de software, software educativo, ingeniería ontológica y las tecnologías para la gestión de procesos de negocios. Pedro Torres. Se graduó de Ingeniero de Sistemas en la Fundación Universitaria Tecnológico Comfenalco en el año 2012. Su campo de interés ha sido el desarrollo de software.