Develop more efficiently, increase quality, and streamline your processes end-to-end

Metho­dology con­sulting and tool develop­ment

As systems become larger, more complex and are developed by increasingly multidisciplinary teams with shortening time-to-market, it becomes more and more important to focus on how you develop your system.

We know the answers to the questions:

  • Which aspects can you automate?
  • How do you detect problems and errors early in the development?
  • How do you efficiently integrate all your stakeholders without drowning in documents and meetings?

Effective tools are an essential ingredient to tackling this challenge.

Tailor-made tools provide various benefits

  • Higher productivity through automation

    Repetitive parts of the code, as well those that can be derived from models, can be generated by generators that respect your architecture and coding guidelines.

  • Increased quality through analyses

    Models contain more domain semantics than code and thus make meaningful analyses much simpler. More errors are detected earlier.

  • Streamlined process by integrating stakeholders

    Friendly notations such as formulas, tables and diagrams allow non-programmers to contribute directly, avoiding the need for documents.

  • Longevity from separation of concerns

    Keep the core knowledge of your domain separate from its implementation in source code, so it can be reused more easily.

What we do

Our main activity is the development of tools for software developers, system engineers and business analysts to capture and analyze information and automatically create a range of derived artifacts. Models are the backbone of these tools. They ensure that the captured information is well structured and conforms to a formally defined schema. These models are expressed with a language tailored to the domain to maximize expressiveness and analyzability.

Language Engineering refers to the activity of analyzing a domain, understanding its core abstractions and then implementing them into a language. We use language workbenches to speed up the language development process. The team is at the forefront of language engineering and its use in industry. Languages can use graphical, tabular, symbolic, or textual notations, depending on what the target audience expects.

Services

  • Consulting – we help you understand your domain and processes
  • Coaching – we help your team build skills in language engineering and the respective tools
  • Tool development – we develop complete solutions for your company

Technologies

We mostly use the Jetbrains MPS and Xtext ecosystems. In both of these we have world-leading experts on our team.

We also contribute to the development of the platforms themselves, for example, via the MPS Extensions.

Selected clients and projects

  • For Voluntis, we have developed a set of domain specific languages (DSLs) for developing heathcare algorithms for digital therapeutics apps; check out this paper "Using language workbenches and domain specific languages for safety-critical software development".

    Voluntis Logo
  • We are working with DATEV to develop a DSL for tax calculations. We are also working on a DSL for payroll applications; read this paper preprint for details.
    DATEV Logo
  • We help Workday with the development of their internal programming language and associated tooling. This video provides and overview, as do these slides.
    Workday Logo
  • For Zürich we have formalized a Word-based development process into a DSL with downstream code generation to C.
    Zürich Logo
  • We support SIGI in the development of a DSL for administrative web applications.
    Sigi Logo

Your next step.

You now know what we do and how we can support you in developing your systems.

Now you are invited to contact us to discuss concrete solutions.

Request a call-back now Send us your message

Your contact for methods and tools: Dr. Klaus Birken, itemis AG

Further activities and resources

Commercial products and open source projects

  • Security Analyst is a commercial product for analysing security threads in technical systems.
  • mbeddr (Homepage, GitHub) is an extensible version of C implemented in MPS, plus a set of 30+ extensions of C for embedded software development.
  • IETS3 is a set of languages for systems engineering developed as part of a research project.
  • KernelF (Github as part of IETS3, paper) is a functional language we use as the basis for many of the DSLs we develop.
  • With Modelix we’re developing a cloud-based language workbench.

Active research projects

In all of our active projects, we use MPS in order to investigate innovative approaches. SAFE4I and SecForCARS are both funded by the German BMBF.
  • SAFE4I: Accelerate the development of functionally safe software through tool-supported automation.
  • SecForCARs: Security for connected, autonomous vehicles.
See also the list of all research projects at itemis.

Selected publications and talks

  • "Build your own language - why and how" (Video). Markus Völter, GOTO Amsterdam 2018.
  • "Using C language extensions for developing embedded software - a case study" (Paper). Voelter, van Deursen, Kolb, Eberle. OOPSLA 2015.
  • "Using language workbenches and domain-specific languages for safety-critical software development" (Paper). Voelter, Kolb, Birken, Tomassetti, Alff, Wiart, Wortmann, Nordmann. SOSYM Journal 2018.
  • "Automated testing of DSL implementations - experiences from building mbeddr" (Paper). Ratiu, Völter, Pavletic. 2017
  • "Fusing modeling and programming into language-oriented programming" (Paper). Voelter. 2018.