Git Product home page Git Product logo

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.

DRYML's Projects

dryml icon dryml

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

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.