Формулировка проблемы
Учитывая то, что разработка крупных проектов представляет собой сложный процесс, инженеры-программисты используют некоторые обозначения для описания создаваемых систем, чтобы представить их визуально. Зачастую для этого используются принятые условные обозначения, однако, они не являются достаточно гибкими. Кроме того, большинство из методов не совместимы. В то же время, семантические сети достаточно просты и могут быть изменены. Согласно Sowa [4] и Osipov [6], UML и кадры являются примерами гибридов нескольких семантических сетевых обозначений. Таким образом, семантические сети могут легко стать посредником для других методов.
Проблема данной работы заключается в увязке формализма классов со свободой концептуальной записи. Другими словами, цель состоит в том, чтобы создать инструмент для перевода строгих UML-диаграмм классов в семантические сети и обратно для того, чтобы использовать гибкую сеть обозначений на первых этапах создания проектов. Таким образом, это позволит разработать эволюционную архитектуру программного обеспечения. Например, можно начать проект с интеллект-карты, а затем превратить его в полную семантическую сеть, и, в конечном счете, разработать диаграмму классов и шаблон кода. Ключевым признаком этого метода является прозрачность, что означает, что метод должен иметь визуализацию.
Нет единого текстовое обозначение для UML-диаграмм классов, поэтому хорошим способом представления их в текстовом виде является использование языка программирования. Кроме того, наиболее широко используемое текстовое обозначение для семантических сетей является функциональным.
Практические результаты
Выше описанная программа была разработана для двух операционных систем: Windows и Mac OS X. Эта программа может преобразовать код функционального обозначения семантических сетей в язык программирования C# и обратно. Интерфейс приложения содержит два текстовых поля для ввода и вывода, комбинированные боксы для выбора форматов и кнопка для обработки текста. Кроме того, UML-диаграмму классов и графу «семантическая сеть» можно сделать для визуального восприятия, нажав соответствующие кнопки ниже каждого текстового поля. На рисунке ниже показано главное окно программы.
Рис.1 Скриншот приложения
Сначала, анализатор функциональных обозначений семантических сетей получает список функций с двумя аргументами, описывающими направленные связи между понятиями. Приложение распознает несколько стандартных типов отношений (таких, как: "является", "имеет переменную", "типа"), которые доступны для преобразования на язык программирования, но оно также может обрабатывать любые другие имена ссылок. Если анализатор успешно заключает часть имени метода в круглые скобки, то выявляет различные узлы с тем же именем. К тому же обнаруженные ошибки ввода текста печатаются с их номерами строк и комментариями.
Кроме того, приложение было написано в C# с помощью Visual Studio для Windows, и Xamarin для Mac OS. Его основная часть представляет собой библиотеку для текстового процесса в различных форматах. Эта библиотека одинакова для обеих операционных систем. Взаимодействие с ней основывается на шаблонах проектирования программного обеспечения (Model-View-Controller). Контроллер - это основной контроллер класса, вид - это окно интерфейса контроллера, а модель - это основа класса с узлами и связями. Кроме того, внутренняя организация библиотеки основана на фабричной модели. Таким образом, основной контроллер использует различные синтаксические анализаторы, генераторы кода и визуализаторы, которые выбираются по умолчанию для соответствующего вида.
Для того, чтобы рисовать графики, библиотека визуализирует созданные сценарии на DOT языке. Затем приложение отправляет его в библиотеки программы "GraphViz". "GraphViz" является мощным, популярным, кросс-платформенным и бесплатным инструментом, который может нарисовать любой вид графика или диаграммы и способен обрабатывать сотни узлов и связей. В ней также представлено большое разнообразие форм и атрибутов для узлов и связей.
