LibRar.Org.Ua — Бібліотека українських авторефератів

Загрузка...

Головна Електроніка. Обчислювальна техніка → Формальные грамматики и их приложение в процессе разработки программного обеспечения

УДК 519766


Формальные грамматики и их приложение в процессе разработки программного обеспечения


Канд. техн. наук Г.Ф. Дюбко, С.В. Ефремов


Харьковский национальный университет радиоэлектроники


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

Ключевые слова: плекс-грамматики, нейп, компонент, схема.


В праці розглядається використання формальних граматик в проектуванні програмних засобів. Пропонується підхід до представлення результатів проектування у вигляді плекс-граматик та автоматичного генерування коду, з використанням знань та логічного виводу. Запропонований алгоритм для автоматичного виводу нейпу плекс-грамматики із нейпів більш низького рівня.

Ключові слова: плекс-граматики, нейп, компонент, схема.


The use of formal grammars in the developing of program products is examined in the work. Approach to the idea of the results of design in the form of plexus-grammars and automatic generation of the code is proposed. Algorithm for the automatic conclusion of plexus-grammar neip from lower level neips is proposed.

Key words: PLEXUS-GRAMMARS, NEIP, COMPONENT, SCHEME.


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

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

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

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

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

Основная часть. Применение технологии объектно-ориентированного проектирования позволяет решить определенное количество проблем проектирования, связанных со сложностью проектируемых систем. Имеются инструментальные средства объектно-ориентированного проектирования, в частности средства UML (Universal Modeling Language) [3]. Результатом одной из поздних стадий проектирования, является структурная схема проекта (их может быть несколько), которая определяет элементы и связи между ними. Эти графические схемы символизируют конечный продукт процесса проектирования в виде отношений между классами и объектами, которые предстоит реализовать на этапе перехода к программному коду.

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

Принципы генерации программного кода.

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

Автоматизация получения программного кода из схемы осуществляется на базе теории формальных языков, в частности грамматик, и теории формального вывода в исчислении предикатов. Общая схема получения кода представлена на рис. 1.

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

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