DRAKON

DRAKON is an algorithmic visual programming and modeling language developed within the Buran space project following ergonomic design principles. The language provides a uniform way to represent flowcharts of any complexity that are easy to read and understand.

DRAKON
Paradigmvisual
First appeared1996
Typing disciplinedefined by the second language that is part of the selected hybrid language
Websitedrakon-editor.sourceforge.net
Major implementations
GRAFIT-FLOKS (1996), IS Drakon (2008), DRAKON Editor (2011), DrakonHub (2018), Drakon.Tech (2019)
Influenced by
PROL2, DIPOL, LAKS
Influenced
QReal DSM platform[1]
DRAKON algorithm execution is animated by highlighting diagram elements in the running order.
Outer part of quicksort algorithm in DRAKON-C
A DRAKON diagram describing a transportation of a cryonics patient

The DRAKON Editor, which was released in September 2011, is an implementation of the language available in the public domain. It can be used for creating documentation, or for creating visual programs that can be converted to source code in other languages.

Unlike UML's philosophy, DRAKON's language philosophy is based on being augmented if needed, by using a hybrid language, which can be illustrated as "incrustating code snippets from text language used into shape DRAKON requires". This way, DRAKON always remains a simple visual language that can be used as an augmentation for a programmer who is interested in making their own project code easier to support or other long-term needs for example improving the ergonomics of the coding process or to making code easier to review and understand.

The name DRAKON is the Russian acronym for "Дружелюбный Русский Алгоритмический [язык], Который Обеспечивает Наглядность", which translates to "Friendly Russian algorithmic [language] that illustrates (or provides clarity)". The word "наглядность" (pronounced approximately as "naa-glya-dno-st-th") refers to a concept or idea being easy to imagine and understand, and may be translated as "clarity".

The DRAKON language can be used both as a modelling/"markup" language (which is considered a standalone "pure DRAKON" program) and as a programming language (as part of a hybrid language).

Integration of a stricter, "academic", variant of a markup language into programming, such as provided by DRAKON, adds syntactic sugar allowing users of different programming languages to comprehend each other's contributions to the overall project and even provide commentary if needed.

History

The development of DRAKON started in 1986 to address the emerging risk of misunderstandings - and subsequent errors - between users of different programming languages in the Russian space program. Its development was directed by Vladimir Parondzhanov with the participation of the Russian Federal Space Agency (Academician Pilyugin Center, Moscow) and Russian Academy of Sciences (Keldysh Institute of Applied Mathematics).

The language was constructed by formalization, ergonomization and nonclassical structurization of flowcharts described in the ISO 5807-85 standard and Russian standard «Гост 19.701-90».[2][3]

The goal was to replace specialized languages used in the Buran project with one universal programming language. Namely PROL2 (ПРОЛ2), used for developing inflight systems software for the computer system Biser-4 (Бисер-4),[4] DIPOL (ДИПОЛЬ), used for developing software for the ground maintenance computer systems)[4] and LAKS (ЛАКС), used for modelling.

The work was finished in 1996 (3 years after the Buran project was officially closed), when an automated CASE programming system called "Grafit-Floks" was developed.[5]

This CASE is used since 1996 in many major space programs: an international project Sea Launch, Russian orbit insertion upper stage Fregat (Russian: Фрегат, frigate),[6] upgraded heavy launch vehicle (carrier rocket) Proton-M, etc. The exact role DRAKON played in these projects however can not be determined. The actual real-world experience of building systems with DRAKON remains extremely scarce as only a few very short snippets of code are publicly available.

Family of DRAKON-languages (hybrid languages)

Icons of DRAKON language
Macroicons of DRAKON language.

DRAKON (Russian: ДРАКОН; dragon in English) is designed with humanistic ideas in mind, as usage of three different languages for the same project was a source of human factor-related hardships such risks of having a mutual misunderstanding.

DRAKON is used not as a single stand-alone language but as a family of hybrid languages, such as DRAKON-C, DRAKON-ASM, DRAKON-Java, etc. All hybrid languages of the DRAKON-family have the uniform graphical syntax, based on flowcharts. The standard graphical syntax provides similarity of drakon-charts for different hybrid languages. The text language used uses its own syntax.

Strict distinction of the graphical and textual syntax along with rich graphics improves flexibility and variety of expressive means of the language. The unification of the rules of the graphical syntax in the hybrid languages secures their conceptual unity.

The basis of the graphical syntax is a graphical alphabet. Graphical elements (graphical letters) of the DRAKON alphabet are called icons (not symbols). There are 27 icons in the DRAKON graphical alphabet.

DRAKON has not only icons, but also macroicons. Macroicons are the graphical words of the DRAKON language. Just as words are made up of letters, macroiсons (graphical words) consist of the icons (graphical letters). There are 21 macroicons in the DRAKON language.

Icons and macroiсons are the building blocks for constructing drakon-charts.

The important parts of maсroiсons are valence points (in the illustration to the right, they are depicted as little black circles). Into these points, icons or microicons can be successively entered and arranged by drakon-editor in neat, orderly vertical rows.

Design

DRAKON was created as an easy to learn visual language to aid the comprehension of computer programs written in different programming languages for illustrative, planning and strategy purposes.

DRAKON uses drakon-chart, which is a formalization of traditional flowcharts to depict the overall structure of the program. Code snippets of a programming language are added to the DRAKON icons. The combination of visual elements with code helps with the creation and maintenance of readable flowcharts alongside the development of the program in question.

DRAKON rules for creating diagrams are cognitively optimized for easy comprehension, making it a tool for intelligence augmentation.[2][7][8][9]

Drakon-charts of big multi-purpose programs can be complex and hard to comprehend. A set of smaller programs, that together serve the same purpose, are often easier to understand when depicted as drakon-charts. A similar problem exists in maintaining code of large programs. This problem is occasionally referred to as "rule of 30 [lines of code]" among programmers.

Other Purposes and Uses

While DRAKON is primarily designed as a tool for comprehending computer programs, drakon-charts can also be used to illustrate processes in fields not related to computing.

In the DRAKON editor pictures can be added to the DRAKON icons. This ability is used in some fields to easily create "flowchart like" infographics. In Russia the DRAKON editor is known for being used in the medical field as a tool for making 'instructional' charts for patients or medical personnel. Example of medical program for reducing body fat (not translated).

Visual syntax

The full-text article containing description of the visual syntax of the DRAKON language in English, 12 pages, free to download, pdf.[10]

Manual

A full description of the DRAKON language is provided in a Russian book. The book is 520 pages long and free to download.[9]

Examples

Branching

In DRAKON, the less desirable path goes to the right.

The algorithm of going out of one's apartment:

  • Put on clothes.
  • Take umbrella if it's raining.
  • Leave the house.

Check-do (while) loop

First, check the exit condition. Then perform the action.

The workout algorithm:

  • Warm up.
  • While you are not tired, lift the weight and rest.
  • Repeat.

Do-check (do-while) loop

First, perform the action. Then check the exit condition

Another training algorithm:

  • Warm up.
  • Lift the weight.
  • Rest.
  • If tired, quit.
  • Repeat.

Examples of programming in DRAKON language

These examples are real code from an implementation of the Tetris game. The examples are in DRAKON-JavaScript language. The icons (visual primitives) of the DRAKON language define the overall structure of the algorithms. The code snippets inside the icons (primitives) are in JavaScript.

advanceStep

The advanceStep function implements the core logic of the game. advanceStep is a state machine represented as a decision tree.[11] The game engine calls advanceStep periodically. This state machine has three states "playing", "dropping", and "finished". The game takes different actions depending on the current state. For example, in the "playing" state, when there is a falling projectile and the projectile can move down, it is moved down one step.

With DRAKON, the reader of the algorithm can visually trace all possible paths in the decision tree.

The core logic of the Tetris game in DRAKON-JavaScript language

JavaScript code generated from the DRAKON-chart:

function advanceStep() {
    var _sw_8;
    _sw_8 = module.state;
    if (_sw_8 === "playing") {
        if (module.projectile) {
            if (canMoveDown()) {
                moveDown()
                return getStepPeriod()
            } else {
                freezeProjectile()
                return noProjectile()
            }
        } else {
            return noProjectile()
        }
    } else {
        if (_sw_8 === "dropping") {
            if (canMoveDown()) {
                moveDown()
                return DropPeriod
            } else {
                freezeProjectile()
                module.state = "playing"
                return getStepPeriod()
            }
        } else {
            if (_sw_8 === "finished") {
            } else {
                throw new Error("Unexpected Choice value: " + _sw_8);
            }
            return undefined
        }
    }
}

noProjectile

The noProjectile function handles the specific situation when there is no falling projectile. If there is a filled row, that row is removed from the grid. Otherwise, the game tries to insert a new projectile. If there is no space for the projectile, the game is lost.

The noProjectile function for Tetris game in DRAKON-JavaScript language

JavaScript code generated from the DRAKON-chart:

function noProjectile() {
    if (clearRow()) {
        return getStepPeriod()
    } else {
        createProjectile()
        if (isGameLost()) {
            gameOver()
            module.state = "finished"
            return undefined
        } else {
            return getStepPeriod()
        }
    }
}

clearRow

The clearRow function scans all rows bottom-up until it hits a row with no gaps. In such case the row is removed from the grid, the score is increased, and the game's tempo goes up.

The algorithm that removes a line from Tetris grid in DRAKON-JavaScript language

JavaScript code generated from the DRAKON-chart:

function clearRow() {
    var row, rows;
    rows = module.glass.rows
    row = rows.length - 1;
    while (true) {
        if (row >= 0) {
            if (rowHasHoles(row)) {
                row--;
            } else {
                deleteRow(row)
                increaseScore()
                increaseSpeed()
                return true 
            }
        } else {
            module.addedScore = 0
            return false 
        }
    }
}

Automata-based programming in DRAKON

A DRAKON chart of the silhouette type is a finite automaton. The branches of a silhouette can be interpreted as the states of the automaton. Therefore, one can implement automata-based programming with the DRAKON language.

A silhouette DRAKON chart shows all parts of the automaton on the same visual scene: states, types of accepted signals, signal handlers, and transitions. Furthermore, all elements that pertain to a certain state are grouped in the same area on the diagram. This makes analysis and editing of the automaton easier and reduces the number of errors...

The DRAKON language provides a convention that diagrams should follow. This convention brings order to automata and gives them a unified structure...

The fundamental difference between DRAKON charts and other visual notations for automata-based programming is that DRAKON combines the automaton-style choice of action with decision trees. Decision trees make automata more flexible and understandable for a wide range of developers...[12]

DRAKON algorithm execution animation

The picture below illustrated the execution of the silhouette DRAKON algorithm. The algorithm execution is animated by highlighting diagram elements in the running order.

The 'Fishing' silhouette consists of four trees:

  • Preparing for fishing.
  • Waiting for a bite.
  • Fishing work.
  • Way back.

The main path of each tree is shown by highlighting thick vertical line which is called a skewer. Note that each path from the "Fishing" Headline icon (start point) to the End icon (stop point) goes smoothly and continuously without any breaks or interruptions. This animation shows that any human can slide his finger along any route from the Headline icon to the End one without lifting his finger (or pencil) from the paper or screen.

It means that silhouette control flow graph always has a path from the Headline icon to each vertex (node) of the control flow graph. Consequently, a silhouette can't have unreachable code in any conditions.

DRAKON algorithm execution is animated by highlighting diagram elements in the running order.

Examples of DRAKON-programs and equivalent usual program codes

This section is unfinished (to be done later)

DRAKON Editor

DRAKON Editor is software for making DRAKON flowcharts.[13] It is used for two purposes: documenting algorithms and programming. DRAKON Editor is written in Tcl/Tk and runs on Windows, OS X and Linux. As a documentation tool, DRAKON Editor helps create diagrams that capture algorithmic knowledge. Such knowledge covers both behaviour of computer systems and procedures not directly related to computers, for example medical algorithms and business processes. DRAKON Editor can generate source code from diagrams. This way, DRAKON Editor can be used as an IDE.

Features

The process of editing in DRAKON Editor is based on free drawing. The user inserts and manipulates primitive shapes such as rectangles, vertical and horizontal lines. The user experience is similar to that of business drawing tools. DRAKON Editor does not prevent the user from violating the rules of DRAKON language. It is possible, however, to perform an automated check of the visual syntax at any time.

DRAKON Editor has an alternative editing algorithm, called "smart mode".[14] When in the smart mode, the user can change the visual appearance of the diagram without breaking its topology. In other words, the smart mode allows to fine-tune the layout of the diagram while keeping the underlying algorithm intact.

DRAKON Editor supports the following programming languages:

For some programming languages, DRAKON Editor generates source code for ERIL data modeling language.[15]

DRAKON Editor can also generate source code for finite state machines represented with the silhouette construct of DRAKON language.

For Erlang, DRAKON Editor generates boilerplate code from a visual representation of a supervision tree.

Thanks to the nature of the free drawing principle, DRAKON Editor can produce other types of diagrams including class diagrams and sequence diagrams.

DRAKON in the German Aerospace Center

DRAKON language is used in the German Aerospace Center for implementation of some critical functions dictated by the safety regulations of the flight tests, where automation is important because of maximum distance to the ground station and the process needs quick automatic execution.

The DRAKON Editor software was using to graphically program flowcharts which were specially checked. C-code was generated from the drakon-charts, for instance, for DRAKON representation of launch detection code.[16]

DRAKON language in medical care

The goal of clinical algorithms is to do the right clinical decisions while standardizing and equalizing performance of practitioners. Besides, it improves the quality of health care and minimizes the risk of errors. DRAKON algorithms are ergonomical ones and help to prevent mistakes and ambiguities. DRAKON algorithmic language uniforms medical algorithms and allows complete clinical tasks successfully.

Official Russian website and webforum of DRAKON language

Russian DRAKON website
Russian DRAKON webforum

To read Russian text in English push right button of the mouse and choose 'Translate to English'.

See also

Notes

  1. Terekhov, Andrey; Bryksin, Timofey; Litvinov, Yurii. How to make visual modeling more attractive to software developers / 11th LASER Summer School on Software Engineering. Leading-Edge Software Engineering. September 7-13, 2014 - Elba Island, Italy
  2. Окулова Л. П. Проектирование образовательного процесса в соответствии с требованиями педагогической эргономики // Вестник. Наука и практика. Материалы конференции «Инновации и научные исследования, а также их применение на практике \ Innowacje i badania naukowe, jak rowniez ich zastosowanie w praktyce. — 29.05.2012- 31.05.2012. Варшава \ Warszaw».
  3. Parondzhanov V. D. Visual Syntax of the DRAGON Language // Programming and Computer Software, 01 / 1995; Volume 21 (Issue 3): p. 142 - 153. (Here is an incorrect translation. This should be read as "DRAKON language.")
  4. Штурманы ракет / Под общей редакцией Е. Л. Межирицкого. — М.: БЛОК-Информ-Экспресс, 2008. — 384 с. — C. 192. — ISBN 978-5-93735-008-4
  5. "Technique of development of algorithms and programms "Grafit-Floks."" (PDF). Archived from the original (PDF) on 2012-12-27. Retrieved 2012-12-27.
  6. Морозов В.В., Трунов Ю.В., Комиссаров А.И., Пак Е.А., Жучков А.Г., Дишель В.Д., Залихина Е.Е., Паронджанов В.Д. Система управления межорбитального космического буксира «Фрегат» // Вестник НПО имени С.А. Лавочкина: Космонавтика и ракетостроение. — 2014, №1 (22). — С. 16–25. (In Russian) Morozov V.V., Trunov Yu.V., Komissarov A.I., Pak E.A., Zhuchkov A.G., Dishel V.D., Zalihina E.E., Parondzhanov V.D. Control System of "Fregat" Versatile Space Tug // Vestnik NPO imeni S.A. Lavochkina. Cosmonautics and Rocket Engineering — 2014, 1 (22). — P. 16–25.
  7. Bezel Ja. V. Is it possible to improve the workings of the mind? A new look at the problem.— Herald of the Russian Academy of Sciences. Volume 73, Issue 4, 2003.
  8. Созоров Н. Г., Трошин М. В. Дракон-редактор как основное звено в формализации целевых дидактических ресурсов для проектирования интерактивного учебного курса. Материалы региональной научно-методической конференции ИДНО Томского политехнического университета «Электронные дидактические материалы в инженерном образовании» 11-12 октября 2009 г.
  9. Паронджанов В. Д. (2012). "Учебное пособие по языку ДРАКОН для вузов". Учись писать, читать и понимать алгоритмы. Алгоритмы для правильного мышления. Основы алгоритмизации. М.: ДМК Пресс. p. 520. ISBN 978-5-94074-800-7. вузов". Учись писать, читать и понимать алгоритмы. Алгоритмы для правильного мышления. Основы алгоритмизации. М.: ДМК Пресс. p. 520. ISBN 978-5-94074-800-7.
  10. Parondzhanov V.D. (1995). Visual Syntax of the DRAKON Language. 21. PROGRAMMING AND COMPUTER SOFTWARE. Official English Translation of Programmirovanie. pp. 142–153.
  11. Митькин С.Б. Автоматное программирование на языке ДРАКОН // Программная инженерия. Том 10, № 1, 2019 (in Russian). Mitkin Stepan B. Automata-Based Programming in DRAKON Language. Programmnaya Ingeneria, 2019, vol. 10, no. 1, pp. 3—13. DOI: 10.17587/prin.10.3-13
  12. Митькин С.Б. Автоматное программирование на языке ДРАКОН // Программная инженерия. Том 10, № 1, 2019 (in Russian). Mitkin Stepan B. Automata-Based Programming in DRAKON Language. Programmnaya Ingeneria, 2019, vol. 10, no. 1, pp. 3—13. DOI: 10.17587/prin.10.3-13
  13. "DRAKON Editor". drakon-editor.sourceforge.net. Retrieved 2016-10-04.
  14. "Smart editing mode in DRAKON Editor". drakon-editor.sourceforge.net. Retrieved 2016-10-04.
  15. "The ERIL Language". drakon-editor.sourceforge.net. Retrieved 2016-10-04.
  16. "Marc Schwarzbach, Sven Wlach, Maximilian Laiacker. Modifying a Scientific Flight Control System for Balloon Launched UAV Missions // German Aerospace Center DLR // IEEE, 2015" (PDF). drakon.su. Retrieved 2017-12-03.

References

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.