Conocimiento y tecnología al servicio de México

Lineas de Investigación: Doctorado en Ciencias de la Computación

 

La experiencia, conocimientos y formación de los investigadores de nuestro Departamento de Ciencias Computacionales, ha logrado crear una adecuada sinergia traducida en el desarrollo y generación de proyectos tecnológicos y de investigación caracterizados por su pertinencia y calidad para la solución de las necesidades actuales tanto del país como a nivel internacional. La conformación de grupos de trabajo al interior del departamento, encamina esfuerzos con objetivos comunes que hemos consolidado en tres grandes ramas de la computación, que conforman nuestras líneas de investigación: Ingeniería de Software, Inteligencia Artificial y Sistemas Distribuidos. Cada una de estas líneas se describe a continuación:

 

INGENIERÍA DE SOFTWARE

El grupo de Ingeniería de Software se ha dedicado, desde su creación en 1992, al desarrollo de principios de ingeniería, métodos, herramientas y técnicas cuya finalidad es producir software de calidad. En este sentido, la actividad del Grupo de Ingeniería de Software es totalmente acorde con el objetivo de la Ingeniería de Software al intentar especificar, en forma precisa, la estructura y el comportamiento de sistemas y su implantación, las actividades que aseguren el cumplimiento de las especificaciones y metas del mundo real, así como la evolución de sistemas en el tiempo y a través de familias de sistemas. El Grupo de Ingeniería de Software eligió algunos de los temas de mayor impacto y aplicación práctica de esta disciplina, los cuales constituyen las líneas de generación del grupo:

  • Ambientes y Herramientas de Soporte al Desarrollo de Software. El grupo se avoca principalmente a construir herramientas de modelado y generación automática de código a partir de procesos de Ingeniería Directa, así como de la obtención de la documentación y de los modelos a partir de procesos de Ingeniería Inversa. Se han construido herramientas para modelar casos de uso para poder distinguir y especificar los requerimientos funcionales de sistemas de software en construcción.

 

  • Ingeniería de Procesos de Desarrollo de Software. En esta línea se investigan maneras de desarrollar software orientadas a planificación y maneras ágiles de desarrollar software. Una de estas maneras de desarrollar software, en la que se ha trabajado es el AGD, un Método de Desarrollo Arquitectónico en Grupo. El AGD es un método que da más importancia a los productos de trabajo (modelos) y que subordina el proceso en relación a los artefactos que se obtienen. La complejidad del proceso se reduce eliminando las fases y obteniendo cualquier resultado requerido utilizando transformaciones de modelos o un proceso sistémico. Se genera conocimiento acerca del desarrollo dirigido por modelos para incrementar la importancia dada a los productos del trabajo y su arquitectura, para desarrollar el producto de software mediante transformaciones sucesivas de modelos fuente hacia modelos objetivo más detallados, hasta obtener un modelo ejecutable. Y se desarrolla el ambiente AGDE de desarrollo, de soporte al método AGD, para lograr sinergia cuando se integran, en un proceso sistémico, los modos apropiados de trabajo en grupo: Equipo, Colaborativo, Cooperativo y Control.

 

  • Ambientes Integrados de Modelado de Software. Orientados a subir el nivel de abstracción de sistemas físicos, y mejorar la productividad, mediante el uso de lenguajes que incluyen modelos (que representan elementos del mundo real), metamodelos (para describir la estructura de los modelos) y semántica de lenguajes; junto con transformaciones entre lenguajes; combinados con lenguajes de dominio específico (DSL, por sus siglas en inglés). Este tipo de desarrollo permite tratar la complejidad de la plataforma y requiere un proceso asociado con los lenguajes y las transformaciones. Estos ambientes proveen administración, transformación y sincronización de artefactos de software. Con el objetivo de factorizar la complejidad mediante niveles de abstracción e interés diferentes, desde modelos conceptuales de alto nivel se disminuye hacia aspectos individuales de plataformas objetivo. Y los DSL proveen abstracciones y notaciones para modelar aspectos específicos de sistemas. Se usa una variedad de lenguajes de dominio específico y fragmentos de sus modelos para desarrollar sistemas de software grandes.

 

  • Reusabilidad de Software. Esta línea consiste en la obtención de marcos de componentes reusables de software de dominios de aplicaciones, a partir de procesos de reingeniería y refactorización de software legado. El objetivo es ampliar el tiempo de vida útil del software existente, la recuperación de la inversión en su desarrollo y el control de su evolución en el tiempo. Uno de los proyectos más recientes de esta área es el Sistema de Ingeniería de Reuso de Software para Cobol en versiones no estándares.

 

  • Tecnologías de Ingeniería de Software aplicadas al desarrollo de Software Científico y de Ingeniería. El Software Científico es una categoría de software que incluye por ejemplo aplicaciones para Bioinformática, Medicina, Minería de Datos, Optimización, Matemáticas, Química y Ciencias de la Tierra por mencionar sólo algunas. Este tipo de software difiere del software de los sistemas transaccionales tradicionales, ya que tiene sus propios problemas de especificación, desarrollo y pruebas y por tanto requiere de modelos y metodologías de desarrollo particulares que contribuyan a garantizar su calidad.

 

  • Inteligencia de Negocios. En esta área se busca desarrollar tecnología para dar soporte a los procesos de gestión de empresas en cuanto a aplicaciones y tecnologías para recabar, brindar acceso y analizar datos e información sobre las operaciones del negocio para lograr ventajas competitivas.

 


INTELIGENCIA ARTIFICIAL

El grupo de Inteligencia Artificial se dedica en mayor o menor medida a la Visión Artificial, reconocimiento de patrones  y al Control Inteligente.  Los temas principales son procesamiento de imágenes, inspección visual, videovigilancia, visión robótica y control inteligente. 

  • Procesamiento de imágenes: La calidad visual de las imágenes juega un papel muy importante en los sistemas de visión artificial, ya que afecta y limita el análisis computarizado, siendo clave en el éxito del sistema. En este rubro se han analizado y evaluado diversas técnicas de eliminación de ruido, mejoras del contraste, técnicas de preservación de bordes como las wavelets o las contourlets.

 

  • Reconocimiento de patrones: La detección e interpretación oportuna de la información presente en una imagen es vital. Esta información puede ser utilizada para recuperar imágenes, automatizar un proceso, detectar información como los estados de ánimo de las personas o   lesiones que pueden ocurrir en el cerebro humano, etc. En este campo se estudian diversos clasificadores que ayuden a  lograr la automatización (problema con características difíciles de resolver y aunque se han propuesto múltiples esquemas de solución). Buscando soluciones computarizadas eficientes y eficaces, se evalúan clasificadores actuales como las Redes Neuronales Artificiales Pulso-Acopladas o Pulsantes (RNAs) (consideradas como la tercera generación de RNAs) son una novedosa variante que promete ser superior a los anteriores paradigmas neuronales y ya están siendo aplicadas en dominios de Visión Artificial.
  • Inspección visual: Agrupa diversos proyectos de investigación en el área de la visión artificial atendiendo temas como: el modelado y reconocimiento de objetos rígidos, el modelado y reconocimiento de objetos flexibles como lo son las manos, boca y el cuerpo humano; el seguimiento de objetos rígidos, el seguimiento de objetos flexibles; la inspección visual  automatizada para el control de la calidad de productos manufacturados y, para el control de la calidad de frutas, hortalizas, vegetales, etc., e inspección por color y textura.

 

  • Videovigilancia: Agrupa proyectos de visión artificial sobre secuencias temporales de imágenes para detectar la figura humana en ambientes interiores y exteriores reales, para extraer conocimiento de las acciones que se realizan en un determinado escenario y poder determinar  comportamientos normales o inusuales. Se tratan casos mayormente de cámara fija, entendidas en forma amplia como de seguridad patrimonial, seguridad y salud, estudios de comportamiento humano, e incluso animal.

 

  • Visión robótica: Propone dar flexibilidad y autonomía en un entorno dinámico a las máquinas, en particular los robots. Actualmente nos proponemos asimilar y perfeccionar las técnicas de visión robótica para robots móviles, tomando como referencia el paradigma de Localización y mapeo simultáneos, SLAM por sus siglas en inglés.

 

  • Control Inteligente: Es la aplicación de técnicas de inteligencia artificial al control. La investigación sobre control inteligente a través de la aproximación de la ley de evolución de estados mantiene como eje central la tesis de que los métodos empleados deben dar los mismos resultados, sin importar que se use lógica difusa, redes neuronales o neurodifusas, o alguna otra.

 

SISTEMAS DISTRIBUIDOS

El grupo de investigación de Sistemas Distribuidos se caracteriza por ser un área dinámica, como resultado de la evolución de los paradigmas computacionales y de la evolución de las plataformas de cómputo, esta dinámica ha permitido que la línea de investigación y las LGAC asociadas se actualicen constantemente. Las tecnologías de información y comunicación han experimentado un proceso evolutivo significativo, lo cual ha motivado al grupo de sistemas distribuidos adoptar tecnologías y nuevos paradigmas relacionados con las tendencias y necesidades tecnológicas demandadas por el sector productivo, entre las tecnologías exploradas en la línea se encuentran las siguientes: bases de datos, tecnologías web, web semántica, cómputo móvil e inteligencia ambiental, sin embargo, de acuerdo a la vigilancia tecnológica y a las tendencias en las áreas de investigación se actualizaron las LGAC en áreas tecnológicas emergentes tales como: 

  • Procesamiento de Lenguaje Natural. Es un campo interdisciplinario en el que intervienen de manera particular la Lingüística y la Computación, y dependiente del fenómeno lingüístico a modelar, participan otras disciplinas como la Psicología, la Sociolingüística, las Matemáticas, etc. El objetivo que persigue es formalizar mecanismos computacionalmente eficaces que permitan a las máquinas “interpretar” y generar mensajes emitidos en algún idioma, como el español, el inglés, etc., para alcanzar una interacción humano-computadora lo más natural posible. Algunas de las áreas que se trabajan al interior del departamento en el marco de PLN, se listan a continuación.
    • Recuperación de Información (RI): implementa modelos eficientes de búsqueda de información en colecciones de documentos para localizar los documentos que responden a una solicitud específica de información.
    • Extracción de Información (EI): localiza los extractos de texto que contengan información relevante para una necesidad concreta de un usuario y proporciona, de manera estructurada, dicha información.
    • Minería de Opiniones y análisis de sentimientos: Son tareas enfocadas al procesamiento (identificación, extracción y clasificación) de información subjetiva que las personas generan en medios como redes sociales, páginas de productos y servicios, entre otros. Resulta ser de gran interés en áreas como la inteligencia de negocios, la política, la toma de decisiones de consumidores, etc.
    • Tecnología Educativa: A grandes rasgos (y bajo el ámbito computacional), se refiere a las relaciones e interacciones que se dan entre las TIC y la educación. El campo de acción es muy amplio, enfocado primordialmente a todo aquello que aporte mejorías en los procesos de enseñanza/aprendizaje. Nuestro interés resulta en el análisis y generación de recursos de apoyo en la redacción y adquisición de conocimiento científico.

 

  • Cómputo Consciente de la Situación. Conforme crece la integración de la sociedad con la tecnología, la tarea de acceder y recuperar información se vuelve una actividad de importancia para apoyar al proceso de toma de decisiones ante las crecientes necesidades de los usuarios. Estas necesidades se avocan a una recuperación de información más natural, rápida y pertinente, características relevantes si se considera que los resultados obtenidos muchas veces no satisfacen las expectativas de los usuarios. Bajo este ámbito, el uso de los servicios basados en localización (LVS por sus siglas en inglés) permite a los usuarios acceder a información para la localización geográfica de lugares o sitios de interés. Sin embargo, el área de cómputo consciente de la situación abarca no sólo a los LVS, también explora y desarrolla otras áreas:
    • Cognición aumentada: Podría definirse como un ambiente de cómputo consciente del entorno altamente personalizado en el que el contexto se especializa en la actividad del usuario con la computadora. Los sistemas de cognición aumentada exploran estrategias para filtrar la información y presentarla al usuario en el momento, y a través del canal, más apropiado tratando de aumentar la capacidad de asimilación y de toma de decisiones.
    • Evaluación de la experiencia del usuario. La evaluación centrada en el usuario (por sus siglas en inglés, UCE) comprende tres metas principales: verificar la calidad del software, detectar problemas de funcionamiento y ayudar al usuario en la toma de decisiones.

 

  • Interacción Humano Computadora. Human-Computer Interaction (HCI) es un área de estudio que trata sobre la investigación, diseño y desarrollo de nuevas tecnologías para ayudar a mejorar la interacción entre las personas (usuarios) y dispositivos de cómputo (computadora). Desde sus inicios se ha buscado hacer que la computación sea interactiva por medio de la simulación del mundo real, controlando directamente la emulación. Investigaciones en HCI se ocupan de desarrollar interfaces de usuario que sean útiles, utilizables y agradables.  Se centra en actividades que van desde el diseño hasta el desarrollo de la evaluación de los sistemas informáticos, con el objetivo de comprender cómo las dispositivos de cómputo influyen en las personas y en la sociedad. La búsqueda de una interacción humano-computadora  centrada en el usuario, ha llevado a los investigadores a diseñar interfaces con la capacidad de reconocer algunas características humanas, tales como: los gestos, los movimientos, los esquemas de escritura, los patrones biométricos, el reconocimiento facial, etc.