Skip to content
/ dryml Public

DRYML (an acronym for “DRY Modelling Language”) is both a human- and machine-readable software modelling language

License

Notifications You must be signed in to change notification settings

dryml/dryml

Repository files navigation

DRYML -- compiled software modelling language, for free

TL;DR

Imagine like now you can 'compile' and 'test' your software specification before you actually code it.

DRYML is a software modelling language, e.g. like PlantUML, but way more powerful.

Here how it works:

  1. You describe process(es) with simple statements (see examples below)
  2. DRYML 'compiles' the process(es) and stores it in JSON format (public schema):
    1. You can version and compare processes
    2. You can link several processes together, and update shared objects at a time
  3. DRYML validates all the processes defined in a project for
    1. Data consistency
    2. States transitions
    3. Parameters data types
  4. DRYML automatically generates UML diagrams of all the common types for you
    1. Use Case
    2. Activity Flow
    3. Sequence Flow
    4. Class
    5. State Machine

About DRYML

DRYML (an acronym for “DRY Modelling Language”) is both a human- and machine-readable software modelling language.

DRY (an acronym for “Don’t repeat yourself”) is a principle of software development aimed at reducing repetition of software patterns, replacing it with abstractions or using data normalization to avoid redundancy. [Wikipedia]

Here how it looks like:

james->mary: love
    in:
        flowers [fresh]
            colour = red
        chocolate [solid]
            type = milk
    out:
        kisses
            sweet = true
        hugs
            strong = true

For the basic information about the DRYML, read the article "Introducing DRYML"

Examples

Main Principles and Reasoning

The core (set of) principles were used during the development of the DRYML

  1. Software Models Data shall be linked/ integrated -- in order to solve the following tasks
    1. Ensure Software Model Data Consistency - when you create several diagrams in PlantUML or Visio, they are completely detached; so if the same object described in two places needs to be changed, you need to do this twice, and no data consistency is validated
    2. Manage Software Model Knowledge by querying it, finding relationships and dependencies
    3. Compile Software Model - find out about Model Discrepancies before implementing it
    4. Test Software Model - find Model Defects before implementing it
    5. Reduce Time and Costs of turning Software Model into the working Solution - provide a baseline for code autogeneration
  2. Software Models Data shall conform to the AIFORSE Information Framework Principles
  3. DRYML shall be just one of the possible implementations -- the external standard, defined in the AIFORSE Integration Framework, Process JSON Schema, creates the perfect condition for development and competition of similar tools
  4. Eased adoption -- integrate with the notations and tools engineers are used to (UML, PlantUML, IntelliJ IDEA), in order to, first, make the adoption process as smooth as possible, and second, benefit and provide additional value to users from such integrations

Documentation

The documentation structure follows the recommendations, defined in the "AIFORSE Information Framework", which are explained in the article "Software Engineering Artifacts — Let’s agree on Terminology".

Contribution Guide

Read the Contribution Guide.

License

DRYML is licensed under the MIT License.