Bogotá D.C., Colombia • revista@unbosque.edu.co • Volumen 6 Número 2 • Julio a Diciembre de 2007 UNIVERSIDAD EL BOSQUE RECTOR Dr. Jaime Escobar Triana VICERRECTOR ACADÉMICO Dr. Erix Bozón Martínez VICERRECTOR ADMINISTRATIVO Dr. Carlos Felipe Escobar Roa SECRETARÍA GENERAL Dr. Luis Arturo Rodríguez DECANO FACULTAD INGENIERÍA DE SISTEMAS Ing. Jairo Hernán Barragán Gómez jairoher@unbosque.edu.co DIRECTORA DE INVESTIGACIONES FACULTAD DE INGENIERÍA Ing. Guiovanna Sabogal guiovannasabogal@unbosque.edu.co SECRETARIO ACADÉMICO Ing. Hernando Ramírez Llinás hernandoramirez@unbosque.edu.co DIRECTOR ÁREA PROFESIONAL Ing. Carlos Ortiz Buitrago carlosortiz@unbosque.edu.co DIRECTORA ÁREA BÁSICA Lic. Marlene Garzón marlenegarzon@unbosque.edu.co DIRECTOR ÁREA DE TELECOMUNICACIONES Ing. Carlos Fernando Varela Pérez carlosvarela@unbosque.edu.co DIRECTORA ÁREA LABOR SOCIAL Dra. Sandra Angarita Roa sandraangarita@unbosque.edu.co DIRECTOR REVISTA DE TECNOLOGÍA Dr. Saudiel O. López Cruz orlandolopez@unbosque.edu.co COMITÉ EDITORIAL Ing. Jairo Barragán G. - Universidad El Bosque Ing. Liliana Buitrago - Universidad El Bosque Dr. César A. Mendoza - Universidad Nacional Dr. Oswaldo J. Gómez Díaz - Universidad Nacional COMITÉ CIENTÍFICO Ing. Hernando Ramírez Llinás - Universidad El Bosque Dr. Saudiel O. López Cruz - Universidad El Bosque Ing. Guiovanna Sabogal - Universidad El Bosque Ing. Carlos Fernando Varela P. - Universidad El Bosque Ing. Alejandro León Mora - Universidad El Bosque Lic. Efraín Patiño - Universidad El Bosque Revista de Tecnología - Journal of Technology Facultad de Ingeniería de Sistemas ISSN 1692-1399 Volumen 6 Número 2 Para información sobre tarifas publicitarias comunicarse con la Dirección de la Revista: revista@unbosque.edu.co
OBJETIVOS Y ALCANCE: La REVISTA DE TECNOLOGÍA es una publicación que actúa como foro de investigaciones sobre las tecnologías de información, las interrelaciones de la tecnología informática con las organizaciones y con las prácticas y políticas de gestión. La REVISTA DE TECNOLOGÍA convoca a un amplio rango de análisis sobre estas interrelaciones y los cuestionamientos críticos sobre ellas desde la Medicina, Filosofía, Antropología, Derecho, Auditoría, Psicología, Sociología, Trabajo Social y otras ciencias sociales y exactas, incluyendo investigaciones y estudios teóricos, empíricos, analíticos e interpretativos. Su objetivo principal es acerca de las tecnologías de información, sus fundamentos teóricos, su práctica, evaluación y la exploración y comprensión de la relación de la tecnología informática con otras disciplinas incluyendo, pero sin restringirse a, la Medicina, la Gestión (Management), Matemáticas, Física, Filosofía, Antropología, Derecho, Auditoría, Psicología, Sociología y Trabajo Social, analizando el impacto de la tecnología informática sobre la ética, los derechos individuales, la transferencia de tecnología informática a las organizaciones y sobre los conceptos cambiantes de la gestión, la auditoría, el bienestar de las personas y la viabilidad de las organizaciones. La REVISTA DE TECNOLOGÍA viene a mejorar las comunicaciones entre la Universidad, las Organizaciones en general y las Empresas en particular. La tecnología informática moldea y es moldeada por, afecta y es afectada por aspectos económicos, políticos y sociales de las organizaciones en los sectores financiero, de servicios, educación, salud e industrial de origen privado o gubernamental. A su turno, las organizaciones experimentan el reto de la globalización, el fenómeno de la transmundialización y la necesidad de estandarizar para responder la demanda del mercado y a la vez adicionar características de diferenciación para ser competitivas. © Todos los derechos reservados. Se requiere permiso para reproducir, almacenar en un sistema de recuperación en cualquier forma o por cualquier medio, electrónico, mecánico, fotocopiado, grabado o por cualquier forma de todo o parte de esta Revista de Tecnología. Contáctenos para atender cualquier inquietud: Universidad El Bosque - Facultad de Ingeniería de Sistemas, Transversal 7 B Bis 132-11 Edificio El Campito, Bogotá D.C., Colombia. e-mail: revista@unbosque.edu.co. SUSCRIPCIONES Y PUBLICIDAD: La REVISTA DE TECNOLOGÍA ISSN 1692-1399 lo invita a dirigir sus órdenes publicitarias a la correo electrónico orlandolopez@unbosque.edu.co o a la siguiente dirección geográfica: Saudiel López - Facultad de Ingeniería de Sistemas, Transversal 7 B Bis 132-11 Edificio El Campito, Bogotá D.C., Colombia. Aunque todos los anuncios y demás contenidos de la revista dicen estar conforme a estándares éticos, por su inclusión en esta publicación, el anunciante declara que la responsabilidad por perjuicios o daños a personas o propiedades como resultado de la calidad o fiabilidad de los productos, la negligencia u otra forma, cualquier uso u operación de los métodos, productos, instrucciones o ideas contenidas en el material corresponde enteramente a su responsabilidad. Las suscripciones corporativas, educativas e individuales son siempre bienvenidas. Las suscripciones pueden ser realizadas al correo electrónico orlandolopez@unbosque.edu.co o a la siguiente dirección geográfica: Saudiel López - Facultad de Ingeniería de Sistemas, Transversal 7 B Bis 132-11 Edificio El Campito, Bogotá D.C., Colombia. Vía fax al número (57 1) 625 2030. Dentro de Colombia también puede hacerlo vía telefónica al (57 1) 520 4018.
AIMS AND SCOPE JOURNAL OF TECHNOLOGY is a journal offering a forum for research on information technologies, the interrelationship between information technologies, organisations and management practices and policies. JOURNAL OF TECHNOLOGY invites a broad range of analyses of these interrelations as well as critical questioning of them from such a knowledge fi elds as Medicine, Philosophy, Anthropology, Law, Auditing, Psychology, Sociology, Social Work and any other social or exact science, including theoretical, empirical, analytical and interpretative studies and action research. Its special concern is on information technologies, its theoretical foundation, practice, assessment, exploring and understanding the relationship between information technology to other disciplines including, but not limited to, medicine, management, Mathematics, Physics, Philosophy, Anthropology, Law, Auditing, Psychology, Sociology, Social Work, analyzing the impacts of information technologies on ethics, individual rights, technology transfer into organisations and changing concepts on management, auditing, people well-being and organisations viabilityy. JOURNAL OF TECHNOLOGY comes to improve communications between University, organisations in general and business in particular. Information technology shapes and is shaped by, affects and is affected by economic, political and social affairs across organisations in fi nancial, service, education, health and industrial sectors either of private or governmental origin. In turn, organisations are being challenged by globalization, the trans-world phenomena and the need to be standardized to attend the demand from the market and, at the same time, to add differential characteristics to be competitive. © All rights reserved. Permission of the publisher is required to reproduce, store in a retrieval system in any form or by any means, electronic, mechanical, photocopying, recording or otherwise of all or any part of this Journal of Technology. Contact the publisher for any request El Bosque University Information Systems Engineering Faculty, Transversal 7 B Bis 132-11 Edificio El Campito, Bogotá D.C., Colombia, e-mail: revista@unbosque.edu.co. SUBSCRIPTIONS AND ADVERTISING Revista de Tecnologia - Journal of Technology ISSN 1692-1399 is published on a semester basis by El Bosque University, Please direct inquiries regarding the placing of advertising in this journal to Saudiel López, El Bosque University Information Systems Engineering Faculty Transversal 7 B Bis 132-11, Bogotá, Colombia. Phone (57 1) 520 4018. e-mail: revista@sistemasunbosque.edu.co. Both Institutional and individual subscriptions are welcome. Inside Colombia by phone call, outside Colombia besides phone call fax (57 1)625 20 30 or e-mail revista@unbosque.edu.co. Although all advertising and further contents is expected to conform to ethical standards, inclusion in this publication does not constitute a guarantee or endorsement of the quality or value of such productd or the claims made of it by its manufacturer. No responsibility is assumed by the Publisher for any injury and/or damage to persons or property as a matter of products liability, negligence or otherwise, or form any use or operation of any methods, products, instructions or ideas contained in the material herein.
© De cada texto su Autor. © 2007 Universidad El Bosque Ediciones El Bosque • Transversal 7 B Bis 132-11 PBX: 6331368 - 6331320 Fax: 6252030. Facultad de Ingeniería de Sistemas Tel.: 5204018 Página web: www.sistemasunbosque.edu.co Link: Revista. e-mail: revista@unbosque.edu.co Bogotá, D.C., Colombia. ISSN 1692-1399 Canje: Biblioteca Juan Roa Vásquez - Universidad El Bosque. Valor de un (1) ejemplar: Cinco mil pesos ($5.000.oo). Diseño de Portada: Centro de Diseño • Universidad El Bosque. Diagramación: Centro de Diseño • Universidad El Bosque. PBX: 6489000 Ext.: 311-322 Impresión: Bogotá D.C., Colombia Noviembre de 2007
Contenido "La computación en malla es una realidad en la Universidad El Bosque. Además de disponer de los avances del proyecto EVA-Grid, la comunidad universitaria contará con inf raest r uc t ura de High P e r f o r m a n c e c o m p u t i ng Computación de alto desempeño".
Editorial. _____________________________________________________________________________ “Políticas Editoriales.” Una Breve Disertación Inicial.
5
Saudiel O. López Cruz.
INVESTIGACIONES Y AVANCES 1. Experiencia y práctica en la instalación y configuración de un nodo de EVA R-GRID. _______________ Daniel Burbano, PCPE. María Paula Angarita, Ing. Sistemas. Fabián Lozada, Ing. Sistemas.
2. Métricas de Similitud para Búsqueda Aproximada. __________________________________________
7
13
Juan Felipe García.
3. Prototipo de una Herramienta Computacional para el Desarrollo de Material Educativo para la Enseñanza de Funciones de una Variable. ___________________________________________________ Nidya A. Monroy Rodríguez. Boris Sánchez Sánchez.
4. Prototipo para la Implementación de un Módulo Web fundamentado en la Teoría sobre Portal de Contenidos. __________________________________________________________________________ Carlos Hernán Ortiz Buitrago. Juan Sebastián García O. Juan Carlos Jiménez V.
5. Creación de Aplicaciones Web utilizando Java Server Faces y Netbeans con Visual Web Pack. ________ Alejandro Pieschacón Rueda.
6. Desarrollo de una Interfaz Gráfica Multiplataforma para una Herramienta de Computación Forense. _
27
31
41 51
Edward Andrés Corredor Rondón.
7. ¿Uso de firmas digitales en MEA de EVA R-GRID?. __________________________________________
59
Daniel Burbano. Gustavo Andrés Jiménez Lesmes.
8. Ubicación de Sitios de Entretenimiento a través de dispositivos Móviles en Colombia. ______________ Carlos Fernando Varela Pérez. Eduardo Antonio Cárdenas. Jimmy Zamir Ortega Ortegón.
9. Aseguramiento de Calidad en el Desarrollo del Software. ____________________________________ Jorge Enrique Urrego Navarro.
NOTA DE RESPONSABILIDAD La Revista de Tecnología de la Facultad de Ingeniería de Sistemas de la Universidad El Bosque, es una publicación abierta a todas las opiniones e intereses académicos. En ese sentido, la responsabilidad sobre los contenidos del material presentado es de responsabilidad exclusiva de sus autores.
65
69
INVITACIÓN A ESCRIBIR ARTÍCULOS Desde esta sección la REVISTA DE TECNOLOGÍA hace un llamado a la comunidad a escribir artículos a ser publicados en siguientes números. Una forma de desarrollo de nuestras profesiones es la publicación de documentos que reportan nuestras actividades en algún campo. Son aceptados artículos correspondientes a investigaciones originales e inéditas, revisión de artículos y de productos de software y hardware. Casos de estudio con su soporte teórico, ensayos y artículos en tópicos técnicos, pedagógicos, académicos, administrativo y, en general, material de importancia para el desarrollo de las Ciencias de la Computación y de su interrelación con otras áreas del conocimiento. Los artículos deben ser enviados a la dirección e-mail: revista@sistemasunbosque.edu.co. En el asunto (subject) del mensaje indicar «Artículo para publicar» y como anexo un a rchivo en Microsoft Word, con la s sig uientes características: Los márgenes superior, inferior e izquierdo de 4 cm. El márgen derecho de 3cm. Preferiblemente tipo de letra Arial tamaño 12. Párrafos con interlineado 1.5. En caso de contener gráficos o imágenes, estas deben -además de estar incrustadas en el texto- venir en un archivo aparte anexo. En general, las publicaciones son temas de interés e investigación de los autores, de aspectos de su trabajo o campo de investigación. Se recomienda a los autores acompañar sus archivos con una carta de presentación donde manifiestan que no están considerando publicar el documento en otra revista y cediendo los derechos de autor. Se confirmará recibo de los archivos por el mismo medio. El envío de un manuscrito no obliga a la revista ni la compromete a la publicación. El archivo debe contener las siguientes partes. 1. TÍTULO: Se sugiere un título breve pero a la vez descriptivo. 2. AUTOR: Indicar nombre, apellido. 3. RESUMEN en castellano y ABSTRACT en inglés: en el que en un párrafo (máximo 2 párrafos o 150 palabras) se resume el tema del artículo, se presenta el punto de partida, el punto de finalización (de la investigación, experimento o ejercicio) y una lista de los medios utiliza dos (Tipos de laboratorio, ubicación geográfica, entre otros) cuando aplique.
5. INTRODUCCIÓN: Debe contener los aspectos que motivaron la investigación, los métodos utilizados, el objetivo de la investigación y una breve reseña de los resultados obtenidos. 6. DESARROLLO TEMÁTICO: Es uno o más subtítulos que describen el método utilizado, las referencias a los productos de hardware y software utilizados, el marco teórico, los resultados obtenidos y las restricciones que existieron dentro del tema desarrollado. A partir del título de la Introducción, todos los títulos deben ir numerados consecutivamente en formato arábigo. Si aparecen referencias a las fuentes, estas deben ir en forma consecutiva entre paréntesis cuadrados. Si usa imágenes o fotografías por favor incluir el nombre y la fuente. 7. DISCUSIÓN/CONCLUSIÓN: En esta sección se confrontan los resultados con el marco teórico para establecer coincidencias, diferencias y aspectos sin resolver. En esta sección deben aparecer los puntos que pueden generar nuevas actividades de investigación. Una vez planteada la discusión, enuncie las conclusiones deriva das de las observaciones. Señale las perspectivas futuras que el tema permita explorar en futuras investigaciones. 8. REFERENCIAS: Corresponde a las referencias a libros, publicaciones periódicas e incluso URLs de instituciones en la Web. En este último caso es importante señalar URLs correspondientes a entidades cuya permanencia permita la recuperación de la referencia. La lista debe estar ordenada en forma lexicográfica por autor y precedida de un número arábigo que las enumera a partir del número 1. Este es el número que se anotará como referencia dentro del texto. En esta lista deben aparecer relacionados solamente documentos que hayan sido referenciados dentro del texto del artículo. 9. PRESENTACIÓN DEL AUTOR: En pocas palabras indicar su posición académica, institución a la que está vinculado, profesión, intereses e indicar si ha recibido financiación para realización del trabajo del que se presenta el informe. Para obtener una plantilla con el formato para escribir artículos consulte la página web: Www.sistemasunbosque.edu.co, link: revista, link: formato de artículos.
4. PALABRAS CLAVE: Corresponde a los conceptos clave, llaves de búsqueda que permiten clasificar en forma automática los contenidos del artículo, no más de cinco por favor. ADVERTENCIA: Todos los artículos enviados son evaluados por pares. Por tanto, los autores aceptan explícitamente, con el envío del artículo, que su trabajo solo será publicado si cumple con los OBJETIVOS y ALCANCE de esta Revista, así como con los requisitos formales y políticas editoriales.
Editorial “Políticas Editoriales.” Una Breve Disertación Inicial.
Saudiel O.López Cruz
"How we can avoid the two extremes: too great bossism in giving orders, and practically no orders given?… My solution is to depersonalize the giving of orders, to unite all concerned in a study of the situation, to discover the law of the situation and obey that." Mary Parker Follet 1
Las políticas a las que hace referencia esta editorial corresponden más al significado de lo que en inglés se llama “policies” y no “politics”. Es decir, a directrices para el 'quehacer' cotidiano que están orientadas a garantizar la efectividad de un fin que se persigue. Política entendida como un precepto que se enuncia para orientar la acción de las personas, un lineamiento general a observar en la toma de decisiones frente a situaciones cotidianas o no, recurrentes o no [3]. Para el caso a tratar, las políticas editoriales, el concepto debe ser contextualizado, más que definido. Esto es, el concepto de política editorial interesa más como idea vinculante de un trabajo académico de divulgación del conocimiento que como enunciado conceptual. Esto lo considera así Colciencias al decir que “la política editorial sólo tiene sentido si vincula intrínsecamente a los planes de investigación, a los proyectos sociales de CT+I”[2]. Si bien el término “política” etimológicamente proviene del griego politich y del latín politïce, para referirse a la doctrina referente al gobierno de los Estados, e históricamente su origen se entiende a partir de la manera como en la antigua Grecia eran gobernadas las "polis", organizaciones sociales; el término “política” ha pasado a tomar distintas connotaciones, entre las cuales, interesa a este planteamiento como: "Orientación o directriz que rige la actuación de una persona o entidad en un asunto o campo determinado"[5]. Y el ejercicio de divulgación académica a través de una revista, especialmente como la REVISTA DE TECNOLOGIA JOURNAL OF TECHNOLOGY, pasa a ser el campo en el que se requiere de orientaciones a las actuaciones de quienes allí participan. En esta arena, la arena de la literatura científica y tecnológica, pueden confluir resultados de investigaciones de diversas naturalezas e intereses, en consecuencia, si se quiere mantener un cuerpo con alguna identidad, es necesaria una orquestación, una coordinación que procure obtener la melodía de aparentemente disímiles sonidos. Todo director de orquesta, coordinador de actividades o gerente se enfrenta a la amplia variedad de habilidades, conocimientos, e incluso intenciones de los ejecutantes. Su reto es armonizar la interacción para obtener una obra que, además de útil, sea estética, agradable a los cánones válidos o aceptados, no sólo por el auditorio al que va dirigido, sino ante los demás ejecutantes. En la Revista de Tecnología, declaradamente orientada a un amplio rango de estudios sobre interrelaciones y cuestionamientos críticos, confluyen intérpretes, es decir autores que postulan sus artículos, desde distintas áreas del conocimiento. Valga la pena enfatizar que no sólo desde las áreas de las tecnologías de informática y comunicaciones, ahora llamadas por su acrónimo TIC´s, y ni siquiera desde las ingenierías, sino desde todo ámbito del conocimiento. Esto es así porque en los OBJETIVOS Y ALCANCE de la Revista de Tecnología se reconoce que “la tecnología informática moldea y es moldeada por, afecta y es afectada por aspectos económicos, políticos y sociales”.
1 Citado por Pugh [4].
6
Universidad El Bosque - Facultad de Ingeniería de Sistemas
En esta línea de razonamiento, las políticas editoriales son, pues, la batuta de la que se sirve el Director de la publicación para orquestar la actuación de los postulantes de documentos a ser publicados. Es para todos claros que no todos los instrumentos tiene cabida en una orquesta. Es decir, depende de la orquesta. Por ejemplo, la bandola no es integrante canónico de una orquesta sinfónica. Es cierto que es un instrumento de cuerda. Tan de cuerda como los violines, violas, violoncelos y contrabajos. Pero sin discriminar los colores musicales de la bandola, esta no tiene su mejor desempeño en el tipo de orquesta antes mencionada por lo menos canónicamente-. En uso de esta figura, el director de una revista académica, como el director de una orquesta sinfónica, se acoge a las normas relacionadas con la publicación de documentos que son del dominio de su publicación. En este caso, el de la Revista de Tecnología de la Universidad El Bosque, la publicación se acoge a lo establecido por algunas normas que Colciencias define para clasificar artículos y tipificarlos. Se rige por la normatividad vigente que busca proteger los derechos de autor y se identifica de manera única por un ISSN (International Standard Serial Number, Número Internacional Normalizado de Publicaciones Seriadas). Además adopta “formas” para la comunicación de dichos escritos que van desde el mismo tamaño de cada hoja de la Revista, su diagramación hasta el detalle de presentación de cada parte del documento. Dicha medidas adoptadas por el editor no son casuales. Hace más de diez años, 1995, un estudio reportó algunas limitaciones que exhibían las publicaciones seriadas latinoamericanas para lograr visibilidad internacional y reconocimiento académico: “De un total de 311 revistas estudiadas solo 42% tiene ISSN y provee los elementos más importantes de identificación y de control bibliográfico,… 22% publica o tiene resúmenes en mas de un idioma,… 21% informa sobre el nombre del editor y del comité editorial, … 15% describe las finalidades y el campo en que se ubica la revista.”2 Esta, la Revista de Tecnología Journal of Technology, nace y evoluciona en el contexto académico y la responsabilidad de su editor, en forma permanente, es buscar el incremento de la calidad de la publicación. Esto se logra a partir de un ejercicio de formulación de políticas, que por ahora están orientadas a orientar a los autores acerca de las formalidades de los escritos que postulen y del contexto y origen de donde deben provenir sus escritos, que es lo que le da el carácter de seriedad. Seriedad en este medio se entiende como la originalidad y rigurosidad de los estudios o ejercicios académicos que preceden o son concurrentes con el escrito que se presenta. El escrito también debe cumplir con requisitos que le dan carácter de seriedad. Siendo consecuentes con lo anterior, las políticas editoriales pueden ser dinámicas y, por tanto, el Comité Editorial divulgará entre lectores y autores de documentos postulados, cuáles serán los cambios: Modificaciones y adiciones, a las políticas editoriales.
Saudiel O. López Cruz Director e-mail: orlandolopez@unbosque.edu.co
REFERENCIAS [1] CHARUM, Jorge, (Coordinador), (2002), La búsqueda de la visibilidad a través de la calidad, Instituto Colombiano para la Educación Superior ICFES, Serie Calidad de la Ecuación Superior No. 2, Bogotá D.C. [2] INSTITUTO COLOMBIANO PARA EL DESARROLLO DE LA CIENCIA Y LA TECNOLOGÍA COLCIENCIAS, (2005), Lineamientos de Política Editorial, Documento de Colciencias, Bogotá D.C., mayo 25 de 2.005. [3] LÓPEZ CRUZ, Saudiel O., (2004), Políticas de Seguridad Informática Seguras, en Revista de Tecnología Journal of Technology Vol.3 No.2, Universidad El Bosque, Bogotá D.C., Julio-Diciembre 2004, pp.47-62. [4] PUGH, Derek S., (1971), Writers on organizations, 2ª. Edic. Penguin Books, 1ª. edic. 1964, London. [5] REAL ACADEMIA ESPAÑOLA, (2003), Diccionario de la Lengua Española, 22ª edic., Espasa Calpe, Madrid.
2 Cano, Virginia, (1995), Characteristics of the publishing infrastructure of peripheral countries; a comparison of periodicals from Latin America with periodicals from US and UL. Scientometrics, Vol. 34. No. 1. P.24. Citado por Charum[1].
Experiencia y práctica en la instalación y configuración de un nodo de EVA R-GRID Daniel Burbano, PCPE Maria Paula Angarita, Ing. Sistemas Fabián Lozada, Ing. Sistemas
Resumen
Abstract
El proceso de creación de un nodo dinámico de un Cluster para pasar del sistema operativo Linux a Microsoft Windows XP y viceversa (dual boot) , consiste en dividir el disco duro del computador en una partición FAT, las particiones que corresponden a Linux (/boot, /(root), swap) y una partición NTFS. La configuración de estos, aparentemente no tiene un orden específico y sería un proceso sencillo, pero las experiencias vividas en el transcurso del desarrollo de los proyectos de grado “Desarrollo de un prototipo de aplicación que permita pasar del sistema operativo Linux al sistema operativo Windows™ con una combinación de teclas.” y “Diseño e implementación de un software de planificación para cambiar el sistema operativo de Windows a Linux para generación dinámica de nodos de un Grid”, muestran que de todas las posibles formas de configuración de los nodos solo una permitía el correcto funcionamiento de ambos proyectos.
The process of creating a dynamic Cluster node to switch from Linux to Microsoft Windows XP and vice versa consist OF the division of the computer hard drive into a FAT partition, the Linux partitions (/boot, /(root), swap) and a NTFS partition. At first sight the process is simple and doesn't have an specific order, but according to the experiences lived during the “Desarrollo de un prototipo de aplicación que permita pasar del sistema operativo Linux al sistema operativo WindowsTM con una combinación de teclas.” and “Diseño e implementación de un software de planificación para cambiar el sistema operativo de Windows a Linux para generación dinámica de nodos de un Grid” projects it´s clear that from all the possible ways of configuring a node there was only one that allowed both projects to work.
Palabras claves: EVA R-GRID, Cluster, Linux, Windows, inicio dual, administrador de arranque, Master Boot Record.
Key words: EVA R-GRID, Cluster, Linux, Windows, dual boot, Boot Manager.
8
Universidad El Bosque - Facultad de Ingeniería de Sistemas
I. INTRODUCCIÓN EVA R-GRID[1] es el macroproyecto creado por el equipo de investigación en software libre (EQUIS), de la Facultad de Ingeniería de Sistemas de la Universidad El Bosque. Tiene como fin un Cluster diseñado con los computadores personales ubicados en las salas de cómputo de la Facultad de Ingeniería de Sistemas, que en primera instancia será utilizado como herramienta para el aprendizaje del sistema operativo Linux. La idea global de EVA R-GRID es tomar los computadores personales de las salas de cómputo los cuales se encuentran operando bajo sistema operativo Microsoft Windows XP Professional y de manera automática reiniciarlos para que queden operando en sistema operativo Linux. Una vez en Linux, el Cluster tomará control de estos equipos agregándolos como nodos propios. Cuando un usuario requiere usar un computador personal de éstos para trabajar en Microsoft Windows XP Professional, dicho computador deberá ser retirado del Cluster y reiniciado nuevamente en este sistema operativo. Existen dos sub-proyectos de EVA R-GRID los cuales hacen dichos procesos, estos proyectos son: “Desarrollo de un prototipo de aplicación que permita pasar del sistema operativo Linux al sistema operativo Windows™ con una combinación de teclas.”[3] y “Diseño e implementación de un software de planificación para cambiar el sistema operativo de Windows a Linux para generación dinámica de nodos de un Grid”[2]. Ambos proyectos requieren trabajar con el inicio de los computadores para controlar los cambios automáticos de sistema operativo, este trabajo se hizo en conjunto, ya que el correcto funcionamiento de uno no necesariamente significaba el correcto funcionamiento del otro. Este proceso se realizó dividiendo el disco duro en; una partición FAT, las particiones que corresponden a Linux (/boot, /(root), swap) y una partición NTFS. La partición FAT se utilizó en común para alojar los archivos de inicio de ambos proyectos. La razón para que esta partición sea FAT es por que era el único sistema de archivos que podía ser accedido desde ambos sistemas operativos. Por esto, el objetivo de iniciar el proyecto [3] fue probar la posibilidad de desarrollar un prototipo de aplicación en Linux para hacer el cambio de sistema operativo a Windows®, por medio de una combinación de teclas aplicando este resultado al proyecto EVA R-GRID.
En este artículo se reportan los resultados de las pruebas y las exper iencias recopiladas en el proceso de configuración de un nodo en el contexto del proyecto antes referido. II. EL PROBLEMA En principio no se tenía definido un método de instalación y configuración para los nodos de EVA R-GRID. Algunos computadores de las salas de cómputo de la facultad de Ingeniería de Sistemas tenían instalado solamente Microsoft Windows XP Professional y otros tenían instalado Linux Fedora al mismo tiempo que tenían instalado Microsoft Windows XP Professional, es decir trabajaban dual boot. Se partió del hecho que todos los computadores que iban a hacer parte del Cluster tenían que tener instalados ambos sistemas operativos. Posteriormente surge el interrogante de cómo hacer para que sea posible conseguir un reinicio automático de Microsoft Windows XP Professional a Linux y viceversa [4]. Era necesario permitir que ambos sistemas operativos estuvieran en capacidad de acceder con permisos de lectura y escritura la partición del sistema operativo que tuviera el control de inicio del computador, con el fin de que ambos pudieran hacer el cambio en los archivos de inicio para así modificarlo e intercambiar los sistemas operativos. Lo primero que se intentó para conseguir dicho reinicio fue instalar primero Microsoft Windows XP Professional y posteriormente Linux. Cuando se hace en este orden el sistema operativo que queda con el inicio predeterminado es el último que se instala, en este caso Linux. Entonces era necesario modificar el boot Loader (Grub) de Linux para agregar en el menú de éste la ubicación donde se encont raba ins t a lado Micros oft Windows X P Professional. De este modo ya se podía escoger cualquiera de los dos sistemas operativos en el inicio. Pero con este esquema surge un problema: cuando se esta trabajando en Microsoft Windows XP Professional y se quiere hacer el cambio automático a Linux, no es posible ya que Windows tendría que acceder la partición boot de Linux, y Windows no tiene la capacidad de acceder a las particiones de Linux. Debido a esto se optó por hacer una instalación primero de Linux y posteriormente de Windows. Como se mencionó arriba, el inicio queda controlado por el último sistema operativo que se instala, en este caso Windows. Con este método se presentaba el mismo problema del caso anterior ya que Linux no tiene la capacidad de acceder a las particiones de Windows.
Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007
III. LA SOLUCIÓN
a. FAT de 30 MB
Como consecuencia a todo esto fue necesario buscar un sistema de archivos que pudiera ser accedido por ambos sistemas operativos, para este caso fue el sistema de archivos FAT. La idea era crear una partición FAT que alojara los archivos de inicio de ambos sistemas operativos con el fin que estos pudieran modificarlos a voluntad.
b. /boot de 100 MB
Como el ambiente en el que se trabajaba ya tenia ambos sistemas operativos instalados se decidió hacer uso del software Norton Partition Magic 8.0, el cual se instalaba en Windows con el fin de crear la partición FAT desde este. Dicho proceso fue exitoso desde el punto de vista que se tenían las particiones de Linux, las de Windows y la FAT que compartiría el inicio. El problema en este caso era que aunque se copiaran los archivos de inicio a la partición FAT el computador continuaba buscando los archivos de inicio en la partición que había sido configurada por última vez en el Master Boot Record, es decir, continuaba iniciando el sistema operativo instalado más recientemente. Para dar solución a lo anterior surge la idea de modificar el Master Boot Record del disco duro haciendo que este apunte el inicio a la partición FAT. Pero acá surgía un nuevo inconveniente el cual era la gran probabilidad de dañar el Master Boot Record[5] lo que dejaría inservible ambos sistemas operativos y conllevaría a formatear el disco duro para darle utilidad nuevamente. Así, entonces, se descartó la idea de modificar el Master Boot Record, así como el uso del Norton Partition Magic 8.0 para la creación de la partición FAT. Entonces se ve la necesidad de encontrar un método que copie los archivos de inicio de alguno de los sistemas operativos en el momento de la instalación, así el Master Boot Record queda apuntando a esta partición desde un principio y no se tenga que recurrir a métodos alternos. Analizando cual de los dos sistemas operativos tiene los archivos de inicio que era mas conveniente manipular, se llega a la conclusión que es Windows, ya que entre sus archivos de inicio el que controla como se inicia el sistema, es un archivo de texto plano llamado boot.ini que básicamente contiene un listado de los sistemas operativos instalados y la ubicación de estos. Teniendo en cuenta todas las pruebas anteriores, se decide instalar primero Linux. VI. PASOS DE LA SOLUCIÓN 1. Desde el instalador de Linux, cuando se llega al paso donde el instalador va a crear las particiones, se escoge la opción manual o personalizada y se proceden a crear las particiones en el siguiente orden y tamaño:
c. / (directorio raíz) a discreción del usuario. d. SWAP se recomienda menor o igual a 1.5 veces el tamaño de la memoria física. e. Se deja un tamaño libre y suficiente para instalar Microsoft Windows XP Professional. 2. Después se continúa con la instalación normal de Linux. 3. Cuando se termina la instalación de Linux, el Master Boot Record apunta al inicio del sistema, a la partición /boot de Linux. 4. Se inicia la instalación de Microsoft Windows XP Professional, teniendo en cuenta que la partición FAT de 30 MB se convertirá en el disco C de Windows y la que se dejó libre cuando se instaló Linux se convertirá en el disco D del mismo. 5. Se selecciona instalar Windows en la partición D, donde luego el sistema pregunta primero qué sistema de archivos se debe dejar la partición C al formatearla, y luego pregunta el tipo de sistema de archivos que se debe dejar al formatear la partición D. 6. La partición C se formatea, desde este instalador, nuevamente en FAT y la D en NTFS. 7. Se continúa con la instalación de Windows en el disco partición D, a pesar de haber escogido este disco: • Windows copia los archivos de inicio en la partición C. • El Master Boot Record del disco duro queda apuntando a C (partición FAT). • El resto del sistema operativo queda alojado en la partición D. Así, entonces se tiene la partición FAT con los archivos de inicio de Windows pero que ahora pueden ser modificados tanto desde Linux como desde Windows. Los archivos de inicio alojados en la partición FAT son: • boot.ini • CONFIG.SYS • IO.SYS • MSDOS.SYS • NTDETECT.COM • ntldr • pagefile.sys
9
10
Universidad El Bosque - Facultad de Ingeniería de Sistemas
El archivo boot.ini es el que va a hacer modificado por ambos sistemas operativos.
V. CAMBIO DEL ARCHIVO BOOT.INI PARA HACER EL PASO DE LINUX A WINDOWS.
Boot.ini contiene la información correspondiente al sistema operativo que se inicia por defecto; así como una lista de los sistemas operativos que están disponibles en el administrador de inicio. Cuando solo está instalado Windows, el contenido del archivo es como se muestra a continuación.
Cuando el sistema inicia en Linux, el archivo boot.ini tiene el campo default en c:\boot.lnx, lo que quiere decir que cada vez que reinicie el sistema seguirá cargando siempre Linux. En ese momento es cuando se requiere que el Script que haga el cambio automático dentro del archivo a: multi(0)disk(0)rdisk(0)partition(1)\WINDOWS para que en el próximo reinicio el sistema cargue Windows™.
[boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsof t Windows XP Professional" /fastdetect /NoExecute=OptIn
Un Script creado con el Bash de Linux es el encargado de hacer este cambio en el campo default del archivo boot.ini. Este script se corre en el momento de iniciar Linux y cabe recordar que se hace en los niveles de inicio 2,3 y 5, los cuales son los más comunes entre los usuarios de Linux. Esto se hace, para que sin importar en que nivel inicie el usuario, se pueda asegurar que el script va a correr y que el sistema reiniciará la próxima vez en Windows.
De esta forma el usuario no ve ningún menú debido a que solo hay un sistema operativo instalado. Para que aparezca el menú que permite escoger con cual sistema operativo se requiere iniciar, debajo de “operating systems” deben existir al menos dos. Una vez aparece el menú, este permite que el usuario escoja con cual quiere iniciar dándole un tiempo para que realice esta operación. Este tiempo es determinado por el “timeout”. Si un usuario no escoge ningún sistema operativo para iniciar el computador, el sistema operativo configurado en “default” cargará automáticamente cuando el tiempo se agote. Se hará una modificación a este archivo, agregando la ruta del archivo boot.lnx, el cual en ese momento estará local en la partición FAT. El archivo boot.ini quedará entonces así. 1. [boot loader] 2. timeout=30 3. default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS 4. [operating systems] 5.multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Micros o f t Win do ws X P P r o fe s s ion a l " / fa s t de te c t /NoExecute=OptIn 6. C:\boot.lnx=”LINUX”
VI. FUNCIONAMIENTO DEL SCRIPT En la partición FAT se alojan los archivos de inicio del computador. EL archivo boot.ini tiene dos posibles estados: Estado 1: [boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsof t Windows XP Professional" /fastdetect /NoExecute=OptIn c:\boot.lnx=”LINUX” En este estado el computador siempre inicia por defecto en WindowsTM. Estado 2: [boot loader] timeout=30 default= c:\boot.lnx [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsof t Windows XP Professional" /fastdetect /NoExecute=OptIn c:\boot.lnx=”LINUX”
Donde la sexta línea significa simplemente la ruta del archivo de arranque y lo que esta entre comillas es el título que va a aparecer en el menú.
En este estado el computador siempre inicia por defecto en Linux.
Posteriormente en el proyecto, el prototipo efectuará constantemente un cambio en el campo “default” del archivo boot.ini a: multi(0)disk(0)rdisk(0)partition(1)\WINDOW, para que cuando el computador se reinicie, cargue en Windows™ en vez de Linux.
Teniendo en cuenta que el computador siempre buscará el archivo boot.ini en el inicio, y que se debe cambiar la línea default dentro de este, la forma más sencilla de hacerlo es teniendo dos copias de boot.ini con diferentes nombres y cada uno configurado con uno de los estados arriba mencionados. Es decir, se crean copias llamadas bootl.ini
Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007
y bootw.ini, y están configuradas como en los dos estados mencionados anteriormente; el primer estado para el archivo bootW.ini y el segundo estado para el archivo bootl.ini: Lo que hace el script cuando es ejecutado es simplemente reemplazar el contenido de boot.ini por el contenido de bootw.ini, para así asegurar que en el próximo reinicio será cargado Windows™ y no Linux. Teniendo en cuenta que en el paso de Windows a Linux se cambió el archivo boot.ini por bootl.ini explicado en [2]. El script en Linux, es un código en Bash que se ha creado en un archivo denominado ChangeBootL2W. El Script contiene un comando que copia un archivo al otro. EL código es: #!/bin/bash cp -f /mnt/DOS/bootW.ini /mnt/DOS/boot.ini ChangeBootL2W es un archivo plano que contiene el código y debe ser convertido a un ejecutable con el fin que pueda ser cargado en el momento del inicio como un demonio. Para volverlo ejecutable se debe correr el siguiente comando: chmod 700 ChangeBootL2W Ya como ejecutable ChangeBootL2W debe ser copiado en la siguiente ruta, que es necesario para la ejecución del script en tiempo de inicio: /etc/rc.d/init.d Luego teniendo en cuenta que ChangeBootL2W será ejecutado en los niveles 2, 3 y 5 de inicio de Linux, se debe hac er un enlac e simb ólico en la s c a r p et a s correspondientes a esos niveles (/etc/rc.d) respectivos. Es decir se ubica en rc2.d y se hace lo siguiente: Ln -s/etc/rc.d/init.d/ChangeBootL2W S95ChangeBootL2W Hay que tener en cuenta que para el ejemplo, S95 era un campo disponible. Es decir, en esa posición se pudo ubicar a ChangeBootL2W para que cargara. Si en caso real S95 esta siendo utilizado por otro demonio, se debe escoger otra posición que esté desocupada procurando que sea de las últimas. Este mismo paso se debe repetir para los niveles 3 y 5 cuyas carpetas serán rc3.d y rc5.d respectivamente.
Así queda el script corriendo cada vez que el computador es iniciado en Linux en cualquiera de esos tres niveles de inicio. Por último, vale la pena decir que el cambio de Windows a Linux fue desarrollado en el proyecto de grado “Diseño e implementación de un software de planificación para cambiar el sistema operativo de Windows a Linux para generación dinámica de nodos de un Grid” [2]. CONCLUSIÓN En el desarrollo del proyecto “Desarrollo de un prototipo de aplicación que permita pasar del sistema operativo Linux al sistema operativo WindowsTM con una combinación de teclas” así como en el proyecto de grado “Diseño e implementación de un soft ware de planificación para cambiar el sistemas operativo de Windows a Linux para generación dinámica de nodos de un Grid”, se tenían unos objetivos claros, pero existían pasos intermedios como los que se menciona en este artículo, el cual pese aparentar ser algo muy sencillo requirió del trabajo en conjunto de ambos proyectos para la puesta a punto que permitiera la correcta consecución de cada proyecto sin afectar el otro. No es de importancia si en el momento de instalar Windows se escoge la partición C ya que por el tamaño tan pequeño el instalador siempre lo instala en la partición D, lo que si se debe tener en cuenta en el momento que el instalador solicite el formato de las particiones, es tener la precaución y asegurarse de formatear la partición C en FAT y la partición D en NTFS. De lo contrario Linux no podrá acceder a la partición D. REFERENCIAS [1] BURBANO, Daniel; SABOGAL, Guiovanna y ORGANISTA, Pedro. Entorno Virtual de Aprendizaje Remoto sobre Grid, EVA R-GRID en Revista de Tecnología. v.5, No.1 (EneroJunio 2006); p. 13-20 [2] GUZMAN, Cesar. Diseño e implementación de un software de planificación para cambiar el sistemas operativo de Windows a Linux para generación dinámica de nodos de un Grid. Bogotá D.C., 2006. Trabajo de grado (Ingeniero de Sistemas). Universidad El Bosque. Facultad de Ingeniería de Sistemas. Área de Telecomunicaciones. [3] LOZADA, Fabian; ANGARITA, Maria Paula. Desarrollo de un prototipo de aplicación que permita pasar del sistema operativo Linux al sistema operativo WindowsTM con una combinación de teclas. Bogotá D.C., 2007. Trabajo de grado (Ingenieros de Sistemas). Universidad El Bosque. Facultad de Ingeniería de Sistemas. Área de Telecomunicaciones. [4] SCHWENZFEGER, George. Setting up a Dual Boot with Win XP and Linux using the GRUB Loader (online). Abr. 2002
11
12
Universidad El Bosque - Facultad de Ingeniería de Sistemas
(consultado 1 Dic. 2006). http://www.devhood.com/tutorials/tutorial_details.aspx?tut orial_id=405 [5] The PC Guide, Máster Boot Record (MBR), Jul. 2005 (consultado 22 Nov. 2006), Http://www.pcguide.com/ref/hdd/file/structMBR-c.html
Artículo de Investigación Científica Tecnológica. Sometido a Arbitraje. Los Autores Daniel Alberto Burbano Sefair Docente de la Facultad de Sistemas de la Universidad El Bosque. Ingeniero electrónico, MCpE Ingeniería Eléctrica y Computadoras. Miembro de Equipo de Investigación en software Libre, Coordinador línea Grid computing. danielburbano@unbosque.edu.co María Paula Angarita Arz Ingeniera de Sistemas de la Universidad El Bosque. Gerente de Producto División de Soluciones Avanzadas. MPS Mayorista de Colombia S.A. mapyangarita@yahoo.com Fabián Adolfo Lozada Mariño Ingeniero de Sistemas de la Universidad El Bosque. Server Administrador. CCE Technical Services. falmoon@yahoo.com
Métricas de Similitud para Búsqueda Aproximada Juan Felipe García
Resumen
Abstract
En el presente artículo se presentan las distancias que han venido apareciendo como medidas y unidades utilizadas en la búsqueda aproximada, donde estas métricas definen los k errores admitidos en la comparación o búsqueda de un patrón p en un texto tt. Esta recopilación del estado del arte en métricas de similitud, muestra una explicación de las diferentes y más usadas distancias incluyendo algunos algoritmos de relevancia para el cálculo de dichas distancias y de búsqueda aproximada utilizando esas mismas métricas. Esta presentación pretende mostrar un paralelo comparativo entre las diferentes distancias a la vez que una nomenclat ur a que p er m it a la estandardización en pro de la inclusión de diferentes distancias y excluya los términos ambiguos utilizados hasta ahora.
This paper shows the different distances that represents the maximus k errors allowed when approximate stringn matching is done. This paper also introduces an explanation of the most used algorithms and the actual ones as well. The goal of the present work is to show a comparative survey of the actual metrics used in approximate string matching and a standard way to use the terms that have growing in number and in complexity.
Palabras claves: Búsqueda aproximada de texto, distancias de edición, reconocimiento de patrones.
Key words: Approximate string matching, edit distances, pattern recognition.
14
Universidad El Bosque - Facultad de Ingeniería de Sistemas
I. INTRODUCCIÓN Este trabajo tiene como objetivo mostrar el estado del arte de la búsqueda aproximada desde el punto de vista de las distancias entre las cadenas de caracteres de texto. La búsqueda aproximada es un tema muy estudiado y activo, que consta del intento por encontrar el número de apariciones de determinado patrón en un texto permitiendo un cierto número de diferencias o errores. Existen varios trabajos anteriores sobre el estado del arte [6]-[23]-[34]; el presente t rabajo no pretende remplazarlos, sino complementarlos dando una visión y panorama general desde el punto de vista clasificatorio de las distancias que se han trabajado como medida de los errores entre determinados textos diferentes; hasta ahora el panorama se ha dado generalmente por la forma o método tal que los algoritmos se ocupan de los problemas asociadas a diferentes distancias, estas distancias son las métricas que permiten enumerar las diferencias o similitudes y poder llegar a cuantificar la búsqueda, contando las operaciones de edición necesarias para convertir una cadena en otra. En el presente artículo se pretende mostrar los algoritmos utilizados y reconocidos hoy en día para las diferentes distancias, muy generalmente, con el ánimo de buscar parecidos y patrones entre las soluciones planteadas a una distancia en particular, así como entre las diferentes distancias. Se tratan las distancias más reconocidas, así como también, unas distancias menos trabajadas, pero importantes al intentar ver similitudes entre diferentes tipos de problemas.
sencillez, que resuelva el problema para esa distancia. Las secciones finales abordarán las conclusiones y algunos resultados experimentales presentados por los autores, las conclusiones también abarcan una mirada a algunas posibles direcciones que el trabajo en esta área puede tomar. Julio de 2007 II. DEFINICIONES El problema que nos atañe durante estas páginas es la búsqueda aproximada de texto, más conocido por su nombre en inglés: “Approximate String Matching” [34], que es la búsqueda de una cadena de caracteres en otra donde se admite un número máximo de errores, más específicamente se tratará las distancias entre cadenas de caracteres. Como es común en todas las disciplinas, este problema contiene un lenguaje específico que se ha ido acuñando con el pasar del tiempo y el avance del estudio y las investigaciones en este campo. Así, en esta sección se mostrarán y definirán algunos conceptos necesarios para la mejor concepción del campo de estudio, incluyendo el presente artículo. Así se presentan una serie de conceptos, mostrando una nomenclatura que permita su correcta interpretación, es basada en la utilizada por la mayoría de los autores citados en este trabajo, pero principalmente en [7], que presenta una muy buena estandarización y definición.
Figura 1. Contenido del documento
1) Alfabeto: Es un conjunto finito de símbolos, donde cada símbolo representa una unidad e independencia de los otros símbolos. Estos símbolos, también llamados caracteres, no se repiten en el mismo alfabeto y son representados irrepetiblemente por una gráfica y un número binario determinado. Al referirse a un alfabeto se utilizará la letra griega sigma mayúscula (E), y su representación por extensión contendrá los símbolos o caracteres que lo componen separados por comas entre corchetes. El alfabeto comúnmente utilizado en las cadenas de ADN se representaría así: E = {A, C, G, T}.
En la Figura 1 se puede ver la organización que lleva este documento. La siguiente sección tratará de las definiciones y el glosario de conceptos utilizados en el presente trabajo donde se define la nomenclatura particular de cada término; esto también como objetivo de este trabajo, que pretende generar una estandarización de nomenclaturas y conceptos en este tema. En la sección tres se encontrarán las diferentes distancias y sus explicaciones que también pretende estandarizar a cual asociar ciertos problemas. La sección cuatro trata algunos de los algoritmos relevantes a través de la historia de dichas distancias y la explicación de uno o más algoritmos actualmente aceptados, ya sea por su complejidad o
2) Cadena de caracteres: Es un conjunto finito de símbolos que pertenecen a determinado alfabeto. Se representarán por sus símbolos seguidos y en letra cursiva, es posible identificarlos mediante un nombre en letras minúsculas que se le asigna mediante el símbolo igual, ej., cad=“AAACCCTTTGA”. El número de caracteres o símbolos de determinada cadena se especifica mediante el nombre de la cadena con dos barras verticales, una al inicio y otra al final del nombre, ej., |cad|=11. También es posible representar una cadena que haga parte de otra que no necesariamente contenga toda la extensión de la cadena original indicando los índices iniciales y finales entre paréntesis cuadrados como sub-índice al nombre de la cadena, ej. teniendo la cadena = “hola mundo” también la podemos escribir como: cadena = cadena[1:::10] y si se
Introducción Aplicaciones
Distancias de Edición
Distancias Conclusiones
Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007
desea obtener una sub-cadena es posible notarla como cadena[6:10] = “mundo”. Así un sub-índice representa una sub cadena o un único carácter, es decir, cadena2 = 'o', y cadenai representa el i-ésimo carácter de la cadena. También es posible hacer repeticiones de caracteres en una cadena mediante el super- índice que denotaría el número. 3) Patrón, texto y errores: Patrón es la cadena de caracteres que es buscada en un texto, es un patrón porque también se buscan sus similitudes, es decir las cadenas o sub-cadenas contenidas en el texto, que no siendo idénticas al patrón se pueden convertir en él haciendo una serie de operaciones; si se le asigna determinado peso a cada operación realizada, la suma de estos pesos se definen como errores. El patrón se denota con la letra p minúscula, ej., p=“ACG”; el texto con la letra t minúscula, ej, t = “ACCCGGGAGGGGAGGTTTT”, y finalmente el número de errores permitidos se denota mediante la letra k minúscula, ej., k = 3. Estos errores hacen referencia a una diferencia específica entre el texto y el patrón, esto es, que en el i-ésimo carácter de ambas cadenas se encuentren diferentes símbolos. 4) Alineamiento y transcripción: Son términos usados por varios autores [12]. El alineamiento busca una forma de representar una transformación de una cadena en otra y la transcripción presentar la información necesaria de como se transforma una cadena en otra. En otras palabras, es la secuencia de operaciones de edición, tales que, se transforma una cadena en otra [4]. 5) Distancia o métrica de similitud: Las operaciones, que serán explicadas a profundidad en esta sección, poseen un peso que será adicionado a un contador cada vez que se realice una de estas operaciones y llevará registro de la distancia entre una cadena y otra. Dependiendo de las operaciones permitidas las distancias toman nombre y serán el objeto de estudio en el presente trabajo, se presentará una sección completa destinada a enumerar y explicar diferentes métricas Es importante anotar que la distancia conocida como “Levenshtein” también es conocida, generalmente, como distancia de edición, para evitar ambigüedades, en este texto se referirá a esta distancia como “distancia Levenshtein”. 6) Búsqueda Exacta: Cuando se tienen dos cadenas de caracteres de longitud mayor a cero y un alfabeto común, un problema típico surge de la necesidad de encontrar una de las cadenas en la otra y el número de esas ocurrencias. A ese problema se le suele llamar búsqueda exacta, es decir, la búsqueda de un determinado texto en otro sin admitir ningún tipo de error. 7) Búsqueda Aproximada: Es la búsqueda de una cadena en otra donde se admite un número determinado de errores, estos errores son delimitados por las operaciones
descritas más adelante en este documento. Es una variación de la búsqueda exacta en la que un buen número de disciplinas ha encontrado una herramienta para la búsqueda de ciertos patrones donde la búsqueda exacta no ofrece una solución satisfactoria. Se encuentran varias adaptaciones y variaciones dependiendo de lo que se busca y las restricciones, ej., Si se codifican los textos y en uno de ellos se utiliza un alfabeto binario se habla de una clase de búsqueda aproximada parametrizada [1], visto de otra forma es la búsqueda definida por cadenas parametrizadas como Brenda Baker define en [3], tipos de cadenas como una serie de construcciones a partir de diferentes alfabetos. 8) Búsqueda probabilística de proximidad: Este término muy utilizado desde las bases de datos multimediales hasta la predicción de funciones, pasando obviamente por la bioinformática y afines, se define como la búsqueda para espacios métricos, donde casi todos los trabajos existentes se refieren a búsqueda exacta, en este espacio las métricas son particulares e informativo para el lector, pero este trabajo se centra en la búsqueda aproximada [8]. 9) Operaciones de Bits: Algunos algoritmos basan su funcionamiento en operaciones con bits, en este artículo sólo se utilizarán dos valores lógicos para la representación de un bit. El valor verdadero se representará con un cero y el falso mediante el uno. Las operaciones serán referidas mediante los siguientes símbolos: • Negación: También conocida como complemento, se utiliza cuando se desea obtener el inverso lógico de uno o una serie de bits y se denotará por el símbolo “~” antes del identificador del bit o de la palabra de bits, ej., val = 000110, ~ val = 111001. • Conjunción Lógica: Conocida como el “y” lógico, y hace referencia a la obligatoriedad de bits verdaderos para obtener una salida verdadera. Se representara mediante el símbolo ampersand (&) y su tabla de verdad se encuentra en la Tabla I. • Disyunción Lógica Inclusiva: Conocida como la “o” lógica, y hace referencia a la validación como verdadero a partir de uno o más bits verdaderos. Se representará mediante una barra vertical (|) y su tabla de verdad se encuentra en la Tabla II. • Disyunción Lógica Exclusiva: Conocida como la “o exclusiva”, y hace referencia a la validación como verdadero a partir de un solo bit verdadero. Se representará mediante el símbolo y su tabla de verdad se encuentra en la Tabla III.
15
16
Universidad El Bosque - Facultad de Ingeniería de Sistemas
• Desplazamiento: Corresponde al corrimiento en un bit. Puede realizarse en sentido izquierda-derecha o derechaizquierda y se rellena con determinado bit. Se denota con dos símbolos mayor-que o menor-que mostrando la dirección del desplazamiento, y la representación de un bit del lado de abertura del símbolo, este bit será el que llene el último espacio que ha quedado vacío después del corrimiento, ej., si se tiene la palabra de bits pal = 101010 entonces la operación de desplazamiento a la derecha con relleno de cero sería representado así: 0 »pal = 010101, y la operación de desplazamiento a la izquierda con relleno de uno se representaría de la siguiente forma: pal«1 = 01011. TABLA I. Tabla de verdad para la conjunción lógica
bit a bit b a & b 0 0 0 0 1 0 1 0 0 1 1 1 TABLA II. Tabla de verdad para la disyunción lógica inclusiva
bit a bit b 0 0 0 1 1 0 1 1
a|b 0 1 1 1
reglas, una distancia de edición, el juego consistía en que al dar dos palabras, una inicial y otra final, encontrar un conjunto de palabras tales que formen una cadena de palabras donde partiendo de la inicial sólo sea posible adicionar o remover una letra, cambiar una letra por otra o usar las mismas letras en diferente orden para finalmente terminar la cadena con la palabra final dada. Un ejemplo de este juego se puede observar en la Tabla IV. 1) Inserción: Consiste en agregar un carácter más en una determinada posición de una cadena. Por ejemplo, si se quisiera convertir la palabra MES en MESA, solo bastaría con utilizar la operación inserción con la letra A.
TABLA IV. Ejemplo de Doublet
MORSA MORAS MORA ROMA RAMO AMOR
Palabra Inicial Transposición de letras Supresión de la letra S Transposición de letras Transposición de letras Transposición de letras
molar
cola 2
hola
TABLA III. Tabla de verdad para la disyunción lógica exclusiva
bit a bit b a b 0 0 0 0 1 1 1 0 1 1 1 0 A. Operaciones comunes Las operaciones que se describen a continuación, son las unidades que definen las diferentes distancias, cada distancia contiene una o más de las siguientes operaciones y es el diferenciador de esa distancia. En 1879 Charles Lutwidge Dogson1 inventó un juego al que llamó “doublet” [29], este problema ya definía, por medio de sus 1 Charles L. Dogson es conocido por ser el autor de varios libros, entre ellos, Alicia en el País de las Maravillas, bajo el seudónimo de Lewis Carroll.
1
2
toma
1
ola
Figura 2. Distancia usando la métrica Levenshtein 2) Eliminación: Consiste en quitar un carácter determinado de una cadena. En el ejemplo de Doublet en la Tabla IV se puede observar como para transformar la palabra en plural MORAS a su forma en singular, se utiliza la operación de eliminación del carácter S. 3) Sustitución: Consiste en cambiar un carácter por otro diferente en una posición determinada del texto. Si se necesitara convertir la palabra ALTO en la palabra ARGO, mediante dos sustituciones es posible; la primer sustitución cambiaría la letra T por la letra G para obtener
Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007
ALGO y a esta nueva palabra mediante otra sustitución obtenemos ARGO gracias a la sustitución de la letra L por la R.
TABLA V. Ejemplo de la distancia Levenshtein
4) Transposición: Consiste en intercambiar un carácter con el siguiente o el anterior, existe también la operación en la cual se traspone todo un bloque de caracteres. III. DISTANCIAS A. Distancia Levenshtein Pese que el término distancia fue acuñado formalmente en un principio por Hamming [29], cuando Vladimir Iosifovich Levenshtein2 definió su concepto de distancia, revolucionaría y encaminaría muchos esfuerzos por solucionar el problema planteado por él. Temprano se iniciaría esta tarea, Fig. 3 [23], pero perdería rápidamente interés el problema de cálculo de la distancia para darle cabida al uso de la distancia en la búsqueda de patrones. Una explicación teórica y formal de esta distancia se encuentra en [4]. Visto de manera simple esta distancia permite inserciones, supresiones y reemplazos todos con costos de uno. Es importante notar que las distancias y los problemas computacionales derivados de esta distancia hace referencia a la búsqueda de la mínima distancia entre dos cadenas, esta distancia es simétrica y se encuentra en la cota: 0 d(x, y) max(|x|, |y|) [23]. En la Tabla V se muestran las operaciones necesarias p a r a conver t ir la c adena A N I V ER SA R IO en UNIVERSALIDAD3. En ese caso la distancia Leveshtein es de cinco, y es computada contando las operaciones requeridas para la transformación, es necesario cambiar la A por la U, la R por la L y la O por la D; además hay que agregar las dos últimas letras, AD. De igual forma en la Figura 2 se observa esta métrica utilizada para diferentes palabras con un mismo patrón. Una variación de esta distancia de edición que es importante anotar, es la normalizada, introducida por Vidal, Marzal y Aibar [33]. Se define como el mínimo cociente entre las suma de los pesos de la operaciones requeridas para transformar una cadena en otra, y la longitud del camino de edición para esas operaciones. Esto es, W(P)|L(P), donde P es un camino de edición entre dos cadenas, W(P) es la suma de los pesos de las operaciones de edición “básicas” en P, y L(P) es el número de esas operaciones, es decir |P|. Otra variación bien conocida además de ampliamente estudiada es la 2 Vladimir I. Levenshtein es un científico ruso nacido en 1935 reconocido por sus trabajos en teoría de la información y por el algoritmo para el cálculo de la distancia que lleva su nombre. 3 Es bueno observar que las distancia Levenshtein es conmutable, esto es, que la distancia es la misma sin importar el orden que se calcule, es decir, d(a, b) = d(b, a).
aceptación de transposición de sub-cadenas, esto es, que si cualquier subcadena se encuentra exactamente o en su forma inversa en otra cadena [2]. Otra variación importante yace en la distancia Levenshtein para gaps, que se basa en dos cadenas de longitud n con algunas restricciones en sus distancias particulares, buscar en cual de estas dos se encuentra un patrón [4]. También es interesante el uso de esta métrica en niveles más altos, como lo son métricas por bloques que reciben inclusive, sus propios nombres, o estructuras de datos, como es el caso de distancias entre árboles ordenados que se encuentra en [26]. B. Distancia de Edición por Bloques Esta distancia referencia directamente la métrica Levenshtein, esto es, que admite adiciones, inserciones y eliminaciones, con la particularidad de no realizar comparaciones entre caracteres, sino entre sub-cadenas completas. Esta característica implica necesariamente la adición de un algoritmo de extracción de tokens que en la mayoría de los casos, propone algoritmos NP-Completos [21]. C. Distancia Hamming Es, quizá, la distancia más sencilla y prácticamente contenida en todas las otras distancias, simplemente se permite solo reemplazos y se les da un costo de uno es importante notar que esta distancia está definida únicamente entre cadenas de igual longitud. Así esta distancia tiene un límite superior en las longitudes de las cadenas, en la Figura 4 se ven cadenas con distancias entre la unidad y la longitud de la cadena.
17
18
Universidad El Bosque - Facultad de Ingeniería de Sistemas
D. Distancia Episodio Es una distancia con la particularidad de no ser simétrica, propiedad que permite la posibilidad de la existencia de una distancia infinita. Esto es causado porque en esta distancia sólo las eliminaciones son admitidas, por lo peculiar de este caso es común que al proceso de búsqueda se le llame: “episode matching”[23], cuando se busca una secuencia de eventos que ocurren en periodos muy cortos, la búsqueda aproximada de esta distancia puede ser una buena aproximación a su modelado. Esta distancia se simplifica a que d(x, y) = (|y| - |x|) | . Esto sucede por la posibilidad de que cierta cadena no pueda ser convertida en otra utilizando solo la operación de eliminación. La Figura 5 muestra unos ejemplos de esta distancia.
Norma
Modal 2
Colada
cola
moda
métrica propiamente dicha retorna la longitud de dicha subsecuencia [18], como se observa en el ejemplo de la Figura 6, en este trabajo el interés es por la métrica, pero para el lector que desee profundizar no sólo en la métrica sino también en la obtención de la cadena es recomendable revisar [10]. En ciertos contextos genéticos toma importancia la búsqueda de un LCS que aparezca por lo menos dos veces en conjuntos de sub-strings, permitiendo inversiones, esto se conoce como el problema de la repetición del LCS [19] - [20].
1
pera
hola
3 2
dado
4
popa
Figura 4. Distancia usando la métrica Hamming
osa
rosa 3
4
rosario 4
mario
Morada
2
4
Ahogala
3
Morsa
Ola
Figura 6. Distancia usando la métrica LCS
2
toga
3
hola
3 2
2
2
Tolva
rio
Figura 5. Distancia usando la métrica Episodio E. Distancia Indel (LCS) Esta distancia es la que permite únicamente inserciones y eliminaciones, es muy conocida por su cercanía a la Levenshtein, esto es debido a que si cambiamos los pesos en la distancia Levenshtein obtenemos esta distancia, solo es necesario utilizar un peso de dos en la sustitución, esto es porque en esta distancia se ve la sustitución como dos operaciones, una eliminación y una inserción [16]. También es conocida como la distancia de la subsequencia común más larga denotada como LCS de la sigla en inglés: “Longest Common Subsequence” [23], pese que la búsqueda de esta sub-secuencia retornaría una cadena, la
F. Q-Grams Este es el nombre que se le da a sub-cadenas cortas de caracteres4 con longitud q, la idea general se basa en que dos cadenas, entre más similares fueren, más sub-cadenas de este tipo compartirán, así utilizando una ventana corrediza que busca las sub-cadenas previamente indexadas en algún tipo de estructura de dato de rápido acceso como una tabla hash, se obtiene una métrica de cuantas veces aparece cierto q-gram en algún trozo del texto y del patrón, generando la distancia. G. SAD y MAD Estas métricas utilizadas cuando la distancia del texto y del patrón son iguales, hacen referencia tanto a la suma como a la distancia diferencial absoluta. Se les da nombre por las siglas en inglés, “Sum of absolute difference distance” y “Maximum absolute difference distance” respectivamente. SAD refiere ha la distancia dada por: E m i=1 |ai - bi|, mientras que la distancia MAD es la generada por: max{|ai - bi||1 i m} [22]. H. Distancia Damerau Si a la distancia Levenshtein se le adiciona la operación de transposición obtenemos esta distancia. Esto es una distancia que admite inserciones, eliminaciones y sustituciones de un carácter de determinada cadena, además también se permite la transposición de un carácter con el siguiente o el anterior en dicha cadena [14]. 4 En otros contextos también se define este nombre, como en procesamiento de voz y computación lingüística[11].
Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007
I. Distancia de Segmento A fín Utilizada cuando la distancia Levenshtein castiga demasiado a otra cadena que realmente suele ser una abreviatura de dicha cadena, se suman dos nuevas operaciones a la distancia Levenshtein como lo son el “segmento abierto” y el “segmento extendido”, se suele utilizar un costo menor para este último segmento, asegurando una penalización menor para cier tas abreviaturas que en la métrica normal [11]. J. Distancia Smith-Waterman Si se ignoran los prefijos y los sufijos de ciertas cadenas, ya tratadas con la distancia de segmento afín se obtiene una distancia menor en casos muy especiales, como en los cuales se está trabajando con tratamientos de nombres, ej., “Dr. Pepito Pérez” y “Pepito Pérez MD.” [11]. K. Distancia Jaro Siguiendo en la misma línea de la comparación de nombres de personas, se encuentra esta métrica que computa los “caracteres comunes” tales que el i-ésimo carácter es igual al j-ésimo carácter donde el valor absoluto de i-j sea menor o igual que la mitad del mínimo entre las longitudes de los dos textos [11]. Además se calcula también, el número de transposiciones de estos “caracteres comunes” como la comparación fallida del iésimo de estos entre las dos diferentes cadenas. L. Distancia Markov Propuesta por Jie Wei [35], e inspirada en la teoría de campos aleatorios de Markov, esta métrica pretende utilizar información “oculta”, que según su autor, yace en los patrones y en los textos que se utilizan en la búsqueda aproximada, tomando ventaja de las dependencias estadísticas de los patrones y sus sub-cadenas encontrando mejoras en la ejecución de los algoritmos. En general en esta distancia se definen ciertas operaciones específicas o se toma otra distancia y se penaliza en mayor o menor grado cada operación dependiendo de los grados de cercanía y vecindad entre posiciones adyacentes tanto en el texto como en el patrón. IV. ALGORITMOS Sin lugar a dudas la computabilidad de estas distancias y de las búsquedas definidas por ellas es un punto obligado a tocar cuando se quiere contemplar un panorama generalizado de la evolución de los algoritmos que resuelven estos problemas; Giovanni Pighizzini muestra cómo es posible computar la distancia de edición efectivamente dependiendo del alfabeto y más particularmente del lenguaje utilizado [28]. Este tipo de medidas son interesantes cuando la búsqueda de nuevos algoritmos necesita los lugares de mayor entropía que obstaculizan un cómputo, en el caso de Pighizzini se concluye la eficiencia computacional mientras el tipo de lenguaje sea aceptado en tiempo polinomial por un
autómata determinado. En esta misma línea, en [25] se encuentra un límite inferior de la complejidad en tiempo mínima en el cálculo de la distancia Levenshtein muy interesante, ya que es calculado a partir del número promedio de caracteres examinados para buscar r patrones aleatorios de tamaño n en un alfabeto uniforme de tamaño o, dando como resultado: (n logo (rm)/m). En general se encuentran dos tipos de algoritmos, los que resuelven el problema del cálculo de la distancia y el que resuelve el problema de la búsqueda acotada por los errores definidos en determinada distancia. Uno de los propósitos de este artículo es buscar similitudes entre las distancias, y una similitud evidente se encuentra en los algoritmos que para varias distancias simplemente se trata de una modificación a algoritmos ya probados en otras distancias. Es por esto que en esta sección se muestran por el tipo de implementación usada y como han evolucionado estas implementaciones hasta resolver el problema utilizando otras distancias. La taxonomía que utilizará este artículo se encuentra en la Figura 7 que es basada en la taxonomía encontrada en [23] y para dar una visión general de los algoritmos se utilizarán ejemplos de matriz dinámica y de su paralelización por bits. En la práctica ya existen algoritmos con muy buenas respuestas en tiempo y en espacio que resuelven muy bien el problema de la búsqueda aproximada, en general son para patrones pequeños, pero tienen un nivel de madurez suficiente para ser utilizados con confianza, un muy buen ejemplo se encuentra en [24]. Como el objetivo central de este documento se refiere a las métricas propiamente dichas no se profundiza en índices o estructuras de datos utilizadas, pero es bueno mencionar que existen algoritmos de esta categoría y bien estudiados [9]. Otro punto que no se menciona en esta revisión, es la posibilidad de entrenamiento de ciertos sistemas, para la búsqueda de distancias, en lo cual se puede profundizar en [30]. A. Programación Dinámica La técnica denominada programación dinámica consiste en reducir el espacio o el tiempo de ejecución de cierto algoritmo mediante la utilización de sub-problemas, es decir, la descomposición de un problema general en problemas más pequeños que al se resueltos de forma independiente, organizan la ejecución, la programación y reducen costos innecesarios de ejecución. Este método se utiliza para tratar con las distancias de edición desde el principio de estudio de este problema, es considerado como el primer algoritmo [23]. 1) Cálculo de la distancia Levenshtein mediante programación dinámica: Este cálculo se basa en el llenado de una matriz mediante programación dinámica que contendrá las distancias para cada prefijo de una cadena t y cada prefijo de una cadena p. Esta matriz, que se le suele dar el nombre D, se computa de la siguiente manera:
19
20
Universidad El Bosque - Facultad de Ingeniería de Sistemas
TABLA VI. Matriz de programación dinámica para el cálculo de la distancia Levenshtein
La distancia Levenshtein entre las cadenas UNIV ERSO y ANIV ERSARIO es cuatro, sólo es necesario intercambiar la primer letra y eliminar o insertar las tres penúltimas letras para transformar una cadena en la otra. La Figura 8 muestra el algoritmo que llena la matriz de programación dinámica para el cálculo de la distancia Levenshtein, la matriz llena se encuentra en la Figura 8. El primer paso según la ecuación (1), es el llenado de la primer fila con el número correspondiente al índice de una de las cadenas, esto se ve en el ciclo de la línea 8.3 y se observa en la fila cero de la Tabla VI, de la misma forma la primer columna es llenada con el índice de la otra cadena que corresponde a la ecuación (2) y se realiza siguiendo el ciclo de la línea 8.13; con esto se ha preparado la matriz para realizar la recursión necesaria. Después se computa cada celda restante dependiendo si es la intersección de una correspondencia de igualdad entre dos letras o no, buscando el mínimo para después adicionarle un peso si es el caso. Una de las ventajas y propiedades que han hecho de esta técnica tan reconocido es la facilidad para transformar el algoritmo del cálculo de la distancia en un algoritmo que calcule el número de ocurrencias del patrón en el texto, simplemente se cambia el algoritmo en el momento de llenar la primera fila, en el caso del cálculo de la distancia se utilizaba el sub-índice de la cadena de texto, en este caso se llena con ceros, línea 9.3 del algoritmo de la Figura 9. Al obtener la matriz dinámica después de ejecutar el algoritmo, se recorre la última fila buscando las ocurrencias menores o iguales al número de errores que se quiera admitir, e.j. en la Tabla VII se encuentra una ocurrencia del patrón GTA sobre el texto terminando en la posición 4, y tres ocurrencias en total con uno o menos errores.
Figura 8. Algoritmo de programación dinámica para el cálculo de la distancia de Leveshtein
Basados en matriz de programación dinámica
Presentados con complejidad en el peor caso Presentados con complejidad promedio
Autómatas finitos Algoritmos
Filtrados
Para patrones moderados Para patrones largos
Paralelismo por Bits Figura 7. Taxonomía de los algoritmos utilizados
Basados en matriz de programación dinámica Basados en autómata
Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007
TABLA VII. Matriz de programación dinámica para búsqueda de ocurrencias mediante la distancia Levenshtein con k 1
B. Paralelización por Bits Este tipo de algoritmos ha sido muy estudiado y es actualmente de los más activos gracias a que este tipo de algoritmos son aceptados entre los mejores en la práctica, ya que en promedio tienen una muy buena velocidad de ejecución. En general, la filosofía de este tipo de algoritmos es basarse en un algoritmo pre-existente y utilizar algún tipo de “fórmula” booleana que permita agilizar la ejecución [23], es importante hacer notar la gran influencia del algoritmo de los cuatro rusos en la búsqueda aproximada5. Particularmente es interesante los ajustes por paralelización para el cálculo de la matriz dinámica y la implementación de autómatas finitos. En general, un algoritmo de este tipo posee dos grandes fases, una donde se preparan los datos, llamada
comúnmente etapa de pre-procesamiento y otra donde se encuentra el algoritmo propiamente dicho, se realizan las operaciones de bits y se le suele llamar etapa de actualización [13] - [15]. Es interesante revisar uno de estos algoritmos, Gene Myers en 1999 presentó un algoritmo para realizar el computo de la matriz dinámica de Levenshtein mediante paralelización por bits, donde de una forma muy elegante, teniendo en cuenta que el patrón buscado sea menor al número de bits capaz de manejar el bus de datos del sistema de computo, obtuvo una solución en tiempo lineal [13]. Hay que recalcar este punto, los algoritmos de paralelización por bits en su complejidad temporal suelen tener un factor, generalmente denotado mediante la letra k, que indica el ancho del bus de datos en bits, a simple vista esto muestra una desventaja, pero es un precio bajo teniendo en cuenta que la razón de esto es que las operaciones realizadas son ejecutadas directamente como operaciones de bits en la unidad aritmetológica del procesador, y a su vez, esta es la razón por la cual estos algoritmos tienen tan buen desempeño en promedio, estas operaciones son las que se ejecutan más rápidamente en el sistema de computo. Por otro lado y teniendo en cuenta que los sistemas de computo de hoy en día son de 32 y 64 bits, se obtiene una solución muy buena para los problemas que se desean resolver actualmente. TABLA VIII. Vectores binarios del agoritmo de Myers
Figura 9. Algoritmo de programación dinámica para el cálculo del número de ocurrencias de búsqueda aproximada para la distancia Leveshtein 5 Vladimir El algoritmo de los cuatro rusos, llamado así por la nacionalidad de sus cuatro autores: V. L. Arlazarov, E. A. Dinic, M.A. Kronrod e I. A. Faradzev; quienes n3 encontraron un método para multiplicar matrices en tiempo O( ) siempre y log2(n) cuando sean matrices booleanas.
Este algoritmo parte de la observación de la matriz de programación dinámica para el cálculo de la distancia de edición D, donde las celdas adyacentes y diagonales no poseen una diferencia mayor a uno, esto es, Di,j - Di-1,j-1 = 0 ó 1, para las celdas y diagonales, y para las celdas adyacentes: Di,j - Di,j-1 = -1; 0 ó 1 y Di,j - Di-1,j = -1, 0 ó 1. Gracias a esta observación se encontró la forma de codificar la matriz entera en vectores binarios que suele llamarse: “codificación delta”. Estos vectores se encuentran en la Tabla VIII y su significado en muy claro, guardan los valores donde las diferencias de adyacencia o diagonal valen 1, 0 ó -1; mediante la “bandera” positiva, es decir, para cada caso guardan un uno según su propiedad. Es claro que es sencillo reconstruir la matriz dinámica a partir de estos vectores codificados, si se saben los valores iniciales de la matriz, fácilmente se pueden seguir los vectores y realizando las operaciones aritmetológicas necesarias construir la matriz, lo importante es que estas operaciones se realizan con bits directamente y la unidad aritmetológica las puede realizar sin problemas. Un ejemplo de estos vectores se encuentran en la Tabla IX, donde están los que
21
22
Universidad El Bosque - Facultad de Ingeniería de Sistemas
corresponden a la columna 11 de la matriz que ya se había calculado en la Tabla VII para las ocurrencias en la matriz dinámica tradicional. El algoritmo se encuentra en la Figura 10, se divide fácilmente entre el preproceso y la etapa de búsqueda, en esta última es importante notar las operaciones aritmetológicas de construcción de la matriz y como sólo existe un ciclo para realizarlas que dará una complejidad lineal en función de la longitud del texto. Este algoritmo es una versión de [13], donde se muestra una variación del algoritmo de Myers para los casos en que la longitud del patrón es menor o igual a la longitud en bits del bus de datos del sistema computacional pero es una gran ayuda para entender el funcionamiento del algoritmo. TABLA IX. Codificación delta para la columna 11 de la Tabla VII
V. APLICACIONES En los últimos años las aplicaciones de la búsqueda aproximada ha ido creciendo hasta llegar a un punto de madurez y de gran complejidad. La aplicación vanguardia siempre ha sido en al campo de la biología y sus necesidades bio-informáticas, cada vez más crecientes, sobre todo en el procesamiento de cadenas de ADN. Igualmente el problema combinatorio ha sido estudiado y utilizado en una gran número de disciplinas, desde el procesamiento digital de imágenes, la minería de datos e inclusive la inteligencia artificial. Pero nunca dejando de lado el simple gusto por la solución, optimización y estudio del problema meramente computacional. Pese que las aplicaciones de la búsqueda aproximada crecen cada día, una motivación siempre latente es la simple resolución del problema computacional y el estudio de sus respuestas a diferentes algoritmos tanto prácticos como teóricos. A. Bio-Informática Actualmente las cadenas de ADN se representan como cadenas lineales muy extensas, que mediante un alfabeto de tan sólo cuatro símbolos, se logra representar el código genético de los seres vivos. Nace la necesidad de comparar diferentes cadenas de ADN, una primera aproximación al problema es utilizar búsqueda exacta con el fin de comparar las cadenas, rápidamente se observa que no es una solución adecuada al analizar un poco más a fondo el contexto del problema; las cadenas de ADN pueden diferir un poco unas de otras y ser lo suficientemente similares como para reportar una concordancia positiva.
B. Reconocimiento de patrones Teniendo en cuenta la facilidad para representar distintos tipos de datos mediante cadenas de texto, p.e. imágenes, la búsqueda aproximada toma una importancia valiosa en este campo [5], también esto es visible en la musicología, donde el reconocimiento de patrones mediante estas técnicas se ha incrementado mucho en los últimos años. C. Procesamiento de señales El reconocimiento del habla ha sido uno de las aplicaciones que han tomado herramientas de las distancias de edición y en general de la búsqueda aproximada. El problema, visto simplemente, es determinar a partir de una señal de audio dada, el mensaje que se está transmitiendo. El intento obvio de realizar una comparación exacta decae cuando se observa que es muy posible que la transmisión del habla por muchas razones técnicas suele encontrase compreso y la forma de hablar implica la posibilidad que parte del mensaje no sea pronunciado[23]. El primer paso fue dotar de costo las sepa raciones o sim ila r idades ent re diferentes reconocimientos de mensajes recibidos, en función del error en la línea de transmisión se ha usado la distancia Levenshtein, ahora con el crecimiento de la necesidad de reconocimiento y clasificación de patrones estas técnicas y métricas toman la forma de una buena herramienta a explorar. D. Comparación de Archivos Los archivos en general son flujos de bits, que por su particularidad es sencillo leerlos en tramas de bytes y codificarlos en determinado alfabeto, es decir, es sencillo ver cualquier archivo como una serie de bytes y su codificación es sencilla. En el momento de realizar una comparación exacta, existen múltiples algoritmos que realizan la tarea en forma muy veloz, pero muchas veces es importante obtener indicadores de cambio y una medida de cercanía entre archivos, esto se realiza muy bien mediante la búsqueda aproximada en texto, ya que presta ambos servicios en el mismo tiempo. E. Corrección de Texto Es posiblemente una de las aplicaciones más antiguas y de la cual no es bueno olvidarse, teniendo en cuenta que el problema combinatorial de encontrar palabras “cercanas” a las que se están escribiendo podría incurrir en computaciones de distancias redundantes [17], sin contar solo la búsqueda exacta en un diccionario que desencadene la búsqueda aproximada ha tomado fuerza desde que las aplicaciones ofimáticas se convirtieron en un residente obligado de los sistemas de cómputo personales, brindando una ayuda en velocidad y presentación en los escritos a tal punto que se han convertido en indispensables.
Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007
implementaciones, aprovechando la mezcla de varios tipos de distancias de edición. También existen propuestas de realizar conjunciones entre los algoritmos indexados y la búsqueda aproximada [27]. VI. CONCLUSIÓN Y PROPUESTAS DE DIRECCIÓN EN TRABAJOS FUTUROS Se muestra una estandarización tanto en conceptos de métricas como en las nomenclaturas relacionadas. Este trabajo muestra diferentes algoritmos pretendiendo dar una revisión de los problemas encontrados en la búsqueda aproximada utilizando diferentes distancias. Siguiendo esta revisión y estado del arte se encuentra una necesidad de encontrar una generalización de distancias que permita ser más flexible en la búsqueda aproximada sin alterar negativamente la complejidad temporal del algoritmo. Esto es, la búsqueda y el diseño de un algoritmo que permita “castigar” determinadas operaciones con un peso mayor, menor o inclusive cero. Visto de otro punto de vista, un algoritmo polimór fico que pueda ser configurado para realizar búsqueda con diferentes métricas; pero que tenga una complejidad temporal atractiva para su uso en promedio. Figura 10. Algoritmo de Gene Myers de cálculo de la matriz dinámica mediante paralelización por bits modificado por Hyyro para el caso m 6 k
F. Minería de Datos En esta disciplina tan activa actualmente, está naciendo una nueva mirada hacia la utilización de hardware reconfigurable que se encargue de las tareas de interfaz entre los accesos a disco y el ordenamiento de la información solicitada. Estos sistemas que implican, generalmente, múltiples procesadores 6, lo que realmente deben hacer es una comparación basada en cadenas de caracteres, que mediante la búsqueda aproximada programada directamente sobre firmwares, se han encontrado resultados satisfactorios llamativos que están encaminando muchas investigaciones en ese sentido [36]. No solo es una ventaja para la minería de datos esta incursión, la misma estructura de datos física que se utiliza en algunas aplicaciones, como en [32], muestra posibles mejores computacionales que pueden ser aprovechadas para la solución o mejora del problema combinatorial. G. Bases de Datos En muchas aplicaciones de bases de datos, es común encontrar consultas de similitud, esto se suele llamar “Búsqueda de vecino próximo” [31], mediante tipos de índices muy especializados se da una solución a este problema, Sahinalp muestra una serie de resultados que dan cierta ventaja a la búsqueda aproximada sobre otras 6 En muchos casos, este número puede ascender a varias decenas e inclusive a cientos.
REFERENCIAS [1] A. Apostolico, P. L. Erdos, and M. Lewenstein, “Parameterized matching with mismatches,” Journal of Discrete Algorithms, vol. 5, no. 1, pp. 135140, March 2007. [Online].Available: http://www.sciencedirect.com/science/article/b758j4jw1 28c-6/2/ad01648d986bf4e2f252b1fa8f5116c3 [2] A. Arslan, “An algorithm for string edit distance allowing substring reversals,” in Sixth IEEE Symposium on BioInformatics and BioEngineering. BIBE 2006, Arlington, VArlington, VA, 2006, pp. 220 226. [3] B. S. Baker, “Parameterized pattern matching: Algorithms and applications,” Journal of Computer and System Sciences, vol. 52, no. 1, pp. 2842, 1996. [Online]. Available: http://w w w.sciencedirect.com/science/ar ticle/B6WJ045NJMKJJ/2/0b04b8bd4e79a7b2284d4a52c451e50d [4] Bar-Yossef, Z. Jayram, T. S. Krauthgamer, and R. Kumar, “Approximating edit distance efficiently,” in Proceedings 45th Annual IEEE Symposium on Foundations of Computer Science, 2004. Haifa, Israel: Dept. of Electr. Eng., Technion, Oct. 2004, pp. 550 559. [5] H. Bunke and J. Csirik, “Parametric string edit distance and its application to pattern recognition,” IEEE Transactions on Systems, Man and Cybernetics, vol. 25, no. 1, pp. 202 206, Jan 1995. [6] J. A. Bustos, “Estudio comparativo de algoritmos indizados para búsqueda aproximada en texto,” Master's thesis, Universidad de Chile, 2003. [Online]. Available: http://www.uchile.cl/
23
24
Universidad El Bosque - Facultad de Ingeniería de Sistemas
[7] R. D. Castro, Teoría de la Computación, Lenguajes, autómatas, gramáticas, ser. Notas de Clase de la Facultad de Ciencias., U. N. d. C. Facultad de Ciencias, Ed. Universidad Nacional de Colombia, 2004. [8] E. Chávez and G. Navarro, “Probabilistic proximity search: Fighting the curse of dimensionality in metric spaces,” Information Processing Letters,Information Processing Letters, vol. 85, no. 1, pp. 3946, January 2003. [Online]. Available: http://w w w.sciencedirect.com/science/ar ticle/B6V0F475BCSD4/2/4b9e5165db1137830dc22bfb2dbe10c3 [9] E. Chávez and G. Navarro, “A metric index for approximate string matching,” Theoretical Computer Science, vol. 352, no. Issues 1-3, pp. 266279, March 2006. [Online]. Available: http://www.sciencedirect.com/science/ar ticle/B6V1G4HXBGSH1/2/889a42ca051eca9d71743577b1672cc4 [10] M. Crochemore, C. S. Iliopoulos, Y. J. Pinzón, and J. F. Reid, “A fast and practical bit-vector algorithm for the longest common subsequence problem,” Information processing Letters, vol. 80, no. 6, pp. 279285, December 2001. [Online]. Available: http://w w w.sciencedirect.com/science/ar ticle/B6V0F4475W6K2/2/8ff4c255a0756ed7bdfe7fe77fe2f964 [11] A. K. Elmagarmid, P. G. Ipeirotis, and V. S. Verykios, “Duplicate record detec tion: A sur vey,” IEEE Transactions on Knowledge and Data Engineering, vol. 19, no. 1, pp. 116, 2007. [12] D. Gustfield, Algorithms On Strings, Trees and Sequences, 2nd ed. Cambridge University Press, 1999. [Online]. Available: http://www.amazon.com/ [13] H. Hyyrö, “Extending and explaining the bit-parallel approximate string matching algorithm of myers,” University of Tampere, Tech. Rep., 2001. [Online]. Available: http://www.cs.uta.fi/ helmu/pubs/pubs.html [14] ----, “A bit-vector algorithm for computing levenshtein and damerau edit distances,” Nordic Journal of Computing, vol. 10, no. 1, pp. 2939, 2003. [Online]. Available: http://citeseer.ist.psu.edu/537930.html [15] ----, “Bit-parallel approximate string matching algorithms with transposition,” Journal of Discrete Algorithms, vol. 3, no. 2-4, pp. 215229, June 2005. [Online]. Available: http://w w w.sciencedirect.com/science/ar ticle/B758J4DBCF4Y1/2/d2a34c9cb978a70d1a174b18faf3c6c1 [16] H. Hyyrö, Y. Pinzón, and A. Shinohara, “Fast bitvector algorithms for approximate string matching under indeldistance,” in Proceedings of the 31st Annual Conference on Current Trends in Theory and Practice of Informatics (SOFSEM'05), vol. 3381. Springer-Verlag, 2005, pp. 380384. [Online]. Available: http://dis.unal.edu.co/profesores/ypinzon/ps/wea05.pdf
[17] R. L. Kashyap and B. J. Oommen, “An effective algorithm for string correction using generalized edit distances I: description of the algorithm and its optimality,” Information Sciences, vol. 23, no. 2, pp. 123142, 1981. [Online]. Available: http://www.scs.carleton.ca/oommen/papers/TrieBFS01P ublished.pdf [18] G. M. Landau, E. Myers, and M. Ziv-Ukelson, “Two algorithms for lcs consecutive suffix alignment,” Journal of Computer and System Sciences, 2007. [19] I. Lee and Y. J. Pinzón, “Linear time algorithm for the generalised longest common repeat problem,” in Proceedings of the 12th International Symposium on String Processing and Information Retrieval (SPIRE'05), S.-V. Consens and G. Navarro, Eds., vol. 3772. SpringerVerlag, 2005, pp. 191201. [Online]. Available: http://dis.unal.edu.co/profesores/ypinzon/ps/spire05a.pdf [20] K. Lemström, G. Navarro, and Y. Pinzón, “Practical algorithms for transposition-invariant string-matching,” Journal of Discrete Algorithms, vol. 3, no. 2-4, pp. 267292, June 2005, combinatorial Pattern Matching (CPM) Special Issue. [Online]. Available: http://w w w.sciencedirect.com/science/ar ticle/B758J4DBJSWW3/2/6071057098593f208055c4cfd1cf580f [21] D. Lopresti and A. Tomkins, “Block edit models for approximate string matching,” Theoretical Computer Science, vol. 181, pp. 159179, 1997. [22] V. Makinen, G. Navarro, and E. Ukkonen, “Transposition invariant string matching,” Journal of Algorithms, vol. 56, no. 2, pp. 124153, August 2005. [Online]. Available: http://www.sciencedirect.com/science/ar ticle/B6WH34DB57J32/2/f34d24da44c09bf00ba099456cc89535 [23] G. Navarro, “A guided tour to approximate string matching,” ACM Computing Surveys (CSUR), vol. 33, no. 1, pp. 3188, March 2001. [24] G. Navarro and R. Baeza-Yates, “Very fast and simple approximate string matching,” Information Processing Letters, vol. 72, no. 1-2, pp. 6570, October 1999. [Online]. Available: http://w w w.sciencedirect.com/science/ar ticle/B6V0F3Y0JBNH9/2/3f1418375e8c7f068b58904c84cbe129 [25] G. Navarro and K. Fredriksson, “Average complexity of exact and approximate multiple string matching,” Theoretical Computer Science, vol. 321, no. 2-3, pp. 283290, August 2004. [Online]. Available: http://www.sciencedirect.com/science/article/B6V1G4C 477DB-7/2/42fbd86fd89d621bbed9c2bd9fba1c43 [26] A. Ouangraoua, P. Ferraro, L. Tichit, and S. Dulucq, “Local similarity between quotiented ordered trees,” Journal of Discrete Algorithms, vol. 5, no. 1, pp. 2335, March 2007. [Online]. Available:
Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007
http://www.sciencedirect.com/science/article/B758J4JX Y3VF-1/2/56b1ec1b7c1b91427ef90cbfb8c12ace [27] S. Park, D. Lee, and W. Chu, “Fast retrieval of similar subsequences in long sequence databases,” in Proceedings 1999 Workshop on Knowledge and Data Engineering Exchange (KDEX '99), 1999, pp. 60 67. [28] G. Pighizzini, “How hard is computing the edit distance?” Information and Computation, vol. 165, no. 1, pp. 113, 2001. [29] Y. Pinzón, “Efficient approximate string algorithms using bit-vector techniques,” Ph.D. dissertation, King's College, 2001. [Online]. Available: http://dis.unal.edu.co/profesores/ypinzon/pub.html [30] E. S. Ristad and P. N. Yianilos, “Learning string-edit distance,” IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 20, no. 5, pp. 522532, May 1998. [31] S. Sahinalp, M. Tasan, J. Macker, and Z. Ozsoyoglu, “Distance based indexing for string proximity search,” in Proceedings 19th International Conference on Data Engineering, no. 5-8, March 2003, pp. 125 136.
[32] R. Sastry, N. Ranganathan, and K. Remedios, “Casm: a vlsi chip for approximate string matching,” IEEE Transactions on Pat ter n Analysis and Machine Intelligence, vol. 17, no. 8, pp. 824 830, Aug 1995. [33] E. Vidal, A. Marzal, and P. Aibar, “Fast computation of normalized edit distances,” IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 17, no. 9, pp. 899902, Sep 1995. [34] R. A. Wagner and M. J. Fischer, “The string-to-string correction problem,” Journal of the Association for Computing Machinery, vol. 21, no. 1, pp. 168173, 1974. [35] J. Wei, “Markov edit distance,” IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 26, no. 3, pp. 311 321, Mar 2004. [36] Q. Zhang, R. D. Chamberlain, R. S. Indeck, B. M. West, and J. White, “Massively parallel data mining using reconfigurable hardware: Approximate string matching,” in Parallel and Distributed Processing Symposium, 2004. Proceedings. 18th International, vol. 16. Los Alamitos, CA, USA: IEEE Computer Society, 2004, p. 259a.
Artículo de Investigación Científica y Tecnológica. Sometido a Arbitraje. El Autor Juan Felipe García Es candidato a la Maestría en Ingeniería de Sistemas y Computación de la Universidad Nacional de Colombia. Es ingeniero electrónico de la Universidad El Bosque, especialista en Historia y Filosofía de la Ciencia de la misma universidad. Actualmente se desempeña como secretario del comité ejecutivo del capítulo colombiano de la sociedad de educación del IEEE. jfgarciapen@unal.edu.co
25
Prototipo de una Herramienta Computacional para el Desarrollo de Material Educativo en Funciones de una Variable Nidya A. Monroy Rodríguez Boris Sánchez Sánchez
Resumen
Abstract
Se propone en este ar tículo una her ramienta computacional con la que los profesores del área básica de matemáticas puedan desarrollar materiales educativos para la enseñanza de funciones de una variable para sus clases, en las temáticas de la definición de la función, la grafica, transformaciones y combinaciones, de acuerdo con sus criterios y necesidades, así como a las de sus estudiantes. Se desarrollo un prototipo de la herramienta para realizar pruebas, con el fin de analizar los beneficios que esta puede brindar al propósito planteado, en los profesores, a quienes la herramienta va destinada en primera instancia.
This article shows a tool in which mathematics basic area teachers could develop educational materials for the education of functions of one variable for their classes in relation to the following topics: Function definition, graph, transformations and combinations; all of this according to their criteria and needs, as well as those of their students. Since the tool is focused to teachers at first, a prototype of the tool was developed to be tested and in order to analyze benefits that can be brought to them.
Palabras claves: Enseñanza de Funciones Matemáticas. Enseñanza de Matemáticas por Computador. Funciones Matemáticas de una Variable. Herramientas para el Desarrollo de Material Educativo. Programas Educativos.
Key words: Educational Programs. Mathematics Teaching in Computers. One Variable Mathematical Functions. Teaching of Mathematical Functions. Tools for Development of Educational Material.
28
Universidad El Bosque - Facultad de Ingeniería de Sistemas
I. INTRODUCCIÓN Los temas de funciones de una variable son una de las bases de las matemáticas, sin embargo su aprendizaje no a todos se les facilita. El uso de computadores para ayudarse en el aprendizaje de los temas de funciones brinda facilidades a los estudiantes para entender los conceptos, sin embargo no es posible encontrar siempre programas educativos que se ajusten a las necesidades particulares de cada entorno de enseñanza - aprendizaje. Por eso se propone una herramienta computacional con la que los profesores puedan desarrollar materiales educativos para este objeto de estudio, de acuerdo a sus requerimientos. Se creo un prototipo de la herramienta para poder analizar los beneficios que esta puede brindar al propósito propuesto, en primera instancia a profesores a los que esta es de interés, mediante pruebas que se realizaron, exponiéndolos al prototipo y capturando sus impresiones.
Considerando esto, se llego a la conclusión de que se debería desarrollar un prototipo con cuatro marcos, uno donde se pudiese exponer una escena tridimensional interactiva, otro donde se pudiese graficar la función y otros dos donde se pudiese exponer contenidos en forma de hipertexto en paralelo. Como se muestra en la figura 1.
II. IDENTIFICACIÓN DE LAS CARACTERÍSTICAS DE LA HERRAMIENTA Como primer paso para el desarrollo de la herramienta propuesta, se identificaron las características que ésta debería poseer para poder desarrollar material educativo para la enseñanza de funciones de una 1variable, así como las funcionalidades que se debería proveer para facilitar el aprendizaje de esta temática en los estudiantes. Para ello se revisaron diferentes proyectos que muestran el estado del arte [1], [2], [3] y [4]), la temática a tratar([5],[6]), las teorías de la enseñanza aprendizaje ([7], [8]), los tipos y las metodologías de realizar programas materiales educativos ([7], [9]), encontrándose que debido a las abstracciones de la función, El desarrollo pueda brindar herramientas que ayudaran a hacer explícitas estas abstracciones, dejando libertad al profesor para que sea éste quién decida las metodologías a usar para el desarrollo de los contenidos. Se determinó entonces incluir una escena tridimensional donde se exponen los conceptos a tratar, para que el estudiante pudiese explorar para hacerse una idea más clara del planteamiento del problema, adicionalmente, en forma de hipertexto, exponer los conceptos en la misma pantalla, para no salirse del contexto requerido, donde que se puedan explorar de forma no lineal. También incluir una funcionalidad que permita graficar la función y para que el estudiante interactúe con la aplicación proveer herramientas que permitan tomar apuntes como los que el estudiante realizaría en una hoja de papel. Para especificar los contenidos de la herramienta en la escena tridimensional y en los contenidos de hipertexto. Para realizar este desar rollo se consideraron var ias alternativas, optando por emplear un archivo descriptor, usando marquillas XML.
Figura 1. Esquema de la herramienta propuesto III. DESARROLLO DEL PROTOTIPO DE LA HERRAMIENTA Una vez identificadas las características que se considero que la herramienta debería tener, se procedió a desarrollar un prototipo de la herramienta. Se usó lenguaje C y C++ en el desarrollo, usando los APIs Win32 para el manejo de la parte de la interfaz de usuario para WindowsXP, Direct3D9 para el manejo de la escena tridimensional y Expat para realizar la conversión de las marquillas del archivo descriptor a tipos de datos de lenguaje C y C++. De esta forma se consiguió implementar todas las funcionalidades identificadas, mientras que se logró mantener los requerimientos de hardware bastante bajos, para permitir la ejecución del prototipo en el mayor número de equipos posible. Cumpliendo con la arquitectura propuesta en la figura 2. Observación de la escena interactiva y del sistema expuesto
Arranque
Carga desde el archivo fuente de los contenidos y visualización de contenido inicial de acuerdo a la secuencia programada por el desarrollador
Navegar por contenidos del marco primario
Usar herramienta para darse una idea de las proporciones de los objetos o tomar apuntes
Esperar por acción
Graficar función
Navegar por contenidos del marco secundario
Figura 2. Arquitectura de la herramienta
Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007
Una vez realizado el prototipo se crearon dos ejemplos de material educativo para los temas de funciones de una variable, para poder realizar las pruebas que mostrarán los beneficios de la herramienta, de acuerdo al criterio experto de los profesores a quienes la herramienta es de interés y va dirigida en primera instancia. Las pantallas iniciales de los dos ejemplos se muestran en las figuras 3 y 4 respectivamente.
Para ello se realizó una encuesta que muestra la postura de los docentes respecto al uso de computadores en educación. Posteriormente se expuso a los profesores al prototipo de la herramienta, permitiendo que la usaran y analizaran. Finalmente se aplicó otra encuesta para observar la utilidad del prototipo, incluyendo cada uno de los elementos que contiene y la aplicabilidad de éste como apoyo a las clases. IV. CONCLUSIONES El desarrollo del prototipo de la herramienta permitió realizar pruebas con los profesores, para obtener resultados reales y confiables. Los profesores mostraron un gran interés en la herramienta, al considerar que esta provee ventajas sobre los métodos tradicionales en la enseñanza y el aprendizaje de funciones de una variable.
Figura 3. Ejemplo 1 desarrollado con el prototipo de la herramienta
El especificar los contenidos de la herramienta en un archivo descriptor en XML, hace que se requiera de una persona experta que conozca de XML y las marquillas que maneja la herramienta, para poder desarrollar los contenidos requeridos por los profesores. La exposición de conceptos en una escena tridimensional es considerada por los profesores de gran ayuda para exponer ciertos conceptos que requieren de este tipo de entorno. El fácil acceso a la información, es considerado por los profesores como un estímulo para que los estudiantes no pierdan el interés en desarrollar los contenidos. El uso de lenguaje C y C++ permitió que se pudieran desarrollar todas las funcionalidades requeridas y mantener un buen desempeño computacional. V. TRABAJO FUTURO
Figura 4. Ejemplo 2 desarrollado con el prototipo de la herramienta
Se puede desarrollar una interfaz gráfica para el desarrollo de los contenidos de la herramienta, en vez de especificarlos en un archivo descriptor. También se podría agregar un sistema experto para monitorear el progreso de los estudiantes. El prototipo debe complementarse con otros ejemplos y ser sometido a pruebas con los estudiantes, bajo la tutoría de los docentes para establecer los ajustes necesarios con el fin ser utilizada en las clases.
III. PRUEBAS Se realizaron pruebas con docentes para quienes la herramienta es de interés en sus clases, con el fin de analizar los beneficios que puede brindarles como material educativo para la enseñanza de funciones de una variable.
REFERENCIAS [1]ARIAS, Marlene. Metodología dinámica para el desarrollo de software educativo. www.v irtualeduca.org/virtualeduca/virtual/actas2002/a ctas02/913.pdf. 2002.
29
30
Universidad El Bosque - Facultad de Ingeniería de Sistemas
[2]GALVIS, Álvaro. Ingeniería de software educativo. Bogotá: Universidad de los Andes, 2001. [3]GROS, Begoña. Diseños y programas educativos. Barcelona, España: Editorial Ariel S.A., 1997. [4] ROSCHELLE, Jeremy. SimCalc mathworlds. Universidad de Massachussets. 2004. [5]SPIVAK, Michael. Cálculo Infinitesimal. Segunda edición. Nueva York, USA: W.A. Benjamín Inc., 1992. p. 49-100. [6]STEWART James. Calculus, early transcendentals. Tercera edición. Pacific Grove, USA: Brooks/Cole publishing company, 1995. p.2-39. [7] VALDELAMAR, Hernández. Software educativo para el aprendiz aje ex p er iment a l de la s mat emát ic a s. www.somi.cinstrum.unam.mx/virtualeduca2005/resumenes /. 2005. [8]VARIOS. Descartes. http://descartes.cnice.mecd.es/presentacion/descripcion_w eb.html. Consultado 22 de noviembre de 2006. [9]VARIOS. Macromedia director. http://www.adobe.com/products/director/ consultado en enero 12 de 2007.
Artículo de Investigación científica y tecnológica. Sometido a arbitraje. Los Autores Nidya A. Monroy Rodríguez Docente de la Facultad de Ingeniería de Sistemas de la Universidad El Bosque. Ingeniero Electrónico. Universidad Santo Tomas, Bogotá. Especialista en Automatización de Procesos Industriales. Universidad de los Andes. nidyamonroy@unbosque.edu.co Boris Sánchez Sánchez Ingeniero de Sistemas Universidad El Bosque. tsobd@dr.com.
Prototipo para la Implementación de un Módulo Web fundamentado en la Teoría sobre Portal de Contenidos Carlos Hernán Ortiz Buitrago Juan Sebastián García O. Juan Carlos Jiménez V.
Resumen El prototipo para la implementación de un módulo Web fundamentado en la teoría sobre Portal de Contenidos se enmarcó dentro de la línea de la Ingeniería de Software y se centró en el desarrollo de un estudio sobre los temas que soportan la realización de un portal de contenidos y la construcción de un módulo Web para gestionar las actividades culturales y deportivas del Departamento de Bienestar Universitario de la Universidad El Bosque. El estudio se guió por medio de la lectura de documentos acerca de la administración de aplicaciones web para contenidos WCMS (Web Content Management Systems). Palabras Clave: Ingeniería de Software, Web Content Management, Administración de Contenidos, Bienestar Universitario, Gestión de Actividades Culturales y Deportivas.
Abstract The prototype for the implementation of a Web module based on the theory on web content management was framed in the research line on software engineering and it was focused on the development of a study on topics supporting the development of a Web module to manage cultural and sport activities of the Departamento de Bienestar Universitario of the El Bosque University. This study was guided by readings of documents on Web Content Management WCMS. Keywords: Soft ware Engineering, Web Content Management, Depar tment of Cultural and Spor t activities of the University of El Bosque, Cultural and sport activities management.
32
Universidad El Bosque - Facultad de Ingeniería de Sistemas
I. INTRODUCCIÓN La administración de contenidos, en inglés Content Management Systems o CMS, es una de las disciplinas del desarrollo de aplicaciones Web, cuyo objetivo es el de mostrar al usuario cómo disponer los distintos contenidos de una página Web, para que sea atractiva para el usuario final. Cuando se visita una página de noticias, por ejemplo: la del periódico El Tiempo de Bogotá - Colombia, el usuario puede ver noticias, puede escuchar declaraciones y puede leer los distintos artículos que se han dispuesto en el ambiente de la página para ese día. Años atrás, cuando las aplicaciones Web eran cosa del futuro, nunca se llegó a pensar que se pudiera administrar ciertos artículos, videos o grabaciones, entre otros, y plasmarlos en una página Web. Ahora, muchas compañías promueven sus sitios Web mediante el uso de videos, que permiten transmitir al usuario una idea general de lo que cada una de ellas vende; los canales de noticias muestran videos que permiten al usuario observar lo que realmente está pasando en el lugar de la noticia. El propósito del trabajo realizado consiste en crear un prototipo que evidencie la aplicación de los conceptos aprendidos en cuanto a la administración de imagen, audio, video y texto como un único elemento, denominado contenido, para lo cual se implementa un sitio Web que gestione las actividades deportivas y culturales que promueve el Departamento de Bienestar Universitario de la Universidad El Bosque. II. DESCRIPCIÓN DEL PROBLEMA El manejo actual de las actividades deportivas del Depar tamento de Bienestar Universitario de la Universidad El Bosque, es realizado mediante el uso de formularios, cuya función es la de inscribir a los miembros de la comunidad universitaria que estén interesados en par ticipar en actividades tanto culturales como deportivas. El propósito de estos formularios es recoger la información de los participantes de las distintas actividades que son promovidas por el Bienestar Universitario, como la organización de campeonatos internos de fútbol, baloncesto y voleibol, dichos formularios se utilizan, para organizar la información de los equipos y sus integrantes. Otra función del Bienestar Universitario, es la organización de actividades culturales, las cuales se dan a conocer a los estudiantes por medio de boletines informativos semanales; entregados los días lunes, entre las siete y las ocho de la mañana, estos boletines se entregan uno a uno a cada estudiante que entra a la
cafeterías y lugares comunes de la Universidad, las cuales muestran la información de los eventos realizados por Bienestar Universitario. Esto implica un gasto de papelería e impresión de cada boletín informativo. Además, muchos de los estudiantes no reciben dicha información a causa de llegar después de las nueve de la mañana. Por otra parte, este proceso, también representa una tarea adicional al personal de seguridad, puesto que es el directo encargado de su distribución. Los procesos descritos anteriormente representan un problema para la eficiencia en la inscripción de estudiantes en la organización de actividades deportivas programadas y desarrolladas por el Departamento de Bienestar Universitario. Adicionalmente, existe una deficiencia en la difusión de información relacionada con dichas actividades, puesto que un gran porcentaje de estudiantes reciben sus clases después de las nueve de la mañana, lo que impide que reciban la información. III. POR QUÉ CREAR UN PORTAL PARA BIENESTAR UNIVERSITARIO
La mayoría de las universidades en Colombia poseen un Departamento de Bienestar Universitario que promueve las actividades deportivas y culturales, pero muchas de estas universidades no tienen un portal Web que gestione esas actividades, inclusive existen casos donde el departamento de Bienestar Universitario no tiene una página Web que publique las actividades. Hay portales de bienestar universitario, de algunas universidades, donde se encuentra un poco más de interacción con los estudiantes, por ejemplo: el portal de la Universidad Externado de Colombia, en este se puede ver un formulario de inscripción para un concurso y en el área deportiva se encuentra un enlace a otra página que muestra las categorías del torneo que organiza la Universidad, pero no hay una forma interactiva de inscribir los equipos, o los estudiantes y funcionarios de esta institución participantes, aún cuando la información es solamente de un torneo de fútbol. En cuanto a las actividades culturales, simplemente se muestra una lista de las actividades ofrecidas por el depar t amento, entre otras est án: coro, danza contemporánea, teatro, conferencias y talleres, cada una de las cuales tiene un enlace que muestra una foto y una breve descripción de la actividad. Muchas de las instituciones se centran en crear un módulo Web que muestre, ya sea las actividades culturales o las actividades deportivas, por tal motivo se decidió cambiar ese paradigma en la Universidad El Bosque, ya que se quiere desarrollar un prototipo que sea capaz de gestionar
Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007
tanto las actividades depor tivas como culturales permitiendo la interacción con el usuario. IV. CONCEPTOS BÁSICOS EN LA ADMINISTRACIÓN DE CONTENIDOS Para entender la lógica de la administración de contenidos se deben tener en cuenta los siguientes conceptos: Dato: El dato se define como una unidad o cantidad mínima de información, que convenientemente tratada se puede utilizar en la realización de cálculos, toma de decisiones y despliegue de información. Con un conjunto de datos los computadores pueden procesar fragmentos de información, tales como: números, palabras, imágenes, sonido, video. Con el paso de los años se han generado grandes cantidades de datos que deben organizarse en bases de datos, las cuales permiten organizar y publicar de forma coherente y eficiente dichos datos. Contenido: Actualmente las computadoras poseen la capacidad de solucionar operaciones complejas, almacenar, organizar y visualizar información entre otras cosas. En el presente se requiere que la computadora no se dedique solamente a organizar la información, sino vaya más allá de realizar operaciones complejas tales como: organizar artículos, ver televisión y películas, reproducir canciones, y demás demandas modernas. Información: Se puede definir información como un conjunto de datos organizados que forman un mensaje. Aunque muchos Ingenieros de Sistemas afirman que no tiene un concepto definido. El concepto de información es poder divulgar cierto conocimiento acerca de un tema específico y que ese conocimiento siga un ciclo infinito hasta que otro conocimiento refute esa información. Contenido es Información Más Datos: Hasta el momento se han definido conceptos tales como dato, contenido e información. Pero que tienen que ver todos estos conceptos con la Administración de Contenidos, pues bien, ésta se basa en organizar los contenidos que posee una aplicación específica, por lo tanto un contenido es el resultado de la unión de cierta información a la cual se le asigna un dato que la identifique. Cuando se tiene un texto y una imagen y estos se unen, se le denomina Componente de Contenido, cuando se le da un nombre a ese componente, se crea un Contenido.
V. LOS CONTENIDOS TIENEN UNA ESTRUCTURA Cuando se está desarrollando una aplicación que gestione o administre contenidos, se debe tener en cuenta que para crear un contenido hay que organizar los métodos y la información de tal forma que al juntarlos se cree una estructura que permita organizar los distintos contenidos dentro de un sitio Web. Esta unión de estructuras le da al usuario una idea más clara de donde provienen los elementos que comúnmente ve en un sitio Web. Un ejemplo es el de una película, esta posee muchas escenas, pero en conjunto generan lo que es la película. A todos estos componentes que están organizados en un solo sitio se les denomina contenidos con estructura, el siguiente gráfico muestra un esquema de cómo se puede dar estructura a un contenido.
Content type Content component Element Element Element Content component Element Element Content type Content component Element Element Content component Element Element VI. QUÉ FUNCIÓN TIENE LA ADMINISTRACIÓN DE CONTENIDOS Se puede definir la administración de contenidos como el proceso mediante el cual se organiza la información de un sitio Web, esa información debe cumplir un objetivo, el cual es satisfacer las necesidades del cliente en cuanto a la gestión de información, ya sea personal o empresarial. Las personas se cuestionan mucho acerca de la funcionalidad de la administración de contenidos para crear un módulo Web. Al respecto, es interesante ver que la administración de contenidos hace énfasis en conceptos básicos de informática, ya que se debe tener claro que un contenido es el resultado de la unión entre la información y algunos datos.
33
34
Universidad El Bosque - Facultad de Ingeniería de Sistemas
Según el texto Content Management Systems, la administración de Contenidos se define como: “Es una aplicación que cubre todos los aspectos de la publicación de contenidos con herramientas digitales, pero en un sentido amplio”. [1] VI. ARQUITECTURA DE UN CMS Muchas aplicaciones que tienen una administración de contenidos, poseen una arquitectura creada ya sea por un grupo de desarrolladores o una organización de estándares, en este caso se mostrará la arquitectura de un sistema de Administración de Contenidos para tecnologías JAVA, J2EE, (figura 1)
se deja una sesión abierta, cualquier persona puede ingresar y modificar, o en el peor de los casos, eliminar toda la información del sistema. Documento o Servicio de Administración de Página Document or Page Management Service (D/PMS): El D/PMS es responsable de mantener la estructura (archivos) del contenido y de capturar el contenido requerido por demanda. Este trabaja con el contenido cache (CCS) y el servicio de administración de versiones (VMS) al servidor de contenidos requeridos. Ser vicio de Adminis tración de Versiones-Versión Management Service (VMS): El VMS es responsable de manejar múltiples versiones del contenido (documentos) en el sistema. Los documentos pueden tener muchas versiones para soportar un roll back del contenido. El desarrollo de la aplicación debe tener en cuenta que se debe tener un control de versiones de los contenidos, esto se debe a que el contenido tiene un formato libre y es susceptible a cambios, por lo tanto se debe almacenar una versión inicial antes de cambiar la versión del contenido. Servicio de Deposito de Contenidos-Content Caching Service (CCS): Cuando se desarrolla una aplicación de administración de contenidos, se debe aclarar que las transacciones que realice el sistema deben viajar al servidor lo menos posible, ya que esto genera un retraso de algunos segundos durante el proceso de ejecución. Para solucionar esto, se debe implementar un servicio que guarde los cookies de las sesiones, de tal manera que el tiempo de ejecución sea menor. También el CCS es responsable de que los contenidos sean eliminados de acuerdo con una fecha estipulada. Servicio de organización de tareas-Job Scheduling Service (JSS): El JSS maneja la ejecución de tareas predefinidas periódicas o de una sola vez sin que el usuario lo note.
Figura 1. Arquitectura de un CMS Servicio de Control de Acceso Access Control Service (ACS): El ACS es el encargado de implementar chequeos de seguridad para evitar que un usuario no autorizado tenga acceso a la información. Los permisos pueden ser fijados para usuarios, grupos u objetos (carpetas, páginas, documentos, versiones, entre otros). Es importante aclarar, que en el desarrollo del módulo se aplicarán espacios de tiempo para cada uno de los usuarios, ya que si
Servicio de Acceso al registro-Access Logging Service (ALS): El ALS registra cada petición de página, documento o archivo. Junto con el nombre del documento a pedir, el ALS almacena información demográfica, como por ejemplo: País de origen, fecha y hora de la solicitud, referencia de la URL, entre otros tipos de información. Esta funcionalidad es como el registro del servidor, que plasma todas las transacciones hechas, en el momento de ejecución. Servicio de Reportes-Reporting Service (RS): En una aplicación Web que administre contenidos, es importante que se tenga la capacidad de generar reportes de todas las transacciones que se han realizado en un determinado lapso de tiempo. Este es el caso del servicio de reportes, su función es la de generar archivos XML, XLS, PDF, RTF, CSV, entre otros.
Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007
Servicio de Personalización-Personalization Service (PS): Cuando un usuario quiere enviar cierta información por la Web, el ISP, envía una petición al servidor de destino, la cual este responde aceptando la información, esto se conoce como el servicio de personalización. Búsqueda o Servicio Indexación - Search or Indexing Service (SIS): El SIS es responsable de indexar el contenido de un sitio Web y consultas de búsqueda de resultados, los vínculos cruzados inteligentes basados en metadatos son manejados también por el SIS. Este servicio es el encargado de cargar los contenidos que se han programado de acuerdo con una consulta realizada en la base de datos, cuyo resultado trae los contenidos de acuerdo con los parámetros que se le hayan dado para realizar esta consulta. Servicio de Ensamblaje de Paginas y Plantillas-Templating and Page Assembly Service (T/PAS): Cuando el cliente realiza una petición al servidor, este llama a un ASP, que es el encargado de llamar a los contenidos que se deben cargar de acuerdo con los parámetros dados en la búsqueda de la base de datos que se encuentran en la llamada al servidor. Cuando el ASP recibe toda la información, la interpreta y ejecuta el contenido de cada una de las etiquetas que lleva el archivo de repuesta, es decir, el ASP es un traductor de información que ayuda al servidor a plasmar los elementos necesarios para crear la página Web que solicitó el usuario. Capa de Abstracción a la Base de Datos-Database Abstraction Layer (DAL): El DAL separa la lógica del negocio de la subcapa de la base de datos. Esto hace posible posicionar un sitio activo en otras bases de datos. VII. CICLO DE VIDA DE UN CONTENIDO Todo sistema de información tiene un ciclo de vida, así mismo, todo contenido de un CMS posee un ciclo de vida (Figura 2). anización Org
Creación
Publicación
Alm acenamiento
Figura 2. Ciclo de vida del contenido En la gráfica se pueden ver cuatro etapas del ciclo de vida del contenido, la primera, es la etapa de creación; en esta se crean los contenidos cuyo trabajo pertenece a los
editores, quienes se encargan de organizar trozos de contenidos para unirlos y así poder crear los componentes de contenido. Luego el contenido pasa a su siguiente etapa que es la organización, en esta se trata todo lo que tiene que ver con la administración y el almacenamiento del contenido en un esquema que se ajuste a la información de los productos y las fuentes, también se trata de administrar y asignar los permisos del usuario. Luego del proceso de organización se pasa a la etapa de publicación; en esta se hace la distribución y la presentación de los contenidos, esto significa que el contenido que pasa a esta etapa es lo que va a ver el cliente al visitar la página. Luego de ser publicados los contenidos, pasan a la etapa de almacenamiento. En esta etapa se almacena el contenido con el fin de cumplir requerimientos tales como reutilización del contenido, evaluación estadística, y para fines de investigación [2]. VIII. ELEMENTOS BÁSICOS DE UN SISTEMA DE ADMINISTRACIÓN DE CONTENIDOS CMS Generalmente un CMS se compone de tres elementos básicos de información, el CMA, el MMA y finalmente el CDA. El CMA Administra todos los componentes del CMS, por otro lado el MMA administra la información de los componentes del contenido, y por último el CDA muestra en el cliente los componentes del contenido. Aplicación de la Administración de Contenidos (CMA): El CMA es el encargado de administrar todos los componentes del contenido en un CMS, en el desarrollo de la aplicación para administrar los contenidos se utilizan los métodos que hacen parte de esta aplicación. En la figura 3 se muestran los elementos básicos que se deben implementar para desarrollar una aplicación. El CMA es una aplicación que se encarga de administrar el ciclo de vida de los componentes del contenido, desde la inserción hasta la eliminación. Un CMA puede crear, mantener y remover componentes de contenidos hacia y desde un repositorio de información. El repositorio puede ser una base de datos. El proceso administrativo es secuencial por naturaleza y es acoplado usando un flujo de trabajo. Los métodos que se deben implementar para esta aplicación son: Aprobación (Approval): Antes de que alguna etapa de un componente de contenido sea terminada y otra esté lista a empezar, el proceso de aprobación autoriza los cambios hechos en el contenido, esto se debe a que un contenido
35
Universidad El Bosque - Facultad de Ingeniería de Sistemas
debe ser aprobado por una persona que esté al tanto de los estándares del diseño de un contenido.
donde se desea, que los acoplamientos de imágenes sean correctos, que las formas del sitio Web se comporten según lo esperado y se debe examinar que cada página aparezca como se desea.
Design
Proceso de Etapas: Después de que el sitio se haya probado y esté listo, todos los componentes deben ser movidos al servidor donde va a reposar el sitio Web.
Authoring
Testing Staging Deployment
Approval
Layout
Content Component Repository
Editing
Content Management Application
36
Manteinance
Despliegue: Se necesita mover el contenido del sitio Web periódicamente, de lo contrario, el sitio se saturará muy rápidamente. El procedimiento del despliegue puede ser algo complejo dependiendo del número de servidores que se tenga, por lo tanto es indispensable tener en cuenta un sistema que evite tantos llamados al servidor.
Removal
Mantenimiento: El proceso de manejo de contenidos no termina cuando los componentes se despliegan en el sitio Web. Los componentes necesitan ser puestos al día con la información adicional más actualizada.
Figura 3. Elementos básicos
También se pueden encontrar errores ocasionales durante el ciclo de vida del componente que necesiten corregirse.
Archival
Diseño (Design): En este método todos los componentes pueden ser publicados sobre el sitio Web, este método es asignado a una tercera persona que es la encargada de diseñar los componentes de contenido. Autoría (Authoring): El primer paso es la autoría, que es el proceso de adquirir componentes de contenido para el sitio Web. No solamente se incluye escribiendo un componente de contenido, también se puede adquirir de otras fuentes y ser cargado en el sitio Web. Edición (Editing): Después de que se cree el componente, pasa a través de múltiples ediciones de corrección hasta que la persona apropiada con autoridad suficiente determina que está completa, correcta, y lista para progresar a la etapa siguiente. Distribución (Layout): Después de que se terminen de editar todos los componentes, se despliegan en una página Web para la visualización. Un buen CDA no debe tener ninguna objeción en el desempeño de un componente, debe proporcionar una manera de hacer sugerencias al MMA sobre la disposición y la localización que prefiere para el componente. Prueba (Tests): Luego de la distribución, y que el componente esté listo para la visualización, se debe probar el contenido. Muchos sitios Web pasan por alto esta actividad. La prueba de un sitio Web implica actividades como: probar que todos los enlaces van a
Nunca se debe realizar un mantenimiento directamente en un sistema en funcionamiento, desplegado. A rchivar: Cuando el componente se vuelve anticuado o haya alcanzado el final de su vida útil, debe ser archivado. El archivar no significa que un usuario no puede tener acceso al componente, éste es accesible por medio de una búsqueda de archivo del sitio. Mucha gente utiliza la Internet para la investigación, y tener un archivo grande de información puede ser una buena característica para el sitio Web. Remover: Si un componente llega a ser obsoleto y no puede ser actualizado (o no hay necesidad de ponerlo al día), el componente debe ser quitado. Aunque la característica del retiro está disponible, a menos que suceda algo drástico, el camino correcto es archivar el componente y permitir que sea accesible a través de archivos. Aplicación para la Administración de Metacontenido (MMA): En un CMS ideal se debe tener en cuenta que los contenidos deben ir separados del envío del componente de un contenido, debido a que por políticas de adm inist ración t a nto del MM A (Met acont ent Management Application) como del CMA (Content Management Application) estas dos deben ir separadas.
Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007
2. ¿El esquema de colores son apropiados para el ojo humano? 3. ¿La pantalla se encuentra muy saturada? 4. ¿Debería realizarse algún cambio?
Analysis
Build Testing Staging
Metacontent Repository
Creation
Approval
Metacontent Management Application
Design
Deployment Manteinance
Diseño (Design): Luego de pasar por la etapa de la aprobación se pasa luego a la etapa del diseño, la cual se encarga de mostrar como se va a ver el sitio Web teniendo en cuenta cada detalle, y debe ser aprobado por un comité. Debido a que el comité debe ser riguroso, muchas veces el proceso puede volverse lento debido a la exigencia de los detalles sobre el diseño, para esto, una alternativa favorable es utilizar otros programas y personas que se especializan en el diseño de los sitios Web. Creación (Creation): La creación del metacontenido debe basarse en el diseño y los análisis realizados previamente. La creación casual de metacontenidos hace que se cometan errores.
Removal
Figura 4. Elementos del ciclo de vida Ciclo de vida de un MMA: Así como el CMA tiene una serie de etapas o procesos de alto nivel para el análisis del ciclo de vida, el MMA posee las mismas etapas pero con un enfoque distinto. En la figura 4 se muestran los elementos que hacen parte del proceso del ciclo de vida de aplicaciones para la administración de metacontenidos. Los elementos que componen el ciclo de vida de los metacontenidos son los siguientes: Aprobación (Approval): Cada vez que se termine cada uno de los procesos del ciclo de vida de la meta información, estos deben tener una fase de aprobación por parte de una autoridad competente para seguir al siguiente proceso. Esa autoridad es un comité que se encarga de estudiar los cambios del metacontenido debido a que esos cambios pueden afectar la percepción de la forma en que se va a ver la página Web. Análisis (Analysis): Luego de la aprobación y mucho antes de realizar cambios a un sitio Web se debe tener un análisis de esos cambios mediante el uso de ciertas preguntas que permiten establecer como deben hacerse y cuales aspectos se deben tener en cuenta para el desarrollo de los mismos. Se deben plantear preguntas tales como: 1. ¿Cual será la respuesta en el mercado con estos cambios?
Construcción (Build): Cuando se tiene toda la información de acuerdo con los pasos anteriores, se debe unir. Cuando se utiliza ASP, .NET y C# los archivos deben estar previamente compilados. Prueba (Test): Luego de ser creado y construido el metacontenido debe ser sometido a rigurosas pruebas, ya que el metacontenido no puede revisarse de una manera superficial. Se puede decir que, las pruebas del metacontenido siguen un proceso estándar de desarrollo de software. Fase (Stage): Después de que el metacontenido es probado y listo para ser lanzado, se pasa a una etapa del servidor en donde es usado para ser replicado y producido. El objetivo de tener un servidor de etapas es para que el paso de metacontenido a la producción pueda ser transmitido sin ningún problema y que no interfiera con usuarios activos. Despliegue (Deployment): Es el metacontenido que se muestra en vivo desde el sitio Web. Mantenimiento (maintenance): El ciclo de vida del metacontenido no sólo acaba cuando el contenido o la información es removida del sitio Web; muchas veces se necesita que los errores sean corregidos, ya sea por pérdida en el ancho de banda o simplemente para realizar un cambio. Es importante tener en cuenta que al realizar algún cambio se debe interrumpir el servicio, esto se hace con el objetivo de minimizar errores en el sistema. Remover Información (Removal): Cuando se está desarrollando una aplicación se debe tener en cuenta que hay que remover cierta información en vez de eliminarla, esto se debe a que muchas aplicaciones sirven como base para poder realizar otras aplicaciones.
37
38
Universidad El Bosque - Facultad de Ingeniería de Sistemas
Aplicación del Envío del Contenido: La Función de esta aplicación es la de tomar los componentes del contenido haciendo un llamado al repositorio del CMS, que en el caso del prototipo es una base de datos que contiene la referencia de contenidos almacenados (identificador del contenido, tipo de contenido, fecha de inserción, fecha de despliegue del contenido, fecha de almacenamiento del contenido, entre otros parámetros), en el momento en que se ejecute, el repositorio envía los datos a la aplicación de la administración de metacontenidos para que se encargue de mostrar estos contenidos en la página designada al usuario, logrando que este vea la información como un conjunto único y no como imágenes, audio y video, y textos individuales, dispersos. IX. RESULTADOS • A partir de la información de CMS encontrada para realizar el documento en el cual está basado éste artículo, se logró implementar un prototipo que refleja la aplicabilidad, de los portales de contenidos, en una necesidad cotidiana como la de sistematizar la gestión de las actividades culturales y deportivas del departamento de Bienestar Universitario de la Universidad El Bosque. • Se logró construir un documento sobre la aplicación de portales de contenidos, a partir de diferentes fuentes de información enfocadas en este tema, con el fin de dar soporte teórico a nuevas investigaciones, sintetizando lo mas relevante y necesario para la implementación de aplicaciones Web para la administración de contenidos. • Se demostró, por medio de la implementación de un portal de contenidos Web, que la plataforma .NET es una herramienta moderna y útil para el desarrollo de aplicaciones Web. • Por medio de esta investigación se evidenció que existen otras alternativas de desarrollo muy útiles, avanzadas y robustas para el desarrollo de aplicaciones Web, diferentes a Java. X. CONCLUSIONES De la realización del prototipo, se generan una serie de conclusiones relevantes para el proceso de construcción de software que tenga la capacidad de administrar contenidos Web, por ahora, para el módulo Web que gestione las actividades culturales y deportivas del Departamento de Bienestar Universitario, no se tendrá una implementación definitiva, debido a que la aplicación cumplirá con su función de prototipo, cuyo fin es evaluar su funcionalidad y que pueda ser implantado en el sitio Web de la Universidad El Bosque posteriormente. Los resultados obtenidos constituyen una base conceptual para la eventual implementación de esta
herramienta, en pro de la creación de nuevos desarrollos. El actual aporte al conocimiento no da respuesta a una solicitud específica, pero constituye una aplicación que puede ser tomada como referencia de estudio, para crear a futuro nuevas her ramient as que involucren la Administración de Contenidos Web. Al culminar el trabajo, se llegó a las siguientes conclusiones: • La Administración de Contenidos es un método organizado de crear sitios Web que permite al desarrollador separar la lógica del negocio, del modelo de datos y las interfaces de la aplicación. Además de eso, la administración de contenidos muestra de forma clara y organizada los elementos básicos que se deben tener en cuenta a la hora de crear un sitio Web ya sea para fines personales o de negocios. • Al realizar el análisis, el desarrollo y las pruebas para la Administración de Contenidos, se logró construir un módulo Web que a partir de solicitudes a un servidor, cargue los contenidos almacenados en la base de datos dentro de una página Web. • El módulo Web desarrollado está en la capacidad, no solo de administrar las actividades depor tivas y culturales, sino también de desplegar la información de acuerdo con los parámetros estipulados para cargar los contenidos dentro de la página Web. • De acuerdo con la investigación realizada, se pudo encontrar que el tema es nuevo en el área de desarrollo de aplicaciones Web. Por lo tanto, este trabajo puede darle una guía al usuario para construir un sitio Web que administre o gestione contenidos, dado a que se han estipulado los elementos necesarios para la construcción de este. REFERENCIAS [1]. Altman, Werner; René, Fritz; Hinderink, Daniel. Typo3 Enterprise Content Management. Birmingham: Packt Publishing Ltd, 624 páginas. [2]. Addey, Dave; Ellis, James; Suh, Phil; Thiemecke, David. Content Management Systems. Glasshaus, UK: Apress 2002, 530 páginas. [3]. Boiko, Bob. Content Management Bible. Segunda Edición. Indianapolis: Wiley Publishing, 2005 1167 páginas. [4]. Fraser R.G. Stephen. Real World ASP.NET Building a Content Management System. New York : Apress, 2002 522 páginas.
Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007
Artículo sometido a Arbitraje. Artículo tipo 9. Los Autores
Carlos Hernán Ortiz Buitrago Docente de la Facultad de Ingeniería de Sistemas de la Universidad El Bosque. Ingeniero de Sistemas de la Universidad Nacional de Colombia. carlosortiz@unbosque.edu.co. Juan Sebastián García Ortiz Ingeniero de Sistemas de la Universidad El Bosque, Bogotá, Colombia. aicragnauj@hotmail.com
Juan Carlos Jiménez Valenzuela Ingeniero de Sistemas de la Universidad El Bosque, Bogotá, Colombia. juancaji00@hotmail.com
39
Equipo de Investigación en
Software Libre Líneas de Investigación • Grid Computing • Simulación • Biometría • Desarrollo Social Actividades • Hora Linux
Te invitamos a participar www.sistemasunbosque.edu.co/equis guiovannasabogal@unbosque.edu.co
Equipo de Investigación en Software Libre Por la equidad del conocimiento
Creación de Aplicaciones Web utilizando Java Server Faces y Netbeans con Visual Web Pack Alejandro Pieschacón Rueda
Resumen
Abstract
En el diseño y construcción de aplicaciones Web, es cada día más común el desarrollo de nuevas tecnologías que permitan una manera fácil y versátil para los diseñadores de este tipo de aplicaciones.
In the design and construction of web applications it has become more frequent the development of new technologies that enable faster and more versatile design of web applications.
Este artículo ofrece una breve descripción de la tecnología implementada en Java Server Faces, además de la implementación de una sencilla aplicación Web utilizando esta tecnología.
This article offers a brief description of the technology applied in Java Server faces, plus the overview of the implementation of the web application using the Java technology.
Palabras Clave: Java Server Faces, Netbeans, Visual Web Pack, Aplicaciones Web.
Keywords: Java Server Faces, Netbeans, Visual Web Pack, Web Applications.
42
Universidad El Bosque - Facultad de Ingeniería de Sistemas
accesses page
INTRODUCCIÓN El desarrollo de aplicaciones Web es cada día más común en nuestra sociedad, por lo que la utilización de tecnologías que permitan el desarrollo de este tipo de aplicaciones en un menor tiempo posible, de mejor calidad y eficiencia es cada día más necesario. Este artículo pretende ofrecer un breve vistazo a la tecnología Java Server Faces, implementada mediante la herramienta de desarrollo de aplicaciones Netbeans con el paquete Visual Web Pack, mediante la descripción detallada de la implementación de una aplicación sencilla que integre alguno de los componentes mas comunes de Java Server Faces y adicionalmente el paquete para manejo de correos electrónicos JavaMail. Java Server Faces El API de Java Server Faces, ofrece un marco de trabajo estándar, para la construcción de aplicaciones Web. Esta tecnología provee al usuario con una serie de interfaces de usuario (UI) prediseñadas y un modelo de eventos para la comunicación entre las interfaces de usuario y los objetos que van debajo de la aplicación. [1] Java Server Faces fue diseñado para ser una herramienta amigable, para que las herramientas de desarrollo de software soporten el método de generación de interfaces de usuario a través de arrastre y pegado (Drag and Drop), además de permitirle a grupos de terceros, desarrollar inter faces de usuario adicionales que cualquier desarrollador de Java Server Faces pueda utilizar. Los principales componentes del API de Java Server Faces son: • Un API y una implementación de referencia para: representar componentes UI, manejo de eventos, validación del lado del servidor y conversión de datos; definir la navegación ent re páginas, sopor t ar internacionalización y accesibilidad. • Una librería de etiquetas Java Server Pages (JSP) personalizadas para dibujar componentes UI dentro de una pagina JSP. [2] Estructura de una aplicación Java Server Faces Las aplicaciones con Java Server Faces, son aplicaciones Web construidas sobre el marco de trabajo de Java Servlet, por lo que siguen el mismo esquema empaquetado general de cualquier otra paliación J2EE. Como se aprecia en la siguiente figura la interfase de usuario creado con tecnología Java Server Faces (representado por myUI) se ejecuta en el servidor y se renderiza en el lado del cliente.
Browser
HTTP Request
JavaServer myform.jsp
renders HTML
myUI
HTTP Response
Figura. Esquema Java Server Faces Tomado de: http://www.programacion.com/java/tutorial/jsf_intro/1/
Managed Beans Es un objeto JavaBean que es instanciado por la aplicación Web con Java Server Faces y almacena ya sea un session scope, application scope o request scope, lo cuales cumplen con las siguientes características [3]: • SessionBean: Este session scope inicia cuando el usuario accede por primera vez a una página de la aplicación Web y termina cuando la sesión del usuario termina por tiempo de inactividad o cuando la aplicación invalida dicha sesión. • ApplicationBean: Este application scope inicia cuando se inicializa la paliación y dura hasta que el servidor la detiene. Toda la información almacenada en este bean, esta disponible para toda sesión y solicitud que utilice el mismo mapa de paliación. • RequestBean: Este request scope inicia cuando el usuario envía una solicitud a través de una página y termina cuando la respuesta esta completamente entregada, cualquiera que sea la página. En Java Server Faces, los manager beans contienen métodos de hacino, los cuales son invocados por el marco de trabajo del Java Server Faces, en respuesta a la acción de un usuario o un evento que contenga el código que realmente manipula el comportamiento del modelo de información detrás de la aplicación. JavaMail Es un conjunto abstracto de APIs que modelan un sistema de correo, que permite leer, componer y enviar mensajes electrónicos. Está diseñado para proporcionar acceso independiente del protocolo para enviar y recibir mensajes dividiéndose en dos partes: • Cómo enviar y recibir mensajes independientemente del proveedor y/o protocolo.
Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007
• La segunda parte habla de lenguajes específicos del protocolo como SMTP, POP, IMAP, y NNTP [4]. Netbeans con Visual Web Pack Netbeans es un ambiente integrado de desarrollo para Java y J2EE, permite crear aplicaciones de consola y Applets a través de programación icónica basada en formularios, tiene soporte en tiempo real para depurar errores, permite integrar los contenedores Web y Motores de Bases de Datos para el desarrollo de aplicaciones Web. Es una herramienta versátil que ayuda a mejorar el desarrollo y se puede tener una orientación de usabilidad desde el punto de vista del cliente al permitirle visualizar formularios y demás interfaces del proyecto que se este desarrollando. [5] Visual Web Pack, es un paquete adicional de Netbeans, que permite la integración de componentes Java Server Faces, para el desarrollo de aplicaciones Web. Es una herramienta amigable, que utiliza la tecnología Drag and Drop que facilita y reduce el tiempo de programación en un tiempo considerable, ofreciendo opciones confiables en cuando a diseño e implementación de aplicaciones. Incluye una librería comprensible de componentes Java Server Faces como Tablas, Calendarios, Árboles, Tab Set, Carga de Archivos y muchos otros. [6] Diseño de la aplicación La aplicación Web que se desarrollara en este artículo pretende generar un mayor entendimiento a las tecnologías mencionadas al inicio del ar tículo y corresponde a la implementación de una minina parte de lo que la tecnología Java Server Faces tiene para ofrecer.
Manejo y configuración del Software Por ser una aplicación Web realizada con Java Server Faces, para su diseño, desarrollo e implementación, se requieren de las siguientes herramientas y tecnologías de Software: • JDK 1.6 o superior, el cual permite la implementación de cualquier tipo de aplicación en lenguaje Java, este recurso se encuentra disponible en http://java.sun.com/javase/downloads/index.jsp, así como las instrucciones para correspondiente instalación, las cuales no hacen parte de este artículo. • Java Sever Faces Components / Java EE Platform, las cuales se encuentran incluidas en los paquetes 1.2 con Java EE 5 y 1.1 con J2EE 1.4, estos paquetes así como las instrucciones de instalación se encuentran disponibles en: http://java.sun.com/javaee/javaserverfaces/download.ht ml. • Apache Tomcat1 5.5 o superior, el cual brinda las funcionalidades de un servidor de aplicaciones Web. Este servidor se encuentra disponible en: http://tomcat.apache.org/, así mismo se encuentra la documentación necesaria para su instalación e implementación. • JavaMail Api 1.4 o superior, este paquete se encuentra disponible en: http://java.sun.com/products/javamail/downloads/index. html. • Netbeans 5.5 o superior, con el paquete adicional Visual Web Pack, el cual se encuentra disponible así como las instrucciones para su instalación en: Http://www.netbeans.org/products/.
La aplicación como tal es una simple encuesta, en la que se implementaran algunos de los componentes mas comunes en el desarrollo de aplicaciones Web y que están presentes en el paquete de Visual Web Pack de Netbeans como son: RadioButtons, CheckBox, DropDown List, TextField, L abels y But tons, adicionalmente se implementara el uso de JavaMail y los Managed Beans mencionados con anterioridad en este articulo.
Construcción de la aplicación
La librería JavaMail se utilizara para el envío de las respuestas seleccionadas en la encuesta, al correo electrónico digitado por el usuario. En cuanto a los Scopes, la aplicación creada utilizara un objeto en el application scope para contar los personas que han realizado la encuesta, un objeto en el session scope, para asegurarse que la persona realice la encuesta una vez por sesión y un objeto en el request scope para almacenar el correo electrónico al que se enviara el mail con las respuestas seleccionadas.
Creación del proyecto nuevo:
Una vez se tienen instaladas todas las herramientas de software necesarias para la implementación de una aplicación Web, utilizando Java Server Faces y Netbeans con Visual Web Pack, es posible iniciar la construcción de una aplicación Web sin problemas, para esto se deben seguir los siguientes pasos:
1. Inicie el IDE 2 de Netbeans usando la opción adecuada desde la siguiente lista:
1 Para la implementación de la aplicación descrita en este articulo, se utilizara el Bundled Tomcat 5.5.17, que viene incluido en el paquete Enterprise de Netbeans, disponible en: http://www.netbeans.org/products/enterprise/. 2 IDE, siglas en inglés de Integrated Development Environment o Entornos Integrados de Desarrollo.
43
44
Universidad El Bosque - Facultad de Ingeniería de Sistemas
- Windows. Doble-click al icono de NetBeans ubicado en el escritorio.
nodo de la página y selecciones Set as Start Page desde el menú emergente.
- Mac. Doble-click al icono de NetBeans ubicado dentro de la carpeta de instalación.
Creación de las páginas Web.
- Sistema Operativo Solaris (SPARC y x86 Platform Editions) y Linux. Navega a el directorio bin de tu instalación de NetBeans, digite ./netbeans y presione Enter. 2. Cree un proyecto nuevo escogiendo File > New Project desde el menú principal. En el panel de categorías, selecciona Web, y en el panel de proyectos, selecciona Visual Web Application. 3. Click en Next. 4. Escoja un servidor y una versión de Java EE. 5. Nombre el proyecto como desee y haga click en finalizar. El IDE crea el directorio del proyecto dentro de tu directorio personal por defecto. 6. En la ventana Projects aparecerá el nombre de la aplicación que acaba de crear, para examinar el proyecto simplemente basta con desplegar los nodos que aparecen dentro de cada proyecto, como se muestra en la siguiente figura.
Las aplicaciones Web utilizan paginas JSP y pages beans, en lugar de paginas HTML, ya que las paginas JSP, permiten que el servidor genere respuestas HTML para que sean desplegadas en el navegador del cliente. La page bean, contiene la lógica que el servidor ejecuta cuando genera una respuesta HTML, asi mismo contiene la lógica que el servidor ejecuta cuando el cliente ha enviado una página. Para la aplicación de este articulo se utilizaran dos paginas Web, la primera se llama Encuesta.jsp y será la pagina de inicio que contenga las preguntas de la encuesta de la aplicación y la segunda se llama, Confirmacion.jsp, la cual se encargara de desplegar el mensaje de confirmación de que las respuestas de la encuesta ha sido enviada con éxito al correo seleccionado. Como aparece en la sección anterior, en el momento en que se crea el nuevo proyecto, Page1.jsp aparece como la pagina de inicio por defecto, para la aplicación de este articulo, se renombrara esta pagina por Encuesta.jsp y adicionalmente se creara una segunda pagina Confirmacion.jsp así: 1. Haga click derecho en el nodo Page1.jsp y seleccione la opción Rename del menú desplegable. Digite el nuevo nombre del archivo y haga click en Continuar. 2. Para crear la segunda pagina haga click derecho sobre el nodo Web Pages, seleccione New > New Page del menú desplegable. Digite el nombre de la pagina y haga click en finalizar. Ahora hay que insertar los siguientes componentes que compondrán la encuesta:
Figura 1. Ventana Projects 7. Bajo el nodo Web Pages esta el nodo Page1.jsp. El IDE crea esta página por defecto y la hace la página de inicio. La marca de flecha cerca a el nodo identifica a la página como la página de inicio. Si desea utilizar una página diferente como página de inicio, haga click derecho en el
• Label: los cuales contendrán las etiquetas con el titulo de la encuesta y las preguntas que hay en ella. • Static Text: desplegara el correo al que se enviaron las respuestas de la encuesta en la página de confirmación. • RadioButton Group, CheckBox Group, DropDown List y TextField: corresponden a las respuestas de las preguntas de la encuesta. • Button: se encargara de enviar las respuestas al usuario que realiza la encuesta al correo electrónico seleccionado y volver a la página de inicio desde la página de confirmación. El resultado que se espera obtener es el que se aprecia en la siguiente figura
Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007
Figura 2. Diseño de la Encuesta :Para agregar los componentes mencionados como aparecen en la figura anterior, siga los siguientes pasos: 1. Haga doble clik sobre el nodo Encuesta.jsp, para abrir la página en el editor visual el cual esta en el área de edición, como aparece en la siguiente figura:
Figura 4. Paleta de Componentes 4. Repita el paso 3, ahora colocando los labels uno debajo del otro dejando un espacio entre cada uno de ellos para colocar los componentes correspondientes a las respuestas para completar las preguntas de la encuesta con las siguientes frases en el siguiente orden: • ¿Le pareció interesante el Articulo? • Seleccione sobre los cuales le gustaría recibir mas información. • Seleccione en la escala de 1 a 10 de la siguiente lista, la opinión que tiene sobre el artículo, siendo diez la más alta y uno la más baja. Figura 3. Diseñador Visual 2. Para inser tar los componentes mencionados, seleccione cada uno de ellos de la paleta de componentes (figura 3) y arrástrelo sobre la página ubicada en el área de edición. 3. Seleccione el componente de tipo Label y arrástrelo al centro de la página de diseño. Digite la frase “Encuesta Articulo”, haga click sobre otra sección de la página para confirmar la frase que acaba de digitar. Si desea modificar el contenido, haga doble click sobre el Label Label.
• Digite la cuenta de correo electrónico donde desea recibir sus respuestas a la encuesta. 5. Seleccione el componente RadioButton Group de la paleta y arrástrelo debajo de la primera pregunta de la encuesta. Haga click derecho sobre el componente y seleccione la opción Configure Default Options del menú emergente. Modifique los campos Display y Value de la tabla, coloque los valores “Si” y “No” para ambos campos en una fila distinta cada uno, haciendo doble click sobre cada uno de los campos que desea modificar. Para eliminar o adicionar una fila en la tabla, haga click sobre los botones Delete y New respectivamente.
45
46
Universidad El Bosque - Facultad de Ingeniería de Sistemas
6. Seleccione el componente CheckBox Group de la paleta y arrástrelo debajo de la segunda pregunta. Siga los pasos de la opción Configure Default Options, pero ahora con los va lore s sig uient e s: “Java Ser ver Fac e s”, “Scopes”,“Netbeans conVisual Web Pack”y “Servlets y JSP”. 7. Seleccione el componente DropDown List de la paleta y arrástrelo debajo de la tercera pregunta. Siga los pasos de la opción Configure Default Options del paso 5 con los siguientes valores: “1”, ”2”, ”3”, ”4”, ”5”, ”6”, ”7”, ”8”, ”9” y”10”. 8. Seleccione el componente TextField de la paleta y arrástrelo debajo de la cuarta pregunta. 9. Seleccione el componente Button de la paleta y arrástrelo debajo del TextFiel que acaba de colocar. Modifique su texto a “Enviar”. 10. Presione las teclas ctrl.+ s para salvar los cambios realizados en la página. Para la página de confirmación: 1. Haga doble click sobre el nodo Confirmacion.jsp 2. Seleccione el componente Label de la paleta y modifique el texto a “Gracias por realizar la encuesta. Sus respuestas han sido enviadas a su cuenta de correo:”. 3. Seleccione el componente Static Text de la paleta y arrástrelo enfrente del componente Label que acaba de colocar. 4. seleccione el componente Button de la paleta y arrástrelo debajo del Static Text que acaba de colocar. Modifique el texto a “Volver”. 5. Presione las teclas ctrl.+ s para salvar los cambios realizados en la página. Configuración de los objetos en los scopes. Para complementar el funcionamiento de la aplicación, se deben agregar una serie de objetos que almacenaran los valores que componen la encuesta y que hacen parte de la aplicación. Cada uno de estos objetos serán agregados en los scopes según las siguientes características: 1. contador: almacenará el número de personas que han participado en la encuesta. Será adicionado en el application scope, por lo que se requiere que persista durante las sesiones de la aplicación. 2. aParticipado: un objeto de tipo Booleano, el cual verifica si el usuario ha participado o no en la encuesta durante su sesión, por eso será adicionado en el session scope.
3. correo: almacena el correo al que serán enviadas las respuestas de la encuesta. Por ser un valor que únicamente se requiere cada vez que el usuario participa en la encuesta, será adicionado en el request scope. Para adicionar los objetos anteriores a sus respectivos scopes, se deben seguir los siguientes pasos: 1. En la ventada Outline ubicada debajo de la ventana P roje c t s, haga click dere cho s obre el no do ApplicationBean1, seleccione la opcion Add > Property. Digite el nombre contador, seleccione el tipo y haga click en el botón Ok. Haga doble click en el nodo ApplicationBean1 para abrir el código fuente, busque el objeto contador que acaba de crear y asígnele el valor igual a cero (0). Presione ctrl.+s, para guardar los cambios y ctrl.+f4 para cerrar la ventana. 2. Repita el paso anterior para el nodo SessionBean1, adicione la propiedad aParticipado, seleccione el tipo boolean. Haga doble click en el nodo SessionBean1 para abrir el código fuente, busque el objeto aParticipado que acaba de crear y asígnele el valor igual a false false. Presione ctrl.+s, para guardar los cambios y ctrl.+f4 para cerrar la ventana. 3. Al igual que en el paso anterior, en el RequestBean1, adicione la propiedad correo, de tipo String. Configuración de la acción del botón Enviar. Una vez se tienen hechas las páginas y configurados los objetos en los scopes, se puede configurar las acciones que se realizaran cuando se realice un click sobre el botón Enviar que se coloco en la página de la encuesta. Para esto siga los siguientes pasos: 1. Haga doble click sobre el nodo Encuesta.jsp. 2. Seleccione el botón Enviar y haga doble click sobre el mismo. Una ventana con el código fuente de la página aparecerá en el área de edición. Dentro de esta se creará automáticamente el método button1_action(). 3. Dentro del método anterior copie y pegue el siguiente código. //Método para aumentar el objeto contador getApplicationBean1().setContador(getApplicationBean 1().getContador()+1); //Método para cambiar el estado del objeto aParticipado getSessionBean1().setAParticipado(true); //Metodo para asignarle el valor al objeto correo getRequestBean1().setCorreo(textField1.getText().toStrin g());
Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007
//Metodo para obtener las respuestas seleccionadas de la pregunta 2 de la encuesta String[] seleccion = new String[checkboxGroup1.getSelected().toString().length() ]; seleccion = (String[])checkboxGroup1.getSelected(); String respuesta = new String(""); for(int i=0; i<seleccion.length;i++){ respuesta = respuesta+seleccion[i]+"\n"; } // Dirección de correo a la que se envían las respuestas de la encuesta. String to = (String)textField1.getText(); String subject = "Respuestas Encuesta"; // Asunto del correo. //Mensaje del correo. String message = new String("Las respuestas de su encuesta son:\n\n"+label2.getText().toString()+"\n\n"+ radioButtonGroup1.getSelected().toString()+"\n\n"+labe l3.getText().toString()+"\n\n"+ respuesta+"\n\n"+label5.getText().toString()+"\n\n"+dro pDown1.getSelected().toString )+"\N\n"+ "El numero de personas que han participado en la encuesta son: "+"\n\n"+getApplicationBean1().getContador()); //Direccion del servidor de correo SMTP. String mailhost = "smtp.correo"; // this code may not work //Nombre de usuario de la cuenta de correo de donde se envia el correo. String user = "encuestaarticulo@mail.com"; //Contraseña del usuario de la cuenta de correo. String password = "prueba"; boolean auth = true; boolean ssl = true; Properties props = System.getProperties(); if (mailhost != null){ props.put("mail.smtp.host", mailhost); props.put("mail.smtps.host", mailhost); } if (auth){ props.put("mail.smtp.auth", "true"); props.put("mail.smtps.auth", "true"); } // Get a Session object Javax.mail.Session session = Javax.mail.Session.getInstance(props); // construct the message javax.mail.Message msg = new MimeMessage(session);
try { // Set message details Msg.setRecipient(javax.mail.Message.RecipientType.TO, new InternetAddress(to)); msg.setSubject(subject); msg.setSentDate(new Date()); msg.setText(message); // send the thing off SMTPTransport t = (SMTPTransport)session.getTransport(ssl ? "smtps" : "smtp"); try { if (auth) t.connect(mailhost, user, password); else t.connect(); t.sendMessage(msg, msg.getAllRecipients()); }finally { t.close(); } log("Mail was sent successfully."); }catch (Exception e) { if (e instanceof SendFailedException) { MessagingException sfe = (MessagingException)e; if (sfe instanceof SMTPSendFailedException) { SMTPSendFailedException ssfe = (SMTPSendFailedException)sfe; log("SMTP SEND FAILED:"); } Exception ne; while ((ne = sfe.getNextException()) != null && ne instanceof MessagingException) { sfe = (MessagingException)ne; if (sfe instanceof SMTPAddressFailedException) { SMTPAddressFailedException ssfe = (SMTPAddressFailedException)sfe; log("ADDRESS FAILED:"); log(ssfe.toString()); log(" Address: " + ssfe.getAddress()); log(" Command: " + ssfe.getCommand()); log(" RetCode: " + ssfe.getReturnCode()); log(" Response: " + ssfe.getMessage()); }else if (sfe instanceof SMTPAddressSucceededException) { log("ADDRESS SUCCEEDED:"); SMTPAddressSucceededException ssfe = (SMTPAddressSucceededException)sfe; } } }else { log("Got Exception: " + e); } }
47
48
Universidad El Bosque - Facultad de Ingeniería de Sistemas
Nota: El servidor de correo, corresponde a la dirección electrónica del protocolo SMTP que permite el envió de correos electrónicos desde un servidor de correo determinado. Además el servidor de correo debe tener habilitado el puerto 465 para el protocolo SMTPS que permite la autenticación de un usuario y contraseña en una cuenta de correo. 4. Para que la aplicación pueda enviar los correos electrónicos, es necesar io adicionar la librer ía correspondiente al paquete de JavaMail, para esto siga las siguientes instrucciones: • En la ventana Proyects, haga click derecho sobre el nodo Libraries > Add JAR / Folder. • Busque el archivo mail.jar, seleccionelo y haga click abrir. 5. Adicione los siguientes imports al principio del código fuente de la página Encuesta.jsp import java.util.Date; import javax.faces.application.FacesMessage; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.validator.ValidatorException; import javax.mail.*; import java.util.Properties; import javax.mail.internet.MimeMessage; import javax.mail.internet.InternetAddress; import javax.mail.internet.*; import javax.mail.Address; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.SendFailedException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.URLName; import javax.mail.event.TransportEvent; import com.sun.mail.smtp.SMTPTransport; import com.sun.mail.smtp.*; import com.sun.rave.web.ui.component.Message; import javax.faces.FacesException; 6. En el código fuente, busque el metodo prerender() y adicione el siguiente código: if(getSessionBean1().isAParticipado()) Button1.setDisabled(true); 7. Presione las teclas ctrl+s para salvar los cambios. Configuración de la pagina Confirmacion.jsp La página de confirmación despliega un mensaje de agradecimiento y confirmación del correo al que será enviado el correo electrónico con las respuestas de la encuesta, para completar este procedimiento siga los siguientes pasos: 1. Haga doble clik sobre el nodo Confirmacion.jsp, en la ventana Projects. 2. En el área de edición, haga click sobre el botón Java para abrir el código fuente de la página. 3. Busque el método prerender() y adicione el siguiente código:
StaticText1.setText(getRequestBean1().getCorre o().toString()); 4. Presione las teclas ctrl+s para salvar los cambios. Configuración de la navegación de la aplicación. Para configurar la navegación de la aplicación de los botones siga los siguientes pasos (Figura 5):
Figura 5. Página de Navegación 1. En la ventana Projects, haga doble click sobre el nodo Page Navigation. 2. Haga click sobre Encuesta.jsp para agrandar el icono. 3. Seleccione el puerto de conexión junto al button1 y arrástrelo hasta el icono de Confirmacion.jsp. 4. Haga doble click sobre el label del conector que acaba de crear para seleccionar el modo de edición. Escriba enviar y presione enter. 5. Haga click sobre Confirmacion.jsp para agrandar el icono. 6. Seleccione el puerto de conexión junto al button1 y arrástrelo hasta el icono de Encuesta.jsp. 7. Haga doble click sobre el label del conector que acaba de crear para seleccionar el modo de edición. Escriba volver y presione enter 8. Presione las teclas ctrl. + s para guardar los cambios. Ejecutar la aplicación. Una vez se ha completado todos los pasos anteriores, solo resta poner en marcha la aplicación, para esto simplemente haga click sobre el botón Run Main Project en la barra principal de tareas.
CONCLUSIONES La utilización de Java Server Faces a la hora de desarrollar una aplicación Web, puede ser la mejor opción, debido a que permite desarrollar aplicaciones en un menor tiempo
Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007
que cualquier otra tecnología similar, además de disminuir la escritura de código y facilitar el diseño a los programadores. Sin embargo Java Server Faces, oculta mucha de la arquitectura de una aplicación Web lo que podría dificultar eventuales modificaciones a la misma, consecuencia de un requerimiento nuevo que la tecnología no maneje. Netbeans junto con el paquete Visual Web Pack, se convierte en una herramienta versátil y amigable que permite la fácil construcción de nuevas aplicaciones Web o de cualquier otro tipo que implemente tecnología Java, J2EE, Java Server Faces, y muchas otras. REFERENCIAS [1] Bergsten Hans, Java Server Faces, O'Reilly, 2004. [2] Java, “Introduction to Java Server Faces part 1”, disponible en ht t p://w w w.devshed.com/c/a/Java/Int roduc tion-toJavaServer-Faces-1/ (11/05/2007) [3] Netbeans, “Understanding Scopes and Managed Beans”, disponible en ht t p://w w w.netb eans.org/k b/55/v w p-scop es.ht ml (11/05/2007) [4] Java en Castellano. “API de JavaMail”, disponible en http://w w w.programacion.com/java/tutorial/javamail/ (11/05/2007) [5] Netbeans, IDE para Java y J2EE, disponible en http://www.netbeans.org (11/05/2007) [6] Netbeans, Introduction to the Netbeans Visual Web Pack, disponible en h t t p : / / w w w. n e t b e a n s.o r g / p r o d u c t s / v i s u a l w e b / (11/05/2007)
Artículo de informe de resultado de proyecto de Informática. El Autor Alejandro Pieschacón Rueda Ingeniero de Sistemas de la Facultad de Ingeniería de Sistemas de la Universidad El Bosque. adroit3@yahoo.com
49
Pauta de Cortesía
Pauta de Cortesía
Desarrollo de una Interfaz Gráfica Multiplataforma para una Herramienta de Computación Forense Edward Andrés Corredor Rondón
Resumen
Abstract
La Computación Forense es la ciencia que estudia la forma de aplicar métodos legales, protocolos y técnicas para obtener, analizar y preservar evidencia digital, se han desarrollado herramientas como: Encase, Helix, CFIT1, Snort entre otros, los cuales tienen como misión detectar la presencia de intrusos, aplicaciones o estaciones de trabajo que atenten contra la seguridad de la compañía. El presente artículo muestra una panorámica general de la Computación Forense, resaltando en primer lugar su importancia, sus objetivos a continuación se muestran algunos de los tipos de programas y herramientas usadas por las compañías, haciendo especial énfasis en Snort, objetivo de este documento. Para finalizar, se da una breve explicación de la adaptación de la aplicación de Software Libre a esta herramienta de Computación Forense.
Computer Forensics is the science that studies the way to apply legal methods, protocols and techniques to obtain, to analyze and to preserve digital evidence, have been developed tools like: Encase, Helix, CFIT1, Snort among others. Their mission is to detect the presence of intruders, applications or workstations, attempting against security of a business. This article shows a general view of Computer Forensics, standing out in the first place its importance, its objectives next are some of the types of programs and tools used by the companies, doing special emphasis in Snort, objective of the investigation.
Palabras Clave: Computación Forense, Software Libre, Snort, Detector de Intrusos, SWING, JFC, Evidencia Forense e Intrusión.
Keywords: Forensic computation, free Software, Snort, SWING, JFC, Forensic Evidence.
52
Universidad El Bosque - Facultad de Ingeniería de Sistemas
I. INTRODUCCIÓN Es un hecho que durante la última década las intrusiones e incidentes han aumentando en gran escala debido al elevado e indebido uso de Internet, de manera paralela a la presencia de aplicaciones y comportamientos extraños del PC[4]. Se ve a diario los constantes ataques que sufren los servidores de las compañías más importantes (Microsoft, Yahoo, entre otros), pero nadie está a salvo de los ataques de los hackers. Aunque la información de un usuario final puede ser inútil, su ordenador se puede convertir en el origen de un ataque a un tercero Debido a lo anterior, las empresas a nivel mundial están siendo preparadas para contrarrestar nuevos ataques, están invirtiendo en seguridad, capacitando el personal, acondicionando diferentes herramientas, contratando empresas que se encargan de la seguridad e instalando programas que detectan y solucionan problemas de virus y ataques, debido a que el problema de inseguridad siempre va a existir aún cuando se actualice dichas herramientas. La solución de muchos usuarios es poner un Firewall que cierra todos aquellos puertos (Servicios) que no se utilizan, reduciendo de esta forma la posibilidad de ataques. Pero, ¿es esto suficiente? La respuesta es no. El Firewall representa una puerta, que prohíbe el paso a todos aquellos servicios no autorizados, pero que deja pasar aquellos que el usuario detrás del Firewall necesita usar. [6]. Dentro de la investigación que se realizó, se inició con la búsqueda de información pertinente a la Computación Forense en Colombia, en el mundo, empezando desde las bibliotecas, pasando por las universidades hasta las páginas más reconocidas sobre este tipo de información, este proceso de investigación arroja un resultado bastante evidente debido a que esta ciencia es nueva en el mundo, se observa que su nacimiento se debió a problemas que no tienen nada que ver con lo sucesos que se presentan en la red, como es el asesinato, las matanzas, a diferentes personas, hoy por hoy con el auge de la Internet donde se presenta otro tipo de infracciones que dio lugar a asociarlas a delitos y por ende darle el nombre de computación forense, posteriormente se realiza un est udio de la s her ram ient a s ex istentes y su funcionamiento, saber si eran comerciales o de código abierto, se realiza un paralelo debido a que las empresas que les interesa el software tienen solvencia económica y exigen garantía que las empresas comerciales lo ofrecen pero hay factores que no conviene debido a los problemas que genera tener Sistemas operativos como Windows donde son muy vulnerables que dichas empresas migran su tecnología a Sistemas operativos que no tengan esos
inconvenientes, además se evalúa las empresas que en Colombia utilizan esta tecnología gracias a que previamente se investiga de empresas que trabajen en esa área y se encuentra con una empresa en Colombia que compra las licencias y trabaja con el software en las empresas que son los usuarios finales. además se evidencia que tan solo en el área de educación se encontró a la Universidad Los Andes como pionera en este tipo de tema pertinente a la seguridad informática, la Asociación de Ingenieros han realizado una serie de foros, seminarios sobre las herramientas existentes a nivel comercial y código abierto, además las empresas dan la razón por la cual no utilizan ese tipo de tecnología debido a la mala información que tienen sobre ellas, aduciendo que solo es necesario el antivirus, cortafuegos y Proxy para una protección completa y que a esto se le suma el costo que esto ofrece, esto lleva a realizar un listado de aplicativos que existen para solucionar todos los inconvenientes que trata la Computación Forense, asimismo se evidencia que las herramientas comerciales con muy elevados costos y que en un porcentaje muy pequeño las empresas en Colombia invierten en este tipo de software, caso cont rar io de las empresas llamadas Mipy mes (Microempresas, pequeñas y medianas empresas) donde un porcentaje bajo utiliza este tipo de software pero con licencia GLP. Por esta razón, el incidente representa un reto para la organización, ya que implica un alto grado de responsabilidad ante la compañía; para demostrar lo efectivo y eficaz que se toman las decisiones frente a un problema que aumenta día a día, además es un compromiso que se plantean para actuar de la manera efectiva y evitar problemas que puedan comprometer la información privada de la organización. La Computación Forense cuenta con una serie de especialistas con conocimientos en los problemas que se generan, dichas personas están preparadas para efectuar el correctivo apropiado, con normas y fundamentos que permiten determinar las posibles causas de la intrusión, perdida de información o presencia de aplicativos indebidos y con base a lo anterior establecer hipótesis sobre el caso presentado y obtener la evidencia que sustente la hipótesis.[1] De igual manera Rehman afirma: “para que los investigadores puedan cumplir satisfactoriamente este pro ce dim iento se han cre ado prog rama s y procedimientos para la obtención de un resultado optimo, dentro de los requisitos que exige la comunidad de seguridad en el mundo se encuentra la realización de cursos, especializaciones y certificaciones que persiguen el buen desempeño de los funcionarios responsables de una buena investigación”. [9] El presente artículo muestra cual fue el proceso para adapt ar una aplicación a una her ramient a de Computación Forense, para esto en la primera parte se hablará de la historia que rodea al área que pertenece la
Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007
aplicación antes mencionada, en la segunda se dará explicará el funcionamiento alguna de las herramientas mas utilizadas de Computación Forense y cuáles son las mas utilizadas en Colombia. Posteriormente, se explicará la herramienta escogida para adaptarle el entorno gráfico, y finalmente el procedimiento que se tomo para cumplir dicho objetivo. II. ESTUDIO Para poder tener un entendimiento claro y preciso de la siguiente investigación es necesario que el lector tenga claro los conceptos de: Detector de Intrusos, Intrusión, Sniffer, Evidencia Digital, Licencia GPL y Software Libre: Los Sistemas de Detección de Intrusos, buscan delatar anomalías, equipos y aplicaciones que desean atentar con la seguridad del equipo o la red. En la figura No. 2 se muestra la estructura de un Detector de Intrusos en una Red.
InterNet Servidor NIDS
irregularidad o anomalía, este tipo de problema que se genera en la red, ya sea intento de ingreso por parte de personas no autorizadas, la utilización de algún aplicativo no autorizado, la presencia de virus de alguna característica en particular, esto se le llama Intrusión, así mismo se tendrá a un Sniffer que tiene como función observar y manipular los paquetes generados en una red local o Intranet o en su defecto el trafico que se genera en una máquina en particular para su posterior análisis. Posteriormente, La Evidencia Digital como elemento fundamental de la Computación Forense, que según Alder Raven es cualquier tipo de información que está sujeta a investigación por parte de personal especializado en el tema, a partir de una extracción ya sea en una red, dentro de un equipo, [8] lo importante es que después de la extracción, el investigador debe procurar no alterar la evidencia por que es la materia prima para que ellos puedan generar un reporte de lo que haya sucedido. También, el valor agregado que se le da a este tipo de herramientas es agruparlo dentro de la categoría de Software Libre que no implica que se distribuya sin costo alguno, por el contrario el objetivo es que los desarrolladores aporten alguna mejora o actualización y la dejen a disposición de la comunidad. Caso contrario sucede con las herramientas bajo Licencia GPL son aquellas que se distribuyen libremente para el uso público de esta aplicación. Retomando a la idea principal de la Computación Forense se define Según Óscar López: “la Computación Forense recibe el nombre gracias al FBI que en 1984, crea el programa de almacenamiento magnético, este inicia el equipo de análisis de computadores (CART), en 1993 se realiza la primera conferencia internacional de evidencia computacional, mas tarde en 1995 se crea la Organización Internacional de evidencia computacional (IOCE), en 1997 los países que conformaban la organización mundial deciden que el personal que iba a encargarse de este problema debía ser entrenado y equipado para tratar crímenes de alta tecnología”.[5]
Figura 1. Sistema Detector de Intrusos
En la figura No. 2. Se muestra la razón por la cual se crea este tipo de herramientas.
Se puede observar la arquitectura de una red pequeña que consta del servidor, firewall, Sistema Detector de Intrusos, dos estaciones de trabajo, un router, además el NIDS está en un nivel inferir del firewall para detectar los puertos que el usuario define como confiables, esto hace que este software filtre los paquetes que más pueda en caso contrario el Detector de Intrusos lo haga por él.
L a Comput ación Forense ofrece una ser ie de herramientas para las diferentes áreas que cubren particularmente la Detección de Intrusos, como son:
Además, como se dijo anteriormente un IDS (Sistema Detector de Intrusos), busca alertar sobre cualquier
• Herramientas de Recolección y Análisis de evidencia. • Herramientas de Detección de Intrusos. • Herramientas de Análisis de Paquetes (Sniffer).
53
54
Universidad El Bosque - Facultad de Ingeniería de Sistemas
Obtención fraudulenta de información confidencial vía E-mail En el trabajo En lugares públicos
E-mail suplantando banco o entidad de gobierno para “pescar” información real
PC conectada a Red
Envío masivo de E-mails para “pescar”incautos
7. Secuestro de sesión
Habilita función de control de sesión Habilita función de monitoreo de sesión Observa en pantalla lo mismo que ve el usuario
1. Phishing
Objetivo del fraude
Administrador de Red
Aplicaciones usadas Web sites visitados Obtiene información E-mails Pérdida de información Uso inadecuado de SW malicioso recursos de la PC Archivos ejecutables Juegos Imágenes Adjuntos en Script de Web pages Al ejecutar archivos Cuando pierde información El usuario se da cuenta Mediante E-mails Juegos Archivos ejecutables
Dispositivos HW + SW entre PC y teclado
6. Virus
Se reproduce y trasmite
“Worms” / No se reproducen Caballos de Troya / Esperan tiempo para activarse
“Pop ups” “Banners”
Frases típicas
2. Keyloggers
Fraudes por Internet
Variantes
Objetivo
SW que muestra publicidad Anuncios repentinos en pantalla
Incluyen Spyware Riesgo Sin conocimiento del usuario Sin permiso del usuario Descargar juegos Adware y Spyware Premios Videos gratis Botones “engañosos” se instalan Programas gratis Compartiendo archivos en Internet Adware Spyware
Incluyen
Claves de usuario Número de cliente Números de cuenta Password/Pin “estamos actualizando nuestros registros” “seguridad y mantenimiento” “investigación de irregularidades” “personalización de cuentas” “su cuenta ha sido congelada” “tenemos que reconfirmar sus datos” “su tarjeta de crédito ha sido cancelada” “usted tiene una suma grande de dinero en su cuenta, por favor verifique sus movimientos” “actualice sus datos”
3. Web Page Spoofing
5. Adware SW que envía información personal a terceros
Muchos programas gratuitos de Internet Carlos Ramírez Acosta Septiembre 2005
SW
Crear sitios Web falsos Capturar en “campos normales” datos personales / información de clientes El cliente “cree” que esta Digita número de usuario en una Web site real Digita contraseña Se accede a Web sites falsos x ligas concentradores de información
en Web sites visitados Nombres de usuario Contraseñas mal uso de la información obtenida Propósito Hacer Enviar publicidad Al “bajar” de Internet programas ilegales espía se carga Al “bajar” de Internet programas gratuitos
Información enviada
4. Spyware
Sin autorización Sin conocimiento
Almacenar texto que se digita en teclado Recuperar archivo y conocer información Identificador de usuario Equipos públicos y contraseñas Cafés Internet Hoteles Riesgo mayor Salas de aeropuertos Alguien con acceso físico a PC propia
Figura 2. Problemas generados en Internet Sin embargo y según consideración de Óscar López “la seguridad exige en el entorno actual una inversión de grandes cantidades de dinero debido a que las empresas utilizan software comercial que es muy costoso y esto se refleja en la credibilidad ante las grandes compañías como también en la garantía que ofrecen”.[5] Dentro de las áreas más estudiadas en Colombia de Computación forense se encuentra la Informática Forense que tiene mucho que ver con el análisis de dispositivos de almacenamiento, pero según Óscar López “la Informática Forense como el acto de recolección, análisis, identificación, preservación, extracción, interpretación, documentación y presentación de las pruebas en un contexto de inspección”.[5] De hecho, sobre Informática Forense se puede decir que en Colombia se relaciona con la perdida de información, que abarca, como podría ser una copia ilegal, intrusión desde o hacia un PC sin acceso absoluto, es por eso que los investigadores realizan unos procedimientos estándar para no alterarla. Entre tanto se puede mencionar 3 importantes herramientas mas utilizadas en Colombia: • Encase • Forensic Toolkit • WinHex (Forensic Edition). [2]
Dentro de las herramientas mencionadas se destaca encase, que realiza una copia y análisis de la información de los dispositivos, el aspecto negativo de esta herramienta se destaca dos aspectos, la primer a es la inversión que cuesta comprar la licencia y contratar la persona para la capacitación correspondiente y el otro factor se debe a que no esta diseñada para ambientes Web. III. IDS (SISTEMA DETECTOR DE INTRUSOS) De igual forma existen herramientas dentro de la Computación Forense que se mencionaron anteriormente y son los Sistemas de Detección de Intrusos que están compuestos por 3 elementos: • Base de Datos que proporciona los eventos • Motor de análisis en busca de evidencia • Un mecanismo de respuesta, por lo general es una alerta en forma de archivo que proporciona la información necesaria para conocer sobre el evento. La primera es el origen de los datos, es decir el sistema que genera las alertas de precaución, están clasificadas por categorías, sin olvidar que los Sistemas Detectores de Intrusos trabajan bajo 7 ambientes:
Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007
• Basados en una maquina • Basados en varias maquinas • Basados en aplicación • Basados en objetivos • Monitores híbridos • Basados en nodo de red La primera recoge datos generados por un PC, la segunda muy similar a la anterior pero como su nombre lo indica es inspeccionar los datos generados por dos o mas PCS, La tercera categoría registra la actividad generada por una aplicación en particular, la cuarta, generan registros propios que comparan con los paquetes que están en al red, la quinta categoría combina la funcionalidad de un Sniffer con la efectividad de un monitor basado en aplicaciones o en su defecto un Sistema detecto de Intrusos basado en red, y por ultimo la séptima es un caso particular y muy especial ya que se sitúa en el host para monitorear todo los paquetes que circulan en la red, realizando filtros, comparando patrones. De la misma manera que son herramientas poderosas por su grado de efectividad en el momento de la intrusión, también tiene puntos vulnerables o desventajas como son: • Producen una gran cantidad de falsas alarmas debido al comportamiento poco predecible de usuarios y sistemas. • Frecuentemente se requieren extensos "sesiones de entrenamientos" para el aprendizaje de eventos del sistema con el objetivo de obtener los perfiles de comportamiento “normal”. Pero fortalezas frente a aplicaciones de la misma funcionalidad, como los firewall: • Detectan comportamientos inusuales y poseen la habilidad de detectar síntomas de ataques sin tener un conocimiento detallado del mismo. Pueden producir información que luego se emplee para definir patrones de ataques y pueden ser usados para realizar un análisis de tendencias de las amenazas de seguridad.
funcionalidades, como dar estadísticas de los datos encontrados. Requiere conocimientos de seguridad, o de lo contrario se pierde mucha de su potencia. Existe una versión para Windows2000/NT. • Dragon: Otro IDS para Linux/Unix. Tiene 3 componentes, un NIDS, un HIDS y un monitor que permite recibir información de los NIDS/HIDS.[3] Es una buena opción si no se desea entrar en gran cantidad de detalles SNORT La primera opción fue el aplicativo que se seleccionó para realizar el proyecto de adapatacion de una herramienta de Software Libre, ver figura No. 3.
Figura 3. Sistema Detector de Intrusos “Snort” De la misma manera Snort hace parte del grupo de Software bajo GPL, requisito vital para incorporar a la investigación inicial y adicionalmente es multiplataforma, durante el desarrollo del aplicativo se evidencio del rustico uso de Snort y a pesar de que el autor del Libro oficial donde afirma sobre la sencilla forma de creación de patrones o reglas para el uso de Detección de Intrusos, la persona que se le asigne la administración de este software debe tener conocimientos básicos de redes, debido a que en el momento de que se crean las reglas se puede filtrar, por protocolo y puertos entre otros aspectos. Para el Desarrollo de la aplicación que se define como el Desarrollo de una Aplicación de Software Libre Multiplataforma para una herramienta de Computación Forense, se basa en el software dedicado a los Sistemas Detectores de Intrusos, Sniffer, a esto se le suma que su funcionamiento se debe aplicar tanto en Windows como en Linux.
No requiere de actualización constante de patrones. IV. HERRAMIENTAS IDS Existen algunos programas de libre distribución, principalmente basados en Linux. A continuación se presentan algunos IDS y software asociado: • Snort: Este es el IDS más famoso y potente en el mercado. [3] Está basado en análisis de patrones, aunque poco a poco empieza a implementar otras
Figura 4. Inicio Snort
55
56
Universidad El Bosque - Facultad de Ingeniería de Sistemas
El aplicativo posee 3 funcionalidades como se muestra en la figura No. 4. Que desempeña en la red y que fueron anteriormente explicadas, las cuales son: • Sniffer • Registro de Paquetes • IDS
Posteriormente el Registro de paquetes o loggueador de paquetes, además de mostrar la estadística, visualizará los paquetes que se monitorea para dar una idea de que está entrando a la red. El procedimiento para obtener tal resultado se compone de la siguiente manera: primero, se solicita la usuario la interfaz que se utilizará, que podría ser Eth0 que es la tarjeta de red principal que se utilizará o Loopback que es un tipo especial de interfaz que permite hacer conexiones condigo mismo, seguido del tiempo de ejecución y posteriormente las funcionalidades de modo Sniffer con la diferencia de desplegar en una ventana todos lo paquetes que se monitorearon.
Figura 5. Menú Snort El objetivo de la primera funcionalidad es proporcionar una estadística de los paquetes que están entrando y saliendo de la red perteneciente a los protocolos TCP, UDP, ARP y FTP, como se puede observar en la figura No. 6 donde solicita al usuario la interfaz o tarjeta de red, seguido de el tiempo en la cual se va a ejecutar dicha funcionalidad y por ultimo selecciona la acción que se ejecutará, el resultado de lo anterior se podrá observar en la figura No. 7 donde se desplegará un gráfico de la estadística de la información que se escaneo.
Figura 6. Snort en Modo Sniffer
Figura 7. Estadística del Modo Sniffer
Figura 8. Snort en Modo Registro de paquetes
Figura 9. Paquetes detectado en Registro de paquetes Por último el IDS que pretende, detectar el uso de programas prohibidos en las compañías como son emule, msn Messenger y el acceso a paginas de Internet para mayores de edad, estos patrones se definen en la figura No. 10, donde se escoge la interfaz, el tiempo de monitoreo y finaliza con la regla a evaluar, donde se evaluará una serie de irregularidades que el usuario define y al finalizar mostrará una advertencia e historial de ataques al PC en la figura No. 11.
Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007
Durante el proceso de elaboración del aplicativo se concluye que Snort tiene dos aplicativos totalmente separados, uno para redes inalámbricas y otros con redes de cableado y por tal razón se oriento el desarrollo a redes de cableado ya que las inalámbricas están iniciando su crecimiento en Colombia.
Figura 10. Snort en Modo IDS
Durante la investigación de Computación Forense, se concluye que en Colombia no hay conocimiento amplio del tema, causa por la cual no es utilizado este tipo de herramientas, debido a que es un tema muy reciente en el mundo según lo manifiestan las empresas que trabajan en esta área, pero que poco a poco está ganando terreno debido a los diferentes problemas que esta generando el auge del Internet, tan solo un 20% de la grandes empresas utilizan este tipo de tecnología. Muchas empresas colombianas familiarizan los problemas de intrusión con hackers únicamente y creen que solo el Firewall puede combatir este tipo de inconveniente, esto unido al problema de inversión hacen que las compañías no profundicen en el tema. VI. REFERENCIAS
Figura 11. Alerta enviada Snort en Modo IDS
V. CONCLUSIONES Durante el desarrollo de la aplicación se concluyó que Snort requiere de conocimientos previos en redes como protocolos y puertos, debido de que este software filtra e inspecciona estos elementos para la detección efectiva de intrusos. Así mismo, para el funcionamiento óptimo del aplicativo que se desarrolló se utilizó una base de datos o reglas, los cuales son patrones de detección y se utilizan para filtrar el contenido de la red. Además, Snort requiere ser instalado en el servidor de la red, debido a que requiere bastantes recursos para cargar efectivamente las reglas o patrones de filtro. Artículo de Reporte de Caso. Sometido a Arbitraje. El Autor Edward Andrés Corredor Rondón Ingeniero de Sistemas Universidad El Bosque. edwardcorredor@sistemasunbosque.edu.co
[1] Caloyannides Michael, Artech House, Boston, Computer and Intrusion, 2003. [2] Casey, E. (2000) Digital Evidence and Computer Crime, Academic Press [3] Días, Luis Miguel, Sistema de Detección de Intrusos, Universidad Carlos III de Madrid. [4] Gramajo, Alejandro. (2005, julio, 25), Introducción a conceptos de IDS y técnicas avanzadas con Snort Madrid: http://people.baicom.com/_agramajo/pgp.asc [5] López Óscar., Informática Forense: Generalidades, aspectos técnicos y herramientas, Bogotá (Colombia) [6] Rodríguez, Miguel Ángel, Snort: Análisis de la herramienta visión práctica. [7] Scientic Working Group on Digital Evidence SWGDE (2000) Digital Evidence,: Standards and Principles. Forensics Science Communications. Aprl. V2. No 2 [8] División forense de la Armada, http://www.forensicsintl.com/art12.html, mayo de 2007. [9] Página Oficial de Snort, www.Snort.org, mayo de 2007. [10] Servicios de Computación Forense, www.computerforensics.com Computer Forensic Ltda.
57
4 Semestres - 1797
EDUCACIÓN CONTINUADA. DIPLOMADOS, SEMINARIOS, CURSOS Y TALLERES
¿Uso de firmas digitales en MEA de EVA R-GRID? Daniel Burbano Gustavo Andrés Jiménez Lesmes
Resumen
Abstract
El presente artículo establece la necesidad de integrar firmas digitales en el funcionamiento e interacción de los MEA, Módulos Enseñanza Aprendizaje con el equipo de un usuario afiliado al sistema EVA R-GRID, Entorno Virtual de Aprendizaje Remoto sobre Grid.
The present article establishes the necessity to integrate digital signatures in the operation and interaction of ELM them, Education Learning Modules with the PC of a user affiliated with the system EVA R-GRID, Vir tual Surroundings of Remote Learning on Grid.
Palabras Clave: firmas digitales, MEA, EVA R-Grid.
Keywords: Digital signatures, MEA, EVA R-Grid.
60
Universidad El Bosque - Facultad de Ingeniería de Sistemas
I. INTRODUCCIÓN El proyecto EVA R-Grid (Entorno Virtual de Aprendizaje sobre Grid) proyecto en actual desarrollo por ingenieros de la Universidad El Bosque, pretende fusionar las principales ventajas de los sistemas distribuidos con procesos de enseñanza-aprendizaje específicos. Ventajas derivadas de la unificación de recursos de memoria, almacenamiento, procesado, de diversas máquinas pertenecientes a una red con el fin de ser usados para la solución de una tarea específica. Es decir que todas las máquinas participan en la solución de la tarea. La finalidad de este proyecto es constituir un sistema confiable y robusto que permita a los usuarios aprender los principales aspectos (conceptos, instalación, configuración) de aplicaciones informáticas de carácter libre (software libre), posibilitando realizar prácticas en equipos remotos en tiempo real, usando para esto las ventajas que le representa estar construido bajo una estructura de sistemas distribuidos. Este sistema EVA R-Grid esta constituido por una serie de módulos y equipos como se muestra en la figura 1.
Requerimientos Navegador Web IE Firefiox
Exterior
Servidor Web
Administrador de usuarios y del sistema
Servidor módulos MEA
Servidores Cluster
Nodos de trabajo Linux
Clientes
Administrador de usuarios y del sistema
las tareas que estos módulos solicitan a los nodos de trabajo Linux, además de esto, también tienen que consolidar las respuestas que reciben de los nodos Linux y generar una sola respuesta global. • Nodos de trabajo Linux: Son los encargados de dar solución a las tareas proveídas por los servidores cluster. Estos componentes tienen una relación bastante estrecha entre si y se mantienen en comunicación constante, intercambiando datos vit ales para el cor rec to funcionamiento del sistema. Es importante aclarar que el alto flujo de información implica implementar un sistema de seguridad para proteger los datos. La comunicación en del sistema en su estructura interna esta protegida por SSH, protocolo de interconexión de redes de manera segura. Sin embargo desde el sistema hacia el equipo del usuario final la información tiene otro tipo de tratamiento, es aquí donde se debe establecer si es necesario usar firmas digitales para la interacción entre el equipo del usuario y EVA R-Grid. II. MEA (Modulo Enseñanza Aprendizaje) Los MEAs se encargan de guiar al estudiante paso a paso en el aprendizaje de una aplicación informática (conceptos, instalación, configuración), han sido diseñados para que de forma interactiva el usuario realice prácticas de los conocimientos que está adquiriendo. En la Figura 2 se puede ver los componentes gráficos principales del módulo. 1. Sección Guión: Aquí aparece la información que el usuario aprenderá y seguirá para realizar las prácticas. 2. Sección Comandos: El usuario ingresa los comandos que se le indican mediante en la sección de guión.
Sistema
Figura 1.Arquitectura de EVA R-Grid Entre sus componentes se encuentran: • Módulos administrativos tanto de usuarios como de sistema: los cuales se encargan de la gestión de accesos, permisos y perfiles de aprendizaje. • Módulos Enseñanza Aprendizaje (MEA): Estos proveen el conocimiento y las herramientas para que los usuarios realicen el proceso de obtener el conocimiento y aplicarlo de forma remota sobre los distintos equipos del EVA RGrid. • Servidores Cluster: sobre estos recaen las peticiones realizadas por los MEAs y son los encargados de repartir
Figura 2. Componentes gráficos de MEA
Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007
3. Sección de resultados: Aquí se muestran los resultados obtenidos después de ejecutar los comandos.
asegurar la identidad de la información por medio de firmas no es la excepción.
La interacción del usuario con las tres secciones genera el aprendizaje y las prácticas. Es de destacar, que estas se realizan en tiempo real en un computador componente de EVA R-Grid.
¿Qué es una firma digital?
Una de las principales características de los MEAs, es que son accedidos de forma remota por parte de un usuario, es decir, que el usuario puede entrar a la aplicación desde cualquier equipo del mundo y trabajar con el como si lo estuviera haciendo de forma local.
una firma digital es una abstracción matemática de una firma real y pretende asociar la identidad de una persona u organización a un documento o a una aplicación.[1] ¿Cómo funciona una firma digital?
• El usuario ingresa la dirección para acceder al MEA en su navegador y realiza la petición de acceso.
Las firmas digitales se basan en el método de autenticación mediante llaves públicas, este método usa dos llaves una pública y una privada. Utilizando la llave privada (solo la conoce el que firma) para el cifrado de un mensaje se obtiene el mensajebfirmado digitalmente, aplicándole la llave pública (la conocen todos aquellos que están autorizados para leer el mensaje) para descifrarlo se obtiene el mensaje original.
• Se verifican los permisos del usuario, este accede al módulo y empieza a usarlo, ingresando los comandos que se le indican.
Si el mensaje es alterado de alguna forma la llave fallará al descifrarlo y por lo tanto se da cuenta que el mensaje ha sido modificado.
• El MEA se comunica con los servidores cluster de EVA RGrid solicitándoles la ejecución de una tarea.
Proceso: Por razones de eficiencia lo que se firma digitalmente no es todo el mensaje, sino un resumen obtenido del mismo denominado hash. Un mensaje realiza el siguiente recorrido entre emisor y receptor:
El MEA interactúa de manera global con el usuario de la siguiente manera:
• Estos responden y el módulo muestra la respuesta a el usuario final.
Emisor El trabajar de manera remota hace necesario que los módulos tengan que acceder a máquinas distantes y privadas, desde la máquina de uso personal y público pertenecientes a los usuarios afiliados al sistema EVA RGrid, esta intercomunicación entre máquinas de distintas características comerciales requiere de un intercambio de mensajes elevado como se pudo ver en la descripción global del funcionamiento, esta comunicación podría comprometer la estabilidad e integridad de información residente en alguna de las máquinas y por ende, pérdidas en dinero o datos para la organización. Por esta razón se ha dotado a cada uno de los módulos de una librería que permite realizar conexiones mediante SSH, que es un protocolo de interconexión de redes de manera segura. Esta librería ofrece un mínimo de seguridad en la interacción equipo externo y EVA R-Grid a través del MEA. III. FIRMAS DIGITALES Cuando se da el visto bueno sobre un documento o se quiere asociar la identidad de lo escrito o contenido dentro de este, generalmente se firma, esto garantiza la veracidad del documento. Y como cada actividad que se realiza en la vida real siempre se trata de hacer una abstracción de esta y usarla en los sistemas, tratar de
• Envía un mensaje. • Calcula un resumen o hash del mensaje original. • Firma este resumen del mensaje con su clave privada y envía el resumen firmado junto con el mensaje original. Receptor •Recibe el mensaje cifrado al igual que el mensaje original • Calcula de manera separada el resumen o hash del mensaje recibido.[2] • Utiliza la clave pública del emisor para descifrar el resumen firmado del mensaje que recibió, y compara el resultado con el resumen que el mismo ha generado. Si ambos mensajes son iguales queda comprobado que el mensaje no ha sufrido alteración alguna. Teniendo en cuenta que la clave pública del emisor fue usada para descifrar el mensaje, queda comprobada la entidad del emisor. Existen tres tipos de firmas digitales siendo la avanzada la más usada hoy día. Simples: incluyen un método específico para identificar a quien firma. Avanzada: permite identificar a quien firma el documento
61
62
Universidad El Bosque - Facultad de Ingeniería de Sistemas
y además garantizar la integridad del mismo, empleando técnicas de llaves públicas.[3] Reconocida: es una firma avanzada ejecutada con un dispositivo seguro de creación de firma y amparada bajo un certificado reconocido.[4] ¿En que casos se usa? Las firmas digitales se han vuelto de uso cotidiano, y las usa cualquier empresa u persona que quiere garantizar que tanto la información como la identidad de quien la provee es la correcta. Además de ello, una aplicación firmada digitalmente compromete al autor del software o del documento a cumplir lo pactado dentro de estos y a resolver cualquier falla que se pueda generar debido al uso de los mismos. Cualquier actividad que incluya intercambio de información debería usar este método. IV. ¿QUÉ USA EL MEA PARA INTERCAMBIO DE INFORMACIÓN? Como se mencionó con anterioridad el MEA se comunica constantemente con otros equipos, por esta razón ha sido necesario añadir un módulo que se encargue de las comunicaciones. Esta labor recae sobre una librería creada para java que implementa el protocolo de comunicación SSH. SSH es una aplicación que se encarga de brindar acceso remoto a las PCs de una red para controlarla como si estuviera físicamente delante de ella, solo provee acceso en modo consola; es decir, sin usar el modo gráfico, solo mediante la ejecución de comandos.[5] JSCH: Es el nombre de la librería encargada de comunicar vía SSH a el MEA con los usuarios y los demás equipo de EVA R-Grid. Ha sido integrada dentro del MEA para garantizar la consistencia de los datos que se intercambian entre máquinas, fue necesario crear funciones que usarán las clases propias de esta librería con el objetivo de realizar la conexión e intercambio de información de forma segura. Durante la conexión la librería realiza la autenticación de la máquina a la cual se está conectando, los métodos disponibles son: • Keyboard Interactive autenticación: Quizás la más conocida de todas, en donde el usuario provee una clave que le ha sido asignada por el administrador, de esta manera se garantiza que se trata de la persona correcta. Sin embargo, esta práctica es un poco vulnerable dado que existen varios métodos de obtener la clave del usuario. • Autenticación mediante Public Key: Este método usa una combinación de claves públicas y privadas para determinar la originalidad del usuario. Estas claves interactúan de una manera particular; un texto que ha sido
cifrado utilizando la clave pública, únicamente puede ser descifrado usando la clave privada e inversamente, un texto cifrado usando la clave privada puede descifrarse mediante la clave pública. Cuando el servidor recibe una clave descifrada correctamente por un usuario lo cataloga como válido. En este caso la autenticación se hace mediante la llave de host del PC del cliente; a pesar de ser más rápido es un tanto más inseguro.[6] V. CONCLUSIONES Se ha descrito cada una de las características del MEA, firmas digitales y de JSCH. Es claro que el MEA tiene la necesidad de comunicarse con equipos de distintas índole comercial por esta razón ha de asegurar que la comunicación sea lo más segura posible, es por eso que se ha integrado dentro del módulo una librería encargada de realizar la conexión de manera segura para lo cual se usa el protocolo SSH, que garantiza que la información que se envía sea la correcta y que las identidades de las personas o empresas tanto la que envía como la que recibe son las indicadas. Esta es justamente la función de una firma digital. Las firmas digitales son muy importantes para establecer tanto la procedencia como la integridad de los datos que son enviados a nuestro computador. La ejecución del MEA se hace directamente desde el servidor, esta no implica la instalación, solo el envió de mensajes hacia el equipo del cliente. Esta información no necesita ser autenticada mediante una firma digital ya que el proceso de autenticación del remitente de información (el servidor) fue realizado por la librería incluida dentro del MEA, mediante el método de autenticación por llave pública. Es por esta razón que el incluir dentro de los MEA firmas digitales constituye una práctica un tanto redundante, además los tiempos de respuesta se verían afectados. Si se hace uso de cualquier otro método de autenticación para conectarse al MEA aun se podría prescindir del método de firmas digitales dado que de todas formas se estaría verificando las identidades del emisor y el receptor. Si se usa otro modo de comunicación que no realice este tipo de comprobación es necesario implementar las firmas digitales. VI. REFERENCIAS [1] Firmas digitales Ilustradas. h t t p : / / b u l m a . n e t / b o d y.p h t m l ? n Id N o t i c i a = 8 6 8 .
Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007
propietario de la pagina: bulma.net. Consultado el 20 de mayo de 2007. [2] Digital Signatures Ilustrated, J. Orlin Grabbe. Laissez Faire City Times, Vol 2, No 21, Julio 12, 1998.En línea en http://www.aci.net/kalliste/digsig.htm. [3] Firmas digitales. http://es.w ikipedia.org/wiki/Firma_digital, propietario de la pagina Wikipedi.org, consultado 5 mayo de 2007 [4] Firmas digitales. http://www.microsoft.com/spain/empresas/tecnologia/fi r ma_ele c t ronic a.m spx?gclid=CO CI59Q jYwCFRtCUAodC0PL4A, propietario De la página Microsoft, consultado 5 mayo de 2007 [5] Secur ing UNI X Ser ver wit h Secure Shell (ssh),http://gis.washington.edu/phurvitz/professional/ssh _ESRI_2000/ .Propietario de la página: Phil Hurvitz. Consultado el 3 de marzo de 2007. [6] J2SSH Maverick, Http://www.sshtools.com/showMaverick.do, propietario de la página: sshtools. Consultado el 5 de abril de 2007
Artículo de Reporte de Caso.
Los Autores
Daniel Alberto Burbano Sefair Docente de la Facultad de Ingeniería de Sistemas de la Universidad El Bosque. Ingeniero Electrónico, MCpE Ingeniería Eléctrica y Computadoras. Miembro del Equipo de Investigación en Software Libre. Coordinador línea Grid computing. danielburbano@unbosque.edu.co Gustavo Andrés Jiménez Lesmes Ingeniero de Sistemas de la Facultad de Ingeniería de Sistemas de la Universidad El Bosque, Bogotá, Colombia. tavodres@gmail.com
63
Ubicación de Sitios de Entretenimiento a través de dispositivos Móviles en Colombia Carlos Fernando Varela Pérez Eduardo Antonio Cárdenas Jimmy Zamir Ortega Ortegón
Resumen
Abstract
Este proyecto se centró en optimizar un proceso de búsqueda de sitios de entretenimiento en las principales ciudades del país. Actualmente las herramientas existentes para esta búsqueda no son modernas, fáciles de utilizar y no están al alcance de todos los usuarios. Por lo tanto se desarrolló una aplicación móvil que utilizando celulares y el software correcto, lograra cambiar los antiguos métodos de búsqueda, ofreciendo al mercado una opción de localización de restaurantes, bares y centros comerciales de acuerdo con los requerimientos solicitados por el usuario. Se identificó la necesidad de conocer y aprender el entorno de las aplicaciones móviles y desarrollar la aplicación a través de herramientas de diseño, como la ingeniería de software, herramientas para la implementación de aplicaciones móviles, como J2ME y diferentes tecnologías necesarias para su comunicación como GPRS y Bases de Datos. Este proyecto tuvo como objetivo explorar un campo poco desarrollado en Colombia, y ser un aporte importante en la nueva tecnología de las aplicaciones móviles.
This paper introduces a project that was focused in inve s t igat ing different to ols for t he de sig n, implementation and development of mobile applications. As a result of all these developed investigations, an application for users of mobile phones was delivered. This software application allows identification of sites for entertainment as: Malls, cinemas, bars and restaurants according to a location.
Palabras Clave: Aplicaciones Móviles, Comunicaciones, Ingeniería de Software, Telefonía Móvil.
Keywords: Communications, Mobile Applications, Mobile telephony, Software engineering.
66
Universidad El Bosque - Facultad de Ingeniería de Sistemas
I. INTRODUCCIÓN Las aplicaciones móviles nacieron con el fin de optimizar procesos ya existentes, para recrear y para dar mayor utilidad a los diferentes dispositivos creados, dando origen a un factor diferenciador entre las empresas fabricantes de celulares, ya que estas tendieron a identificarse por el software empleado y, para cada marca, se realizaron aplicaciones exclusivas. El mercado de la telefonía celular ha crecido a un ritmo exponencial. En Colombia tiene un porcentaje de participación del 69% [2], y esto es una tendencia a nivel mundial y a raíz de este comportamiento las empresas dejaron de centrarse en realizar aplicaciones para Pcs y decidieron incursionar en el mundo de las aplicaciones móviles. El objetivo de este proyecto es optimizar un proceso manual existente, que es la búsqueda de sitios de entretenimiento en directorios telefónicos o guías de entretenimiento que, muchas veces, no se tienen a la mano, para ayudarle al cliente a tomar decisiones, como: ¿Qué Hacer?, ¿Para dónde ir? .Por esta razón se desarrolló una aplicación móvil que permitiera, a los usuarios de celulares realizar la consulta de sitios de ent ret enim iento como ba re s, ba r-re s t aur a nt e, re s t aur a nt e s y c ent ros comercia le s, con los requerimientos dados por el usuario tales como: en que ciudad desea realizar la consulta, la localidad dentro de la ciudad, el tipo de establecimiento deseado y el ambiente solicitado. Como solución al requerimiento la aplicación implementada informa por la pantalla del teléfono móvil los establecimientos que se adecuan a las necesidades del usuario. El mundo del desarrollo de las aplicaciones móviles es muy grande y, por lo tanto es necesario conocer la parte de su funcionalidad; se debe aprender sobre tecnologías de comunicaciones inalámbricas y las herramientas de desarrollo necesarias para crear estas aplicaciones.
con este proyecto se quiere lograr que, teniendo en cuenta la ubicación seleccionada por el cliente en la aplicación, éste pueda acceder a información sobre diferentes alter nat iva s de ent retenimiento como cent ros comerciales, restaurantes y bares aledaños a la ubicación seleccionada por el usuario y obtener de esta forma como respuesta, datos como su ubicación, teléfono, ambiente, y horario. El desarrollo de este proyecto de grado incluyó la investigación de tecnologías de punta y por lo tanto abrió la oportunidad de acceder a nuevos conocimientos y nuevos mercados en donde los ingenieros de sistemas se pueden desempeñar profesionalmente. El principal aporte es captar el interés de los estudiantes de la Facultad de Ingeniería de Sistemas de la Universidad el Bosque, para que investiguen el mundo de las aplicaciones móviles y se animen a desarrollar nuevos proyectos. Utilizando este tipo de tecnologías se pueden identificar beneficios para el usuario, tales como portar fácilmente en su celular el directorio de sitios de entretenimiento del lugar donde se hace la consulta. También por medio de la aplicación se puede eventualmente reconocer el hábito de consumo de los clientes y, sobre todo, el tiempo ahorrado por el usuario celular. Este tipo de aplicaciones, en alianza con grandes empresas de celulares, se puede convertir en una herramienta de publicidad poderosa porque además de dar la ubicación del sitio de interés, se podrán visualizar imágenes de video del sitio seleccionado por el cliente y publicidad asociada. Este desarrollo se realizará a futuro cuando este tipo de pruebas sean comunes y no tan restringidas como lo son en la actualidad. Problema
Justificación y Teoría
En Colombia la incursión en el desarrollo de aplicaciones móviles ha estado restringida debido a la baja infraestructura que hay para las telecomunicaciones y a la baja oferta de desarrolladores para este tipo de soluciones. Por todo lo anterior se hace importante incentivar y promover el desarrollo de soluciones móviles que conlleven a mejorar procesos ya existentes o a crear nuevos, que permitan entregarle a los usuarios desarrollos que presten un servicio útil y novedoso.
La necesidad actual de los mercados masivos es llegar al cliente en el momento oportuno, presentándole diferentes alternativas que permitan una mejor elección. En Colombia, las aplicaciones móviles son muy escasas y restringidas. Una de las condiciones que sobresalen para los usuarios celulares es la falta de herramientas que permitan cubrir algunas de sus necesidades. Por lo tanto,
Hoy en día, en Colombia, existen muchos sitios de esparcimiento tales como centros comerciales, bares y restaurantes, entre otros. Sin embargo, por la ubicación y cantidad de los mismos, a lo ancho del país, la mayoría se torna desconocida para los usuarios quienes se ven en la obligación de acudir a herramientas no tan sofisticadas como lo son directorios o guías especializadas, los cuales
Finalmente y mediante todo este conocimiento adquirido se obtuvo una adecuada comprensión y entendimiento de las aplicaciones móviles, como también la posibilidad de brindar un producto innovador que cumpliera con los objetivos propuestos. II. ESTUDIO
Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007
en un momento determinado, no son tan fáciles de utilizar y tampoco están al alcance de las personas, por su gran volumen y acceso restringido ya que no ofrecen mayor portabilidad. Mediante este proyecto se identificó esta necesidad y se llegó a la conclusión que aunque existe tecnología de punta en celulares, todavía faltan herramientas o aplicaciones para estos, debido a que este tipo de aplicaciones no llevan mucho tiempo en el mercado y es una área de la nueva tecnología que esta evolucionando en el país. En Colombia se desar rolló una comunidad de programadores para aplicaciones móviles que fue patrocinada por las compañías Motorola y Avantel, quienes se interesaron por impulsar estas tecnologías y premiaban a las empresas con mejor desarrollo de aplicaciones móviles. De acuerdo con una investigación previa, en Colombia no hay en el comercio una aplicación móvil que permita ubicar sitios de entretenimiento desde dispositivos celulares, y se desconoce si en otros países ya se puede encontrar este tipo de aplicación. A través del desarrollo de este proyecto se implementó una aplicación móvil para celulares, que permite localizar sitios de entretenimiento. El objetivo era desarrollar una herramienta que a través de un dispositivo electrónico permitiera facilitar la elección de sitios de entretenimiento por parte del usuario. Metodología La idea de este proyecto nació a través del directorio de páginas amarillas, ya que en el análisis sobre este servicio se encontró que no existía una herramienta tecnológica que lo remplazara y que fuera mucho mas fácil de portar. Por lo tanto se pensó en realizar una aplicación que tuviera la información del directorio, pero que además fuera portable y de fácil acceso para el usuario. Estas dos características se pudieron reflejar, primero en una aplicación que permitiera la consulta de información y la otra parte de la idea se reflejó en un dispositivo pequeño, fácil de adquirir. Por lo tanto surgió la idea de realizar una aplicación móvil, que permitiera consultar sitios de entretenimiento, de acuerdo con la información solicitada por el usuario por medio de un teléfono celular. En la fase inicial se determinó el título del proyecto, los objetivos, alcances y limitaciones que podría tener el proyecto, siempre con la mentalidad de hacer un producto robusto y de alta calidad. Para el desarrollo del proyecto, se inició con la definición de los requerimientos de la aplicación que son la principal fuente de información para determinar la metodología de desarrollo. Para poder realizar el proyecto se tuvo que analizar su contexto y todo el marco que lo encierra, como su historia, antecedentes, bases teór icas, her ramient as de programación y herramientas para su ejecución.
A través metodologías de la ingeniería de software se diseñó un prototipo de alta calidad que cumpliera con todos los requerimientos mencionados, se diseñaron los diagramas de casos de uso, diagrama de clases y de ent idad relación, que p er mit ieron un mejor entendimiento y compresión de la relación entre todos los diferentes objetos identificados para el desarrollo integral y funcional de la aplicación y para refinar el producto a realizar. Como primera acción se determinaron las herramientas necesarias de programación y de almacenamiento de información para el proyecto como las bases de datos (Mysql), software para aplicaciones móviles (Netbeans, J2me y J2me mobility pack) [1], interfaces y entornos (Tomcat, Suite de Java), siendo la acción siguiente aprender a manejar y utilizar todas estas herramientas necesarias para su implementación. Una vez identificadas todas las herramientas necesarias, se continuó con la elaboración de la implementación del software, cuya descripción se puede consultar en el documento final de proyecto de grado que reposa en la Facultad de Ingeniería de Sistemas de la Universidad el Bosque, en donde se especifica todo el desarrollo secuencial de la implementación de la aplicación. Posteriormente se evaluó la robustez del producto, a través de pruebas que buscaban encontrar las partes débiles del proyecto, para corregirlas y entregar finalmente un producto sólido, con buena funcionalidad, que fuera amigable para los usuarios y que diera confianza en su manipulación y servicios ofrecidos. Adicionalmente se realizó una investigación de campo, ya que se quiere establecer el posible impacto que esta aplicación causaría en la vida real para los usuarios de telefonía móvil. Descripción del Producto El producto desarrollado consiste en una aplicación móvil, que se ejecuta a través del teléfono celular y que permite la búsqueda de sitios de entretenimiento, en donde a partir de las ciudades definidas por el administrador del sistema, el usuario selecciona la ciudad requerida y luego la localidad de la ciudad a consultar ya que en el sistema las ciudades están divididas en localidades previamente definidas. Una vez ejecutado el paso anterior, el sistema muestra las diferentes opciones de sitios de entretenimiento como centros comerciales, bares o restaurantes, para ser seleccionadas por el usuario. Dependiendo de la selección realizada, el sistema lista las clases de sitios asociados a su selección y de acuerdo con la clase elegida, el sistema muestra todos los sitios de entretenimiento que corresponden con la búsqueda solicitada por el usuario. A partir de este punto, el usuario escoge el sitio de entretenimiento deseado y el sistema envía a su celular la información del sitio solicitado como:
67
68
Universidad El Bosque - Facultad de Ingeniería de Sistemas
su dirección, teléfonos, Email e información relacionada con el establecimiento III. CONCLUSIONES Las aplicaciones móviles buscan hacer más productivos los procesos ya existentes, queriendo llegar al cliente en el momento y lugar oportuno, convirtiéndose en una herramienta de publicidad poderosa o en un valor agregado para las compañías que quieran destacarse ante sus competidores. Se espera que en un futuro muchos mercados aumenten sus indicadores a través del desarrollo de aplicaciones para dispositivos móviles. Cabe notar que estas también presentan limitaciones, debido a que actualmente los dispositivos móviles presentan barreras como su poca capacidad de almacenamiento, no permitiendo lo anterior ejecutar aplicaciones muy grandes o robustas, pero seguramente con el tiempo se desarrollarán dispositivos con mejores características, quitando esta barrera para el desarrollo de aplicaciones móviles.
hardware, ya que cada aplicación debe cumplir con unos requisitos para el dispositivo para el que fue creada. Esto es un impedimento para que las aplicaciones móviles crezcan con mucha más prontitud. En el futuro las aplicaciones móviles, pasarán al campo de la domótica y la supervisión, campo en el cual existen prototipos desarrollados en la universidad y se crearán aplicaciones comerciales que per mit an manipular los electrodomésticos a través del celular. REFERENCIAS [1] Agustin, Froufe Quintas Java 2 Micro Edition. Mexico. Afaomega (2004). [2] Cintel, febrero 2 de 2005. Tecnologías Móviles e Inalámbricas: Seguridad, Aplicaciones y Servicios de Seguridad. Último acceso 15 de Agosto de 2005. http://www.cintel.org.co/noticia.php3?nt=2594 [3] Tanenbaum, Redes de Computadores, Tercera Edicion. Prentice hall. (1997). [4] Marty Hall, Servlets y Java Server Pages Pretntice Hall. (1997).
IV. PROYECCIONES Las aplicaciones móviles crecen a un ritmo exponencial, pero dicho crecimiento va a la par de nuevas tecnología en
Artículo de Reporte de Caso. Los Autores Carlos Fernando Varela Pérez Ingeniero Eléctrico, Universidad de Los Andes 1985. Especialista en Telemática, Universidad de Los Andes 1990. Magíster en Economía, Pontificia Universidad Javeriana 1999. Diplomado en Gerencia de Telecomunicaciones Escuela de Administración de Negocios 1999. Profesor Asociado de las Facultades de Ingeniería de Sistemas y Electrónica, Universidad El Bosque desde Enero de 2000. Director del Área de Electrónica, Telemática, Arquitectura del Computador e Inteligencia Artificial de la Facultad de Ingeniería de Sistemas de la Universidad El Bosque. Director del Grupo de Investigación en Electrónica, Telemática, Arquitectura del Computador y Temas afines GIETAC de la Facultad de Ingeniería de Sistemas de la Universidad El Bosque con clasificación “C” de Colciencias. Subdirector de Información de la Unidad de Planeación Minero Energética del Ministerio de Minas y Energía desde Noviembre de 2000 hasta Agosto de 2001. Especialista en Arquitectura de Sistemas de Información y Redes de Datos, Unisys de Colombia desde Octubre de 1993 hasta Septiembre de 1999. carlosvarela@unbosque.edu.co Eduardo Antonio Cárdenas Yáñez Ingeniero de Sistemas de la Universidad El Bosque, Bogotá, Colombia. Se desempeña actualmente como Ingeniero de Sistemas del Banco BBVA Colombia. edutono@hotmail.com Jimmy Zamir Ortega Ortegón Ingeniero de Sistemas de la Universidad El Bosque, Bogotá, Colombia. Se desempeña actualmente como Ingeniero de Sistemas en la Compañía Seguros Comerciales Bolívar. jimmyzortega@hotmail.com
Aseguramiento de Calidad en el Desarrollo del Software Jorge Enrique Urrego Navarro
Resumen El Aseguramiento de Calidad en el Ciclo de Vida del Software es un proceso transversal y no se debe considerar como una etapa más dentro de este proceso, ya que en la mayoría de proyectos informáticos la etapa de pruebas viene después del desarrollo cuando los costos en detección y resolución de defectos, fallas o bugs son bastante costosos en tiempo y dinero.
Abstract The Quality Assurance in the Life Cycle of Software is a cross-sectional process and it is not due to consider like one more a stage within this process, since in most of computer science projects the tests stage it comes after the development when the costs in detection and resolution of defects, faults or bugs are quite expensive in time and money.
Palabras Clave: Aseguramiento de Calidad, bugs Ciclo de Vida del Software, defectos, detección, dinero, etapa de pruebas, fallas, proyectos informáticos, tiempo.
Keywords: Quality Assurance, bugs, Life Cycle of Software, defaults, detection, money, tests stage, faults, computer science projects, time.
70
Universidad El Bosque - Facultad de Ingeniería de Sistemas
I. INTRODUCCIÓN El Aseguramiento de Calidad es un proyecto dentro de un proyecto informático y no debe ser considerado como una etapa más dentro del Ciclo de Vida del Software, actualmente los proyectos informáticos llevan a cabo el proceso de pruebas en las etapas finales antes de implantar el software en el ambiente de producción, sin embargo si se considera este proceso como transversal no se generarían defectos con altos costos en tiempo y dinero, ya que se debe afrontar desde etapas tempranas como las de análisis y diseño, debido a que si no se realizan pruebas de especificaciones o requerimientos los defectos o bugs van a ser altamente costosos en etapas finales del software, por lo tanto el proceso de pruebas ahí que asumirlo con responsabilidad y no a la ligera como lo hacen la gran mayoría de las compañías de desarrollo de software a la medida. II. PRINCIPIOS FUNDAMENTALES EN LAS PRUEBAS Las pruebas es el proceso de establecer la confianza que el programa o el sistema hace lo que supuestamente debe hacer, Hetzel 1973, comienzo este punto con esta frase ya que el proceso de pruebas es establecer la confianza de que el software hace lo que debe hacer sujeto a las necesidades que tenga el usuario, los cuales son plasmados en documentos como: Requerimientos Funcionales, Requerimientos No Funcionales, Diagramas de Casos de Uso tanto de Negocio y de Sistema. Por tanto existen algunos principios tales como: • Las pruebas ayudan a prevenir deficiencias • Las pruebas deben estar basadas en el riesgo, ya que es imposible probar todo el software. • Las pruebas deben ser planeadas • Las pruebas que revelen problemas son un éxito. • El propósito de encontrar problemas es corregirlos. Además se debe tener en cuenta que las pruebas son beneficiosas ya que se genera ganancia en tiempo y dinero, la planeación de pruebas ayuda a prevenir los errores y formalizar y ejecutar actividades de pruebas disminuye los riesgos. Por lo tanto las pruebas deben estar basadas en el riesgo del negocio y el objetivo es reducir el riesgo inherente al desarrollo del sistema y asegurar los errores que más impactan en el negocio.
ac tual del negocio, Fac t Finding que es el acomp a ña m iento a l usua r io en el nego cio, WalkThrougths que son talleres que se realizan a los usuarios que están directamente relacionados con el software y el negocio y las listas de chequeo. Son realizadas entre el equipo de especificadores y los analistas de pruebas • Pruebas Unitarias: Son las que validan cada pieza de código de manera individual y deben ser realizadas por el equipo de desarrollo del proyecto con el fin de disminuir los defectos cuando se realicen las pruebas funcionales. • Pruebas de Integración: Son las que validan la interrelación entre cada uno de los módulos que compone el software y deben ser planeadas y ejecutadas por el Integrador o Arquitecto Funcional. • Pruebas de Caja Blanca: Son las que detectan las malas practicas en el código fuente, tales como: la declaración de variables que no son utilizadas y código muerto o lavaf low y son planeadas y ejecutadas por los desarrolladores y el líder técnico. • Pruebas Funcionales o de Caja Negra: Son las que detectan problemas o defectos en cuanto a la funcionalidad, es impor tante en este punto la intervención del usuario y el analista de pruebas ya que el primero conoce el negocio y el segundo determina la estrategia de pruebas, ya que como se mencionó anteriormente es imposible probar todo el software. Son realizadas por el usuario del negocio y el analista de pruebas • Pruebas de Regresión: Son las que verifican que después de corregir un defecto no se haya afectado otras funcionalidades del software. Son realizadas por el analista de pruebas • Pruebas de Sistema o No Funcionales: Son las que detectan fallos en cuanto a carga, concurrencia de usuarios, stress y rendimiento por lo general están basadas en los Requerimientos No Funcionales. Son realizadas por el analista de pruebas. • Pruebas de Producción: Son las que después de implantado el software en ambiente de producción se realicen pruebas al software realizando un seguimiento al software en el entorno real y son realizadas por el equipo del proyecto. IV. METODOLOGÍAS DE PRUEBAS
III. TIPOS DE PRUEBAS Dentro del proceso de pruebas existen diversos tipos, entre ellos son:
Una de las metodologías más utilizada en cuanto a pruebas es Rational Unified Process (RUP), que en esta etapa considera los siguientes pasos:
• Pruebas de Requerimientos: Son las que detectan fallos en las especificaciones funcionales, existen diferentes técnicas tales como: Examinación que es la verificación
• Se debe generar un plan de pruebas para definir el alcance de los tipos de pruebas que se van a realizar dentro de un proyecto informático, además se deben tener
Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007
en cuenta las estrategias y técnicas para cada tipo de prueba ejecutado y definir los hitos de iteración y los criterios de terminación o suspensión del proceso de pruebas en el software. • Definir el Set de Pruebas funcional que es el conjunto de casos de prueba que están basados por lo general en artefactos como los casos de uso en donde se analizan los flujos normales y alternativos, los casos correctos e incorrectos tanto de validación de campos (capa de presentación), a nivel de lógica de negocio y de datos si está realizando de acuerdo a las especificaciones funcionales lo que debe hacer el software, el set de pruebas es el libreto de este proceso que nos ayuda a planear las pruebas y disminuir el riesgo en etapas futuras. • Realizar las listas de chequeo, esto consiste en diseñar una serie de preguntas en cuanto a la realización de pruebas unitarias, de integración y caja blanca que se ejecutan al equipo del proyecto con el fin de generar alarmas y prevenir errores que son costosos en etapas posteriores. Estas listas es recomendable ejecutarlas tres veces al inicio del proyecto, en etapa de desarrollo y en etapas finales del software. • Set de Pruebas No Funcional, consiste en diseñar casos de prueba que verifiquen el rendimiento en cuanto a carga de datos, concurrencia de usuarios y stress del software con el fin de mitigar el riesgo en cuanto a estos aspectos en el entorno real del negocio. • Generar consolidados de pruebas funcionales en cuanto a reporte de incidencias funcionales y no funcionales. VI. HERRAMIENTAS AUTOMÁTICAS PARA EL PROCESO DE PRUEBAS
automatizar las pruebas funcionales y No funcionales de un proyecto de software, Silkperformer de Segue para la automatización de pruebas funcionales y no funcionales, Visual Studio Team Tester 2005, JMeter, Grinder para aplicaciones JEE. Sin embargo existen otras herramientas para reporte de incidentes que son el Team Foundation Server de Microsoft, Mantis, WebTracker que son herramientas libres para estos fines. VII. CONCLUSIONES El proceso de pruebas dentro de un proyecto informático debe ser transversal con el fin de prevenir defectos en etapas tempranas que reducen el costo en tiempo y dinero de errores en etapas futuras, las pruebas deben además estar planeadas bajo el riesgo del negocio ya que no es posible probar todo el espectro del software y lo más importante independiente de las metodologías y las herramientas es CREAR UNA CULTURA DE CALIDAD DENTRO DE LA ORGANIZACIÓN RECONOCIMIENTO AGRADEZCO A LA UNIDAD DE ASEGURAMIENTO DE CALIDAD DE SOFTWARE DE LA COMPAÑÍA INFORMATICA SIGLO 21 POR HABER CONTRIBUIDO EN LOS CONOCIMIENTOS PARA LA ELABORACIÓN DE ESTE ARTICULO A LO LARGO DE LA EXPERTICIA ADQUIRIDA EN ESTE CAMPO DE LAS PRUEBAS.
REFERENCIAS [1] Pressman Roger, “Ingeniería del Software” 5th ed., Mexico: McGraw Hill, Ch. 18
Existen diversas herramientas en el mercado, pero no hay que comprar sino de acuerdo a las necesidades que se requieran para el proceso de pruebas. Las más conocidas son la suite de Rational Tester de IBM que permite
Artículo Tipo 9. El Autor Jorge Enrique Urrego Navarro Ingeniero de Sistemas egresado de la Facultad de Ingeniería de Sistemas de la Universidad El Bosque y especialista en ingeniería de software de la Universidad Distrital Francisco José de Caldas, miembro activo de la Asociación Colombiana de Ingenieros de Sistemas ACIS y del grupo de gerencia de proyectos de la misma institución, curso de estrategias de pruebas en desarrollo de software en ACIS. Experiencia laboral en desarrollo de software en COBOL, CICS bajo el sistema operativo OS390 de IBM en el Grupo BBVA Net e integrante del grupo de activos de la fusión entre BBVA y Granahorrar en el Banco BBVA de Colombia y en pruebas de desarrollo de software desde generar planes de pruebas, diseñar set de pruebas funcionales y no funcionales, ejecución de pruebas funcionales y no funcionales en desarrollos de software actualmente en la compañía Informática Siglo 21. jurrego@i-siglo21.com
71
Políticas Editoriales La REVISTA DE TECNOLOGÍA es publicada semestralmente por la Universidad El Bosque, en Bogotá D.C., Colombia y está comprometida con divulgación de documentos originales y de calidad científica que resulten de estudios y avances de la Universidad El Bosque y de la comunidad académica. La REVISTA DE TECNOLOGÍA está abierta a recibir todos los documentos que sean postulados dentro de los Objetivos y Alcance de esta publicación. No obstante, para garantizar los objetivos de calidad inherentes a toda publicación científica, todo documento es expuesto a la revisión de un par evaluador. En todo caso, el Comité Editorial se reserva el derecho de publicar los documentos recibidos. Los documentos son recibidos en idioma castellano o en idioma inglés. En todo caso, cuando el documento es enviado en idioma castellano, debe incluir la versión sumaria equivalente al RESUMEN en inglés con el título ABSTRACT. Para mayores detalles acerca del formato de los artículos, puede consultar y copiar el formato mediante el enlace a la plantilla del formato de artículos*. Los autores que deseen publicar en la REVISTA DE TECNOLOGÍA pueden enviar sus artículos en cualquier época del año. El Comité Editorial se reserva el derecho de indicar al autor postulante las modificaciones formales que deban ser introducidas a su documento postulado con el fin de cumplir con las características de calidad de la publicación. Una vez que el documento postulado cumpla con las características formales requeridas y eventualmente indicadas para su publicación, el Comité Editorial tomará hasta seis (6) meses para efectuar la publicación del documento o comunicar al autor postulante sobre la decisión de postergar la publicación del mismo. Para detalles sobre cada convocatoria a escribir artículos, consulte Call for papers. El siguiente orden establece las categorías de prioridad de preferencia de los documentos que publica la REVISTA DE TECNOLOGÍA, siendo los primeros los más preferidos: 1. Artículos de Investigación científica y tecnológica: Son documentos que exponen en forma detallada resultados originales de proyectos de investigación académica. La estructura formal de este documento puede ser obtenida mediante el enlace a la plantilla del formato de artículos.* 2. Artículos de Reflexión: Son documentos que presentan resultados de investigaciones desde una perspectiva analítica, interpretativa o crítica del autor, sobre un tema específico, recurriendo a fuentes originales. La estructura formal de este documento puede ser obtenida mediante el enlace a la plantilla del formato de artículos.* 3. Artículos de revisión: Son documentos que presentan resultados de una investigación. Este tipo de documentos analizan, sistematizan e integran los resultados de investigaciones publicadas o no publicadas, sobre un campo de conocimiento de la ciencia o la tecnología. Este tipo de documentos tiene como finalidad informar los avances y las tendencias de desarrollo. Se caracteriza por presentar una cuidadosa revisión bibliográfica de por lo menos cincuenta (50) referencias. La estructura formal de este documento puede ser obtenida mediante el enlace a la plantilla del formato de artículos.* 4. Artículos cortos: Son documentos que presentan de manera sucinta los resultados preliminares (originales) o resultados parciales de una investigación científica o tecnológica, que por lo general requieren de una pronta difusión. La estructura formal de este documento puede ser obtenida mediante el enlace a la plantilla del formato de artículos.* 5. Reportes de caso: Son documentos que presentan los resultados de un estudio sobre una situación particular con el fi n de dar a conocer las experiencias técnicas y metodológicas consideradas en un caso específico. Incluye una revisión sistemática comentada de la literatura sobre casos análogos. La estructura formal de este documento puede ser obtenida mediante el enlace a la plantilla del formato de artículos.* 6. Revisión de tema: Son documentos que informan el resultado de la revisión crítica de la literatura sobre un tema particular.
* El formato de artículos puede ser obtenido en el sitio web: www.sistemasunbosque.edu.co, link: revista, link: formato de artículos.
7. Traducciones: Son documentos que vierten al castellano la traducción de textos clásicos o de actualidad. También pueden ser transcripciones de documentos históricos o de interés particular dentro del dominio establecido como Objetivos y Alcance de la REVISTA DE TECNOLOGÍA. 8. Cartas al Editor: Son documentos que contienen posiciones críticas, analíticas o interpretativas sobre los documentos publicados en la REVISTA DE TECNOLOGÍA y que a juicio del Comité Editorial de la misma constituyen un aporte importante a la discusión del tema por parte de la comunidad científica o de tecnología en general y de tecnología informática en particular. 9. Documentos de reflexión no derivados de investigación: Son documentos que responden más a la posición particular de un autor o autores acerca de un tema específico. Como su nombre lo indica, tiene un carácter menos objetivo que las categorías 1 a 5 de esta categorización de prioridades. 10. Reseñas bibliográficas: Son documentos que reportan la reseña realizada a un libro en cualquier idioma y que puede ser punto de referencia a los investigadores. Adjunte una imagen de la portada del libro y, de considerarlo necesario, de la contracarátula del mismo.
Comité Editorial. REVISTA DE TECNOLOGÍA Universidad El Bosque Bogotá, D.C., Colombia