Ingeniería de Software

La línea 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. Como tal, la ingeniería de software es útil principalmente en el desarrollo intensivo de sistemas de software, grandes y complejos.

Profesores de la línea de Ingeniería de Software

La ingeniería de software es un área muy grande y que aborda muchas temáticas, que van desde el modelado de negocios para determinar los requisitos de un sistema, hasta las pruebas funcionales y no funcionales de los sistemas de software desarrollados. Es por esta razón que la línea 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 conocimiento:

Áreas de investigación

• Reingeniería, Refactorización y Transformación de software

Esta línea consiste de la eliminación de código mal formado en sistemas existentes, la transformación de sistemas existentes hacia nuevas plataformas, para la obtención de marcos de componentes o servicios 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 en las organizaciones empresariales, industriales, de gobierno y académicas, 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 SR2-Refactoring (Refactorización de software Legado integrado al Sistema para Reuso de Software).

• Arquitecturas Orientadas a Servicios y Microservicios

Esta es una de las líneas de investigación más novedosas hoy en día, ya que la orientación a servicios es el paradigma dominante para la programación de aplicaciones que requieran exponer parte de su funcionalidad a usuarios externos. Actualmente es posible encontrar el paradigma orientado a servicios en diferentes etapas del desarrollo de software, desde los modelos de negocios hasta la implementación de sistemas.
Uno de los proyectos específicos de esta área es la Transformación Automática de Código Orientado a Objetos hacia Servicios Web y Microservicios. El Grupo de Ingeniería de Software ha trabajado durante varios años en crear una infraestructura, física y de software, para convertir al CENIDET en un proveedor de servicios al resto de la comunidad tecnológica.

Clasificación y selección de servicios Web utilizando Recomendación Basada en Calidad

• La Nube Computacional

La Nube Computacional se ha convertido en un nuevo paradigma tecnológico ampliamente utilizado por la industria de las tecnologías de información y telecomunicaciones, debido la facilidad que aporta en la oferta de servicios sobre demanda, elasticidad, flexibilidad y suministro de recursos de cómputo. El Software como Servicio de la Nube Computacional (SaaS), es el tipo de software que resulta hoy día un medio importante para el desarrollo de tareas de los procesos de negocios, propiciando impactos positivos en clientes, así como ventajas competitivas de negocios a proveedores y desarrolladores de servicios.
Para la fabricación o personalización del SaaS de forma efectiva, es importante que los proveedores controlen de manera correcta las características de calidad de éstos como son: reuso, composición, adaptabilidad y elasticidad de servicios atómicos o microservicios así como los servicios de software compuesto. Se desarrolló un proyecto que propone un modelo de orquestación dinámica de servicios, cuyo objetivo es verificar, en tiempo de ejecución, la disponibilidad real de los servicios atómicos o microservicios del flujo de trabajo que componen al SaaS, y que permita reconstruirlo con aquellos servicios atómicos que cumplan con la disponibilidad necesaria para efectuar en tiempo y forma los requerimientos del cliente.

Caso de estudio

Tesis Doctoral de
Sergio_Fabian_Ruiz_Paz_2019

• Calidad de Software

Es importante conocer la calidad como una filosofía de trabajo en donde se aprenda a definir que es el objeto que se quiere medir y a especificar cuáles son las características de ese objeto desde el punto de vista del desarrollo y definir cómo pueden medirse esas características durante el proceso de desarrollo.
Gran parte de las investigaciones miden la calidad sobre todo de los productos cuando estos ya se desarrollaron, en lugar de hacerlo durante el desarrollo. Cuando un desarrollador pueda definir con precisión el objeto a medir, las características a medir y como medirlas, estará estableciendo su competencia en cuanto a calidad de software, es decir, entiende el qué y sabe el cómo.

Figura 1

Figura 2

>
La Figura 1 corresponde la definición de elementos acerca de un videojuego, mostrando de forma explícita las características que tiene un videojuego. En la figura 2, se presenta un segmento de cómo los atributos de calidad entendibilidad y usabilidad, pueden relacionarse con un producto de software que es un videojuego. Al final resulta un conjunto de atributos y métricas que determinen la calidad de un videojuego. En el ejemplo, el requerimiento es medir la jugabilidad.

• Ingeniería de Procesos de Desarrollo de Software y sus Datos Históricos

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. Para lograr sinergia cuando se integran, en un proceso sistémico, los modos apropiados de trabajo en grupo: Equipo, Colaborativo, Cooperativo y Control.
El uso de datos históricos ofrece, a los interesados en el desarrollo de software, información pertinente y actualizada. Los interesados en el desarrollo de software usan varios repositorios de software (Ejs. Sistemas de control de versiones, rastreadores de defectos, y archivos de correos electrónicos), para compartir comunicar y respaldar información relacionada a los proyectos de software.

Caso de estudio

Aunque puede haber abundante información en los repositorios de software, se dificulta la extracción exitosa de información por la necesidad de analizar simultáneamente varios repositorios y combinar sus datos, relacionándolos con eventos del desarrollo de software. Para esto se aplican técnicas de minería de datos, originalmente desarrolladas para analizar el proceso de negocios.

Caso de estudio

• Herramientas de Soporte al Desarrollo y Modelado de Software

En esta línea se construyen 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.

Caso de estudio

El modelado se orienta 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). Este tipo de desarrollo permite tratar la complejidad de la plataforma y requiere un proceso asociado con los lenguajes y las transformaciones.

Caso de estudio

• Tecnología Digital para la Educación

La tecnología ha modificado la demanda de habilidades para el trabajo y generando cambios en los procesos de producción, ampliando las cadenas de valor global, generando ubicuidad en los puestos de trabajo, así como cambios en la forma de trabajar.
En la organización y gestión de procesos educativos en los que se utilicen tecnologías digitales, es importante considerar tanto los entornos virtuales de aprendizaje como los recursos educativos y la manera como se entregan en los diferentes sistemas de gestión de aprendizaje, cuya función principal se centra en gestionar contenidos creados por fuentes diferentes.
Los proyectos de investigación se relacionan con la creación, administración, reusabilidad y calidad de los servicios web de aprendizaje, así como, la entrega de recursos de aprendizaje para la capacitación laboral y su impacto en la Industria 4.0.
Actualmente consideramos que el sistema gestor de aprendizaje idóneo para la integración de servicios Web de aprendizaje es Moodle. Así, se determinaron los requerimientos generales para el desarrollo de la extensión o plugin y se integró, con la arquitectura que se muestra en la figura siguiente.

Caso de estudio

• Ingeniería de Procesos de Negocio y Tecnologías de Información (9)

En esta área se realizan desarrollos tecnológicos novedosos, en los cuales se aplican directamente los principios, modelos, técnicas y herramientas de la ingeniería de software (IS), así como infraestructura tecnológica de soporte al desarrollo de software desarrollada en el área de IS para la construcción de sistemas que resuelven problemas específicos de empresas externas al CENIDET.

Caso de estudio

• Ingeniería de software aplicada a Big Data

Big Data sobrepasa los recursos actuales de software y hardware disponibles debido a su volumen, velocidad y variedad.
Desde la perspectiva de la ingeniería de software, es necesario desarrollar o adoptar nuevos procesos de desarrollo de software innovadores que puedan incorporar y abordar todos los problemas y desafíos relacionados con Big Data.

Big Data e Ingeniería de Software

 Líneas de investigación (LGAC)

Dirección

Interior Internado Palmira S/N, Col. Palmira, C.P. 62490
Cuernavaca, Morelos.

Contacto 

Email: contacto@cenidet.tecnm.mx 
Conmutador: 777 362 7770