← Назад в библиотеку

Источник: Воробьёв Л.О. Разработка интегрированной CASE-системы для обучения студентов программированию / Л.О. Воробьёв, В.А. Полетаев, Д.Д. Моргайлов . // Информатика, управляющие системы, математическое и компьютерное моделирование в рамках II форума Инновационные перспективы Донбасса (ИУСМКМ-2016): VII Международная научно-техническая конференция . — Донецк : ДонНТУ , 2016. — С. 163–168. — URL: http://iuskm.donntu.ru/electr... .


Разработка интегрированной CASE-системы для обучения студентов программированию

Л.О. Воробьёв, В.А. Полетаев, Д.Д. Моргайлов
Донецкий национальный технический университет, г. Донецк

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

Постановка проблемы

Сложность и объемы разрабатываемых программных систем с каждым годом неуклонно повышаются. Усложнение процессов анализа, проектирования, разработки, тестирования и сопровождения программных продуктов приводит к необходимости увеличения числа участников проекта и ужесточению требований к качеству и срокам выхода продукта на рынок [1].

Для решения этой проблемы создаются автоматизированные программные инструменты (CASE-системы), главным назначением которых является сокращение трудозатрат на выполнение рутинных операций в процессе жизненного цикла разработки программного обеспечения, улучшение качества программных продуктов, поддержание унифицированного и согласованного стиля работы [1,2].

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

Наиболее популярными являются системы IBM Rational Rose, Paradigm Plus, BPWin, Sybase PowerDesigner, Silverrun и прочие [3,4]. Большинство из них ориентированы на применение унифицированного языка моделирования UML как основного модельного аппарата CASE-технологий при объектно-ориентированном подходе [5].

Однако главным ограничением таких систем является узкие возможности генерации исходного кода, поскольку генерация объектно-ориентированного кода по статическим моделям программы (например, по диаграммам классов и компонентов языка UML) дает на выходе исключительно каркас (скелет) программного продукта, представляющий собой набор программных модулей (файлов исходного кода). Модули каркаса состоят из сгенерированного объявления классов с полями, сигнатурами и заглушками методов, но не содержат при этом алгоритмического кода методов класса.

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

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

Цель работы – разработка интегрированного CASE-средства для повышения эффективности обучения студентов программированию.

Разработка интегрированной CASE-системы

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

Логическая модель программной системы представлена в виде UML-диаграммы классов. При этом, в отличие от других CASE-систем на диаграмме отображаются связи между сущностями, представленными на диаграмме в зависимости от указанных пользователем типов свойств, методов, аргументов методов. Это позволяет оптимизировать время программиста, направленное не на разработку визуальной составляющей диаграммы, а на разработку самой модели (рис. 1).

Пример UML-диаграммы, спроектированной с использованием разработанной системы

Рис. 1 — Пример UML-диаграммы, спроектированной с использованием разработанной системы

Другой важной особенностью разрабатываемой системы является возможность создания функциональной модели работы программы – описания алгоритмов – реализации методов классов, определенной в UML-диаграмме классов. Для редактирования алгоритма разработанная система предоставляет пользователю интерфейс типа Drag&Drop для манипулирования операторами программы и отношениями между ними (рис. 2).

Пример алгоритма, спроектированного с использованием разработанной системы

Рис. 2 — Пример алгоритма, спроектированного с использованием разработанной системы

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

Пример сгенерированного программного кода

Рис. 3 — Пример сгенерированного программного кода

Модель представления данных условно разделяется на модель представления алгоритмов функций и модель представления UML-диаграммы классов. Для взаимодействия с графической частью используются механизм обработки событий. События необходимы для корректного отображения UML-диаграммы, поскольку изменение одного элемента (например, типа аргумента) может изменить схему связей между классами.

В модели представления UML диаграммы широко используется Java Reflection API, который позволяет с легкостью использовать существующие классы в разрабатываемой UML-диаграмме. Элементы языка программирования (классы, методы, члены классов и локальные переменные) могут быть преобразованы из программного кода и выведены на экран, благодаря использованию этой библиотеки.

На рис. 4 изображена UML-диаграмма классов, которые реализуют внутреннее представление проектируемой диаграммы классов. Основным элементом диаграммы является класс UMLClass, который содержит в себе поля, методы и вложенные классы, которые также могут содержать вложенные члены. Класс для представления классов на UML-диаграмме предоставляет список полей, методов и вложенных классов.

Диаграмма классов модели представления каркаса приложения

Рис. 4 — Диаграмма классов модели представления каркаса приложения

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

За реализацию методов отвечает класс Method, который хранит список параметров, локальных переменных и тип возвращаемого значения. Класс Method содержит также коллекцию операторов, которая является реализацией метода. Один оператор может быть либо литералом, либо простым или составным оператором. Составные операторы примечательны тем, что они являются объединением нескольких операторов, которые также могут быть составными. По сути, реализация метода – это также составной оператор.

Метод не всегда может содержать реализацию. Так, например, абстрактные или native-методы не могут иметь тела. Однако, поскольку в разработанной CASE-системе все алгоритмы записываются исключительно в терминах языка Java, поэтому необходимость работы с native-методами возникает лишь при использовании классов, которые их содержат.

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

Выводы

Исследованы особенности существующих средств автоматизированной разработки программных средств, проанализированы их преимущества и недостатки. Была разработана CASE-система с учетом обнаруженных недостатков существующих решений.

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

Литература

  1. Одинцов И.О. Профессиональное программирование. Системный подход. : 2-е изд. – СПб.: БХВ-Петербург, 2004. – 624 с [Электронный ресурс].
  2. Kuhn D.L. Selecting and effectively using a computer aided software engineering tool [Электронный ресурс]. // Annual Westinghouse computer symposium; 6-7 Nov 1989; Pittsburgh, PA (USA) .
  3. Вендоров А.М. CASE-технологии Современные методы и средства проектирования информационных систем [Электронный ресурс]. — 2000. — URL: http://www.interface.ru/fset.a... .
  4. Маклаков С.В. BPwin и Erwin. CASE-средства для разработки информационных систем / С.В. Маклаков . — М : Диалог-МИФИ , 2000. — 256 pp.
  5. Алещенко А.В. Система верификации графических схем алгоритмов и генерации программных кодов / А.В. Алещенко, О.В. Бузовский . // Проблемы информатизации и управления. – № 2 (50) . — Киев , 2015. — С. 32–35.
← Назад в библиотеку