Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по программированию.docx
Скачиваний:
11
Добавлен:
01.05.2025
Размер:
683 Кб
Скачать
☆

Экзаменационный вопрос № 3 базовые канонические структуры алгоритмов

Описание последовательности действий блоками

- одно или несколько - циклический - ввод

вычислений процесс исходных

данных

- решение или проверка - вывод результатов на печать

условия

- - вычисл. в подпрограмме - начало и конец блок-схемы алгоритма

Существует три типа алгоритмов:

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

начало

a,b,c,d

X=a+b

Y=c+d

Z=x+y

z

z = x+y;

x = a+b;

y = c+d

  1. Р

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

a, b

a+b, a<b

y = a+b, a=b

a

<b

>b

a*b, a>b

Y = a+b

Y = a-b

Y = a-b

y

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

z = x+y начало

x = 5 ввод x,h

y

Y=1,20,h

= 1,20

h

Z=x+y

= 1

Z

Экзаменационный вопрос № 4

СТРУКТУРНЫЙ МЕТОД ПРОГРАММИРОВАНИЯ

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

котором все составляющие компоненты взаимосвязаны.

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

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

При структурном анализе применяются три наиболее распространенные модели проектирования программ:

  • SADT (Structured Analysis and Design Technique) - модель и соответствующие функциональные диаграммы;

  • SSADM (Structured Systems Analysis and Design Method) - метод программирования;

  • IDEF0 (Integrated Definition Functions) - метод создания функциональной модели программы, IDEF1 - информационной модели программы, IDEF2 - динамической модели программы.

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

Экзаменационный вопрос № 5

МЕТОД ФУНКЦИОНАЛЬНОГО МОДЕЛИРОВАНИЯ ПРОГРАММ - SADT  (STRUCTURED ANALYSIS AND DESIGN TECHNIQUE)

На основе метода, предложенного Д.Россом, разработана методология , которая является основной частью программы ICAM (Интеграция компьютерных и промышленных технологий).

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

Основные элементы этого метода базируются на ряде положений:

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

  • ∙ наличие ограничений на количество блоков (от 3 до 6) на каждом уровне декомпозиции и связей диаграмм через номера этих блоков;

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

  • разделение входов и операций управления;

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

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

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

Экзаменационный вопрос № 6

МЕТОД СТРУКТУРНОГО ПРОЕКТИРОВАНИЯ ПРОГРАММ - SSADM  (STRUCTURED  SYSTEMS ANALYSIS AND DESIGN METHOD)

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

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

Данный метод представлен моделью со следующими этапами разработки программного проекта:

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

  • логическое проектирование и спецификация системы;

  • физическое проектирование структур данных в соответствии с выбранной иерархической структурой;

  • конструирование и тестирование системы.

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

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

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

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

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

Конструирование - это программирование элементов системы и их тестирование на наборах данных, которые подбираются на ранних этапах разработки системы.

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

Экзаменационный вопрос № 7

ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ МЕТОД

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

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

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

Под процессом в ООП понимается проектирование классов объектов и взаимоотношений между ними.

Процесс разработки включает в себя следующие этапы:

  • ·анализ – создание объектной модели (ОМ), в которой объекты отражают реальные ее сущности и операции над ними;

  • проектирование – уточнение ОМ с учетом описания требований для реализации – реализация ОМ средствами языков программирования. сопровождение – конкретных задач системы;

  • программирование использование и развитие системы, внесение изменений, как в состав объектов, так и в методы их реализации;

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

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

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

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

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

Существует два типа моделей системной архитектуры:

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

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

Экзаменационный вопрос № 8

КОМПОНЕНТНЫЙ ПОДХОД К ПРОГРАММИРОВАНИЮ

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

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

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

Компонентный подход дополняет и расширяет существующие подходы в программировании. Компоненты конструируются как некоторая абстракция, включающая в себя информационный раздел и артефакты (спецификация, код, контейнер и др.). В этом разделе содержатся сведения: назначение, дата изготовления, условия применения (ОС, среда, платформа и т.п.). Артефакт - это реализация (implementation), интерфейс (interface) и схема развертывания (deployment) компонента.

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

Элемент композиции

Результат композиции

Процедура, подпрограмма, функция

Программа

Модуль

Программа с модульной структурой

Объект

Объектно- ориентированная программа

Компонент

Распределенное компонентно- ориентированное приложение

Сервис

Распределенное сервисо- ориентированное приложение

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

Развертывание - это выполнение физического файла в соответствии с конфигурацией (версией), параметрами настройки для запуска на выполнение компонента.

Компоненты наследуются в виде классов и используются в модели, композиции и в каркасе (Фреймворке) интегрированной среды. Управление компонентами проводится на архитектурном, компонентном или интерфейсном уровнях, между которыми существует взаимная связь.

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

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

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

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

Композиция компонентов может быть следующих типов:

  • композиция компонент-компонент обеспечивает непосредственное взаимодействие компонентов через интерфейс на уровне приложения;

  • композиция каркас-компонент обеспечивает взаимодействие каркаса с компонентами, при котором каркас управляет ресурсами компонентов и их интерфейсами на системном уровне;

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

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

Экзаменационный вопрос № 9.

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

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

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

- Разработка требований (Requirements) к ПС - это формирование и описание функциональных, нефункциональных и др. свойств ПС.

- Анализ поведения (Behavioral Analysis) ПС заключается в определении функций системы, деталей проектирования и методов их выполнения.

- Спецификация интерфейсов и взаимодействий компонентов (Interface and Interaction Specification) отражает распределение ролей компонентов, интерфейсов, их идентификацию и взаимодействие компонентов через поток действий (workflow).

- Интеграция набора компонентов и ПИК (Application Assembly and Component Reuse) в единую среду основывается на подборе и адаптации ПИК, определении совокупности правил, условий интеграции и построении конфигурации каркаса системы.

- Тестирование компонентов и среды (Component Testing) основывается на методах верификации и тестирования для проверки правильности как отдельных компонентов и ПИК, так и интегрированной из компонентов ПС.

- Развертывание (System Deployment) включает оптимизацию плана компонентной конфигурации с учетом среды пользователя, развертку отдельных компонентов и создание целевой компонентной конфигурации для функционирования ПС.

- Сопровождения ПС (System Support and Maintenance) состоит из анализа ошибок и отказов при функционировании ПС, поиска и исправления ошибок, повторного ее тестирования и адаптации новых компонентов к требованиям и условиям интегрированной среды.

Экзаменационный вопрос № 10.

АСПЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  4. Разработка фильтров и описание связей аспектов с функциональными компонентами.

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

  6. Создание объектной или компонентной модели, дополнение ее входными и выходными фильтрами сообщений, посылающих объектам ссылки, задания на выполнение методов или аспектов.

  7. Анализ библиотеки расширений для выбора некоторых функциональных модулей, необходимых для реализации задач ПрО.

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

Экзаменационный вопрос № 11.

ГЕНЕРИРУЮЩЕЕ (ПОРОЖДАЮЩЕЕ) ПРОГРАММИРОВАНИЕ

Генерирующее программирование (generatе programming) - генерация семейств приложений из отдельных элементов компонентов, аспектов, сервисов, каркасов и т.п. В нем используются разные методы программирования.

Главный элемент - это семейство ПС или конкретные его экземпляры, которые генерируются на основе общей генерирующей модели домена (generative domain model) и включающей в себя средства определения членов (представителей) семейства, методы сборки членов семейства и базу конфигурации с набором правил развертывания в операционной среде.

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

Основные этапы инженерии:

  • анализ и выявление объектов и отношений между ними;

  • определение области действий объектов;

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

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

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

  • генерация отдельного домена, члена семейства и ПС.

Технологическая схема инженерии ПрО

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

Экзаменационный вопрос № 12.

АГЕНТНОЕ ПРОГРАММИРОВАНИЕ

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

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

  • автономность - это способность действовать без внешнего управляющего воздействия;

  • реактивность - это способность реагировать на изменения данных и среды, и воспринимать их;

  • активность - это способность ставить цели и выполнять заданные действия для достижения этой цели;

  • способность к взаимодействию с другими агентами (или людьми).

Основными задачами программного агента являются:

  • самостоятельная работа и контроль своих действий;

  • взаимодействие с другими агентами;

  • изменение поведения в зависимости от состояния внешней среды;

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

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

Основу агентно-ориентированного программирования составляют:

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

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

  • язык интерпретации спецификаций агента;

  • инструменты конвертирования любых программ в соответствующие агентные программы.

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

Экзаменационный вопрос № 13.

ТЕОРЕТИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

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

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

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

Основу АП составляет математическая модель, которая включает в себя следующие понятия:

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

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

  • среда, состоящая из агентов и функций погружения, которая обозначается   и имеет в качестве параметров состояние среды и агентное выражение;

  • функция развертывания функциональных выражений в простые агентные выражения;

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

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

Экзаменационный вопрос № 14.

ЭКСПЛИКАТИВНОЕ ПРОГРАММИРОВАНИЕ

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

Принципами ЭП являются:

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

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

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

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

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

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

Из них триада - "данные - функция - композиция" задает семантический аспект программы, а триада "данные - имя функции - дескрипция" - синтаксический аспект. Главным в ЭП является семантический аспект, система композиций и номинативности (КНС), ориентированная на систематическое описание номинативных отношений при построении данных, функций, композиций и дескрипций.

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

Экзаменационный вопрос № 15.

АЛГОРИТМИКА ПРОГРАММ

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

Основными понятиями алгебры алгоритмики являются:

  • операции над множествами, булевы операции, предикаты, функции и операторы;

  • бинарные и n-арные отношения, эквивалентность, частично и полностью упорядоченные множества;

  • граф-схемы и операции над графовыми структурами;

  • операции сигнатуры САА, аксиомы и правила вывода свойств программ на основе сверточной, разверточной и комбинированной стратегий;

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

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

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