«САМАРСКИЙ ИНСТИТУТ ИНЖЕНЕРОВ ЖЕЛЕЗНОДОРОЖНОГО ТРАНСПОРТА Кафедра телекоммуникаций на железнодорожном транспорте СОВРЕМЕННЫЕ ТЕХНОЛОГИИ РАЗРАБОТКИ И ТЕСТИРОВАНИЯ ...»
В предметной области, как правило, заранее уже определен терминологический словарь данных (параметров, переменных или констант). Так, например, в теории газотурбинных двигателей перечень параметров, их обозначение и содержание регламентировано государственными стандартами, которые во многом унифицированы с международными стандартами. Аналогичное положение дел имеет место в самолетостроении, ракетостроении, радиоэлектронике и т.д.
Под предметной областью программирования в дальнейшем понимается среда программирования, состоящая из общего набора данных (словарь данных) и набора программных модулей (словарь и библиотека программных модулей).
Поэтому программирование в рамках технологии ГСП начинается с утверждения и формирования, так называемого, словаря данных ПОП, который служит целям каталогизации данных ПОП, спецификации их семантики и областей значений.
Словарь данных представляет собой таблицу, в которой каждому данному присвоено уникальное имя, задан тип, начальное значение данного и краткий комментарий его назначения в ПОП.
Технология ГСП поддерживает жесткие стандарты на описание и документирование программных модулей, представление и поддержку информационного обеспечения программных модулей предметной области. Таким образом, для каждой предметной области строится единая информационная среда, позволяющая унифицировать проектирование написание программных модулей разными разработчиками.
Кроме словаря данных и каталога типов данных информационную среду определяют объекты ГСП. Под объектом понимается специальным образом построенный в рамках технологии ГСП программный модуль, выполняющий определенные действия над данными ПОП.
Одним из объектов технологии ГСП является актор. Актор формируется из базового модуля путем привязки абстрактных типов данных базового модуля к данным предметной области. По сути дела актор порождается в результате аппликации базового модуля к своим аргументам (операция конкретизации над типом базового модуля).
Актор производит те же действия, что и породивший его базовый модуль, но над конкретными данными ПОП. В отличие от базовых модулей, каждый актор является содержательным программным модулем, который выполняет понятные функции в рамках заданной предметной области. Акторы в технологии ГСП реализуют отображение над множеством данных предметной области:
Dk = {d1, d 2,..., d n } - множество выходных данных актора Ak. Множества D in и D out образуют в совокупности полное множество данных некоторой предметной области (словарь данных): D = D in U D out.
Один базовый модуль может породить множество акторов. В данном случае проявляется свойство параметрического полиморфизма базовых модулей технологии ГСП [26].
Между базовым модулем и актором осуществляется односторонняя связь типа “один ко многим”. Каждый актор имеет свой прототип в виде базового модуля, а на основании каждого базового модуля можно построить один или несколько акторов. Это свойство полиморфизма объектов позволяет избежать избыточности при порождении новых акторов, которые различаются между собой только привязкой по данным.
Другими словами, на основе одного отлаженного и оттестированного базового модуля за счет механизма автоматизированной привязки по данным можно построить несколько корректных акторов, что позволяет значительно повысить степень надежности программирования в ГСП.
Порождение актора производится путем формирования, так называемого, паспорта объекта. Процедура паспортизации базового модуля заключается в установке соответствия между списком типов данных базового модуля и данными предметной области, таким образом, что каждому формальному параметру (типу данных) ставится в соответствие конкретное данное ПОП.
Соответствие между базовым модулем Bi и актором Aj порождает соответствие между подмножеством типов Ti данных и подмножеством самих данных Dj предметной области:
В этом случае абстрактные операции над типами данных базового модуля превращаются в конкретные функциональные преобразования данных ПОП, т.е.
формируется локальная вычислимая функция предметной области, например, термогазодинамический расчет компрессора ГТД.
Сформированное отношение (паспорт актора) оформляется как таблица БД (обозначим его P(t,d)) информационного фонда ГСП, содержащая перечень имен формальных параметров и соответствующих им имен данных ПО с указанием способа получения ими своих значений. По способу получения своих значений данные в паспорте делятся на три группы:
1) инициируемые (импортируемые) данные, которые должны принять значения до их использования объектом;
2) вычисляемые (экспортируемые) данные, которые впервые получают свои значения в процессе выполнения объекта;
3) модифицируемые (изменяемые) данные, которые образуются путем пересечения множеств инициируемых и вычисляемых данных.
При регистрации базового модуля в ПОП автоматически порождается дубликат базового модуля, имеющего стандартную форму информационного интерфейса:
имя объекта(указатель на массив адресов данных ПОП);
Тогда любой базовый модуль, разработанный на языке C++:
в процессе регистрации превращается в модуль стандартного вида:
{ return(B(тип t1P[0], тип t2P[1], тип tnP[n-1]));} Для стандартизованной формы базового модуля операция конкретизации типов данных сводится к процедуре формирования массива адресов данных P[ ], в котором номер элемента массива соответствует порядковому номеру типа данных в базовом модуле, а значение элемента указывает на данное предметной области. Массив P[ ] легко наполнить по паспортным данным актора, следовательно, базовый модуль в стандартной форме + наполненный массив P[ ] фактически определяют актор ПОП. На рис.2. показана схема порождения акторов расчета таких узлов авиационного двигателя, как вентилятор и компрессоры высокого и низкого давления путем привязки типов данных абстрактной вычислительной схемы, “заложенной” в соответствующем базовом модуле.
В процессе реализации алгоритма в рамках технологии ГСП передача управления между объектами осуществляется с помощью управляющих объектов-предикатов.
Формально предикат представляет собой отображение из множества данных предметной области на множество логических значений “истина” и “ложь”:
Отличие предиката от актора заключается в том, что предикат не может производить преобразование над данными, то есть все его данные являются входными:
(d1, d2,..., dm ) Din.
Технологически порождение предикатов ничем не отличается от процедуры порождения акторов. Первоначально строится базис абстрактных логических функций, действующих над типами данных. Множество предикатов ПОП строится из абстрактных логических функций в результате аппликации их типов данных к данным ПОП, т.е. в результате паспортизации типов данных логических функций. Рассмотрение акторов и предикатов, как различных категорий объектов ГСП, обусловлено не только особенностями реализуемых ими типов отображений, но и, что особенно важно, их ролевыми назначениями. Акторы, являясь локальными вычислимыми функциями, реализуют преобразование данных ПОП, в то время как предикаты, являясь функциями управления вычислениями, образуют базу знаний для всей предметной области, т.е. они общезначимы для любых программ, разрабатываемых в рамках ПОП.
Объекты (акторы или предикаты) являются исходным материалом для графического программирования. Результатом графического программирования являются агрегаты. Агрегат создается в форме графа, в котором объекты ПОП играют роль вершин и дуг. Дуги - предикаты, а вершины - акторы или агрегаты. Дуги графа определяют передачу управления от одной вершины к другой.
Формально агрегат представляет собой помеченный ориентированный граф с входной (корневой) и несколькими выходными (концевыми) вершинами:
где F = { A1, A2,..., An } - множество акторов, которые являются вершинами графа, = { 1, 2,..., m } - множество предикатов, которые представляют дуги графа, R отношение над множествами вершин и дуг графа, определяющее способ их связи.
Корневой вершиной графа A0 является такая вершина, из которой есть маршрут по графу в любую другую вершину, и которая помечена как корневая. Из этой вершины начинается выполнение алгоритма, реализованного агрегатом. Аналогично определяется концевая вершина An - это вершина, в которую есть маршрут из любой другой вершины, и которая не имеет исходящих дуг-предикатов. Концевых вершин на графе может быть несколько, если все они удовлетворяют поставленным условиям.
Развитие вычислительного процесса в агрегате происходит путем передачи управления из одной вершины в другую, начиная с корневой. Этот процесс может быть завершен по двум причинам: либо достигнута концевая вершина графа, из которой нет исходящих дуг, либо из текущей вершины отсутствуют разрешенные другими предикатами переходы в другие вершины. Если в процессе передачи управления сложилась ситуация, когда истинными одновременно являются несколько предикатов, то управление будет передано по предикату, имеющему наибольший приоритет.
При таком подходе, между агрегатом в технологии ГСП и блок-схемой алгоритма существуют аналогии. Отличие заключается в том, что агрегат не имеет специальных управляющих блоков ( условие и выбор ), и передача управления всегда осуществляется посредством проверки предиката, который в частном случае может быть тождественно истинным. Это упрощает визуальный анализ алгоритма, за счет чего можно сократить число структурных ошибок. Например, ошибок, связанных с переусложненной структурой (неправильно вложенные циклы, неверная передача управления и т.п.), либо ошибок вызванных противоречиями в самом графе (непредусмотренные циклы).
В отличие от акторов и предикатов, которые полностью определяются своими паспортами, при порождении агрегата с помощью специального компилятора формируется текст нового объекта ПОП, который после трансляции заносится в библиотеку объектных модулей ПОП.
Опыт эксплуатации первой версии системы GRAPH показал, что достаточно часто возникает необходимость порождения небольших объектов, состоящих из одного - двух операторов базового языка программирования. Это всевозможные счетчики типа I = I + 1, отладочные печати, простые логические условия типа AB, A=10 и т.д. Разработка соответствующих базовых модулей с последующей паспортизацией до уровня объекта дело неблагодарное. В связи с этим, в технологию ГСП была введена возможность порождения актора или предиката, минуя стадию разработки базовых модулей, которые получили название объектов типа “in line”. Все модули “in line” жестко привязаны к данным ПОП, а стандартизированная форма программного модуля автоматически компилируется в процессе его порождения.
Итак, в наиболее общем виде, программирование в технологии ГСП состоит из следующих этапов:
1.Создание словаря данных ПО. На данном этапе создаются новые типы и структуры данных, а также происходит накопление словаря данных, где хранится информация обо всех переменных программы. Этот этап целесообразно реализовать с помощью удобного, гибкого многооконного интерфейса пользователя с информационным фондом системы.
2.Разработка базовых модулей. Это этап традиционного текстового программирования, на котором программист работает с исходными текстами программ, с использованием требований стандарта ГСП к оформлению этих текстов.
3.Создание объектов ПО. Этот этап производится автоматически после привязки формальных параметров базовых модулей к фактическим данным предметной области.
4.Конструирование агрегатов. На этапе графического программирования пользователь может создать графовый образ новой программы.
Разработанный и отлаженный агрегат, в свою очередь, может быть использован в качестве исходного материала при конструировании следующих агрегатов.