ПРОГРАММНЫЕ ПРОДУКТЫ САПР |
251 |
|
|
ра (обработчик события), которая проверяет код клавиши и вызывает нужную реакцию. В RAD имеются средства для удобства разработки обработчиков событий.
5.Окно редактора кода, в котором пользователь записывает создаваемую вручную часть кода.
6.Окно проекта – список модулей и форм в создаваемой программе.
Для написания событийных процедур в Visual Basic используется язык и текстовый редактор одноименного языка, в Delfi – язык и редактор языка Object Pascal. В CASE-системе фирмы IBM, включающей части VisualAge (для клиентских приложений) и VisualGen (для серверных приложений), базовым языком выбран SmallTalk. В среде разработки приложений клиент-сервер SQLWindows оригинальные фрагменты программ пишутся на специальном языке SAL [39].
Помимо упрощения написания пользовательского интерфейса в средах RAD предусматриваются средства для реализации и ряда других функций. Так, в наиболее развитой версии Visual Basic к ним относятся средства выполнения следующих функций:
−поддержка ODBC, что дает возможность работы с различными СУБД;
−разработка баз данных;
−разработка трехзвенных систем распределенных вычислений;
−интерактивная отладка процедур на SQL Server;
−управление версиямипригрупповой разработкепрограммного обеспечения;
−моделирование и анализ сценариев распределенных вычислений.
Для создания сред в RAD в случае сетевого программирования требуется решить ряд дополнительных проблем, обусловленных многоплатформенностью
вгетерогенных сетях, обилием применяемых форматов данных, необходимостью защиты информации и т.п. Решение этих проблем достигнуто в объектноориентированных технологиях на базе языка сетевого программирования Java. Кроме того, с помощью Java удается решить еще одну актуальную для Internet и Intranet задачу – сделать Web-страницы интерактивными.
Платформенная инвариантность в Java достигается благодаря введению виртуальной метамашины с системой команд, максимально приближенной к особенностям большинства машинных языков. Любой Web-сервер при наличии запроса на Java-программу со стороны клиента транслирует (компилирует) эту программу на язык метамашины. Скомпилированный модуль, называемый байткодом, пересылается клиенту. Клиент должен выполнить интерпретацию байткода. Соответствующие интерпретаторы в настоящее время имеются в браузерах всех основных разработчиков Web-технологий.
Java используется двояким образом. Во-первых, как средство «оживления» Web-страниц. В этом случае программный Java-компонент называют аплетом, который встраивается в страницу с помощью специального тега, имеющегося
вязыке HTML. Во-вторых, Java – универсальный язык программирования и может быть использован для написания любых приложений, не обязательно привязанных к Web-технологии.
252 Глава 7. НОВЫЕ ПОДХОДЫ К АППАРАТУРНО-ТЕХНОЛОГИЧЕСКОМУ ОФОРМЛЕНИЮ…
Хотя и ранее были известны технологии на базе промежуточных p-кодов, именно технология Java оказалась наилучшим образом приспособленной для использования в гетерогенной сетевой среде. Она последовательно отражает принципы объектно-ориентированного программирования и обеспечивает приемлемую эффективность (производительность) исполнения программ. Эту эффективность можно еще более повысить, если в браузерах заменить интерпретацию на компиляцию.
Для разработки программного обеспечения на языке Java создан ряд инструментальных средств. Основной средой является Java Developer’s Kit, в которой имеются:
1)библиотеки классов, в том числе библиотеки основных элементов языка, часто используемых оболочек (wrapper), процедур ввода-вывода, компонентов оконного интерфейса и др.;
2)инструментальные средства такие, как компилятор байт-кодов, интерпретатор, просмотрщик аплетов, отладчик, формирователь оконных форм и т.п. Развитую RAD-среду – PowerJ – предлагает фирма Sybase.
Появление компонентно-ориентированных технологий вызвано необходимостью повышения эффективности разработки сложных программных систем, являющихся в условиях использования корпоративных и глобальных вычислительных сетей распределенными системами. Компонентно-ориентированные технологии основаны на использовании предварительно разработанных готовых компонентов.
Компиляция программ из готовых компонентов – идея не новая. Уже первые шаги в области автоматизации программирования были связаны с созданием библиотек подпрограмм. Конечно, для объединения этих подпрограмм в конкретные прикладные программы требовалась ручная разработка значительной части программного кода на языках третьего поколения. Упрощение и ускорение разработки прикладного программного обеспечения достигается с помощью языков четвертого поколения (4GL), но имеющиеся системы на их основе являются специализированными и не претендуют на взаимодействие друг с другом.
Современные системы интеграции программного обеспечения построены на базе объектной методологии.
Выше приведены примеры библиотек классов, применяя которые прикладные программисты могут создавать субклассы в соответствии с возможностями наследования, заложенными в используемые объектно-ориентированные языки программирования. При этом интероперабельность компонентов в сетевых технологиях достигается с помощью механизмов, подобных удаленному вызову процедур RPC.
Преимущества использования готовых компонентов обусловлены тщательной отработкой многократно используемых компонентов, их соответствием стандартам, использованием лучших из известных методов и алгоритмов.
В то же время в компонентах библиотек классов спецификации интерфейсов не отделены от собственно кода, следовательно, использование библиотек клас-
ПРОГРАММНЫЕ ПРОДУКТЫ САПР |
253 |
|
|
сов непрофессиональными программистами проблематично. Именно стремление устранить этот недостаток привело к появлению компонентно-ориентированных технологий разработки программного обеспечения.
Возможны два способа включения компонентов (модулей) в прикладную программу – модернизация (reengineering) или инкапсуляция (wrapping).
Модернизация требует знания содержимого компонента, интероперабельность достигается внесением изменений собственно в сам модуль. Такой способ можно назвать способом «белого ящика». Очевидно, что модернизация не может выполняться полностью автоматически, требуется участие профессионального программиста.
Инкапсуляция выполняется включением модуля в среду с помощью интерфейса – его внешнего окружения (оболочки – wrapper). При этом компонент рассматривается как «черный ящик»: спецификации, определяющие интерфейс, выделены из модуля, а детали внутреннего содержимого скрыты от пользователя. Обычно компоненты поставляются в готовом для использования виде скомпилированного двоичного кода. Обращения к модулю возможны только через его интерфейс. В спецификации интерфейса включаются необходимые для интероперабельности сведения о характеристиках модуля – модульная абстракция. В состав этих сведений могут входить описания всех входных и выходных для модуля данных, структура командной строки для инициализации процедур, сведения о требуемых ресурсах.
Компонентно-ориентированные системы построены на основе инкапсуляции компонентов. В архитектуре этих систем можно выделить следующие части:
1)прикладная программа (клиент), создаваемая для удовлетворения возникшей текущей потребности;
2)посредник (брокер или менеджер), служащий для установления связи между взаимодействующими компонентами и для согласования их интерфейсных данных;
3)множество компонентов, состоящих каждый из программного модуля (объекта), реализующего некоторую полезную функцию, и оболочки (интерфейса).
В спецификации интерфейса могут быть указаны характеристики модуля, реализуемые методы и связанные с модулем события.
Собственно интерфейс представляет собой обращения к функциям модуля, называемым в CBD-технологиях методами. Эти обращения переводятся в двоичный код, что обеспечивает при их использовании независимость от языка программирования. Один и тот же модуль может реализовывать несколько разных функций, поэтому у него может быть несколько интерфейсов или методов. Каждый новый создаваемый интерфейс обеспечивает доступ к новой функции и не отменяет прежние возможно еще используемые интерфейсы.
Схематично взаимодействие компонентов можно представить следующим образом. Клиент обращается с запросом, выраженным на языке IDL, на выполнение некоторой процедуры. Запрос направляется менеджеру. В менеджере имеется предварительно сформированный каталог (реестр или репозитарий) интерфейсов
254 Глава 7. НОВЫЕ ПОДХОДЫ К АППАРАТУРНО-ТЕХНОЛОГИЧЕСКОМУ ОФОРМЛЕНИЮ…
процедур с указанием компонентов-исполнителей. Менеджер перенаправляет запрос соответствующему исполнителю. Исполнитель может запросить параметры процедуры. После выполнения процедуры полученные результаты возвращаются клиенту.
В большинстве случаев реализуется синхронный режим работы, заключающийся в приостановке процесса клиентапосле выдачи запроса до полученияответа.
Наиболее популярными в настоящее время являются следующие CBDтехнологии [39]:
OpenDoc – технология, основанная на спецификациях CORBA, разработанных в начале 90-х гг. ХХ в. В OpenDoc реализуется технология распределенных вычислений на базе программ-посредников ORB.
Common Object Model – технология, развиваемая корпорацией Microsoft на базе механизмов OLE. Сетевой вариант этой технологии (для распределенных вычислений) известен под названием DCOM (в частности, объекты, которые можно вставлять в HTML-документы или к которым можно обращаться из Webбраузеров) известны под названием компонентов ActiveX. В COM/DCOM, как и в OpenDoc, можно использовать компоненты, написанные на разных объектноориентированных языках программирования. Но в отличие от OpenDoc в COM/DCOM остается естественная для Microsoft ориентация только на операционные системы Windows (реализация DCOM предусмотрена в ОС Windows NT 4.0). Технология ActiveX обеспечивает интерфейс для управления объектами одного приложения из другого. В общем плане ActiveX – технология интеграции программного обеспечения фирмы Microsoft. Например, используя эту технологию, можно в среде VBA организовать доступ к объектам AutoCAD.
JavaBeans – сравнительно новая технология, в которой используются компоненты, написанные на языке Java.
Основные идеи компонентно-ориентированной (объектной) технологии с созданием расширенных специализированных библиотек компонентов реали-
зованы в системе CAS.CADE (Computer Aided Software / Computer Aided Design Engineering) фирмы Matra Datavision. Система CAS.CADE состоит из несколь-
ких частей. Основными частями являются библиотеки классов и инструментальная среда для создания программного обеспечения технических и научных приложений.
Библиотеки (Object Libraries) в CAS.CADE представляют собой специализированные наборы заранее разработанных компонентов на языке С++. Совокупность библиотек имеет иерархическую структуру. Базовые компоненты соответствуют классам объектной методологии. Примерами компонентов являются строки, списки, точки, матрицы, линии, поверхности, деревья, решатели уравнений, операторы сортировки, поиска на графах и т.п. Классы группируются в пакеты, пакеты – в наборы, наборы – в домены.
В CAS.CADE выделено несколько библиотек. Во-первых, это библиотеки 2D- и 3D-моделирования, включающие компоненты для определения, создания и
ПРОГРАММНЫЕ ПРОДУКТЫ САПР |
255 |
|
|
манипулирования геометрическими моделями. Во-вторых, ряд библиотек предназначен для связи с ОС и управления данными, обмена с внешними CAD системами, создания сеточных моделей и др. Необходимо отметить, что основные приложения, на которые ориентирована CAS.CADE, – это приложения машинной графики и геометрического моделирования, поэтому в системе наиболее развиты библиотеки графических и геометрических компонентов.
С помощью CAS.CADE создают специализированные САПР при сравнительно малых затратах времени и средств.
* * *
Компьютерные технологии моделирования позволяют, таким образом, в ходе проектирования, расчета и конструирования ХТС оценить качество проекта, не прибегая к изготовлению экспериментальных образцов, что позволяет ускорить процесс совершенствования разработки ХТС до требований, предъявляемых заказчиком.
Вопросы для самоконтроля
1.Назовите источники неопределенности при проектировании ХТС.
2.Сформулируйте одноэтапную задачу интегрированного проектирования
сжесткими ограничениями в условиях неопределенности. Запишите дискретный аналог этой задачи.
3.Запишите алгоритм решения одноэтапной задачи интегрированного проектирования с жесткими ограничениями в условиях неопределенности.
4.Сформулируйте одноэтапную задачу интегрированного проектирования
смягкими ограничениями в условиях неопределенности. Запишите дискретный аналог этой задачи.
5.Запишите алгоритм решения одноэтапной задачи интегрированного проектирования с мягкими ограничениями в условиях неопределенности.
6.Сформулируйте одноэтапную задачу интегрированного проектирования со смешанными ограничениями в условиях неопределенности. Запишите дискретный аналог этой задачи.
7.Запишите алгоритм решения одноэтапной задачи интегрированного проектирования со смешанными ограничениями в условиях неопределенности.
8.Сформулируйте двухэтапную задачу интегрированного проектирования
сжесткими ограничениями в условиях неопределенности. Запишите дискретный аналог этой задачи.
9.Запишите алгоритм решения двухэтапной задачи интегрированного проектирования с жесткими ограничениями в условиях неопределенности.
10.Опишите наиболее известные программные продукты САПР.
11.Охарактеризуйте техническое обеспечение САПР.
12.Охарактеризуйте информационное обеспечение САПР.
13.Охарактеризуйте лингвистическое обеспечение САПР.