​

DRAKON

DRAKON is a visual language for specifications from the Russian space program. DRAKON is used for capturing requirements and building software that controls spacecraft. The rules of DRAKON are optimized to ensure easy understanding by human beings. DRAKON is gaining popularity in other areas beyond software, such as medical textbooks. The purpose of DRAKON is to represent any knowledge that explains how to accomplish a goal. Learn more...

DrakonHub

Create DRAKON flowcharts directly in your browser. No installation required.

See drakonhub.com.

Drakon.Tech

An online IDE for JavaScript based on DRAKON

See drakon.tech.

DRAKON Editor for Desktop

Download DRAKON Editor is a free tool for authoring DRAKON flowcharts. It also supports sequence diagrams, entity-relationship and class diagrams. With DRAKON Editor, you can quickly draw diagrams for: software requirements and specifications;

documenting existing software systems;

business processes;

procedures and rules;

any other information that tells "how to do something". DRAKON Editor runs on Windows, Mac and Linux. The user interface of DRAKON Editor is extremely simple and straightforward. Software developers can build real programs with DRAKON Editor. Source code can be generated in several programming languages, including Java, Processing.org, D, C#, C/C++ (with Qt support), Python, Tcl, Javascript, Lua, Erlang, AutoHotkey and Verilog Learn more...

News

7 September 2018: DRAKON Editor 1.31 is out

State machine methods can now return values!

State machines were added to the Python code generator. Now finite automata are supported for C, Erlang, C#, Python, JavaScript, and Lua.

C# state machines were rewritten and improved. This is a breaking change. The new code generator does not produce backward-compatible code. The new C# machines support both static and dynamic method dispatch.

A small incompatible change for Lua machines. To create a machine, call some_machine() instead of make_some_machine().

Download

1 August 2018: DRAKON Editor 1.30 is out

Removed "this" keyword from state machine methods in JavaScript. No need to have a machine's reference to call its methods as delegates.

Added "state machine" to the available diagram types in the Create diagram dialog.

Download

25 July 2018: An animated online demo of state machines in DRAKON

DRAKON Editor provides support for automata-based programming. You can draw state machines using the DRAKON language. Unlike the traditional state charts, DRAKON diagrams combine a state machine with decision trees. See how to do that in this animated demo.

See the demo

3 December 2017: DRAKON Editor 1.29 is out

Cleaner state machines for Lua and JavaScript.

The encoding of output files is UTF-8.

Language selection from menu: File > Global settings > Language

UTOPIST tasks in JavaScript code generator.

Added a generator for nools rules engine.

DrakonLua and DrakonJs, subsets of Lua and JavaScript with a cleaner and unified syntax.

Fixed bug with insertion of parallel paths.

Added -folder -ext options to drakon_gen.

Download

10 March 2016: DRAKON Editor 1.27 is out

Go language support.

Nice foreach code generation for Java, C#, Python, Tcl, Lua, D.

code generation for Java, C#, Python, Tcl, Lua, D. Better boolean short-circuit detection.

C/C++ code generator does not generate redundant return statements anymore.

statements anymore. Erlang generator does not emit throw when no default clause is present in a select statement.

when no default clause is present in a statement. JavaScript code generator: different foreach for objects and arrays.

for objects and arrays. Stricter handling of select keyword inside select icon.

Download

7 November 2015: DRAKON Editor for Web

DRAKON Editor Web is now available.

http://drakonhub.com

11 June 2015: A talk on DRAKON-Erlang at Erlang User Conference in Stockholm

The slides: drakon-erlang-slides.zip

The diagrams and source code: drakon-erlang-src.zip

1 June 2015: DRAKON Editor 1.26 is out

Massive improvements to the Erlang code generator: receive statement, select/case macroicon produces "case X of" statement, visual supervision tree.

statement, macroicon produces "case X of" statement, visual supervision tree. A bug fixed in the JavaScript code generator.

Added a warning before export to PNG.

Download

29 December 2014: DRAKON, Actors and Message Passing

The goal is to see how practical DRAKON is in the context of actors, state machines and message passing.

What has been done:

A simple actor framework has been developed in C#. The C# code generator for DRAKON Editor has been extended to emit code for actors. Two sample applications were built using the runtime and the code generator. The sample applications show off concurrency based on actors and message passing.

Each actor in the applications is a DRAKON diagram. Read more...

Get the source code on GitHub

18 December 2014: DRAKON Editor 1.25 is out

Syntax highlighting !

! Improvements to the C# code generator for state machines.

Download

29 November 2014: DRAKON Editor 1.24 is out

Setting zoom for all diagrams simultaneously.

Bug fixes, including a problem with Mac shortcuts, AutoHotkey code generator etc.

Download

21 September 2014: DRAKON Editor 1.23 is out

What's new:

Code generation for the AutoHotkey language.

Code generation for the Verilog language.

Code generation for state machines (finite automata) in Lua and JavaScript.

Improvements in the JavaScript generator: better iteration, support for method functions and "closure" namespaces.

State machines and ERIL support in the code generator for the C language.

More flexibility added to "Select-Case" icons. It is now possible to put any condition in a "Case" icon, not just a value.

Other small improvements in code generation for several languages.

Bug fixes.

Switch to Tcl/Tk 8.6. It's a major change in system requirements. DRAKON Editor now needs Tcl/Tk 8.6 to run. Tcl/Tk 8.5 is not supported any more.

Please see the examples in the examples/automaton folder inside DRAKON Editor's zip file. There you can find small programs based on finite automata represented in DRAKON.

Download

8 February 2014. Tutorial: how to add a language to DRAKON Editor

This tutorial explains how to add an arbitrary language to DRAKON Editor.

Code generation in DRAKON Editor is implemented with plugins. Creating a code generator for yet another programming languages can be done by adding a plugin. The tutorial takes the D language as an example. Read more...

As a bonus, DRAKON Editor now supports code generation for the D language!

Download

2 February 2014: DRAKON Editor 1.22 is out

A bug fix related to inline comment icons in Erlang diagrams.

The content of the "if" icon in Erlang is not limited to the guard syntax any more (patch by Maas-Maarten Zeeman).

State machine (finite automata) support for Erlang code generation. Read more and see the examples/automaton/Erlang folder in the distributive.

Download

25 January 2014: An article on state machines

Starting from version 1.21, DRAKON Editor supports code generation from DRAKON state machine diagrams. Currently, only the C# language is supported.

State machine is a powerful abstraction with a wide area of use. A state machine can be defined as an object that can alternate between different types of behaviour. Read more...

20 January 2014: An article on the ERIL language

ERIL is a visual language for representing the data structure of computer programs. While DRAKON's purpose is to show the physiology of software, ERIL concentrates on its anatomy.

Currently, DRAKON Editor supports code generation from ERIL diagrams to C# and Tcl.

Read more...

8 January 2014: DRAKON Editor 1.21 is out

State machine (finite automata) support for C# code generation.

ERIL language support for C# and Tcl code generation. (Code generation from entity-relationship and inheritance diagrams.) See the examples/structure folder in the distributive.

Hyperlinks in text. (Available through context meny, "Links".)

Minor bug fixes.

Download

16 July 2013: DRAKON Editor 1.20 is out

Bug fixes.

Call hierarchy.

Added support for Processing.org programming language.

Go to branch within a silhouette diagram.

The color of icons can be changed.

Download

15 June 2013: DRAKON Editor 1.19 is out

Automatic width for "If" icons has been reduced. Icons take less diagram space.

Modal dialogs improved on Linux.

12 June 2013: DRAKON Tutorial Part 3

DRAKON Tutorial, Part 3: Simple recipes of beauty

10 June 2013: DRAKON Tutorial Part 2

DRAKON Tutorial, Part 2: Interaction with the outside world, parallel algorithms and real time

06 June 2013: DRAKON Tutorial Part 1

DRAKON Tutorial, Part 1: How to draw DRAKON flowcharts

20 May 2013: DRAKON Editor 1.18 is out

DRAKON Editor now supports the full set of DRAKON icons.

Uniform spacing rules in the advanced editing mode (with Shift pressed).

editing mode (with Shift pressed). Entity-Relationship diagram type added.

Canvas can be scrolled with mouse drag when both mouse buttons are pressed.

Added more shortcuts: F2 edits primary text, F3 edits secondary text.

01 May 2013: DRAKON Editor 1.17 is out

Code generation: warnings removed for C# and Lua compilers.

User can now define custome text instead of "YES", "NO" and "End".

Color themes can be changed from Global settings.

Icon widths get adjusted automatically for the whole skewer after the text is changed for a single icon.

Note comments got a better visual style.

Loop end icons can have text.

24 February 2013: DRAKON Editor 1.15 is out

Fixed a bug in the code generator.

Some metaprogramming features for the C language.

11 August 2012: DRAKON Editor 1.14 is out

Fixed Lua source code generator.

Double mouse wheel click invokes View / See All.

04 August 2012: DRAKON Editor 1.13 is out

Code generation for Lua language.

01 August 2012: DRAKON Editor 1.12 is out

Open/Save file dialogs for .drn files and for export remember the last directory.

Inserting "if", "branch", "select" and "loop" items made easier.

Ctrl-X, Ctrl-C, Ctrl-V, Ctrl-A shortcuts fixed for non-English keyboard layouts.

Added menu items: Edit/Tidy up, Edit/Tidy up all diagrams. The shortcut for Tidy up is Ctrl-T.

Colors config in scripts/colors.tcl.

02 May 2012: DRAKON Editor 1.11 is out

Text in Action and Insertion icons is now left-aligned.

and icons is now left-aligned. Diagrams now look neat and tidy. The Edit/Adjust icon sizes menu command sets equal width to the icons on the same vertical.

menu command sets equal width to the icons on the same vertical. Fixed the bug about extracting class names in C++.

Qt support: now you can explicitly mark the diagram as a signal or a slot (see QtC++ folder).

08 April 2012: DRAKON Editor 1.10 is out

A few minor usability improvements.

Javascript language support.

Erlang language support.

05 March 2012: DRAKON Editor 1.9 is out

Fast insertion of items using keyboard shortcuts.

The list of previously opened files.

Custom fonts.

Java language support.

C# language support.

Code generation for Python and Tcl without goto simulation.

01 January 2012: DRAKON Editor 1.8 is out

The performance of the Smart mode has been significantly improved.

31 December 2011: DRAKON Editor 1.7 is out

"Smart" editing mode.

To activate the Smart mode, hold SHIFT while dragging items around on the canvas.

When you drag an item in the Smart mode, all connected lines and items also move consistently. The diagram structure is preserved.

12 December 2011: DRAKON Editor 1.6 is out

Fixed a code generation bug (occuring with Insertion icons).

Resolved Ubuntu 11.x incompatibility issues.

11 December 2011: DRAKON Editor 1.5 is out

More improvements in the interface:

If you grab a line by its end and drag, all the connected items will also move.



The flat list of diagrams has been replaced with a tree.



"Find all references", "Go to definition", "Jump to diagram", "Jump to item" etc.

Code generation for:

Plain C



C++



Python 2.x and 3.x



Tcl

01 November 2011: DRAKON Editor 1.4 is out

Verification according to the rules of the DRAKON language (DRAKON-1).

Creation of silhouette diagrams made easier.

Address icons can be directed towards a branch using the context menu.

Address icons update their text when the target branch gets renamed.

02 October 2011: DRAKON Editor 1.3 is out

A massive amount of usability improvements.

Export to PNG.

Export to PDF with colors.

28 September 2011: DRAKON Editor 1.2 is out

Zoom.

Search.

Colored icons.

Many user interface improvements.

11 September 2011: DRAKON Editor 1.1 is out

Contact: drakon.editor@gmail.com