Busque entre los 166288 recursos disponibles en el repositorio
El Internet de las Cosas (IoT) es una de las áreas de mayor crecimiento dentro de las tecnologías de información, debido a su incidencia técnica, social y económica en la sociedad, transformando favorablemente la forma en que vivimos y trabajamos. En la actualidad, uno de los desafíos más importantes para la comunidad científica y la industria es el desarrollo de software para sistemas IoT, ya que se caracterizan por ser altamente distribuidos, heterogéneos y dinámicos, siendo complejo identificar todos los requisitos del sistema en la etapa de desarrollo. Además, las metodologías y herramientas de ingeniería de software tradicionales han demostrado ser poco efectivas y productivas para afrontar las características intrínsecas de estos sistemas y, en particular el dinamismo y la incertidumbre asociados a los mismos. En sí, estos enfoques y herramientas se limitan a gestionar la evolución de los sistemas en tiempo de diseño, dejando de lado el tiempo de ejecución. Asimismo, se centran en los detalles de implementación (programación a bajo nivel) en lugar del dominio del problema, volviéndose una tarea compleja y tediosa el desarrollo de software para sistemas IoT. Un enfoque apropiado es incorporar la autoconsciencia computacional a los sistemas IoT con el apoyo de la Ingeniería Dirigida por Modelos (MDE) y, particularmente los modelos en tiempo de ejecución (models@run.time), a fin de aumentar su autonomía y resiliencia frente a las situaciones imprevistas. Bajo este enfoque, un sistema IoT es considerado autoconsciente, si es capaz de obtener y mantener el conocimiento sobre sí mismo y el entorno (p. ej., estructura, estado, evolución), sin un control externo. Mientras que, los modelos en tiempo de ejecución constituyen una autorrepresentación causalmente conectada de un sistema IoT, siendo el medio a través del cual el sistema captura el conocimiento, es decir, es consciente. Sin embargo, la autoconsciencia computacional en IoT es un área de investigación en desarrollo. Los esfuerzos de investigación se han concentrado fundamentalmente en trabajos teóricos orientados a establecer hojas ruta para la adopción de la autoconsciencia en sistemas IoT, así como soluciones prácticas sobre arquitecturas, frameworks, middlewares y algoritmos de aprendizaje automático para apoyar la autoconsciencia en aplicaciones particulares (ad hoc) de IoT, descuidando la concepción de metodologías e infraestructuras genéricas e integrales para construcción de este tipo sistemas. De igual manera, existen pocos estudios que consideran explícitamente a MDE y los modelos en tiempo de ejecución como parte de sus soluciones autoconscientes. Frente a esta problemática, la presente tesis doctoral aborda las limitaciones y desafíos expuestos mediante la creación de Aware-IoT@Run.Time, un método de ingeniería de software basado en modelos en tiempo de ejecución que apoya a los stakeholders en la construcción, operación y mantenimiento de sistemas IoT autoconscientes. Específicamente, el proceso metodológico de Aware-IoT@Run.Time y sus actividades están fundamentados en el bucle de aprendizaje y razonamiento basado en modelos (LRA-M loop). Este proceso metodológico ha sido descrito a profundidad y representado gráficamente bajo la notación SPEM, incluyendo su descomposición jerárquica en actividades, tareas y subtareas, junto con la especificación de los roles de usuario, herramientas y artefactos de entrada / salida que intervienen en cada una de las actividades y tareas. Además, en esta tesis doctoral se implementó un prototipo avanzado de una infraestructura de soporte a la metodología Aware-IoT@Run.Time, compuesto por un conjunto de artefactos y herramientas de ingeniería de software que integran, automatizan y simplifican todas sus actividades y tareas. En primer lugar, el Lenguaje Específico de Dominio (DSL) Monitor-IoT y el configurador web de autoconsciencia permiten la construcción de modelos con especificaciones (conceptos) de alto nivel sobre las preocupaciones arquitectónicas, de monitoreo y autoconsciencia de un sistema IoT. Estas herramientas se basan en metamodelos construidos a partir de estándares (ISO/IEC 30141:2018), frameworks conceptuales y ontologías relevantes sobre arquitecturas de IoT, autoconsciencia computacional y medición de la calidad de software, lo cual asegura la formalidad y coherencia semántica de los modelos. A su vez, estos metamodelos poseen un vocabulario amplio para especificar una diversidad de entidades IoT (físicas y digitales), flujos de datos de monitoreo, así como aspectos y procesos de autoconsciencia, a nivel de las capas Edge, Fog y Cloud de un sistema IoT. Como complemento, un middleware mantiene la relación causal entre los modelos y el sistema IoT gestionado, y viceversa. Este middleware ante cualquier cambio en las especificaciones de los modelos, implementa y/o reconfigura de forma automática y distribuida los artefactos de software de monitoreo y autoconsciencia de un sistema IoT, a nivel de las capas Edge, Fog y Cloud. Por su parte, los artefactos generados por el middleware se encargan de proveer el soporte necesario para que un sistema IoT pueda aprender y razonar a partir de la actualización y calibración continua de los parámetros (métricas, metadatos, etc.) de los modelos, volviéndose capaz de comprender su estado y posible evolución para llegar a recomendaciones (acciones correctivas) de ser necesario. La metodología Aware-IoT@Run.Time y sus herramientas de soporte fueron evaluadas empíricamente mediante un estudio de caso y dos cuasi experimentos bajo el subdominio de ambientes de vida asistida. El estudio de caso ha demostrado que siguiendo paso a paso la guía metodológica y con el apoyo de las herramientas es factible construir sistemas IoT autoconscientes con un alto grado de abstracción, expresividad y flexibilidad. Mientras que, los cuasi experimentos basados en el Modelo de Evaluación de Métodos (MEM) y ejecutados en un entorno académico han determinado la alta efectividad y eficiencia de los participantes al utilizar la solución Aware-IoT@Run.Time. Además, estos cuasi experimentos han demostrado la intención de los participantes de utilizar la solución a futuro, ya que la consideran fácil de usar y útil. Finalmente, la implementación y evaluación de la solución Aware-IoT@Run.Time ha servido para corroborar que un enfoque de ingeniería de software basado en la autoconsciencia computacional y los modelos en tiempo de ejecución resulta ser idóneo para abstraer la complejidad y elevar el nivel de automatización del desarrollo de los sistemas IoT, mejorar la gestión de su evolución y cambio, aumentar la independencia del dominio de aplicación y la plataforma tecnológica; y, en definitiva, reducir el esfuerzo y tiempo requerido para su puesta en operación. Sin embargo, a lo largo de la tesis doctoral se han evidenciado una serie de oportunidades de investigación para perfeccionar la solución Aware-IoT@Run.Time, mismas que deberán ser consideradas a futuro.