Программы, написанные в рамках курса Software Design

2008 год

  1. Scheme Builder
  2. Finite Automaton Editor
  3. JavaScheme
  4. Редактор логических схем
  5. Японские кроссворды
  6. Зависимости в программах на Java
  7. MovieMaker
  8. AutomatonModeller
  9. State Machine Editor
  10. Computer Assisted Translation
  11. JWSN
  12. Японские кроссворды
  13. Computer Assisted Translation
  14. Редактор графов
  15. Bantumi
  16. Оболочка для архиватора
  17. Noplag
  18. Тестирование алгоритмов распознавания символов
  19. Го-мо-ку
  1. Scheme Builder

    Автор: Алеев Константин.

    Программа Scheme Builder позволяет по уже имеющемуся коду на языке Java построить блок-схему, соответствующую работе данного кода.

    В данной версии реализованы следующие возможности:

    • синтаксис java 1.5;
    • сохранение блок-схемы в формат JPEG;
    • настройка параметров внешнего вида схемы;
    • возможность объединить несколько операторов в один блок схемы (см. Help в программе);
    • сохранение и загрузка блок-схемы из XML-файла.

    В программе реализован укладчик элементов блок-схемы. Его основной задачей является минимизация числа пересечений между линиями, соединяющими различные элементы схемы. Программа использует библиотеку sablecc для разбора java файлов.

    Известные баги:

    • Если у класса есть вложенный класс, и в обоих этих классах имеются одинаковые методы, то данная версия программы некорректно строит блок-схемы этих методов.

    Программа.

    Исходный код.

    Грамматика Java 1.5 для SableCC.

  2. Finite Automaton Editor

    Автор: Базылевич Анна.

    Finite Automaton Editor — программа, предназначенная для работы с конечными автоматами.

    Основные функции:

    1. Создание нового конечного автомата.
    2. Редактирование конечного автомата:
      • добавление, удаление, перенос состояний и переходов;
      • изменение условий переходов и названий состояний;
      • изменение типов состояний.
    3. Сохранение в xml–файл и загрузка из xml-файла.
    4. Пошаговая интерпретация конечного автомата.
    5. Построение минимального детерминированного конечного автомата по исходному автомату.
    6. Построение минимального конечного автомата.

    Программа.

    Исходный код.

  3. JavaScheme

    Автор: Балтийский Игорь.

    JavaScheme предназначен для построения логических схем исполнения по Java-коду. Приложение позволяет визуально представить выбранный метод некоторого класса.

    Укладка схемы специально создана для языка Java и использует его синтаксические особенности, что позволяет наглядно изобразить порядок и возможные ветви исполнения. Для трех основных типов взаимосвязи между участками кода (вложенность, последовательный порядок в коде, выборочное исполнение) использованы отдельные графические решения. Например, последовательно идущие секции программы располагаются вертикально, а в случае наличия выборочного исполнения (if, switch, catch) независимые ветви располагаются горизонтально, таким образом, реальный порядок следования исполняемых участков кода будет соответствовать направлению сверху вниз в схеме.

    Пользователь выбирает файл, содержащий в себе исходный код интересующего класса, затем выбирает один из классов, объявленных в этом файле, и метод класса для изображения в новой вкладке. Поддерживается сохранение схемы в .jpg, .bmp, .png или .gif. Для удобства восприятия вложенные структуры по желанию пользователя можно выделять рамками.

    Текущая версия программы поддерживает синтаксис языка Java версии 1.6. Поддерживается возможность изображать методы package local-классов, в том числе если их несколько в данном файле; тем не менее, на данном этапе не разрешается просматривать схемы для вложенных классов.

    Возможное развитие:

    • возможность разметки кода специальными тэгами, позволяющими не изображать на схеме отдельные части кода, либо сворачивать некоторые части в одно целое;
    • превращение изображения в динамическое:
      • возможность сворачивания вложенных конструкций щелчком мыши по изображенной вершине дерева схемы,
      • возможность посдвечивания следующей конструкции для конструкций break и continue,
      • гипертекстовая навигация по вызовам методов (по щелчку мыши по части схемы, соответствующей вызову метода, переходить к схеме для этого метода);
    • API, поддерживающий динамическую загрузку визуальных форм для конструкций языка;
    • интеграция в среду разработки (IDEA, Eclipse).

    Программа.

    Исходный код.

  4. Редактор логических схем

    Автор: Воробьёв Артем.

    Программа позволяет создавать схемы из логических элементов or, and, not, xor, соединенных проводами, задавать входные сигналы и выполнять пошаговое вычисление по схеме.

    Основные функции:

    1. Создание логической схемы из набора элеменнтов.
    2. Сохранение/загрузка схемы в формате xml.
    3. Проверка схемы на наличие ошибок.
    4. Пошаговое вычисление на наборе входных сигналов.

    Программа.

    Исходный код.

  5. Японские кроссворды

    Автор: Дырдина Анна.

    Программа позволяет разгадывать японские кроссворды. Пользователь может разгадывать уже имеющиеся кроссворды, а также добавлять свои собственные. Кроссворд, разгаданный не до конца, можно сохранить в файле и продолжить игру, когда будет удобнее. В любой момент игры пользователь может проверить правильность решения. В программе существует подсказка, не дающая игроку закрасить больше клеточек, чем в самом большом блоке в данном ряду.

    Программа.

    Примеры.

  6. Зависимости в программах на Java

    Автор: Жукова Анна.

    Программа анализирует скомпилированный код на наличие в нем большинства типов межклассовых зависимостей и строит граф, вершинами в котором являются классы и пакеты, а ребрами — зависимости, а также дерево пакетов и классов, где пользователь может отметить, какие из них нужно показывать на диаграмме. Также имеется фильтр зависимостей, позволяющий просматривать ребра-зависимости только определенных типов.

    Граф зависимостей может быть сохранен в формате XML.

    Входными данными для программы является корневой пакет (в виде папки на диске или jar-архива).

    Программа.

    Исходный код.

  7. MovieMaker

    Автор: Канжелева Ольга.

    Данная программа предназначена для создания векторной анимации.

    Возможности:

    • Создание анимации
    • Редактирование ранее созданной анимации
    • Проигрывание анимации с различной скоростью

    Программа для создания анимации.

    Проигрыватель.

    Исходный код.

  8. AutomatonModeller

    Автор: Киселёв Юрий.

    Программа для создания и моделирования работы конечного автомата. Имеется возможность задавать собственный язык автомата, полностью строить автомат (задание состояний, условий переходов, изменение начального соcтояния, задание конечных состояний). Также программа позволяет сохранять и загружать созданные автоматы.

    Программа.

    Исходный код.

  9. State Machine Editor

    Автор: Коваленко Александр.

    Программа предназначена для работы с конечными автоматами (детерминированными и недетерминированными).

    В текущей версии программы доступны следующие функции:

    • создание конечного автомата;
    • редактирование конечного автомата: создание и удаление состояний и переходов, перенаправление переходов, редактирование названий состояний и условий переходов;
    • сохранение и загрузка с использованием формата xml;
    • проверка связности автомата;
    • проверка на допустимость строкового выражения.

    Программа.

    Примеры.

  10. Computer Assisted Translation

    Автор: Ларчик Евгений.

    CAT (Computer Assisted Translation) — инструмент переводчика.

    Программа представляет собой автоматизированное средство для перевода текстов, которое позволяет подсвечивать уже переведённые фрагменты текста (сегменты) и те фрагменты, которые переводить не нужно («мёртвые зоны»), вводить перевод текста выбранного сегмента, переводить все вхождения фрагмента текста, по данному регулярному выражению подсвечивать «мёртвые» зоны, удовляетворяющие ему.

    Программа.

    Исходный код.

  11. JWSN

    Автор: Никитин Павел.

    JWSN — это симулятор для моделирования протоколов в сенсорной сети. Задача JWSN состоит в том, чтобы помочь разработчику нового протокола оценить его характеристики без развертования настоящей сети.

    Симулятор прежде всего ориентирован на моделирование беспроводной сети, однако он может быть расширен для моделирования сетей других типов.

    Разработчик может:

    • создать модель сети, используя встроенные протоколы доступа к каналу и маршрутизации
    • добавить собственные типы узлов и протоколов
    • контролировать процесс имитационного моделирования с помощью визуализатора (для больших сетей поддерживается консольный режим)
    • оценивать характеристики протокола по логу всех событий в системе

    Чтобы посмотреть одну из встроенных моделей, необходимо запустить jar с параметром исполняемого класса "ru.amse.nikitin.models.[имя модели]".

    Встроенные модели:

    • M1_Conflicter
    • M2_AlohaRand
    • M3_CentralizedRand
    • M4_CarsCentrAloha
    • M5_Temperature
    • M6_CarCentrAloha
    • M7_Huge

    Например, "java -cp JWSN.jar ru.amse.nikitin.models.M4_CarsCentrAloha".

    Программа.

    Исходный код.

    Параметры стандартные элементов.

  12. Японские кроссворды

    Автор: Рак Екатерина.

    Программа предназначена для создания и решения японских кроссвордов. Пользователь может загрузить кроссворд с диска или создать свое собственное условие в редакторе. Редактор отображает сетку и позволяет нарисовать по клеточкам рисунок, который впоследствии может быть сохранен как кроссворд. При решении кроссворда программа не позволяет сделать некоторых недопустимых с точки зрения условия шагов.

    В программе предусмотрена возможность сохранения кроссворда на диске.

    Программа.

    Редактор.

    Исходный код.

  13. Computer Assisted Translation

    Автор: Силина Ольга.

    Программа представляет собой инструмент для CAT (Computer Assisted Translation), то есть программу, которая помогает переводчику в его работе.

    Программа параллельно отображает на экране исходный текст и текст перевода, что позволяет сопоставлять их друг другу. Чтобы добавить к базе переводов слово или словосочетание, нужно выделить его при помощи мыши и ввести текст перевода в появившееся окно. Фрагмент исходного текста и его появившийся перевод выделяются зеленым цветом. Из режима переводов можно переключиться в режим добавления «мертвых зон» — участков текста, которые переводить не нужно. После добавления такого участка переводить содержащиеся внутри него слова уже нельзя, участок выделяется желтым цветом. И добавленные фрагменты, и мертвые зоны можно удалять.

    В программе есть функция для разметки «мертвых зон» в xml-файле (так, чтобы переводить можно было только текст внутри тегов и названия параметров). Также разработан API для разметки мертвых зон по заданному регулярному выражению.

    Результат работы (частично переведенный и размеченный текст) можно сохранять в xml-файл для последующей загрузки и продолжения работы.

    Программа.

    Исходный код.

    Пример.

  14. Редактор графов

    Автор: Смышляев Илья.

    Программа предназначена для создания и редактирования графов. Поддерживаются стандартные операции:

    • добавление вершины
    • удаление вершины
    • присваивание записи вершине
    • изменение расположения вершины
    • добавление ребра
    • присваивание записи ребру
    • перенос ребра от одной вершины к другой

    Кроме того, имеется возможность добавлять звездчатый граф. При добавлении вершин в такой граф происходит пересчет его параметров, позволяющий вершинам располагаться в рабочей области, не перекрывая друг друга.

    Программа.

    Исходный код.

  15. Bantumi

    Автор: Тимербаева Марина.

    Bantumi (Kallah) — древняя африканская игра.

    Каждому игроку принадлежит 6 малых горшков вдоль его длинной стороны поля и один большой горшок по его правую руку, называемый каллахом. В начале игры в каждый горшок помещается некоторое количество камней (в разных вариантов правил от 3 до 6). Цель игры состоит в том, чтобы в своём каллахе камней оказалось больше, чем в калахе противника. В процессе хода игрок выбирает свой малый горшок с камнями, забирает оттуда все камни и раскладывает их по одному в остальные горшки, двигаясь против часовой стрелки. Первый камень кладётся в горшок справа от выбранного, затем в следующие в том же направлении, включая свой каллах и малые горшки противника, но исключая его каллах. Если последний камень был помещён в свой каллах, то игрок ходит повторно. Если последний камень помещён в свой малый горшок, в котором нет камней, то этот камень и камни из горшка напротив, принадлежащего противнику, перекладываются в свой каллах. Такой ход называется захватом, после которого право хода передаётся другому игроку. Если у игрока, получившего очередь хода, не осталось ни одного камня в малых горшках, то игра немедленно прекращается и все камни противника попадают в каллах противника. И очевидно, что если в одном из каллахов оказалось больше половины общего числа камней, то игрок, которому принадлежит этот каллах, победил.

    Возможности программы:

    • игра с другим человек на одном компьютере
    • игра по сети
    • игра с компьютером
    • турнир компьютерных игроков

    Для турнира нужно в командной строке написать слово "tour" и указать имя файла, в котором содержатся настройки турнира.

    Программа.

    Исходный код.

    Пример турнира.

  16. Оболочка для архиватора

    Автор: Тимкина Ирина.

    Программа позволяет просматривать архивы в форматах *.zip и *.jar, создавать новый zip-архив из выбранных файлов и папок, распаковывать нужные файлы из архива.

    Просмотр реализован в виде дерева каталогов и таблицы. Пользователь может выбирать, какую часть информации о содержимом архива показывать, с помощью настройки видимых столбцов таблицы.

    Программа.

    Исходный код.

  17. Noplag

    Автор: Федотов Павел.

    Noplag — проект, предназначенный для поиска плагиата в исходных текстах программ. Noplag позволяет накапливать базу из программ и определять для программы наиболее похожие на неё из базы, а также степень похожести.

    Результаты сравнения программ отображаются в виде диаграммы. Реализована возможность просмотра исходного кода любой из программ и информации об авторе.

    Программа может оказаться особенно полезной для преподавателей, которые регулярно проверяют задания у студентов или учеников, позволяя в считанные секунды сравнить очередную программу с показанными ранее.

    Используя Noplag, можно сравнивать программы, написанные на языке программирования Pascal, применяя различные алгоритмы.

    В проекте реализованы два алгоритма сравнения программ. Эти алгоритмы способны находить даже хорошо скрытый плагиат. Кроме этого оставлена возможность добавлять другие алгоритмы сравнения программ в виде плагинов к проекту.

    Noplag имеет простой, удобный в использовании интерфейс. На любой из столбцов диаграммы-результата можно кликнуть мышкой, при этом будут отображены исходные коды обеих программ: проверяемой программы и проргаммы, похожей на неё.

    При клике правой клавишей мыши на исходный код программы, отображается дополнительная информация о ней.

    Программа и примеры.

    Исходный код.

  18. Тестирование алгоритмов распознавания символов

    Автор: Шавердова Елена.

    Программа предназначена для тестирования алгоритмов распознавания символов.

    В качестве примеров реализовано несколько простых алгоритмов:

    • алгоритм на основе расстояния Хэмминга (simple comparison)
    • алгоритм на основе расстояния Хэмминга, поддерживающий несколько изображений для каждого символа (class comparison)
    • алгоритм на основе нейронной сети Кохонена (Kohonen network)
    • шрифтонезависимый алгоритм, основанный на топологии символов (FSM)

    Программа позволяет распознавать нарисованный символ с помощью базы «известных» символов, а также получать процент правильно распознанных символов для выбранного входного набора изображений.

    Для алгоритма, основанного на топологии символов, есть возможность посмотреть пошагово его работу, связанную с поиском у символа петель и концов.

    Базы символов можно формировать как рисуя символы в самой программе, так и загружая их из внешних bmp файлов или уже существующих баз.

    Программа.

    Исходный код.

    Примеры символов.

  19. Го-мо-ку

    Автор: Джумабаев Таалай.

    Го-мо-ку — древняя игра. Цель игры — поставить 5 своих фишек подряд раньше противника.

    В данной программе есть возможность играть как с человеком, так и с компьютером.

    Функциональность:

    • настройки внешнего вида (сохраняются между запусками)
    • отмена хода
    • возможность загрузить своего игрока (требуется реализовать интерфейс "IPlayer")
    • возможность провести турнир между встроенными и загруженными игроками

    Программа.

    Компьютерный игрок.

    Исходный код.

    Файл с настройками.