RUS | UKR | ENG || ДонНТУ > Портал магистров ДонНТУ
Магистр ДонНТУ Губань Богдан Игоревич

Губань Богдан Игоревич

Факультет компьютерных наук и технологий

Кафедра прикладной математики и информатики

Специальность: Програмное обеспечения автоматизированных систем


Тема выпускной работы:

Анализ эффективности алгоритмов генерации кода по технологии SADT

Научный руководитель: Дацун Наталья Николаевна


Материалы по теме выпускной работы: Об авторе | Реферат | Библиотека | Ссылки | Отчет о поиске | Индивидуальный раздел

Реферат по теме выпускной работы

Анализ эффективности алгоритмов генерации кода по технологии SADT

Введение

На технологию разработки программного обеспечения (software engineering) обычно возлагаются большие надежды. Считается, что она должна решать задачи высокой сложности, давать высокую производительность и качество, обеспечивать эффективность сопровождения и развития программ. К сожалению, в современном виде технология разработки программного обеспечения не оправдывает эти надежды. Она отстаёт более чем на столетие от машиностроения. Это больше похоже на постройку коттеджей по одиночным заказам, чем на зрелую инженерию.

Порождающее программирование (generative programming) – это автоматизированное производство программных продуктов из отдельных компонентов, подобное продолжающемуся десятилетиями производству машин, электроники и других товаров. Переход к автоматическому производству программного обеспечения (ПО) требует двух шагов. Во-первых, необходимо перейти от разработки одиночных систем к разработке семейства систем – это позволит подготовить «правильные» компоненты реализации. Во-вторых, нужно автоматизировать сборку компонентов реализации при помощи генераторов [8].

Актуальность темы

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

Применение интуитивно понятной, простой и масштабируемой технологии спецификации SADT позволит просто создавать или модернизировать программный продукт [2].

Научная значимость работы

Применение шаблонов в программировании – обычная практика, и множество языков программирование (например с++, с# и другие) имеют функции для работ с шаблонами. Но когда переменные, подставляемые в шаблоны имеют разную структуру (массивы, списки, файлы и другие) обычные шаблоны становятся бессильными, так как обработка каждой из структур данных индивидуальна. Для массива, например, можно использовать обычный перебор в цикле, для матрицы уже необходимы вложенные циклы, для дерева — обход в глубину или в ширину [4].

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

Практическая ценность результатов работы

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

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

Обзор исследований по теме

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

В Донецком национальном техническом университете исследования и разработки в области генерации программного кода представлены трудами преподавателей и их школы:

  1. Магистр Свеженцев Ю. В., руководитель Башков Е.А. Выпускная работа «Исследование и разработка эффективных методов построения генерации кода для выражений языка Verilog».
  2. Магистр Бандурка В.Г., руководитель Дацун Н.Н. Выпускная работа «Визуальные инструментальные средства логического программирования».
  3. Магистр Зиновьев Д.А., руководитель Фонотов А.М. Выпускная работа «Составление тестовых последовательностей на основе объектно-ориентированных моделей».
  4. Магистр Поляков С.В., руководитель Скобцов Ю.А. Выпускная работа «Изучения и разработка эволюционных алгоритмов и построение тестов для логических схем.».

Помимо ДонНТУ, исследованиями в области генерации программного кода занимаются в Донецком государственном университете информатики и искусственного интеллекта.

Порождающее программирование для Украины в целом является развивающимся направлением научной деятельности, в отличие от России, где исследованиям в области генерации кода посвящено множество работ Акимова С.В., Наганова М.В., Галочкина М.П., Падалки Д.В. и их школ. В качестве обзора направлений применения генерации кода можно указать результаты поиска по ключевым фразам по сайту http://www.lib.ua-ru.net – электронном каталоге российских и украинских диссертаций.

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

Понятие языка спецификации

Язык спецификаций — формальный язык, предназначенный для декларативного описания структуры, связей, свойств данных и способов их преобразований, (в отличие от активных языков) без явного упоминания порядка выполняемых действий и использования конкретных значений данных.

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

Различные языки спецификаций используются для описания структуры информационной системы, моделей предметной области и других задач, связанных с разработкой ПО и БД и могут иметь как текстовый, так и бинарный формат, а также графическое представление конструкций языка. Применяются они так же для описания интерфейсов пользователя, шаблонов отчётов, преобразования документов, а также в качестве форматов передачи данных между приложениями в распределённых информационных системах. Ещё одно применение языков спецификации - описание структур баз данных, а именно - декларативная часть SQL обычно называется Data Definition Language (DDL).

Собственные результаты исследования на данный момент

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

Методология генерации кода заключается в выделении инвариантов алгоритмов и построение шаблонов на базе полученных инвариантов. Инвариант или инвариантность — термин, обозначающий нечто неизменяемое. Свойство симметрии тесно связано с понятием инвариантности. Согласно Г. Вейлю объект является симметричным, если после применения к нему определённой операции он остаётся таким же, как до операции. Такой объект считается инвариантным относительно данной операции, а сама операция называется операцией симметрии объекта. Легко показать, что множество всех операций симметрии образуют группу, поэтому исследования симметрии привлекается аппарат теории групп. Основным объектом здесь является группа преобразований G = {g} - множество всех преобразований g, замкнутое относительно композиций преобразований, включающее обратные g-1 и тождественное преобразование e [6].

Рассмотрим выделение инвариантов и дальнейшую генерацию новых алгоритмов на их основе. Попробуем выделить инварианты для базового алгоритма поиска максимума среди отрицательных. Для этого рассмотрим реализацию данного алгоритма для различных типов и структур входных данных, а именно для массива, текстового файла и списка (рисунок 1). Проанализировав алгоритмы можно заметить, что некоторые части являются одинаковыми для всех типов и структур данных. В начале каждого алгоритма флажок f сбрасывается в 0; при нахождении первого числа удовлетворяющего условию отбора, подымается флажок и результат определяется текущим значением и т.д.

Выделение инвариантов алгоритмов

Рисунок 1 — Выделение инвариантов алгоритмов

Теперь рассмотрим алгоритмы нахождения максимума среди отрицательных, нахождение минимума и обнуление положительных элементов для одной и той же входной структуры данных и выделим инвариант относительно метода обработки (рисунок 2).

Выделение инвариантов алгоритма относительно метода обработки

Рисунок 2 — Выделение инвариантов алгоритма относительно метода обработки

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

Получение нового алгоритма

Рисунок 3 — Получение нового алгоритма

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

Методика генерация кода из SADT спецификации

Анимация 1 — Методика генерация кода из SADT спецификации

(анимация : объем — 106.7 КБ, количество кадров — 7, размер — 605x454)

Полученное решение позволяет генерировать код программы из её описания посредством SADT диаграмм.

 

Заключение

 

В ходе решения поставленных задач были рассмотрены следующие языки спецификаций:

Составлена сравнительная таблица характеристик рассмотренных языков спецификации.

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

В дальнейшем планируется получить формальное описание метода генерации кода по SADT спецификации.

Литература

  1. Богатырёв М.Ю. Инварианты и симметрии в генетических алгоритмах. - Тула: Тульский государственный университет, 2003. - 8 с.
  2. Кнут Д. Искусство программирования.- издательство «Вильямс» 2004. - 788 с.
  3. Jackson M.A. System Development. - London: Prentice Hall International Series in Computer Science, 1983 - 64.
  4. Деметрвич Я., Кнут Е., Радо П. Автоматизированные методы спецификации. - Москва: Мир, 1989 - 115 с.
  5. Требования и спецификации в разработке программ. - Москва: Мир, 1984 - 344 с.
  6. Вейль Г. Симметрия. – Москва: Наука, 1968. – 192 с.
  7. Фокс Дж. Программное обеспечение и его разработкаю — Москва: Мир, 1985. - 368 с.
  8. Чарнецки К., Айзенекер У. Порождающее программирование. - Спб.:Питер, 2005.- 731с.
  9. Tse T.H., Pong L. An Examination of Requirements Specification Languages. - Hong Kong: The University of Hong Kong, 1991- 24 c.
  10. Hamilton M., Zeldin S. The functional life cycle model and its automation. - New York: Journal of Systems and Software, 1983 - 50.

Важное замечание

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


ДонНТУ > Портал магистров ДонНТУ || Об авторе | Библиотека | Ссылки | Отчет о поиске | | Индивидуальный раздел