Среда визуальной разработки блок-схем

Тип работы:
Реферат
Предмет:
ТЕХНИЧЕСКИЕ НАУКИ


Узнать стоимость

Детальная информация о работе

Выдержка из работы

1
ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ
В ОБРАЗОВАНИИ
СРЕДА ВИЗУАЛЬНОЙ РАЗРАБОТКИ БЛОК-СХЕМ И. О. Латышева, А. М. Суховерхов Научный руководитель — М.А. Мазин
Среда визуальной разработки блок-схем позволяет пользователю описывать математические алгоритмы с помощью блок-схем. Проект направлен на создание удобного визуального редактора блок-схем, который может быть полезен в рассмотрении наглядных примеров реализации математических алгоритмов различными способами — как с использованием графического представления алгоритмов в виде блок-схем, так и на различных языках программирования (С, Basic, Pascal, Java). Проект предназначен для студентов и школьников.
Введение
Проект посвящен созданию средства визуальной разработки блок-схем. Существующие аналоги могут либо преобразовывать код в Паскаль (например, программа FCEditor — http: //www. fceditor. nm. ru), либо интерпретировать блок-схему (например, программа Flowchart builder — http: //www. unn. ru/vmk/graphmod/index. php? id=fchb), либо являются платными. Мы предлагаем альтернативное решение, основанное на open-source технологиях. Помимо создания, визуального редактирования и сохранения блок-схем в файл планируется обеспечить возможность интерпретации блок-схем как в пошаговом, так и в автоматическом режиме, а также трансляцию блок-схем в различные языки программирования, такие как C, Pascal, Java, D. Благодаря использованию технологии распознавания языков ANTLR и системы генерации текстов по шаблонам Velocity возможна поддержка большого числа языков. Режим пошагового выполнения позволит добавить к приложению отладчик.
Блок-схемы, области применения и стандарты
«Блок-схема — это один из способов визуального представления алгоритмов, ориентированный граф, указывающий порядок исполнения команд алгоритма» [2]. Блок-схемы широко применяются в изучении теории алгоритмов, а также на практике, там, где требуется удобное наглядное представление алгоритмов.
Для описания блок-схем существовало несколько стандартов, из которых наиболее свежим является ГОСТ 19. 701−90, утвержденный 01 января 1992 г. Ниже приведены отрывки спецификации данного стандарта, посвященные так называемым схемам программ.
«Настоящий стандарт распространяется на условные обозначения (символы) в схемах алгоритмов, программ, данных и систем и устанавливает правила выполнения схем, используемых для отображения различных видов задач обработки данных и средств их решения.
Стандарт не распространяется на форму записей и обозначений, помещаемых внутри символов или рядом с ними и служащих для уточнения выполняемых ими функций.
Требования стандарта являются обязательными.
1. ОБЩИЕ ПОЛОЖЕНИЯ
1.1. Схемы алгоритмов, программ, данных и систем (далее — схемы) состоят из имеющих заданное значение символов, краткого пояснительного текста и соединяющих линий.
1.2. Схемы могут использоваться на различных уровнях детализации, причем число уровней зависит от размеров и сложности задачи обработки данных. Уровень детализации должен быть таким, чтобы различные части и взаимосвязь между ними были понятны в целом.
1.3. В настоящем стандарте определены символы, предназначенные для использования в документации по обработке данных, и приведено руководство по условным обозначениям для применения их в:
1) схемах данных-
2) схемах программ-
3) схемах работы системы-
4) схемах взаимодействия программ-
5) схемах ресурсов системы.
1.4. В стандарте используются следующие понятия:
1) основной символ — символ, используемый в тех случаях, когда точный тип (вид) процесса или носителя данных неизвестен или отсутствует необходимость в описании фактического носителя данных-
2) специфический символ — символ, используемый в тех случаях, когда известен точный тип (вид) процесса или носителя данных или когда необходимо описать фактический носитель данных-
3) схема — графическое представление определения, анализа или метода решения задачи, в, котором используются символы для отображения операций, данных, потока, оборудования и т. д.
2. ОПИСАНИЕ СХЕМ
[… ]
2.2. Схема программы
2.2.1. Схемы программ отображают последовательность операций в программе.
2.2.2. Схема программы состоит из:
1) символов процесса, указывающих фактические операции обработки данных (включая символы, определяющие путь, которого следует придерживаться с учетом логических условий) —
2) линейных символов, указывающих поток управления-
3) специальных символов, используемых для облегчения написания и чтения схемы.
[… ]
Примеры выполнения схем приведены в приложении.
3. ОПИСАНИЕ СИМВОЛОВ
3.1. Символы данных
3.1.1. Основные символы данных
3.1.1.1. Данные
Символ отображает данные, носитель данных не определен.
[… ]
3.2. Символы процесса
3.2.1. Основные символы процесса
3.2.1.1. Процесс
Символ отображает функцию обработки данных любого вида (выполнение определенной операции или группы операций, приводящее к изменению значения, формы или размещения информации или к определению, по которому из нескольких направлений потока следует двигаться).
3.2.2. Специфические символы процесса
3.2.2.1. Предопределенный процесс
Символ отображает предопределенный процесс, состоящий из одной или нескольких операций или шагов программы, которые определены в другом месте (в подпрограмме, модуле). [… ]
3.2.2.3. Подготовка
Символ отображает модификацию команды или группы команд с целью воздействия на некоторую последующую функцию (установка переключателя, модификация индексного регистра или инициализация программы).
3.2.2.4. Решение
Символ отображает решение или функцию переключательного типа, имеющую один вход и ряд альтернативных выходов, один и только один из которых может быть активизирован после вычисления условий, определенных внутри этого символа. Соответствующие результаты вычисления могут быть записаны по соседству с линиями, отображающими эти пути.
3.2.2.5. Параллельные действия
Символ отображает синхронизацию двух или более параллельных операций. [… ]
3.2.2.6. Граница цикла
Символ, состоящий из двух частей, отображает начало и конец цикла. Обе части символа имеют один и тот же идентификатор. Условия для инициализации, приращения, завершения и т. д. помещаются внутри символа в начале или в конце в зависимости
от расположения операции, проверяющей условие. [… ]
3.3. Символы линий
3.3.1. Основной символ линий 3.3.1.1. Линия
Символ отображает поток данных или управления.
При необходимости или для повышения удобочитаемости могут быть добавлены стрелки-указатели.
3.3.2. Специфические символы линий [… ]
3.3.2.3. Пунктирная линия
Символ отображает альтернативную связь между двумя или более символами.
Кроме того, символ используют для обведения аннотированного участка. [… ]
3.4. Специальные символы
3.4.1. Соединитель
Символ отображает выход в часть схемы и вход из другой части этой схемы и используется для обрыва линии и продолжения ее в другом месте. Соответствующие символы-соединители должны содержать одно и то же уникальное обозначение.
3.4.2. Терминатор
Символ отображает выход во внешнюю среду и вход из внешней среды (начало или конец схемы программы, внешнее использование и источник или пункт назначения данных).
3.4.3. Комментарий
Символ используют для добавления описательных комментариев или пояснительных записей в целях объяснения или примечаний. Пунктирные линии в символе комментария связаны с соответствующим символом или могут обводить группу символов. Текст комментариев или примечаний должен быть помещен около ограничивающей фигуры.
3.4.4. Пропуск
Символ (три точки) используют в схемах для отображения пропуска символа или группы символов, в которых не определены ни тип, ни число символов. Символ используют только в символах линии или между ними. Он применяется главным образом в схемах, изображающих общие решения с неизвестным числом повторений.
[… ]
4. ПРАВИЛА ПРИМЕНЕНИЯ СИМВОЛОВ И ВЫПОЛНЕНИЯ СХЕМ
4.1. Правила применения символов
4.1.1. Символ предназначен для графической идентификации функции, которую он отображает, независимо от текста внутри этого символа.
4.1.2. Символы в схеме должны быть расположены равномерно. Следует придерживаться разумной длины соединений и минимального числа длинных линий.
4.1.3. Большинство символов задумано так, чтобы дать возможность включения текста внутри символа. Формы символов, установленные настоящим стандартом, должны служить руководством для фактически используемых символов. Не должны изменяться углы и другие параметры, влияющие на соответствующую форму символов. Символы должны быть, по возможности, одного размера.
Символы могут быть вычерчены в любой ориентации, но, по возможности, предпочтительной является горизонтальная ориентация. Зеркальное изображение формы символа обозначает одну и ту же функцию, но не является предпочтительным.
4.1.4. Минимальное количество текста, необходимого для понимания функции данного символа, следует помещать внутри данного символа. Текст для чтения должен записываться слева направо и сверху вниз независимо от направления потока.
[… ]
4.1.5. В схемах может использоваться идентификатор символов. Это связанный с данным символом идентификатор, который определяет символ для использования в справочных целях в других элементах документации (например, в листинге программы). Идентификатор символа должен располагаться слева над символом.
[… ]
4.1.6. В схемах может использоваться описание символов — любая другая информация, например, для отображения специального применения символа с перекрестной ссылкой или для улучшения понимания функции как части схемы. Описание символа должно быть расположено справа над символом.
[… ]
4.1.8. В схемах может использоваться подробное представление, которое обозначается с помощью символа с полосой для процесса или данных. Символ с полосой указывает, что в этом же комплекте документации в другом месте имеется более подробное представление.
Символ с полосой представляет собой любой символ, внутри которого в верхней части проведена горизонтальная линия. Между этой линией и верхней линией символа помещен идентификатор, указывающий на подробное представление данного символа.
В качестве первого и последнего символа подробного представления должен быть использован символ указателя конца. Первый символ указателя конца должен содержать ссылку, которая имеется также в символе с полосой.
[… ]
4.2. Правила выполнения соединений
4.2.1. Потоки данных или потоки управления в схемах показываются линиями. Направление потока слева направо и сверху вниз считается стандартным.
В случаях, когда необходимо внести большую ясность в схему (например, при соединениях), на линиях используются стрелки. Если поток имеет направление, отличное от стандартного, стрелки должны указывать это направление.
4.2.2. В схемах следует избегать пересечения линий. Пересекающиеся линии не имеют логической связи между собой, поэтому изменения направления в точках пересечения не допускаются.
[… ]
4.2.3. Две или более входящие линии могут объединяться в одну исходящую линию. Если две или более линии объединяются в одну линию, место объединения должно быть смещено.
[… ]
4.2.4. Линии в схемах должны подходить к символу либо слева, либо сверху, а исходить либо справа, либо снизу. Линии должны быть направлены к центру символа.
4.2.5. При необходимости линии в схемах следует разрывать для избежания излишних пересечений или слишком длинных линий, а также, если схема состоит из нескольких страниц. Соединитель в начале разрыва называется внешним соединителем, а соединитель в конце разрыва — внутренним соединителем.
4.2.6. Ссылки к страницам могут быть приведены совместно с символом комментария для их соединителей.
[… ]
4.3. Специальные условные обозначения
4.3.1. Несколько выходов
4.3.1.1. Несколько выходов из символа следует показывать:
1) несколькими линиями от данного символа к другим символам-
2) одной линией от данного символа, которая затем разветвляется в соответствующее число линий.
[… ]
4.3.1.2. Каждый выход из символа должен сопровождаться соответствующими значениями условий, чтобы показать логический путь, который он представляет, с тем,
чтобы эти условия и соответствующие ссылки были идентифицированы.
[… ]
4.3.2. Повторяющееся представление
[… ]
4.3.2.3. Линии могут входить или исходить из любой точки перекрытых символов, однако требования п. 4.2.4 должны соблюдаться. Приоритет или последовательный порядок нескольких символов не изменяется посредством точки, в которой линия входит или из которой исходит» [1].
Описание программы
На данный момент редактор позволяет создавать блоки «начало», «конец», «процесс», «данные», «решение», «линия». Планируется реализовать полный набор блоков вышеуказанного стандарта для схем программ.
Проект выполнен на языке Java под платформу Eclipse. В ходе работы над проектом были изучены и применены на практике следующие open-source технологии:
• Eclipse Modeling Framework (EMF), http: //www. eclipse. org/emf/
• Graphical Modeling Framework (GMF), http: //www. eclipse. org/gmf/
• Graphical Editing Framework (GEF), http: //www. eclipse. org/gef/
• Velocity http: //velocity. apache. org
• ANTLR, http: //www. antlr. org
Работа над приложением происходила следующим образом. Сначала была создана Ecore модель приложения, описывающая иерархию Java-классов, использующихся в работе редактора. Далее была сгенерирована модель EMF генератора (EMF Generator Model), с помощью которой EMF сгенерировал код, описывающий модель и способы ее
редактирования. Далее была создана GMF модель графического представления блок-схемы (GMF — Graphical Definition Model), описывающая ее внешний вид в окне редактора, и GMF модель инструментарного представления блок-схемы (GMF Tooling Definition Model), описывающая палитру доступных инструментов редактирования. Была создана GMF связывающая модель (GMF Mapping Model), ставящая в соответствие инструментам требуемые элементы графического представления. На основе связывающей модели и модели EMF генератора была создана модель GMF генератора (GMF Generator Model), описывающая правила, по которым впоследствии был сгенерирован код редактора, базирующегося на GEF.
Каждый блок, кроме блоков «начало» и «конец», содержит одно арифметическое выражение. Для распознавания выражений была написана ANTLR грамматика, по которой был сгенерирован код лексического и синтаксического анализатора. Лексический анализатор разбивает поток символов выражения на лексемы, а синтаксический анализатор строит из потока лексем абстрактное дерево синтаксиса. Абстрактное дерево синтаксиса используется в вычислении значения выражения, интерпретации и трансляции блок-схемы в целевой язык.
В дальнейшем планируется производить генерацию кода на целевом языке с помощью технологии шаблонов Velocity. Благодаря этому возможно увеличение количества целевых языков трансляции.
Примеры снимков экрана при работе с программой
Рис. 1. Местонахождение мастера создания блок-схемы
Рис. 2. Мастер создания блок-схемы
Рис. 3. Пример окна редактора с созданной блок-схемой
Заключение
На стадии завершения проект будет выгодно отличаться от существующих аналогов широким спектром доступных функций, расширяемостью и доступностью. Использование технологий open-source позволит сделать его легко отлаживаемым и модифицируемым. Платформа Eclipse в настоящее время активно развивается. Со стороны разработчиков прилагаются все усилия, чтобы сделать ее удобнее и дружественнее как к пользователю, так и к разработчику подключаемых модулей (plug-in). С этих точек зрения интеграция с платформой Eclipse представляется выгодным шагом.
В настоящее время программа позволяет создавать, редактировать блок-схемы с ограниченным набором блоков. В дальнейшем планируется расширить ее функциональность, добавив остальные блоки в соответствии с ГОСТ 19. 701−90, а также трансляцию и интерпретацию, работа над которыми сейчас ведется.
Адрес проекта в сети: http: //www. assembla. com/wiki/show/fcwork
Литература
1. Электротехническая ассоциация: http: //elektro. com. ru/gosts2282. html
2. Кафедра информационных технологий курганского государственного университета: http: //it. kgsu. ru/TI 4/talg 004. html
3. Официальный сайт проекта Eclipse: http: //www. eclipse. org
4. Официальный сайт проекта ANTLR: http: //www. antlr. org
5. Официальный сайт проекта Velocity: http: //velocity. apache. org

ПоказатьСвернуть
Заполнить форму текущей работой