Revista Ciencia y Tecnologia 2da Edicion

Page 1

Revista Científica y de Divulgación de la Dependencia de Educación Superior Área Ciencias de la Información de la Universidad Autónoma del Carmen Año 2 - Número 2

Septiembre-Diciembre 2011



I

Directorio

UNIVERSIDAD AUTÓNOMA DEL CARMEN Sergio Augusto López Peña Rector Andrés Edgardo Salazar Dzib Secretario General María de los Ángeles Buenabad Arias Coordinadora de la DES-DACI

Juan Manuel Carrillo Coordinador de Extensión Universitaria Melenie Guzmán Ocampo Directora de Difusión Cultural

Benjamín Tass Herrera Editor y Coordinador Editorial

Editores Asociados Ernesto Bautista Thompson Andres Soto Villaverde Gustavo Verduzco Reyes

Any Naholi Dorantes Echevarría Fomento Editorial y Diseño

José Felipe Cocón Juárez Patricia Zavaleta Carrillo Dámaris Pérez Cruz

Leticia Pérez Romero Logística

Maquetación y Diseño Roberto Carlos Villegas Solis

Octubre - Diciembre de 2010

Comité Editorial


II

Directorio Consejo Editorial Internacional Organización

País

Jesús Serrano

University of Castilla-La Mancha

Spain

Hermilo Sánchez Cruz

Benemérita Universidad Autónoma de Aguascalientes

México

Abdiel E. Cáceres

Universidad Juárez Autónoma de Tabasco

México

Jesús Ezequiel Molinar Solís

Universidad Autónoma del Estado de México

México

Cristina Puente Águeda

Universidad Pontificia Comillas

Spain

Andrés Díaz Valladares

Universidad de Montemorelos

México

Héctor Jiménez

Universidad Autónoma Metropolitana

México

Miguel-Ángel Sicilia

University of Alcalá

Spain

Octubre - Diciembre de 2010

Nombre

COMPUTACIÓN Y TECNOLOGÍA, Año 2, No. 2, Septiembre – Diciembre 2011, es una publicación cuatrimestral editada por la Dependencia de Educación Superior Área Ciencias de la Información de la Universidad Autónoma del Carmen, Calle 56 No. 4 por Av. Concordia, Colonia Benito Juárez Ciudad del Carmen, Campeche, México. www.cienciaytecnologia.unacar.mx. Editor responsable: Benjamín Tass Herrera. Reservas de derecho al Uso Exclusivo No. 04-2009-101309494200-203. ISSN (en trámite). Responsable de la última actualización de esta publicación electrónica: DES-DACI, Benjamín Tass Herrera.

La Revista Computación y Tecnología (CYT), se concibe como una revista electrónica cuyo objetivo es el de recopilar y dar a conocer las experiencias y conocimientos científicos de investigadores jóvenes y experimentados en el campo de estudio de las ciencias de la información. En ella se seleccionan los trabajos que abordan temas desde las bases teóricas de la información y la computación, así como su aplicación en sistemas y entornos computacionales. Eso nos compromete a dar a conocer a la comunidad nacional e internacional avances científicos y tecnológicos significativos en áreas como Ingeniería de Software, Bases de Datos, E-learning y Tecnología Educativa, Inteligencia Artificial, Bioinformática, Aprendizaje de Máquina, Robótica y Visión, Sistemas y Tecnologías de la Información, Redes y Sistemas Distribuidos, Procesamiento Distribuido y Paralelo, Interacción Humano Computadora, Multimedia y Realidad Virtual, Arquitectura de Computadoras, Lenguajes y Autómatas, Teoría de la Computación, Graficación, Agentes, Teoría de Sistemas, Ofimática, Agentes, entre otros. El contenido de los trabajos que aquí se presentan es responsabilidad exclusiva de sus autores y no necesariamente refleja la postura del editor de la publicación. Se concede permiso para copiar partes de esta publicación para su uso personal o académico, siempre y cuando se dé crédito a los autores de los trabajos y a la publicación misma. Responsibility for the accuracy of all statements in each paper, rest solely with the authors and do not necessarily reflect the position of editor of the publication. Permission is granted to copy portions of the publication for personal use and for the use of the students providing credit is given to the authors and publication.

Esta obra fue realizada en octubre de 2010, en las instalaciones del Centro de Tecnologías de Información, Dependencia de Educación Superior Área Ciencias de la Información de la Universidad Autónoma del Carmen.


III

Contenido Artículos de Investigación

8

Desempeño Criptográfico de las Primitivas de Cifrado Firma de RSA

12

Patrones de Diseño para el Modelado Orientadoa Dominio aplicando el Paradigma Orientado a Objetos

18

Herramienta interactiva para cursos básicos de Estructura de Datos

23

SOUT Linux : Untraje a la medida para apoyo edcativo UTs

28

Sistema SLAM generador de mapas de una casa-habitacion para robots moviles.

33

Hacia el desarrollo de Aplicaciones Web con tecnologias JPA, EJB, JSF y PrimeFaces

39

Red Neuronal artificial para la clasificación Semántica de Atributos en Base de Datos Heterogéneas

44

Octubre - Diciembre de 2010

Marco de Seguridad para el uso de Cloud Computing en Universidades



Sec ci贸n

Art铆culos Arbitrados

Investigaci贸n


8

Investigación

Marco de Seguridad para el Uso de Cloud Computing Público en Universidades Javier Daniel Peralta Azuara, Andrés Soto Villaverde, Gustavo Verduzco Reyes. Universidad Autónoma del Carmen, C. 56 No. 4 Esq. Avenida Concordia Col. Benito Juárez C.P. 24180, 01 (938)-3811018 Ext. 1007, Ciudad del Carmen, Campeche, México jaenaz58@hotmail.com, asoto@pampano.unacar.mx, gverduzco@pampano.unacar.mx Artículo recibido el 11 de Junio del 2010

RESUMEN

Octubre - Diciembre de 2010

E

l cloud computing permite la adquisición de recursos computacionales de manera rápida, flexible y con un menor costo de implementación, beneficiando a las universidades que requieren de servicios de TI, sin embargo, los beneficios son opacados por riesgos y problemas de seguridad de la información, ocasionados al transferir los datos a una cloud pública. En este trabajo se presenta un marco de medidas y recomendaciones de seguridad de la información, seleccionadas mediante un análisis comparativo de mejores prácticas del Cloud Security Allinace y del National Institute of Standards and Technology, con el fin de brindar recomendaciones de seguridad adecuadas para universidades que pretenden adquirir servicios de cloud computing público, lo anterior ha sido plasmado en el Marco de Seguridad que contribuye a mitigar los riesgos de seguridad de la información, durante las etapas de planeación, gestión y operación de los servicios de cloud computing pública en las universidades.

Artículo aceptado el 20 de Agosto del 2010

ABSTRACT

T

his paper introduces the results obtained with the implementation of a fuzzy model for Information Retrieval based on synonymy.The model refers to measuring the degree of similarity between synonymous terms and to assign a weight to the concept associated with them. This way, the model tries to measure whether a document refers to a certain concept or not. In this sense the implemented model is compared with the traditional method based on measuring just the presence of terms, and using the well known TF – IDF metric. The method based on TF – IDF metric was also implemented. The experiments were done with 1998 documents from the CLEF corpus, and 352,640 terms were indexed. Results show that the method based on synonymy retrieved in each experiment conducted, all the documents retrieved by the traditional method. Even more, in 62% of the experiments the synonymy based method overtakes the traditional one.

Palabras Clave: Cloud Computing Pública, Seguridad de la Información, Riesgos de Seguridad, Marco de Seguridad.

Keywords: Public Cloud Computing, Information security, Security Risks, Security Frameworks.

1. Introducción

terceros como los proporcionados en un entorno de cloud computing público [4].

E

l cloud computing ha facilitado el acceso a una gran diversidad de recursos computacionales, permitiendo la comunicación, el uso de herramientas de colaboración y algunos otros servicios innovadores que contribuyen con la experiencia educativa en instituciones de nivel superior, sin embargo, la seguridad de la información es la principal preocupación de una organización al confiar su información en plataformas de cloud pública [1][2][3], de tal manera que los retos y riesgos que obstaculizan la adopción del cloud computing en las universidades están relacionados con problemas de disponibilidad, confianza, confidencialidad y la garantía de protección de los datos. A estos grandes retos, se agrega la problemática de que la mayoría de los administradores de Tecnologías de la Información (TI) de las instituciones educativas de nivel superior, no están calificados para la administración de riesgos y servicios provenientes de

L

o anterior sugiere el diseño de un Marco de Seguridad de la información para el uso de servicios de cloud computing público en universidades, a través de un análisis comparativo de mejores prácticas y guías de seguridad del Cloud Securiry Allinace (CSA) y del National Institute of Standards and Technoloy (NIST) con el objeto de guiar a los usuarios con lineamientos técnicos metodológicos de seguridad de la información para llevar a cabo el proceso de planeación, gestión y operación de servicios de cloud computing pública en las universidades. La estructura del presente artículo se compone de la siguiente manera; en la sección 2 se presenta una descripción de los modelos de implementación del cloud computing, en la sección 3 se identifican los principales riesgos de seguridad de la información de una cloud pública, la sección 4 presenta


9 Marco de Seguridad para el uso de Cloud Computing Púbico

Investigación

en Universidades

el análisis comparativo entre las guías del NIST y CSA, para concluir con la sección 5 con los resultado a través de una serie de recomendaciones de seguridad estructuradas de manera organizada conformando el Marco de seguridad de la información.

2. Modelos de implementación del cloud computing

U

La cloud híbrida es una composición de dos o más clouds (privada, comunitaria o pública) que se mantienen como entidades separadas pero que están unidas por tecnología estandarizada o propietaria que permite la portabilidad de datos y aplicaciones [7]. En pocas palabras, una cloud híbrida es una combinación de la cloud pública y la cloud privada.

2.1 Cloud pública

U

na cloud pública es un esquema de implementación de cloud computing que está generalmente abierto para el uso del público en general, donde el público en general es definido como los usuarios individuales o empresas. La infraestructura de la cloud pública utilizada es propiedad de la organización proveedora de los servicios [3].

Modalidad del Gestionada Cloud Por

Infraestructura Propiedad de

Pública

Proveedor externo

Proveedor externo Externa

Privada

Organización o Organización o proveedor externo proveedor externo

Interna o Uno Externa

Híbrida

Ambos

Interna y Uno o Externa varios

L

Ambos

Ubicación

Clientes Uno o varios

2.1 Cloud pública

os servicios de cloud computing más utilizados por las universidades son correo electrónico, calendarios compartidos, aplicaciones como procesadores de texto, hojas de cálculo, almacenamiento de datos y mensajería instantánea, ofrecidos mediante plataformas como Live@edu y Google Apps [9][15], a partir de los servicios anteriores se han generado grandes preocupaciones o riesgos alrededor de la disponibilidad y seguridad de la información, mismos que han sido manifestados en trabajos previos enfocados al uso de cloud computing en universidades [8][4], a continuación se describen sólo algunos de los riesgos que se presenta al adquirir servicios de cloud pública.

Integridad y confidencialidad de la información (Riesgo 1-R1).Un riesgo se presenta en miles de universidades que hacen uso de servicios de correo electrónico en la plataforma de Live@edu, la cual carece de cifrado de la información y por lo tanto pone en riesgo la confidencialidad de la información. [10][11] Cumplimiento y E-dicovery (Riesgo 2-R2). La información en la cloud pude ser almacenada en más de un domicilio legal, lo que implica tener que lidiar con diferentes consecuencias legales, por ejemplo, las universidades mexicanas que han adoptado los servicios de la plataforma de Google Apps tienen que regirse por la ley del gobierno de california en caso de litigio, pues así lo indican las condiciones de uso de la plataforma [12].

Octubre - Diciembre de 2010

na de las principales preocupaciones en las organizaciones que desean adquirir servicios de cloud computing tienen que ver con cuestiones relacionadas con la seguridad y la privacidad, justamente el tratamiento de dichas preocupaciones es uno de los factores para realizar la clasificación o modelos de implementación en la cloud [5]. Las clouds privadas son infraestructuras bajo demanda de un solo propietario, quien controla qué aplicaciones se ejecutan y en donde, son propietarios de los servidores, de la red y solamente ellos pueden decidir que usuarios están autorizados para utilizar la infraestructura. [6]

En la tabla 1 se pude apreciar que la infraestructura y la gestión de una cloud pública se encuentra en manos del proveedor de servicios a diferencia de los modelos privados e híbridos, dicha situación ha sido motivo para generar desconfianza entre los usuarios de una cloud pública, pues la gestión de la seguridad de la información es complicada para el cliente porque la infraestructura computacional que almacena la información queda fuera de su alcance.


Marco de Seguridad para el uso de Cloud Computing Púbico 10 en Universidades

Investigación Disponibilidad y fiabilidad de los servicios (Riesgo 3-R3). Un caso común es la falta de disponibilidad, un ejemplo manifestó recientemente en la Universidad de Missouri al presentar problemas acceso a sus cuentas de correo electrónico de Live@edu [16].

Octubre - Diciembre de 2010

Portabilidad e interoperabilidad de los servicios en la cloud (Riesgo 4-R4). El problema se presenta cuando los servicios usan diferentes interfaces y lenguajes de programación [10].

ara el diseño del marco de seguridad, se realizó un análisis comparativo entre la guía de seguridad del CSA y las recomendaciones proporcionadas por el NIST, para identificar aquellas recomendaciones que concuerdan y se ajustan a las etapas de planeación, gestión y operación de servicios de cloud computing pública, considerando aspectos como disponibilidad, confidencialidad e integridad de la información, para mitigar los riesgos y sus niveles de impacto en las universidades. El proceso descrito se visualiza en la figura 2.

Perdida de gobernabilidad. (Riesgo 5-R5). La pérdida de gobernabilidad puede conducir a la incapacidad de cumplir con los marcos legales y reglamentarios de una institución [14] Como primer paso se analizó la Guía para la seguridad en áreas críticas en atención al Cloud Computing del CSA que cuenta con 13 dominios de seguridad [13], posteri3.1 Priorización de los riesgos ormente las principales recomendaciones de seguridad que aplican a las diferentes etapas de externalización de servicios de acuerdo a las Directrices de Seguridad y Privacidad a probabilidad de los riesgos y sus impactos en las unien Cloud Computing Público [14] del NIST. versidades, se realizó mediante una tabla de distribución de probabilidad de riesgos e impacto al negocio, tabla 2, retomada de un estudio realizado por European Network and Information Security Agency (ENISA) [10].

L

Probabilidad de incidencia Muy bajo Impacto a la Universidad

Bajo Mediano Alto Muy alto

P

4 Análisis comparativos de guías de seguridad

Muy Bajo

Bajo

Medio

Alto

Muy Alto

0

1

2

3

4

1

2

3

4

5

2

3

4

5(R4)

6 (R3)

3

4

5

6

7

6

7 (R1,R2, R5)

8

4

5

Figura2. Proceso del analisis comparativo de guias de seguridad CSA y NIST

De acuerdo a lo que se ilustra en la figura 2, el análisis para la obtención de la etapa de planeación del marco de seguridad se realizó considerando el Dominio 1 del CSA y las actividades preliminares recomendadas por el NIST, mismas que se ajustan a las acciones previas a la adopción de servicios de cloud computing, en la etapa de gestión las recomendaciones consideradas fueron del dominio 2 al 6 del CSA y las tres actividades de la guía del NIST, finalmente la etapa de operación fue realizada a partir de los dominios del 7 al 13 y de algunas recomendaciones de las tres actividades del NIST, la clasificación de las dos últimas etapas se realizó de Los riesgos fueron calificados de acuerdo a los acuerdo a una clasificación que propone el CSA en su guía siguientes rangos: Riesgos bajos 0-2, Riesgos medios 2-5, de seguridad para áreas criticas en entornos de cloud computing [13] Riesgos altos de 6-8 La tabla 2 está conformada por 25 celdas dentro de las cuales se distribuyen riesgos de seguridad y sus respectivos niveles de impacto al negocio ya definidos por la ENISA para entornos de cloud computing, de tal manera que los riesgos identificados (R1-R5) en la sección 3 de este trabajo fueron mapeados a la tabla 2, para determinar qué nivel de impacto tienen sobre las universidades, con la intención de ser considerados para seleccionar medidas que puedan mitigar las principales preocupaciones o riesgos de seguridad en la cloud pública.


11 Marco de Seguridad para el uso de Cloud Computing Púbico

Investigación

en Universidades

5. Resultado

P

artiendo de la descripción general de una cloud pública y de la identificación de los riesgos de seguridad de la información que impactan a las universidades en entornos de cloud computing pública, se realizó un análisis comparativo entre las guías de seguridad del CSA y del NIST para seleccionar aquellas medidas que permitan mitigar los riesgos de seguridad en una cloud pública.

EL resultado final se presenta en el diseño del Marco de Seguridad para el Uso de Cloud Computing Público en Universidades, debido a su extensión en la tabla 5 solo se presenta una versión corta del mismo, el cual contempla recomendaciones para mitigar riesgos de seguridad en las etapas de planeación, gestión y operación, para obtener la máxima protección en las universidades. Etapas Planeación La universidad debe llevar a cabo actividades de planificación en la preparación para la expedición de un contrato de servicios externalizados en la cloud pública

Gestión La universidad debe asegurarse de que todos los requerimientos de seguridad están establecidos en los SLAs

1 Revisar que los procesos que gestionan la información cumplan con los requisitos legales, normativos, sectoriales y contractuales establecidos. 2 Asegurarse de que se mantiene la propiedad de los datos en su formato original y autenticable. 3 Requerimientos contractuales para finalización de servicios. • Confirmar que el proveedor cuenta con una política de plan de continuidad del negocio. • Se recomienda el cifrado de datos personales. • Establecer procesos de autenticación de los usuarios y de políticas para controlar el acceso dentro del servicio de cloud pública. • La estrategia de respuesta a incidencias debe tratar las cuestiones de la identificación, notificación, y subsanación de acceso no autorizado a los datos de los usuarios.

Tabla 5. Marco de Seguridad para el Uso de Cloud Computing Público en Universidades

Conclusión

E

l aporte del trabajo realizado radica en las recomendaciones del marco de seguridad, orientado específicamente para cubrir la falta de requerimientos de seguridad en las universidades que desean adquirir servicios de cloud computing, dichas recomendaciones obtenidas de extensas guías que abordan aspectos generales de seguridad para el cloud computing, se presentan ahora en el marco de seguridad de manera sencilla, ordenada y específica para mitigar los riesgos de seguridad de la información derivado del uso de servicios de cloud computing pública en las universidades.

Octubre - Diciembre de 2010

Operación Esta sección incluye aspectos y medidas de seguridad que se deben considerar para la continuidad de negocio, respuesta ante incidencias, notificaciones y subsanación ante incidencias.

Recomendaciones Conocer la estructura del cloud computing Elegir el adecuado modelo de servicios (SaaS, IaaS, PaaS). Identificar los requerimientos de seguridad, privacidad, disponibilidad como criterios de selección para proveedor. Clasificar los datos que serán procesados en la cloud pública


Desempeño Criptografico de las primitivas de Cifrado12 y Firma de RSA

Investigación

Desempeño Criptográfico de las Primitivas de Cifrado y Firma de RSA Edelia Beltrán Arreola, Gina Gallegos-García, Gualberto Aguilar Torres Instituto Politécnico Nacional. Escuela Superior de Ingeniería Mecánica y Eléctrica Unidad Culhuacan, Sección de Estudios de Posgrado e Investigación. Ciudad de México. ebeltrana0800@ipn.mx, ggallegosg@ipn.mx, autg79y@yahoo.com Artículo recibido el 11 de Junio del 2010

RESUMEN

Octubre - Diciembre de 2010

D

Artículo aceptado el 20 de Agosto del 2010

ABSTRACT

N

ebido a la preocupación de resguardar y proteger la información, actualmente es común escuchar términos referentes a la seguridad de la información, para lo cual, el uso de la criptografía permite que solamente personas autorizadas tengan acceso a dicha información, además de permitir verificar si la información sufrió alguna modificación, logrando de esta manera garantizar las propiedades de confidencialidad y autenticidad de la información. De acuerdo a esto, en este artículo se hace un análisis comparativo del desempeño de las primitivas criptográficas de cifrado y firma digital. En dicho análisis se toma como base la ejecución de los algoritmos de cifrado y firma, considerando los diferentes recursos computaciones en donde se ejecutaron. De acuerdo al análisis se determinó que para una mayor seguridad en los datos es recomendable cifrar y firmar la información, ya que los tiempos de cifrado y cifrado con firma son casi idénticos.

owadays there is a rising need for information security due to a constant concern to save and protect information. For this purpose, cryptography enables to accomplish two important tasks: confidentiality and authentication. Confidentiality ensures that only authorized people have access to critical information while authentication provides the capability to verify if the information has been altered. In this paper we present a comparative analysis regarding the performance of encryption and digital signature cryptographic primitives, in which we consider the execution of encryption and signature algorithms, taking into consideration the computational resources where they are executed. According to the analysis we could establish that due to the fact that encryption and signature times are almost identical, it is highly advisable to encrypt and sign information for a greater level of security.

Palabras Clave: Primitivas Criptográficas, Cifrado, Descifrado, Firma Digital, Criptografía de Clave Pública, RSA.

Keywords: cryptographic primitives, encryption, decryp(5) tion, digital signature, Public Key Cryptography, RSA.

1. Introducción

cifrado y la firma digital, utilizadas a lo largo de este trabajo. Para ello, una de las dos claves es llamada clave privada y se mantiene en resguardo del propietario, la otra es llamada clave pública y como su nombre lo dice, se da a conocer públicamente, en donde se incluye un certificado digital, público y accesible [2][3]. En la PKC el hecho de que la clave pública sea conocida, no implica que se vaya a obtener la clave privada, debido a que los algoritmos de clave pública basan su seguridad en la dificultad de resolver problemas matemáticos entre los que destacan, el logaritmo discreto y la factorización de números enteros[4][5].

L

a necesidad de proteger la información surgió desde que el hombre aprendió a comunicarse, por esta razón se hizo necesaria la búsqueda métodos para transformar o cifrar la información a transmitir, con la finalidad de mantenerla en secreto. Es así, que desde aquel entonces, nace la criptografía, la cual en la actualidad se clasifica de dos maneras diferentes, en simétrica y asimétrica o de clave pública[1].

En la criptografía de clave simétrica se utiliza una sola clave, tanto para cifrar como para descifrar la información. En la Criptografía de Clave Pública ( PKC, por sus siglas en Ingles), se utilizan dos claves para desarrollar diferentes primitivas criptográficas, entre los que destacan el

El objetivo de este trabajo es hacer un análisis comparativo del desempeño de las primitivas criptográficas, el cual permite determinar los tiempos de ejecución de cada primitiva de acuerdo a los recursos computacionales.


13

Desempeño Criptografico de las primitivas de Cifrado y Firma de RSA

Investigación

2.- Marco Conceptual

L

a Criptografía permite transformar texto plano a texto incomprensible para entidades no autorizadas. En ella, intervienen algoritmos matemáticos que hacen que la comunicación entre dos entidades sea segura aún en presencia de algún adversario malicioso [6]. Para alcanzar dicha comunicación segura entre dos entidades la criptografía se encarga de garantizar ciertas propiedades criptográficas como lo son: confidencialidad, integridad, autenticación del origen de los datos, autenticación de los datos y el no repudio [6][7]. En la PKC, se maneja un par de claves formado por la clave pública y la clave privada por cada entidad participante. En la primitiva de cifrado la clave pública se utiliza para cifrar la información, mientras que la clave privada descifra la información cifrada con la clave pública. Este proceso se ilustra en la Figura 1.

Matemáticamente en la primitiva criptográfica de cifrado, si la entidad A quiere enviar información secreta a la entidad B, A utiliza la clave pública de B, denotada como y cifra la información con ésta, tal y como se muestra en la Ecuación (1). Después, la información solo puede ser descifrada por B utilizando su correspondiente clave privada, denotada por cómo se muestra en la Ecuación (2). (1)

(2) Donde M representa el mensaje en claro y C el mensaje cifrado, E representa algoritmos de Cifrado y D algoritmos de descifrado. Entre los algoritmos utilizados en la PKC se encuentran RSA, ECC, Diffie-Hellman [7], etc. En este trabajo se programo RSA para las pruebas correspondientes. En la primitiva de firma, las claves se utilizan de diferente manera a la primitiva de cifrado, en este caso la clave privada se utiliza para cifrar la información obteniendo de esta manera la firma digital de un documento, mientras que la clave pública se utiliza para descifrar la información, dando como resultado la verificación de la firma. Además, las funciones Hash se utilizan en esta primitiva, para obtener el resumen hash del texto plano que es el que se cifra con la clave privada del emisor, obteniendo de esta manera la firma digital [8]. Esto se ilustra en la Figura2.

Octubre - Diciembre de 2010

Figura 1.- Proceso de Cifrado y Descifrado en la primitiva de Cifrado


Desempeño Criptografico de las primitivas de Cifrado y Firma de RSA

Investigación

Octubre - Diciembre de 2010

Figura 2. Proceso de la Primitiva de Firma Digital

3.- Algoritmo Criptográfico de Cifrado RSA y su Implementación

E

l cifrado RSA es uno de los algoritmos más populares en la actualidad, fue desarrollado en 1997 y es nombrado así en honor a sus desarrolladores Rivest, Shamir y Adlemar [8]. El algoritmo sirve para cifrar y descifrar información y para generar y verificar firmas digitales. La mayor vulnerabilidad conocida del algoritmo RSA tiene que ver con el tamaño de las claves que en él se utilizan. La seguridad de RSA está basada en la dificultad de factorizar dos números grandes, del orden de 200 o más dígitos. Esto para generar el par de claves.

3.1 Implementación RSA

P

ara poder implementar el algoritmo criptográfico de clave pública RSA, se realizo la simulación del mismo en el lenguaje de programación Java, en el entorno de desarrollo IDE de Eclipse. Es importante mencionar que este algoritmo trabaja con una longitud de clave de 1024 bits lo cual se puede ver en código hexadecimal. Las características del equipo donde se desarrollo la implementación son: Equipo HP con SO W7, Intel Core i3, 4GHz RAM, 500GD.

El algoritmo RSA funciona de la siguiente manera:

14


15 Desempeño Criptografico de las primitivas de Cifrado

Investigación

y Firma de RSA

4.- Algoritmo Criptográfico de Firma Digital y su Implementación

La firma digital se genera a partir de un resumen del mensaje, para lo cual se selecciono la función SHA1, la cual da como salida una cadena de longitud fija. La salida del algoritmo SHA1 es de 160 bits. Es decir, el mensaje original se compacta a una longitud fija de 160 bits sin importar el tamaño del mensaje.

L

5.- Pruebas y Resultados

os resultados mostrados en esta sección son en cuanto al desempeño del algoritmo de cifrado RSA con firma y sin firma en diferentes equipos de cómputo con características diferentes. Para ello, se tomaron tres diferentes equipos con las siguientes características: 1.-SO W7, Alienware, Intel Core i7 , 120GHz, 4GHz RAM, 500GD. 2.- SO W7, HP, Intel Core i3 , 2.27GHz, 4GHz RAM, 500GD. 3.- SO WXP, HP, Pentium 4,3GHz ,2GHz RAM,80GD.

Posteriormente, se ejecutó el algoritmo de cifrado RSA y el de cifrado RSA con firma, teniendo como parámetro La particularidad de este resumen es que resulta único para cada texto plano, no importa que el texto tenga de entrada el mensaje “hola mundo”, este procedimiento se varios miles de bits, basta con cambiar un solo bit para que ejecuto por 15 ocasiones con la finalidad de obtener una media de los tiempos de ejecución. se genere un resumen distinto. En este trabajo se simuló la firma digital utilizando el algoritmo asimétrico RSA. Las características del equipo donde se desarrollo la implementación son: Equipo HP con SO W7, Intel Core i3, 4GHz RAM, 500GD.

Para una mayor precisión en los tiempos se implemento el método de java que da el tiempo de ejecución en cada algoritmo. Cabe mencionar que el tiempo se da en milisegundos.

Octubre - Diciembre de 2010

L

a firma digital está basada principalmente en el cifrado asimétrico y es contemplada en las leyes de diferentes países [8][9]. Sirve para autenticar información y garantiza el no repudio, debido a que al ser el firmante el único propietario de la clave privada, útil para generar la firma digital.


Desempeño Criptografico de las primitivas de Cifrado 16 y Firma de RSA

Investigación

En la Tabla 1 se detallan los resultados obtenidos a partir del procedimiento antes mencionado. PC

NP OM TC TD CF DF TT 1.- SO W7, Alienware, Intel Core i7 , 120GHz, 4GHz RAM, 500GD. RSA Cif/Des 2737 14 1872 1886 6514 RSA Firma 602 RSA 2856 14 2037 2038 461 1 7407 Cif/Des/Firma 2.- SO W7, HP, Intel Core i3 , 2.27GHz, 4GHz RAM, 500GD. RSA Cif/Des 2481 51 4500 4521 11543 RSA Firma 1611 RSA 3131 31 4470 4471 1310 10 17995 Cif/Des/Firma 3.- SO WXP, HP, Pentium 4,3GHz ,2GHz RAM,80GD RSA Cif/Des 14959 32 2390 2391 9766 RSA Firma 621 RSA 1828 32 2422 1234 1101 11 6628 Cif/Des/Firma

Octubre - Diciembre de 2010

1.- Tiempos de procesamiento de las primitivas de cifrado y cifrado con firma digital, en diferentes Tabla equipos de cómputo, con diferentes recursos computacionales.

Donde: PC = Primitiva Criptográfica de Cifrado y Firma en RSA. NP= Tiempo en números primos (milisegundos). OM=Tiempo en las Operaciones Matemáticas (milisegundos) TC= Tiempo en el cifrado (milisegundos). TD= Tiempo en el descifrado (milisegundos) CF= Tiempo en el cifrado en Firma (milisegundos).DF= Tiempo en el descifrado en Firma (milisegundos). TT=Tiempo total del programa (milisegundo). 6. Conclusiones

E

n sus inicios, el objetivo original de la Criptografía era mantener en secreto la información. Sin embargo, su uso en la actualidad, no es únicamente para brindar confidencialidad, sino que además busca garantizar la autenticación de la fuente y de la información, así como el no repudio, propiedades que no se lograban con el uso de la Criptografía Simétrica.

En este trabajo se simuló un algoritmo criptográfico de clave pública en cifrado y cifrado con firma digital y se demostró que hay poderosos métodos criptográficos que permiten mantener la información segura, aun con los nuevos riesgos de inseguridad que existen en Internet. Con esto se puede decir que la firma digital da una seguridad mayor que una firma en papel debido a que garantiza la integridad del contenido, además no se puede firmar digitalmente un documento en blanco y después llenarlo, como tampoco se puede cortar y pegar una firma digital, ya que es demostrable que se puede comprobar la firma digital de un documento. Es importante analizar el desempeño que las primitivas criptograficas de la PKC tienen al ejecutarse en equipos con diferentes resursos computacionales, para que en el momento en que se tengan que utilizar se considere una ó las dos primitivas dependiendo de la aplicación. Despues de medir los tiempos de ejecución de la primitiva de cifrado y cifrado con firma, se observó que el tiempo de ejcución muy similar, por lo que se recomienda cifrar y firmar al mismo tiempo la información para


17 Desempeño Criptografico de las primitivas de Cifrado

Investigación

y Firma de RSA

Referencias [1]Roberto de Miguel García, “Criptografía clásica y moderna”, SEPTEM UNIVERSITAS, Primera edición: enero, 2008. Pp. 1-12. [2] Alvaro Ojeda, “Infraestructura de Clave Pública”, 2002. [3] Wenbo Mao, Modern Cryptography theory & practice, Hewlett-Packard,publisher partner. Pp. 205-206,428-430. [4] Henk C. A van Tilborg, Editor-in-Chief, Encyclopedia of Cryptographyand Security, Springer, 2005.Pp.119,122,280-281. [5]. Douglas R. Stinson. University of Waterloo. Cryptography Theory and Practice, Third Edition, Kenneth H. Rosen, Ph.D. Pp 285-286 [6]D. Hankerson, A. Menezes y S. Vanstone, Guide to Elliptic Curve Cryptography. New York: Springer-Verlag, 2004, pp. 1-7. [7] Ariel Maiorano, Criptografía, Técnicas de desarrollo para profesionales, Editorial Alfaomega, 2009. Pp 10-21 [8] F. Rodríguez-Henríquez, N. A. Saqib, A. Díaz-Pérez y Ç. K. Koç, Cryptographic Algorithms on Reconfigurable Hardware. New York: Springer, 2006, pp.7-32 [9]Eissa, T.; Razal, S.A.; Ngadi, M.D.A., “Enhancing MANET Security Using Secret Public Keys,” Future Networks, International Conference on, 2009 Biografía de autores Edelia Beltrán Arreola

Gina Gallegos-Garcia Recibió el título de Ingeniería en Computación, el Grado de Maestra y de Doctora en Ciencias por parte de la ESIME Culhuacan en los años 2002, 2005 y 2011 respectivamente. Durante el verano del 2011 realizó una estancia Posdoctoral de investigación en la Universidad de Yale de los Estados Unidos de América. Actualmente es Profesora Invitada de la Sección de Estudios de Posgrado e Investigación de la ESIME Culhuacan

Gualberto Aguilar Torres

Recibió el grado de Maestro en Ciencias de Ingeniería en Microelectrónica y de Doctor en Comunicaciones y Electrónica en 2004 y 2008 respectivamente, en el Instituto Politécnico Nacional. Sus principales áreas de interés son procesamiento de señales, reconocimiento de patrones, redes neuronales y biometría. En 2005 recibió el premio a la mejor tesis de maestría por parte del IPN. El profesor Aguilar Torres es miembro del

Octubre - Diciembre de 2010

Recibió el título de Ingeniería en Comunicaciones y Electrónica. Actualmente se encuentra cursando la Maestra en Ingeniería en Seguridad y Tecnologías de la Información en la ESIME Culhuacan. Se desarrolló profesionalmente en Libra Telecoms S.A de C.V y Atento México, por mencionar algunas. Sus áreas de interés son la Criptografía y las Telecomunicaciones.


Patrones de Diseño para el modelado Orientado a Dominio aplicando el PAradigma Orientado a Objetos

Investigación

18

Patrones de Diseño para el Modelado Orientado a Dominio aplicando el Paradigma Orientado a Objetos. Héctor Cuesta-Arvizu, José Ruiz-Castilla, Centro Universitario UAEM Texcoco, Av. Jardín Zumpango s/n Fraccionamiento el Tejocote, C.P.56259, Texcoco, Estado de México Artículo recibido el 11 de Junio del 2010

RESUMEN

Octubre - Diciembre de 2010

L

as organizaciones solicitan sistemas de información con el fin de solucionar un problema y mejorar sus procesos. Pero, por el lado de la gestión del proyecto están los dilemas de ¿Cuál es el mejor diseño del sistema? ¿Qué paradigma utilizar conviene usar: estructurado, funcional u orientado a objetos?. El modelo de dominio del sistema depende de los procesos de negocios que va a resolver, pero el diseño es decisión de los arquitectos del software. El diseño de un sistema debe tener bajo acoplamiento y alta cohesión para que permita un sano proceso de mantenimiento. En este artículo se propone la selección así como uso de un grupo de principios y patrones de diseño orientado a objetos que previenen el problema de un modelo de dominio anémico en el software desarrollado bajo el paradigma orientado a objetos.

Palabras Clave: Modelo de Dominio, Modelo Anémico, Refactorización.

L

1. Introducción

Artículo aceptado el 20 de Agosto del 2010

ABSTRACT

O

rganizations need information systems to solve problems and improve their processes. But on the side of project management there are dilemmas like: What is the best system design? What paradigm should you use: structured, functional or object-oriented?. The domain model of the system depends on the business processes that will solve, but the design is the decision of the software architects. The design of a system should have low coupling and high cohesion to allow a healthy maintenance process. In this paper we propose the selection and use of a set of principles and patterns of object-oriented design that prevents the problem of anemic domain model in the software developed under the object-oriented paradigm.

Keywords: Domain Model, Model Anemic, Refactoring.

Por lo que se han desarrollado diversas tecnologías con el propósito de resolver este problema, a través de los motores Objeto-Relación como Hibernate, iBatis, etc.

a evolución de los lenguajes de programación han dado como consecuencia el establecimiento de paradigmas de programación que intentan abstraer el comportamiento de sistemas naturales o mecánicos a la computadora. Uno de los paradigmas más difundidos en la actualidad es el Orientado a Objetos, así mismo se han creado principios de diseño y patrones de desarrollo orientado a objetos que aseguran el cumplimiento del paradigma.

La consecuencia directa del conflicto Objeto-Relación es el uso de objetos sin comportamiento llamados Objetos de Transferencia de Valores POJO por sus siglas en ingles (Plain Old Java Object). Como medio de transferencia de valores lo que trae como consecuencia el anti-patrón Modelo de Dominio Anémico.

Por otra parte, el almacenamiento de datos basado en un modelo relacional trae consigo un problema ideológico llamado conflicto Objeto-Relación. Donde al no poder persistir los objetos con su estado los datos son mapeados en atributos de tipo relacional.

En el presente trabajo se describen los principios de Diseño Orientado a Objetos, los modelos guiados por dominios, arquitectura en capas, patrón entidad y refactorización. Con el fin de establecer que es y como deber el buen diseño del modelado del dominio.


19 Patrones de Diseño para el modelado Orientado a Dominio aplicando el Paradigma Orientado a Objetos

2. Principios de Diseño Orientado a Objetos SOLID. Los principios de diseño Orientados a Objetos SOLID fueron propuestos por Robert C. Martin [5], son descritos en la Tabla 1.

Investigación 3. Modelo Guiado por Dominio.

Eric Evans establece que los componentes fundamentales de Model-Driven Design son un conjunto de patrones que son parte del ecosistema de Domain-Driven Design véase la Figura 1.0 [4].

SRP

El Principio de Única Una clase debe tener una y sólo una, la razón Responsabilidad para cambiar. OCP El Abierto Cerrado Usted en principio debe ser capaz de extender un comportamiento de clases, sin modificarlo. LSP El Principio de Las clases derivadas deben ser sustituibles por sus Sustitución de Liskov clases base ISP Principio de Segregación Hacer bien las interfaces de grano para el cliente de la Interface específico. DIP Principio de Inversión de Depende de abstracciones, no de concreciones la Dependencia

Tabla 1. Principio de diseño de una clase de acuerdo a SOLID [5].

De las revoluciones que han ocurrido en la industria del software, dos han sido exitosas que han impregnado nuestra mentalidad en la medida en que los damos por sentado. Programación Estructurada y Programación Orientada a Objetos.

Los principios SOLID exponen los aspectos de gestión de la dependencia de OOD (Diseño Orientado a Objetos) en contraposición a los aspectos de la conceptualización y la modelización. Esto no quiere decir que OO es una herramienta insuficiente para la conceptualización del espacio del problema o que no es un buen lugar para la creación de modelos. Ciertamente, muchas personas sacan valor de estos aspectos de la OO. Los principios, sin embargo, se centran muy bien en la gestión de la dependencia. La Dependencia de Gestión es un tema al que la industria del software se enfrenta constantemente.

3.1. Arquitectura por Capas. Martin Fowler explica muy bien, que ésta no es la única forma de dividir en capas una aplicación: 1. Presentación / Controlador / Dominio / Data Mapping / Data Source [Capas de Brown] 2. Cliente / Presentación / Negocio / Integración / Recursos [Capas del viejo core de J2EE] 3. Presentación / Negocio / Acceso a Datos [Capas de Microsoft DNA] 4. Presentación / Aplicación / Servicios / Dominio / Persistencia[Capas de Marinescu] 5. Consumer / Consumer Helper / Aplicación / Dominio / Acceso a Persistencia / Public Stored Procedures / Private Stored Procedures [Capas de Nilsson]

Octubre - Diciembre de 2010

Todas nuestros lenguas de programación modernos están fuertemente influenciados por estas dos disciplinas. De hecho, se ha vuelto difícil de escribir un programa que no tiene la apariencia externa de ambos programación estructurada y programación orientada a objetos. La mayoría de nuestros lenguajes principales son de clase base y no son compatibles con las funciones o variables que no están dentro de una clase, por lo que parece obedecer a los símbolos más evidentes de la programación orientada a objetos.

Usualmente, las líneas de código que efectivamente resuelven los problemas del dominio constituyen apenas una pequeña porción del sistema. Sin embargo, la importancia de estas líneas es absolutamente desproporcionada con respecto a su tamaño. Por tanto la importancia de separar los objetos de dominio del resto de la aplicación es extremadamente importante. La tarea principal de un equipo de trabajo del Diseño Guiado por Dominio es aislar el dominio de los demás conceptos del sistema relacionados con la tecnología.


Patrones de Diseño para el modelado Orientado a Dominio aplicando el PAradigma Orientado a Objetos

Investigación Evans [4] propone una arquitectura muy parecida a la de Fowler, pero sin capa de Acceso al Negocio o Service Layer

20

Una Entidad debe ser distinguible sin importar que exista otro objeto con todos sus valores equivalentes. La identidad de una Entidad va más allá del valor de sus atributos. Una Entidad es algo que tiene continuidad a través de un ciclo de vida y es identificable independientemente de los datos que son importantes para la aplicación. 3.3. Patrón Objeto de Transferencia de Valores (POJO)

Octubre - Diciembre de 2010

Mantener el seguimiento de las Entidades es fundamental, pero darle identidad a otros objetos que no son Entidades puede afectar el rendimiento del sistema. No todos los objetos son Entidades. Hay algunos objetos que representan aspectos descriptivos del dominio sin incluir un concepto de identidad. Estos objetos son los llamados POJO.

Los nombres de las capas en las diferentes arquitecturas pueden variar. Alguna capa puede estar o no estar, o se puede dividir en dos o más, pero lo importante es que nunca puede faltar la capa de dominio o de negocio. Esta capa se debe aislar del resto de las capas del sistema. Esta capa será la implementación limpia de un modelo guiado por el dominio. El Diseño Guiado por Dominio requiere sólo la capa de negocio para existir. Los objetos de dominio deben quedar libres de la responsabilidad de mostrarse, guardarse y/o responder a tareas de la aplicación, para poder enfocarse en expresar el modelo de dominio. 3.2 Patrón Entidad El patrón Entidad se basa en que los objetos no son fundamentalmente definidos por sus atributos, sino más bien por una identidad que se mantiene a través de todo un ciclo de vida. Una Entidad puede crearse, persistirse, recuperarse, viajar a través de una red y armarse del otro lado. Independientemente de que para reconstruir el objeto se tenga que crear una instancia nueva del mismo ya que la entidad deberá conservarse. En el caso de pérdida de identidad de un objeto en un sistema de software conduce a problemas de corrupción de datos y errores de ejecución. La Entidad debe contar con un método para verificar su identidad con otra instancia de su misma clase.

Los POJO no necesariamente tienen que ser simples. Nada impide que un POJO contenga varios atributos y métodos. En general, son objetos usados para pasar como parámetro en los mensajes entre otros objetos. Frecuentemente son transitorios, creados únicamente para la operación y luego descartados. Suelen ser usados como atributos de Entidades u otros Objetos de Transferencia como los Bean, TransferObject, ValueObject, ActiveRecord. 3.4. Patrón de Servicio. En algunos casos, el diseño más claro y pragmático incluye operaciones que conceptualmente no pertenecen a ningún objeto. Sería un error agregar esas operaciones a cualquier Entidad o POJO. Para esos casos, estas operaciones deben ser incluidas cómo métodos en un Servicio que se modele de forma explícita en el dominio. Las clases de Servicio son para operaciones no pertenecientes a una entidad, no conservan estado (stateless). Un servicio es una operación ofrecida como una interfaz del dominio, que no encapsula estado, como sí lo hacen las Entidades y los POJO. El patrón de Servicio es ampliamente usado en los marcos de Trabajo (frameworks) más frecuentes de java, pero el concepto también puede ser aplicado a la capa de dominio. Un servicio debe tener una responsabilidad bien definida. Esa responsabilidad y su interface deben estar definidas como parte del Modelo de Dominio. Los parámetros y los resultados del servicio deben ser objetos de dominio.


21 Patrones de Diseño para el modelado Orientado a Dominio

Investigación

aplicando el Paradigma Orientado a Objetos

3.5. Patrón por Módulos. La modularización en la capa de dominio debe concebirse como una parte significativa del modelo; debe servir para contar la historia del dominio a gran escala. El Bajo acoplamiento y alta cohesión son dos principios generales de diseño que aplican tanto a clases individuales como a Módulos. Un bajo acoplamiento entre los diferentes módulos, hace posible el análisis del módulo de forma aislada, con el mínimo de referencias e interacciones con el mundo exterior, compuesto por un ecosistema de otros módulos. La modularización de un dominio es una tarea que requiere alto nivel de abstracción. Un error temprano en la elección de los Módulos puede provocar Módulos con alto acoplamiento. 4. Refactorización.

Con el refactorización se puede tomar un mal diseño, incluso el caos y re trabajar con el diseño interno del código. Cada paso es simple. Usted puede mover un campo desde una clase a otra, eliminar código de un método para hacer su propio método y agregar código diferente o bajar la jerarquía. Sin embargo la acumulación de efectos de estos pequeños cambios puede mejorar el diseño. Esto es exactamente lo contrario de una noción normal de la decadencia del código. Con la refactorización se buscar el balance de cargas de trabajo. Las interacciones resultantes conducen hacia un programa con un diseño en buen estado como desarrollo continuo [1]. La refactorización es el arte de mejorar la seguridad del diseño del código existente. Las implicaciones que tiene son:

Hacer refactorización de cambios en el punto de balance entre el diseño por adelantado y el diseño resultante. El diseño hecho por adelantado en el avance de la implementación; produce diseño que está diseñado y entrelazado con la implementación. La compensación del diseño por adelantado y el diseño obtenido depende de lo bien que podemos anticipar problemas o evaluarlos en el código. Hacer refactorización es bajar los costos en los riesgos emergentes. La refactorización puede ser corta o larga. Muchos procesos de refactorización son cortos. Idealmente los refactorización cortos son aplicados sin el cuidado suficiente y las refactorizaciones largas son raramente aplicadas. Incluso cuando se aplica en gran escala el enfoque no es para nuevas características por seis meses, pero más bien es a medida que avanza y se mantiene corriendo el sistema todo el tiempo. El patrón básico del ciclo del refactorización es: • • •

Elegir donde hay más sospechas, Seleccionar un refactorización donde hay señas de sospecha y Aplicar el refactorización.

Se seleccionan técnicas de refactorización que mejoran el código en cada iteración a través del ciclo de vida. Porque ninguno de los pasos cambia en el programa el comportamiento observable, el programa permanece en funcionamiento. Por lo tanto, el ciclo mejora el código mantiene el comportamiento.

Octubre - Diciembre de 2010

Es el proceso de cambiar un sistema de software internamente de tal manera que no se altere su comportamiento externo. Es una forma disciplinada de limpiar el código que minimiza los cambios de la introducción de errores. En esencia se puede aplicar refactorización al diseño del código después de haber escrito el código.

La refactorización no solo son los cambios incluidos en el sistema. Los cambios al diseño que representa el agregar nueva funcionalidad no se considera refactorización. Mientras en la refactorización se puede usar parte del proceso utilizado para crear el nuevo código y no como parte de agregar nuevas características. Por ejemplo en Programación Extrema (XP) [6] usa un desarrollo de pruebas que consiste en escribir una prueba, luego escribir el código para introducir nuevas características y finalmente hacer refactorización para incluir el diseño.


Investigación Lo parte más difícil de todo el proceso está en identificar la correcta aplicación del refactorización [2]. Las categorías de refactorización son:

Referencias

1. Fowler, Martin y Beck, Kent. Refactoring ing impriving the design of existing code. Canada : Addison wesley, 1999. 2. Wake, William C. Refactoring ing Workbook. New York : Addison Wesley, 2004. 3. Lippert, Martin y Roock, Stephen. Refactoring ing in large projects. Inglaterra : Wiley, 2006. 4. Evans Erick. Domain-Driven Design: Tackling Complexity in the Heart of Software . Addison-Wesley, 2003. 5. Peix, Carlos. Articles.uncleBob. [En línea] [Citado el: 10 de 5. Conclusiones. Mayo de 2011.] http://butunclebob.com/ArticleS.UncleBob. PrinciplesOfOod. Fueron muchos años trabajando con el paradigma 6. Beck, Kent. Extreme Programming Explained. Addisonestructurado, usando funciones en lenguajes de programWesley. 2000. ación orientados a un paradigma estructurado. El cambio de paradigma es difícil, el diseñador genera diseños orientados a objetos pero arrastrando practicas del diseño estructurado. Biografía de autores Al hacer un modelo de dominio orientado a objetos se debe ser cuidadoso para evitar que el dominio presente un modelo anémico. En el caso en el que las clases carezcan de Héctor Cuesta-Arvizu, es Alumno de la Maestría en Ciencomportamiento, se puede tener alto acoplamiento y afectar cias de la Computación en la Universidad Autónoma del Esfuturos cambios durante el mantenimiento. tado de México (UAEM), sus áreas de interés son: Ingeniería

1. 2. 3. 4. 5. 6.

Octubre - Diciembre de 2010

Patrones de Diseño para el modelado Orientado a Dominio 22 aplicando el PAradigma Orientado a Objetos

Componiendo métodos. Moviendo atributos entre objetos. Organizando datos Simplificación de expresiones condicionales Método más sencillo para hacer llamadas Hacer frente a la generalización [3]

La comunicación entre clases debe ser normal, no debe ser excesiva porque cae en problemas de alta dependencia. En el caso de que el diseño del sistema sea anémico vale la pena aplicar proceso de refactorización, con dicho proceso y es posible mejorar el diseño sin cambiar el comportamiento del sistema, hasta es posible incrementar el performance. El fenómeno de un modelo de dominio anémico desaparecerá en medida que se apliquen los principios y patrones de diseño orientado a objetos tanto en el código como en los marcos de trabajo (Framework’s) de desarrollos aplicados.

de Software, Análisis de Datos, Modelación Computacional, Predicción de Series de Tiempo, Epidemiologia Computacional e Inteligencia Artificial, Información de contacto: hmcuesta.data@gmail.com. José Ruíz-Castilla es Profesor Investigador de la Universidad Autónoma del Estado de México con Maestría en Computo Aplicado por el Colegio de Posgraduados y es Candidato a Doctorado en Ingeniería de Software sus aéreas de investigación son: Administración de Proyectos, Ingeniería de Software, Sistemas de Gestión del Conocimiento, Modelado de Procesos y Lenguajes de Programación.


23 Herramienta interactiva para cursos basicos de

Investigación

estructura de datos

Herramienta interactiva para cursos básicos de estructuras de datos Andrés Sandoval Bringas1, Mónica Carreño León1, Italia Estrada Cota1, Elvia Aispuro Félix1 y Jaime Suarez Villavicencio1 1 Universidad Autónoma de Baja California Sur, Departamento de Sistemas Computacionales {sandoval, mcarreno, iestrada, jsuarez, aispuro}@uabcs.com Artículo recibido el 11 de Junio del 2010

RESUMEN

E

Palabras Clave: Herramienta didáctica, ingeniería de software, enseñanza de estructuras de datos, listas ligadas.

E

1. Introducción

l estudio de las estructuras de datos y algoritmos se considera esencial para alumnos que se encuentran estudiando una carrera en las áreas de informática y computación. El aprendizaje de las materias de estructuras de datos y algoritmos es de los más difíciles y complejos.

Los estudiantes han mostrado desde siempre dificultad para asimilar nociones abstractas y por consiguiente se muestran altos índices de reprobación y de deserción en los cursos. Las listas ligadas son una de las estructuras de datos fundamentales, las cuales pueden ser utilizadas para implementar otras estructuras de datos.

ABSTRACT

L

earning courses in data structures and algorithms is the most difficult and complex for students to careers in the areas of informatics and computer science. Learning to program is a difficult process. Experience has proved that students have difficulty using programming languages to build computer programs. This article presents the development of an interactive teaching tool and programming environment that allows students to build basic algorithms for handling linked lists, to work directly with an algorithmic language and visually check the operation and performance of these. Also present some examples and the experience gained in its use in a basic data structures course.

Keywords: Teaching tool, software engineering, teaching data structures, linked lists.

En este artículo se presenta una herramienta interactiva que proporciona al alumno un entorno de programación en el cual puede diseñar algoritmos básicos para el manejo de listas ligadas en pseudocódigo, y comprobar su funcionamiento y desempeño de manera visual. También se presentan algunos ejemplos, así como la experiencia obtenida en su utilización en un curso básico de estructuras de datos. La complejidad de la programación hace necesario la utilización de técnicas efectivas de programación. Es importante para ello poner especial atención en el diseño previo. Una estrategia probada es comenzar a enseñar programación utilizando los algoritmos como recursos esquemáticos para plasmar el modelo de la resolución de un problema [6]. Diseñar un algoritmo semánticamente correcto no se considera una tarea trivial, es necesario llevar a cabo refinamientos sucesivos hasta ponerlo a punto.

Octubre - Diciembre de 2010

l aprendizaje de las materias de estructuras de datos y algoritmos es de los más difíciles y complejos, para los para alumnos que se encuentran estudiando una carrera en las áreas de informática y computación. Aprender a programar es un proceso difícil. La experiencia ha demostrado que los alumnos tienen dificultad para utilizar lenguajes de programación para construir programas que resuelvan problemas. En este artículo se presenta el desarrollo de una herramienta didáctica interactiva como entorno de programación que permite al alumno desarrollar algoritmos básicos para el manejo de listas ligadas, trabajando directamente sobre la computadora con un lenguaje algorítmico, y verificando visualmente el funcionamiento y desempeño de los mismos. También se presentan algunos ejemplos, así como la experiencia obtenida en su utilización en un curso básico de estructuras de datos.

Artículo aceptado el 20 de Agosto del 2010


E

ste proceso operativamente es complicado cuando se trabaja de la manera tradicional utilizando lápiz y papel, y se intenta comprobar la correctitud del algoritmo. Es difícil, mental o gráficamente, llevar a cabo las acciones del algoritmo en ejecución de manera totalmente objetiva sin dejarse llevar por la subjetividad de su especificación. Para ello es importante contar con un editor de algoritmos que ayude al alumno en la especificación del mismo, y que además permita comprobar su correctitud.

Octubre - Diciembre de 2010

Herramienta interactiva para cursos basicos de estructura de datos

Investigación

La programación es una actividad que requiere el uso de ambos lados del cerebro. El pensamiento lógico-verbal se requiere para el correcto diseño e implementación del software [9]. Esto ha generado el desarrollo de herramientas visuales para estructuras de datos y algoritmos, las cuales permiten que un estudiante procese los conceptos en forma paralela, visualmente y lógicamente, ayudando a la asimilación de los conceptos [9]. Existen muchas herramientas para la visualización de algoritmos. Estas herramientas se han estado desarrollando desde principios de 1980. Sin embargo estas herramientas generalmente solo son animaciones del funcionamiento de algoritmos y no permiten la interacción del usuario [9]. También existen otras herramientas dedicadas exclusivamente al estudio de las estructuras de datos, sin embargo, la mayoría también solo incluyen animaciones.

24

En la figura 1 se muestra el diagrama de casos de uso de la herramienta. Los actores que interactúan con la herramienta son: 1. Profesor, es la persona encargada de incorporar al goritmos. 2. Alumno, es el usuario principal de la herramienta. Los casos de usos de la herramienta son: 1. Cargar algoritmos. Permite incorporar nuevos al goritmos predeterminados. 2. Seleccionar tipo de lista. Permite seleccionar el tipo de lista de acuerdo al número de ligas para cada nodo (sencilla, doble, ortogonal) y la forma de con exión entre ellos (lineal o circular). 3. Utilizar algoritmos cargados. Permite verificar el fun cionamiento de algoritmos previamente cargados. 4. Diseñar nuevos algoritmos. Permite construir nue- vos algoritmos de operaciones que se pueden llevar a cabo con listas. 5. Visualizar abstracción del algoritmo. Permite mostrar una abstracción del contenido de la memoria y el funcionamiento de una operación en particular.

2. Desarrollo de la herramienta

Cargar Algoritmos Profesor

Para el desarrollo de la herramienta didáctica se utilizó el ciclo de vida prototipo evolutivo y se inicio diseñando un prototipo que se fue refinando y ampliando hasta que el prototipo se terminó. Las etapas que se llevaron a cabo para el desarrollo de la herramienta fueron: A.

Seleccionar tipo de lista

Utilizar algoritmos cargados Alumno Diseñar nuevos algoritmos

Identificación de requerimientos.

Entre los requerimientos identificados para la herramienta se encuentran: 1. Escribir algoritmos para el manejo de listas ligadas en pseudocódigo. 2. Verificar la sintaxis del pseudocódigo. 3. Visualizar gráficamente la representación de los no dos después de ejecutar un algoritmo. 4. Incorporar algoritmos predefinidos. 5. Verificar el funcionamiento de algoritmos predefini dos.

Visualizar abstracción del algoritmo

Fig. 1. Diagrama de casos de usos de la herramienta didáctica.


25 Herramienta interactiva para cursos basicos de

Investigación

estructura de datos

B. tipo.

Diseño, desarrollo e implementación del proto-

En la figura 2 se muestra el diagrama general de la herramienta en donde se puede apreciar los módulos que la conforman:

L

a herramienta se implementó utilizando el lenguaje de programación C#, y diseñada de manera modular, de forma que la introducción de nuevas estructuras de datos sea lo más sencilla posible para el programador.

C.

Prueba del prototipo y refinamiento iterativo.

Durante el tiempo del desarrollo de la herramienta fue posible que expertos educativos y educadores probaran el prototipo de manera directa, haciendo observaciones y recomendaciones, las cuales se fueron incorporando y haciendo el refinamiento iterativo para alcanzar el prototipo final deseable.

Fig. 2. Diagrama general de la herramienta didáctica.

a herramienta didáctica proporciona al estudiante un entorno de programación en el cual puede diseñar algoritmos básicos para el manejo de listas ligadas en pseudocódigo, y comprobar su funcionamiento y desempeño de manera visual. Esta herramienta está orientada hacia estudiantes de cursos básicos de estructuras de datos.

La figura 3 muestra el área de trabajo de la herramienta didáctica, la cual se encuentra dividida en tres secciones: panel para pseudocódigo, panel de visualización y panel de opciones. A. Panel para pseudocódigo En esta sección el usuario puede introducir directamente las instrucciones en pseudocódigo para ejecutarlas posteriormente. La herramienta contiene un analizador sintáctico que verifica cada una de las instrucciones antes de ejecutarlas. B. Panel de visualización. En esta sección se muestra el resultado de manera gráfica después de la ejecución del pseudocódigo. C. Panel de opciones. En esta sección se encuentran las opciones que el usuario puede seleccionar: el modo de uso, el tipo de lista, algoritmos predeterminados con las operaciones básicas de listas ligadas. 1. Libre. El modo libre permite que el estudiante pueda diseñar algoritmos nuevos para el manejo de listas ligadas, utilizando el editor de algoritmos. 2. Dirigido. Este modo permite que el estudiante seleccione algoritmos para el manejo de listas en pseudocódigo,

Fig. 3. Área de trabajo de la herramienta didáctica.

Octubre - Diciembre de 2010

1. Editor de algoritmos. Permite introducir instruccio- nes en pseudocódigo. 2. Analizador sintáctico. Permite verificar que las instrucciones introducidas sean válidas y se encuentren escritas correctamente conforme a la gramática predefinida. 3. Preparar datos para visualización. Genera el código fuente en el lenguaje de programación C#, a partir del pseudocódigo. 4. Visualizador gráfico. Ejecuta internamente el código fuente y visualiza los resultados de la ejecución utili zando la representación gráfica de una lista ligada. 5. Cargar algoritmo predefinido. Permite abrir archivos de texto con pseudocódigos previamente almacenados dentro de la herramienta. 6. Generar algoritmos predefinidos. Permite al profesor almacenar archivos de texto con pseudocódigos probados para su uso dentro de la herramienta.

L

3. Descripción de la herramienta


L

Herramienta interactiva para cursos basicos de estructura de datos

Investigación

as instrucciones en pseudocódigo permitidas en el editor de algoritmos de la herramienta se muestran en la figura 4. Es necesario hacer la declaración de variables que se utilizarán. Los tipos de datos permitidos son: Entero y Nodo. El tipo de dato Entero almacena valores numéricos enteros y el tipo de dato Nodo la estructura de un nodo de una lista ligada. Para el caso de una lista sencilla (dato, liga), para una lista doble (dato, siguiente, anterior) y para una lista ortogonal (dato, siguiente, anterior, arriba, abajo). La sintaxis para la declaración de variables es la siguiente:

Octubre - Diciembre de 2010

a. b.

En la figura 5 se muestra la sintaxis para las instrucciones condicionales e iterativas que se pueden utilizar en el editor de algoritmos de la herramienta.

Fig. 5. Sintaxis de las instrucciones condicionales e iterativas en pseudocódigo.

Fig. 6. Ejemplo de un algoritmo en pseudocódigo y su representación gráfica.

Nodo variable. Ejemplo: Nodo p; Entero variable. Ejemplo: Entero x;

Fig. 4. Instrucciones en pseudocódigo permitidas por el editor de algoritmos.

26

En la figura 6 se muestra el pseudocódigo y la representación gráfica de un algoritmo que permite manipular una lista ligada. En el panel de visualización se puede apreciar cada uno de los nodos que forman parte de la lista, así como su contenido y el ligado entre cada uno de los nodos. La conexión entre el pseudocódigo y su representación gráfica ocupa una parte muy importante en esta herramienta debido a la relevancia que tiene la correcta representación gráfica de los nodos y sus valores. En la figura 7 se puede observar una secuencia de ejecuciones de un pseudocódigo y los cambios en la representación gráfica con la inclusión de una nueva línea en el pseudocódigo.

Fig. 7. Ejemplo de secuencia de ejecuciones de pseudocódigo y su representación gráfica.

L

4. Experiencia en el aula con la herramienta

a herramienta se utilizó en un curso básico de Estructuras de Datos, para obtener información inicial sobre la aceptación de la herramienta y el entendimiento de la misma por parte de los estudiantes. La herramienta fue utilizada por 50 estudiantes durante 4 semanas, como apoyo al tema de Listas Ligadas.

Como primera actividad se presentó la herramienta a los estudiantes, así como la sintaxis que se utiliza para el desarrollo de algoritmos en pseudocódigo. Se asignaron tres prácticas inicialmente: 1. 2. 3.

Crear una lista doble lineal con n nodos, Insertar un nodo al final de una lista doble lineal, y Borrar el primer nodo de una lista doble lineal.


27

Herramienta interactiva para cursos basicos de estructura de datos

El pseudocódigo para crear una lista doble lineal incluye un ciclo que se repite n veces para ir creando cada uno de los nodos que forman parte de la lista. Dentro del ciclo se utilizó la instrucción nuevo(p) la cual permite reservar el espacio de memoria que ocupará el nodo de la lista, la instrucción leer(p(dato), así como las instrucciones necesarias para ir ligando cada nodo con los nodos creados previamente. Al momento de ejecutar el pseudocódigo el estudiante observó de manera gráfica como se fue construyendo la lista doble lineal. El pseudocódigo para insertar un nodo al final de una lista doble lineal incluye un ciclo que permite recorrer toda la lista para colocar una variable en el último nodo de la lista existente, crear el nuevo nodo, así como las instrucciones necesarias para ligar el nuevo nodo con los nodos existentes en la lista doble lineal. Al ejecutar el pseudocódigo el estudiante puede comprobar su funcionamiento y desempeño de manera visual.

Con la realización de estas prácticas se pudieron obtener resultados positivos. Los estudiantes pudieron comprobar el funcionamiento y el desempeño de los algoritmos de manera visual. La aceptación de la herramienta fue inmediata, hubo un gran interés por utilizarla para el desarrollo de otras prácticas. Se pudo notar que los estudiantes mejoraban la habilidad para el desarrollo de algoritmos de listas ligadas el presentar la ejecución del mismo de manera visual. Los estudiantes comentaron las ventajas que representaban el desarrollar los algoritmos utilizando la herramienta. También indicaron que con esta nueva herramienta podrían desarrollar de manera más rápida las prácticas que se tenían asignadas para el tema, e incluso desarrollar nuevas prácticas. Finalmente, la herramienta fue utilizada por los estudiantes para desarrollar todas las prácticas que se tenían planeadas para los distintos tipos de listas ligadas.

F

5. Conclusiones

rente a la necesidad de incorporar nuevas estrategias de enseñanza y aprendizaje, para el desarrollo de programas cada vez más complejos, como lo es el empleo de algoritmos, es importante el uso de herramientas computacionales que ayuden a tal fin. La herramienta presentada constituye un recurso valioso para la enseñanza de la programación utilizando estructuras de datos, ya que permite al alumno desarrollar los algoritmos del tema de listas ligadas trabajando directamente sobre la computadora, y comprobando de manera gráfica el resultado de la ejecución del algoritmo. Los usuarios principales de la herramienta serán los estudiantes de nivel licenciatura en las áreas de informática y computación, que cursen asignaturas del área de programación y estructuras de datos. La herramienta esta diseñada para el trabajo de modo individual y como elemento para reforzar el aprendizaje del diseño de algoritmos, particularmente los relacionados con listas ligadas, permitiendo que el usuario interactué directamente con la herramienta. Referencias [1] K.C. Laudon y J.P. Laudon, Sistemas de información gerencial y tecnología de la empresa conectada en red. Ed. Prentice Hall, Sexta Ed., México, 2002. [2] J.A. Senn, Análisis y diseño de sistemas de información. Ed. M.C. Graw Hill, Segunda Ed., México, 2003. [3] R.S. Pressman, Ingeniería del Software. Un Enfoque Práctico. Ed. M.C. Graw Hill, Quinta Ed., México, 2002. [4] C. Larman, UML y Patrones. Introducción al análisis y diseño orientado a objetos. Ed. Prentice Hall, Primera Ed., México, 1999. [5] T. Weiss-Lehman, “Data Structure as a Learning Tool”, IEEE Trans. Antennas Propagat., to be published [6] L. Levy, “From Specific Problem Instances to Algorithms in the Introductory Course” SIGCSE BULLETIN ACM, 1994. [7] N. Moroni y P. Señas, “Estrategias para la enseñanza de la programación”, Primeras Jornadas de Educación en Informática y TICS en Argentina, 2005. [8] V. Karavirta, A. Korhonen, L. Malmi and K. Stalnacke, “MatrixPro – A Tool for Demonstrating Data Structures and Algorithms Extempore”, Proceedings of the IEEE International Conference on Advanced Learning Technologies, 2004. [9] N. Thomas et al., “Exploring the Role of Visualization and Engagement in Computer Science Education”, Improving the Educational Impact of Algorithm Visualization ACM Press, 2002. [10]N. Moroni y P. Señas, “Un entorno para el aprendizaje de la programación”, Primeras Jornadas de Educación en Informática y TICS en Argentina, 2005. [11]I. Jacobson, “Applying UML in The Unified Process” disponible en http://www.rational.com/uml/UMLconf.zip

Octubre - Diciembre de 2010

El pseudocódigo para borrar el primer nodo de una lista doble lineal incluye una decisión para determinar si la lista contiene elementos, así como las instrucciones necesarias para borrar el primer nodo de la lista y colocar la variable head en el siguiente nodo de la lista. Al ejecutar el pseudocódigo el estudiante puede comprobar su funcionamiento y desempeño de manera visual. Al momento de ejecutar los pseudocódigos cada estudiante pudo comprobar si el algoritmo diseñado por él, cumplía con las indicaciones de la práctica, o si presentaba errores de sintaxis.

Investigación


Investigación

SOT Linux: Un traje a la medida para apoyo educativo en UTS

28

SOUT Linux: Un traje a la medida para apoyo educativo en UTs Víctor Hugo Virgilio Méndez1, Martha María Castro Luna1, Alejandro Salvador Vargas2 1 División de Tecnologías de la Información y Comunicación, Universidad Tecnológica del Usumacinta, Libramiento Glorieta Emiliano Zapata – Tenosique s/n Col. Las Lomas 2Programa Educativo de Tecnologías de la Información y Comunicación Universidad Tecnológica de Izúcar de Matamoros, Prolongación Reforma 168, Barrio de Santiago Mihuacan, Izucar de Matamoros,Puebla 1{vvirgilio, mcastro}@utusumacinta.edu.mx 2salvar73@hotmail.com

Octubre - Diciembre de 2010

Artículo recibido el 11 de Junio del 2010

RESUMEN

L

Artículo aceptado el 20 de Agosto del 2010

ABSTRACT

T

a tecnología como otras áreas se encuentra en constante evolución, buscando la “mejor” herramienta a nuestras necesidades, pero ¿nuestras necesidades son siempre iguales? ¿estamos evolucionando?, por ejemplo no estamos satisfechos si no contamos con una computadora con red inalámbrica, que reproduzca archivos mp3, etc, pero ¿y el software?, utilizamos productos que nos son de gran utilidad, pero ni son los mejores ni están al alcance de todos en relación a costo y beneficio, sin darnos la oportunidad de mejores opciones de software con menor hardware y costo de licencia. Este trabajo está enfocado en el uso de un S.O. JeOs (Sólo lo Necesario de un S.O.), el cual fue realizado en SUSE Studio, que permite crear versiones a medida de SUSE Linux, personalizado con aplicaciones libres orientadas a materias de la carrera de TICs en la Universidad Tecnológica del Usumacinta mitigando la gran cantidad de virus y software pirata.

echnology and other areas is constantly evolving, seeking the “best” tool to our needs, but our needs are always the same? Are we evolving?, For example we are not satisfied unless we have a computer with wireless network, which plays MP3 files, etc. But what about software?, We use products that are useful, but are neither the best nor are available to all in relation to cost and benefit, without giving us the opportunity to better options with less hardware and software license costs. This work focuses on the use of a S.O. JeOS (just enough of an OS), which was conducted in SUSE Studio, which lets you create custom versions of SUSE Linux, free custom applications designed to run matters of TICs in Universidad Tecnológica del Usumacinta mitigating many viruses and software piracy.

Palabras Clave: Linux, educación, software libre, JeOs, Suse Studio, piratería, virus

Keywords: Linux, education, free software, JeOS, Suse Studio, hacking, virus

1. Introducción

A

ctualmente son más las alternativas que se ofrecen como el mejor sistema operativo, del cuál depende todo el resto del software que utilicemos y el hardware de nuestra computadora. Sin embargo debemos estar conscientes de todo lo que la simple elección del sistema operativo implica, así como los diversos programas de aplicación inmersos dentro del sistema operativo.

En este punto las instituciones de educación superior posiblemente sean el factor clave, éstas tienen ante sí varios retos importantes: deben dejar a un lado su dependencia en materia de Software Comercial, deben generar software de calidad bajo otros esquemas de licenciamiento para beneficiar a la sociedad, deben inculcar en sus egresados que es mejor adecuar el software a nuestras necesidades que adaptarnos al software existente, deben incluir en sus planes de estudio el uso de las herramientas de desarrollo existentes en Software Libre, deben darle un valor agregado más a sus egresados con este paradigma, en pocas palabras, deben usar, generar y promover Software Libre para beneficio de


29

Investigación

SOT Linux: Un traje a la medida para apoyo educativo en UTS

sus estudiantes, sus trabajadores, sus investigadores, las empresas y la sociedad a la que se deben pero sobre todo, están obligadas a no dilapidar sus recursos en beneficio de compañías extranjeras adquiriendo software comercial y a no fomentar ni practicar la mal llamada piratería de software. (Medina, 2007) 2. Linux

L

inux es, en un sentido muy amplio un sistema operativo, específicamente es un kernel, esto se refiere a su núcleo. Este kernel se encarga de gestionar los recursos de la memoria, habilitar el acceso a los sistemas de archivos, administrar recursos de red, y muchas cosas más.

La idea del proyecto surge con el objetivo de lograr inculcar a los alumnos el uso de paquetes alternativos de software que los ayude a conocer conceptos en lugar de sólo aplicaciones, y por lo tanto prepara a los estudiantes para aprender y usar cualquier software en lugar de un paquete determinado de manera libre y sin problemas de infligir en piratería. 3.1 Problemática con piratería y virus Según el VII Estudio Mundial de Piratería de Software de la Business Software Alliance (BSA) y elaborado por IDC. México obtuvo un índice de piratería de 60 por ciento. Un año antes, en el 2008, fue de 59%, con pérdidas por 823 millones de dólares. En un comparativo de 100 países, nuestro país aparece entre las 17 naciones que más incrementaron sus indicadores de uso ilegal de software en 1% durante el 2010. En dicha lista, ocupa el lugar número 7, mientras que China, Estados Unidos y Brasil están en los tres primeros sitios. Los factores que llevan al incremento de las tasas de piratería incluyen el rápido crecimiento del mercado de consumidores de PC y una mayor actividad sobre la base de computadoras viejas donde el software sin licencia prevalece junto a sofisticados recursos de piratería. (Acosta, 2010) Además un informe de la compañía de antivirus Panda Security arrojó que sólo durante los primeros diez meses del 2010 fueron creados 20 millones de nuevas variedades de virus computacionales, lo que representa más de un tercio (34%) de los programas maliciosos actualmente en circulación. Según Panda, las nuevas cepas ya igualaron a las que aparecieron durante todo el año anterior, pero han ido cambiando su composición, ya que ahora preferentemente poseen una vida más corta pero con mucho mayor cantidad de variantes, lo que infecta a una menor cantidad de sistemas antes de desaparecer, pero se hace más difícil de interceptar.

Fig. 1. Booteo de un kernel de Linux bajo qemu (openwrt) + gnome-terminal

Octubre - Diciembre de 2010

Linux, técnicamente, es únicamente un componente de todo el sistema operativo (el núcleo), y viene acompañado por una gran cantidad de herramientas de otros proyectos. Entre ellas se encuentran las herramientas desarrolladas por el proyecto GNU (tan importantes que algunas personas se refieren al sistema como ``GNU/Linux’’), la implementación del sistema de ventanas X conocida como Xfree86, el servidor Web Apache, el lenguaje de programación Perl, el entorno gráfico KDE y muchísimas más, gráficamente no es como MS-DOS (interfaz de texto, de consola). Sino que ofrece diversas interfaces gráficas de Linux y de escritorio, tales como GNOME o KDE los cuales superan enormemente a Windows, tanto en desempeño, como en atractivo visual. Otra novedad es que nos ofrece una o dos opciones de programas sino que te de a escoger entre varias opciones como son: Mandrake, RedHat, LGIS Linux, Linux PPP, Knopix, Gentoo, Debian, Slackware, SuSe, Lycoris Dekstop, Lindows, Xandros, Linux From scratch, entre otros; todo estos con distintos distribuidores y características para diferentes usos. (Wikipedia, 2011) .

3. Antecedentes del Proyecto SOUT


Investigación

SOT Linux: Un traje a la medida para apoyo educativo en UTS

5. Metodología 5.1 Realización de la distro SOUT en SUSE Studio

3.2 Linux puede ayudar a desalentar la piratería de software

L

Octubre - Diciembre de 2010

a piratería de software por parte de los estudiantes es un problema real. Según una encuesta llevada a cabo en el 2000, 40% de los estudiantes encuestados en dos universidades públicas admitían haber copiado ilegalmente software de computadora . El autor de la encuesta concluía que parte del problema era que las escuelas requerían el uso de software determinado sin proveer a los estudiantes copias para que las usaran en sus máquinas hogareñas.

Las universidades podrían evitar este problema alentando el uso de programas libres de código abierto tales como OpenOffice o The GIMP en lugar de programas propietarios como Microsoft Office o Photoshop; entonces los estudiantes tendrían libertad para instalar cuantas copias les plazca, y estarían menos tentados de violar las leyes de copyright. (Kegel, 2002).

P

ara la realización de la distro personalizada a la Universidad Tecnológica del Usumacinta, se procedió a la selección de una plantilla, escritorio Gnome y algunas aplicaciones libres que cumplieran con algunas materias del plan de estudio de la carrera de tecnologías de la información y comunicación. Tabla 1. Listado de algunas materias de la curricula TIC y aplicación de utilidad instalada en la distro SOUT.

Materia Informática I Lógica de programación Programación de Computadoras Base de datos Multimedia Sistema de negocios electrónicos I Animación 3D Diseño Gráfico

4. Herramienta utilizada para crear proyecto traje a la medida

L

4.1 SUSE Studio

a herramienta SUSE Studio es un servicio de Novell, que permite crear versiones a medida del sistema operativo SUSE. Este ofrece una cómoda interfaz para que cualquiera pueda crear su propia versión de la distribución Linux de Novell con configuraciones específicamente adaptadas a sus necesidades, por medio de un software appliances o “Just Enough Operating Systems” (JeOS), versión reducida de un sistema operativo para satisfacer específicamente las necesidades de una aplicación en particular. (Wiki-

30

Aplicación Open Office Dia Gcc PostgreSQL Gimp, Sodipodi Apache, Bluefish MySQL,PHP Blender Sk1

Después de armado el pack se genero un formato de imagen, para entorno físicos, virtualizados a través de archivos ISO para crear el Live CDs.

Fig. 3. Logo de la distro SOUT (Sistema Operativo de Universidades Tecnológicas)

6. Implantación del proyecto SOUT

E Fig. 1. Booteo de un kernel de Linux bajo qemu (openwrt) + gnome-terminal

l proyecto SOUT se implantó dentro del cuatrimestre Septiembre – Diciembre 2010 en las materias de animación 3d, multimedia I, comercio electrónico, ofimática, metodología de la programación, etc en el cuál los alumnos constataron la forma practica y accesible de trabajar con las aplicaciones instaladas dentro de la distro dándoles la gran oportunidad de formación y fomento de la creatividad y permitiéndoles las cuatro libertades fundamentales:


31

Investigación

SOT Linux: Un traje a la medida para apoyo educativo en UTS

1. 2. 3. 4.

Libertad de uso. Libertad de aprendizaje. Libertad de modificación. Libertad de redistribución.

6.2 Resultados

E

l nivel de satisfacción de la experiencia con el Software Libre y el nivel de intencionalidad de seguirlo utilizando fue satisfactorio ya que el 80% de los alumnos la calificó como buena y con intención de seguir utilizándolo, el 20% la clasificó como medio por estar algunas aplicaciones en ingles.

Fig. 4. Sistema Operativo SOUT cargando

Con base en todo lo realizado y teniendo como base las afirmaciones anteriores, se puede concluir, que la utilización de software libre utilizado en las materias a prueba en la universidad tecnológica del usumacinta ha logrado dar resultados excelentes como si estuvieran utilizando software propietario, con la ventaja de lograr cumplir las cuatro libertades del software libre y sin infringir en piratería y virus.

L

7. Conclusiones

a conclusión general es que esa tecnología está lista para ser utilizada en las universidades, empresas, etc y que se está adoptando con niveles de satisfacción muy altos y con resultados exitosos.

Fig. 5. Alumnos trabajando con blender preinstalado dentro del Sistema Operativo SOUT

6.1 Calculo Muestral

P

ara la realización del calculo de la muestra se partió de que la Universidad Tecnológica del Usumacinta contaba con un universo de 83 alumnos para la carrera de Tecnologías de la Información y Comunicación durante el periodo Septiembre – Diciembre 2010, realizando los siguientes cálculos: Margen de error: 5% Nivel de Confianza: 99% Nivel de Heterogeneidad: 50% Obteniendo como resultado que el tamaño muestral recomendado es de 74 alumnos, mismos que por la cantidad de elementos dentro de nuestro universo de prueba se opto por realizar la prueba con los 83 alumnos inscritos durante du-

Como punto final las universidades deberían considerar: • Buscar buenas fuentes de información sobre Linux • Armar su distro a medida con las necesidades pro pias de cada institución • Comenzar a planear el soporte a Linux y a aplicacio nes • Capacitar a profesores y alumnos en esas aplicacio nes y en operación básica de Linux • Incorporar Linux en el curriculum Las universidades que lleven a cabo estas acciones prepararán mejor a sus alumnos para el mundo real, gastarán menos dinero en software y en problemas relacionados con seguridad informática.

Octubre - Diciembre de 2010


Investigación

SOT Linux: Un traje a la medida para apoyo educativo en UTS

32

Octubre - Diciembre de 2010

Referencias 1. Coello, L. S. (2010, Noviembre 26). Conocer ciencia. Retrieved Febrero 19, 2011, from http://pepascientificas. blogspot.com/2010/11/un-tercio-de-los-virus-informaticos-han.html 2. Wikipedia. (2011, Marzo 11). Suse Linux. Retrieved Marzo 18, 2011, from Wikipedia La enciclopedia libre: http:// es.wikipedia.org/wiki/SUSE_Linux 3. Wikipedia. (2010, Marzo 13). JeOS. Retrieved Febrero 12, 2011, from Wikipedia La enciclopedia libre: http:// es.wikipedia.org/wiki/JeOS 4. Wikipedia. (2011, Enero 12). Núcleo Linux. Retrieved Marzo 3, 2011, from Wikipedia La enciclopedia libre: http:// es.wikipedia.org/wiki/Núcleo_Linux 5. Acosta, N. (2010, Mayo 11). México pierde US1,056 millones por software pirata. Retrieved Febrero 12, 2011, from El economista: http://eleconomista.com.mx/industrias/2010/05/11/mexico-pierde-us1056-millones-pirateria-software 6. GNU, F. y. (2010, 09 12). GNU Operatyng System. Retrieved Marzo 12, 2011, from http://www.gnu.org/philosophy/ free-sw.es.html 7. Kegel, D. (2002). The Case for Linux in Universities. Retrieved Febrero 12, 2011, from http://www.kegel.com/linux/ edu/case.html 8. Medina, M. A. (2007, Mayo 31). El Software Libre en las Universidades Públicas: Oportunidades y Retos. Retrieved Febrero 22, 2011, from http://www.uv.mx/alorandi/documents/ElSoftwreLibreenlaUniversidadesPublicas.pdf Biografía de Autores

Víctor Hugo Virgilio Méndez, casado con residencia en el estado de Tabasco de profesión Licenciado en Informática , dedicado a la educación de nivel superior desde el 2004 ejerciendo como profesor de tiempo completo de la Universidad Tecnológica del Usumacinta y del Instituto Tecnológico de Monterrey Sede Villahermosa en diversos diplomados, miembro del sistema estatal de investigadores del estado de Tabasco desde el 2009 contando con 2 maestrías una en Administración y otra en Administración de Tecnologías de la Información, entre mis intereses se encuentran la programación de dispositivos móviles, desarrollo de videojuegos, software libre, animación 3d y informática educativa; he participado como ponente en diversos congresos nacionales e internacionales orientados a el área de T.I., Administración y Comercio.

Martha Maria Castro Luna, con residencia en el estado de Tabasco, profesional en Computación y maestría en Ingeniería de Sistemas con especialidad en Grandes Redes de Información y Transporte, experiencia docente, responsable. Capacidad de desarrollar material didáctico, planeación de clases, impartición de cursos. Habilidades en manejo de Lenguajes de programación C++, Visual Basic y PHP. Desarrollo de paginas Web con HTML, Desarrollo de Bases de Datos en Access y MySQL, ha participado como ponente en diversos congresos nacionales e internacionales

Alejandro Salvador Vargas, Maestro en Sistemas Computacionales por la UPAEP (Puebla, 2010), Maestro en Dirección Escolar por el Colegio Latinoamericano de Posgrados (Puebla, 2008), Licenciado en Informática por el Instituto Tecnológico Superior de la Sierra Norte de Puebla (Zacatlán, Puebla, 1999). Profesor de Tiempo Completo en la Universidad Tecnológica de Izúcar de Matamoros (2002-2011), Instructor de CISCO CCNA. Ha impartido clases en el Centro de Bachillerato Tecnológico industrial y de servicios # 184 de Izúcar de Matamoros, Puebla.


33

Sistema SLAM generador de mapas del interior de una casa habitacion para robots moviles

Investigación

Sistema SLAM generador de mapas del interior de una casa habitación para robots móviles Marcos Fajardo Rendón1, Leticia San Juan Cruz1, Carlos Alberto Osorio Ayala, Mariano Benítez Benítez1, Yban López Aguilar1, Alberto Pérez Ignacio1, Francisco Herrera Armendia2 1Departamento de Control, CIUSC, Universidad San Carlos 2Departamento de Matemáticas, Escuela Normal Superior de México marktrony2k@hotmail.com Artículo recibido el 11 de Junio del 2010

RESUMEN

D

ebido a que los robots móviles requieren desplazarse a una zona determinada, el presente trabajo brinda una solución mediante la programación de una herramienta mediante el reconocimiento de patrones con etiquetas distribuidas en una casa habitación que permite identificar cuartos mediante la generación de un arreglo que sirve como mapa, permitiendo a estos realizar exploraciones por un camino conocido e indicar la vialidad mediante un ángulo y dirección.

Palabras Clave: Robots, inteligencia artificial, patrones, generador.

A

ctualmente existen diversas disciplinas en la robótica que requieren navegar en ambientes, encontrar objetos y obtener puntos de referencia para la toma de decisiones como el caso de los robots guías, enfermeros y en concursos como robo-home, donde no solo basta contar con sensores para evitar obstáculos o una cámara Web para reconocer patrones, si no que se requiere de un sistema que genere mapas mientras este navega en un ambiente nuevo, permitiendo el posterior reconocimiento automático de un cuarto asignado por un icono. 2. Navegación por visión artificial

L

os mapas son utilizados para representar una zona mediante un plano de forma simple y para observar las condiciones del área representada. Dependiendo del tipo de mapa será la cantidad de detalles, representaciones, e información que contendrá.

ABSTRACT

M

obile robots requiere information to navigate throw an assigned exploration area, this work provide a solution using the pattern recognition of icons distributed in a house to identify rooms and build an array used as a text topological map, allowing to realise explorations in a previously known way.

Keywords: Robots, artificial intelligence, pattern generator.

Las coordenadas son aquellos puntos dentro de un mapa que permiten situar un objeto en un lugar específico del área representada, la descripción la extensión entre un punto y otro. Una imagen es una celda compuesta por pixeles, que son los componentes más pequeños de una imagen digital, pudiéndose definir un único color simultanéate. Para representar una imagen RGB se forma una matriz de dimensiones m x n, con elementos de tipo vector, en donde cada vector se encuentra constituido por 3 componentes los cuales son los canales RGB comprendidos de 0 a 255 en un intervalo cerrado, los sistemas tienen como objetivo capturar imágenes que sirvan en el proceso de un sistema de visión artificial ó simplemente para obtener información visual de los elementos existentes en un ambiente dado. Los generadores de mapas tienen por objetivo resolver problemas complejos de navegación mediante la generación de modelos geográficos con ayuda de software y hardware especializado, permitiendo la captura, almacenamiento y manejo de los datos obtenidos.

Octubre - Diciembre de 2010

1. Introducción

Artículo aceptado el 20 de Agosto del 2010


Investigación Un sistema de orientación para la navegación es aquel que genera rutas mediante los elementos proporcionados inicialmente como son antenas, mapas y satélites que son utilizados como referencias para generar las rutas, permitiendo llegar a un objetivo. La navegación topológica es una técnica antropomimética para planificación de movimientos de un robot que permite llegar a un objetivo sin la necesidad de un mapa gráfico, al utilizar instrucciones que describen las características o condiciones del ambiente como son las puertas, pasillos y cruces. Los puntos distintivos o landmarks son características de interés perceptual respecto a un objeto ó lugar de interés para el robotista doméstico, y estas pueden ser naturales o artificiales como los iconos o dibujos.

Octubre - Diciembre de 2010

Para el sistema generador de mapas esta agrupación serán las características identificadas de las 7 etiquetas distribuidas que representan un cuarto único de la casa. Una de las técnicas de navegación más usadas en la robótica es la del SLAM (Simultaneous Localization and Mapping) la cual permite que el robot sepa donde esta y realizar paralelamente un modelado del mundo mediante un mapa, calcular distancias, trayectorias y desplazarse dentro de un entorno.

Sistema SLAM generador de mapas del interior de una casa habitacion para robots moviles

34

Web-Cam

Imagen

Generar ruta

Localizar patrones Archivos .txt

Proceso de exploración

Movimiento Etiqueta

Fig. 1. Diagrama de boques general del sistema.

3.1 Concatenación

S

imulink proporciona un módulo para detectar el dispositivo de entrada de video permitiendo asignar el tipo de salida que puede ser un solo canal o en tres colores.

El subsistema de adquisición de datos se encuentra encargado de detectar los colores RGB y realizar la concatenación del conjunto de espectros que sirve para detectar etiquetas como se describe en la figura 2.

3. El sistema generador

E

l sistema comienza primeramente con la adquisición de imágenes capturadas por una cámara, está imagen es enviada al módulo encargado de generar una ruta mediante la detección de líneas aplicando la transformada de Hough, obteniendo los parámetros que permiten la navegación al robot. Fig. 2. Diagrama de bloques Simulink correspondiente al

El bloque despliega los parámetros de espacio de subsistema de adquisición de datos. una matriz que cuenta con filas y columnas. Paralelamente la misma imagen es procesada por el módulo reconocimiento 3.2 Rastreo de patrones, donde utilizando etiquetas previamente aprendidas buscará imágenes de los cuartos almacenados que coincidan con las adquiridas, estos dos bloques darán como l corazón del rastreo se encuentra formado por la resultado la dirección y nombre de las etiquetas localizadas transformada de Hough, la cual es encargada de reque devolverán el movimiento y ubicación de la etiqueta, alizar una representación en forma de parámetros remisma que al formar un arreglo de pila, permite generar el specto a las figuras geométricas que adquiere el sistema de mapa, como se muestra en la figura 1. visión, la cual consiste en una localización estadística donde se realiza un muestreo de puntos para averiguar su pertenencia o no a una línea e indicará al sistema que es una puerta o entrada a otro cuarto.

E


35

Sistema SLAM generador de mapas del interior de una casa habitacion para robots moviles

Investigación

Al usar el bloque Hough Transform para encontrar líneas en una imagen, el bloque mapea puntos en la imagen cartesiana a curvas de parámetros del bloque Hough donde Theta son las columnas y Rho las filas mediante la fórmula: rho= (x (Cosθ)) + (y (Sin θ)). Esto genera una imagen binaria MxN, donde Pd, θd son los vectores que contienen los valores discretos del espacio paramétrico dado por P, θ donde P pertenece a (0, (M2 +N2) 1/2 y θ perteneciente a (0,180). El principio del algoritmo consiste en segmentar la imagen y detectar las líneas que forman una entrada como puede ser el caso de un cuarto. La localización de estas se logra mediante la comparación de una secuencia de cuadros de distinta intensidad, la localización de los pixeles que cuenten con mayor intensidad para generar dos segmentos de recta que al intersectarse forman un ángulo. El bloque devuelve los parámetros denominados “línea detectada”, “línea trazada”, “línea válida”, “línea no válida” y un “ángulo de rotación”, como se describe en la figura 3.

3.4 Detección de etiquetas

L

as etiquetas son imágenes de tipo icono que representan semánticamente una ubicación en la casa mediante topología y son asociadas a una cadena. El usuario del sistema generador puede construir sus propias etiquetas ligadas a una cadena, para ser leída desde el archivo de texto, mientras la etiqueta contenga las características para ser considerada como un patrón, y se haya almacenado al menos tres instancias de ella con distinto ángulo. Estas imágenes pueden ser personalizadas con cualquier icono inventado por el usuario del sistema para aplicarse en la navegación del robot, y deben ser de 90 x 90 pixeles, fondo rojo y un icono en color blanco y negro. En el ejercicio se definieron 7 imágenes denominadas “entrada”, “comedor”, “cocina”, “closet”, “baño”, “dormitorio” y “estudio”. La entrada de video formada por tres canales hace uso del canal Cr, encargado de transportar la información correspondiente a la intensidad del color rojo.

El siguiente módulo a activarse es el de “trazado”, encargado de medir las dimensiones que conforman a la etiqueta. El módulo “reconocimiento” se encarga de hacer un reconociendo mediante la comparación de un patrón de significado “cuarto”, formado por la base de datos de instancias de imágenes denominadas “etiquetas” en distinto ángulo. 3.3 Movimiento Estas imágenes pueden ser personalizadas con cualquier icono inventado por el usuario del sistema para aplicarse en la navegación del robot el cual puede ser leído por el robot en ediante el uso de dos líneas de intersección el módutiempo real. lo de movimiento utiliza las variables generadas por el rastreo para dibujar el sentido de las flechas del Si la etiqueta que la cámara percibe es identificacamino a tomar al detectar un cuarto. da, procesada y reconocida mediante la comparación con conocimiento de iconos de cuartos mediante una librería de La variable “ángulo de rotación” heredada del subetiquetas previamente almacenada, esta será relacionada sistema rastreo permite dibujar la flecha de vialidad y la casemánticamente con una cadena correspondiente al nombre dena que contiene el sentido-ángulo. del cuarto y enviada al archivo de texto. Fig. 3. Diagrama de bloques Simulink correspondiente al subsistema de rastreo.

M

Octubre - Diciembre de 2010

El subsistema “detección de etiquetas” utiliza módulos, el primero de ellos denominado “detección” es encargado de reconocer el color rojo y provocar una interrupción para llamar al módulo “análisis de iconos”.


Sistema SLAM generador de mapas del interior de una casa habitacion para robots moviles

Investigación

L

3.6 Almacenamiento de iconos en etiquetas.

Octubre - Diciembre de 2010

as etiquetas son los patrones que identifican una posición en el mapa. Para crear una librería de etiquetas prealmacenadas para realizar una identificación de cuartos para navegación se deben crear landmarks artificiales que serán las etiquetas con imágenes que contengan las características descritas anteriormente, pudiendo ser empaquetas en un archivo .mat, el cual permite una portabilidad en un solo archivo de toda la base de conocimiento de imágenes. Se definió que se debían realizar 3 tomas de cada etiqueta en 0,45 y -45 grados para incrementar la probabilidad de acetración dependiendo del sistema de frenado y estabilidad que tenga la cámara montada en el robot móvil. El sistema muestra las ventanas de trabajo cuando es ejecutado como se describe en la figura 4.

En la parte superior se encuentran los iconos de la base de conocimiento del archivo .mat, debajo de esta se encuentra la ventana de detección que muestra la intersección de dos líneas, en la parte inferior izquierda se localiza la encargada de mostrar el resultado gráfico mediante una flecha con un ángulo o equis según corresponda, y en la inferior derecha se observa la ventana que describe mediante una pila el nombre de la etiqueta cuando esta es identificada. Si no se encuentra una línea, o cuando el sistema identifica 3 paredes, el sistema enviará un error mediante una equis indicando la ausencia de un marco o puerta de un cuarto, por otro lado al encontrar una de estas se dibujará una flecha con su respectivo “ángulo de rotación”, de esta forma se realza una combinación en el módulo que produce un video en tiempo real mediante una flecha con ángulo que indica el sentido que debe tomar el robot para dirigirse a un patrón reconocido como cuarto.

Fig. 4. GUI del sistema generador de mapas con los iconos, ventana de detección de intersección, resultado gráfico y la pila de etiquetasángulos identificados en tiempo real.

36

El archivo generado por el sistema permite lograr una navegación debido a que este permite indicar gráficamente mediante una flecha y ángulo la vialidad, así como la escritura en un archivo de texto de estas variables correspondientes al ángulo de rotación, y el nombre de la etiqueta asociada a un cuarto identificado. Esto permite indicarle al robot hacia donde tiene vialidad, la posición en el área en la que se encuentra actualmente, donde ha estado, y si ha pasado por algún landmark, se puede usar el conocimiento generado para realizar comandos de desplazamiento que indiquen las condiciones de orden de nodos a visitar para posicionarse en un lugar mediante distintas técnicas. Cuando un robot se encuentre frente a una pared, las flechas y el archivo permitirán indicar las salidas viables en tiempo real, si se encuentra en medio de esta la probabilidad de vialidad será igual en izquierda o derecha, por lo que el robotista puede por ejemplo programar al robot para que seleccione una tendencia en problemas de maze solving y búsquedas, o utilizar el ángulo que más haya aparecido durante un tiempo de muestreo. Para la generación de un archivo de texto el sistema se encarga de generar archivo m ó script función, cuando el sistema se ejecuta se crea un script en formato txt. Cuando una cadena es detectada, el sistema manda a escribir al archivo de texto para formar una pila. 4. Ejercicios con el robot móvil

P

ara comprobar el correcto funcionamiento del sistema se realizó un experimento de navegación manual mediante la construcción de un pequeño robot móvil doméstico capaz de desplazarse en una maqueta de casa habitación, formado por un sistema de control USB -HID mediante un microcontrolador PIC 18F2550, una cámara Web y una etapa de potencia, mismo que se colocó en una maqueta prototipo de una casa habitación, a la que se le incorporaron etiquetas en las puertas para poder localizar la zona de la casa en la que se encuentra el robot.

El robot fué controlado por todas las habitaciones mientras el sistema generador de mapas del interior de una casa habitación reconoció cada cuarto y generó un archivo de texto como mapa.


37

Sistema SLAM generador de mapas del interior de una casa habitacion para robots moviles

Investigación

4. Ejercicios con el robot móvil

P

osteriormente se programó el sistema de control para el robot en Visual Basic para que realizara la búsqueda de una etiqueta y se detuviera al encontrarla, teniendo que realizar un mecanismo anti-rebote para la cámara al obtener varios datos erróneos producto del frenado.

Se programó un experimento de navegación por grafos depth first search mediante 8 nodos, donde a una velocidad lenta que no causa ruido de información junto con el mecanismo de anti-rebote, se logró llegar de una raíz dinámica en el grafo a un objetivo, sin embargo se considera que el sistema tiene que comunicarse con otros sensores para lograr el denominado modelo del mundo, el uso de técnicas de RNA´s que permitan darle un peso al sistema de generador de mapas, al igual que el cerebro se lo da al ojo pero no excluye al tacto permitirá una biomimética rica si las salida a los motores es mediante un PWM o técnicas analógicas. La GUI en Visual Basic que lee la cadena de texto se muestra en la figura 5.

Fig. 5. Sistema del robot móvil, donde se muestra la cámara y el arreglo de pila, paralelamente se observa el archivo posición.txt que almacena todas las etiquetas reconocidas obteniendo el mapa del interior de una casa habitación, el archivo movimiento.txt que contiene los ángulos para obtener el movimiento en un robot, la ventana de Matlab de reconocimiento de etiquetas reconocidas como validas y la ventana ruta de Matlab donde aparece una imagen con forma de flecha color rojo, que muestra la ruta para la navegación, basada en el ángulo obtenido de la intersección de 2 líneas ubicadas con la transformada de Hough.

e considera al sistema con la capacidad de navegación, debido a que este permite indicar la ubicación topográfica del robot, obtener e conocimiento del orden de aparición de etiquetas en una estructura de pila para inferir como llegar a un lugar, y el ángulo correspondiente a la vialidad posible para desplazar al robot hacia una entrada. El tiempo promedio de reconocimiento de iconos de habitaciones fué de 3.5 segundos en una iluminación constante con papel mate. El sistema tiene un margen de error cuando se utilizan colores fuera del rango del 8%, y se debe realizar el reconocimiento cuando el robot se encuentra completamente en estado de reposo, por lo que se sugiere un sistema de amortiguamiento para la cámara o un control difuso adaptativo en sus implementaciones. Al utilizar un algoritmo de adquisición de parámetros de navegación conformado por los subprocesos de segmentación de datos, detección de líneas mediante transformada de Hough y trazado, este permitió programar el subsistema encargado de la delimitación de área de adquisición de datos. Aplicando un algoritmo basado en la detección de matrices de 9 x 9 pixeles potenciales, las cuales puedan ser comparadas con matrices de patrones de iconos conocidas previamente, estas pueden ser reconocidas por el subsistema de reconocimiento y etiquetado de los mismos. El algoritmo basado en adquisición de cadenas de los nombres de etiquetas reconocidas las cuales se escriben en un archivo txt, permitió la programación de un subsistema generador de mapas de zonas previamente recorridas para cualquier lenguaje de programación externo a Matlab que permite leer este arreglo. Se logró adaptar el sistema generador de mapas del interior de una casa habitación en el control manual por Visual Basic .NET a un robot móvil controlado por una interfaz USB-HID mediante un microcontrolador PIC 18F4550 en una maqueta de casa habitación, logrando un control de área a explorar, ubicación, dinámica de búsqueda y una GUI para el usuario del control, en donde se identificaron todas las etiquetas, ángulos y sentidos desde las cadena del archivo de texto leídas por el lenguaje en tiempo real. Se pueden aplicar con esta estructura de datos, técnicas de búsqueda con I.A. con costos al incorporar un contador de pasos o sensores ultrasónicos que realicen mediciones y se incorporen mediante pesos en una red neuronal al algoritmo.

Octubre - Diciembre de 2010

S

5 Conclusiones y trabajos futuros de investigación


Investigación

Sistema SLAM generador de mapas del interior de una casa habitacion para robots moviles

38

Referencias [1]

Roberts, Morgan J. “Señales y sistemas. Análisis mediante métodos de transformada y Matlab.” Mc Graw Hill. 2005.

[2]

Shoichiro Nakamura. “Análisis numérico y visualización gráfica con Matlab.” Pearson. 2002.

[3]

Daniele Nardo, “RoboCup@Home Rules & Regulations Book”, RoboCup@Home , 2010.

[4]

Ashish Tewari “Modern control design with Matlab and Simulink”, Wiley, 2009.

Currículo corto de los autores

Octubre - Diciembre de 2010

Leticia San Juan Cruz, Ingeniero en sistemas computacionales, Universidad San Carlos, México, 2010. Carlos Alberto Osorio Ayala, estudiante de 7º semestre de Ingeniería en sistemas computacionales, Universidad San Carlos, México Mariano Benitez Benitez, Ingeniero en sistemas computacionales, TESE, México, 2006. Francisco Herrera Armendia, Ingeniero em Química, UNAM, México, 1990, Doctorado en Neurociencias, Cinvestav, México, 2004. Marcos Fajardo Rendón B.S. Bionic Engineering, Atlantic University, EUA, 2002. Alberto Pérez Ignácio, Ingeniero en Mecatronica, UPVEM , México, 2011 Yban López Aguilar, técnico de laboratórios Merck, México, 2011


39

Hacia el desarrrollo de Aplicaciones Web con tecnologias JPA, EJB, JSF y PrimeFaces

Investigación

Hacia el desarrollo de Aplicaciones Web con tecnologías JPA, EJB, JSF y PrimeFaces Fernando Pech-May1, Mario A. Gomez-Rodriguez1, Salvador U. Lara-Jeronimo1, Luis A. de la Cruz-Diaz 1 1Instituto Tecnológico Superior de los Ríos. 86930 Km. 3 Carretera Balancán – Villahermosa, Balancán, Tabasco, México {fpech, mgomez}@tamps.cinvestav.mx, {aceletes, uciellara}@gmail.com Artículo recibido el 11 de Junio del 2010

RESUMEN

C

on el surgimiento de nuevas tecnologías, se pueden desarrollar aplicaciones empresariales más complejas. En este artículo se presentan diversas tecnologías de la plataforma Java EE para el desarrollo de aplicaciones Web robusta, potente, de alta disponibilidad y que simplifica enormemente su desarrollo. Además se analizan diversas APIs para el desarrollo de aplicaciones empresariales tales como JPA, EJB, JSF y JNDI que cumplan con las especificaciones de los estándares de la tecnología de la plataforma Java. Palabras Clave: JPA, EJB, JSF, Primefaces

Artículo aceptado el 20 de Agosto del 2010

ABSTRACT

W

ith the emergence of new technologies, we can develop complex business applications. This article presents several technologies of Java EE platform for developing Web application robust, powerful, high availability and simplifies development. It also explores a range of APIs for developing business applications such as JPA, EJB, JSF and JNDI that meet the specifications of the standard Java platform technology.

Keywords: JPA, EJB, JSF, Primefaces

Octubre - Diciembre de 2010

1. Introducción

L

as empresas de hoy en día viven en un mundo global competitivo que necesitan aplicaciones para satisfacer las necesidades de negocio, que son cada vez más complejas. Con el avance de las tecnologías web y la Internet, se han abierto nuevas oportunidades para los desarrolladores de aplicaciones empresariales; permitiéndoles el uso de las nuevas tecnologías web en el desarrollo de aplicaciones mucho más robustas, escalables y con un mayor rendimiento.

Algunas de las nuevas tecnologías que han surgido son: JavaServer Faces (JSF) para la creación de interfaces de usuario en la web, Ajax (Asynchronous JavaScript And XML); un modelo de desarrollo web para crear aplicaciones interactivas, JavaBeans empresariales (Enterprise JavaBeans, EJB) y el API de Java para el manejo de entidades persistentes (Java Persistence API, JPA) sobre bases de datos relacionales. La Figura 1.1 muestra el conjunto de tecnologías de Java EE que pueden utilizarse para el desarrollo de aplicaciones web. Todas estas tecnologías serán descritas en este documento.

Fig. 1.1. Tecnologías Java EE para el desarrollo de aplicaciones web.

2. Java Enterprise Edition

J

ava Enterprise Edition [5, 8] (Java EE), fue desarrollado por Sun Microsystems y lanzado en 1999 con el nombre de J2EE. Proporciona un conjunto de especificaciones técnicas para el desarrollo de aplicaciones empresariales.


Puede ser visto como una extensión de Java SE para facilitar el desarrollo de aplicaciones distribuidas, robustas, potentes y de alta disponibilidad.

Octubre - Diciembre de 2010

Java EE define cuatro tipos de componentes: 1. Applets: Aplicaciones GUI que se ejecutan en un navegador. 2. Aplicaciones: Son programas que se ejecutan en un cliente 3. Aplicaciones web: (servlets, páginas JSP y JSF) Se ejecutan en un contenedor web y responden a las peticiones HTTP del cliente. 4. Aplicaciones Empresariales: (EJB, JMS, JTA, etc.) Son ejecutadas en un contenedor EJB. Java EE se divide en dominios lógicos llamados contenedores (ver Figura 2.1). Cada contenedor tiene una función específica, soporta un conjunto de APIs y ofrece servicios a los componentes tales como seguridad, acceso a base de datos, gestión de transacciones, nombres de directorios, e inyección de recursos. Los contenedores ocultan la complejidad técnica y mejoran la portabilidad. El contenedor EJB es responsable de administrar la ejecución de los beans que contiene la lógica de negocio.

Fig. 2.1. Estándar de los contenedores Java EE.

40

Hacia el desarrrollo de Aplicaciones Web con tecnologias JPA, EJB, JSF y PrimeFaces

Investigación

2. Java Persistence API (JPA): API estándar para el mapeo de objeto-relacional (ORM). Con Java Persistence Query Language (JPQL), se puede consultar objetos almacenados en la base de datos subyacente. 3. Validación: El Bean de validación proporciona un nivel de declaración de restricción de la clase y la facilidad de validación. 4. Java Message Service (JMS): Permite que los componentes se comuniquen de forma asincrónica a través de mensajes. 5. Java Naming and Directory Interface (JNDI): Esta API, incluida en Java SE, se utiliza para acceder a los sistemas de nombres y directorios. La aplicación se utiliza para asociar (enlazar) los nombres de los objetos y luego encontrar estos objetos (búsqueda) en un directorio. Puede buscar fuentes de datos, JMS, EJB y otros recursos. 6. JavaMail: Muchas aplicaciones requieren la capacidad de enviar correos electrónicos que pueden ser implementadas a través del uso de la API JavaMail.

Fig. 2.2. Servicios proporcionados por los contenedores.

Los contenedores proporcionan servicios subyacentes a sus componentes desplegados (ver Figura 2.2), esto permite al desarrollador centrarse en la lógica de aplicación en lugar de resolver problemas técnicos. Algunos de los servicios que proporciona Java EE se describen a continuación: 1. Java Transaction API (JTA): Este servicio ofrece una demarcación de transacciones API utilizada por el contenedor y la aplicación. También proporciona una interfaz entre el administrador de transacciones y el administrador de recursos en el nivel Service Provider Interface (SPI).

3. Java Server Faces (JSF)

J

ava Server Faces [3, 4] (JSF) es un estándar de Java hacia la construcción de interfaces de usuario para aplicaciones web que simplifican el desarrollo de aplicaciones web del lado del cliente, JSF está basado en la tecnología Java EE. En el 2009 se dio a conocer la nueva versión JSF 2.0, que contiene algunas características y/o mejoras con respecto a las versiones anteriores (JSF 1.0, JSF 1.1 y JSF 1.2) como son: Mejoras en la navegación: navegación condicional, inspección en tiempo de ejecución en las reglas de


41 Hacia el desarrrollo de Aplicaciones Web con tecnologias JPA, EJB, JSF y PrimeFaces

de navegación. Control de excepciones: permite fácilmente la creación de una página de error que utiliza componentes JSF. Mejoras en la expresión del lenguaje: compatibilidad con métodos arbitrarios incluyendo el paso de parámetros. Validación: es una nueva especificación java desarrollada para la validación de beans.

• Un API administrador de entidad para realizar operaciones en la base de datos tales como crear, leer, actualizar, eliminar (CRUD). • El Java Persistence Query Language (JPQL) que permite recuperar datos con un lenguaje de consultas orientado a objetos. • Las transacciones y mecanismos de bloqueo cuando se accedan a los datos concurrentemente, la API Java Transaction (JTA). Una entidad es objeto de dominio de persistencia. Por lo general, una tabla en el modelo de datos relacional es representada por una entidad y sus instancias corresponden a los registros de dicha tabla. El estado de persistencia de una entidad es representado por propiedades persistentes, estas propiedades a su vez usan anotaciones para el mapeo de las entidades y relaciones entre entidades. Las relaciones entre entidades persistentes deben mapearse explícitamente como llaves foráneas o uniones de tablas, la manera en que se estructura una entidad, sus atributos y sus relaciones (ver Figura 4.2).

Octubre - Diciembre de 2010

Una página JSF utiliza la extensión *.xhtml, es decir, una combinación de XML con HTML y puede incluir componentes como CSS, JavaScript, entre otros. La especificación de JSF define seis fases distintas en su ciclo de vida: 1. Restauración de la vista: Crea un árbol de componentes en el servidor para representar la información de un cliente. 2. Aplicar valores de la petición: Actualiza los valores del servidor con datos del cliente. 3. Proceso de validación: Valida los datos del usuario y hace la conversión. 4. Actualización de valores del modelo: Actualiza el modelo del servidor con nuevos datos. 5. Invocar la aplicación: Ejecutar cualquier lógica de aplicación para cumplir con la solicitud. 6. Procesar la respuesta: Guarda un estado y da una respuesta al cliente.

Investigación

4. Java Persistence API (JPA)

J

PA [2, 7] 1.0 fue creado con Java EE 5 para resolver problemas de persistencia de datos. Proporciona un modelo de persistencia para mapear bases de datos relacionales (ver Figura 4.1). En java EE 6, JPA 2.0 sigue el mismo camino de simplicidad y robustez y agrega nuevas funcionalidades. Se puede utilizar para acceder y manipular datos relacionales de Enterprise Java Beans (EJBs), componentes web y aplicaciones Java SE.

Fig. 4.1. Relación entre los conceptos de JPA.

JPA es una abstracción que está por encima de JDBC lo que permite ser independiente de SQL. Todas las clases y anotaciones de esta API se encuentran en el paquete javax. persistence. Los principales componentes de JPA son: • Mapeo de base de datos relacionales (ORM). Es el mecanismo para mapear objetos a los datos almacenados en una base de datos relacional.

Fig. 4.2. Definición de atributos y relaciones de una Entidad.


Hacia el desarrrollo de Aplicaciones Web con tecnologias JPA, EJB, JSF y PrimeFaces

Investigación 5. EJB

Octubre - Diciembre de 2010

L

42

• SFSBs: Difieren de los SLSBs en que se garantiza que todas las peticiones invoquen la misma instancia del bean, tal como se muestra en la Figura 5.1 b. Las sesiones de estado y sus correspondientes instancias de bean son creadas en algún momento antes de la primera invocación a su instancia objetivo. Viven hasta que el cliente invoca un método que el proveedor del bean ha marcado como un evento para remover el bean, o hasta que el contenedor decide desalojar la sesión.

os JavaBeans empresariales (Enterprise JavaBeans [1, 6], EJB) están diseñados para desarrollo y despliegue de aplicaciones (distribuidas) de negocio basadas en componentes del lado del servidor. Con esta tecnología es posible desarrollar aplicaciones empresariales sin tener que crear de nuevo los servicios de transacción, seguridad, persistencia, concurrencia y lo que se pueda necesitar en el Singleton beans: Se utilizan cuando solamente se proceso de creación de una aplicación; permitiendo a los de- • sarrolladores enfocarse en la implementación de la lógica de necesita mantener una sola instancia de los objetos de negocio. Debido a que todas las peticiones hacia un singleton son negocio. dirigidas hacia la misma instancia, el contenedor no realiza EJB divide la capa de negocio en dos partes: Capa de lógica mucho trabajo en seleccionar la instancia objetivo, como se de negocio donde se encuentra EJB y capa de persistencia. ve en la Figura 5.1 c. EJB cuenta con dos componentes de proceso de negocio, los beans de sesión (Session Beans) y los beans dirigidos por mensajes (Message-Driven Beans, MDBs), ambos son desarrollados por una aplicación de negocio e implementados y ejecutados por el Contenedor de EJB. A continuación se explican los dos componentes: 5.1 Session Beans

S

on componentes Java que se pueden ejecutar tanto en contenedores EJB independientes como en contenedores EJB que son parte del estándar Java EE. Dichos componentes son típicamente utilizados para modelar una tarea particular del usuario o un caso de uso, tal como introducir la información del cliente o implementar un proceso que mantiene un estado de la conversación con una aplicación cliente. Existen varios tipos de beans de sesión, como los beans de sesión sin estado (Stateless Session Beans, SLSBs ), beans de sesión con estado (Stateful Session Beans , SFSBs) y un tipo particular de beans; los beans de sesión singleton (Singleton Beans) [1].

• SLSBs: Son útiles para los casos en que el estado no necesita ser mantenido de invocación a invocación. El cliente no puede asumir que las solicitudes posteriores utilizarán una instancia particular del bean. El contenedor puede destruir o crear nuevas instancias según determine que es más eficiente (Figura 5.1 a).

Fig. 5.1. Tipos de beans de sesión. a) Selección aleatoria de una instancia SLSB. b) Selección de una instancia SFSB de acuerdo a su ID de sesión. c) Singleton Bean que cuenta con una sola instancia de soporte.

5.2 Message-Driven Beans

L

a mensajería asíncrona es un paradigma en el cual dos o más aplicaciones se comunican a través de mensajes que describen un evento de negocio.

Un proveedor común de mensajería asíncrona es el servicio de mensajería de Java (Java Message Service, JMS), y la especificación de EJB2 dicta que JMS es soportado de manera implícita. Si un mensaje es enviado a una fila JMS, un MDB puede ser creado para manejar el evento.


43

Hacia el desarrrollo de Aplicaciones Web con tecnologias JPA, EJB, JSF y PrimeFaces

6. PrimeFaces

P

rimeFaces [11] es una librería de componentes visuales de código abierto para el conjunto Java Server Faces 2.0 desarrollada y mantenida por Prime Technology. Su objetivo principal es ofrecer un conjunto de componentes para facilitar la creación y diseño de aplicaciones web. Los componentes de PrimeFaces cuentan con soporte nativo de Ajax, pero no se encuentra implícito, de tal manera que se tiene que especificar que componentes se deben actualizar al realizar una petición proporcionando así mayor control sobre los eventos. Cuenta también con un modulo adicional TouchFaces para el desarrollo de aplicaciones web para dispositivos móviles con navegadores basados en WebKit. Las principales características de PrimeFaces son: Soporte nativo de Ajax, incluyendo Push/Coment, kit para crear aplicaciones web móviles, es compatible con otras librerías de componentes como Jboss RichFaces, uso de JavaScript no intrusivo, etc. 7. Conclusiones

Agradecimientos. Esta investigación fue parcialmente financiada mediante el proyecto No. TAB-2010-C19-144199 del Fondo Mixto CONACYT-Gobierno del Estado de Tabasco.

Referencias 1. A. Lee Rubinger E Bill Burke. Enterprise JavaBeans 3.1. Safari, 6 Ed.(2010) 2. D. Yang. Java Persistence with JPA. Outskirts Press. (2010) 3. C. Schalk and E. Burns. JavaServer Faces 2.0: The Complete Reference. MC Graw Hill (2010) 4. D. Geary and C. Horstmann. Core JavaServer Faces. Prentice hall, 3 ed. (2010) 5. A. Goncalves. Beginning Java EE 6 Platform with GlassFish 3, Apress, 2 ed. (2010) 6. M. Keith and M. Schincariol. Pro EJB 3 Java Persistence API, Apress, (2006) 7. M. Keith and M. Schincariol. Pro JPA 2 Mastering the Java Persistence API. Apress, (2009) 8. N., C. Zakas, J. Mcpeak and J. Fawcett. Professional Ajax. Wiley, 2 ed. (2007) 9. Y. Vasiliev. Beginning Database-Driven Application Development in Java EE Using GlassFish. Apress, (2008) 10. J. J. Garrett. Ajax: A New Approach to Web Applications. url http://www.adaptivepath.com/ideas/essays/archives/000385.php, 2005. 11 Tutorial PrimeFaces, Url: http://primefaces.org/documentation.html Referencias Fernando Pech-May. fpech@tamps.cinvestav.mx. ProfesorInvestigador del Instituto Tecnológico Superior de los Ríos (ITSR). Maestro en Ciencias de la Computación por el CINVESTAV-Tamaulipas. Sus áreas de interés son la Extracción de Información, Sistemas expertos y Sistemas distribuidos. Mario A. Gomez-Rodriguez. mgomez@tamps.cinvestav. mx. Maestro en Ciencias de la Computación por el CINVESTAV-Tamaulipas. Estudió la Ingeniería en Sist. Comp. en el Instituto Tecnológico de Victoria. Sus áreas de interés son la Web semántica, minería de datos, tecnologías middleware y cómputo móvil. Salvador U. Lara-Jeronimo. uciellara@gmail.com. Estudió la Ingeniería en Sist. Comp. en el ITSR. Sus áreas de interés son los Sistemas distribuidos y bases de datos. Luis A. de la Cruz-Diaz. aceletes@gmail.com. Estudió la Ingeniería en Sist. Comp. en el ITSR. Sus áreas de interés son los Sistemas distribuidos y la Web semántica.

Octubre - Diciembre de 2010

Java EE es sin duda la plataforma de desarrollo de aplicaciones más popular en el ámbito empresarial. Ofrece una serie de ventajas que hacen posible el desarrollo de aplicaciones potentes, flexibles, extensibles, ligeras, etc. Elimina la complejidad en cuanto a código y cuenta con la posibilidad de reutilizar código en los archivos de aplicaciones web, además de incorporar anotaciones mediante la plataforma para facilitar el desarrollo de aplicaciones. Actualmente, hemos utilizado estas tecnologías para el desarrollo de un sistema de control de actividades científicas y tecnológicas de los investigadores del estado de Tabasco.

Investigación


Red Neuronal Artificial para la Clasificación Semantica de Atributos en Bases de Datos Heterogéneas

Investigación

44

Red Neuronal Artificial para la Clasificación Semántica de Atributos en Bases de Datos Heterogéneas José Asunción Enríquez Zárate1, Jair Cervantes2, Adrian Trueba Espinosa2, Rosa María Valdovinos Rosas1, Luis Márquez Sanchez2 1Centro Universitario UAEM Valle de Chalco 2Centro Universitario UAEM Texcoco jaenriquezz@uaemex.mx, chazarra17@gmail.com, atruebae@hotmail.com,

U

Octubre - Diciembre de 2010

Artículo recibido el 23 de Junio del 2010

RESUMEN

O

Artículo aceptado el 27 de Agosto del 2010

ABSTRACT

no de los principales problemas en integración de bases de datos heterogéneas con diferente esquema y manejador es la redundancia de datos, que implica un problema de semántica en el contenido principalmente de los nombres y direcciones al momento de normalizar la base de datos, este problema se ataca en este trabajo, por medio de una red neuronal para clasificar datos. Los resultados obtenidos demuestran que se pudo tener una clasificación adecuada de hasta un 84% de aserción, con ello se podrá normalizar la base de datos y solucionar adecuadamente el problema generado por la integración de bases de datos.

ne of the main problems in integrating heterogeneous databases with different schemas are semantic problems it brings, especially in the content of the names and addresses when you normalize the database, this problem is attacked in this research, by a neural network to classify data. The results show that could have a correct classification of up 84% of assertion in the worst case, this would be to standardize the database and properly solve the problem of redundancy generated by the database integration.

Palabras Clave: Semántica, base de datos relacionales heterogéneas, redes neuronales artificiales.

Keywords: Semantic heterogeneous relational databases, artificial neural networks.

L

1 Introducción

a integración y consulta de datos de fuentes heterogéneas, es un tema reciente en el campo de la investigación; tiene la finalidad es proporcionar a los usuarios un acceso uniforme a múltiples fuentes de datos heterogéneas con un esquema global, en el que las consultas se pueden definir con los mecanismos necesarios para traducir los elementos del esquema global, en los elementos del esquema local correspondiente, y viceversa. Para una adecuada integración se debe considerar incluir los datos que utilizan las aplicaciones, los repositorios de datos y sistemas legados [2][3][4]. Se considera que la integración tiene por objeto proporcionar una visión consistente y uniforme, denominado esquema global con un conjunto de fuentes de datos autónomas y heterogéneas, de modo que los datos que residen en diferentes fuentes se puedan acceder como si se tratara de un único esquema. [10]

Existen [11] numerosos enfoques para la integración de datos de fuentes heterogéneas, uno de ellos está basado en XML con un constructor de algebra que es capaz de formar para cualquier fuente de datos una representación relacional que soporta agrupación y agregación. Otro [14] considera una arquitectura basada en la ejecución de arañas Web (Web crawler) que utiliza una ontología semántica para realizar la integración de bases de datos Web. También se emplean redes neuronales artificiales [9] [7], para identificar la correspondencia de atributos. Por otro lado [8], usa técnicas basadas en grafos para una derivación de esquemas que incluyen sinónimos, homónimos y similitudes de esquema.


45

Red Neuronal Artificial para la Clasificación Semantica de Atributos en Bases de Datos Heterogéneas

Investigación

2. Preliminares

U

n sistema de bases de datos heterogéneas o “Heterogeneous DataBase System” (HDBS) consiste en la creación de modelos computacionales que ofrezcan una interfaz uniforme de consultas a datos recolectados y almacenados en múltiples bases de datos heterogéneas [6]. En [5] los autores utilizaron las siguientes tecnologías: Bases de datos Heterogéneas, Agentes Computacionales, la Especificación XML, para solventar el problema de integración estructural en bases de datos relacionales heterogéneas. De donde se deriva el problema de la identificación de la similitud existente entre los datos de dos esquemas de bases de bases de datos diferentes. Definiéndose como E1(R1(A1,A2,...,An)) y E2(R1(A1,A2,...,An)). Donde E es el esquema de base de datos, R es la relación y A son los atributos que contienen los datos a identificar la similitud. Para identificar la similitud entre dos objetos llamados O1 e R1 e E1 y O2 e R1 e E2, es necesario obtener la estructura de cada una de las Relaciones (R), para después implementar el algoritmo de RNA Backpropagation.

Donde ηi representa el i-ésimo parámetro de aprendizaje, mientras que es normalmente un número positivo que representa la constante momentum. Una vez actualizados los pesos re calcula los valores de las ecuaciones 1, 2 y 3 hasta que el error es reducido a un valor preseleccionado o se cumple algún criterio de paro dado. 3. Planteamiento del Problema

D

iversos [1] [4] investigadores comentan que destacan cuatro problemas importantes a resolver para lograr la integración de diversas fuentes de datos: Conflictos de Heterogeneidad, Conflictos Semánticos, Conflictos Descriptivos y Conflictos Estructurales. Se resume en tres niveles; físico, sintáctico y semántico. Dentro de los conflictos de semántica, están los de homónimos y sinónimos, así como conflictos de unidades de representación de datos, también [7] agrega que es importante identificar la correspondencia de atributos para lograr la interoperabilidad en bases de datos heterogéneas, utiliza una red neuronal tipo backpropagation para identificar la correspondencia de los atributos de dos fuentes de datos, obteniendo una precisión de clasificación del 87.5%.

neti=Wiyi-1 Yi=fi(neti)

(1)

Donde neti son las entradas para la i-ésima capa de la red neuronal, mientras que yi son las salidas de la i-ésima capa, Yi es la i-ésima función de activación empleada. La propagación hacia atrás se obtiene de las ecuaciones: Fig. 1. Procesos y estados del algoritmo propuesto..

δ1=(W2Tδ2)*f1’(net1) δ2=(d-y2)*f2’(net2)

Donde d el vector de salidas deseado, δ1 y δ2 son los errores propagados. Las matrices del gradiente del error son obtenidas mediante las derivadas parciales con respecto a Wi y los pesos para W1 y W2 son actualizados mediante la

ΔWi (t + 1) = -η

δE Wi

+ α i ΔWi (t ), para t = 1.2

E

n la Fig. 1, muestra el esquema del proceso a seguir por el clasificador propuesto, como primer paso se parte de una o varias fuentes de datos, un agente computacional es el responsable de obtener la estructura de las relaciones con las cuales el usuario desea interactuar, los datos obtenidos se procesan y se obtiene una codificación binaria la cual es analizada y filtrada por una red neuronal de tipo retro propagación para obtener una clasificacion entre

Octubre - Diciembre de 2010

El algoritmo de aprendizaje proporciona una forma de entrenar una red multicapa, inicia con un vector de entrada y0 y valores iníciales para el vector W que son seleccionados aleatoriamente. Se realiza la propagación hacia adelante calculando los valores neti y Yi de acuerdo a las siguientes ecuaciones:


Red Neuronal Artificial para la Clasificación Semantica de Atributos en Bases de Datos Heterogéneas

Investigación valores numéricos y alfabéticos. A partir de la identificación de dichos valores se realiza una segunda clasificación que identifica los valores de tipo carácter para clasificar nombres, colonias, direcciones. Con el proceso anterior es posible identificar semánticamente un valor similar entre estas tres características y dar una alternativa de solución al problema de redundancia.

Octubre - Diciembre de 2010

C

3.1 Metodología

odificación de Datos. Se realizó la codificación de los metadatos identificados utilizando una nomenclatura base, lo cual permitió separar valores numéricos de no numéricos. Cuando las características de los datos de entrada son categóricas, las redes neuronales requieren que cada instancia sea representada como un vector de números reales. Por lo tanto, en los ejemplos que se muestran en esta sección, cuando existen atributos categóricos, primero, convertimos estos a datos numéricos empleando m números para representar un atributo de m - categorías. Únicamente uno de los m números es uno, mientras que los demás son cero, la siguiente Tabla señala el método de codificación propuesto.

46

Normalización de datos. Las principales ventajas de normalizar es evitar que los atributos con rangos numéricos muy grandes dominen a aquellos atributos con rangos numéricos pequeños y evitar dificultades numéricas durante los cálculos. En este caso, los conjuntos de datos de entrenamiento y de prueba son normalizados en un rango [0,1] con el objetivo de obtener clasificadores con una mejor habilidad de generalización.

A

4. Resultados Experimentales

continuación se describen los conjuntos de datos sobre los cuales se probaron las redes neuronales y metodología propuesta.

Simulación 1. El primer conjunto de datos contiene 1920 datos de entrenamiento, de los cuales se tomaron 288 (15%) para validación y 288 (15%) para prueba, en la primera etapa del algoritmo el conjunto de datos se reduce a solo 1200 datos, los cuales son no numéricos, la segunda etapa de clasificación se toman una vez más 15% para validación (180) y 15% para prueba (180). Simulación 2. El segundo conjunto de datos contiene 30000 datos de entrenamiento, de los cuales se tomaron 4500 (15%) para validación y 4500 (15%) para prueba, en la primera etapa del algoritmo el conjunto de datos se reduce a solo 14940 datos, los cuales son no numéricos, la segunda etapa de clasificación toma una vez más 15% para validación y 15% para prueba. Las simulaciones fueron realizadas siguiendo los pasos de procesamiento de datos. La selección del modelo o parámetros de clasificación influyen en gran manera en la precisión de clasificación.

Una vez identificados los valores numéricos y no numéricos se procede a codificar los datos de la base de datos para identificar nombres, direcciones y estados a partir del siguiente análisis.

Fig. 2. Arquitectura del clasificador backpropagation propuesto.


47

Red Neuronal Artificial para la Clasificación Semantica de Atributos en Bases de Datos Heterogéneas

La Fig. 2 muestra la red neuronal backpropagation para clasificación binaria propuesta, cuenta con una capa oculta y nodos totalmente conectados. Cada uno de los nodos en la capa de entrada representa un discriminador, la capa oculta consiste de 4 nodos conectados a los nodos de la capa de entrada y a los nodos de la capa de salida, que representan las posibles salidas. Fue necesario encontrar los parámetros para optimizar el desempeño de la red neuronal. Se realizo una búsqueda de malla para encontrar los parámetros óptimos de aprendizaje y número de neuronas en la capa oculta. Estimación de los errores de generalización. Se empleo la validación cruzada (cross validation), técnica ampliamente empleada para estimar el error de generalización de un clasificador [13].

La Tabla 4 muestra los resultados obtenidos del enfoque propuesto en la primera y segunda etapa de clasificación. La precisión de clasificación obtenida en las simulaciones en el conjunto de datos de entrenamiento (E), validación (V) y prueba (P). Con las características empleadas en la primera etapa, la red neuronal obtiene un 100% de clasificación en los dos ejemplos. En la segunda etapa el peor comportamiento de la red se da al detectar una colonia con un 15.92% y 17.25% de error en la simulación 1 y 2 respectivamente.

L

5. Conclusiones

os resultados obtenidos muestran que hay una clara diferenciación entre los caracteres numéricos y los no numéricos, sin embargo al tratar de diferenciar los nombres, la red muestra una aserción de 84% en el peor de los casos, lo que permite poder ser diferenciado entre las otras características, aunque no se tiene la certeza del 100%, esto permitirá reconocer cada uno de los atributos A, de las relaciones R, de los esquemas E de las bases de datos. Esto es importante ya que como los datos se encuentran almacenados en tablas, será posible diferenciar los tipos de datos que hay en cada tabla y con ello evitar la redundancia. Al utilizar una codificación binaria adecuada para cada una de las características primordiales obtenidas de los metadatos de las relaciones identificadas es posible clasificar adecuadamente entre datos numéricos y no numéricos. Al normalizar los datos en el rango de [0,1], se obtuvo un clasificador con una mejor habilidad para clasificar los datos con una red neuronal. Con cross validation se validó que la precisión de clasificación fue aceptable en los datos al momento de generalizar. Al utilizar una red neuronal Backpropagation para clasificar entre datos con el mismo significado semántico es posible obtener resultados óptimos, aplicando la metodología propuesta, sin dejar de tomar en cuenta la desventaja propia que implica la utilización de una red neuronal, que no son significativas. Con los resultados obtenidos es posible detectar el contenido de los atributos A y poder diferenciar nombres de direcciones principalmente y con ello normalizar la base de datos para evitar la redundancia.

Los resultados obtenidos en este trabajo son contrastados con otros trabajos que utilizaron RNA citados en [7] que ataca el problema de semántica con el significado de atributos de las bases de datos heterogéneas obteniéndose los siguientes resultados:

Octubre - Diciembre de 2010

La Tabla 3 muestra los resultados de la media µ y la desviación estándar σ obtenidas en 10 corridas al clasificar el Nombre con la red neuronal propuesta.

Investigación


Octubre - Diciembre de 2010

Investigación

Es importante recordar que en este trabajo se consideraron los contenidos de los atributos, por lo que el problema semántico tuvo un diferente enfoque. Esto es conveniente mencionarlo ya que a pesar que la precisión en el trabajo propuesto por [7] es mayor al encontrado en este trabajo, la imprecisión de los resultados no son equiparables ya que aquí se considerará un 12.5 de incertidumbre en los resultados, debido a la forma en que se consideraron los datos que alimentan a la red. El presente trabajo a pesar de tener el 84.6 % es equiparable al 100% por utilizarse el contenido de los atributos y no a la definición de los mismos, además, ese porcentaje hace referencia al peor de los casos. Las metodologías que se utilizan en cada estudio son complementarias ya que ambas ayudan a resolver el problema de semántica. 5. Conclusiones 1. Yadlapalli Swathi, Shepherd Gordon, Miller Perry, Silberschatz Abraham, Marenco Luis. “Integration Of Heteregeneous Bio-Medical Databases: A Federated Approach Using Semantic Schemas”. 2006. 2. Madria Sanjay, Passi Kalpdrum, Bhowmick Sourav. “An Xml Schema Integration And Query Mechanism System”. Data Knowl. Eng. 65, 2, 266-303. May 2008. 3. Jinpeng Wang, Jianjiang Lu, Yafei Zhang, Zhuang Miao, Bo Zhou, 2009. “Integrating Heterogeneous Data Source Using Ontology”. JOURNAL OF SOFTWARE, VOL. 4, NO. 8, 843- 850, OCTOBER 2009. 4. Mesiti Marco, Jiménez-Ruiz Ernesto, Sanz Ismael, Berlanga-Llavori Rafael, Perlasca Paolo, Valentini Giorgio, Manset David. “Xml-Based Approaches For The Integration Of Heterogeneous Bio Molecular Data”. BMC Bioinformatics. Published online 2009 October 15. 5. Enríquez Zárate José Asunción, Trueba Espinosa Adrian, Cervantes Canales Jair, Valdovinos Rosas Rosa María. “Integración de bases de datos heterogéneas mediante agentes de software”. Avances en Sistemas Inteligentes en México. Sociedad Mexicana de Inteligencia Artificial. 221- 230. 6. Walter Sujansky. “Heterogeneous database integration in biomedicine”. Comput. Biomed. Res. 34, 4, 285-298, August 2001.

Red Neuronal Artificial para la Clasificación Semantica de Atributos en Bases de Datos Heterogéneas

48

7. Bao-hua Qiang, Ling Chen, Jian-qing Xi, Zhong-fu Wu. “A Novel Algorithm for Identifying Corresponding Attributes in Heterogeneous Databases. Fuzzy Systems and Knowledge Discovery, 2007. FSKD 2007. Fourth International Conference on. 24-27 Aug. 2007. 459 – 463. 8. Luigi Palopoli, Domenico Sacca, Giorgio Terracina, and Domenico Ursino. “Uniform Techniques for Deriving Similarities of Objects and Subschemes in Heterogeneous Databases”. Knowledge and Data Engineering, IEEE Transactions on. March-April 2003. 15, 2. 271 - 294. 9. Wen-Syan Li, Chris Clifton. “SEMINT: A tool for identifying attribute correspondences in heterogeneous databases using neural networks”, Data \& Knowledge Engineering, Volume 33, Issue 1. 10. Karasneh, Yaser and Ibrahim, Hamidah and Othman, Mohamed and Yaakob, Razali. “Integrating schemas of heterogeneous relational databases through schema matching”. iiWAS, 2009.209-216. 11. Niemi, Timo and Näppilä, Turkka and Järvelin, Kalervo. “A relational data harmonization approach to XML”. J. Inf. Sci. 35, 5, October 2009.571-601. 12. Yaser Karasneh, Hamidah Ibrahim, Mohamed Othman, and Razali Yaakob. “A model for matching and integrating heterogeneous relational biomedical databases schemas”. International Database Engineering and Applications Symposium (IDEAS 2009). 242-250. 13. Rudy Setiono. 2001. “Feedforward Neural Network Construction Using Cross Validation”. Neural Comput. 13, 12 , 2865-2877, 2001. 14. Tan, Hao and Ghodous, Parisa and Montiel, Jacky. “Online web database integration” . Proceedings of the International Conference on Management of Emergent Digital EcoSystems. 240---245. 2010.


49

Red Neuronal Artificial para la Clasificación Semantica de Atributos en Bases de Datos Heterogéneas

Investigación

José Asunción Enríquez Zárate, es Docente en el Centro Universitario UAEM Valle de Chalco, Maestro en Ciencias de la Computación por la Universidad Autónoma del Estado de México, líneas de investigación que desarrolla son: Sistemas de Información, Bases de Datos Heterogéneas, Inteligencia Artificial. Jair Cervantes, Egresado del Instituto Tecnológico de Orizaba de la Carrera de Ingeniería Mecánica. Obtuvo los grados de maestría y doctorado en Control Automático e Ingeniería Eléctrica en el CINVESTAV del IPN en 2005 y 2009 respectivamente. Sus áreas de interés incluyen reconocimiento de patrones, lógica difusa y visión. Adrián Trueba Espinosa, Profesor Investigador en el Centro Universitario UAEM Texcoco, Doctor en Ciencias y Maestro en Computo Aplicado por el Colegio de Posgraduados, Las líneas de investigación que desarrolla son: Sistemas de Información Geográfica, Bases de Datos, Minería de Datos e Inteligencia Artificial. Luis Márquez Sánchez, es Maestro en Ciencias de la Computación por la Universidad Autónoma del Estado de México, líneas de investigación que desarrolla son: Redes neuronales, Sistemas de Información, Bases de Datos. Rosa María Valdovinos Rosas. Profesora Investigadora en la Universidad Autónoma del Estado de México, Centro Universitario Valle de Chalco. Líneas de investigación Inteligencia Artificial, Reconocimiento de Patrones y Análisis de imágenes.

Octubre - Diciembre de 2010


Resumen de Tesis



Revista Científica y de Divulgación de la Dependencia de Educación Superior Área Ciencias de la Información de la Universidad Autónoma del Carmen


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.