Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
1 Portada INSTITUTO TECNOLÓGICO Y DE ESTUDIOS SUPERIORES DE MONTERREY CAMPUS MONTERREY PROGRAMA DE GRADUADOS EN MECATRÓNICA Y TECNOLOGÍAS DE INFORMACIÓN Desarrollo de una metodología para la generación de librerías de comunicación utilizando entornos de programación gráficos con aplicación en el sector educativo e industrial. TESIS PRESENTADA COMO REQUISITO PARCIAL PARA OBTENER EL GRADO ACADEMICO DE: MAESTRO EN CIENCIAS ESPECIALIDAD EN AUTOMATIZACIÓN POR: ABRAHAM ORTIZ MORÁN MONTERREY, N.L. DICIEMBRE 2008 2 INSTITUTO TECNOLÓGICO DE ESTUDIOS SUPERIORES DE MONTERREY DIVISIÓN DE MECATRÓNICA Y TECNOLOGÍAS DE INFORMACIÓN PROGRAMA DE GRADUADOS EN MECATRÓNICA Y TECNOLOGÍAS DE INFORMACIÓN Los miembros del comité de tesis recomendamos que la presente tesis del Ing. Abraham Ortiz Morán sea aceptada como requisito parcial para obtener el grado académico de: Maestro en Ciencias con especialidad en Automatización. Comité de tesis: ______________________________ M.C. Armando Céspedes Mota Asesor ______________________________ Dr. Francisco Palomera Palacios Sinodal ______________________________ M.C. Luis Carlos Félix Herrán Sinodal ______________________________ Dr. Joaquín Acevedo Mascarúa Director de Investigación y Posgrado de la Escuela de Ingeniería Diciembre 2008 3 Desarrollo de una metodología para la generación de librerías de comunicación utilizando entornos de programación gráficos con aplicación en el sector educativo e industrial. Por: Ing. Abraham Ortiz Morán TESIS Presentada al Programa de Graduados en Mecatrónica y Tecnologías de Información Este trabajo es requisito parcial para obtener el grado de Maestro en Ciencias con especialidad en Automatización. INSTITUTO TECNOLÓGICO Y DE ESTUDIOS SUPERIORES DE MONTERREY Diciembre 2008 4 Dedicatoria A mis padres, por ayudarme para hacer realidad cada uno de mis sueños. A mi abuelita, porque su cariño me acompañará por siempre. 5 Agradecimientos A mi asesor el M.C. Armando Céspedes por apoyarme durante todo el proceso de la tesis. A mis sinodales el Dr. Francisco Palomera y el M.C. Luis Carlos Félix por sus valiosas aportaciones. A la empresa Tecnodidácticos S. de R.L. de C.V. bajo su filial hitech INGENIUM por su apoyo con los productos fischertechnik. Les deseo mucho éxito. A todos mis compañeros de la maestría por los buenos momentos que vivimos estudiando y haciendo tareas. A todos los que directa o indirectamente son partícipes de este logro. 6 Índice general ÍNDICE GENERAL.............................................................................................................................................6 ÍNDICE DE FIGURAS ........................................................................................................................................9 ÍNDICE DE TABLAS ........................................................................................................................................11 CAPÍTULO 1 INTRODUCCIÓN .................................................................................................................12 1.1 MOTIVO DE LA INVESTIGACIÓN ..............................................................................................................12 1.2 SITUACIÓN PROBLEMÁTICA ....................................................................................................................13 1.3 PROBLEMA..............................................................................................................................................14 1.4 OBJETIVOS DE LA INVESTIGACIÓN ..........................................................................................................14 1.5 MARCO TEÓRICO.....................................................................................................................................14 1.6 MODELO PARTICULAR ............................................................................................................................15 1.6.1 Hipótesis .......................................................................................................................................15 1.6.2 Método de investigación...............................................................................................................16 1.6.2.1 Fases ................................................................................................................................................... 16 1.7 RECURSOS...............................................................................................................................................18 1.7.1 Humanos.......................................................................................................................................18 1.7.2 Hardware......................................................................................................................................18 1.7.3 Software........................................................................................................................................20 1.8 PLAN DE TRABAJO...................................................................................................................................21 1.9 DESCRIPCIÓN DE LA TESIS.......................................................................................................................23 1.10 CONTRIBUCIONES ...................................................................................................................................24 CAPÍTULO 2 TENDENCIAS EN EL DESARROLLO DE HERRAMIENTAS DE LENGUAJES DE PROGRAMACIÓN CON FINES DIDÁCTICOS E INDUSTRIALES ...........................26 2.1 HERRAMIENTAS DE PROGRAMACIÓN ......................................................................................................26 2.2 LIBRERÍAS DE PROGRAMACIÓN...............................................................................................................27 2.2.1 Orígenes .......................................................................................................................................27 2.2.2 Clasificación de las librerías........................................................................................................28 2.2.2.1 Librerías estáticas............................................................................................................................... 28 2.2.2.2 Librerías dinámicas ............................................................................................................................ 28 2.2.2.3 Librería de Vínculos Dinámicos DLL................................................................................................ 29 2.3 PORTABILIDAD........................................................................................................................................29 2.4 INTEROPERABILIDAD ..............................................................................................................................30 2.5 PLATAFORMAS........................................................................................................................................31 2.5.1 Plataformas de hardware .............................................................................................................31 2.5.2 Plataformas de software...............................................................................................................31 2.5.2.1 Plataforma Java .................................................................................................................................. 31 2.5.2.2 Plataforma .NET ................................................................................................................................32 7 2.6 APLICACIONES DE CÓDIGO ABIERTO .......................................................................................................32 2.6.1 Premisas del código abierto .........................................................................................................32 2.6.2 Características y ventajas ............................................................................................................33 2.7 EVOLUCIÓN DE LOS ENTORNOS DE PROGRAMACIÓN ...............................................................................34 2.7.1 Programación basada en el flujo de datos...................................................................................34 2.7.1.1 Características .................................................................................................................................... 34 2.7.2 Lenguajes de programación gráficos ...........................................................................................34 2.7.2.1 Ejemplos y características .................................................................................................................. 35 2.7.3 LabVIEW ......................................................................................................................................36 2.7.3.1 Características .................................................................................................................................... 36 CAPÍTULO 3 DESARROLLO DE LIBRERÍAS DE PROGRAMACIÓN UTILIZANDO ENTORNOS DE PROGRAMACIÓN GRÁFICOS……………….. .................................38 3.1 ELECCIÓN DE UN LENGUAJE GRÁFICO DE PROGRAMACIÓN .....................................................................39 3.2 DEFINICIÓN Y ORGANIZACIÓN DE LAS ENTRADAS Y SALIDAS DE UNA LIBRERÍA.....................................39 3.2.1 Núcleo de la librería.....................................................................................................................40 3.2.2 Tipos de datos...............................................................................................................................40 3.3 GUÍA PARA LA PROGRAMACIÓN GRÁFICA ...............................................................................................41 3.3.1 Acomodo gráfico de las entradas .................................................................................................41 3.4 CASO PRÁCTICO CON PRODUCTOS FISCHERTECHNIK...............................................................................42 3.4.1 Fischertechnik ..............................................................................................................................42 3.4.2 Descripción...................................................................................................................................43 3.4.3 Objetivos.......................................................................................................................................44 3.4.4 Alcances........................................................................................................................................44 3.4.4.1 Dentro del alcance.............................................................................................................................. 44 3.4.4.2 Fuera del alcance................................................................................................................................ 44 3.4.5 Generación del núcleo de la librería............................................................................................45 3.4.6 Edición de funciones.....................................................................................................................52 3.4.6.1 Introducción ....................................................................................................................................... 52 3.4.6.2 Desarrollo ........................................................................................................................................... 52 3.4.7 Creación de la documentación.....................................................................................................60 3.4.7.1 Estructura del documento................................................................................................................... 61 3.4.7.2 Compilación de la documentación ..................................................................................................... 64 3.4.8 Compilación de la librería ...........................................................................................................65 3.4.8.1 Propiedades del instalador.................................................................................................................. 68 3.4.9 Guía de instalación de la librería ................................................................................................72 CAPÍTULO 4 UTILIZACIÓN DE SISTEMAS INALÁMBRICOS COMO UNA ALTERNATIVA DE BAJO COSTO PARA EL MONITOREO Y EL CONTROL DE PROCESOS........77 4.1 DESCRIPCIÓN ..........................................................................................................................................77 4.2 CARACTERÍSTICAS GENERALES PARA LAS REDES DE SENSORES INALÁMBRICOS ZIGBEE .......................79 4.3 APLICACIONES DE ZIGBEE......................................................................................................................79 4.4 DISPOSITIVOS..........................................................................................................................................80 4.4.1 Coordinador ZigBee (ZC) ............................................................................................................80 4.4.2 Ruteador ZigBee (ZR)...................................................................................................................80 4.4.3 Dispositivo final (ZED) ................................................................................................................80 4.5 FUNCIONALIDAD.....................................................................................................................................81 4.5.1 Dispositivo de funcionalidad completa (FFD).............................................................................81 4.5.2 Dispositivo de funcionalidad reducida (RFD) .............................................................................81 4.6 TOPOLOGÍAS DE RED...............................................................................................................................81 4.7 MÉTODO DE GESTIÓN DE DATOS Y DISPOSITIVOS EN UNA RED ZIGBEE...................................................82 4.7.1 Utilizando balizas .........................................................................................................................82 4.7.2 Sin utilizar balizas ........................................................................................................................83 4.8 ZIGBEE Y SU COMPATIBILIDAD CON LABVIEW .....................................................................................83 4.9 DESARROLLO ..........................................................................................................................................84 4.9.1 Fase 1: Planeación.......................................................................................................................84 4.9.1.1 Objetivo y alcances ............................................................................................................................ 84 8 4.9.1.2 Hardware utilizado ............................................................................................................................. 85 4.9.2 Fase 2: Análisis ............................................................................................................................86 4.9.2.1 Comunicaciones .................................................................................................................................86 4.9.2.2 Código necesario ................................................................................................................................ 87 4.9.3 Fase 3: Diseño..............................................................................................................................88 4.9.4 Fase 4: Desarrollo .......................................................................................................................88 4.9.4.1 Sistema ZigBee .................................................................................................................................. 89 4.9.4.2 Librería LabVIEW ............................................................................................................................. 89 4.9.5 Fase 5: Puesta en marcha ............................................................................................................90 CAPÍTULO 5 SIMULACIÓN INDUSTRIAL .............................................................................................92 5.1 QUIENES NECESITAN SIMULACIONES INDUSTRIALES ..............................................................................92 5.2 BENEFICIOS DE LA SIMULACIÓN INDUSTRIAL..........................................................................................95 5.3 EMPRESAS CONSTRUCTORAS DE SIMULADORES......................................................................................95 5.4 TIPOS DE SIMULADORES INDUSTRIALES ..................................................................................................96 5.4.1 Simuladores físicos a escala.........................................................................................................96 5.4.2 Simuladores virtuales ...................................................................................................................97 5.4.3 Simuladores mixtos.......................................................................................................................98 5.5 SIMULACIÓN INDUSTRIAL INTEGRAL ......................................................................................................98 5.6 TECNOLOGÍAS INVOLUCRADAS...............................................................................................................99 5.7 METODOLOGÍA PARA LA ELABORACIÓN DE UN PROYECTO DE SIMULACIÓN INDUSTRIAL .....................100 5.7.1 Selección del tipo de simulador a realizar .................................................................................100 5.7.2 Selección de la herramienta .......................................................................................................101 5.7.3 Selección del proceso real a simular..........................................................................................101 5.7.4 Definición del proyecto ..............................................................................................................102 5.7.4.1 Objetivo de la simulación................................................................................................................. 102 5.7.4.2 Alcance de la simulación ................................................................................................................. 102 5.7.4.3 Planeación ........................................................................................................................................ 102 5.7.5 Construcción del modelo............................................................................................................103 5.7.5.1 Selección de los materiales .............................................................................................................. 103 5.7.5.2 Programación ................................................................................................................................... 104 5.7.6 Validación del modelo................................................................................................................104 5.7.7 Análisis de resultados y propuestas de mejora ..........................................................................104 5.8 MODELOS INDUSTRIALES COMO UNA ALTERNATIVA PARA EL ENTRENAMIENTO DE PERSONAL............105 CAPÍTULO 6 CONCLUSIONES Y TRABAJO FUTURO......................................................................106 6.1 CONCLUSIONES.....................................................................................................................................106 6.2 TRABAJO FUTURO .................................................................................................................................108 BIBLIOGRAFÍA ..............................................................................................................................................109 ANEXO A. INTERFAZ DE PRUEBA Y MONITOREO ....................................................................113 A.1 OBJETIVO..............................................................................................................................................113 A.2 DESARROLLO ........................................................................................................................................113 ANEXO B. CONTROL A DISTANCIA UTILIZANDO EL ROBOT MÓVIL FISCHERTECHNIK ROBO EXPLORER .......................................................................118 B.1 OBJETIVO..............................................................................................................................................118 B.2 DESARROLLO ........................................................................................................................................118 B.3 FUNCIONAMIENTO DEL ROBO EXPLORER ...........................................................................................120 9 Índice de figuras Figura 1-1 Ciclo de Vida del Proyecto. ............................................................................................................. 17 Figura 1-2 Diagrama de Gant para la librería de comunicaciones fischertechnik. ........................................... 23 Figura 1-3 Diagrama de Gant para la librería de comunicación inalámbrica ZigBee....................................... 23 Figura 1-4 Diagrama de Gant para la elaboración del reporte escrito............................................................... 23 Figura 3-1 Representación gráfica de algunos tipos de datos utilizados por LabVIEW................................... 40 Figura 3-2 Criterio de acomodo para las entradas y salidas en un lenguaje visual. .......................................... 41 Figura 3-3 Estructura de programación propuesta para los VIs. ....................................................................... 42 Figura 3-4 Importación de la librería dinámica umFish40.dll para generar los VIs correspondientes a las funciones........................................................................................................................................ 45 Figura 3-5 Crear o actualizar VI a partir de un archivo DLL............................................................................ 46 Figura 3-6 Selección del archivo que contiene la librería dinámica y el archivo con el encabezado de las funciones........................................................................................................................................ 46 Figura 3-7 Selección de los directorios a incluir en la librería y definiciones para el procesador. ................... 47 Figura 3-8 Alertas sobre la creación de los VIs de la librería. .......................................................................... 48 Figura 3-9 Selección de las funciones que serán convertidas en VIs................................................................ 48 Figura 3-10 Configuración de las propiedades de la librería creada en LabVIEW........................................... 49 Figura 3-11 Seleccióndel manejo de los errores............................................................................................... 50 Figura 3-12 Configuración del nombre y las propiedades de los VIs y controles generados. .......................... 50 Figura 3-13 Resumen del proceso de creación de la librería............................................................................. 51 Figura 3-14 Proceso de generación. .................................................................................................................. 51 Figura 3-15 Funciones de la librerίa umfish40.dll ............................................................................................ 52 Figura 3-16 Función rb Open Interface usb. ..................................................................................................... 53 Figura 3-17 Panel frontal de la función Open Interface USB. .......................................................................... 53 Figura 3-18 Edición del VI y sus propiedades. ................................................................................................. 54 Figura 3-19 Editor de íconos. ............................................................................................................................ 54 Figura 3-20 Ícono correctamente editado.......................................................................................................... 55 Figura 3-21 Ícono en diferentes versiones de color........................................................................................... 55 Figura 3-22 Comparación del panel frontal antes y después de ser editado. .................................................... 56 Figura 3-23 Opciones del VI. ............................................................................................................................ 56 Figura 3-24 Texto y formato de la descripción para el VI. ............................................................................... 57 Figura 3-25 Ayuda contextual terminada. ......................................................................................................... 57 Figura 3-26 Diagrama de bloques ante una situación sin errores a la entrada. ................................................. 58 Figura 3-27 Diagrama de bloques ante una situación de error a la entrada 1. .................................................. 59 Figura 3-28 Diagrama de bloques ante una situación de error a la entrada 2. .................................................. 59 Figura 3-29 Imagen final de los diagramas terminados. ................................................................................... 60 Figura 3-30 Formato de ejemplo tomado de la librería S7PLC. ....................................................................... 61 Figura 3-31 Estructura del archivo de ayuda en formato HTML. ..................................................................... 62 Figura 3-32 La imagen del archivo CHM proviene de la ayuda contextual. .................................................... 62 Figura 3-33 Marco superior modificado............................................................................................................ 63 10 Figura 3-34 Edición del arhivo Marco3. ........................................................................................................... 63 Figura 3-35 Ventana de trabajo Easy CHM v3.78 ............................................................................................ 64 Figura 3-36 Estructura de compilación lista para ser compilada. ..................................................................... 65 Figura 3-37 Visor de archivos compilados de Windows................................................................................... 65 Figura 3-38 Estructura general del proyecto. .................................................................................................... 66 Figura 3-39 Selección de las propiedades de los VIs contenidos en la librería. ............................................... 67 Figura 3-40 Propiedades definidas para los VIs incluidos en el instalador....................................................... 68 Figura 3-41 Información del producto. ............................................................................................................. 69 Figura 3-42 Selección de los archivos fuente y especificación de los directorios de destino. .......................... 70 Figura 3-43 Selección de instalaciones adicionales. ......................................................................................... 70 Figura 3-44 Definición de la información de bienvenida al instalador. ............................................................ 71 Figura 3-45 Compatibilidad de versiones para LabVIEW y sistema operativo. ............................................... 71 Figura 3-46 Pantalla de bienvenida al instalador de la Librería de Comunicaciones Fischertechnik para LabVIEW....................................................................................................................................... 72 Figura 3-47 Selección de los directorios de instalación. ................................................................................... 73 Figura 3-48 Contrato de licencia para el software de National Instruments. .................................................... 73 Figura 3-49 Inicio de la instalación de los componentes. ................................................................................. 74 Figura 3-50 Avance del proceso de instalación................................................................................................. 75 Figura 3-51 Instalación finalizada. .................................................................................................................... 75 Figura 3-52 Desde el panel Agregar o quitar programas de windows se puede ver la información general de la librería y el procedimiento de desinstalación. ............................................................................... 76 Figura 4-1 Topologías de red soportadas por la tecnología ZigBee.................................................................. 82 Figura 4-2 Protocolos de comunicación disponibles en LabVIEW. ................................................................. 83 Figura 4-3 Funciones disponibles para el protocolo Bluetooth......................................................................... 84 Figura 4-4 Componentes del kit de demostración PICDEM Z. ........................................................................ 86 Figura 4-5 Comunicaciones entre los dispositivos de una red ZigBee. ............................................................ 87 Figura 4-6 Funciones disponibles en LabVIEW para comunicación serial. ..................................................... 88 Figura 4-7 Programación de los microcontroladores ZigBee............................................................................ 89 Figura 4-8 Iconos de las funciones ZigBee. ...................................................................................................... 90 Figura 4-9 Programación de la función ZigBee Open....................................................................................... 90 Figura 4-10 Aplicación desarrollada para realizar las pruebas de la librería ZigBee. ...................................... 91 Figura 5-1 Ejemplo de simuladores industriales físicos de la marca Staudinger. ............................................. 97 Figura 5-2 Simulador virtual de un almacén automático. ................................................................................. 97 Figura 5-3 Comparación entre un simulador físico (izquierda) y un simulador virtual (derecha). ................... 98 Figura 5-4 Librería de comunicación para PLC Siemens S7-300. .................................................................. 100 11 Índice de tablas Tabla1-1 Recursos humanos empleados para la realización del proyecto. ......................................................18 Tabla 1-2 Recursos de hardware utilizados para el proyecto. ...........................................................................18 Tabla 1-3 Recursos de software utilizados para el proyecto. ............................................................................20 Tabla 1-4 Planeación de las actividades del proyecto. ......................................................................................21 Tabla 2-1 Ejemplos de lenguajes de programación visual. ...............................................................................35 Tabla 5-1 Aplicaciones de la simulación industrial detalladas por sectores. ....................................................93 Tabla 5-2 Comparativa para seleccionar el software más indicado para un simulador industrial. .................101 12 Capítulo 1 Introducción. 1.1 Motivo de la investigación Los retos para la automatización de procesos industriales y cotidianos, son una tarea que requiere conjugar una serie de factores técnicos y humanos cada día más especializados. Ante el escenario mencionado, la industria de la automatización ha visto emerger una amplia diversidad de productos para el control automático de procesos, que en conjunto, permiten a los ingenieros desarrollar soluciones más eficientes, ecológicas y económicamente factibles. La inversión de tiempo y dinero destinados al desarrollo de mecanismos de interconexión, ya sean de hardware o software es una tarea indispensable para empresas donde a diario conviven tecnologías actuales con tecnologías de cinco, diez o veinte años de antigüedad. La fórmula del éxito para desarrollar soluciones eficientes se basa en el trabajo y la comunicación de los productos utilizados en la integración de un proyecto. Para garantizar la buena comunicación de los equipos se crean continuamente protocolos de comunicación estándar, los cuales pueden ser utilizados para reprogramar equipos, recopilar información o crear redes de información con capacidades correctivas y preventivas. Una manera estructurada y funcional para desarrollar herramientas de software para la comunicación, programación o supervisión de procesos, es empleando el concepto de “librerías”. Las librerías son un conjunto de propiedades y métodos que además de ofrecer beneficios de protección y autoría, pueden ser fácilmente distribuidas al interior de los distintos departamentos de una empresa. Los lenguajes de programación también evolucionan dejando a un lado los lenguajes basados en texto para dar espacio a interfaces de programación gráficas; éstas abren nuevas oportunidades para lograr un lenguaje de programación que pueda ser utilizado por igual en 13 niños, jóvenes y adultos. Dichos lenguajes se basan en el flujo de información, por lo que resultan más intuitivos y fáciles de interpretar. Las herramientas y conceptos expuestos ofrecen una manera de estructurar y dar vida a nuevos proyectos, potencializando las áreas de planeación, diseño y evaluación de nuevas soluciones que demanda la industria, la vida cotidiana y el medio ambiente. 1.2 Situación problemática Hasta la década de los 90’s se creía que la programación y utilización de computadoras era algo reservado para los científicos e ingenieros; sin embargo, la tecnología se ha involucrado rápidamente en el quehacer del hombre, a tal grado que actualmente se utiliza para reproducir música, ver videos y mantener comunicación a través de mensajes vía teléfonos celulares, por mencionar algunos ejemplos (Godoy Rodríguez, 2008). La nueva dinámica demanda aplicaciones cada día más personalizadas, no sólo en su apariencia, sino en el funcionamiento y en las prioridades de ejecución de los procesos. El grado de adaptación ha llegado a un nivel que sólo el propio usuario puede interpretar sus deseos. Actualmente la personalización se alcanza con la utilización de parámetros, no obstante llegará el momento en que el usuario demande opciones para programar las funciones de cualquier aparato que adquiera. Predecir que en la siguiente década surjan equipos con interfaces de programación que permitan al usuario personalizar sus equipos conforme a sus necesidades, no es una idea ambiciosa, pues es una tecnología que cada día evoluciona con mucha fuerza y con fines de establecerse en cualquier mercado que amerite la programación. La propuesta sin lugar a dudas resulta controversial entre los mismos usuarios, pues se cree que la programación es una actividad abstracta y compleja. Es seguro que cuando el tiempo llegue no será de ninguna forma complicada, por el contrario será tan gráfica e intuitiva que los usuarios no se darán cuenta que se han convertido en programadores de última generación (Travis & Kring, 2007). Para llegar a ese futuro tan prometedor es necesario superar varios retos, el primero de ellos se encuentra parcialmente completo, puesto que la Internet es el medio de comunicación por excelencia y por consiguiente sus estándares y protocolos sin importar el fabricante. Dicho lo anterior el segundo y más importante reto se confiere al concepto mismo de programación. La necesidad de un concepto de programación que se mantenga íntegro para las personas, desde una etapa infantil hasta una etapa adulta resulta indispensable para un mundo en que las disciplinas se especializan, pero al mismo tiempo se entrelazan de manera horizontal desde los departamentos directivos hasta los de producción. 14 La enseñanza de una estructura de programación tiene impactos positivos en otras áreas del ser humano, puesto que genera una cultura de planeación y prevención al tener un pensamiento estructurado. Una buena planeación de los proyectos, en el mediano y largo plazo asegura un crecimiento estructurado y viable (López García, 2007). Lograr un entorno de vida y producción intercomunicado, basado en la planeación, puede iniciar con la implementación de un concepto de programación sencillo y poderoso. 1.3 Problema Existe carencia de herramientas de programación gráficas que permitan a toda clase de personas adentrarse en el mundo de la programación de controladores, ya sean didácticos o industriales. Dicha limitante es uno de los principales retos de países en vías de desarrollo. Una alternativa al problema propuesto es la generación de herramientas de programación gráficas diseñadas para niños, jóvenes y adultos que les permitan comprender, modificar y programar de manera efectiva, utilizando un concepto de programación estandarizado. Para la implementación del concepto se requiere de un proyecto a mediano y largo plazo, que incorpore el uso de nuevas tecnologías y una cultura basada en la planeación. 1.4 Objetivos de la investigación • Desarrollar una herramienta de programación gráfica que permita a principiantes o expertos de los entornos de programación gráficos comprender, modificar y programar de una manera efectiva utilizando un concepto de programación estandarizado. • Promover el uso de las buenas prácticas de programación de sistemas con alto grado de portabilidad, que les permita compartir sus desarrollos sin comprometer sus derechos intelectuales. • Generar una cultura de planeación utilizando recursos tecnológicos para garantizar la viabilidad de un proyecto en el mediano y largo plazo. • Promover el uso de nuevas tecnologías a favor de la simplicidad y el ahorro en la implementación de los sistemas educativos e industriales. 1.5 Marco teórico La computación ha basado su desarrollo en la creación de código que permite escribir un nuevo código, éste aspecto cíclico de las ciencias computacionales representa un 15 crecimiento exponencial (Moore, 1965), puesto que cuanto más herramientas de desarrollo hay disponibles, mayor es la cantidad de código producido. Para dar un crecimiento ordenado al desarrollo,se ha recurrido a la utilización de librerías, en las cuales se agrupan funciones que son la materia prima para desarrolladores de aplicación de mayor nivel. Gracias a las librerías, las aplicaciones cotidianas gozan de portabilidad e interoperabilidad. La portabilidad permite intercambiar archivos de un procesador de palabras en cualquier computadora y el documento siempre tendrá las mismas características sin importar la marca del fabricante del equipo, el tipo de monitor o el idioma de la aplicación. La interoperabilidad se refiere a la capacidad con la cual diferentes aplicaciones se comunican entre sí utilizando determinados tipos de archivos o protocolos, previamente estandarizados y agrupados en una librería. Uno de los tipos de librería más utilizado en la actualidad es denominado DLL que significa Librería de Vínculos Dinámicos. La producción de software está basada en texto, es decir, todos los códigos escritos en lenguaje ensamblador, C++, .NET, JAVA o BASIC tienen en común un diseño secuencial basado en instrucciones de texto. Con seguridad, los lenguajes mencionados aún tienen asegurado un espacio preponderante en la industria de la creación de software; sin embargo, las tendencias de la programación apuntan a una manera más intuitiva y natural de programar: la programación gráfica. Los beneficios conceptuales y técnicos de la programación gráfica rompen el paradigma que la programación es difícil. Con elementos gráficos basados en el flujo de datos, las etapas de diseño y creación de software ahora se encuentran más ligadas y en algunos casos resultarán transparentes. Éstos y otros argumentos descritos en el presente trabajo invitan a reflexionar sobre la carga conceptual que la programación gráfica ya está aportando a la sociedad (Travis & Kring, 2007). 1.6 Modelo particular 1.6.1 Hipótesis Partiendo del problema descrito en la sección 1.3 se propone la utilización de un “concepto de programación unificado” en todas las etapas de enseñanza de un individuo. Dado que no todos los individuos tienen el perfil o el interés por la programación, se descarta desde un inicio que el concepto planteado se pueda implementar utilizando un lenguaje abstracto basado en texto. Con la implementación de un concepto de programación gráfico, la penetración en los usuarios será mayor; por consiguiente, el mismo usuario demandará aplicaciones y dispositivos con interfaces gráficas ya sea para su utilización o programación. 16 La mejor etapa para iniciar con el concepto expuesto se encuentra durante la infancia, cuando los niños tienen el deseo de conocer todo y no tienen ninguna clase de prejuicios sobre la programación. Con la introducción de robots didácticos, controlados por medio de programación gráfica en escuelas de educación elemental se puede dotar a los niños de conceptos básicos de programación que les servirán durante toda su vida sin importar el área de estudio que elija. 1.6.2 Método de investigación El método para el desarrollo del ciclo de vida es uno de los primeros métodos enfocados al desarrollo de proyectos, desde su planeación hasta el mantenimiento. Es un modelo de tipo lineal el cual plasma una secuencia de etapas que deben ser cumplidas antes de entrar a etapas posteriores (Pressman, 2004). La elección del método de investigación para el presente trabajo se basó en dos premisas fundamentales, la primera consiste en proponer un concepto de programación unificado, tal como se describe en la sección 1.3; lo cual implica analizar las tendencias de la programación durante los próximos 15 años. La segunda premisa reside en proponer un caso práctico, en el cual se demuestre que un mismo concepto de programación puede resolver los retos informáticos de un niño, un joven o un adulto. 1.6.2.1 Fases La metodología comprende siete fases predominantes, pero cada etapa puede integrar un método de desarrollo específico según convenga: • Fase 1: Planeación. En base a la información inicial, se define el problema a resolver, los posibles orígenes del mismo y se determina un plan de acción para resolverlo. • Fase 2: Análisis. Cada acción planteada para resolver el problema debe ser cuidadosamente estudiada; el análisis debe mostrar si el proyecto es viable en tiempo y forma con los recursos materiales y humanos a los que se tiene acceso. • Fase 3: Diseño. Los resultados del análisis se utilizan para diseñar el plan de acción, en donde se especifica la estructura y secuencia de las acciones. • Fase 4: Desarrollo. Cuando se tiene un diseño sólido se puede iniciar la etapa de desarrollo del producto o solución al problema planteado en la fase 1. Se crean las aplicaciones computacionales, los medios de comunicación o la selección del equipo requerido. • Fase 5: Puesta en marcha. El sistema es probado consecutivamente tratando de identificar posibles fallas. Cuando el sistema se encuentra libre de fallas se procede a implementarlo. 17 • Fase 6: Implementación. El sistema es instalado en su posición permanente, se deben realizar las adecuaciones físicas necesarias para asegurar que el sistema funcione un largo periodo de tiempo con la mínima intervención de mantenimiento o reparación. • Fase 7: Mantenimiento. Para mantener el funcionamiento de un sistema es necesario brindarle mantenimiento, es decir, supervisar y reparar todo aquello que puede comprometer la integridad del sistema en momentos críticos. Como se observa claramente, la metodología propuesta plantea una estructura secuencial sencilla pero al mismo tiempo adaptable a la necesidades de cada fase. Visto desde el punto de vista del manejo del proyecto, la estructura expone desde un inicio el calendario de actividades, puesto que cada etapa puede ser marcada con sus fechas de inicio y fin, así como los encargados de las mismas. La metodología al igual que los conceptos propuestos en el presente trabajo, aportan un marco unificado para su reutilización y mejoramiento, tal como lo plantea el manejo del ciclo de vida del proyecto. Figura 1-1 Ciclo de Vida del Proyecto. Fase 1: Planeación Fase 2: Análisis Fase 3: Diseño Fase 4: Desarrollo Fase 5: Pruebas Fase 6: Implementación Fase 7: Mantenimiento 18 1.7 Recursos Para garantizar el logro de los objetivos propuestos se enlistan los recursos necesarios para el correcto desarrollo de todo el proyecto. 1.7.1 Humanos Tabla 1-1 Recursos humanos empleados para la realización del proyecto. Nombre Descripción Soporte técnico para la utilización de la librería dinámica umfish40.dll El creador de la librería es el ingeniero de origen alemán Ulrich Müller, por medio del correo electrónico se realizan las preguntas pertinentes. Capacitación de los equipos fischertechnik. La empresa Tecnodidácticos S. de R.L. de C.V. bajo su filial hitech INGENIUM nos dotó de toda la capacitación para utilizar sus productos, además de patrocinar los productos de su marca utilizados para el proyecto. Asesoría de parte de National Instruments para compilar librerías. Atención personal por teleconferencias para logar compilar la librería en un archivo instalador. 1.7.2 Hardware Tabla 1-2 Recursos de hardware utilizados para el proyecto. Nombre Descripción Fischertechnik ROBO Interface Micro-controlador de 16-bits USB e Interfaz serial. Memoria temporal (memoria flash) de 128 Kbytes para descargar 2 diferentes programas a la Interfase. 4 salidas para motor de 9v/250 mA (máx. 1 Amper) con control de velocidad variable. 8 entradas digitales. 2 entradas análogas para resistencias desde 0 a 5 kΩ. 2 entradas análogas para voltajes de 0v a 10v. 2 entradas digitales para sensores de distancia. Conexión para el módulo de expansión ROBO I/O Extensión. 19 Entrada para interfase de vínculo de datos de Radio Frecuencia ROBO RF. Transmisor infrarrojo. Programable con el software ROBO Pro Graphics o con compilador-C.Medidas: 23.0 x 15.0 x 6.5 cm Peso: 0.500 Kgs Fischertechnik ROBO RF Data Link Interfase de Radio Frecuencia para la ROBO Interface. Se conecta a la PC por medio de Interfase USB (Transmisor). La conexión de la Interfase RF es una tarjeta adicional que se conecta a la ROBO Interface. No necesita fuente de poder adicional. Rango aproximado de 10 metros. Frecuencia 2.4 GHz. Se pueden configurar 8 frecuencias para la operación simultánea de 8 dispositivos. Medidas: 23.0 x 15.0 x 6.5 cm Peso: 0.250 Kg Fischertechnik ROBO Explorer Robot didáctico móvil que contiene los siguientes elementos: 2 Motores de potencia. 1 Fototransistor. 1 Resistencia NTC. 1 Sensor de distancia ultrasónico. 1 Sensor de colores. 1 Sensor seguidor de línea. 1 Chicharra. 3 Lámparas indicadoras. Edades: +10 años. Medidas: 46.5 x 32.0 x 8.0 cm Peso: 1.3 Kg. Equipo de cómputo (2 computadoras) Procesador Intel Pentium Dual-Core T2390 Windows Vista Home Basic Memoria DDR2 de 1024MB Unidad de disco de 160GB a 5400rpm 20 1.7.3 Software Tabla 1-3 Recursos de software utilizados para el proyecto. Nombre Descripción Fischertechnik ROBO Pro Software. Aplicación de programación gráfica para Windows 98/ME/NT/2000, XP para activar la ROBO Interface y la ROBO I/O Extensión. Fácil de usar para los principiantes, gracias a las utilerías gráficas de flujo de programación, que consiste de varios módulos de software (arrastrar-pegar). Los datos pueden intercambiarse entre los módulos de software y subrutinas usando no sólo variables, sino también conexiones gráficas. El funcionamiento de los programas es sencillo de entender. Contiene subrutinas prefabricadas que se almacenan en un directorio, y pueden usarse sin necesidad de entender el funcionamiento interno de las mismas. El lenguaje de programación gráfico ROBO Pro Software, proporciona todos los elementos básicos de un lenguaje de programación moderno, tales como arreglos, funciones, iteraciones, objetos y eventos asíncronos, haciéndolo una herramienta útil inclusive para los programadores profesionales. Los programas se traducen directamente al lenguaje máquina para una ejecución eficiente. Controlador para la Fischertechnik ROBO Interface. Fragmento de software capaz de proveer una capa de abstracción entre el sistema y la Fischertechnik ROBO Interface. Controlador para el Fischertechnik ROBO RF Data Link. Fragmento de software capaz de proveer una capa de abstracción entre el sistema y el Fischertechnik ROBO RF Data Link. LabVIEW 8.5 Herramienta de programación gráfica desarrollada por National Instruments. Se utiliza para pruebas, control y diseño. El lenguaje es denominado “G” debido a que es gráfico. Umfish40.dll Librería de Vínculos Dinámicos desarrollada por (Müller, 2006) para interactuar con los productos fischertechnik. Visual CHM Compilador de archivos *.html para ser convertidos en archivos de ayuda de windows *.chm. 21 Sitio: http://www.zipghost.com/easychm.html Microsoft FrontPage Editor de páginas Web de Microsoft. 1.8 Plan de trabajo La planeación del proyecto se realizó a un horizonte de 1 año, las actividades y tiempos específicos se definen en la siguiente calendarización. Tabla 1-4 Planeación de las actividades del proyecto. Tarea Duración Inicio Fin Definición del tema del proyecto. 10 días 7/1/2008 10/1/2008 Definición de los objetivos y entregas del proyecto. 5 días 10/1/2008 17/1/2008 Planeación 3 días 28/1/2008 30/1/2008 Recursos 3 días 28/1/2008 30/1/2008 Entrega de propuesta para desarrollar las funciones de comunicación. 5 días 2/2/2008 7/2/2008 Definición de formatos y estilos. 5 días 4/2/2008 8/2/2008 Definición de las entradas y salidas de las funciones. 10 días 9/2/2008 21/2/2008 Desarrollo de la documentación y ayuda de las funciones. 30 días 22/2/2008 3/4/2008 Compilación de la ayuda en formato CHM. 5 días 4/4/2008 10/4/2008 Desarrollo de las funciones en VIs. 45 días 25/2/2008 25/4/2008 Desarrollo de ejemplos. 45 días 25/2/2008 25/4/2008 Protección del diagrama de bloques de los VIs. 5 días 28/4/2008 2/5/2008 Generación de los archivos de distribución. 3 días 5/5/2008 7/5/2008 22 Investigación sobre las propiedades de compilación de librerías. 10 días 28/4/2008 9/5/2008 Compilación de la librería. 3 días 12/5/2008 14/5/2008 Sensores inalámbricos. 60 días 26/5/2008 15/8/2008 Investigación documental. 15 días 26/5/2008 13/6/2008 Pruebas generales para validar el sistema. 10 días 16/6/2008 27/6/2008 Códigos para la lectura de datos desde LabVIEW. 10 días 30/6/2008 11/7/2008 Validación de la estructura de comunicación. 7 días 14/7/2008 22/7/2008 Pruebas transmisión. 7 días 28/7/2008 5/8/2008 Cálculo de Interferencia. 7 días 7/8/2008 15/8/2008 Planeación del reporte escrito. 3 días 18/8/2008 20/8/2008 Estructuración de tesis. 5 días 21/8/2008 27/8/2008 Búsqueda de fuentes bibliográficas. 60 días 11/8/2008 31/10/2008 Capítulo 1 10 días 25/8/2008 5/9/2008 Capítulo 2 10 días 8/9/2008 19/9/2008 Capítulo 3 10 días 22/9/2008 3/10/2008 Capítulo 4 10 días 6/10/2008 17/10/2008 Capítulo 5 10 días 20/10/2008 31/10/2008 Conclusiones 5 días 3/11/2008 7/11/2008 23 Figura 1-2 Diagrama de Gant para la librería de comunicaciones fischertechnik. Figura 1-3 Diagrama de Gant para la librería de comunicación inalámbrica ZigBee. Figura 1-4 Diagrama de Gant para la elaboración del reporte escrito. 1.9 Descripción de la tesis En el Capítulo 2 se provee el conocimiento necesario en el cual se sustenta la tesis. Se realiza un recorrido por la historia y eventos que han producido los avances en las herramientas de programación actuales. La industria del software toma día con día un papel fundamental en la vida cotidiana; la necesidad por desarrollar aplicaciones portables y 24 capaces de comunicarse entre sí es una demanda constante para cualquier desarrollador. En el capítulo también se aborda el concepto de aplicaciones de código abierto, para enfatizar que se pueden compartir desarrollos innovadores, conservando la autoría intelectual de los algoritmos. Por último, se expone la rápida evolución de los entornos de programación, que han dado un enorme salto desde la programación basada en texto hacia los novedosos entornos de programación gráficos. El Capítulo 3 esta enfocado al desarrollo de librerías de programación utilizando entornos de programación gráficos. Con fines demostrativos se realiza la selección de un lenguaje de programación gráfico comercial, tomando en cuenta la facilidad de manipulación, el soporte técnico de cada uno de ellos y de manera primordial su utilización en aplicaciones científicas e industriales. Para complementar la selección del programa, se muestra una guía con reglas prácticas para realizar una programación gráfica estructurada y eficiente, capaz de transmitir información de una manera óptima. Por último se expone un caso práctico, en el cual se diseñó y programó la librería de comunicaciones para los robots móviles de la marca alemana fischertechnik. La librería sienta un lazo sólido entre uno de los entornos de programación gráfica más poderosos y el sistema de construcción modular con más renombre en el área de la simulación industrial. El contenido del Capítulo 4 trata sobre una herramienta para el monitoreo y el control de procesos que poco a poco está reemplazando la utilización del cableado estructural. Se trata de los sensores y actuadores inalámbricos, para los cuales se crea una librería de comunicaciones basada en los fundamentos descritos en el capítulo 3. La implementación confirma que los formatos y consideraciones descritas aplican a una amplia gama de dispositivos, propósitos y marcas. Para finalizar el capítulo se exponen razones de peso para que alumnos y desarrolladores adopten las guías de programación descritaspara dar trascendencia a sus desarrollos y permitir que otros los utilicen para acelerar el proceso de creación de nuevas aplicaciones. En el Capítulo 5 se describe el concepto de la simulación industrial. Los beneficios de probar un proyecto antes de construirlo se traducen en ahorro y productividad, esa es la principal razón por la cual empresas y diseñadores recurren a sistemas de simulación industrial ya sea virtuales o construidos a escala. En el contenido del capítulo se muestran las etapas necesarias para llevar a buen fin un proyecto de simulación industrial que brinde a los usuarios información útil para validar o ajustar el proyecto. En el Capítulo 6 se presentan los resultados obtenidos y se ofrece una serie de sugerencias para realizar implementaciones y desarrollos futuros. 1.10 Contribuciones • Se presentan las razones por las cuales, la introducción de un concepto de programación unificado debe ser incluido desde una etapa temprana en la educación 25 y permanecer constante en su esencia durante las diferentes etapas educativas y profesionales. • Se describe la manera específica para conceptualizar una librería tanto de comunicación como de programación, para intercomunicar dispositivos con el entorno de programación gráfico LabVIEW. La propuesta también incluye sugerencias de formato y reglas para dotar al programador gráfico de medios que le permitan maximizar la trascendencia de su desarrollo. • La librería de comunicaciones fischertechnik es una herramienta de programación gráfica para los aficionados que gustan de utilizar al máximo y con la mejor tecnología los sistemas de construcción modular. Además, los alcances y versatilidad permitirán que niños a partir de 10 años puedan utilizar robots fischertechnik partiendo de una programación gráfica desarrollada en LabVIEW. • Ejemplos prácticos para la construcción de librerías. • Integración de una librería para el desarrollo de un proyecto de simulación industrial. • La utilización de la librería aplicada en la simulación industrial tiene un especial sentido en instituciones técnicas y universitarias de países en vías de desarrollo; puesto que pone al alcance de los estudiantes y de las instituciones, herramientas de alto valor didáctico a precios muy inferiores a los de una implementación real. 26 Capítulo 2 Tendencias en el desarrollo de herramientas de lenguajes de programación con fines didácticos e industriales. En el presente capítulo se presenta la forma en que las herramientas de programación se han desarrollado; dicho desarrollo ha requerido del nacimiento y evolución de conceptos demandados por la ciencia, la actividad industrial y de manera indiscutible por la actividad comercial. La necesidad de establecer estándares, garantizar la portabilidad de las aplicaciones, la interoperabilidad de los sistemas así como materializar soluciones para los nuevos retos se deben atender. Nuevos entornos de programación permitirán que niños, jóvenes y adultos puedan utilizar una misma estrategia de programación para solucionar retos acordes a su entorno. 2.1 Herramientas de programación Las herramientas de programación permiten realizar aplicaciones, programas, subprogramas o sistemas operativos que computadoras o procesadores utilizan para realizar sus funciones. Las herramientas de programación más conocidas son los compiladores, las herramientas de desarrollo para videojuegos, las plataformas Java o .NET y los entornos de desarrollo integrados. Un cuarto de siglo atrás las herramientas de programación eran máquinas perforadoras, dichas máquinas eran usadas por el programador para realizar una serie de perforaciones en una tarjeta de cartón que posteriormente indicarían a la computadora los cálculos que debía realizar. Está por demás mencionar la titánica labor de depuración y corrección de errores. Los “debuggers” son aplicaciones enfocadas a depurar el código, el avance en la materia es tal que un “debugger” tiene capacidades predictivas y hasta correctivas en tiempo de ejecución (Daley, 2006). 27 Evolución es la palabra que define la historia de la programación, tanto en la parte de software como de hardware. 2.2 Librerías de programación Para las ciencias computacionales la agrupación de subprogramas para desarrollar aplicaciones de mayor nivel o complejidad es denominada librería, biblioteca ó por el término anglosajón “toolkit”. Las librerías deben contener además, archivos de ayuda, datos, compatibilidad y portabilidad que pasarán a estar contenidos en los programas que utilicen la librería. La información heredada permite que los programas realizados puedan ser ejecutados en otras plataformas de programación sin la necesidad de realizar ajustes mayores. Una de las características primordiales de las librerías es que por si mismas no son ejecutables, una librería no debe ser confundida con un programa compilado, aún cuando la mayoría de los programas están basados en librerías para realizar sus operaciones de cálculo o comunicación. La comunicación entre librerías y programas ejecutables se realiza por medio de enlaces o links en un proceso conocido como enlace (Schalkoff, 2007). Las librerías son la materia prima del creciente desarrollo de la industria del software. Por tal motivo deben ser homologadas para garantizar a los desarrolladores y usuarios que las aplicaciones funcionarán de la misma manera en todos los equipos. 2.2.1 Orígenes El desarrollo del concepto de una librería de programación nació como una necesidad para atacar los retos de programación que cada día son más complejos. COBOL en el año de 1959 fue el primer entorno de programación que integró un sistema de bibliotecas y aún cuando su estructura estaba limitada, marcó el inicio de una nueva etapa, en la cual los problemas podían ser atacados por un camino distinto al de dividirlos en “pequeños problemas” (Sammet, 1969). La posibilidad de desarrollar subprogramas llegó junto con FORTRAN, así como la posibilidad de compilar archivos por separado, en lugar de hacer una sola compilación por aplicación. El concepto actual de librería estaba casi completo, sólo hacía falta integrar un enlazador que permitiera un flujo de información constante entre las aplicaciones y los diferentes tipos de subprogramas. En el año de 1967 Kristen Nygaard y Ole-Johan Dahl del Norwegian Computer Center de Oslo, dieron el impulso final para consolidar la programación orientada a objetos propuesta por Simula 67, el desarrollo definió los conceptos de clase, objeto y herencia, lo que a nivel conceptual define la manera en que las empresas, los catedráticos y los estudiantes realizan sus aplicaciones computacionales en la actualidad (Daley, 2006). Con el paso de los años se han creado diferentes tipos de librerías, dependiendo del tipo de enlace que realizan y su 28 desempeño, en la sección 2.2.2 se presenta una descripción de los dos tipos de librería predominantes. 2.2.2 Clasificación de las librerías 2.2.2.1 Librerías estáticas Las librerías estáticas se componen de rutinas, dichas rutinas son copiadas a la aplicación deseada por medio del compilador o enlazados, creando archivos con código objeto y un fichero ejecutable independiente. El resultado de la compilación es un archivo estático de la aplicación construida, en donde el código y las bibliotecas son asignados a direcciones estáticas finales; las direcciones reales, referencias para saltos y las llamadas a rutinas se almacenan en direcciones relativas o simbólicas. Las llamadas realizadas a las librerías generan direcciones no resueltas, así que el enlazador resuelve todas las direcciones y las convierte en direcciones fijas o re-localizables. Las direcciones son luego utilizadas para cargar el código y las librerías en la memoria principal durante el tiempo de ejecución. Por la complejidad del proceso el enlazado de direcciones puede necesitar de más tiempoque el mismo proceso de compilación. El enlazador sólo puede trabajar con tipos compatibles de librerías, las librerías a su vez cuentan con ficheros objeto. Los ficheros utilizados se recopilan en una biblioteca que puede distribuirse y utilizarse con facilidad. Las aplicaciones o bibliotecas de subrutinas acceden a las bibliotecas de objetos por medio de su identificador o nombre. 2.2.2.2 Librerías dinámicas Las librerías dinámicas tienen todas las características de las librerías estáticas, pero tienen la ventaja que las subrutinas del programa principal son cargadas en tiempo de ejecución, en lugar de realizar los enlaces durante la compilación. La etapa de enlazado representa una mínima cantidad de tiempo, en lugar de copiar toda un lista de direcciones de las librerías sólo se registran las librerías necesarias para el programa y el índice de nombres de las rutinas contenidas en la librería. La labor de enlazado no sólo se limita al proceso de compilación, las librerías dinámicas hacen uso extensivo del enlazador al momento de cargar la aplicación o durante la ejecución. Dependiendo del sistema operativo utilizado, el enlace dinámico de la aplicación se puede realizar antes de que el proceso sea iniciado; se denomina como enlace en tiempo de carga. Sistemas operativos más poderosos tienen la capacidad de enlazar bibliotecas aún cuando la aplicación ya está en funcionamiento, el enlace a las librerías se realiza sólo cuando el programa hace una referencia específica a ella, dicho proceso es conocido como carga en tiempo de ejecución. La arquitectura de los enlaces dinámicos es tan poderosa que las únicas limitaciones que pueden tener son las de permisos de usuarios o licencias. 29 2.2.2.3 Librería de vínculos dinámicos DLL Las librerías de vínculos dinámicos (Dynamic Linking Library) fueron desarrolladas por Microsoft para ser el componente de los programas para el sistema operativo Windows. Los archivos DLL de Windows pueden ser utilizados por varios programas al mismo tiempo, por ejemplo el cuadro de diálogo Abrir del procesador de palabras de la computadora manda llamar la misma DLL que el diálogo Abrir de la hoja de cálculo; una misma librería utilizada por varias aplicaciones. La estructura modular de programación permite que los creadores de software no tengan que incluir librerías repetitivas, ahorrando espacio en el disco de distribución y en la máquina donde residirá la aplicación. En las librerías dinámicas los archivos DLL son cargados en la memoria RAM sólo cuando se manda a llamar la librería, de ésta manera se logra una mejor utilización de los recursos del equipo. La creación y utilización de un archivo DLL conlleva a respetar criterios de envío y recepción de información para no comprometer su funcionamiento, puesto que la generación de un error de librería puede generar un error en efecto dominó, comprometiendo la estabilidad de todo el sistema operativo. Las librerías de vínculos dinámicos suelen tener las siguientes extensiones de archivo: *.dll, *.ocx, *.exe, *.drv, *.vxd, etc. En el Capítulo 3 se expone la utilización de una librería de vínculos dinámicos para desarrollar una nueva librería en el entorno de programación gráfico LabVIEW. 2.3 Portabilidad Para determinar la portabilidad de una aplicación es necesario evaluar el grado de independencia que puede tener para trabajar en plataformas diferentes a la que fue creada. La industria del software necesita implantar una cultura de portabilidad en los desarrollos, y más aún incluir el concepto en el ciclo de vida de la aplicación. El reto sólo podrá alcanzarse estableciendo métodos eficientes para medir la portabilidad y mostrando al sector del software que éste tipo de prácticas a largo plazo representará un beneficio para el desarrollo de sus mercados. Según (Mooney, 2000), la reutilización de código también se encuentra ligado con la portabilidad, si las aplicaciones comienzan a ser más portables es porque el código en general se estandariza y la estandarización abre el camino perfecto para la reutilización. El ahorro en tiempo y dinero impactaría directamente en la productividad de empresas y países. Al igual que un rascacielos, una aplicación con buenos cimientos es una aplicación que puede llegar muy lejos, los cimientos de una aplicación se encuentran en la etapa de diseño, sin duda alguna la etapa crucial dentro del ciclo de vida del código diseñado. Seguir el concepto de programación orientada a objetos brinda buenos resultados; siempre y cuando el proceso de diseño considere a todas las partes involucradas en el diseño de la 30 aplicación, las necesidades de los clientes y sobre todo, prevea los requerimientos futuros tanto de software como de hardware. Existen circunstancias en que los programas no pueden ofrecer una portabilidad total, en ese caso existen alternativas para lograr su funcionamiento en plataformas para las que no fueron creados. Una de las alternativas más sencillas es utilizar programas de interpretación (Giencke, 1996). La utilización de un programa de interpretación siempre debe realizarse con cuidado a sabiendas que alguna o algunas librerías necesarias para la aplicación principal puede no estar contenidas o no ser compatibles con el programa de interpretación. 2.4 Interoperabilidad A diferencia de la portabilidad la interoperabilidad no contempla ni el origen del código ni la capacidad del código para ser ejecutado en diferentes procesadores o sistemas operativos. La interoperabilidad de una aplicación se define como la capacidad de diferentes aplicaciones para intercambiar información mediante formatos, tipos de archivos o protocolos. A nivel internacional existen organizaciones encargadas de garantizar la interoperabilidad no sólo de aplicaciones computacionales. Por ejemplo, la Oficina Internacional de Pesos y Medidas (Bureau International des Poids et Mesures) se encarga de coordinar y estandarizar la metrología del Sistema Internacional de Unidades a nivel internacional. Europa cuenta con el ECIS (European Committee for Interoperable Systems) el comité es una organización internacional sin fines de lucro fundada en 1989 para promover la interoperabilidad y las condiciones de mercado en la informática y las telecomunicaciones. Conforme a la ISO/IEC 2382-01 interoperabilidad se define como: “la capacidad de comunicarse, ejecutar programas, o trasferir datos a través de varias unidades funcionales de tal manera que el usuario tenga poco o nulo conocimiento de las características individuales de dichas unidades” (ISO & IEC, 2003). Las empresas u organizaciones tienden a hacer caso omiso a respetar la interoperabilidad, sobretodo por creer que es una manera de conservar su autoría. Casos de compañías que se niegan a compartir información para lograr interoperabilidad son presionadas con sanciones económicas para lograr un panorama competitivo y de libre mercado. Gobiernos de países primermundistas han tomado un papel protagonista en la creación de leyes y mecanismos neutrales que obligan a garantizar la interoperabilidad. Uno de los ejemplos más claros de la interoperabilidad es la Internet, con millones de computadoras de diferentes marcas, con diferentes tipos de conexión a la red, con diferentes sistemas operativos, con diferentes aplicaciones, diariamente comparten información de todo tipo. 31 2.5 Plataformas Las plataformas computacionales pueden considerarse como una mezcla de hardware y software en el que se programará o ejecutará una aplicación. La plataforma más conocida y utilizada actualmente es Microsoft Windows en una arquitectura x86, su competidor más cercano es Mac OS X y GNU/Linux. En las secciones 2.5.1 y 2.5.2 se plantea una descripción más detallada sobre las plataformas de hardware y software utilizadas en la actualidad. 2.5.1 Plataformas de hardware Los procesadores instalados en cada CPU tienen una arquitectura específica.Los procesadores x86 son los más comunes y utilizados desde1978 cuando Intel lanzó al mercado su chip de 16 bits denominado 8086. En la actualidad los procesadores son en su mayoría de 32 bits y hay versiones poderosas x86-64 capaces de ejecutar código de 64 bits (Stokes, 2007). El objetivo del procesador es realizar la mayor cantidad de operaciones por unidad de tiempo; dicha evolución se ha visto frenada al llegar a tener procesadores con una frecuencia de reloj de hasta 3.8GHz. La tendencia cambió entonces por dotar a cada procesador con diferentes núcleos de procesamiento simultáneo, de ésta forma dos o más procesadores realizan todos los cálculos requeridos. La era del procesamiento en paralelo ha llegado, y junto con ella la necesidad de crear aplicaciones que puedan distribuir sus tareas entre los núcleos presentes en el procesador (Lin, 2008). 2.5.2 Plataformas de software Un software normalmente necesita una combinación de sistema operativo y entorno de programación para ser creado. Dos de las plataformas para creación de aplicaciones más importantes son Java y .NET, las características más importantes de las dos plataformas se relatan a continuación (Tymann, 2008). 2.5.2.1 Plataforma Java Sun Micro Systems es la empresa que desarrolló la plataforma Java, su principal distintivo radica en que los ejecutables de Java no los ejecuta directamente el sistema operativo del CPU, en su lugar existe una máquina virtual que se encarga de ejecutar los programas. Si existe una máquina virtual de Java para Linux o Windows entonces se pueden correr aplicaciones de Java sobre esa plataforma. Las aplicaciones Java tienen un alto grado de portabilidad, como se describe en (Tymann, 2008), sin embargo se encuentran limitadas a las funcionalidades que el intérprete y el sistema soporten. La portabilidad de Java le ha permitido posicionarse como un estándar 32 para la programación de electrodomésticos, los “applets” constituyen el complemento perfecto para dotar a cada programa de una interfaz gráfica funcional. 2.5.2.2 Plataforma .NET La nueva propuesta de plataforma de programación ofrecida por Microsoft es denominada .NET, el nombre resulta bastante propio al enfocarse a soluciones Web de rápida integración y con protocolos que permiten la comunicación entre empresas. La plataforma también trata de retomar mercado que Java ha venido ganando desde años atrás (Smith-Ferrier, 2007). .NET incluye una serie de bibliotecas, servicios y protocolos que los usuarios pueden utilizar de manera libre para el desarrollo de sus aplicaciones. Otro de los objetivos del producto es fomentar el desarrollo de código de particulares para ser incluido en la plataforma. 2.6 Aplicaciones de código abierto El concepto de código abierto tiene sus bases en los conceptos de cooperar y compartir. Es necesario aclarar que código abierto en ningún momento va de la mano con código gratuito, si bien es cierto que diferentes creadores de software gustan de compartir sus aplicaciones de manera gratuita hay compañías que necesitan cobrar por sus productos para fomentar la investigación y desarrollo de nuevas aplicaciones de alta calidad. Las ideas revolucionarias del código abierto demandaron de inmediato la mediación de organizaciones internacionales sin fines de lucro, que organizaran y dirigieran la iniciativa de miles de programadores alrededor del mundo(Sulayman K. Sowe, 2008). 2.6.1 Premisas del código abierto Para establecer un marco de desarrollo unificado se determinó que una aplicación de código abierto debe cumplir con las siguientes características (OpenSource.org, 2006): 1. Libre redistribución: el software debe poder ser regalado o vendido libremente. 2. Código fuente: el código fuente debe estar incluido u obtenerse libremente. 3. Trabajos derivados: la redistribución de modificaciones debe estar permitida. 4. Integridad del código fuente del autor: las licencias pueden requerir que las modificaciones sean redistribuidas sólo como parches. 5. Sin discriminación de personas o grupos: nadie puede quedar fuera. 33 6. Sin discriminación de áreas de iniciativa: los usuarios comerciales no pueden ser excluidos. 7. Distribución de la licencia: deben aplicarse los mismos derechos a todo el que reciba el programa. 8. La licencia no debe ser específica de un producto: el programa no puede licenciarse solo como parte de una distribución mayor. 9. La licencia no debe restringir otro software: la licencia no puede obligar a que algún otro software que sea distribuido con el software abierto deba también ser de código abierto. 10. La licencia debe ser tecnológicamente neutral: no debe requerirse la aceptación de la licencia por medio de un acceso por clic de ratón o de otra forma específica del medio de soporte del software. 2.6.2 Características y ventajas Aún cuando cumplir con las 10 premisas del código abierto no es siempre sencillo; vale la pena señalar las características y ventajas que se pueden obtener de ésta filosofía, para apoyar el concepto que se tratará en el Capítulo 3 sobre la creación de librerías de programación. Una buena librería de programación podría compartir alguno o todos los siguientes atributos de una aplicación de código abierto: • Flexibilidad: Las funciones ofrecidas en la librería pueden ser fácilmente utilizadas por los desarrolladores para construir funciones más elaboradas. El nuevo desarrollo puede ser fácilmente compartido a otros usuarios a través de la red. • Calidad: Cuando la librería es compartida entre un amplio grupo de usuarios los errores tienden a surgir de inmediato, así como las soluciones; generando un constante proceso de depuración del código. Si los desarrolladores deciden compartir el código original con la comunidad, la solución y mejoras con seguridad será una iniciativa de los mismos usuarios. • Tiempo de desarrollo: El tiempo en que una aplicación o producto pasa de la idea misma al producto terminado se denomina tiempo de salida al mercado. Para las organizaciones la reducción de ese tiempo resulta importante, puesto que las utilidades se obtendrán hasta la culminación del proyecto. La librería de programación permite de manera eficiente la distribución de actividades cumpliendo con un riguroso plan de integración. • Aplicaciones a la medida: Una librería siempre debe contar con las propiedades y los métodos generales para lograr que los programadores puedan construir todas y cada una de las aplicaciones específicas que necesiten. 34 2.7 Evolución de los entornos de programación 2.7.1 Programación basada en el flujo de datos Como su nombre lo indica la programación basada en el flujo de datos define la implementación de un programa como la edición de un gráfico en el cual las operaciones se van realizando conforme los datos van fluyendo. En comparación con la configuración basada en texto, representa una manera más fácil de desarrollar aplicaciones pequeñas pero funcionales. 2.7.1.1 Características Para realizar una aplicación basada en el flujo de datos es necesario considerar a la información como el elemento de mayor importancia y diseñar la estructura alrededor de dicha premisa. Los lenguajes de flujo de datos fueron originalmente diseñados para facilitar la programación en paralelo (Lin, 2008). Las operaciones o funciones están contenidas en bloques, cajas o íconos, mismo que tienen entradas y salidas definidas por el programador. Para que la función comience a ser ejecutada es determinante que todas sus entradas se encuentren definidas, o en términos del lenguaje visual “conectadas” a una fuente de datos. Mientras la aplicación espera que las entradas de cierta función estén listas, se puede estar ejecutando otras funciones en paralelo. Por tal motivo la programación visual aborda el reto de la ejecución en paralelo de manera nativa (Lewis, 1992). Según (Lewis, 1992) la forma de procesamiento computacional
Compartir