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

кандидата технических наук
Драгныш, Николай Васильевич
город
Таганрог
год
2006
специальность ВАК РФ
05.13.18
цена
450 рублей
Диссертация по информатике, вычислительной технике и управлению на тему «Исследование и разработка методов и моделей построения комплексов программ»

Автореферат диссертации по теме "Исследование и разработка методов и моделей построения комплексов программ"

На правах рукописи

Драгныш Николай Васильевич

ИССЛЕДОВАНИЕ И РАЗРАБОТКА МЕТОДОВ И МОДЕЛЕЙ ПОСТРОЕНИЯ КОМПЛЕКСОВ ПРОГРАММ

Специальность:

05.13.18 - «Математическое моделирование, численные методы и комплексы программ»,

АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата технических наук

Таганрог - 2006

Работа выполнена в Таганрогском государственном радиотехническом университете

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

доктор технических наук, профессор C.B. Астанин Официальные оппоненты:

доктор технических наук, профессор Г.И. Белявский доктор технических наук, доцент A.B. Боженюк

Ведущая организация:

Санкт-Петербургский государственный университет информационных технологий, механики и оптики

Защита состоится « августа в 10 на заседании специализированного совета Д 212.259.03 при Таганрогском государственном радиотехническом университете по адресу:

347928, г.Таганрог, пер.Некрасовский, 44, ауд.Д-406

С диссертацией можно ознакомиться в библиотеке Таганрогского государственного радиотехнического университета Автореферат разослан « ¿О» июня 2006г.

Ученый секретарь диссертацио иного совета,

доктор технических

А.Н.Целых

ОБЩАЯ ХАРАКТЕРИСТИКА РАБОТЫ

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

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

Разработка программных систем пользователем-непрограммистом с использованием моделей и недоопределенные модели рассматривались в работах Глушкова В.М., Нариньяни A.C., Швецова И.Е., Телермана В.В. Мульти-парадигматическому программированию посвящены работы Яхно Т. М., Страуструпа Б. Значительный научный вклад в решение проблем представления и обработки не полностью определенных знаний, представления знаний, описывающих задачи, решаемые в компьютерной человеко-машинной системе гибридного интеллекта, объединения различных видов представления знаний внесли Берштейн U.C., Мелихов А.Н., Д.Дюбуа, Астанин C.B., Болотова JI.C.

Целью исследований является повышение эффективности разработки сложных комплексов программ пользователем-непрограммистом.

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

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

• моделирования основ построения сложных программных систем и среды разработки комплексов программ;

• модели конструктора моделей;

• моделей и методов организации хранения и поиска конструкторов моделей.

Практическая значимость:

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

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

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

Апробация работы. Результаты работы докладывались и обсуждались на XI Всероссийской научно-методической конференции "Телематика'2004", (г.Санкт-Петербург, 2004); на Международных научно-технических конференциях "Интеллектуальные системы" (А18'05) и "Интеллектуальные САПР" (САГ>-2005), (г.Москва, 2005); на Международной открытой научной конференции "Современные проблемы информатизации в моделировании и программировании", (г.Воронеж, 2006). Результаты диссертационной работы были освещены в 8 печатных работах.

Структура и объем диссертации. Материал основной части диссертационной работы изложен на 149 страницах машинописного текста. Диссертация состоит из введения, четырех разделов, заключения и списка литературы из 107 наименований, содержит 27 рисунков, 3 таблицы.

СОДЕРЖАНИЕ РАБОТЫ

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

В первом разделе диссертации производится анализ развития методов и моделей построения комплексов программ. В процессе анализа эволюции языков программирования были выделены главные критерии оценивания языков программирования:

1) эффективность выполнения программы на современных ЭВМ;

2) эффективность процесса разработки программы.

Основные движущие силы эволюции языков программирования:

1) стремление разработчиков к созданию более совершенных программ;

2) необходимость создания языков программирования, максимально реализующих новые возможности усовершенствования ЭВМ и операционных систем;

3) стремление к повышению эффективности процесса разработки программной продукции;

4) увеличение разнообразия и повышение сложности задач, решаемых с помощью ЭВМ.

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

Исходя из развития языков программирования, можно ввести их классификацию в зависимости от рассматриваемых признаков. Чаще всего в качестве основания деления языков программирования выбирается парадигма программирования (рис. 1).

Рассмотрим классификацию языков программирования, используя другие признаки:

1. По степени ориентации на специфические возможности ЭВМ:

• машинно-зависимые;

• машинно-независимые.

2. По степени детализации алгоритма получения результата:

• языки низкого уровня;

• языки высокого уровня;

• языки сверхвысокого уровня.

3. По степени ориентации на решение определенного класса задач:

• проблемно-ориентированные;

• универсальные.

4. По возможности дополнения новыми типами данных и операциями:

• расширяемые;

• нерасширяемые.

5. По возможности управления реальными объектами и процессами:

• языки систем реального времени;

• языки систем условного времени.

6. По способу получения результата:

• процедурные;

• непроцедурные.

7. По типу решаемых задач:

• языки системного программирования;

• языки прикладного программирования.

8. Непроцедурные языки по типу встроенной процедуры поиска решений делятся на:

• реляционные;

• функциональные;

• логические.

Рис. 1. Классификация парадигм программирования.

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

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

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

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

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

Исходя из анализа развития методов и моделей построения комплексов программ, текущей ситуации в проблемной области и проблем сложных систем можно выработать требования, предъявляемые к среде разработки комплексов программ, выполнение которых необходимо для выхода из текущего кризиса программирования:

1) Ориентированность на пользователя-непрограммиста.

2) Разработка средств управления сложностью.

3) Поддержка не только синтеза системы, но и анализа, хотя бы на описательном уровне. Также должна существовать возможность перехода от задачи реализации системы к задаче поиска (исследования) ее вида.

4) Гибкое управление уровнем абстрагирования.

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

6) Повторное использование конструкций, как на уровне любой работающей подсистемы, так и на уровне модели предметной области.

7) Контроль ошибок. Пользователь должен быть поставлен в такие условия работы, при которых ему не только будет легче обнаруживать ошибки, но и гораздо труднее их совершать.

8) Автоматическая реализация параллельности.

9) Совместимость как можно с большим количеством языков программирования.

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

В качестве основных "кирпичиков" для построения сложных программных систем целесообразно использовать понятия: система, связи и модели.

Формально под программной системой будем понимать объект:

*=[Х,У,С,М], (1)

где X - множество входов; У - множество выходов; С - множество сигналов управления; М - множество моделей.

Множества Х,У разных систем образуют связи между системами.

Связь между программными системами Я; = ,У^Сп ] и 8] = [XJМ!] определяется следующим образом:

С* А»5/) = (ск1 : у[ -> х{) , (2)

где у[ eY¡■,x¡eXJ,.

Все связи между двумя подсистемами S¡ и образуют множество связей

(Си

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

Каждая система содержит множество моделей М = {/И,,..., /Иу,..., } . Минимальная мощность М равна 1. Причем одна из моделей является выделенной - т.. Именно она и определяет текущее преобразование входов в выходы.

Под моделью системы будем понимать упрощенное отображение существенных сторон реальной системы, выраженное в некоторой форме и

описывающее правило (оператор) преобразования входных X сигналов в выходные У.

Г = М(Х),

где М - модель системы.

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

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

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

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

Заметим, что пользователь не обязательно имеет дело напрямую с некоторым языком, в общем случае построение модели может происходить через интерфейс, в том числе возможно и интеллектуальный. Способ взаимодействия разработчика системы (модели системы) и модели проблемной области определяет разработчик языка описания моделей.

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

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

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

ограничений на языки описания модели. Ограничения накладываются только на имя новой системы, названия и типы входов и выходов. Менять их можно соответственно только в модели базовой системы.

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

Модель должна позволять рассматривать проблему с различной степенью полноты (настраиваемый инструмент). С помощью потока управления возможна адаптация модели прямо во время работы системы.

Для реализации конкретной модели системы с помощью понятий некоторой предметной области пользователю надо выбрать конкретный язык описания модели. Чтобы был возможен выбор из некоторого банка языков, к каждому ЯОМ надо прикрепить некоторое описание. Для того чтобы компьютер понимал модель, описанную на ЯОМ, необходим интерпретатор ЯОМ. И, наконец, необходим некоторый интерфейс, с помощью которого пользователь сможет работать с языком описания модели и его интерпретатором. Введем конструктор модели, который можно описать следующим образом:

КМ = [ЯОМ, ИЯОМ, ИКМ,ОКМ], (3)

где ЯОМ - язык описания моделей, ИЯОМ - интерпретатор языка описания моделей, ИКМ - интерфейс конструктора модели, ОКМ - описание конструктора модели.

ИЯОМ преобразует описание модели системы в вид, понимаемый

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

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

уже готовой модели системы, вместо описания новой модели с помощью универсального ЯОМ или специализированного ЯОМ предметной области, но в этом случае надо готовую модель настроить на конкретную систему. В таком конструкторе моделей (настраиваемая модель) может и не быть как такового языка описания моделей. Пользователь заполняет параметры настраиваемой модели через интерфейс конструктора модели, а интерпретатор ЯОМ выполняет скорее функции обработчика изменений настраиваемой модели.

Таким образом, конструкторы модели можно разделить на три типа:

1) на базе универсального языка описания моделей;

2) на базе специализированного языка конкретной предметной области;

3) настройщик готовой модели.

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

Представим иерархию конструкторов модели и их групп в виде выходящего дерева ( орграф с источником, не имеющий полуконтуров):

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

где хнач - начальная группа (источник исходящего дерева), X - множество

групп, Xш - множество конструкторов модели. Причем на них и дуги накладываются ограничения:

о = (х,и),

(4)

(5)

УхеХ (оф)> 0)

и/

V* е Х1Ш (ос1 (х) = 0)

Используются понятия полустепень захода 1<1(л;) и полустепень исхода ос!(х) Пример графа иерархии предметных областей и их групп приведен на рис. 2.

Рис 2. Граф иерархии предметных областей и групп

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

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

Для включения в ОКМ любого конструктора модели (аналогично для

групп) •Х'КМI (г = \,пкм ) определим нечеткий [88,89] словарь термов I-ого конструктора модели:

ТКМ1 = {< Мткм. ) / (КМ; >}>/= 1, т<

(6)

где - количество термов I -ого конструктора модели; ^КМ^ ^ ,

Т Т

множество термов -1 КМ-, является носителем нечеткого множества КМ1 ;

МТкм. КМj ) - вес терма в ОКМ (степень его адекватности конструктору модели).

Можно ввести понятие общего словаря термов:

п

Т = 1)ТКМ1 (7)

1=1

где Ткщ . четкое множество термов I -ого конструктора модели, ^

количество конструкторов модели.

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

,__, —>

тз = {< ЦТз ) / tЗJ >},/ = ! ,к (8)

где к - количество термов в запросе; Т3 - четкий терм запроса,

множество термов Т3 является носителем нечеткого множества Т3, Т3 С2Т;

Мт3 ) - вес терма в запросе (степень его важности для результатов поиска).

На основе нечетких множеств термов запроса и термов конструкторов модели можно проранжировать конструкторы модели, используя оценки:

к

щ- к ,1=1,и (9)

где п - количество предметных областей; к - количество термов в запросе; - вес терма в запросе (формула (8)); Мтш (

(V

- вес терма "3,в ОКМ I -го конструктора модели (формула 6); если ^з. ^ , то п ) = 0 .

Благодаря нормированию 0 < <И( < 1. <У(- = 1 свидетельствует об

абсолютном соответствии запроса и конструктора модели, 0)1 = 0 о полном их несоответствии.

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

1. Создание новой программной системы;

2. Определение входов-выходов в текущей системе;

3. Определение связей текущей программной системы с другими программными системами, в том числе возможно с операционной системой;

4. Реализация одной или нескольких моделей системы

5. Выбор текущей (активной) модели

6. Выполнение программной системы (выполняется средой разработки без активного вмешательства разработчика).

Определенные выше действия можно выполнять параллельно, осуществлять возвраты на любой шаг в любой момент времени: изменять входы-выходы, переопределять связи с другими системами, расширять набор моделей системы,

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

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

Инкапсуляция подразумевает объединение и защиту кода и данных в некоторой сущности. Инкапсуляция необходима, если к создаваемому проекту предъявляются требования надёжности и модернизируемости. Главным следствием инкапсуляции можно назвать необычайно высокую гибкость и настраиваемость системы. На основе этого возможен переход к иному подходу к разработке программного обеспечения - подходу, основанном на макетировании и моделировании. За соблюдением инкапсуляции должна следить среда разработки, которая должна разрешать работу с подсистемой только через внешний интерфейс (входной, выходной потоки и поток управления). Автоматическая инкапсуляция позволит безбоязненную смену модели подсистемы не только на этапе проектирования, но и при работе программной системы.

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

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

Готовые системы хранятся в хранилище, для удобства работы с ними используется классификация систем. Функционально родственные системы объединяются в классы, которые, в свою очередь, объединяются в классы следующего уровня иерархии. Классы не могут прямо использоваться как системы. Они только несут информацию об общих функциональных свойствах систем, входящих в этот класс.

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

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

Общая последовательность действий, выполняемая при разработке модели системы:

1. Добавление новой модели во множество моделей текущей системы.

2. Выбор конструктора модели наиболее подходящего для текущей системы и конкретного пользователя.

3. Реализация модели системы выбранным конструктором модели.

4. Разработка подсистем, выделенных разработчиком при конструировании модели системы средствами конструктора.

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

Четвертый раздел посвящен проектированию среды разработки сложных программных систем. Общая структура среды разработки изображена на рис. 3.

Интерфейс разработчика предоставляет графические средства пользователю для работы со средой разработки.

КПС - компонент поддержки системы. Позволяет работать разработчику с текущей программной системой, т.е. создавать, редактировать, удалять. Также позволяет работать с множеством моделей системы, в том числе выбирать текущую модель. При переходе на другой уровень абстрагирования данные программной системы записываются в БД, а в КПС загружаются новые данные из БД с помощью компонента поддержки. Редактирование конкретной модели происходит в КПМ.

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

выходах, входах-выходах от КПС. Настройки модели, а также файл ее описания на ЯОМ сохраняются через компонент поддержки в БД.

Рис.3. Архитектура среды разработки сложных программных систем

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

БЗ - база знаний. Содержит полный набор конструкторов моделей и информацию о них.

Интерфейс КМ — интерфейс конструктора моделей (ИКМ). Предоставляет компоненту поддержки моделей и разработчику стандартизированный интерфейс к конкретному конструктору моделей. Имеет пять обязательных так называемых точек входа (точек подключения): описание КМ, создание модели, редактирование модели, удаление модели, выполнение модели, тестирование. Точки подключения (вызова) стандартны и для всех конструкторов моделей одинаковы, но содержание интерфейса КМ может быть совершенно разным.

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

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

компонентов с БД осуществляется только с помощью компонента поддержки. Также позволяет осуществлять взаимодействие разных пользователей.

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

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

Интерфейс владельца КМ — интерфейс владельца конструктора моделей. Предоставляет графические средства для работы с компонентом поддержки множества КМ и с компонентом поддержки.

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

Интерфейс администратора предоставляет администратору графические средства для работы с компонентами поддержки и администрирования.

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

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

ОСНОВНЫЕ РЕЗУЛЬТАТЫ РАБОТЫ

Основное внимание было уделено проблемам разработки методов и моделей построения комплексов программ.

При решении этих проблем были получены следующие результаты:

• разработаны базовые модели и принципы построения комплексов программ, основанные на наработках, полученных при проектировании, анализе и синтезе сложных или больших систем;

• разработана модель конструктора моделей системы, отличающаяся от известных большей универсальностью, общностью подхода к реализации различных видов моделей системы;

• разработана модель поиска конструктора моделей адекватного текущей задаче и текущему пользователю, отличающаяся от известных применением алгоритмов кластерного анализа и нечеткой логики;

• реализованы прикладные средства среды разработки комплексов программ и выработана методология проектирования систем в этой среде, на основе предложенных в диссертационной работе методов и моделей.

ПУБЛИКАЦИИ ПО ТЕМЕ ДИССЕРТАЦИИ

1. Драгныш Н.В. Концептуальные положения на уровне систем для новой среды проектирования/ Информационные технологии моделирования и управления. - Воронеж: Научная книга, Выпуск 1(26), 2006.

2. Астанин C.B., Драгныш Н.В. Язык описания задач / Информационные технологии моделирования и управления. — Воронеж: Научная книга, Выпуск 2(27), 2006.

3. Астанин C.B., Драгныш Н.В., Жуковская Н.К. Особенности разработки обучающей экспертной системы / Перспективные информационные технологии и интеллектуальные системы. - Таганрог: ТРТУ, 2002.-№1(9).

4. Астанин C.B., Драгныш Н.В. Базовые принципы построения среды проектирования сложных систем / Труды XI Всероссийской науч.-мет. конф. «Телематика-2004».-СПб. 2004. Т.1.

5. Astanin S.V., Dragnysh N.V. Mathematical fundamentals of complicated program systems design environment construction./ Proceeding of the International Scientific Conferences "Intelligent Systems (IEEE AIS'03)" and "Intelligent CAD's (CAD-2003)". Scientific publications in 3 volumes. 2005. vol. 3.

6. Астанин C.B., Драгныш Н.В. Математические основы построения среды проектирования сложных программных систем Труды Международных научно-технических конференций "Интеллектуальные системы"(А18'05) и "Интеллектуальные САПР"(СА1)-2005). Научное издание в 4-х томах. М.: ФИЗМАТЛИТ, 2005, Т.4.

7. Драгныш Н.В. Требования к среде разработки сложных программных систем/Сборник трудов по итогам XI Международной открытой научной конференции "Современные проблемы информатизации в моделировании и программировании", Воронеж, 2006.

8. Драгныш Н.В. Язык запросов среды разработки сложных программных систем Сборник трудов по итогам XI Международной открытой научной конференции "Современные проблемы информатизации в моделировании и программировании", Воронеж, 2006.

9. Астанин C.B., Драгныш Н.В. Архитектура среды разработки сложных программных систем / Известия ТРТУ. Темат. выпуск «Интеллектуальные САПР». - Таганрог: ТРТУ, 2006. -№ 8(63).

Личный вклад автора в работах, написанных в соавторстве, состоит в следующем:

• работа [2] - применение языка описания задач в качестве ЯОМ;

• работа [3] - модели обучающей ЭС, построение моделей компонентов.

• работа [4] — основные принципы построения среды проектирования;

• работы [5], [6] - модели построения комплексов программ;

• работа [9] - общая архитектура среды разработки комплексов программ.

Соискатель -ftiBr-Драгныш

Типография Таганрогского государственного радиотехнического университета. Заказ № .Тираж 100 экз. 2006г.

Оглавление автор диссертации — кандидата технических наук Драгныш, Николай Васильевич

ВВЕДЕНИЕ.

1. АНАЛИЗ РАЗВИТИЯ МЕТОДОВ И МОДЕЛЕЙ ПОСТРОЕНИЯ КОМПЛЕКСОВ ПРОГРАММ.

1.1. Эволюция моделей построения комплексов программ.

1.2. Классификация методов и моделей построения комплексов программ и кризис их развития на современном этапе.

1.3. Основные методологии построения комплексов программ.

1.4. Выводы.

2. МАТЕМАТИЧЕСКИЕ ОСНОВЫ ПОСТРОЕНИЯ КОМПЛЕКСОВ ПРОГРАММ.

1 • 2.1. Проблема сложности создания комплексов программ и разработка требований к среде их проектирования.

2.2. Базовые модели построения комплексов программ.

2.3. Модель конструктора моделей.

2.4. Организация хранения и поиска конструкторов моделей в базе знаний.

2.5. Выводы.

3. РАЗРАБОТКА МЕТОДОЛОГИИ ПОСТРОЕНИЯ КОМПЛЕКСОВ

• ПРОГРАММ.

3.1. Концептуальные положения разработки комплексов программ.

3.2. Разработка моделей проектируемой программной системы.

3.3. Разработка конструктора моделей.

3.4. Выводы.

4. ПРОЕКТИРОВАНИЕ СРЕДЫ РАЗРАБОТКИ КОМПЛЕКСОВ ПРОГРАММ. ш 4.1. Архитектура среды разработки комплексов программ.

4.2. Сравнение эффективности разработки комплексов программ.

4.3. Особенности реализации среды разработки комплексов программ. 128 4.3. Выводы.

Введение 2006 год, диссертация по информатике, вычислительной технике и управлению, Драгныш, Николай Васильевич

Актуальность проблемы. Все более ускоряющаяся компьютеризация всех областей человеческой деятельности приводит к огромному росту потребности в программных продуктов, которые будут удовлетворять потребностям все новых пользователей. При этом, если на заре компьютерной эры пользователями компьютеров являлись хорошо обученные профессионалы, которых были единицы, то в настоящее время уровень владения языками программирования и даже просто компьютерной терминологией большинства пользователей чрезвычайно низкий. В то же время эволюция языков программирования идет по пути повышения сложности, громоздкости. Для написания простейшей программы требуется хорошее знание основ языка программирования, что является большой редкостью среди работников тех областей, в которых компьютеры появились не так давно. Возникает необходимость привлечения профессиональных программистов, число которых несомненно растет, но не с такой скоростью, с какой растет потребность в их услугах. С другой стороны, эти профессионалы зачастую не владеют проблемной областью того производства, программный продукт для которого их пригласили создавать. Получается, что будущие или настоящие пользователи компьютеров не в состоянии написать программный продукт из-за непреодолимой для них сложности языков программирования, а профессиональные программисты, которых не хватает, вынуждены каждый раз тратить значительное время на изучение предметной области, в которой будет использоваться их программный продукт. Причем далеко не всегда программист способен за столь короткий срок овладеть темой в желаемом объеме. Хотелось бы, чтобы специалист, работающий в своей предметной области, мог сам написать для себя необходимое программное обеспечение. Но пользователи вынуждены эксплуатировать уже готовые программные продукты, которые, даже с учетом какой-то минимальной возможности модификации под конкретное производство, часто не удовлетворяют требованиям данной предметной области, потому что эти программы унифицированы для повышения количества пользователей в ущерб соответствию потребностям каждого воспользовавшегося этим программным продуктом.

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

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

Разработка программных систем пользователем-непрограммистом с использованием моделей и недоопределенные модели рассматривались в работах Нариньяни A.C., Швецова И.Е., Телермана В.В. Мультипарадигматическому программированию посвящены работы Яхно Т. М., Страуструпа Б. Значительный научный вклад в решение проблем представления и обработки не полностью определенных знаний, представления знаний, описывающих задачи, решаемые в компьютерной человеко-машинной системе гибридного интеллекта, объединения различных видов представления знаний внесли Берштейн JI.C., Мелихов А.Н., Д.Дюбуа, Астанин C.B., Болотова JI.C.

Целью исследований является повышение эффективности разработки сложных программных систем пользователем-непрограммистом.

Для достижения поставленной цели в диссертационной работе решаются следующие задачи:

1. анализ существующих методов и средств создания программных систем;

2. анализ сложных систем и понятия сложности;

3. определение основных факторов, влияющих на разработку сложных программных систем;

4. разработка математических моделей построения комплексов программ;

5. выработка методики разработки программных систем;

6. построение программного обеспечения среды разработки сложных комплексов программ.

В диссертации разрабатываются, исследуются и защищаются следующие основные положения:

• моделирование основ разработки сложных комплексов программ;

• модель конструктора моделей, поиск конструкторов моделей;

• методология разработки сложных комплексов программ;

• архитектура среды разработки сложных программных систем.

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

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

• моделирования основ разработки сложных программных систем;

• модели конструктора моделей;

• модели и методы организации хранения и поиска конструкторов моделей.

Практическая ценность и рекомендации по применению.

1. Выявление недостатков основного пути, по которому идут современные программные технологии и который привел к кризису программирования, позволяет найти пути выхода из него и методы разработки сложных программных систем, в которых эти недостатки будут сведены к минимуму.

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

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

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

Апробация работы. Результаты работы докладывались и обсуждались на научно-практических конференциях:

• XI Всероссийская научно-методическая конференция "Телематика'2004", Санкт-Петербург, 2004;

• Международные научно-технические конференции "Интеллектуальные системы" (AIS'05) и "Интеллектуальные САПР" (CAD-2005), Москва, 2005;

• Международная открытая научная конференция "Современные проблемы информатизации в моделировании и программировании", Воронеж, 2006.

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

Объем работы. Материал основной части диссертационной работы изложен на 149 страницах машинописного текста. Диссертация состоит из введения, четырех разделов, заключения и списка литературы из 107 наименований, содержит 27 рисунков, 3 таблицы.

Заключение диссертация на тему "Исследование и разработка методов и моделей построения комплексов программ"

4.3. Выводы

1. Разработанная архитектура среды разработки удовлетворяет современным требованиям, выполнение которых необходимо для выхода из текущего кризиса программирования.

2. Использование среды разработки сложных программных систем, построенной на основе предложенной архитектуры, при должной поддержке разработчиков конструкторов моделей, позволит пользователю-непрограммисту эффективно использовать ЭВМ для решения своих прикладных задач.

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

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

Заключение

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

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

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

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

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

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

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

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

Библиография Драгныш, Николай Васильевич, диссертация по теме Математическое моделирование, численные методы и комплексы программ

1. Лавров С.С. Программирование. Математические основы, средства, теория. СПб.: БХВ-Петербург, 2001. - 320 е.: ил.

2. Непейвода H.H. Основания программирования М.: Институт компьютерных исследований, 2003. - 852с.: ил.

3. Грис Д. Наука программирования /Пер. с англ. М.: Мир, 1984. -416с.: ил.

4. Дейкстра Э. Дисциплина программирования /Пер. с англ. М.: Мир, 1978.-275с.

5. Морозов Л.М. и др. Методологические основы теории эффективности: Учебное пособие. Л.: ВИКИ им. А.Ф.Можайского, 1982. - 236с.

6. Липаев В. В. Качество программного обеспечения М.: Финансы и статистика, 1983. - 263с.: ил.

7. Язык компьютера /О.Вудз Д. и др.; Пер. с англ. М.: Мир, 1989. -239с: ил.

8. Абель П. Язык Ассемблера для IBM PC и программирования /Пер. с англ. М.: Высшая школа, 1992. - 447с.

9. Пустоваров В. И. Язык ассемблер в программировании информационных и управляющих систем: Учебное пособие. Киев; М.: ВЕК, ЭНТРОП, 1998. - 301с.

10. Ю.Вирт Н. Системное программирование. Введение /Пер. с англ. М.: Мир, 1977.-437с.: ил.

11. Бек, Леланд Л. Введение в системное программирование /Пер. с англ. М.: Мир,1988. - 448с.

12. Уорд Т., Бромхед Э. Фортран и искусство программирования персональных ЭВМ /Пер. с англ. М.: Радио и связь, 1993. - 351с.

13. З.Докукина Т. К. Программирование и алгоритмические языки М.: Машиностроение, 1992.-495с.: ил.

14. И.Белецкий Я. Турбо Паскаль с графикой для персональныхкомпьютеров /Пер. с польского. М.: Машиностроение, 1991. - 320с.: ил.

15. Дал У. и др. Структурное программирование /Пер. с англ. М.: Мир,• 1975.-243с.

16. Лингер Р. и др. Теория и практика структурного программирования /Пер. с англ. М.: Мир, 1982. - 406с.

17. П.Калинин А. Г., Маукевич И. В. Универсальные языкипрограммирования: Семантический подход М.: Радио и связь, 1991. -398с.

18. Языки программирования ада, си, паскаль. Сравнение и оценка /Фьюэр А. и др. /Пер. с англ. М.: Радио и связь, 1989. - 365с.

19. Бочков С. О., Субботин Д. М. Язык программирования Си для персонального компьютера М.: СП Диалог, Радио и связь, 1990.383с.

20. Касаткин А. И. Профессиональное программирование на языке Си. Системное программирование Минск: Вышэйш. шк., 1993. - 301с.: ил.

21. Хенкемане Д. Программирование на С++ СПб.: Символ-Плюс, 2002. -415с.: ил.

22. Страуструп Б. Язык программирования С++: специальное издание /Пер. с англ. М.: БИНОМ, 2005. - 1098с.

23. Шилдт Г. Полный справочник по С++ М.: Вильяме, 2003. - 797с.: ил.

24. Будилов В. Интернет-программирование на Java СПб.: БХВ-Петербург, 2003. - 694с.: ил.

25. Арчер Т. Основы С#: новейшие технологии -М.: Русская Редакция, 2001.-417с.: ил.

26. Шилдт Г. С#: учебный курс СПб.: Питер, 2003. - 508с.: ил.

27. Гилман JI., Роуз А. Курс АЛЛ: диалоговый подход /Пер. с англ. М.: Мир, 1979.-542с.: ил.

28. Грисуолу Д. и др. Язык программирования Снобол М.: Мир, 1980. -268с.: ил.

29. Левин Д. Я. Язык сверхвысокого уровня СЕТЛ и его реализация (для ЭВМ БЭСМ-6) Новосибирск: Наука. Сиб. отд-ние, 1983. - 160с.

30. Лорьер Ж.-Л. Системы искусственного интеллекта /Пер. с фр. М.: 1991.-568с.

31. Уилтон П. JavaScript: основы СПб.: Символ-Плюс, 2002. - 1051с.:ил.

32. Хиллер С. Microsoft Visual Basic, Scripting Edition в действии СПб.: Питер, 1997.-437с: ил.

33. Матросов А. В., Чаунин М. П. Perl: программирование на языке высокого уровня: учебник для студентов вузов СПб.: Питер, 2003. -608с.: ил.

34. Сузи Р. Python СПб.: BHV, 2002. - 747с.: ил.

35. Андрианов А. Н. и др. Программирование на языке Симула-67 М.: Наука, 1985.-288с.: ил.

36. Зб.Эпиенс А. Принципы объектно-ориентированной разработки программ М.: Вильяме, 2002. -495с.:ил.

37. Тан К. Ш. и др. Символьный С++: введение в компьютерную алгебру с использованием объектно-ориентированного программирования /Пер. с англ. М.: Мир, 2001. - 622с.

38. Эндрюс Г. Р. Основы многопоточного параллельного ираспределенного программирования М.: Вильяме, 2003. — 505с.: ил.

39. Чефранов А. Г. Параллельное программирование: Учебное пособие для вузов /ТРТУ Таганрог: Издательство ТРТУ, 2000. - 111с.: ил.

40. Филд А., Харрисон П. Функциональное программирование /Пер. с англ. М.: Мир, 1993. - 637с.: ил.

41. Хендерсон П. Функциональное программирование: Применение и реализация /Пер. с англ. М. Мир, 1983. - 349с.

42. MacLennan В. J. Functional programming: Practice and theory. Reading: Addison-Wesley Publishing Company, 1990. - 596p.43 .Язык пролог в пятом поколении ЭВМ: Сб. ст. /Пер. с англ. М.: Мир, 1988.-501с.

43. Логический подход к искусственному интеллекту: от классической логики к логическому программированию /Пер. с фр. М.: Мир, 1990. -429с.: ил.

44. Логическое программирование: Сб. ст. /Пер. с англ. и фр. /Под ред. Агафонова В. Н. М.: Мир, 1988. - 366с.

45. Хоггер К. Д. Введение в логическое программирование /Пер. с англ. -М.: Мир, 1988. 348с.: ил.

46. Lloyd J. W. Foundation of Logic Programming New-York: Springer-Yeriag, 1984. - 124p.48.http://macedu.hoha.ru/ Генеалогия языков программирования.

47. Хювенен Э., Сеппянен Й. Мир Лиспа. В 2-х т. Т.1: Введение в язык Лисп и функциональное программирование М.: Мир, 1990. - 447с.

48. Федюшин Д. Парадигмы программирования // ИНФО, 4, 1991, с. 11-15; 5, 1991, с.13-17.51 .http://it.kgsu.ru/Lisp/oglav2.html Классификация парадигм программирования.

49. Евтушкин А. Диалектика и жизнь информационных технологий. /"Компьютера", 21.08.200.1.

50. Астанин С.В., Драгныш Н.В. Базовые принципы построения среды проектирования сложных систем / Труды XI Всероссийской науч.-мет. конф. «Телематика-2004».-СПб. 2004. Т.1., с. 202-203

51. Драгныш Н.В. Требования к среде разработки сложных программных систем/Сборник трудов по итогам XI Международной открытойнаучной конференции "Современные проблемы информатизации в моделировании и программировании", Воронеж, 2006, с. 226-227

52. Хэмминг Р. Проблема в программировании. /"Computerworld" , № 07/1997.

53. Аджиев В. Объектная ориентация: философия и футурология. /"Открытые системы", № 6(20)/1996.

54. Мейер Б., Бодуан К. Методы программирования т. 1-2 /Пер. с фр. М.: Мир, 1982. т. 1 - 352с., т.2 - 368с.

55. Методы программирования / Минакова Н. И. и др. М.: Вузовская книга, 2000. - 280с.: ил.

56. Невская Е. С. и др. Искусство программирования М.: Вузовская книга, 2002. - 207с.

57. Буч Г. Объектно-ориентированное проектирование с примерами применения /Пер. с англ. М.: АО «И. В. К.», 1992. - 519с.: ил.

58. Буч Г. Объектно-ориентированное проектирование с примерами приложений на С++ /Пер. с англ. М.: Бином, 2001. - 666с.: ил.

59. Гома X. UML: проектирование систем реального времени, параллельных и распределенных приложений М.: ДМК, 2002. -698с.: ил.

60. Рамбо Д. и др. UML: спец. справочник СПб.: Питер, 2002. - 652с.: ил.

61. Чарнецки К., Айзенекер У. Порождающее программирование: методы, инструменты, применение. Для профессионалов (Для профессионалов) / Пер. с англ. М.: Питер-Трейд, 2005. - 736с.: ил.

62. Астелс Д. Практическое руководство по экстремальному программированию М.: Вильяме, 2002. - 317с.: ил.

63. Приемы объектно-ориентированного проектирования: Паттерны проектирования /Гамма Э. и др. СПб.: Питер, 2001. - 366с.: ил.• 69.Kisilev I. Aspect-Oriented Programming with AspectJ. Indianapolis, IN,

64. Бусленко Н. П. и др. Лекции по теории сложных систем М.: Советское радио, 1973. - 440с.: ил.

65. Молчанов А. А. Моделирование и проектирование сложных систем -Киев: Выща школа, 1988. 360с.: ил.

66. Шарашакнэ А. С. и др. Сложные системы М.: Высшая школа, 1977. -248с.: ил.

67. Хопкрофт Д. и др. Введение в теорию автоматов, языков и вычислений М.: Вильяме, 2002. - 527с.: ил.

68. Основы кибернетики: теория кибернетических систем: учеб. пособие для студ. вузов / Ю. И. Дегтярев и др. М.: Высшая школа, 1976. -408с.: ил.

69. Астанин C.B., Драгныш Н.В. Язык описания задач / Информационные технологии моделирования и управления. Воронеж: Научная книга, Выпуск 2(27), 2006, с. 223-230.

70. Астанин C.B., Захаревич В.Г. Информационно-советующие комплексы систем гибридного интеллекта Таганрог: Изд. ТРТУ, 1997.

71. Галаган Н. И. , Довгяло Т. П. Язык описания задач //Кибернетика -Киев-Наукова думка, 1990, №1.

72. Астанин C.B., Захаревич В.Г. Семантический язык для представления лингвистических знаний по оценке состояния человека-оператора //Тезисы докладов 4-й Всесоюзной научно-технической конференции "Проблемы техники в медицине", Тбилиси, ч 1.

73. Астанин C.B., Захаревич В.Г. Представление знаний в экспертной диагностирующей системе ЭСОС //Тезисы докладов 2-й Всесоюзной конференции "Информатика-87",Ереван, 1987.

74. Астанин C.B. Декларативный язык описания задач //Тезисы докладов Всесоюзной научно практической конференции "Гибридные интеллектуальные системы" -Ростов-на-Дону Терскол, ч 1, 1991.

75. Астанин C.B. Синтаксис и семантика языка описания задач // Материалы 24-й научно-технич.конф., Таганрог, 1993.

76. Астанин C.B., Омельницкий В.И. Разработка декларативного языка гибридного типа для представления знаний. В сб. "Интеллектуальные САПР" Таганрог: Изд.ТРТУ, 1997.

77. Болотова Л.С. и др. Системы искусственного интеллекта. Теоретические основы и формальные модели представления знаний. -М.гМИРЭА, 2001.

78. Берштейн Л.С., Боженюк A.B. Введение в теорию графов: Учебное пособие. Таганрог: Изд-во ТРТУ. 1999.

79. Ope О. Теория графов /пер. с англ. М.: Наука, 1968. - 352 е.: ил.

80. Зыков A.A. Основы теории графов М.: Наука, 1987. - 384 е.: ил.

81. Харари Ф. Теория графов /пер. с англ. 2-е изд. - М.: УРСС, 2003. -300 е.: ил.

82. Татт У. Теория графов /пер. с англ. М.: Мир, 1988. - 424 е.: ил.

83. Драгныш Н.В. Язык запросов среды разработки сложных программных систем Сборник трудов по итогам XI Международной открытой научной конференции "Современные проблемы информатизации в моделировании и программировании", Воронеж, 2006, с.227-228.

84. Zadeh L.A. Fuzzy Sets // Information and Control. — 1965. V. 8. P. 338353.

85. Мелихов A.H., Берштейн Л.С. Конечные четкие и расплывчатые множества. 4.2 Расплывчатые множества. Таганрог, ТРТИ 1981.

86. Драгныш Н.В. Концептуальные положения на уровне систем для новой среды проектирования/ Информационные технологии моделирования и управления. Воронеж: Научная книга, Выпуск 1(26), 2006, с. 79-84.97.http://www.alexus.ru Усов А. Письма про ООП.

87. Заде Л. Понятие Лингвистической переменной и его применение к принятию приближенных решений. М.: Мир, 1976. - 165с.

88. Астанин C.B. Математическая логика и теория алгоритмов. Учебное пособие. Таганрог: Изд-во ТРТУ, 2004. - 153с.

89. Чернухин Ю.В. Нейропроцессорные сети: Монография. Таганрог: Изд-во ТРТУ, 1999. 439с.

90. Мкртчян С.О. Нейроны и нейронные сети. М.: Энергия, 1971. 232с.

91. Алферова 3. В. Теория алгоритмов М.: Статистика, 1973. - 164с.: ® ил.

92. Мелихов А. Н., Кодачигов В. И. Теория алгоритмов и формальных языков Таганрог; Изд-во ТРТИ, 1983. - 69с.: ил.

93. Цехоня В. И. Системное программирование: основы теории построения компиляторов Таганрог: Изд-во ТРТИ, 1990. - 116с: ил.

94. Астанин C.B., Драгныш Н.В. Архитектура среды разработки сложных программных систем / Известия ТРТУ. Тематический выпуск «Интеллектуальные САПР». Таганрог: Изд-во ТРТУ, № 8(63), 2006, с. 169-172.

95. Астанин C.B., Драгныш Н.В., Жуковская Н.К. Особенности разработки обучающей экспертной системы / Перспективные информационные технологии и интеллектуальные системы. -Таганрог: ТРТУ, 2002.-№1(9).

96. Холстед M. X. Начала науки о программах / Пер. с англ. М.: Финансы и статистика. 1981г. 128 е., ил.