75

Revista de Tecnología

Embed Size (px)

DESCRIPTION

Revista de Tecnología. julio a diciembre de 2007 » volumen6 » número2

Citation preview

Page 1: Revista de Tecnología
Page 2: Revista de Tecnología

Bogotá D.C., Colombia • [email protected] • Volumen 6 Número 2 • Julio a Diciembre de 2007

UNIVERSIDAD EL BOSQUE

RECTORDr. Jaime Escobar Triana

VICERRECTOR ACADÉMICODr. Erix Bozón Martínez

VICERRECTOR ADMINISTRATIVODr. Carlos Felipe Escobar Roa

SECRETARÍA GENERALDr. Luis Arturo Rodríguez

DECANO FACULTADINGENIERÍA DE SISTEMAS

Ing. Jairo Hernán Barragán Gó[email protected]

DIRECTORA DE INVESTIGACIONESFACULTAD DE INGENIERÍA

Ing. Guiovanna [email protected]

SECRETARIO ACADÉMICOIng. Hernando Ramírez Llinás

[email protected]

DIRECTOR ÁREA PROFESIONALIng. Carlos Ortiz Buitrago

[email protected]

DIRECTORA ÁREA BÁSICALic. Marlene Garzón

[email protected]

DIRECTOR ÁREADE TELECOMUNICACIONESIng. Carlos Fernando Varela Pérez

[email protected]

DIRECTORA ÁREA LABOR SOCIALDra. Sandra Angarita Roa

[email protected]

DIRECTOR REVISTA DE TECNOLOGÍADr. Saudiel O. López Cruz

[email protected]

COMITÉ EDITORIALIng. Jairo Barragán G. - Universidad El BosqueIng. Liliana Buitrago - Universidad El BosqueDr. César A. Mendoza - Universidad Nacional

Dr. Oswaldo J. Gómez Díaz - Universidad Nacional

COMITÉ CIENTÍFICOIng. Hernando Ramírez Llinás - Universidad El Bosque

Dr. Saudiel O. López Cruz - Universidad El BosqueIng. Guiovanna Sabogal - Universidad El Bosque

Ing. Carlos Fernando Varela P. - Universidad El BosqueIng. Alejandro León Mora - Universidad El Bosque

Lic. Efraín Patiño - Universidad El Bosque

Revista de Tecnología - Journal of TechnologyFacultad de Ingeniería de Sistemas

ISSN 1692-1399Volumen 6 Número 2

Para información sobre tarifas publicitarias comunicarse con la Dirección de la Revista: [email protected]

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: [email protected].

SUSCRIPCIONES Y PUBLICIDAD:

La REVISTA DE TECNOLOGÍA ISSN 1692-1399 lo invita a dirigir sus órdenes publicitarias a la correo electrónico [email protected] 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ó[email protected] 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.

Page 3: Revista de Tecnología

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:[email protected].

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: [email protected]. 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 [email protected].

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 BosqueEdiciones El Bosque • Transversal 7 B Bis 132-11PBX: 6331368 - 6331320 Fax: 6252030.Facultad de Ingeniería de SistemasTel.: 5204018Página web: www.sistemasunbosque.edu.co Link: Revista.e-mail: [email protected]á, D.C., Colombia.ISSN 1692-1399Canje: 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-322Impresión:

Bogotá D.C., ColombiaNoviembre 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 tura 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".

7

27

31

41

59

Editorial. _____________________________________________________________________________“Políticas Editoriales.” Una Breve Disertación Inicial.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. __________________________________________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. _Edward Andrés Corredor Rondón.

7. ¿Uso de firmas digitales en MEA de EVA R-GRID?. __________________________________________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 RESPONSABILIDADLa 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.

5

13

51

65

69

Page 4: Revista de Tecnología

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:[email protected].

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: [email protected]. 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 [email protected].

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 BosqueEdiciones El Bosque • Transversal 7 B Bis 132-11PBX: 6331368 - 6331320 Fax: 6252030.Facultad de Ingeniería de SistemasTel.: 5204018Página web: www.sistemasunbosque.edu.co Link: Revista.e-mail: [email protected]á, D.C., Colombia.ISSN 1692-1399Canje: 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-322Impresión:

Bogotá D.C., ColombiaNoviembre 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 tura 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".

7

27

31

41

59

Editorial. _____________________________________________________________________________“Políticas Editoriales.” Una Breve Disertación Inicial.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. __________________________________________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. _Edward Andrés Corredor Rondón.

7. ¿Uso de firmas digitales en MEA de EVA R-GRID?. __________________________________________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 RESPONSABILIDADLa 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.

5

13

51

65

69

Page 5: Revista de Tecnología

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: [email protected]. En el asunto (subject) del mensaje indicar «Artículo para publicar» y como anexo un archivo en Microsoft Word, con las siguientes 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.

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.

INVITACIÓN A ESCRIBIR ARTÍCULOS

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.

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.

Editorial

“Políticas Editoriales.”

Una Breve Disertación Inicial.

"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."

1Mary Parker Follet

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”.

Saudiel O.López Cruz

1 Citado por Pugh [4].

Page 6: Revista de Tecnología

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: [email protected]. En el asunto (subject) del mensaje indicar «Artículo para publicar» y como anexo un archivo en Microsoft Word, con las siguientes 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.

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.

INVITACIÓN A ESCRIBIR ARTÍCULOS

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.

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.

Editorial

“Políticas Editoriales.”

Una Breve Disertación Inicial.

"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."

1Mary Parker Follet

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”.

Saudiel O.López Cruz

1 Citado por Pugh [4].

Page 7: Revista de Tecnología

Experiencia y práctica en la instalación y configuración de un nodo de EVA R-GRID

Resumen

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.

Palabras claves: EVA R-GRID, Cluster, Linux, Windows, inicio dual, administrador de arranque, Master Boot Record.

Abstract

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.

Key words: EVA R-GRID, Cluster, Linux, Windows, dual boot, Boot Manager.

Daniel Burbano, PCPEMaria Paula Angarita, Ing. Sistemas

Fabián Lozada, Ing. Sistemas

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

2ubica la revista.”

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 CruzDirectore-mail: [email protected]

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].

Page 8: Revista de Tecnología

Experiencia y práctica en la instalación y configuración de un nodo de EVA R-GRID

Resumen

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.

Palabras claves: EVA R-GRID, Cluster, Linux, Windows, inicio dual, administrador de arranque, Master Boot Record.

Abstract

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.

Key words: EVA R-GRID, Cluster, Linux, Windows, dual boot, Boot Manager.

Daniel Burbano, PCPEMaria Paula Angarita, Ing. Sistemas

Fabián Lozada, Ing. Sistemas

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

2ubica la revista.”

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 CruzDirectore-mail: [email protected]

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].

Page 9: Revista de Tecnología

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 inst a lado Microsoft Windows XP 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.

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.

8 Universidad El Bosque - Facultad de Ingeniería de Sistemas

a. FAT de 30 MB

b. /boot de 100 MB

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

III. LA SOLUCIÓN

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.

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:

Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 9

Page 10: Revista de Tecnología

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 inst a lado Microsoft Windows XP 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.

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.

8 Universidad El Bosque - Facultad de Ingeniería de Sistemas

a. FAT de 30 MB

b. /boot de 100 MB

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

III. LA SOLUCIÓN

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.

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:

Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 9

Page 11: Revista de Tecnología

V. CAMBIO DEL ARCHIVO BOOT.INI PARA HACER EL PASO DE LINUX A WINDOWS.

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™.

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.

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=30default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS[operating systems]multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /NoExecute=OptInc:\boot.lnx=”LINUX”En este estado el computador siempre inicia por defecto en WindowsTM.

Estado 2:

[boot loader]timeout=30default= c:\boot.lnx[operating systems]multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /NoExecute=OptInc:\boot.lnx=”LINUX”

En este estado el computador siempre inicia por defecto en 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

Estado 1:

Estado 2:

El archivo boot.ini es el que va a hacer modificado por ambos sistemas operativos.

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.

[boot loader]timeout=30default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS[operating systems]multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /NoExecute=OptIn

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=303. default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS4. [operating systems]5.multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microso f t Win do ws X P P ro fe s s ion a l " / fa s t de te c t /NoExecute=OptIn6. 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ú.

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.

10 Universidad El Bosque - Facultad de Ingeniería de Sistemas

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 software 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

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/bashcp -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 hacer un enlace simbólico en la s ca r pet 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.

Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 11

Page 12: Revista de Tecnología

V. CAMBIO DEL ARCHIVO BOOT.INI PARA HACER EL PASO DE LINUX A WINDOWS.

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™.

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.

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=30default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS[operating systems]multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /NoExecute=OptInc:\boot.lnx=”LINUX”En este estado el computador siempre inicia por defecto en WindowsTM.

Estado 2:

[boot loader]timeout=30default= c:\boot.lnx[operating systems]multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /NoExecute=OptInc:\boot.lnx=”LINUX”

En este estado el computador siempre inicia por defecto en 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

Estado 1:

Estado 2:

El archivo boot.ini es el que va a hacer modificado por ambos sistemas operativos.

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.

[boot loader]timeout=30default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS[operating systems]multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /NoExecute=OptIn

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=303. default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS4. [operating systems]5.multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microso f t Win do ws X P P ro fe s s ion a l " / fa s t de te c t /NoExecute=OptIn6. 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ú.

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.

10 Universidad El Bosque - Facultad de Ingeniería de Sistemas

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 software 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

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/bashcp -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 hacer un enlace simbólico en la s ca r pet 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.

Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 11

Page 13: Revista de Tecnología

(consultado 1 Dic. 2006).http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_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

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 [email protected]

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 [email protected]

Fabián Adolfo Lozada Mariño

Ingeniero de Sistemas de la Universidad El Bosque. Server Administrador. CCE Technical [email protected]

12 Universidad El Bosque - Facultad de Ingeniería de Sistemas

Los Autores

Artículo de Investigación Científica Tecnológica. Sometido a Arbitraje.

Métricas de Similitud para Búsqueda Aproximada

Juan Felipe García

Resumen

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 t. 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 unparalelo comparativo entre las diferentes distancias a la vez que una nomenclat ura 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.

Palabras claves: Búsqueda aproximada de texto, distancias de edición, reconocimiento de patrones.

kp t

Abstract

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.

Key words: Approximate string matching, edit distances,pattern recognition.

k

Page 14: Revista de Tecnología

(consultado 1 Dic. 2006).http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_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

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 [email protected]

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 [email protected]

Fabián Adolfo Lozada Mariño

Ingeniero de Sistemas de la Universidad El Bosque. Server Administrador. CCE Technical [email protected]

12 Universidad El Bosque - Facultad de Ingeniería de Sistemas

Los Autores

Artículo de Investigación Científica Tecnológica. Sometido a Arbitraje.

Métricas de Similitud para Búsqueda Aproximada

Juan Felipe García

Resumen

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 t. 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 unparalelo comparativo entre las diferentes distancias a la vez que una nomenclat ura 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.

Palabras claves: Búsqueda aproximada de texto, distancias de edición, reconocimiento de patrones.

kp t

Abstract

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.

Key words: Approximate string matching, edit distances,pattern recognition.

k

Page 15: Revista de Tecnología

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.

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

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.

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}.

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 y si se [1:::10]

1) Alfabeto:

2) Cadena de caracteres:

14 Universidad El Bosque - Facultad de Ingeniería de Sistemas

Distancias de Edición

Introducción

Aplicaciones

Distancias

Conclusiones

Figura 1. Contenido del documento

desea obtener una sub-cadena es posible notarla como cadena = “mundo”. Así un sub-índice representa una [6:10] sub cadena o un único carácter, es decir, cadena = 'o', y 2cadena representa el i-ésimo carácter de la cadena. iTambié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

3) Patrón, texto y errores:

4) Alineamiento y transcripción:

5) Distancia o métrica de similitud:

6) Búsqueda Exacta:

7) Búsqueda Aproximada:

Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 15

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.

8) Búsqueda probabilística de proximidad:

9) Operaciones de Bits:

Page 16: Revista de Tecnología

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.

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

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.

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}.

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 y si se [1:::10]

1) Alfabeto:

2) Cadena de caracteres:

14 Universidad El Bosque - Facultad de Ingeniería de Sistemas

Distancias de Edición

Introducción

Aplicaciones

Distancias

Conclusiones

Figura 1. Contenido del documento

desea obtener una sub-cadena es posible notarla como cadena = “mundo”. Así un sub-índice representa una [6:10] sub cadena o un único carácter, es decir, cadena = 'o', y 2cadena representa el i-ésimo carácter de la cadena. iTambié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

3) Patrón, texto y errores:

4) Alineamiento y transcripción:

5) Distancia o métrica de similitud:

6) Búsqueda Exacta:

7) Búsqueda Aproximada:

Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 15

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.

8) Búsqueda probabilística de proximidad:

9) Operaciones de Bits:

Page 17: Revista de Tecnología

• Desplazamiento: Corresponde al corrimiento en un bit. Puede realizarse en sentido izquierda-derecha o derecha-izquierda 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.

A. Operaciones comunesLas 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

1Lutwidge Dogson inventó un juego al que llamó “doublet” [29], este problema ya definía, por medio de sus

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.

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

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.

bit a bit b a & b 0 0 0 0 1 0 1 0 0 1 1 1

TABLA I. Tabla de verdad para la conjunción lógica

bit a bit b a b 0 0 0 0 1 1 1 0 1 1 1 1

|

TABLA II. Tabla de verdad para la disyunción lógica inclusiva

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

molar cola

toma ola

hola2

2

1

1

Figura 2. Distancia usando la métrica Levenshtein

MORSA Palabra InicialMORAS Transposición de letrasMORA Supresión de la letra SROMA Transposición de letrasRAMO Transposición de letrasAMOR Transposición de letras

TABLA IV. Ejemplo de Doublet

ALGO y a esta nueva palabra mediante otra sustitución obtenemos ARGO gracias a la sustitución de la letra L por la R.

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 LevenshteinPese que el término distancia fue acuñado formalmente en un principio por Hamming [29], cuando Vladimir

2Iosifovich Levenshtein 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 pa ra conver t ir la cadena A NI VERSAR IO en

3UNIVERSALIDAD . 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

|

| |

A. Distancia Levenshtein

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 BloquesEsta 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 HammingEs, 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.

B. Distancia de Edición por Bloques

C. Distancia Hamming

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).

TABLA V. Ejemplo de la distancia Levenshtein

16 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 17

Page 18: Revista de Tecnología

• Desplazamiento: Corresponde al corrimiento en un bit. Puede realizarse en sentido izquierda-derecha o derecha-izquierda 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.

A. Operaciones comunesLas 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

1Lutwidge Dogson inventó un juego al que llamó “doublet” [29], este problema ya definía, por medio de sus

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.

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

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.

bit a bit b a & b 0 0 0 0 1 0 1 0 0 1 1 1

TABLA I. Tabla de verdad para la conjunción lógica

bit a bit b a b 0 0 0 0 1 1 1 0 1 1 1 1

|

TABLA II. Tabla de verdad para la disyunción lógica inclusiva

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

molar cola

toma ola

hola2

2

1

1

Figura 2. Distancia usando la métrica Levenshtein

MORSA Palabra InicialMORAS Transposición de letrasMORA Supresión de la letra SROMA Transposición de letrasRAMO Transposición de letrasAMOR Transposición de letras

TABLA IV. Ejemplo de Doublet

ALGO y a esta nueva palabra mediante otra sustitución obtenemos ARGO gracias a la sustitución de la letra L por la R.

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 LevenshteinPese que el término distancia fue acuñado formalmente en un principio por Hamming [29], cuando Vladimir

2Iosifovich Levenshtein 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 pa ra conver t ir la cadena A NI VERSAR IO en

3UNIVERSALIDAD . 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

|

| |

A. Distancia Levenshtein

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 BloquesEsta 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 HammingEs, 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.

B. Distancia de Edición por Bloques

C. Distancia Hamming

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).

TABLA V. Ejemplo de la distancia Levenshtein

16 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 17

Page 19: Revista de Tecnología

D. Distancia EpisodioEs 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.

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 pesosen 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

| | | | |

D. Distancia Episodio

E. Distancia Indel (LCS)

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].

F. Q-GramsEste 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 MADEstas 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:

mE a - b , mientras que la distancia MAD es la i=1 i igenerada por: max{ a - b 1 i m} [22].i i

H. Distancia DamerauSi 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].

| |

| ||

F. Q-Grams

G. SAD y MAD

H. Distancia Damerau

rosa osa

mario rio

rosario

34

4

Figura 5. Distancia usando la métrica Episodio

moda cola

toga popa

hola

2

2

1

2

pera dado34

Figura 4. Distancia usando la métrica Hamming

4 En otros contextos también se define este nombre, como en procesamiento de voz y computación lingüística[11].

Modal Tolva

Morada Ola

holaColada Ahogala3

Norma

Morsa

22

3

322

4

Figura 6. Distancia usando la métrica LCS

I. Distancia de Segmento AfínUtilizada 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-WatermanSi 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 JaroSiguiendo 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 MarkovPropuesta 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

I. Distancia de Segmento Afín

J. Distancia Smith-Waterman

K. Distancia Jaro

L. Distancia Markov

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 log (rm)/m). En ogeneral 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ámicaLa 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:

A. Programación Dinámica

18 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 19

Page 20: Revista de Tecnología

D. Distancia EpisodioEs 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.

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 pesosen 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

| | | | |

D. Distancia Episodio

E. Distancia Indel (LCS)

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].

F. Q-GramsEste 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 MADEstas 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:

mE a - b , mientras que la distancia MAD es la i=1 i igenerada por: max{ a - b 1 i m} [22].i i

H. Distancia DamerauSi 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].

| |

| ||

F. Q-Grams

G. SAD y MAD

H. Distancia Damerau

rosa osa

mario rio

rosario

34

4

Figura 5. Distancia usando la métrica Episodio

moda cola

toga popa

hola

2

2

1

2

pera dado34

Figura 4. Distancia usando la métrica Hamming

4 En otros contextos también se define este nombre, como en procesamiento de voz y computación lingüística[11].

Modal Tolva

Morada Ola

holaColada Ahogala3

Norma

Morsa

22

3

322

4

Figura 6. Distancia usando la métrica LCS

I. Distancia de Segmento AfínUtilizada 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-WatermanSi 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 JaroSiguiendo 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 MarkovPropuesta 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

I. Distancia de Segmento Afín

J. Distancia Smith-Waterman

K. Distancia Jaro

L. Distancia Markov

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 log (rm)/m). En ogeneral 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ámicaLa 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:

A. Programación Dinámica

18 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 19

Page 21: Revista de Tecnología

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.

TABLA VI. Matriz de programación dinámica para el cálculo de la distancia Levenshtein

Basados en matriz de programación dinámica

Autómatas finitos

FiltradosPara patrones moderados

Para patrones largos

Paralelismo por BitsBasados en matriz de programación dinámica

Basados en autómata

Presentados con complejidad en el peor caso

Presentados con complejidad promedio

Algoritmos

Figura 7. Taxonomía de los algoritmos utilizados

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.

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, D - D = i,j i-1,j-10 ó 1, para las celdas y diagonales, y para las celdas adyacentes: D - D = -1; 0 ó 1 y D - D = -1, 0 ó 1. i,ji,j-1i,j i-1,jGracias 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

B. Paralelización por BitsEste 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

5búsqueda aproximada . 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

B. Paralelización por Bits

Figura 9. Algoritmo de programación dinámica para el cálculodel número de ocurrencias de búsqueda aproximada para ladistancia 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

3 nencontraron un método para multiplicar matrices en tiempo O( ) siempre y log2(n)

cuando sean matrices booleanas.

TABLA VIII. Vectores binarios del agoritmo de Myers

TABLA VII. Matriz de programación dinámica para búsquedade ocurrencias mediante la distancia Levenshtein con k 1

20 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 21

Figura 8. Algoritmo de programación dinámica para el cálculo de la distancia de Leveshtein

Page 22: Revista de Tecnología

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.

TABLA VI. Matriz de programación dinámica para el cálculo de la distancia Levenshtein

Basados en matriz de programación dinámica

Autómatas finitos

FiltradosPara patrones moderados

Para patrones largos

Paralelismo por BitsBasados en matriz de programación dinámica

Basados en autómata

Presentados con complejidad en el peor caso

Presentados con complejidad promedio

Algoritmos

Figura 7. Taxonomía de los algoritmos utilizados

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.

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, D - D = i,j i-1,j-10 ó 1, para las celdas y diagonales, y para las celdas adyacentes: D - D = -1; 0 ó 1 y D - D = -1, 0 ó 1. i,ji,j-1i,j i-1,jGracias 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

B. Paralelización por BitsEste 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

5búsqueda aproximada . 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

B. Paralelización por Bits

Figura 9. Algoritmo de programación dinámica para el cálculodel número de ocurrencias de búsqueda aproximada para ladistancia 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

3 nencontraron un método para multiplicar matrices en tiempo O( ) siempre y log2(n)

cuando sean matrices booleanas.

TABLA VIII. Vectores binarios del agoritmo de Myers

TABLA VII. Matriz de programación dinámica para búsquedade ocurrencias mediante la distancia Levenshtein con k 1

20 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 21

Figura 8. Algoritmo de programación dinámica para el cálculo de la distancia de Leveshtein

Page 23: Revista de Tecnología

B. Reconocimiento de patronesTeniendo 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ñalesEl 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 separaciones o similar 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 ArchivosLos 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 TextoEs 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.

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.

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áticaActualmente 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.

TABLA IX. Codificación delta para la columna 11 de la TablaVII

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 FUTUROSSe 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.

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/b758j4jw128c-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://www.sciencedirect.com/science/ar ticle/B6WJ0-45NJMKJJ/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/

F. Minería de DatosEn 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,

6generalmente, múltiples procesadores , 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 DatosEn 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

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

6 En muchos casos, este número puede ascender a varias decenas e inclusive a cientos.

22 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 23

Page 24: Revista de Tecnología

B. Reconocimiento de patronesTeniendo 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ñalesEl 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 separaciones o similar 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 ArchivosLos 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 TextoEs 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.

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.

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áticaActualmente 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.

TABLA IX. Codificación delta para la columna 11 de la TablaVII

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 FUTUROSSe 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.

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/b758j4jw128c-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://www.sciencedirect.com/science/ar ticle/B6WJ0-45NJMKJJ/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/

F. Minería de DatosEn 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,

6generalmente, múltiples procesadores , 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 DatosEn 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

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

6 En muchos casos, este número puede ascender a varias decenas e inclusive a cientos.

22 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 23

Page 25: Revista de Tecnología

[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/TrieBFS01Published.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. Springer-Verlag, 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://www.sciencedirect.com/science/ar ticle/B758J-4DBJSWW3/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/B6WH3-4DB57J32/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://www.sciencedirect.com/science/ar ticle/B6V0F-3Y0JBNH9/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/B6V1G4C477DB-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:

[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://www.sciencedirect.com/science/ar ticle/B6V0F-475BCSD4/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/B6V1G-4HXBGSH1/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://www.sciencedirect.com/science/ar ticle/B6V0F-4475W6K2/2/8ff4c255a0756ed7bdfe7fe77fe2f964[11] A. K. Elmagarmid, P. G. Ipeirotis, and V. S. Verykios, “Duplicate record detect ion: 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://www.sciencedirect.com/science/ar ticle/B758J-4DBCF4Y1/2/d2a34c9cb978a70d1a174b18faf3c6c1[16] H. Hyyrö, Y. Pinzón, and A. Shinohara, “Fast bit-vector 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

[32] R. Sastry, N. Ranganathan, and K. Remedios, “Casm: a vlsi chip for approximate string matching,” IEEE Transactions on Pat tern 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.

http://www.sciencedirect.com/science/article/B758J4JXY3VF-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.

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 [email protected]

El Autor

Artículo de Investigación Científica y Tecnológica. Sometido a Arbitraje.

24 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 25

Page 26: Revista de Tecnología

[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/TrieBFS01Published.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. Springer-Verlag, 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://www.sciencedirect.com/science/ar ticle/B758J-4DBJSWW3/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/B6WH3-4DB57J32/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://www.sciencedirect.com/science/ar ticle/B6V0F-3Y0JBNH9/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/B6V1G4C477DB-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:

[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://www.sciencedirect.com/science/ar ticle/B6V0F-475BCSD4/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/B6V1G-4HXBGSH1/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://www.sciencedirect.com/science/ar ticle/B6V0F-4475W6K2/2/8ff4c255a0756ed7bdfe7fe77fe2f964[11] A. K. Elmagarmid, P. G. Ipeirotis, and V. S. Verykios, “Duplicate record detect ion: 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://www.sciencedirect.com/science/ar ticle/B758J-4DBCF4Y1/2/d2a34c9cb978a70d1a174b18faf3c6c1[16] H. Hyyrö, Y. Pinzón, and A. Shinohara, “Fast bit-vector 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

[32] R. Sastry, N. Ranganathan, and K. Remedios, “Casm: a vlsi chip for approximate string matching,” IEEE Transactions on Pat tern 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.

http://www.sciencedirect.com/science/article/B758J4JXY3VF-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.

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 [email protected]

El Autor

Artículo de Investigación Científica y Tecnológica. Sometido a Arbitraje.

24 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 25

Page 27: Revista de Tecnología

Prototipo de una Herramienta Computacional para el Desarrollo de Material Educativo en Funciones de una Variable

Nidya A. Monroy RodríguezBoris Sánchez Sánchez

Resumen

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.

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.

Abstract

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.

Key words: Educational Programs. Mathematics Teaching in Computers. One Variable Mathematical Functions. Teaching of Mathematical Functions. Tools for Development of Educational Material.

Page 28: Revista de Tecnología

Prototipo de una Herramienta Computacional para el Desarrollo de Material Educativo en Funciones de una Variable

Nidya A. Monroy RodríguezBoris Sánchez Sánchez

Resumen

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.

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.

Abstract

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.

Key words: Educational Programs. Mathematics Teaching in Computers. One Variable Mathematical Functions. Teaching of Mathematical Functions. Tools for Development of Educational Material.

Page 29: Revista de Tecnología

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.

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.

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.

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.

Observación de la escenainteractiva y del sistemaexpuesto

Usar herramienta paradarse una idea de lasproporciones de losobjetos o tomar apuntes

Arranque

Carga desde el archivofuente de los contenidosy visualización decontenido inicial deacuerdo a la secuenciaprogramada por eldesarrollador

Esperar por acción Graficar función

Navegar por contenidosdel marco primario

Navegar por contenidosdel marco secundario

Figura 2. Arquitectura de la herramienta

Figura 1. Esquema de la herramienta propuesto

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.

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

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.

REFERENCIAS

[1]ARIAS, Marlene. Metodología dinámica para el desarrollo de software educativo. www.vir tualeduca.org/vir tualeduca/vir tual/actas2002/actas02/913.pdf. 2002.

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.

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.

Figura 3. Ejemplo 1 desarrollado con el prototipo de laherramienta

Figura 4. Ejemplo 2 desarrollado con el prototipo de laherramienta

28 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 29

Page 30: Revista de Tecnología

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.

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.

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.

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.

Observación de la escenainteractiva y del sistemaexpuesto

Usar herramienta paradarse una idea de lasproporciones de losobjetos o tomar apuntes

Arranque

Carga desde el archivofuente de los contenidosy visualización decontenido inicial deacuerdo a la secuenciaprogramada por eldesarrollador

Esperar por acción Graficar función

Navegar por contenidosdel marco primario

Navegar por contenidosdel marco secundario

Figura 2. Arquitectura de la herramienta

Figura 1. Esquema de la herramienta propuesto

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.

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

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.

REFERENCIAS

[1]ARIAS, Marlene. Metodología dinámica para el desarrollo de software educativo. www.vir tualeduca.org/vir tualeduca/vir tual/actas2002/actas02/913.pdf. 2002.

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.

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.

Figura 3. Ejemplo 1 desarrollado con el prototipo de laherramienta

Figura 4. Ejemplo 2 desarrollado con el prototipo de laherramienta

28 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 29

Page 31: Revista de Tecnología

[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 exp er iment a l de la s matemát ic a s. www.somi.cinstrum.unam.mx/virtualeduca2005/resumenes/. 2005.[8]VARIOS. Descartes.http://descartes.cnice.mecd.es/presentacion/descripcion_web.html. Consultado 22 de noviembre de 2006.[9]VARIOS. Macromedia director.http://www.adobe.com/products/director/ consultado en enero 12 de 2007.

30 Universidad El Bosque - Facultad de Ingeniería de Sistemas

Los Autores

Artículo de Investigación científica y tecnológica. Sometido a arbitraje.

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. [email protected]

Boris Sánchez Sánchez

Ingeniero de Sistemas Universidad El [email protected].

Prototipo para la Implementación de un Módulo Web fundamentado en la Teoría sobre Portal de Contenidos

Carlos Hernán Ortiz BuitragoJuan Sebastián García O.

Juan Carlos Jiménez V.

ResumenEl 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: Software Engineer ing, Web Content Management, Depar tment of Cultural and Spor t activities of the University of El Bosque, Cultural and sport activities management.

Page 32: Revista de Tecnología

[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 exp er iment a l de la s matemát ic a s. www.somi.cinstrum.unam.mx/virtualeduca2005/resumenes/. 2005.[8]VARIOS. Descartes.http://descartes.cnice.mecd.es/presentacion/descripcion_web.html. Consultado 22 de noviembre de 2006.[9]VARIOS. Macromedia director.http://www.adobe.com/products/director/ consultado en enero 12 de 2007.

30 Universidad El Bosque - Facultad de Ingeniería de Sistemas

Los Autores

Artículo de Investigación científica y tecnológica. Sometido a arbitraje.

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. [email protected]

Boris Sánchez Sánchez

Ingeniero de Sistemas Universidad El [email protected].

Prototipo para la Implementación de un Módulo Web fundamentado en la Teoría sobre Portal de Contenidos

Carlos Hernán Ortiz BuitragoJuan Sebastián García O.

Juan Carlos Jiménez V.

ResumenEl 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: Software Engineer ing, Web Content Management, Depar tment of Cultural and Spor t activities of the University of El Bosque, Cultural and sport activities management.

Page 33: Revista de Tecnología

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 Universitar io 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 Universitar io, 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 tamento, 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

tanto las actividades deportivas como culturales permitiendo la interacción con el usuario.

IV. CONCEPTOS BÁSICOS EN LAADMINISTRACIÓ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.

Dato:

Contenido:

Información:

Contenido es Información Más Datos:

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.

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.

Content typeContent component

ElementElementElement

Content componentElementElement

Content typeContent component

ElementElement

Content componentElementElement

32 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 33

Page 34: Revista de Tecnología

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 Universitar io 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 Universitar io, 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 tamento, 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

tanto las actividades deportivas como culturales permitiendo la interacción con el usuario.

IV. CONCEPTOS BÁSICOS EN LAADMINISTRACIÓ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.

Dato:

Contenido:

Información:

Contenido es Información Más Datos:

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.

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.

Content typeContent component

ElementElementElement

Content componentElementElement

Content typeContent component

ElementElement

Content componentElementElement

32 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 33

Page 35: Revista de Tecnología

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)

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

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.

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.

Figura 1. Arquitectura de un CMS

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).

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

Aplicación de la Administración de Contenidos (CMA):

iac e

ór

nC

n aiza c óg ir nO

cca

lib

óinu

P

Al om tna ic ee an m

Figura 2. Ciclo de vida del contenido

34 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 35

Page 36: Revista de Tecnología

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)

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

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.

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.

Figura 1. Arquitectura de un CMS

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).

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

Aplicación de la Administración de Contenidos (CMA):

iac e

ór

nC

n aiza c óg ir nO

cca

lib

óinu

P

Al om tna ic ee an m

Figura 2. Ciclo de vida del contenido

34 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 35

Page 37: Revista de Tecnología

debe ser aprobado por una persona que esté al tanto de los estándares del diseño de un contenido.

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

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.

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.

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.

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.

También se pueden encontrar errores ocasionales durante el ciclo de vida del componente que necesiten corregirse.

Nunca se debe realizar un mantenimiento directamente en un sistema en funcionamiento, desplegado.

Archivar: 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 administ ración t anto del MMA (Metacontent Management Application) como del CMA (Content Management Application) estas dos deben ir separadas.

Aplicación para la Administración de Metacontenido (MMA):

Design

Authoring

Editing

Layout

Testing

Staging

Deployment

Manteinance

Archival

Removal

Co

nte

nt

Man

agem

en

tA

pp

lica

tio

n

Co

nte

nt

Co

mp

on

en

tR

ep

osi

tory

Ap

pro

val

Figura 3. Elementos básicos

Analysis

Design

Creation

Build

Testing

Staging

Deployment

Manteinance

Removal

Meta

con

ten

t M

an

agem

en

tA

pp

lica

tio

n

Meta

con

ten

t R

ep

osi

tory

Ap

pro

val

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?

Ciclo de vida de un MMA:

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?

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.

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.

Figura 4. Elementos del ciclo de vida

36 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 37

Page 38: Revista de Tecnología

debe ser aprobado por una persona que esté al tanto de los estándares del diseño de un contenido.

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

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.

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.

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.

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.

También se pueden encontrar errores ocasionales durante el ciclo de vida del componente que necesiten corregirse.

Nunca se debe realizar un mantenimiento directamente en un sistema en funcionamiento, desplegado.

Archivar: 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 administ ración t anto del MMA (Metacontent Management Application) como del CMA (Content Management Application) estas dos deben ir separadas.

Aplicación para la Administración de Metacontenido (MMA):

Design

Authoring

Editing

Layout

Testing

Staging

Deployment

Manteinance

Archival

Removal

Co

nte

nt

Man

agem

en

tA

pp

lica

tio

n

Co

nte

nt

Co

mp

on

en

tR

ep

osi

tory

Ap

pro

val

Figura 3. Elementos básicos

Analysis

Design

Creation

Build

Testing

Staging

Deployment

Manteinance

Removal

Meta

con

ten

t M

an

agem

en

tA

pp

lica

tio

n

Meta

con

ten

t R

ep

osi

tory

Ap

pro

val

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?

Ciclo de vida de un MMA:

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?

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.

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.

Figura 4. Elementos del ciclo de vida

36 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 37

Page 39: Revista de Tecnología

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

Aplicación del Envío del Contenido: 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 ramientas 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 deportivas 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.

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 [email protected].

Juan Sebastián García Ortiz

Ingeniero de Sistemas de la Universidad El Bosque, Bogotá, [email protected]

Juan Carlos Jiménez Valenzuela

Ingeniero de Sistemas de la Universidad El Bosque, Bogotá, [email protected]

Los Autores

Artículo sometido a Arbitraje. Artículo tipo 9.

38 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 39

Page 40: Revista de Tecnología

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

Aplicación del Envío del Contenido: 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 ramientas 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 deportivas 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.

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 [email protected].

Juan Sebastián García Ortiz

Ingeniero de Sistemas de la Universidad El Bosque, Bogotá, [email protected]

Juan Carlos Jiménez Valenzuela

Ingeniero de Sistemas de la Universidad El Bosque, Bogotá, [email protected]

Los Autores

Artículo sometido a Arbitraje. Artículo tipo 9.

38 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 39

Page 41: Revista de Tecnología

Creación de Aplicaciones Web utilizando Java Server Faces y Netbeans con Visual Web Pack

Alejandro Pieschacón Rueda

Resumen

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.

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.

Palabras Clave: Java Server Faces, Netbeans, Visual Web Pack, Aplicaciones Web.

Abstract

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.

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.

Keywords: Java Server Faces, Netbeans, Visual Web Pack, Web Applications.

Equipo de Investigación en Software LibrePor la equidad del conocimiento

Líneas de Investigación• Grid Computing• Simulación• Biometría• Desarrollo Social

Actividades• Hora Linux

www.sistemasunbosque.edu.co/[email protected]

Te invitamos a participar

Equipo de Investigación en

Software Libre

Page 42: Revista de Tecnología

Creación de Aplicaciones Web utilizando Java Server Faces y Netbeans con Visual Web Pack

Alejandro Pieschacón Rueda

Resumen

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.

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.

Palabras Clave: Java Server Faces, Netbeans, Visual Web Pack, Aplicaciones Web.

Abstract

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.

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.

Keywords: Java Server Faces, Netbeans, Visual Web Pack, Web Applications.

Equipo de Investigación en Software LibrePor la equidad del conocimiento

Líneas de Investigación• Grid Computing• Simulación• Biometría• Desarrollo Social

Actividades• Hora Linux

www.sistemasunbosque.edu.co/[email protected]

Te invitamos a participar

Equipo de Investigación en

Software Libre

Page 43: Revista de Tecnología

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 entre páginas, sopor tar 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.

Java Server Faces

Estructura de una aplicación Java Server Faces

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.

Managed Beans

JavaMail

BrowserHTTP Request

renders HTML

HTTP Response

accesses page

JavaServer

myform.jsp

myUI

Figura. Esquema Java Server FacesTomado de:http://www.programacion.com/java/tutorial/jsf_intro/1/

• 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.

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, Labels y But tons, adicionalmente se implementara el uso de JavaMail y los Managed Beans mencionados con anterioridad en este articulo.

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.

Netbeans con Visual Web Pack

Diseño de la aplicación

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 enhttp://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.html.

1• Apache Tomcat 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 necesar ia 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/.

Construcción de la aplicación

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:

Creación del proyecto nuevo:

21. Inicie el IDE de Netbeans usando la opción adecuada desde la siguiente lista:

Manejo y configuración del Software

Construcción de la aplicación

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.

42 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 43

Page 44: Revista de Tecnología

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 entre páginas, sopor tar 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.

Java Server Faces

Estructura de una aplicación Java Server Faces

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.

Managed Beans

JavaMail

BrowserHTTP Request

renders HTML

HTTP Response

accesses page

JavaServer

myform.jsp

myUI

Figura. Esquema Java Server FacesTomado de:http://www.programacion.com/java/tutorial/jsf_intro/1/

• 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.

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, Labels y But tons, adicionalmente se implementara el uso de JavaMail y los Managed Beans mencionados con anterioridad en este articulo.

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.

Netbeans con Visual Web Pack

Diseño de la aplicación

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 enhttp://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.html.

1• Apache Tomcat 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 necesar ia 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/.

Construcción de la aplicación

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:

Creación del proyecto nuevo:

21. Inicie el IDE de Netbeans usando la opción adecuada desde la siguiente lista:

Manejo y configuración del Software

Construcción de la aplicación

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.

42 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 43

Page 45: Revista de Tecnología

- Windows. Doble-click al icono de NetBeans ubicado en el escritorio.

- Mac. Doble-click al icono de NetBeans ubicado dentro de la carpeta de instalación.

- 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.

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

nodo de la página y selecciones Set as Start Page desde el menú emergente.

Creación de las páginas Web.

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:

• 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

Figura 1. Ventana Projects

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.

• 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.

RadioButton Group

: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:

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

Label

Figura 2. Diseño de la Encuesta

Figura 3. Diseñador Visual

Figura 4. Paleta de Componentes

44 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 45

Page 46: Revista de Tecnología

- Windows. Doble-click al icono de NetBeans ubicado en el escritorio.

- Mac. Doble-click al icono de NetBeans ubicado dentro de la carpeta de instalación.

- 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.

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

nodo de la página y selecciones Set as Start Page desde el menú emergente.

Creación de las páginas Web.

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:

• 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

Figura 1. Ventana Projects

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.

• 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.

RadioButton Group

: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:

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

Label

Figura 2. Diseño de la Encuesta

Figura 3. Diseñador Visual

Figura 4. Paleta de Componentes

44 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 45

Page 47: Revista de Tecnología

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 lores siguientes: “Java Ser ver Faces”, “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.

CheckBox Group

DropDown List

TextField

Button

Label

Static Text

Button

1. contador:

2. aParticipado:

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 rojec t s, haga click derecho sobre el nodo 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. 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 contadorgetApplicationBean1().setContador(getApplicationBean1().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().toString());

3. correo:

false

//Método para aumentar el objeto contadorgetApplicationBean1().setContador(getApplicationBean1().getContador()+1);//Método para cambiar el estado del objeto

getSessionBean1().setAParticipado(true);//Metodo para asignarle el valor al objeto

getRequestBean1().setCorreo(textField1.getText().toString());

aParticipado

correo

//Metodo para obtener las respuestas seleccionadas de la pregunta 2 de la encuestaString[] seleccion = newString[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 encuestason:\n\n"+label2.getText().toString()+"\n\n"+

radioButtonGroup1.getSelected().toString()+"\n\n"+label3.getText().toString()+"\n\n"+

respuesta+"\n\n"+label5.getText().toString()+"\n\n"+dropDown1.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 = "[email protected]"; //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 objectJavax.mail.Session session =

Javax.mail.Session.getInstance(props);

// construct the messagejavax.mail.Message msg = new

MimeMessage(session);

//Metodo para obtener las respuestas seleccionadas de la pregunta 2 de la encuestaString[] seleccion = newString[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 encuestason:\n\n"+label2.getText().toString()+"\n\n"+

radioButtonGroup1.getSelected().toString()+"\n\n"+label3.getText().toString()+"\n\n"+

respuesta+"\n\n"+label5.getText().toString()+"\n\n"+dropDown1.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 = "[email protected]"; //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 objectJavax.mail.Session session =

Javax.mail.Session.getInstance(props);

// construct the messagejavax.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 offSMTPTransport t =

(SMTPTransport)session.getTransport(ssl ? "smtps" : "smtp");

try {if (auth)t.connect(mailhost, user, password);elset.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 instanceofSMTPAddressFailedException) {

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 instanceofSMTPAddressSucceededException) {

log("ADDRESS SUCCEEDED:");SMTPAddressSucceededException ssfe =(SMTPAddressSucceededException)sfe;

}}

}else {log("Got Exception: " + e);

}}

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 offSMTPTransport t =

(SMTPTransport)session.getTransport(ssl ? "smtps" : "smtp");

try {if (auth)t.connect(mailhost, user, password);elset.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 instanceofSMTPAddressFailedException) {

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 instanceofSMTPAddressSucceededException) {

log("ADDRESS SUCCEEDED:");SMTPAddressSucceededException ssfe =(SMTPAddressSucceededException)sfe;

}}

}else {log("Got Exception: " + e);

}}

46 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 47

Page 48: Revista de Tecnología

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 lores siguientes: “Java Ser ver Faces”, “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.

CheckBox Group

DropDown List

TextField

Button

Label

Static Text

Button

1. contador:

2. aParticipado:

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 rojec t s, haga click derecho sobre el nodo 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. 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 contadorgetApplicationBean1().setContador(getApplicationBean1().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().toString());

3. correo:

false

//Método para aumentar el objeto contadorgetApplicationBean1().setContador(getApplicationBean1().getContador()+1);//Método para cambiar el estado del objeto

getSessionBean1().setAParticipado(true);//Metodo para asignarle el valor al objeto

getRequestBean1().setCorreo(textField1.getText().toString());

aParticipado

correo

//Metodo para obtener las respuestas seleccionadas de la pregunta 2 de la encuestaString[] seleccion = newString[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 encuestason:\n\n"+label2.getText().toString()+"\n\n"+

radioButtonGroup1.getSelected().toString()+"\n\n"+label3.getText().toString()+"\n\n"+

respuesta+"\n\n"+label5.getText().toString()+"\n\n"+dropDown1.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 = "[email protected]"; //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 objectJavax.mail.Session session =

Javax.mail.Session.getInstance(props);

// construct the messagejavax.mail.Message msg = new

MimeMessage(session);

//Metodo para obtener las respuestas seleccionadas de la pregunta 2 de la encuestaString[] seleccion = newString[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 encuestason:\n\n"+label2.getText().toString()+"\n\n"+

radioButtonGroup1.getSelected().toString()+"\n\n"+label3.getText().toString()+"\n\n"+

respuesta+"\n\n"+label5.getText().toString()+"\n\n"+dropDown1.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 = "[email protected]"; //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 objectJavax.mail.Session session =

Javax.mail.Session.getInstance(props);

// construct the messagejavax.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 offSMTPTransport t =

(SMTPTransport)session.getTransport(ssl ? "smtps" : "smtp");

try {if (auth)t.connect(mailhost, user, password);elset.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 instanceofSMTPAddressFailedException) {

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 instanceofSMTPAddressSucceededException) {

log("ADDRESS SUCCEEDED:");SMTPAddressSucceededException ssfe =(SMTPAddressSucceededException)sfe;

}}

}else {log("Got Exception: " + e);

}}

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 offSMTPTransport t =

(SMTPTransport)session.getTransport(ssl ? "smtps" : "smtp");

try {if (auth)t.connect(mailhost, user, password);elset.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 instanceofSMTPAddressFailedException) {

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 instanceofSMTPAddressSucceededException) {

log("ADDRESS SUCCEEDED:");SMTPAddressSucceededException ssfe =(SMTPAddressSucceededException)sfe;

}}

}else {log("Got Exception: " + e);

}}

46 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 47

Page 49: Revista de Tecnología

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:

Nota:

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;

prerender()

if(getSessionBean1().isAParticipado())Button1.setDisabled(true);

prerender()

StaticText1.setText(getRequestBean1().getCorreo().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):

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 enter8. 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

StaticText1.setText(getRequestBean1().getCorreo().toString());

Run Main Project

Figura 5. Página de Navegación

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 enht tp://w w w.devshed.com/c/a/Java/Introduct ion-to-JavaServer-Faces-1/ (11/05/2007)[3] Netbeans, “Understanding Scopes and Managed Beans”, disponible enht tp://w w w.netbeans.org/kb/55/v wp-scopes.html (11/05/2007)[4] Java en Castellano. “API de JavaMail”, disponible enhttp://www.programacion.com/java/tutorial/javamail/ (11/05/2007)[5] Netbeans, IDE para Java y J2EE, disponible enhttp://www.netbeans.org (11/05/2007)[6] Netbeans, Introduction to the Netbeans Visual Web Pack, disponible enht t p: / /w w w.net b e ans.org/pro duc t s /v isua lweb/ (11/05/2007)

Alejandro Pieschacón Rueda

Ingeniero de Sistemas de la Facultad de Ingeniería de Sistemas de la Universidad El [email protected]

El Autor

Artículo de informe de resultado de proyecto de Informática.

48 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 49

Page 50: Revista de Tecnología

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:

Nota:

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;

prerender()

if(getSessionBean1().isAParticipado())Button1.setDisabled(true);

prerender()

StaticText1.setText(getRequestBean1().getCorreo().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):

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 enter8. 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

StaticText1.setText(getRequestBean1().getCorreo().toString());

Run Main Project

Figura 5. Página de Navegación

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 enht tp://w w w.devshed.com/c/a/Java/Introduct ion-to-JavaServer-Faces-1/ (11/05/2007)[3] Netbeans, “Understanding Scopes and Managed Beans”, disponible enht tp://w w w.netbeans.org/kb/55/v wp-scopes.html (11/05/2007)[4] Java en Castellano. “API de JavaMail”, disponible enhttp://www.programacion.com/java/tutorial/javamail/ (11/05/2007)[5] Netbeans, IDE para Java y J2EE, disponible enhttp://www.netbeans.org (11/05/2007)[6] Netbeans, Introduction to the Netbeans Visual Web Pack, disponible enht t p: / /w w w.net b e ans.org/pro duc t s /v isua lweb/ (11/05/2007)

Alejandro Pieschacón Rueda

Ingeniero de Sistemas de la Facultad de Ingeniería de Sistemas de la Universidad El [email protected]

El Autor

Artículo de informe de resultado de proyecto de Informática.

48 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 49

Page 51: Revista de Tecnología

Desarrollo de una Interfaz Gráfica Multiplataforma para una Herramienta de Computación Forense

Edward Andrés Corredor Rondón

Resumen

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.

Palabras Clave: Computación Forense, Software Libre, Snort, Detector de Intrusos, SWING, JFC, Evidencia Forense e Intrusión.

Abstract

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.

Keywords: Forensic computation, free Software, Snort, SWING, JFC, Forensic Evidence.

Pauta de Cortesía Pauta de Cortesía

Page 52: Revista de Tecnología

Desarrollo de una Interfaz Gráfica Multiplataforma para una Herramienta de Computación Forense

Edward Andrés Corredor Rondón

Resumen

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.

Palabras Clave: Computación Forense, Software Libre, Snort, Detector de Intrusos, SWING, JFC, Evidencia Forense e Intrusión.

Abstract

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.

Keywords: Forensic computation, free Software, Snort, SWING, JFC, Forensic Evidence.

Pauta de Cortesía Pauta de Cortesía

Page 53: Revista de Tecnología

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 estudio de las her ramientas 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 contrar io de las empresas llamadas Mipymes (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 s e han c re 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 adaptar una aplicación a una her ramienta de Computación Forense, para esto en la primera parte se hablará de la historia que rodea al área que pertenece la

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.

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.

Además, como se dijo anteriormente un IDS (Sistema Detector de Intrusos), busca alertar sobre cualquier

InterNet

Servidor

NIDS

Figura 1. Sistema Detector de Intrusos

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]

En la figura No. 2. Se muestra la razón por la cual se crea este tipo de herramientas.

La Computación Forense ofrece una ser ie de herramientas para las diferentes áreas que cubren particularmente la Detección de Intrusos, como son:

• Herramientas de Recolección y Análisis de evidencia.

• Herramientas de Detección de Intrusos.

• Herramientas de Análisis de Paquetes (Sniffer).

52 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 53

Page 54: Revista de Tecnología

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 estudio de las her ramientas 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 contrar io de las empresas llamadas Mipymes (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 s e han c re 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 adaptar una aplicación a una her ramienta de Computación Forense, para esto en la primera parte se hablará de la historia que rodea al área que pertenece la

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.

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.

Además, como se dijo anteriormente un IDS (Sistema Detector de Intrusos), busca alertar sobre cualquier

InterNet

Servidor

NIDS

Figura 1. Sistema Detector de Intrusos

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]

En la figura No. 2. Se muestra la razón por la cual se crea este tipo de herramientas.

La Computación Forense ofrece una ser ie de herramientas para las diferentes áreas que cubren particularmente la Detección de Intrusos, como son:

• Herramientas de Recolección y Análisis de evidencia.

• Herramientas de Detección de Intrusos.

• Herramientas de Análisis de Paquetes (Sniffer).

52 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 53

Page 55: Revista de Tecnología

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:

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.

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.

Dragon:

• 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.

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 sepresentan 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

Snort:

7. Secuestrode sesión

PC conectada a Red

Administrador de Red

En el trabajo

En lugares públicos

Habilita función decontrol de sesión

Habilita función demonitoreo de sesión

Observa en pantalla lomismo que ve el usuario

Obtiene información

Aplicaciones usadasWeb sites visitados

E-mails

6. Virus

SW maliciosoPérdida de información

Uso inadecuado derecursos de la PC

Archivos ejecutablesJuegos

ImágenesScript de Web pages

Al ejecutar archivos

Adjuntos en

El usuario se da cuentaCuando pierde información

Se reproducey trasmite

Variantes

Mediante E-mailsJuegos

Archivos ejecutables

“Worms” / No se reproducenCaballos de Troya / Esperan tiempo para activarse

5. Adware

SW que muestra publicidad

Anuncios repentinos en pantalla

Riesgo

Adware y Spywarese instalan

Muchos programasgratuitos de InternetIncluyen

AdwareSpyware

Compartiendo archivosen Internet

Botones “engañosos”Premios

Descargar juegos

Videos gratisProgramas gratis

Sin permiso del usuario

Sin conocimiento del usuarioIncluyen Spyware

“Pop ups”“Banners”

1. Phishing

Obtención fraudulenta deinformación confidencial vía E-mail

E-mail suplantando banco o entidad degobierno para “pescar” información real

Envío masivo de E-mails para “pescar”incautos

Objetivo del fraude

Claves de usuarioNúmero de clienteNúmeros de cuentaPassword/Pin

“estamos actualizando nuestros registros”

“seguridad y mantenimiento”

“investigación de irregularidades”

“usted tiene una suma grande de dinero en sucuenta, por favor verifique sus movimientos”

“actualice sus datos”

“personalización de cuentas” “su cuenta ha sido congelada” “tenemos que reconfirmar sus datos” “su tarjeta de crédito ha sido cancelada”

Almacenar texto quese digita en teclado

Dispositivos HW + SWentre PC y teclado

Recuperar archivo yconocer información

Identificador de usuarioy contraseñas

Objetivo

Riesgo mayor

2. Keyloggers

Equipos públicos

Cafés InternetHoteles

Salas de aeropuertosAlguien con accesofísico a PC propia

Digita número de usuario

Crear sitios Web falsos

3. Web Page SpoofingCapturar en “campos normales”datos personales / información de clientes

El cliente “cree” que estaen una Web site real

Se accede a Web sites falsos x ligasen concentradores de información

Digita contraseña

4. Spyware

SW que envía informaciónpersonal a terceros

Sin autorización

Informaciónenviada

Propósito

SW espía se carga

Sin conocimiento

Web sites visitadosNombres de usuarioContraseñas

Hacer mal uso de la información obtenidaEnviar publicidad

Al “bajar” de Internet programas ilegalesAl “bajar” de Internet programas gratuitosCarlos Ramírez Acosta

Septiembre 2005

Fraudes porInternet

Frases típicas

Figura 2. Problemas generados en Internet

Figura 4. Inicio Snort

Figura 3. Sistema Detector de Intrusos “Snort”

54 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 55

Page 56: Revista de Tecnología

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:

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.

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.

Dragon:

• 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.

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 sepresentan 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

Snort:

7. Secuestrode sesión

PC conectada a Red

Administrador de Red

En el trabajo

En lugares públicos

Habilita función decontrol de sesión

Habilita función demonitoreo de sesión

Observa en pantalla lomismo que ve el usuario

Obtiene información

Aplicaciones usadasWeb sites visitados

E-mails

6. Virus

SW maliciosoPérdida de información

Uso inadecuado derecursos de la PC

Archivos ejecutablesJuegos

ImágenesScript de Web pages

Al ejecutar archivos

Adjuntos en

El usuario se da cuentaCuando pierde información

Se reproducey trasmite

Variantes

Mediante E-mailsJuegos

Archivos ejecutables

“Worms” / No se reproducenCaballos de Troya / Esperan tiempo para activarse

5. Adware

SW que muestra publicidad

Anuncios repentinos en pantalla

Riesgo

Adware y Spywarese instalan

Muchos programasgratuitos de InternetIncluyen

AdwareSpyware

Compartiendo archivosen Internet

Botones “engañosos”Premios

Descargar juegos

Videos gratisProgramas gratis

Sin permiso del usuario

Sin conocimiento del usuarioIncluyen Spyware

“Pop ups”“Banners”

1. Phishing

Obtención fraudulenta deinformación confidencial vía E-mail

E-mail suplantando banco o entidad degobierno para “pescar” información real

Envío masivo de E-mails para “pescar”incautos

Objetivo del fraude

Claves de usuarioNúmero de clienteNúmeros de cuentaPassword/Pin

“estamos actualizando nuestros registros”

“seguridad y mantenimiento”

“investigación de irregularidades”

“usted tiene una suma grande de dinero en sucuenta, por favor verifique sus movimientos”

“actualice sus datos”

“personalización de cuentas” “su cuenta ha sido congelada” “tenemos que reconfirmar sus datos” “su tarjeta de crédito ha sido cancelada”

Almacenar texto quese digita en teclado

Dispositivos HW + SWentre PC y teclado

Recuperar archivo yconocer información

Identificador de usuarioy contraseñas

Objetivo

Riesgo mayor

2. Keyloggers

Equipos públicos

Cafés InternetHoteles

Salas de aeropuertosAlguien con accesofísico a PC propia

Digita número de usuario

Crear sitios Web falsos

3. Web Page SpoofingCapturar en “campos normales”datos personales / información de clientes

El cliente “cree” que estaen una Web site real

Se accede a Web sites falsos x ligasen concentradores de información

Digita contraseña

4. Spyware

SW que envía informaciónpersonal a terceros

Sin autorización

Informaciónenviada

Propósito

SW espía se carga

Sin conocimiento

Web sites visitadosNombres de usuarioContraseñas

Hacer mal uso de la información obtenidaEnviar publicidad

Al “bajar” de Internet programas ilegalesAl “bajar” de Internet programas gratuitosCarlos Ramírez Acosta

Septiembre 2005

Fraudes porInternet

Frases típicas

Figura 2. Problemas generados en Internet

Figura 4. Inicio Snort

Figura 3. Sistema Detector de Intrusos “Snort”

54 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 55

Page 57: Revista de Tecnología

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

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.

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.

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.

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.

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.

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

[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.forensics-intl.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.computer-forensics.com Computer Forensic Ltda.

Figura 5. Menú Snort

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

Figura 10. Snort en Modo IDS

Figura 11. Alerta enviada Snort en Modo IDS

Edward Andrés Corredor Rondón

Ingeniero de Sistemas Universidad El [email protected]

El Autor

Artículo de Reporte de Caso. Sometido a Arbitraje.

56 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 57

Page 58: Revista de Tecnología

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

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.

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.

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.

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.

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.

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

[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.forensics-intl.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.computer-forensics.com Computer Forensic Ltda.

Figura 5. Menú Snort

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

Figura 10. Snort en Modo IDS

Figura 11. Alerta enviada Snort en Modo IDS

Edward Andrés Corredor Rondón

Ingeniero de Sistemas Universidad El [email protected]

El Autor

Artículo de Reporte de Caso. Sometido a Arbitraje.

56 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 57

Page 59: Revista de Tecnología

¿Uso de firmas digitales en MEA de EVA R-GRID?

Daniel BurbanoGustavo Andrés Jiménez Lesmes

Resumen

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.

Palabras Clave: firmas digitales, MEA, EVA R-Grid.

Abstract

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.

Keywords: Digital signatures, MEA, EVA R-Grid.

EDUCACIÓN CONTINUADA. DIPLOMADOS, SEMINARIOS, CURSOS Y TALLERES

4 Semestres - 1797

Page 60: Revista de Tecnología

¿Uso de firmas digitales en MEA de EVA R-GRID?

Daniel BurbanoGustavo Andrés Jiménez Lesmes

Resumen

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.

Palabras Clave: firmas digitales, MEA, EVA R-Grid.

Abstract

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.

Keywords: Digital signatures, MEA, EVA R-Grid.

EDUCACIÓN CONTINUADA. DIPLOMADOS, SEMINARIOS, CURSOS Y TALLERES

4 Semestres - 1797

Page 61: Revista de Tecnología

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 pr incipales 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.

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 R-Grid.

• Servidores Cluster: sobre estos recaen las peticiones realizadas por los MEAs y son los encargados de repartir

• Módulos administrativos tanto de usuarios como de sistema:

• Módulos Enseñanza Aprendizaje (MEA):

• Servidores Cluster:

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 vitales para el cor recto 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.

• Nodos de trabajo Linux:

1. Sección Guión:

2. Sección Comandos:

Figura 2. Componentes gráficos de MEA

3. Sección de resultados: Aquí se muestran los resultados obtenidos después de ejecutar los comandos.

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.

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.

El MEA interactúa de manera global con el usuario de la siguiente manera:

• El usuario ingresa la dirección para acceder al MEA en su navegador y realiza la petición de acceso.

• Se verifican los permisos del usuario, este accede al módulo y empieza a usarlo, ingresando los comandos que se le indican.

• El MEA se comunica con los servidores cluster de EVA R-Grid solicitándoles la ejecución de una tarea.

• Estos responden y el módulo muestra la respuesta a el usuario final.

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 R-Grid, 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

3. Sección de resultados: asegurar la identidad de la información por medio de firmas no es la excepción.

¿Qué es una firma digital?

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?

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.

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.

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:

Emisor

• 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

¿Qué es una firma digital?

¿Cómo funciona una firma digital?

Proceso:

Simples:

Avanzada:

Clientes

Requerimientos Navegador Web

IE Firefiox

Servidor Web

Administrador de usuarios y del sistema

Administrador de usuarios y del sistema

Servidor módulos

MEA

No

do

sd

etra

ba

joL

inu

x

Servidores Cluster

Exterior Sistema

Figura 1.Arquitectura de EVA R-Grid

60 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 61

Page 62: Revista de Tecnología

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 pr incipales 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.

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 R-Grid.

• Servidores Cluster: sobre estos recaen las peticiones realizadas por los MEAs y son los encargados de repartir

• Módulos administrativos tanto de usuarios como de sistema:

• Módulos Enseñanza Aprendizaje (MEA):

• Servidores Cluster:

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 vitales para el cor recto 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.

• Nodos de trabajo Linux:

1. Sección Guión:

2. Sección Comandos:

Figura 2. Componentes gráficos de MEA

3. Sección de resultados: Aquí se muestran los resultados obtenidos después de ejecutar los comandos.

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.

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.

El MEA interactúa de manera global con el usuario de la siguiente manera:

• El usuario ingresa la dirección para acceder al MEA en su navegador y realiza la petición de acceso.

• Se verifican los permisos del usuario, este accede al módulo y empieza a usarlo, ingresando los comandos que se le indican.

• El MEA se comunica con los servidores cluster de EVA R-Grid solicitándoles la ejecución de una tarea.

• Estos responden y el módulo muestra la respuesta a el usuario final.

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 R-Grid, 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

3. Sección de resultados: asegurar la identidad de la información por medio de firmas no es la excepción.

¿Qué es una firma digital?

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?

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.

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.

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:

Emisor

• 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

¿Qué es una firma digital?

¿Cómo funciona una firma digital?

Proceso:

Simples:

Avanzada:

Clientes

Requerimientos Navegador Web

IE Firefiox

Servidor Web

Administrador de usuarios y del sistema

Administrador de usuarios y del sistema

Servidor módulos

MEA

No

do

sd

etra

ba

joL

inu

x

Servidores Cluster

Exterior Sistema

Figura 1.Arquitectura de EVA R-Grid

60 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 61

Page 63: Revista de Tecnología

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

Reconocida:

¿En que casos se usa?

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 : / /bu lma.net /b o d y.pht m l?nIdNot ic ia=868.

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.wikipedia.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/fir m a _ e l e c t r o n i c a . m s p x ? g c l i d = C O C I 5 9 -QjYwCFRtCUAodC0PL4A, propietario De la página Microsoft, consultado 5 mayo de 2007[5] Secur ing UNIX Ser ver with 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

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. [email protected]

Gustavo Andrés Jiménez Lesmes

Ingeniero de Sistemas de la Facultad de Ingeniería de Sistemas de la Universidad El Bosque, Bogotá, Colombia. [email protected]

Los Autores

Artículo de Reporte de Caso.

62 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 63

Page 64: Revista de Tecnología

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

Reconocida:

¿En que casos se usa?

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 : / /bu lma.net /b o d y.pht m l?nIdNot ic ia=868.

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.wikipedia.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/fir m a _ e l e c t r o n i c a . m s p x ? g c l i d = C O C I 5 9 -QjYwCFRtCUAodC0PL4A, propietario De la página Microsoft, consultado 5 mayo de 2007[5] Secur ing UNIX Ser ver with 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

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. [email protected]

Gustavo Andrés Jiménez Lesmes

Ingeniero de Sistemas de la Facultad de Ingeniería de Sistemas de la Universidad El Bosque, Bogotá, Colombia. [email protected]

Los Autores

Artículo de Reporte de Caso.

62 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 63

Page 65: Revista de Tecnología

Ubicación de Sitios de Entretenimiento a través de dispositivos Móviles en Colombia

Carlos Fernando Varela PérezEduardo Antonio Cárdenas

Jimmy Zamir Ortega Ortegón

Resumen

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.

Palabras Clave: Aplicaciones Móviles, Comunicaciones, Ingeniería de Software, Telefonía Móvil.

Abstract

This paper introduces a project that was focused in inves t igat ing different tools for the design, 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.

Keywords: Communications, Mobile Applications, Mobile telephony, Software engineering.

Page 66: Revista de Tecnología

Ubicación de Sitios de Entretenimiento a través de dispositivos Móviles en Colombia

Carlos Fernando Varela PérezEduardo Antonio Cárdenas

Jimmy Zamir Ortega Ortegón

Resumen

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.

Palabras Clave: Aplicaciones Móviles, Comunicaciones, Ingeniería de Software, Telefonía Móvil.

Abstract

This paper introduces a project that was focused in inves t igat ing different tools for the design, 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.

Keywords: Communications, Mobile Applications, Mobile telephony, Software engineering.

Page 67: Revista de Tecnología

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 retenimiento como bares, bar-rest aurante, res t aurantes y cent ros comercia les, 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.

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

Justificación y Teoría

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,

Justificación y Teoría

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 alternat ivas 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

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.

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

Problema

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 ramientas de programación y herramientas para su ejecución.

Metodología

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 permit 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:

Descripción del Producto

66 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 67

Page 68: Revista de Tecnología

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 retenimiento como bares, bar-rest aurante, res t aurantes y cent ros comercia les, 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.

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

Justificación y Teoría

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,

Justificación y Teoría

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 alternat ivas 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

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.

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

Problema

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 ramientas de programación y herramientas para su ejecución.

Metodología

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 permit 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:

Descripción del Producto

66 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 67

Page 69: Revista de Tecnología

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.

IV. PROYECCIONES

Las aplicaciones móviles crecen a un ritmo exponencial, pero dicho crecimiento va a la par de nuevas tecnología en

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 c o m e r c i a l e s q u e p e r m i t a n m a n i p u l a r l o s 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).

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. [email protected]

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 [email protected] 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í[email protected]

Los Autores

Artículo de Reporte de Caso.

Aseguramiento de Calidad en el Desarrollo del Software

Jorge Enrique Urrego Navarro

ResumenEl 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.

Palabras Clave: Aseguramiento de Calidad, bugs Ciclo de Vida del Software, defectos, detección, dinero, etapa de pruebas, fallas, proyectos informáticos, tiempo.

AbstractThe 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.

Keywords: Quality Assurance, bugs, Life Cycle of Software, defaults, detection, money, tests stage, faults, computer science projects, time.

68 Universidad El Bosque - Facultad de Ingeniería de Sistemas

Page 70: Revista de Tecnología

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.

IV. PROYECCIONES

Las aplicaciones móviles crecen a un ritmo exponencial, pero dicho crecimiento va a la par de nuevas tecnología en

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 c o m e r c i a l e s q u e p e r m i t a n m a n i p u l a r l o s 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).

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. [email protected]

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 [email protected] 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í[email protected]

Los Autores

Artículo de Reporte de Caso.

Aseguramiento de Calidad en el Desarrollo del Software

Jorge Enrique Urrego Navarro

ResumenEl 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.

Palabras Clave: Aseguramiento de Calidad, bugs Ciclo de Vida del Software, defectos, detección, dinero, etapa de pruebas, fallas, proyectos informáticos, tiempo.

AbstractThe 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.

Keywords: Quality Assurance, bugs, Life Cycle of Software, defaults, detection, money, tests stage, faults, computer science projects, time.

68 Universidad El Bosque - Facultad de Ingeniería de Sistemas

Page 71: Revista de Tecnología

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.

III. TIPOS DE PRUEBAS

Dentro del proceso de pruebas existen diversos tipos, entre ellos son:

• 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

• Pruebas de Requerimientos:

ac tual del negocio, Fact Finding que es el acompañamiento 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

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:

• 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

• Pruebas Unitarias:

• Pruebas de Integración:

• Pruebas de Caja Blanca:

• Pruebas Funcionales o de Caja Negra:

• Pruebas de Regresión:

• Pruebas de Sistema o No Funcionales:

• Pruebas de Producción:

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

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

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

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 [email protected]

El Autor

Artículo Tipo 9.

70 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 71

Page 72: Revista de Tecnología

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.

III. TIPOS DE PRUEBAS

Dentro del proceso de pruebas existen diversos tipos, entre ellos son:

• 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

• Pruebas de Requerimientos:

ac tual del negocio, Fact Finding que es el acompañamiento 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

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:

• 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

• Pruebas Unitarias:

• Pruebas de Integración:

• Pruebas de Caja Blanca:

• Pruebas Funcionales o de Caja Negra:

• Pruebas de Regresión:

• Pruebas de Sistema o No Funcionales:

• Pruebas de Producción:

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

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

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

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 [email protected]

El Autor

Artículo Tipo 9.

70 Universidad El Bosque - Facultad de Ingeniería de Sistemas Revista de Tecnología - Journal of Technology • Volumen 6, No. 2, Julio - Diciembre 2007 71

Page 73: Revista de Tecnología

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ÍAUniversidad El BosqueBogotá, D.C., Colombia

Page 74: Revista de Tecnología

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ÍAUniversidad El BosqueBogotá, D.C., Colombia

Page 75: Revista de Tecnología