Читаем без скачивания Системы автоматизации разработки программного обеспечения - Николай Соловьев
Шрифт:
Интервал:
Закладка:
1.4.1 Технологии компонентно-ориентированного программирования
Технологии компонентно-ориентированного программирования (КОП) определяет стандартный механизм, с помощью которого одна часть ПО предоставляет свои услуги другой части. Организация предоставления услуг в библиотеках, приложениях, системном и сетевом программном обеспечении позволяет изменить технологию создания программ.
Наиболее известные технологии КОП представлены на рисунке 1.23.
Рисунок 1.23 – Технологии компонентно-ориентированного программирования
Концепция технологии COM для семейства операционных систем Windows заключается в построении программ из компонент, которые состоят из объектов, представляющих собой непосредственно исполняемый двоичный код. Важнейший признак «компонентности» – исполняемую программу можно собирать из отдельных частей без операций сборки (модуля).
СОМ устанавливает понятия и правила, необходимые для определения объектов и интерфейсов; кроме того, в ее состав входят программы, реализующие ключевые функции. В СОМ любая часть ПО реализует свои услуги с помощью объектов СОМ. Каждый объект СОМ поддерживает несколько интерфейсов. Клиенты могут получить доступ к услугам объекта СОМ только через вызовы операций его интерфейсов – нет непосредственного доступа к телу объекта.
Отличие COM от привычных объектов в стиле ООП состоит в том, что объекты ООП известны только компилятору. Это абстракции, в которых мыслит программист и которые компилятор превращает в двоичные структуры «данные + код». Технология COM есть технология, которая переносит все преимущества ООП, доступные программисту на уровне исходного текста, на двоичный уровень. Если в исходном тексте технологии ООП программист волен использовать любые объекты, но теряет всяческий контроль над тем, что сделано, как только исходный текст скомпилирован, то при использовании COM эти возможности сохраняются на протяжении всего жизненного цикла программы. Кроме того добавляются возможности разделения проекта на отдельные, повторно используемые, двоичные компоненты.
Хронология развития технологии COM показана на рисунке 1.24.
Рисунок 1.24 – Хронология развития технологии COM
Использованные сокращения: Dynamic Link Libraries (DLL) – динамически подключаемые библиотеки, Open DataBase Connectivity (ODBC) – открытый интерфейс доступа к базам данных, встроенный в Windows и Windows NT, Dynamic Data Exchange (DDE) – динамический обмен данными, Object Linking and Embedding (OLE1.0) – внедрение и связывание объектов, OLE2.0 – OLE на базе COM, Distributed COM (DCOM) – распределенная модель компонентных объектов, COM+ – новейшая технология COM.
Главная идея технологии ODBC заключается в создании промежуточного программного слоя, который определяет стандартный интерфейс для приложений. На уровне вызовов этот интерфейс использует язык SQL, а реализация взаимодействия с БД обеспечивается драйверами, поставляемые в форме DLL. Таким образом, ODBC располагается между приложением и источниками данных различных форматов.
Технологию динамического обмена данными DDE можно рассматривать как попытку стандартизации обмена данными между приложениями. Концепция Windows основана на обработке сообщений (messages). Отсюда приложения могут обмениваться друг с другом сообщениями, используя общую очередь сообщений. Проблема состоит в том, что каждое из приложений должно знать протокол обмена данными, т.е. формат сообщений. Технология DDE как раз и предложила такой стандартный протокол, реализованный во многих приложениях. Недостатками DDE является сложность программирования, невысокая надежность и то обстоятельство, что приложения должны знать формат передаваемых данных.
Технологию внедрения и связывания объектов OLE1.0 фирма Microsoft представила в 1991 г. как попытку реализации объектно-ориентированного механизма взаимодействия приложений. Главной идеей OLE является концепция составного документа, который может содержать объекты других приложений. До OLE приложения могли обмениваться статическими снимками данных через буфер обмена Windows. Однако редактирование таких данных должно выполняться тем приложением, которое их породило, а после редактирования они вновь должны быть вставлены в другой документ. Если изменяются исходные данные, то, очевидно, должны изменяться данные и в составном документе. Однако, системный буфер обмена не имеет никаких средств поддержания таких связей. Более того, проблемы возникают и при перемещении исходных данных в новое место. Внедренный с помощью OLE1.0 объект содержит статические данные и данные, необходимые для его редактирования. Для редактирования объекта пользователю приложенияконтейнера необходимо щелкнуть по объекту, вследствие чего в отдельном окне запускается исходное приложение, породившее эти данные. По окончании редактирования пользователь может сохранить данные, которые будут обновлены и в приложении-контейнере.
Недостатками технологии OLE1.0 являются:
– базовый механизм OLE1.0 – DDE по своей природе асинхронен, т.е. возврат управления при вызове любой функции происходит немедленно, но после завершения операции;
– для передачи данных между приложениями используется разделяемая глобальная память, т.е. данные сначала копируются в нее, а затем могут быть вытолкнуты Windows в файл подкачки, вследствие чего замедляется работа приложения;
– связи OLE1.0 легко разрываются при перемещении файлов;
– пользователю неудобно редактировать данные в отдельном окне.
Архитектура программных компонентов, разработанных по технологии СОМ, и взаимодействие СОМ-объектов показана на рисунке 1.25.
По технологии COM приложение представляет собой службы (функции) использующие специальные объекты – объекты COM, которые являются экземпляром класса COM. Объект COM включает поля и методы, но может реализовать несколько интерфейсов, обеспечивающих доступ к его полям и функциям (достигается за счет организации отдельной таблицы адресов методов для каждого интерфейса). При этом интерфейс объединяет несколько однотипных функций. Кроме того, классы COM поддерживают наследование интерфейсов, но не поддерживают наследование реализации, т.е. не наследуют код методов, хотя при необходимости объект класса-потомка может вызвать метод родителя.
Рисунок 1.25 – Архитектура приложений на основе программных компонентов
Объекты СОМ всегда функционируют в составе сервера – динамической библиотеки и исполняемого файла. Различают три типа серверов, представленных на рисунке 1.26.
Рисунок 1.26 – Реализация технологии СОМ
Например, Microsoft Word является локальным сервером, включающим множество объектов, которые могут использоваться другими приложениями. Для обращения к службам клиент должен получить указатель на соответствующий интерфейс. Перед первым обращением клиент посылает запрос к библиотеке COM, хранящей информацию обо всех зарегистрированных в системе классах COM объектов, и передает ей имя класса, идентификатор интерфейса и тип сервера. Библиотека запускает необходимый сервер, создает требуемые объекты и возвращает указатели на объекты и интерфейс. Получив указатели, клиент может вызывать необходимые функции объекта.
Модификация COM, обеспечивающая передачу вызовов между компьютерами, называется DCOM. При использовании удаленных серверов в адресном пространстве клиента создается proxy-объект (заместитель объекта COM), а в адресном пространстве сервера COM – заглушка, соответствующая клиенту. Получив задание от клиента, заместитель упаковывает его параметры и, используя службы ОС, передает вызов заглушке. Заглушка распаковывает задание и передает его объекту COM.
Результат возвращается объекту в обратном порядке.
Технология CORBA, разработанная группой компании OMG (группа внедрения объектной технологии программирования), реализует подход, аналогичный COM, но на базе объектов и интерфейсов СORBA. Программное ядро СORBA реализовано для всех основных аппаратных и программных платформ и потому эту технологию можно использовать для создания распределенного ПО в гетерогенной (разнородной) вычислительной среде. Организация взаимодействия между объектами клиента и сервера в СORBA осуществляется с помощью специального посредника, названного VisiBroker.
Последовательность операций технологии КОП представлена на рисунке 1.27.
Рисунок 1.27 – Последовательность технологических операций КОП
Таким образом, технология КОП существенно упрощает разработку, позволяет сократить сроки проектирования за счет повышения повторяемости элементов программных системы и автоматизации отдельных этапов разработки, т.е. реально перейти к индустриальному методу разработки программного обеспечения АИС