=Paper= {{Paper |id=Vol-1807/01_ISW-LOD2016_1_10 |storemode=property |title=Enfoque para Generar Aplicaciones Orientadas a Servicios para IoT mediante el Desarrollo Dirigido por Modelos |pdfUrl=https://ceur-ws.org/Vol-1807/01_ISW-LOD2016_1_10.pdf |volume=Vol-1807 |authors=Claudia M. Sosa-Reyna,Edgar Tello-Leal,David Lara-Alabazares }} ==Enfoque para Generar Aplicaciones Orientadas a Servicios para IoT mediante el Desarrollo Dirigido por Modelos== https://ceur-ws.org/Vol-1807/01_ISW-LOD2016_1_10.pdf
Enfoque para Generar Aplicaciones Orientadas a
   Servicios para IoT mediante el Desarrollo
             Dirigido por Modelos

          Claudia M. Sosa-Reyna1 , Edgar Tello-Leal2 , David Lara-Alabazares1
     1
          Departamento de posgrado en Eléctrica y Electrónica, UAM Reynosa-Rodhe,
            Universidad Autónoma de Tamaulipas, Reynosa, Tamaulipas, México
         2
           Facultad de Ingenierı́a y Ciencias, Universidad Autónoma de Tamaulipas,
                                 Victoria, Tamaulipas, México
         clauqueen1@gmail.com, etello@uat.edu.mx, dlara@docentes.uat.edu.mx



           Resumen El Internet de las Cosas (Internet of Things, IoT) es una
           parte integral de la Internet del futuro. IoT se puede entender como una
           infraestructura de red global dinámica con capacidad de auto configu-
           ración, basada en protocolos de comunicación estándar e interoperables,
           donde “cosas” fı́sicas y virtuales tienen identidad, atributos fı́sicos y per-
           sonalidades virtuales. El principal problema en las soluciones tecnológicas
           para IoT se presenta en un nivel de aplicación, es decir, un conjunto de
           componentes de software que se requiere desarrollar para gestionar las
           cosas, objetos o dispositivos a interconectar. Estos requerimientos propi-
           cian la utilización de los principios del Desarrollo Dirigido por Modelos
           (Model-Driven Development, MDD) para la construcción de aplicaciones
           de software, permitiendo generar modelos en diferentes niveles de abs-
           tracción, con la posibilidad de generar artefactos de implementación de
           software (código) en diferentes plataformas. En este artı́culo, se propone
           una metodologı́a basada en MDD con diferentes niveles de abstracción,
           punto de vista, y granularidad, con el objetivo de guiar el desarrollo de
           aplicaciones de software para IoT. La metodologı́a es soportada median-
           te métodos de transformación de modelos posibilitando la generación del
           código de las aplicaciones de software para IoT. Adicionalmente, se pre-
           senta una arquitectura orientada a servicios para el despliegue de aplica-
           ciones de software, conformada de cuatro capas que permiten identificar
           los componentes requeridos para la implementación de sistemas de IoT.


Keywords: Internet de las Cosas, MDD, SOA, Aplicaciones de software, Méto-
dos de transformación


1.        Introducción
    Recientemente, varios estudios de la academia, industria, y gobierno, han
tratado de conectar todas las cosas u objetos en el mundo de la Internet, con
el fin de proporcionar un sistema integrado para mejorar su rendimiento en la
transmisión de información, a lo que se le ha llamado Internet de las Cosas




                                                1
-----
Copyright © 2016 for this paper by its authors. Copying permitted for private and academic
purposes.
(del inglés Internet of Things, IoT) [13,5]. Cuando se hace referencia a IoT,
normalmente se relaciona con una cosa u objeto fı́sico, pero un componente
fundamental en IoT es el software que se ejecuta en las cosas. Este software puede
estar presente en varias formas: embebido, middleware, aplicaciones, lógica en la
composición de servicios, y herramientas de gestión [1,11].
    Los avances alcanzados en materia de automatización y ambientes inteligen-
tes han llegado a niveles importantes, cada vez son más las aportaciones en este
sentido a través de los conceptos de IoT: ciudades inteligentes, automatización de
casas, e-health, manejo inteligente de uso de agua, por mencionar algunos. Con
los beneficios que han generado estos nuevos paradigmas, se ha presentado tam-
bién la complejidad en su desarrollo; es por ello que se han buscado alternativas
que faciliten los procesos de generación e implementación de aplicaciones inno-
vadoras. Entonces, el contar con modelos que conceptualicen el dominio de un
problema especı́fico, y que permitan identificar, clasificar, y abstraer los elemen-
tos que lo conforman, representa la posibilidad de alcanzar una implementación
automática eficiente.
    En este sentido, el Desarrollo Dirigido por Modelos (del inglés Model Driven
Development, MDD) está basado en modelos que, en un principio, minimizan
los aspectos tecnológicos de manera que sea más eficiente la comunicación entre
los usuarios, los analistas, y los desarrolladores de un sistema, permitiendo se-
leccionar la plataforma tecnológica hasta el final del proceso. La utilización de
MDD representa una mayor productividad y eficiencia, en cuanto a que se gene-
ra automáticamente el código como producto de una serie de transformaciones
de modelos, favoreciendo a la consistencia como producto de la automatización.
Los modelos de alto nivel de abstracción se transforman en modelos de nivel
más bajo, en donde la relación entre ambos da como resultado una dependencia
que guarda el proceso que se ha seguido hasta llegar a una solución tecnológi-
ca, contribuyendo a comprender las consecuencias de los cambios en cualquier
momento del proceso de desarrollo [12]. Al trabajar en base a modelos, es po-
sible lograr una fácil adecuación a los cambios, tanto tecnológicos como de los
requerimientos de los usuarios de negocio que puedan surgir en el proceso de
desarrollo, convirtiendo a los modelos en unidades re-utilizables y perdurables.
   Como parte del proceso de modelado, en donde los modelos son unidades pro-
ductivas de las cuales emanan las implementaciones automáticas, encontramos
como puntos medulares a la abstracción, representada por lenguajes de modelado
de alto nivel; la automatización, que permite transformar los modelos en pro-
gramas computacionales; y los estándares, o herramientas complementarias de
desarrollo; con la finalidad de obtener los artefactos o modelos formales que pue-
dan ser comprendidos por una computadora [7]. Tomando en cuenta la ubicuidad
y particularidad presente en los ambientes inteligentes, MDD permite el manejo
de tecnologı́as heterogéneas mediante modelos automáticos de transformación y
generación de código para plataformas especı́ficas. En MDD la transformación
de modelos puede ser vertical, en donde afina modelos abstractos en modelos
más especı́ficos. También, puede ser en forma horizontal, elaborando mapeos
entre modelos del mismo nivel de abstracción y de esta manera identificar la




                                        2
mejor solución [12]. En este sentido, en el enfoque de la Arquitectura Orientada
a Servicios (del inglés, Service-Oriented Architecture, SOA), un sistema comple-
jo es tratado como un conjunto de objetos bien definidos o subsistemas [10].
Estos objetos o subsistemas pueden ser reutilizados, manteniendo su forma indi-
vidual. Entonces, los componentes de software y hardware en una arquitectura
IoT, implementados con SOA, pueden ser reutilizados y actualizados de mane-
ra eficiente. Por lo tanto, cuando SOA es aplicado en IoT, el diseño generado
puede proporcionar extensibilidad, escalabilidad, modularidad, e interoperabili-
dad entre cosas heterogéneas, ası́ como las funcionalidades y capacidades que se
encapsularon en un conjunto de servicios.
    En este artı́culo se propone un metodologı́a basada en el MDD que permita
guiar el proceso de desarrollo de aplicaciones de software orientadas a servicios,
que posibiliten satisfacer los requerimientos de negocio del dominio de IoT. La
metodologı́a se conforma de un conjunto de métodos basados en MDD con dife-
rentes niveles de abstracción, punto de vista y granularidad. Además, se presenta
una arquitectura para sistemas de IoT compuesta de cuatro capas, y que se basa
en el enfoque de SOA. Lo anterior, permite garantizar la interoperabilidad en-
tre dispositivos heterogéneos en múltiples vı́as, estableciendo un puente entre el
mundo fı́sico y el mundo virtual de IoT.


2.   Arquitectura basada en SOA para sistemas de IoT
    El principal requerimiento de IoT es que las cosas u objetos en la red deben
estar interconectadas. La arquitectura de un sistema de IoT debe garantizar
las operaciones de las cosas, permitiendo establecer un puente entre las cosas
(parte fı́sica) y el mundo virtual de IoT. La arquitectura basada en SOA para
el desarrollo de sistemas de IoT propuesta se conforma de 4 capas, tal como se
muestra en la Figura 1 y se describen a continuación.




                 Figura 1. Arquitectura basada en SOA para IoT




                                         3
Capa de Objetos. Esta integrada con los objetos de hardware disponibles en
  la red que detectan el estado de las cosas. En la capa de objetos, los sis-
  temas inteligentes mediante etiquetas (tags) o sensores, son capaces de de-
  tectar automáticamente el medio ambiente y el intercambio de datos entre
  los dispositivos. Los objetos de esta capa deben tener una identidad digital
  (identificador único universal, UUID), lo que permite raestrear al objeto en
  el dominio digital, posibilitando cumplir con la expectativa de IoT de ser
  una red fı́sica inter-conectada en todo el mundo, en el que las cosas están
  conectadas a la perfección y se pueden controlar de forma remota [10].
Capa de Red. Consiste de la infraestructura que soporta las conexiones por ca-
  ble, inalámbricas o móviles entre las cosas, permitiendo detectar su entorno,
  lo que habilita compartir datos entre las cosas conectadas, posibilitando la
  gestión de eventos y el procesamiento inteligente de IoT. En el enfoque SOA,
  los servicios serán consumidos por las cosas que han sido habilitadas en la
  capa de red. La capa de red es crucial en cualquier enfoque de IoT, conside-
  rando funcionalidades de QoS, gestión eficiente de energı́a en la red y en las
  cosas, procesamiento de señales y datos, seguridad y privacidad, entre otras.
Capa de Servicio. En esta capa se crean y gestionan los servicios requeridos
  por los usuarios o aplicaciones de software. La capa de servicio se basa en
  la tecnologı́a de middleware, la cual es fundamental para consumir servicios
  y la ejecución de aplicaciones de IoT, donde las plataformas de hardware y
  software pueden ser reutilizables. Es una de las capas de operación crı́tica de
  la arquitectura, que funciona en modo bidireccional. Esta capa opera como
  interfaz entre la capa de objetos (en la parte inferior de la arquitectura), y la
  capa de aplicación (en la parte superior de la arquitectura). Es responsable
  de funciones como la gestión de dispositivos, gestión de información, filtra-
  do de datos, agregación de datos, análisis semántico, y descubrimiento de
  información [2]. La capa de servicios se conforma de: descubrimiento de ser-
  vicios, composición de servicios, APIs, y gestión de confiabilidad (ver Figura
  2), entre otros. El descubrimiento de servicios permite encontrar los objetos
  que pueden proporcionar el servicio requerido y la información necesaria de
  forma eficaz, mediante el UUID en el registro de servicios o repositorio de
  servicios. La composición de servicios permite la interacción entre las cosas
  conectadas mediante la combinación de los servicios disponibles para realizar
  una tarea especı́fica, es decir, cuando los servicios están creados y almacena-
  dos en el repositorio de servicios, se pueden combinar en servicios de mayor
  nivel de complejidad a partir de la lógica de negocio.
Capa de Aplicación. Es la capa responsable de la entrega de las aplicaciones
  a los diferentes usuarios de IoT. La intención de la arquitectura es soportar
  aplicaciones verticales. El desarrollo de aplicaciones en IoT se ha centrado
  en las áreas de salud, agricultura, transporte, ciudades inteligentes, automa-
  tización de casas, sistemas complejos para la toma de decisiones, gestión de
  uso de agua, etc [4].




                                        4
                Figura 2. Esquema de la capa de servicios de SOA



3.   Metodologı́a MDD para Aplicaciones de IoT

    La metodologı́a propuesta apunta al uso de modelos conceptuales en dife-
rentes puntos de vista, niveles de abstracción, y de granularidad. Los artefactos
de salida de las fases de esta metodologı́a se representan por medio de modelos
(de procesos y/o sistemas), generados mediante la aplicación de los principios
del MDD. El resultado final son los artefactos de implementación de software,
es decir, el código de las aplicaciones o sistemas de software para IoT. En la
Figura 3 se presentan las fases que componen esta metodologı́a: 1) análisis de
requerimientos de negocio, 2) definición de la lógica de negocio, 3) diseño de la
solución integrada de servicios, y 4) generación de la solución tecnológica.




     Figura 3. Metodologı́a basada en MDD para desplegar aplicaciones de IoT




                                    5
Fase 1. Análisis de los requerimientos de negocio. Esta fase consiste
en analizar el dominio del problema e identificar los requerimientos de negocio.
Esto se realiza considerando los requerimientos funcionales y no funcionales del
sistema. Para definir el modelo de requerimientos de negocio se utiliza el lenguaje
UML, capturando el flujo del proceso de software mediante diagramas de casos
de uso y diagramas de actividades, generando un modelo definido en un nivel
PIM de MDD.


Fase 2. Definición de la lógica de negocio. Esta fase se enfoca en el diseño
de los procesos de negocio requeridos para soportar la lógica de negocio y los
requerimientos de negocio. Entonces, se utiliza como entrada a la fase, el modelo
de requerimientos de negocio generado previamente, y se complementa mediante
la definición de la lógica del proceso de negocio, utilizando el lenguaje de mode-
lado y notación de procesos de negocio (Business Process Model and Notation,
BPMN), lo cual permite generar un modelo de la solución de negocio definido
en un nivel PIM del MDD, describiendo el comportamiento e interacciones del
proceso de negocio desde un punto de vista global.


Fase 3. Diseño de la solución integrada de servicios. Esta fase tiene
por objetivo la definición de un modelo de la arquitectura de TI, en un nivel
independiente de la plataforma para separar la solución de la lógica de negocio
de los aspectos técnicos de implementación (TI), lo que permite que este tipo de
implementación pueda generarse en diferentes plataformas destino. El modelo
de arquitectura de TI se deriva del modelo de la solución de negocio generado
en la fase anterior, el modelo generado se mantiene sin cambios en cualquier
plataforma. En este caso, el modelo de la arquitectura de TI se genera siguiendo
el enfoque orientado a servicios SOA.


Fase 4. Generación de la solución tecnológica. En esta fase se utilizan
conceptos especı́ficos de la plataforma de implementación con el fin de convertir
esta solución en código ejecutable de una aplicación de software en particular.
Esta fase se realiza mediante la ejecución de dos etapas: 1) diseño de la solución
de la plataforma especı́fica de TI, y 2) generación de las especificaciones o código
del sistema de software. La primera etapa consiste en la definición de un modelo
de especificaciones basado en un estándar o tecnologı́a especı́fica (por ejemplo,
TinyOS 2.0 o WSN Operating Systems), utilizando como entrada a la fase, el
modelo de la arquitectura de TI generado previamente. El modelo de la solu-
ción tecnológica contiene la información requerida para la plataforma especı́fica
(mensajes concretos en el formato de enviar o recibir para las cosas u objetos,
protocolos de transporte usados, UUID del sensor, emisor o receptor, etc.). La
segunda etapa consiste de una transformación del modelo PSM de MDD a texto,
que representa el esqueleto de código o el código ejecutable de una aplicación,
normalmente en especificaciones basadas en XML.




                                    6
3.1.    Métodos de Transformación de Modelos

     Para reducir los costos y el tiempo de desarrollo, la metodologı́a es sopor-
tada por métodos basados en el enfoque MDD, permitiendo transformaciones
automáticas y semi-automáticas de modelos para generar los modelos de sali-
da de cada fase. Una transformación de un modelo consiste de un conjunto de
reglas de transformación, que definen cómo un modelo de entrada es mapeado
a uno o más modelos o código ejecutable de salida. Para soportar las transfor-
maciones de modelos necesarias para la metodologı́a, se propone la aplicación
de diferentes métodos de transformación de modelos, tal como se muestra en
la Figura 4. Por un lado, un modelo independiente de la plataforma (del inglés
Platform Independent Model, PIM) es una vista del sistema independiente de
la plataforma, es decir, un modelo con alto nivel de abstracción independiente
de cualquier tecnologı́a o lenguaje de implementación que exhibe un grado su-
ficiente de independencia de la plataforma a fin de permitir su mapeo a una o
más plataformas. Por otro lado, un modelo especı́fico de la plataforma (del inglés
Platform Specific Model, PSM) presenta una vista del sistema desde la perspec-
tiva de una plataforma tecnológica especı́fica, es decir, un modelo de solución
asociado a una plataforma que incluye los detalles del PIM y que describe cómo
realizar la implementación en dicha plataforma.




       Figura 4. Transformaciones de modelos en diferentes niveles de abstración


    La Figura 4 muestra los métodos MDD que se proponen para generar las
soluciones tecnológicas en ambientes de IoT, mediante aplicaciones de software
orientadas a servicios. Se detallan los niveles de abstracción de modelos de acuer-
do a MDD, que van desde un modelo en nivel PIM hasta el código. También,
se detallan los artefactos (de modelos y de código) que se generan en cada fase.
Para cada uno de ellos se indica la transformación que se realiza, el modelo y
el nivel de origen (de entrada), y el modelo o código que resulta (de salida o
destino), ası́ como el nivel al que corresponde el modelo generado. Mediante la




                                         7
transformación T1 se genera un modelo conceptual de la solución de negocio a
partir de un modelo de requerimientos de negocio, complementado con la lógica
de negocio y con el proceso de negocio diseñado, a través de una transforma-
ción horizontal PIM-a-PIM. La transformación modelo-a-modelo T2 apunta a
generar un modelo de la arquitectura de TI, definido en un nivel PIM median-
te una transformación horizontal. Esta transformación se deriva del modelo de
la solución de negocio, utilizando los conceptos de la arquitectura orientada a
servicios, manteniendo una independencia de la plataforma de implementación.
En la Figura 5 se muestra un ejemplo de una regla de transformación (T2),
utilizando como entrada el metamodelo del lenguaje BPMN y como destino el
metamodelo de la arquitectura SOA (Regla 1). Los métodos de transformación
y las reglas propuestas se definieron utilizando el lenguaje de transformación de
modelos Eclipse Atlas Transformation Language (ATL)3 .
    La solución tecnológica (ver Figura 4) es generada mediante dos métodos
dirigidos por modelos. El primer método aplica una transformación modelo-a-
modelo T3, generando un modelo de salida basado en la plataforma de imple-
mentación especı́fica que se seleccione, utilizando un modelo de la arquitectura
de TI como entrada. El modelo generado es definido en un nivel especı́fico de la
plataforma PSM, utilizando conceptos de la plataforma de implementación de
IoT. En la Figura 5 se muestra un ejemplo de una regla de transformación (Regla
2) del metamodelo de SOA (nivel PIM) a un metamodelo en un nivel PSM. En
el ejemplo se generan los datos que se enviarán a un sensor de una aplicación de
software de un simulador de vehı́culos inteligentes. El segundo método se lleva a
cabo mediante la transformación directa modelo-a-texto T4, que consiste en la
generación de un documento con el código fuente que representa la estructura y
comportamiento del objeto ante un evento.




Figura 5. Ejemplo de reglas de transformación del método T2 (Regla 1) y T3 (Regla
2)




3
    www.eclipse.org/atl/



                                       8
4.   Trabajos Relacionados
    En [9] se propone el uso del enfoque de MDD para crear métodos para la ge-
neración de código flexible. Se muestra cómo, usando una transformación modelo
a modelo, se deriva un modelo abstracto. Se presentan las bases para la gene-
ración de código para construir codificadores y decodificadores eficientes, con lo
que se pueden llevar a cabo traducciones automáticas entre diferentes esquemas
de codificación que pueden ser elegidos libremente en base a los requerimientos
especı́ficos de dominio. Mediante esquemas de MDD se genera un modelo común
de representación de formatos de datos derivado de diferentes fuentes. En base
a este esquema de generación de código, se implementa un sistema de enlace, el
cual proporciona una interfaz de comunicación con servicios de redes de sensores
inalámbricos. La propuesta presentada en [6] es un esquema de desarrollo de apli-
caciones para sensores FRASAD, basada en MDD. En la arquitectura propuesta
se utiliza un modelo basado en reglas y DLS para describir las aplicaciones. Se
utilizan una interfase gráfica para el usuario, componentes de generación de códi-
go, y herramientas de soporte para auxiliar a los desarrolladores en el diseño,
implementación, y prueba de las aplicaciones de IoT.
    Por otro lado, en [3] se describe una herramienta basada en MDD para IoT,
la cual se fundamenta en el servicio de descubrimiento semántico, permitiendo
una selección y localización dinámica de recursos o dispositivos mediante una
interfaz gráfica. Se enfoca en las caracterı́sticas de la plataforma para el ma-
nejo de IoT, describiendo cómo el enfoque de middleware puede simplificar el
uso de un manejador de IoT en un ambiente real de manufactura. Una herra-
mienta de desarrollo llamada IoTLink basada en el enfoque de MDD se presenta
en [8]. IoTLink permite a los desarrolladores inexpertos elaborar aplicaciones
combinadas mediante el lenguaje especı́fico de dominio (DSL), el cual puede ser
configurado para crear aplicaciones de IoT. A través de componentes visuales,
IoTLink encapsula la complejidad de la comunicación con los dispositivos y ser-
vicios de internet, y los abstrae como objetos virtuales que son accesibles por
medio de diferentes tecnologı́as de comunicación, resolviendo la interoperabilidad
entre componentes IoT heterogéneos.

5.   Conclusiones
    En este trabajo de investigación se presentó una metodologı́a para el desarro-
llo de aplicaciones de software para IoT. La metodologı́a se basa en los principios
del desarrollo dirigido por modelos (MDD), por lo cual se definieron un conjunto
de métodos de transformación de modelos, los cuales se especificaron con dife-
rentes puntos de vista, niveles de abstracción y granularidad. La metodologı́a
propuesta permite guiar el proceso de desarrollo de aplicaciones de software
orientadas a servicios, a partir de modelos conceptuales hasta llegar al código
de una aplicación especı́fica y en una plataforma tecnológica seleccionada. El
enfoque propuesto tiene como objetivo disminuir los tiempos y costos del desa-
rrollo de software mediante la implementación de transformaciones de modelos
automáticas y semi-automáticas.




                                        9
    Además, se propuso una arquitectura para soportar las aplicaciones y/o sis-
temas de software para IoT. La arquitectura describe de forma genérica las di-
ferentes capas requeridas para el despliegue de aplicaciones de software en IoT,
utilizando los conceptos de la arquitectura orientada a servicios (SOA).

Referencias
 1. Atzori, L., Iera, A., Morabito, G.: The internet of things: A survey. Comput. Netw.
    54(15), 2787–2805 (2010)
 2. Bandyopadhyay, D., Sen, J.: Internet of things: Applications and challenges in
    technology and standardization. Wireless Personal Communications 58(1), 49–69
    (2011)
 3. Conzon, D., Brizzi, P., Kasinathan, P., Pastrone, C., Pramudianto, F., Cultro-
    na, P.: Industrial application development exploiting iot vision and model driven
    programming. In: Intelligence in Next Generation Networks (ICIN), 2015 18th In-
    ternational Conference on. pp. 168–175 (2015)
 4. Fang, S., Xu, L.D., Zhu, Y., Ahati, J., Pei, H., Yan, J., Liu, Z.: An integrated
    system for regional environmental monitoring and management based on internet
    of things. IEEE Transactions on Industrial Informatics 10(2), 1596–1605 (2014)
 5. Miorandi, D., Sicari, S., Pellegrini, F.D., Chlamtac, I.: Internet of things: Vision,
    applications and research challenges. Ad Hoc Networks 10(7), 1497 – 1516 (2012)
 6. Nguyen, X.T., Tran, H.T., Baraki, H., Geihs, K.: Frasad: A framework for model-
    driven iot application development. In: Internet of Things (WF-IoT), 2015 IEEE
    2nd World Forum on. pp. 387–392 (2015)
 7. Pons, C., Giandini, R., Perez, G.: Desarrollo de software dirigido por modelos.
    Editorial Universidad Nacional La Plata - McGraw Hill, Argentina, 1a. edn. (2010)
 8. Pramudianto, F., Kamienski, C.A., Souto, E., Borelli, F., Gomes, L.L., Sadok,
    D., Jarke, M.: Iot link: An internet of things prototyping toolkit. In: Ubiquitous
    Intelligence and Computing, 2014 IEEE 11th Intl Conf on and IEEE 11th Intl
    Conf on and Autonomic and Trusted Computing, and IEEE 14th Intl Conf on
    Scalable Computing and Communications and Its Associated Workshops (UTC-
    ATC-ScalCom). pp. 1–9 (2014)
 9. Riedel, T., Yordanov, D., Fantana, N., Scholz, M., Decker, C.: A model driven
    internet of things. In: 2010 Seventh International Conference on Networked Sensing
    Systems (INSS). pp. 265–268 (2010)
10. Shancang, L., Da, X.L., Shanshan, Z.: The internet of things: a survey. Information
    Systems Frontiers 17(2), 243–259 (2015), http://dx.doi.org/10.1007/s10796-014-
    9492-7
11. Simon, S., A., F.B., Thomas, V.: Designing an application store for the internet of
    things: Requirements and challenges. In: De Ruyter, B., Kameas, A., Chatzimisios,
    P., Mavrommati, I. (eds.) Ambient Intelligence: 12th European Conference, AmI
    2015, Athens, Greece, November 11-13, 2015, Proceedings, pp. 313–327. Springer
    International Publishing (2015)
12. Tello-Leal, E., Rı́os-Alvarado, A.B., López-Arévalo, I., Chiotti, O., Villarreal, P.D.:
    Metodologı́a basada en el desarrollo dirigido por modelos para la ejecución de
    procesos colaborativos mediante agentes de software. Ediciones UAT - Plaza y
    Valdes, México, 1a. edn. (2016)
13. Tsai, C.W., Lai, C.F., Vasilakos, A.V.: Future internet of things: open issues and
    challenges. Wireless Networks 20(8), 2201–2217 (2014)




                                             10