Экспликативное программирование (ЭП)
ЭП ориентировано на разработку теории дескриптивных и декларативных программных формализмов, адекватных моделям структур данных, программ и средств конструирования из них программ [35–39]. Для этих структур решены проблемы существования, единства и эффективности. Теоретическую основу ЭП составляет логика, конструктивная математика, информатика, композиционное программирование и классическая теории алгоритмов. Для изображения алгоритмов программ используются разные алгоритмические языки и методы программирования: функциональное, логическое, структурное, денотационное и др.
К принципам ЭП относятся.
– принцип развития определения понятия программы в абстрактном представлении и постепенной ее конкретизации с помощью экспликаций.
– принцип прагматичности или полезности определения понятия программы выполняется с точки зрения понятия "проблема" и ориентирован на решение задач пользователя.
– принцип адекватности ориентирован на абстрактное построение программ и решение проблемы с учетом информационности данных и апликативности, т.е. рассмотрение программы, как функции, вырабатывающей выходные данные на основе входных данных. Функция является объектом, которому сопоставляется денотат имени функции с помощью отношения именования (номинации).
– принцип дескриптивности позволяет трактовать программу как сложные дескрипции, построенные из более простых и композиций отображения входных данных в результаты на основе принципа вычислимости.
Развитие понятия функции осуществляется с помощью принципа композиционности, т.е. композиция программ (функций) из более простых программ в целях создания новых объектов с более сложными именами (дескрипциями) для функций и включающими номинативные (именные) выражения, языковые выражения, термы и формулы.
Таким образом, процесс развития программы осуществляется в виде цепочки понятий: данные – функция – имя функции – композиция – дескрипция. Понятия "данные – функция – композиция" задают семантический аспект программы, а "данные – имя функции – дескрипция" – синтаксический аспект. Главным в ЭП является семантический аспект, система композиций и номинативности (КНС), ориентированные на систематическое изучение номинативных отношений при построении данных, функций, композиций и дескрипций [36].
КНС задают специальные языковые системы для описания разнообразных классов функций и называются композиционно–номинативными языками функций. Такие системы тесно связаны с алгебрами функций и данных, построены в семантико–синтаксическом стиле. Они отличается от традиционных систем (моделей программ) теоретико–функциональным подходом, классами однозначных n–арных функций. номинативными отображениями и структурами данных.
Для построения математически простых и адекватных моделей программ параметрического типа используется КНС и методы универсальной алгебры, математической логики и теория алгоритмов. Данные в КНС рассматриваются на трех уровнях: абстрактном, булевском и номинативном. Класс номинативных данных обеспечивает построение именных данных, многозначных номинативных данных или мульти–именных данных, задаваемых рекурсивно.
В рамках ЭП разработаны новые средства [36] для определения систем данных, функций и композиций номинативного типа, имена аргументов которых принадлежат некоторому множеству имен Z, т.е. композиция определяется на Z–номинативных наборах именных функций.
Номинативные данные позволяют задавать структуры данных, которым присущи неоднозначность именования компонентов типа множества, мультимножества, реляции и т.п.
Функции обладают свойством апликативности, их абстракции задают соответственно классы слабых и сильных аппликативных функций. Слабые функции позволяют задавать вычисление значений на множестве входных данных, а сильные – обеспечивают вычисление функций на заданных данных.
Композиции классифицируются уровнями данных и функций, а также типами аргументов. Экспликация композиций соответствует абстрактному рассмотрению функций как слабо аппликативных функций, и их уточнение строится на основе понятия детерминанта композиции, как отображения специального типа. Класс аппликативных композиций предназначен для конструирования широкого класса программ. Доказана теорема о сходимости класса таких композиций на классе монотонных композиций.
Практическая проверка теоретического аппарата формализации дедуктивных и ОО БД прошла в ряде экспериментальных проектов в классе манипуляционных данных БД заданных в SQL–подобных языках[39].
Алгоритмика программ
На протяжении многих лет Цейтлин Г.Е. занимается разработкой теоретических аспектов алгоритмов, представляемых блок–схемами, как способа детализации и
реализации алгоритмов. Аппарат блок–схем пополнен математическими формулами, свойственными математике, которые используются при аналитических преобразованиях и обеспечивают улучшение качества алгоритмов [40–42].
Построение и исследование алгебры алгоритмов впервые осуществил В.М. Глушков в рамках проектирования логических структур ЭВМ. В результате была построена теория систем алгоритмических алгебр (САА), которая затем была положена в основу обобщенной теории структурированных схем алгоритмов и программ, называемой теперь алгоритмикой [41].
Объектами алгоритмики являются модели алгоритмов и программ, представляемые в виде схем. Метод алгоритмики базируется на компьютерной алгебре и логике и используется для проектирования алгоритмов прикладных задач. Построенные алгоритмы описываются с помощью ЯП и реализуются соответствующими системами программирования в машинное представление.
В рамках алгоритмики разработаны специальные инструментальные средства реализации алгоритмов, которые базируются на современных объектно–ориентированных средствах и методе моделирования UML. Тем самым обеспечивается полный цикл работ по практическому применению разработанной теории алгоритмики при реализации прикладных задач, начиная с постановки задачи, формирования требований и разработки алгоритмов до получения программ решения этих задач.
Алгебра алгоритмов.Под алгеброй алгоритмов АА= {A, W} понимается основа А и сигнатура W операций над элементами основы алгебры. С помощью операции сигнатуры может быть получен произвольный элемент q Î AА, который называется системой образующих алгебры. Если из этой системы не может быть исключен ни один элемент без нарушения ее свойств, то такая система образующих называется базисом алгебры.
Операции алгебры удовлетворяют следующим аксиоматическим законам: ассоциативности, коммутативности, идемпотентности, закону исключения третьего, противоречия и др. Алгебра, которой удовлетворяют перечисленные операции, называется булевой.
В алгебре алгоритмов используется алгебра множеств, элементами которой являются множества и операции над множествами (объединение, пересечение, дополнение, универсум и др.).
Основным объектами алгебры алгоритимки являются схемы алгоритмов и их суперпозиции, т.е. подстановки одних схем в другие. С подстановкой связана развертка, которая соответствует нисходящему процессу проектирования алгоритмов, и свертка, т.е. переход к более высокому уровню спецификации алгоритма. Схемы алгоритмов соответствуют конструкциям структурного программирования:
Последовательное выполнение операторов А и В записывается в виде композиции А*В; альтернативное выполнение операторов А и В (fu (А, В)) означает, если u истинно, то выполняется А иначе В; цикл (u (А, В)) выполняется, пока не станет истинным условие u (u – логическая переменная). С помощью этих элементарных конструкций строиться более сложная схема P алгоритма:
P ::= ((u1 ) А1}},
А1 ::= { (u2 ) А2 * D}
А2 ::= А3 * C,
А3 ::= { (u ) А, B}, u::= u2 Ù u1.
Проведя суперпозицию путем свертки приведенной схемы алгоритма P, получается формула:
P ::= ( u1 ) (u2 ) ( (u2 Ù u1) А, В ) * С * D).
Важным результатом является сопоставительный анализ аппарата алгебры алгоритмики и следующих известных алгебр.
Алгебра Дейкстры АД = {АСС, L(2), СИГН} – двухосновная алгебра, основными элементами которой являются множество АСС операторов, представленных структурными блок–схемами, множество L(2) булевых функций в сигнатуре СИГН, в которую входят операции дизъюнкции, конъюнкции и отрицания, принимающие значения из L(2). С помощью специально разработанных механизмов преобразования АД в алгебру алгоритмики установлена связь между альтернативой и циклом, т.е. ((u ) А} = ((u ) Е, А * ((u ) А}}, произвольные операторы представлены суперпозицией основных операций и констант. Операция фильтрации Ф (u ) = ((u ) Е, N} в АД представлена суперпозицией тождественного Е и неопределенного N операторов и альтернативы алгебры алгоритмики, где N – фильтр разрешения выполнения операций вычислений. Оператор цикла while doтакже представлен суперпозицией операций композиции и цикла в алгебре алгоритмики.
Алгебра схем Янова АЯ включает в себя операции построения неструктурных логических схем программ. Схема Янова состоит из предикатных символов множества P{p1, p2,…), операторных символов множества A{a1, a2,…} и графа переходов. Оператором в данной алгебре есть пара A{p}, состоящая из символов множества А и множества предикатных символов. Граф перехода представляет собой ориентированный граф, в вершинах которого располагаются преобразователи, распознаватели и один оператор останова. Дуги графа задаются стрелками и помечаются они знаками + и –.
Преобразователь имеет один преемник, а распознаватель – два. Каждый распознаватель включает в себя условие выполнения схемы, а преобразователь представляет операторы, включающие логические переменные, принадлежащие множеству {p1, p2,…).
Каждая созданная схема АЯ отличается большой сложностью, требует серьезного преобразования при переходе к представлению программы в виде соответствующей последовательности действий, условий перехода и безусловного перехода. В работе [86] разработана теория интерпретации схем Янова и доказательство эквивалентности двух операторных схем исходя из особенностей алгебры алгоритмики.
Для представления схемы Янова аппаратом алгебры алгоритмики сигнатура операций АЯ вводятся композиции А* В и операции условного перехода, который в зависимости от условия u выполняет переход к следующим операторам или к оператору помеченному меткой (типа goto). Условный переход трактуется как бинарная операция P (u, F), которая зависит от условия u и разметок схемы F. Кроме того, производится замена альтернативы и цикла типа while do. В результате выполнения бинарных операций получается новая схема F’, в которой установлена P (u) вместо метки и булевы операции конъюнкции и отрицания. Эквивалентность выполненных операций преобразования обеспечивает правильность неструктурного представления.
Система алгебр Глушкова АГ= {ОП, УС, СИГН}, где ОП и УС – множество операторов суперпозиции, входящих в сигнатуру СИГН, и логических условий, определенных на информационном множестве ИМ, СИГН = {СИГНад È Прогн.}, где
СИГНад – сигнатура операций Дейкстры, а Прогн. – операция прогнозирования. Сигнатура САА включает в себя операции алгебры АД, операции обобщенной трехзначной булевой операции и операцию прогнозирования (левое умножение условия на оператор u = (А* u’), порождающая предикат u = УС такой, что u(m) = u’( m’), m’ = А (m), А ÎОП. ИМ – множество обрабатываемых данных и определения операций из множеств ОП и УС. Сущность операция прогнозирования состоит в проверке условия u в состоянии m оператора А и определения условия u’, вычисленного в состоянии m’ после выполнения оператора А.Данная алгебра ориентирована на аналитическую форму представления алгоритмов и оптимизацию алгоритмов по выбранным критериям.
Алгебра булевых функций и связанные с ней теоремы о функциональной полноте и проблемы минимизации булевых функций также сведены до алгебры алгоритмики. Этот специальный процесс отличается громоздкостью, и рассматриваться не будет, можно только отослать к главному источнику [86].
Алгебра алгоритмики и прикладные подалгебры. Алгебра алгоритимки пополнена двухуровневой алгебраической системой и механизмами абстрактного описания данных (классами алгоритмов). Под многоосновной алгоритмической системой (МАС) понимается система S ={{Di÷ iÎI }; СИГН0 , СИГНn }, где Di –основы или сорта, СИГН0 , СИГНn – совокупности операций и предикатов, определенных на Di .Если они пусты, то определяются многоосновные модели – алгебры. Если сорта интерпретируются как множество обрабатываемых данных, то МАС представляет собой концепцию АТД, в виде подалгебры, широко используемую в объектно–ориентированном программировании. Тем самым устанавливается связь с современными тенденциями развития современного программирования.
Практическим результатом исследований алгебры алгоритмики является построение оригинальных инструментальных систем проектирования алгоритмов и программ на основе современных средств поддержки ООП.
Читателям данной темы предоставляется возможность познакомиться более подробно с приведенными источниками.
Формальные методы
Понятие формальные методы более всего связано с математическими техниками спецификаций, верификации та доказательства правильности создаваемых программ. Эти методы содержат математическую символику, формальную нотацию, аппарат вывода и потому они трудно используются рядовыми программистами. Кроме того, постоянно развиваемые эти средства не вкладываются в стандартизованные процессы ЖЦ, в котором регламентированы все основные и дополнительные процессы (управление качеством, проектом, ресурсами и др.).
За многие годы своего существования (более 20–лет) такие известные формальные методы, как VDM, Z, RAISE [43–46] используются редко, эпизодически в реальных проектах, более всего в университетских и академических организациях и до промышленного производства фактически не дошли.
Это связано с тем, что формальные техники трудно использовать практически особенно в системах реального времени, где особенно важно применение формальных методов для создания более надежных программ, стоимость разработки которых возрастает, так как тратиться много времени на спецификацию и верификацию.
Наука формального проектирования ПС получила значительный прогресс при создании обобщенного UML, который доведен до стандарта, отодвинув на второй план такие средства спецификации, как RAISE, VDM и др.
Далее рассматриваются некоторые техники спецификации моделей программ и методы формального доказательства.
Графова модель VDM создается с помощью композиционной теоремы [5], которая определяется в виде ациклического графа, узлы которого – модули, а дуги – интерфейс между модулями.
Каждому модулю модели соответствует сервис как provider, так и потребителя (consumer) услуг. Дуга графу от модуля M к N определяет интерфейс, который может предоставлять модуль N для модуля M.
Базисом формального метода представления модели есть спецификация интерфейсов модулей для двух выше указанных пользователей сервисов. Интерфейс удовлетворяет следующим свойствам:
– разделенность (separable) модулей с точки зрения проектирования и спецификации, интерфейс которых не требует описания среды модуля;
– композиционность (сомроsіtіоn), когда модули соединяются через композиционную теорию в систему с гарантированными связями между ними.
Данная теория базируется на модели интерфейса для взаимодействия модулей системы между собою через сетевые протоколы (TCP, UDP и др.). Каждый протокол передает разным модулям этой модели параметры для нахождения нужного сервиса.
Модель интерфейса задает связь модуля со средой в виде дискретного события (event), которое возникает только тогда, когда модуль и среда действуют вместе, и создают событие, рассматриваемое со стороны интерфейса. Иными словами, интерфейс специфицируется в виде множества последовательностей событий для наблюдения за поведением модулей модели.
Предположим, что S определяет спецификацию модуля M, которая включает в себя все возможные случаи его поведения и задает разные ситуации, которыми могут быть:
– событие интерфейса или состояние наблюдателя системы;
– анализ является конечным или представлен неопределенной последовательностью;
– формализм определения этой последовательности;
– условия выполнения события.
Эти предположения разрешают обеспечить разноуровневую систему взаимодействия модулей модели через механизм протоколов и систему наблюдения за событиями.
Формальный метод и спецификация RAISE. RAISE– метод и RSL–спецификация (RAISE Spesification Language) [45, 46] были разработаны в 1985–1998гг. как результат предварительного исследования формальных методов. Метод содержит нотации, техники и инструменты для использования формальных методов при конструировании ПС и доказательстве их правильности. Метод имеет программную поддержку в виде набора инструментов и методик, которые постоянно развиваются и используются для конструирования и доказательства правильности программ. описанных в RSL и ЯП (С++ и Паскаль).
Язык RSL содержит абстрактные параметрические типы данных (алгебраические спецификации) и конкретные типы данных (модельно–ориентированные), подтипы, операции для задания последовательных и параллельных программ, предоставляет аппликативный и императивный стиль спецификации абстрактных программ, а также формальное конструирование программ в других ЯП и доказательства их правильности. Синтаксис этого языка близок к синтаксису языков С++ и Паскаль.
В RSL–языке имеются предопределенные абстрактные типы данных и конструкторы сложных типов данных, такие как произведение (product), множества (sets), списки (list), отображения (map), записи (record) и т.п. Далее рассмотрим, для примера, некоторые конструкторы сложных типов данных.
1. Произведение типов – это упорядоченная конечная последовательность типов Т1, Т2 , …, Тn произведения (product) Т1 ´ Т2 ´, …, ´ Тn . Представитель типа имеет вид (v1, v2 , …, vn ), где каждое vi есть значением типа Тi. Компонент произведения можно получить get и переслать set, т.е.
get component (i, d) = getvalue (i, d),
set component (d, i, val) = d ÞÑ (I ® val).
Количество компонентов произведения d находится таким образом:
size (d) = id Ñ (null (couter inc(counter))).
Конструктор произведения d1 и d2 строит произведение d1 ´ d2 вида
product (d1 , d2 ) = id Ñ (size (d1) Þ couter 1) Ñ (null (couter 2) inc couter 2))).
Для каждого конкретного типа product (Т1 ´Т2 ´, …, ´ Тn) можно построить конструктор значения этого типа из отдельных компонентов произведения таким образом:
make product (value 1, …, value n) = (value i Þ 1) Ñ… Ñ (value n Þ n),
где каждое значение value i имеет тип Тi , а результирующее значение – тип произведения Т1 ´Т2 ´, …, ´ Тn .
2. Списки типов – это последовательность значений одного типа списка listТ, могут быть конечным списком типов Тk и неконечными списком типов T n . в качестве структур данных типа списку может быть бинарное дерево, в котором есть голова (head) и сын ( tail), следует за ним в списке и хвост. Операциями для списка является операция hd взятия первого элемента списка, т.е. головы и операция tl – хвоста остальные элементы.
Функция Caddr (I) = L Þ tail Þtail Þ Head выбирает из списка I –элемент. Индекс элемента помогает выбрать нужный элемент списка Index(I, idx) = L (idx) =
while (Ø is null(idx))do((L Þ tail ÞL) Ñdec(idx)) L Þ Head. Для определения количества элементов в списке выполняется функция
len (L) = (ld Ñ null (result))
while (L Þ) do (( L Þ tail Þ tail ÞL) Ñ inc (result))
result Þ
Элемент списка находится так:
elem (L) = (ld Ñ empty (result))
while (L Þ) do (( L Þ tail ÞL) Ñ
( result ( LÞ head Þ) Þ elem ) Þ result)
result Þ.
Аналогично можно представить функции конкатенации, преобразование типов данных, добавления элемента в голову и хвост списка и др.
3. Отображение – это структура (map), которая ставит в соответствие значениям одного типа значение другого типа. С другой стороны, отображение является бинарным отношением декартового произведения двух множеств, как совокупности двухкомпонентных пар, в которой первый компонент arg содержит элементы аргументов отображения, а другой компонент res соответствующие элементы значений этого отображения.
В языке представлены разные допустимые операции над отображениями: наложение, объединение, композиция, срез и др. Среди этих видов отношений рассмотрим только композицию отображений.(m1, m2).
(ld Ñ (compose (m1, m2) Þ m)) apply (m, elem)
apply to composition (m1, m2, elem) =
(ld Ñ (image (elem, m1) Þ s) restrict (m2, s) Þ map
(ld Ñ (map getname elem Þ name)) getvalue (name, map).
При этом используются функции:
Apply (m, elem) = image (elem, m) elem Þ,
Apply (m, elem) = getvalue (elem, m) elem Þ.
4. Запись – это совокупность именованных полей. Этот тип соответствует типуrecord в языке Паскаль и struct в языке С++. В языке RAISE определено два конструктора типа, record, shurt record, которые описываются в виде – type record id =
type mk_id (short _record id ) ::=
destr_id1 : type_expr1 « recon_id
. . .
destr_idn : type_exprn « recon_id.
Идентификатор mk_id является конструктором типа record, для которого даны деструкторы destr_idn , как функции получения значения компонентов записи.
5. Объединение – это конструктор Union,обеспечивающий объединение типов
type id = id1 , id2 ,…, idn
при котором тип id получает одно из значений в списке элементов.
Конструктор этого типа имеет вид:
type id = id_from_ id1 (id_to_ id1: id1) ½… ½ id_from_ idn (id_to_ idn: idn)/
Операции над самим типом не определены в языке RAISE.
Рассмотренные формальные структуры данных языка RAISE позволяет математически описывать и конструировать новые структуры данных в проектируемых программах. Их проще проверять на правильность методами верификации.
Контрольные вопросы и задания
1. Дайте характеристику структурного метода.
2. Приведите основные особенности и возможности объектно–ориентированного программирования.
3. Какие структуры имеются в языке UML для наглядного проектирования?
4. Приведите пути развития компонентного программирования.
5. Приведите базовые определения в компонентном программировании.
6. Определите основные понятия и этапы жизненного цикла компонентного программирования.
7. Определите основные элементы аспектно–ориентированного программирования.
8. Дайте характеристику инженерии ПрО.
9. Объекты генерирующего программирования и краткая их характеристика.
10. Представьте главные теоретические методы программирования.
11. Дайте определение формальных методов программирования.
Литература к теме 5.
1. Demark D.A., McGowan R.L. SADT: Structured Analysis and Design Technique. New York: McCray Hill, 1988.– 378 c.
2. Skidmore.S, Mills.G, Farmer R. SSADM: Models and Mehtods. –Prentice–Hall, Englewood Cliffs, 1994.
3. Марка Д.А., МакГруэн К. Методология структурного анализа и проектирования.–М.: МетаТехнология, 1997.– 346с.
4. Буч Г. Объектно–ориентированный анализ и проектирование с примерами приложений на C++, 2–е изд. – М.: “Изд–во Бином”, 1998. – 560 с.
5 Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектно–ориентированного проектирования. Паттерны проектирования. – СПб: Питер, 2001. – 368 с.
6. The Unified Modeling Language (UML) Specification. – V. 1.3. UML Specification, revised by the OMG. – July 1999. – 620 p.
7. Рамбо Дж., Джекобсон А , Буч Г. UML: специальный справочник.– СПб.: Питер.– 2002.– 656с.
8. Сrnkovik I, Larsson S., Stafford J. Component–Based Software Engineering: building systems from Components at 9th Conference and Workshops on Engineering of Computer –Based Systems.– Software Engineering Notes.–2002.– vol.27.–N 3.–c.47–50.
9. Gamma E., Helm R., Johnson R., and Vlissides J. Design Patterns, Elements of Reusable Object–oriented Software,– N.– Y.: Addison–Wesley, 1995. – 345p.
10. Component Object Model. – www.microsoft.com/tech/COM. asp
11. Грищенко В.Н., Лаврищева Е.М. Методы и средства компонентного программирования//Кибернетика и системный анализ, 2003.– №1.– с.39–55.
12. Лаврищева Е.М. Парадигма интеграции в программной инженерии //Проблемы программирования. – 2000. – №1–2.– С.351–360.
13. Batory D., O'Malley S. The Design and Implementation of Hierarchical Software Systems with Reusable Components/ ACM Transactions on Software Engineering and Methodology. – N 4,– 1, October 1992. – P.355–398.
14. Weide B., Ogden W., Sweden S. Reusable Software Components/ Advances in Computers, vol. 33. – Academic Press, 1991. – pp.1–65.
15. Jacobson I., Griss M., Johnson P. Software Reuse: Architecture, Process and organization for Business Success – Addison Wesley, Reading , MA, May 1997.–501p.
16. Эммерих В. Конструирование распределенных объектов. Методы и средства программирования интероперабельных объектов в архитектурах OMG/CORBA, Microsoft COM и Java RMI. – М.: Мир, 2002. – 510с.
17. Рихтер Дж. Программирование на платформе Microsoft .NET FRAMEWORK. – М.: Издательско– торговый дом “Русская Редакция”, 2002. – 512 с.
18. Kiselev. I. Aspect–Oriented Programming with AspectJ. Indianapolis, IN, USA: SAMS Publishing, 2002.–164p.
19. Homepage of the Aspect–Oriented Programming, Xerox Palo Alto Research Center (Xerox Parc) Palo Alto, CA, www.parc.xerox.com/aop
20.Павлов В. Аспектно–ориентированное программирование//Технология клиент–сервер, № 3–4.– С.3–45.
21. Golub G., C.van Loan. Matrix Computation. Third editor –The John HopkinsUniversity Press, Baltimore and London, 1996.
22. К.Чернецки, У.Айзенекер. Порождающее программирование. Методы, инструменты, применение.– Издательский дом «Питер».– Москва– СП… Харьков, Минск.– 2005.–730с.
23. Сигел Дж. CORBA 3. – Москва: Малип, – 2002. – 412 c.
24. Роджерсон Д. Основы СОМ. – Руск.пер.– Microsoft Press.– 363c.
25. Ndumu D.T., Nwana. Research and Development challenges for Agent–based system..– IEEProccedings Software Engineering– 1997.– 144.–№ 01.–p.26–37.
26. Shoham. Y. Agent–oriented programming.–Artif.Intell. 1993, 60, №1.–p.51–92.
27. Трахтенгерц Э.А. Взаимодействие агентов в многоагентных средах //Автоматика и телемеханика.– М.: Наука .–1998.–№8.– с.3–52.
28. Nwana Н.S., Lee J., Jennings N.R. Coordination Software agent systems /British Telecommunication Technology Journal, 1996.–14(4).
29. Дрейган Р. Будущее программных агентов.– РС Magazine March 25,– 1997.–190c.
30. Яковсон А. Мечты о будующем программирования. Открытые системы.– М.: 2005.– №12.– с.59–63.
31. Летичевский А.А, Маринченко В.Г. Объекты в системе алгебраического программирования //Кибернетика и системный анализ. –1997.– N2. – С.160–180.
32. Летичевский А.А., Капитонова Ю.В., Волков В.А., Вышемирский В.В., Летичевский А.А. (мол.). Инсерционное программирование// Там же.– 2003.– №1.– 12–32.
33. Летичевский А.А., Капитонова Ю.В. Доказательство теорем в математической информационной среде //Там же. – 1998. – №.4. – С. 3 – 12.
34. Letichevsky A.A., Gilbert D.R. A model for interaction of agents and environments //Recent trends in algebra's development technique Language.–2000. – P.311 – 329.
35. Редько В.Н. Экспликативное программирование: ретроспективы и перспективы//Проблемы программирования.– 1998. – №2.–С. 22 – 41.
36. Никитченко Н.С. Композиционно–номинативный подход к уточнению понятия программы // Там же.– 1999.– №1.– С. 16–31.
37. Редько В.Н. Композиционная структура программологии //Кибернетика и системный анализ. – 1998. – № 4. – С. 47–66.
38. Редько В.Н. Основания программологии // Там же. – 2000.– № 1.– С. 35–57.
39. Редько В.Н., Брона Ю.Й., Буй Д.Б. Реляційні бази даних: табличні алгебри та SQL–подібні мови //Видав. дім “Академперіодика”, Київ, 2001.–195с.
40. Цейтлин Г.Е. Введение в алгоритмику.– Изд.–во Фара, 1999.–310с.
41. Глушков В.М., Цейтлин Г.Е., Ющенко Е.Л. Алгебра. Языки. Программирование. – Наукова думка.– 1974.–317с. ( перераб. и переизд. 1979г., 1989г.).
42. Ющенко Е.Л , Сужко С,В,, Цейтлин Г.Е., Шевченко А.И. Алгоритмические алгебры.– Учебник (укр.).– ИЗММ.– 1997.–480с.
43. Abrial I.R., Meyer B. Spesification Language Z. –Boston: Massachusetts Computer Associates Inc.. 1979.–378 p.
44. Biorner D.Jones C.B. The Vienna Development Methods (VDM): The Meta – Language.–Vol. 61 of Lecture Notes in Computer Science .– Springer Verlag, Heiderberg, Germany, 1978.–215p.
45. The RAISE Language Group. The RAISE Spesification Language. BCS Practitioner Series .– Prentice Hall, 1982.–397 p.
46. The RAISE Methods Group. The RAISE Development Methods. BCS Practitioner Series .– Prentice Hall, 1985.–493p.
Тема 6.