Power of Models - Freepik vectorjuice

Unclear requirements are still the top reason why IT projects fail.

Thus, even if the implementation and verification of requirements are optimized, using techniques such as Mutation Testing [1], Metamorphic Testing [2] or optimized test case definitions [3] that have already been discussed in previous articles on this blog, the following challenges lead to inefficiencies in or even discontinuance of IT projects. Usually, this challenge is due to the following three barriers of creating requirements:

  1. Natural language is usually too imprecise to be automatically mapped to software code
  2. Technical language is usually too complex for stakeholders to understand
  3. Changes in requirements lead to inconsistencies between different requirements

To overcome these barriers, models are used more and more in practice to provide a bridge between natural and technical language. The formal description of requirements used to create models also helps finding inconsistencies and leverage automation.

In this article, we give a basic introduction to what models are, the power of models in every software project, and how this power can be leveraged in practice by integrating models with software code.

What is a model?

In its very basic form, a model is “a simplification of reality”. In software engineering, models are usually used to formally describe particular aspects of a system in a machine-readable manner.

Such models are usually created via modelling tools, such as Genmymodel [4] or Enterprise Architect [5]. The visual interface of such tools allow the user-friendly definition of common concepts. Machine-readable models are then automatically derived based on these visually created concepts. The formalization of models, using modelling languages such as UML [6] or SysML [7], allows a uniformed interpretation of models and increased efficiency during creation, by reusing modelling concepts whose syntax and semantics are predefined by the corresponding language.

The power of models

The visual interface of modelling tools, combined with the formalisms required by modelling languages, allow to tackle common bridges of defining requirements in the following way:

  1. Modelled aspects can be easily and correctly transferred to code by developers.
  2. They can be easily understood and discussed, also by non-techs, using visual representations
  3. Inconsistencies that arise over time (e.g. due to changing requirements) can be easily and automatically detected by regularly running consistency rules on created models (such rules are usually predefined for various modelling languages, and supported by most modern modelling tools).

However, the real power of models is unleashed when persisting them in a machine-readable format, such as XMI (a standard for xml-based files containing models), and reusing them to leverage automation across the whole software development cycle. Some advantages and application scenarios are highlighted in the next section of this article.

Integration of models and software code

As mentioned previously, most of the power (and benefit) of models lies in the automation potential that can be achieved when integrating the requirements that are formalized in models in a machine-readable way with code that is used to implement particular software.

There are several approaches to achieve this, using different levels of compability and potential for automation:

  • Independent evolution of models and code: By developing and maintaining models in parallel to software code, automation can be achieved by e.g. creating code from model representations, or deriving models from code to automatically visualize complex behaviour or execution traces. However, the consistency between models and code after adaptations of either a model or a code fragment must be ensured in order to have a valid mapping between models and code [8].
  • Low-Code software development: In so-called low-code development platforms, such as GenerativeObjects [9] or Domino Volt [10], models are derived from visually defined workflows and used to create whole applications from them. No need to worry about the correct implementation of any of these aspects. The creation of applications is enabled by mapping visual elements to existing code blocks that are defined using General-Purpose Languages [11], or Domain-Specific Languages [12] that are explicitly developed for a particular low-code use case.
  • No-Code software development: companies and tools, such as salesforce [13], scratch [16], appsheet [14], or bubble [15] promote the development of different kinds of software applications without the need of a single line of code (so-called no-code software development). The main advantage is usually listed as allowing anyone to create powerful software. Although the boundaries between low-code and no-code are a bit blurred, no-code is usually associated with the development of general-purpose applications with a large focus on user interfaces, whereas low-code is associated with automation of traditional development processes, while still providing a large degree of customization for developers [17].
  • Digital Twins (DTs): The model-based creation and definition of so-called Digital Twins [18] allows to even go one step further than no-code, by (i) backpassing information from the running system to the development cycle, as well as (ii) sending models, e.g. from simulation or machine learning experiments, to the running software system. This usage opens the stage for a seemingly unlimited area of applications.
written by Daniel Lehner


[1] “Define once, reuse always – the power of mutants in Software Testing”, Article, available via https://www.devmate.software/define-once-reuse-always/ (last accessed 17. September 2020)

[2] “Metamorphic Testing – What matters when defining test cases?”, Article, available via https://www.devmate.software/metamorphic-testing/ (last accessed 17. September 2020)

[3] “Towards a new generation of test types”, Article, available via https://www.devmate.software/towards-a-new-generation-of-test-types/ (last accessed 17. September 2020) 

[4] GenMyModel, online tool, available via https://www.genmymodel.com/ (last accessed 17. September 2020) 

[5] Enterprise Architect, software tool, available via https://www.sparxsystems.de/uml/ea-price/ (last accessed 17. September 2020)

[6] Unified Modelling Language, modelling language, further information available via https://www.uml.org/ (last accessed 17. September 2020)

[7] Systems Modelling Language, modelling language, further information available via https://sysml.org/ (last accessed 17. September 2020)

[8] Model-based detection of runtime inconsistencies, master thesis, available via https://catalogplus.tuwien.at/primo-explore/fulldisplay?docid=UTW_alma71106614990003336&context=L&vid=UTW&lang=de_DE&search_scope=UTW&adaptor=Local%20Search%20Engine&tab=default_tab&query=any,contains,Daniel%20Lehner&mode=basic (last accessed 17. September 2020) 

[9] Generative Objects, software tool, available via https://www.generativeobjects.com/ (last accessed 17. September 2020) 

[10] Domino Volt, software tool, available via https://hcltechsw.com/dominovolt (last accessed 17. September 2020)

[11] Description of General-Purpose Programming/Languages, available via https://www.digitaltechnologieshub.edu.au/teachers/topics/general-purpose-programming-coding#:~:text=Examples%20of%20general%2Dpurpose%20programming,problems%20or%20for%20pedagogical%20reasons (last accessed 17. September 2020)

[12] Description of Domain-Specific Languages, available via https://opensource.com/article/20/2/domain-specific-languages (last accessed 17. September 2020) 

[13] Salesforce, software tool, available via https://developer.salesforce.com/platform/force.com (last accessed 17. September 2020)

[14] Appsheet, software tool, description + tool available via https://www.appsheet.com/create/how-to-create-an-app (last accessed 17. September 2020) 

[15] Bubble, software tool, description + tool available via https://bubble.io/how-to-build (last accessed 17. September 2020) 

[16] Scratch, software tool, available via https://scratch.mit.edu/ (last accessed 17. September 2020)

[17] “Low-Code vs. No-Code: What’s the Real Difference“, article, available via https://www.outsystems.com/blog/posts/low-code-vs-no-code (last accessed 17. September 2020)

[18] “Towards a Reference Architecture for Leveraging Model Repositories for Digital Twins”, scientific article, available via https://www.researchgate.net/publication/344218462_Towards_a_Reference_Architecture_for_Leveraging_Model_Repositories_for_Digital_Twins (last accessed 17. September 2020)


Technology vector created by vectorjuice – www.freepik.com

We use cookies to give you the best online experience. By agreeing you accept the use of cookies in accordance with our cookie policy.

Privacy Settings saved!
Privacy Settings

When you visit any web site, it may store or retrieve information on your browser, mostly in the form of cookies. Control your personal Cookie Services here.

GetResponse, Google Analytics

We use LinkedIn Insight for marketing purposes. You can disable these cookies.

We use Google Analytics for marketing purposes. You can disable these cookies.
  • __utmz
  • __utma
  • _ga
  • _gat

We use GetResponse for marketing purposes. This service cannot be disabled, otherwise the website functions will be limited.

Decline all Services
Accept all Services
Get Free Access Now to
9 eBooks!
All about Automated Software Testing
Proven experts
Learn to save up to 75% of your test efforts
Get Free Access Now!
Get Access Now! & Save 50%
Personal Trainer FREE Nutrition Custom Workout App
Get Access Now!
eBook Download
Enter your details to get your free ebook!
All about Automated Software Testing
Download Free Ebook
Lorem ipsum dolor sit amet, consectetur adipiscing