Git Product home page Git Product logo

monticore / montithings Goto Github PK

View Code? Open in Web Editor NEW
11.0 8.0 6.0 16.44 MB

An ecosystem for model-driven IoT applications

Home Page: https://www.se-rwth.de/research/MontiThings/

License: Other

C++ 28.73% Mathematica 2.76% Shell 0.67% FreeMarker 10.50% Python 1.43% Java 44.07% Dockerfile 0.21% Groovy 0.05% C 5.37% CMake 0.26% Arc 0.03% JavaScript 0.17% Vue 0.63% HCL 0.18% Prolog 4.69% PowerShell 0.24%
internet-of-things iot model-driven-development monticore cpp11 cpp java edge edge-computing

montithings's Introduction

MontiThings Core Project

Ubuntu workflow Windows workflow macOS workflow

© https://github.com/MontiCore/monticore; Contact: Christian Kirchhof

The MontiThings Core repository contains everything related to the common basis of the MontiThings architecture description, a MontiArc-based architecture description language for rapid prototyping of Internet of Things applications.

In MontiArc, architectures are described as component and connector systems in which autonomously acting components perform computations. Communication between components is regulated by connectors between the components’ interfaces, which are stable and build up by typed, directed ports. Components are either atomic or composed of connected subcomponents. Atomic components yield behavior descriptions in the form of embedded time-synchronous port automata, or via integration of handcrafted code. For composed components the behavior emerges from the behavior of their subcomponents.

While MontiArc generates code for simulations, MontiThings generates code to be executed on real devices.

drawing

MontiThings takes models and handwritten code from its users together with a control script. MontiThings uses these elements to generate a C++ project including various scripts, e.g., for building the project, or packaging it in Docker images.

Installation

This section describes some of the many possible ways to use MontiThings. For the purpose of this tutorial, you can choose between the following options:

  1. a native installation on your machine (install instructions)

  2. an installation in a virtual machine of the Microsoft Azure Cloud (install instructions)

  3. using MontiThings' Docker containers to avoid an installation (install instructions)

  4. using one of our supported online IDEs (you will need to sign in with your GitHub account):

    Open in GitHub Codespace Open in Gitpod

Building and Running Your First Application

This sections guides you through building and executing your first application. We will use the example under applications/basic-input-output. It consists of only three components, with the main purpose of showcasing the MontiThings build process. The Example component contains two subcomponents. The Source component produces values, the Sink component consumes these values and displays them on the terminal.

drawing

We support four ways of building an application:

  1. Using the command line (instructions)
  2. Using the CLion IDE (instructions)
  3. Using Docker (instructions)
  4. Using MontiThings' command line tool (instructions)

FAQs

Here you can find answers to the most frequently asked questions building and using MontiThings.

Reference

Please cite MontiThings using its publication in the Journal of Systems and Software (Free Preprint Link).

Jörg Christian Kirchhof, Bernhard Rumpe, David Schmalzing, Andreas Wortmann, MontiThings: Model-Driven Development and Deployment of Reliable IoT Applications, In: W.K. Chan, editor, Journal of Systems and Software (JSS), Volume 183, January 2022, 111087, Elsevier, https://doi.org/10.1016/j.jss.2021.111087.

@article{KRS+22,
  key       = {KRS+22},
  title     = {{MontiThings: Model-driven Development and Deployment of Reliable IoT Applications}},
  author    = {Kirchhof, J\"{o}rg Christian and Rumpe, Bernhard and Schmalzing, David and Wortmann, Andreas},
  editor    = {Chan, Wing-Kwong},
  year      = 2022,
  month     = {January},
  journal   = {{Journal of Systems and Software}},
  publisher = {Elsevier},
  volume    = 183,
  pages     = 111087,
  doi       = {https://doi.org/10.1016/j.jss.2021.111087},
  issn      = {0164-1212},
  url       = {http://www.se-rwth.de/publications/MontiThings-Model-driven-Development-and-Deployment-of-Reliable-IoT-Applications.pdf},
  keywords  = {Internet of Things, Model-driven engineering, Architecture modeling, Code generation, Deployment}
}

License

© https://github.com/MontiCore/monticore

For details on the MontiCore 3-Level License model, visit https://github.com/MontiCore/monticore/blob/dev/00.org/Licenses/LICENSE-MONTICORE-3-LEVEL.md

Further Information

montithings's People

Contributors

ahellwig avatar akleiss avatar alexanderlipatov avatar awortmann avatar butting avatar codeguhl avatar danielvonmirbach avatar flawedbliss avatar fudgy96 avatar heimrobert avatar hoelldobler avatar ironmaya avatar isivasi avatar jeromepfeiffer avatar jfuerste avatar jjkhub avatar julius-gummersbach avatar kaiwelsing avatar kirchhof avatar lazyseals avatar loeschzwerg avatar lucas-bockhorst avatar luigima avatar manuelpuetzer avatar picsel2 avatar rumpe avatar schmalzing avatar stocc avatar tobwoh avatar tretum avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.