Сказанное выше относилось к технологиям разработки отдельных программ. Но в настоящее время программы, как правило, должны являться частью некоторой информационной системы (ИС),т.е. функционировать не сами по себе, а во взаимодействие с большим количеством других программ.
Также программы должны уметь «использовать» другие программы и системы, разработанные сторонними организациями. Например, ваша программа может подготовить некоторый отчетный документ в формате Microsoft Word, и этот документ будет доступен на всех компьютерах, на которых установлен Word (но на которых может не быть вашей программы).
Аналогично, можно из прикладной программы создать итоговые чертежи в формате распространенных графических систем (например, в формате AutoCAD или Corel Draw). В этом случае один из основных вопросов — организация взаимного общения программ друг с другом и с источником данных. В качестве последнего в ИС выступают базы данных (БД), вместе с системой управления базами данных (СУБД).
Галилео. Эксперимент. Межмолекулярное взаимодействие свинца
Программы, работающие в составе ИС, получают информацию из БД, к которым имеют доступ и другие программы. В этом случае естественным образом создается возможность взаимосвязи приложений через данные. Например, одна программа записывает результаты своей работы, а другая использует их как начальные данные для своей работы. Этот простейший уровень взаимосвязи требует одного — унификацию данных и форматов их хранения. Для целей унифицированного доступа к данным используются специальные языки, например SQL (Structured Query Language — язык структурированных запросов).
Но во многих случаях этого простейшего механизма общения недостаточно для современной ИС — например, программа не должна ожидать, когда кем-то будет запущена другая программа — поставщик данных. Необходимо иметь возможность запускать из одной программы другую, передавая при этом ей управляющую информацию. Запуск основного приложения порождает в среде операционной системы процесс, для которого операционная система выделяет необходимые ресурсы компьютера (память и время процессора). Дочерняя программа может выполняться как в адресном пространстве вызвавшей ее программы, так и в собственном адресном пространстве и в другом потоке.
Однако часто требуется обмен информацией между программами, выполняющимися одновременно (параллельно). Желательно, чтобы этот обмен не зависел от языка программирования, на котором написаны разные программы, а в сетевых системах не зависел и от операционных систем, установленных на разных компьютерах. Яркий пример подобной организации взаимосвязи — Интернет, в глобальную сеть соединены компьютеры с различными операционными системами (Windows, Unix, Solaris, сотовые телефоны и др.).
Простейшими средствами параллельного общения вначале были файлы совместного доступа, или разделяемые файлы (файлы, к которым могут иметь одновременный доступ несколько программ), которые появились еще на заре Windows. Также ранним средством является буфер обмена ClipBoard, доступный практически всем приложениям Windows, в котором можно временно хранить для передачи другим программам информацию различного формата — текстовую, графическую и т.п. Несколько позже для межпрограммного взаимодействия использовалась технология DDE — динамический обмен данными. Сегодня актуальность DDE ниже из-за появления новых технологий, а использование БД, буфера обмена и разделяемых файлов как простейшего варианта межпрограммного взаимодействия остается актуальным.
Как взаимодействует между собой Premiere Pro и After Effects?
Позднее появилась технология связывания и внедрения объектов OLE1 (Object Linking and Embedding). Благодаря OLE1 появилась возможность создавать составные документы (например, в документ Word вставлять таблицу Exel, при ее редактировании из Word используются возможности Exel). На смену ей пришла технология OLE2, позволяющая различным программам предоставлять друг другу свои функции (сервис). Программа, предоставляющая свои функции, называется сервером, а программа, их использующая — клиентом. В этой технологии одна программа может не просто вызвать другую, но использовать ее отдельные функции.
Следующим шагом на пути совершенствования межпрограммного обмена явилась технология компонентной модели объектов (СОМ — Component Object Model). Эта технология заключается в стандартизированном описании служб программы, к которым она дает доступ другим программам. В технологии СОМ неважно, на каких языках написаны программы и где они выполняются: в одном потоке, в разных потоках, на разных компьютерах. Расширение этих возможностей дает технология DCOM — распределенная модификация СОМ. Отметим, что СОМ подразумевает взаимосвязь на уровне специальных объектов, структура которых во многом схожа с рассмотренными ранее объектами внутри одной программы.
Необходимо сказать о еще одной стремительно развивающейся технологии — Интернет. В Интернете располагаются и базы данных, и серверы, с которыми общаются приложения пользователя.
Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:
Источник: studopedia.ru
Интерфейсы, взаимодействие и изменение программ и данных
Основные ЯП, используемые для описания компонентов в современных средах, это С++, Паскаль, JAVA и др. [8.2, 8.12, 8.13].
Разноязыковые программы, записанные в этих языках, обращаются друг к другу через удаленный вызов, который предполагает взаимно однозначное соответствие между фактическими параметрами

Аналогично решается задача преобразования неэквивалентных типов данных в ЯП. Представим это преобразование такими этапами.
Этап 1. Построение операций преобразования типов данных для множества языков программирования
.
Этап 2.Построение отображения простых типов данных для каждой пары взаимодействующих компонентов в и
, а также применение операций селектора
и конструктора
для отображения сложных структур данных в этих языках. Один из способов формализованного преобразования типов данных — создание алгебраических систем для каждого типа данных
где — тип данных,
— множество значений, которые могут принимать переменные этого типа данных,
— множество операций над этими типами данных.
В качестве простых типов данных современных ЯП могут быть . Сложные типы данных
— комбинация простых типов данных. Этим типам данных соответствуют следующие классы алгебраических систем:
![]() |
( 8.1) |
Каждый элемент класса простых и сложных типов данных определяется на множестве значений этих типов данных и операций над ними:
, где
.
Операциям преобразования каждого типа данных соответствует изоморфное отображение двух алгебраических систем с совместимыми типами данных двух разных языков. В классе систем (8.1) преобразование типов данных
для пары языков
и
обладает такими свойствами отображений:
- системы
и
для языков
и
— изоморфны, если их типы данных
,
определены на одном том же множестве простых или сложных типов данных ;
- между значениями
и
типов данных
и
существует изоморфизм, если множества операций
и
, применяемых для этих типов данных, различны. Если это множество пусто, то имеем изоморфизм двух систем
и
. Если тип данных
есть строка, а тип
— вещественное, то между множествами
и
не существует изоморфного соответствия;
- алгебраические системы
по мощности должны быть равны, так как они представлены на множестве типов данных языков
и
Отображения 1, 2 сохраняют линейный порядок элементов, поскольку алгебраические системы являются линейно упорядоченными. Общая схема связи ЯП в распределенной среде.Характерная особенность ЯП, используемых в распределенных средах, — их неоднородность как в смысле представления типов данных в них, так и платформ компьютеров, где реализованы соответствующие системы программирования. Причина неоднородности — это различные способы передачи параметров между объектами в разных средах, наличие разных типов объектных моделей и форматов данных для задания параметров, разные виды операторов удаленного вызова и получения результатов выполнения запросов и др.
Системы программирования с ЯП имеют следующие особенности компилирования программ:
промежуточной среды.
Связь между различными языками осуществляется через интерфейс пары языков
,
, взаимодействующих между собой в среде, генерирующей соответствующие конструкции
в операции описания интерфейса и наоборот.
Взаимодействие ЯП в среде CORBA.Принцип взаимодействия объектов в среде CORBA состоит в том, что любой объект выполняет метод (функцию, сервис, операцию) при условии, если другой объект, выступающий в роли клиента для него, посылает ему запрос для выполнения этого метода. Объект выполняет метод через интерфейс.
Взаимодействие ЯП в системе CORBA состоит в отображении типов объектов в типы клиентских и серверных стабов путем
- отображения описания запроса клиента в ЯП в операции IDL;
- преобразования операций IDL в конструкции ЯП и передачу их серверу средствами брокера ORB , реализующего в типы данных клиента.
Так как ЯП системы CORBA могут быть реализованы на разных платформах и в разных средах, то их двоичное представление зависит от конкретной аппаратной платформы [8.2, 8.7, 8.8]. Для всех ЯПсистемы CORBA (С++, JAVA, Smalltalk, Visual C++, COBOL, Ada-95) предусмотрен общий механизм связи и расположения параметров методов объектов в промежуточном слое. Связь между объектными моделями каждого ЯП системы СОМ и JAVA выполняет брокер ORB (рис. 8.4).
Рис. 8.4. Интегрированная среда системы CORBA
Если в общую объектную модель CORBA входит объектная модель СОМ, то в ней типы данных определяются статически, а конструирование сложных типов данных осуществляется только для массивов и записей. Методы объектов используются в двоичном коде и допускается двоичная совместимость машинного кода объекта, созданного в одной среде разработки, коду другой среды, а также совместимость разных ЯП за счет свойства отделения интерфейсов объектов от реализаций.
В случае вхождения в состав модели CORBA объектной модели JAVA/RMI, вызов удаленного метода объекта осуществляется ссылками на объекты, задаваемые указателями на адреса памяти.
Интерфейс как объектный тип реализуется классами и предоставляет удаленный доступ к нему сервера. Компилятор JAVA создает байткод, который интерпретируется виртуальной машиной, обеспечивающей переносимость байткодов и однородность представления данных на всех платформах среды СORBA.
8.2.2. Взаимодействие разноязыковых программ
Проблеме взаимодействия разноязыковых программ на множестве современных языков (C/C++, Visual C++, Visual Basic, Matlab,Smalltalk, Lava, LabView, Perl) посвящена работа [8.14]. В ней представлены различные варианты и конкретные примеры связей каждой пары ЯП из этого множества с помощью практически реализованных и приведенных функций преобразования, методов обращения к ним из программ на одном языке к программе на другом языке. В таблице 8.1. приведены варианты взаимосвязи разных ЯП.
В ней отражены особенности их взаимодействия через разные виды интерфейсов, приведены более 25 видов пар современных ЯП и соответственно прямого и обратного взаимодействия разноязыковых программ.
Для этих пар ЯП изложены принципы запуска разных программ и все технические вопросы передачи данных и преобразования параметров.
Материал учебного пособия содержит многочисленные примеры интерфейсных программ, которые разработаны для преобразования разнотипных параметров с учетом особенностей их реализации системами программирования.
В отличие от рассмотренной общей схемы взаимодействия программ с двумя модулями (рис. 8.1), здесь рассмотрены высокотехничные средства обеспечения процесса преобразования: панели, сценарии, иконки и образцы интерфейсных программ для каждого конкретного случая взаимодействия программ. Далее дается краткое описание шести схем средств описания разноязыковых программ, взаимодействующих с языками, приведенными во второй колонке данной таблицы.
Интерфейс между Visual Basic и другими ЯП осуществляется с помощью оператора обращения, параметрами которого могут быть строки, значения, массивы и другие типы данных. Их обработка проводится функциями Windows API, API DLL и операциями преобразования типов данных. В качестве примера приведена схема обработки Интернет-приложений, задаваемых HTML-страницами Basic Visual, размещаемых в Web-браузере и базах данных.
Matlab содержит средства для решения задач линейной и нелинейной алгебры, действий над матрицами и др. и обеспечивает математические вычисления с помощью MatlabCompiler, Matlab C++, MatlabLibriary, Matlab Graphic Library. Приведена схема независимого приложения в среде Matlab, которая включает интерфейс между VC и Matlab, создаваемый MatlabCompiler путем преобразования программы в формате Matlab (М-файлы или М-функции) в формат С.
- Платформенно-ориентированные функции.
- Программный интерфейс.
- Динамическая библиотека функций.
- Интерфейс между Visual Basic.
- Функции обработки событий. Интерфейс в API.
- Вызов приложения из среды.
- Встраивание функций в VC ++.
- Использование интерфейса JNI .
- Функции из Matlab.
- Функции в Java.
- Модель приложения в Visual Works.
- Функции графической библиотеки.
- Библиотеки С, С++ и процедуры Visual Works.
- Интерфейс VI и API.
- Связь Visual C, DLL, Obj Lib С, C++.
- Интерфейсные функции драйвера.
- Платформенно-ориентированные функции.
- Библиотеки функций в С++, С.
- Функции в JNI .
- Платформенно-ориентированные функции.
- Программный интерфейс.
- Интерфейсные функции в С++.
Сформированный файл вызывается из программы в С++ и преобразовывается к виду архитектуры компьютера, куда отсылается результат.
Базовые средства Smalltalk обеспечивают создание приложений в среде VisualWorks и включают модель приложений, методы объектов, сообщения для передачи значений внешним объектам и пользовательский интерфейс (рис. 8.5). Модель приложения содержит функции DLL из класса внешнего интерфейса, взаимодействующие с функциями библиотеки С++.
Рис. 8.5. Схема взаимодействия модели приложения с библиотекой
Система LabView предназначена для автоматизации производственных процессов, сбора данных, проведения измерений и управление созданием программ, взаимодействующих с аппаратурой. В ее состав входят прикладные средства, тестирования программ и драйверы взаимодействия с аппаратурой, запускаемых с пульта.
Система взаимодействует с ANS C, Visual Basic, Visual C++ Lab Windows/CV. Эти средства расширяют возможности создания систем реального времени, которые позволяют производить с помощью функций связи измерение аппаратуры типа: регуляторы, термометры, переключатели и др. Результаты измерений могут передаваться в сеть.
Среда Java содержит инструменты взаимодействия со всеми языками, приведенными во второй колонке таблицы. Общая схема связи языков JAVA, C и C++ программ приведена на рис. 8.6. Язык Perl появился в 80-х годах прошлого столетия как язык задания сценариев для взаимодействия с Интернет, управления задачами и создания CGI-сценариев на сервере в системе Unix.
Данный язык имеет интрфейс с С, С++, Visual Basic и Java. Интерпретатор с языка Perl написан в языке С и каждый интерфейс с другим языком рассматривается как расширение, представляемое процедурами динамической библиотеки.
Рис. 8.6. Схема взаимодействия приложенияи программ Java, C, C++
Оператор вызова программы в С или С++ обеспечивает преобразование ее в специальный код, который размещается в библиотеке интерпретатора Perl. Сам интерпретатор может быть включен в Win32 или в программу на C/C++.
Таким образом, в работе [8.14] тщательно исследованы самые современные средства и инструменты представления разноязыковых программ и принципы их взаимодействия с широко используемыми ЯП. Даны рекомендации по конкретному применению каждого средства с учетом условий среды и правил прямой и обратной передачи параметров программе в ЯП из класса рассмотренных ЯП. Приведены многочисленные примеры, которые проверены экспериментально, ими можно пользоваться на практике либо использовать в качестве образца.
Источник: intuit.ru
Взаимодействие программных систем
2016-11-23 в 1:58, admin , рубрики: взаимодействие программ, История ИТ, Софт, метки: взаимодействие программ
В этой статье я поговорю об связях между программами. Связи между программами или, выражаясь иначе, взаимодействие программ друг с другом в подавляющем большинстве случаев заключается в получении данных одной программой от другой. Например, программа электронных торгов может запрашивать у какой-то другой программы курс валют.
Или текстовому редактору может передавать введенный пользователем текст операционная система, используя драйвер клавиатуры. Программы могут предоставлять набор функций для взаимодействия – API. Или даже иметь целые механизмы взаимодействия, называемые протоколами, когда используется множество последовательных вызовов функций, например, для сложного согласования каких-либо параметров. Большим шагом вперед является создание универсальных структур – XML и Json. Программы могут взаимодействовать с другими программами и «невежливым» способом — без протоколов и открытых API: парся данные страницы в случае грабберов, внедряясь в исполняемые файлы как вирусы или, наоборот, убивая их в случае антивирусов.
В информационных технологиях, подобно экосистемам живой природы, наблюдается очень сильное взаимное влияние программных систем друг на друга и, вообще говоря, оно может быть двух видов:
- Во-первых, система может использовать нижележащий слой по уровню иерархии (при этом, как правило, слои, расположенные выше не влияют на нижележащие).
- Во-вторых, система может взаимодействовать с другой системой на том же уровне иерархии, используя различные интерфейсы.
Про иерархию можно говорить отдельно, но упрощая, здесь имеются в виду слои наподобие следующих: ОС (в свою очередь со своими слоями), платформа, программа, надстройки (плагины) и т.д.
Кроме этого, по характеру взаимодействующих программ взаимодействие может быть двух видов: взаимодействуют разные части или одинаковые. Наблюдения показывают, что в первом случае, их количество может быть относительно небольшим – например, с десяток органов в организме или несколько составляющих компьютера, а если слагаемые одинаковые, то обычно их очень много: клеток в органе, транзисторов в процессоре, людей в цивилизации, программы тоже состоят из миллионов машинных команд нескольких десятков видов. При этом каждая машинная команда, клетка, каждый транзистор или каждый нейрон в нейронной сети выполняет очень простую функцию. Можно предположить, что в основе любой вещи, любой системы в самом основании лежат именно такие простые базовые составляющие.
Отличие от живой природы в том, что системы на разных уровнях достаточно независимы и могут продолжать работать при смене нижележащего слоя на другой: так, веб-сайт будет продолжать открываться если Вы смените витую пару Ethernet на Wifi.
В общем случае, взаимодействие программных систем может быть нескольких видов:
- Построена на «инфрастурктуре» (например, на операционной системе или на какой-либо платформе – например, IBM Notes, или внутри социальной сети).
- Использует другие программные системы (например, веб-сайт может использовать реляционную СУБД, такую как MySQL, MS SQL Server или Oracle).
- Состоит из (могут использоваться различные библиотеки и отдельные продукты, например, сайты используют tinyMCE или компоненты для отображения календаря).
- Интегрируется с (например, наша СРМ-система интегрирована с 1С, системами IP-телефонии, системами эквайринга. Сайты могут быть интегрированы с системами оплаты, с соц. сетями и т.д.).
Как и любая другая система, программа состоит из компонент. В программировании любят переиспользовать компоненты, если уже есть компоненты, реализующую похожую функциональность. Это быстрее, чем писать свой компонент, отлаживать и впоследствии сопровождать его. Отправка письма – один компонент, запись в лог – другой компонент, построение графиков – третий, текстовый редактор на сайте – tineyMCE, поиск – lucene. Поэтому многие программы используют одни и те же компоненты.
Часто программы позволяют расширять свою функциональность: текстовые редакторы и электронные таблицы позволяют создавать макросы, браузеры – добавлять расширения, все CMS – дополнять их сторонними компонентами и плагинами. Некоторые программы идут дальше по этому пути и по сути являются платформами для запуска других приложений: например, браузеры или ibm lotus notes.
Сама операционная система – это программа, единственное назначение которой — существование других программ. Она упрощает их существование, изолирует от железа, предоставляет возможность использования графического интерфейса и даёт доступ к сети, её цель – обеспечить работу другим программам.
При этом и операционные системы, и платформы, и даже CMS, которые ставят из-за единственного компонента, во многих случаях гораздо сложнее той программы, ради которой их используют, они могут включать множество самых различных обеспечивающих работу функций: разделять ресурсы, предоставлять механизм авторизации, упрощать обращение к базе данных. Это происходит и за счёт своей универсальности (например, операционная система Windows содержит несколько подсистем Win32, OS/2) для обеспечения работы для всех возможных программ.
Универсальность всегда приводит к дополнительной сложности. Это касается и тех компонент, которые программисты используют при написании программы, они гораздо сложнее и обладают гораздо большим набором функций, многие из которых не требуются и не используются. Программы часто вынуждены обеспечивать обратную совместимость – так, в Windows можно было запускать DOS-приложения. При взаимодействии систем, возможно возникновение нескольких интересных эффектов.
Первый из них называется синергия и его идея в том, что слагаемое больше, чем просто сумма слагаемых. То есть если Вы к одной технологии добавите какую-то другую, то при синергии получившаяся технология будет превосходить как первую, так и вторую. И это может быть качественно другой продукт.
То есть, если Вы к компьютеру с программой добавите железный скелет, то получите робота, который больше и чем железка, и чем компьютер. Взаимодействие большого количества простых вещей может приводить к каким-то сложным взаимодействиям. Сумма простых вещей даёт сложную – набор транзисторов создаёт компьютер, набор атомов создаёт предмет, клетки в организме создают органы. Сумма людей – цивилизация – это не просто семь млрд. человек, это что-то большее.
Вторую мысль озвучил Питер Норвиг в докладе Everything is Miscellaneous. Она показалась мне удивительной: если Вы посмотрите на отдельно взятого шимпанзе и отдельно взятого человека, то увидите, что между ними много общего.
Ну, то есть понятно, что шимпанзе немного сильнее, человек немного умнее, но в целом, их внешний вид немного похож, их физические и даже пусть с большой натяжкой интеллектуальные возможности сопоставимы. Но теперь если Вы взглянете на культуру шимпанзе и культуру человечества, то увидите колоссальную разницу. Цивилизацию людей даже нельзя сопоставить с цивилизацией шимпанзе. Почему-то это напомнило мне о том, что 0.99 и 1.01 вроде бы не сильно отличаются, но при возведении в какую-нибудь большую степень одно число будет стремиться к нулю, а другое – к бесконечности.
Для тех, кто просто пролистал до конца: взаимодействие программ может быть различных типов и его результат может приводить к принципиально новому уровню программной системы. Целое не всегда отражает то, что происходит в составных частях. Спасибо за внимание!
Источник: www.pvsm.ru