Uso del Software Libre para el Desarrollo de Aplicaciones Everth H. Rocha Trejo 1 y Gabriel Gerónimo Castillo 1 1 Universidad Tecnológica de la Mixteca, Carretera a Acatlima Km. 2.5, Huajuapan de León, Oaxaca. México {everth, gcgero}@nuyoo.utm.mx Abstract El presente trabajo tiene como propósito mostrar el uso del software libre para el desarrollo de aplicaciones en el ámbito académico. Se muestran algunas aplicaciones desarrolladas en materias universitarias y se menciona el software libre utilizado para su implementación. 1. Introducción En el ámbito académico la generación de aplicaciones de código abierto y el uso de software libre para su desarrollo son adecuados para mejorar el aprendizaje en los alumnos. La generación de aplicaciones mediante el uso de software libre brinda al alumno y al profesor un mayor apoyo para realizar proyectos de software con el conocimiento de lenguajes estándar, utilizando computadoras de bajo costo y sin necesidad de instalaciones complicadas y complejas. En las siguientes secciones se muestran aplicaciones desarrolladas con software libre en el área de compiladores, sistemas operativos y redes de computadoras; algunos de estos programas son parte de proyectos terminales o en etapa terminal. 2. Desarrollo de Compiladores La construcción de un compilador es una tarea que implica cierta complejidad, ya que este tipo de aplicación requiere cuidado y precisión, existen diversos métodos, técnicas y herramientas que apoyan el desarrollo de las diferentes fases de un compilador. En la materia denominada Compiladores se han generado compiladores utilizando métodos y técnicas tradicionales, pero se han logrado mejores resultados al aplicar herramientas que colaboren en su construcción, particularmente se han utilizado herramientas para las primeras fases de desarrollo. Para la fase del análisis léxico se utiliza flex [1]. Flex es una herramienta para generar programas capaces de reconocer patrones de texto. Su facilidad de uso radica en que el usuario sólo necesita establecer las reglas de búsqueda sin necesidad de escribir un programa, ya que éste genera el programa en C que busca esos patrones. Para la fase del análisis sintáctico se utiliza bison [2], éste es un generador de analizadores sintácticos que usa gramáticas independientes del contexto y genera código C; en el código C añadido en el cuerpo de un programa bison se puede llevar a cabo la traducción dirigida por la sintaxis y la revisión de tipos que integra la fase del análisis semántico. La inclusión de estas herramientas en el proceso de desarrollo de un proyecto de software de este tipo, ha ayudado al alumno a emplear la teoría de expresiones regulares y a construir gramáticas de una manera más fácil favoreciendo con esto las fases del modelo de prototipo para el ciclo de vida que se lleva a cabo para la obtención del compilador. A continuación se muestra en la figura 1 la interfaz del compilador que permite traducir instrucciones que simulan acciones en una casa inteligente. La traducción obtenida genera un código de máquina virtual que es ejecutado por la máquina virtual construida para este fin, la figura 2 muestra la interfaz de la máquina virtual. es Linux. Se realizan prácticas para comprender la creación de procesos, concurrencia, administración de memoria, administración de archivos, y comunicación en red, para esto nos valemos de los lenguajes TCL/TK [3] y C. Una de las prácticas consiste en la creación de un explorador de archivos que permita administrar los archivos de forma fácil y amigable. Para el desarrollo del explorador (figura 3) se explotan las bibliotecas que permiten manipular el superbloque, los inodos, los archivos y los directorios. 4. Desarrollo de aplicaciones para redes de computadoras Figura 1. Editor de instrucciones para una casa inteligente. Uno de los objetivos en la materia de redes es dar a conocer al alumno los formatos de los paquetes que fluyen en una red IP, para esto se construyo un analizador de paquetes que presenta en forma clara y legible la información de los encabezados IP. Existen varios software que realizan esto, como tcpdump, snoop, ethereal, etc., pero la meta es mejorar y ampliar las características del software desarrollado a lo largo de los diferentes cursos que se imparten, tanto de Sistemas Operativos como los de Redes de computadoras. El analizador se está implementando con la ayuda de las siguientes herramientas: TCL/TK, BLT [4], la biblioteca libpcap y sockets en C. Lo que se tiene hasta el momento es el análisis de los paquetes IP (TCP, UDP, ICMP), ARP, RARP, y se incorporó un módulo para el análisis de paquetes IPv6, donde se analiza el encabezado IPv6, e ICMPv6. Figura 2. Máquina virtual del compilador casa inteligente. 3. Desarrollo de aplicaciones en Sistemas Operativos Si el alumno se encarga de practicar y programar algunos módulos o herramientas incorporadas en un Sistema Operativo, se observa que se hace más interesante para las dos partes involucradas, alumno – profesor, el desarrollo del curso. El Sistema Operativo que se explota para el desarrollo del curso en la UTM Figura 3. Explorador de Linux. En la figura 4 y 5 se muestran parte del analizador de paquetes desarrollado. Lo que se observa en los alumnos al programar y usar este software es un mayor entendimiento en la forma de encapsular y desencapsular los diferentes encabezados que se anexan a la información que se transmite por la red, y comprenden el uso de los diferentes campos en los encabezados. Debido a que no se cuenta con un router en cada laboratorio de redes, el aprendizaje y la aplicación de las listas de acceso se hacia muy teórico, por esta razón se empezó la construcción de un analizador sintáctico para las listas de acceso estándar y extendidas, el cual además de analizar la correcta escritura de las listas, brinda al usuario la facilidad de escritura de dichas listas por medio de su interfaz. Para llevar a cabo la construcción del analizador sintáctico se utilizó la herramienta flex para realizar la fase de análisis léxico y la herramienta bison para la fase de análisis sintáctico. Este módulo además de guiar al alumno en la escritura de las reglas de acceso, almacena en un archivo las definiciones establecidas, que posteriormente son revisadas, indicándole la ocurrencia de errores, y de esta manera evitar fallos antes del envío de las reglas al router. La interfaz para la creación de las listas de acceso se muestra en la figura 6 y 7, dicha interfaz fue diseñada utilizando BLT. Figura 5. Interfaz del módulo captura paquetes IPv6 (fase de presentación). Figura 6. Pantalla de creación de listas de acceso estándar. Figura 4. Analizador de paquetes IPv4. [4] M. Harrison, “ TCL/TK Tools”, 1a. Ed, O’Reilly, Agosto 1997, pp. 265-342. Figura 7. Pantalla de creación de listas de acceso extendidas. 5. Conclusiones El uso de software libre contribuye al desarrollo de aplicaciones sin la necesidad de adquirir software comercial que en muchas ocasiones no está al alcance de las instituciones universitarias, permite además obtener aplicaciones que tienen utilidad y que se pueden mejorar a través de los distintos cursos. De esta forma el objetivo que se persigue es construir más aplicaciones útiles para fomentar su uso. El software libre despierta en el alumno inquietud de conocer su implementación, y tomarlo como base para desarrollar aplicaciones no sólo para cubrir los créditos del curso, si no para realizar mejores desarrollos por su cuenta. 6. Referencias [1] V. Paxson, “Manual de GNU Flex. Un generador de analizadores léxicos rápidos. “, Universidad de California, Abril 1995. [Online] http://www.linux.org.ni/LuCAS/ LuCAS/Manuales-LuCAS/FLEX/flex-es-2.5.pdf [2] C. Donnelly, R. Stallman. ¨ Manual de GNU Bison. El Generador de Analizadores Sintácticos compatible con YACC.”, Free Software Foundation, Febrero 1999. [online] http://www.linux.org.ni/LuCAS/LuCAS/Manuales-LuCAS / BISON/bison-es-1.27.pdf [3] E. Foster, “ Graphical Applications with Tcl & Tk”, M&T Books, 2a. Ed , 1997.