ПОВЫШЕНИЕ ЭФФЕКТИВНОСТИ
АЛГОРИТМОВ
ГЕНЕРАЦИИ ПРОГРАММНОГО КОДА ПО МЕТОДОЛОГИИ SADT
Кустов М.Н.
Научный руководитель
– к. ф.-т. н.,
доц. Дацун Н.Н.
Донецкий Национальный
Технический Университет
This
project gives
coverage to the efficiency enhancement of program code building
algorythms,
practice approaches of SADT-metodology for the given object are
described.
Объектом исследования в
рамках статьи
выступили
существующие подходы к решению проблем автоматической генерации
программного
кода, методы и алгоритмы повышения эффективности генерации программного
кода.
Технологии разработки
программных комплексов предполагают вовлечение огромного числа
инженеров
различных направлений, которые вручную формируют программный продукт.
Используя
этот подход,
разработка программных систем сталкивается с очевидными проблемами:
несогласованностью структурных частей, двусмысленностью, избыточностью
(неполнотой) сопровождаемой проектной документации и др. Это связано с
тем, что
целью разработки является большая, сложная для анализа и проектирования
система [1].
Одним из самых дорогостоящих
этапов разработки программного продукта является, собственно, написание
программного кода (функциональной части) [2].
Именно поэтому областью
исследования
была выбрана автоматическая генерация программного кода. В процессе
анализа
возможных подходов к решению задач, связанных с автоматическим синтезом
программ,
выбрана и рассмотрена методология спецификаций SADT.
Методология SADT может быть
использована как инструмент генерации программного кода. Сочетание
формальности
обозначений и единообразного формализма для представления задач
различных
классов позволяет точнее формулировать спецификацию каждой из решаемых
подзадач. Связность блоков гарантирует точность реализации взаимосвязей
между
вспомогательными алгоритмами в большой задаче. Разделение данных и
функциональности
позволяет проводить исследования полученного решения задачи на
различных структурах
данных. Далее рассмотрим практическое применение SADT-методологии.
Использование шаблонов в
программировании является распространенной техникой. Во многих языках
программирования есть функции для работы с шаблонами [1].
Но когда
переменные,
подставляемые в шаблоны, имеют различную структуру, то обычные шаблоны
становятся бесполезными, т. к. обработка каждой структуры данных
индивидуальна.
Для решения этой проблемы
можно использовать несколько контейнеров для одного шаблона.
Соответствующий
контейнер выбирается относительно типа и структуры исходных данных,
после чего
начинка контейнера используется как обычный шаблон [4].
Суть генерации программного
кода заключается в подстановке в текст контейнера данных, а
универсальность
заключается в том, что для различных типов и структур данных
определяется свой
конкретный контейнер (свой алгоритм) [4].
Для решения данной задачи
требуется создать диаграммы SADT и связать их в единую структуру. Также
необходимо создать контейнеры с шаблонами и для каждого контейнера
назначить
соответствующую маску использования [4].
Алгоритмы, которые будут
содержать контейнеры, создаются на базе общих частей, так называемых
инвариантов алгоритмов, для каждой структуры данных. Затем созданные
блоки
связываются между собой на основании сопоставления входных данных одной
диаграммы с выходными данными другой. Далее будем выбирать контейнер
соответствующий исходным данным. После выбора контейнера следует
заменить
значение входных связей в шаблоне именами данных, соответствующих
входным
связям.
Рисунок 1 – Пример
применения SADT
диаграммы для
поиска и удаления элемента в одномерном массиве.
Список источников:
1. Козлинский А.В.
CASE-технология:
индустриальная
разработка систем обработки информации // Компьютерное обозрение. -
1993. - №1.
2. Роберт Т. Фатрел,
Управление программными
проектами. Достижение оптимального качества при минимуме затрат,
"Вильямс", Киев, 2003, с. 141-142.
3. Кручинин А. Н.
Автоматическая генерация
программных
компонент по высокоуровневым спецификациям, Ростов-на-Дону, 2006.
4. Губань Б. И., Анализ
эффективности
алгоритмов
генерации кода по технологии SADT, Реферат по теме выпускной работы.
Электронный
ресурс. Режим доступа: http://masters.donntu.edu.ua/2010/fknt/guban/diss/index.htm.