Обзор
июньского (2000 г.) номера журнала Computer (Volume 33,
Number 6), IEEE Computer Society
Сергей
Кузнецов
Темой июньского номера журнала Computer являются средства и методы
объектно-ориентированного программирования систем реального времени (Object-oriented Real-time Computing ≈ ORC). Редакторы соответствующей
подборки ≈ Eltefaat Shokri (Sun Microsystems) и Philipp
Sheu (University of California, Irvine) ≈ начинают свою редакторскую заметку с двух замечаний.
Во-первых, объектно-ориентированные (ОО) технологии до последнего времени чаще
всего использовались в бизнес-приложениях, а не в приложениях реального
времени. Во-вторых, методы построения систем реального времени очень медленно
движутся в направлении зрелости ≈ недостаточно развиты области модульного
проектирования и анализа (а именно в этом наиболее силен ОО-подход). Поэтому в
настоящее время исследователи из академических и производственных кругов все
больше интересуются интеграцией направлений реального времени и ОО-подхода.
Как
отмечают редакторы, в данном номере представлен неполный мгновенный снимок
текущего состояния ORC. Ограниченный объем журнала позволил охватить лишь
относительно небольшую часть общей картины. Однако, по моему мнению,
представленные четыре статьи правильно характеризуют направление в целом.
Первая
статья называется "The Real-Time Specification for
Java". Ее
авторы ≈ Greg Bollella (IBM) и один из отцов языка Java Games Gostling (Sun Microsystems). Оба автора являются членами группы экспертов Real-Time for Java Experts Group (RTJEG), которая начала разрабатывать спецификации Java реального
времени (Real-Time Specification for Java ≈ RTSJ) в марте 1999 г. в рамках
программы Java Community Process. При разработке спецификаций
группа руководствовалась списком требований, сформулированных NIST (National Institute of Science and Technology), а также другими
индустриальными компаниями. Учитывались особенности среды Java, влияющие
на детерминированность выполнения асинхронных Java-программ ≈ планирование
нитей, управление памятью, синхронизация. Кроме того, в соответствии с
отмеченными выше требованиями в рассмотрение были включены четыре
дополнительных вопроса: асинхронное управление
событиями, асинхронная передача управления, асинхронное завершение нитей,
доступ к физической памяти. Поскольку статья является кратким изложением
текущего положения дел в отношении спецификаций, невозможно привести ее еще
более краткий обзор, нужно читать оригинал. Замечу лишь, что по планам RTJEG окончательный
вариант RTSJ с необходимыми руководствами и наборами тестов
должен появиться в конце этого года (см. www.rtj.org).
Авторы следующей статьи ("An Overview of
the Real-Time CORBA Specification") ≈ Douglas C. Schmidt (University of
California, Irvine) и Fred Kuhns (Washington University, St. Louis). По своей структуре эта
статья похожа на предыдущую, поскольку тоже содержит краткое описание
спецификаций. В данном случае эти спецификации содержатся в документе OMG (Object Management Group ≈ www.omg.org)
Real-Time CORBA 1.0. Спецификации расширяют действующий стандарт CORBA
и недавно
принятый стандарт OMG Messaging. Авторы отмечают следующие аспекты CORBA (Common Object Request Broker Architecture), которые нуждались в
пересмотре при разработки спецификаций реального времени: (1)
управление ресурсами коммуникационной инфраструктуры;
(2) использование
механизмов планирования операционных систем (ОС) ≈ не любая ОС пригодна для
реализации CORBA реального времени, но, в частности, соблюдение
требований Posix 1003.1c является достаточным;
(3) возможность
предъявления требований к ресурсам со стороны приложений к ORB (Object Request Broker) ≈ приоритеты нитей, буфера для очередей и т.д.; (4) сервисы
и приложения реального времени ≈ эффективное, масштабируемое и предсказуемое
поведение компонентов. Конечно, объем статьи (а может быть, и имеющиеся
ограничения со стороны OMG) позволили авторам привести
только очень краткий обзор спецификаций. На сайте OMG в
свободном доступе эти спецификации недоступны. Но интересно, что один из
авторов (Шмит) предлагает всем желающим свою собственную свободно доступную (с
исходными текстами) реализацию CORBA реального времени (см.
www.cs.wustl.edu/~schmidt/TAO.html).
Третья
статья написана Bran Selic (Rational Software) и называется "A Generic Framework for Modeling Resources with UML". Объектно-ориентированный
язык моделирования UML (Unified Modeling Language) широко используется при
проектировании, реализации, распространении и поддержке программного
обеспечения. В статье идет речь о возможном использовании UML для
количественного анализа проектируемых систем реального времени. Выделяются две
разновидности количественного анализа: анализ планируемости для
определения того, удовлетворяет ли система реального времени имеющимся
временным ограничениям; анализ эффективности,
позволяющий предсказать время ответа, задержки, требования к ресурсам. Первый
вид анализа применим для систем жесткого реального времени со статической
загрузкой, второй ≈ для систем мягкого реального времени. В статье не
предлагается готовая
среда UML с представленными типами конкретных ресурсов
(памяти, семафоров и т.д.), а описывается некоторая родовая модель ресурса. Для
представления этой модели используется язык UML. В дальнейшем эта родовая модель может
использоваться для представления конкретных ресурсов при количественном анализе
систем реального времени.
Наконец,
последняя, четвертая статья в тематической подборке принадлежит перу K.H. Kim (University of California, Irvine) и называется "APIs for Real-Time Distributed Object Programming". В
предлагаемом подходе API (Application Programming Interface) реального времени
представляется в виде набора библиотек классов систем программирования C++ или Java без
потребности создания новых трансляторов. Традиционно принято считать, что
средства программирования распределенных систем реального времени должны
обеспечивать следующие возможности: корректную работу со
временем, единообразный механизм вызовов локальных и удаленных объектов,
ограничения на время получения результатов от вызванного метода объекта,
триггерные действия по времени, асинхронное выполнение методов, неблокирующие
вызовы методов объектов. Для каждой из этих возможностей автор предлагает свой API с
соответствующей мотивацией. Основной идеей статьи является то, что не следует
дожидаться появления идеальных языков программирования распределенных систем
реального времени. С прагматической точки зрения достаточным решением является
разработка необходимых абстрактных API на основе существующих
объектно-ориентированных языков программирования.
В
июньский номер также вошли две большие статьи, формально не относящиеся к
тематической подборке. В статье Peter M. Maurer (University
of Sough Florida) "Components: What If They Gave a Revolution and Nobody
Came?" обсуждается
роль и место компонентного программирования в современной информационной
технологии. Несмотря на наличие вопросительного знака в названии статьи автор
решительно утверждает, что компонентное программирование произвело третью
революцию в истории информационной технологии (первые две были связаны с
появлением компьютеров с сохраняемой в памяти программой и созданием языков
программирования высокого уровня). Автор называет эту третью революцию
"эволюционной", потому что она произошла постепенно и без потрясений.
Он выражает удивление недостаточным вниманием к этому событию в академических
кругах (на мой взгляд, в этом автор не совсем прав; я еще скажу об этом немного
позже). Что действительно удивляет в статье, так это полная ориентация только
на компонентный подход компании Microsoft. Последовательно описывается
развитие идей компонентного программирования от Visual
Basic и VBX до Active X, OLE и COM/DCOM. Все это, конечно, очень интересно, но не вполне
объективно, более объективным был бы сравнительный анализ разных имеющихся
подходов (в том числе JavaBeans и CORBA). И если считать, что третью
революцию произвела компания Microsoft, то понятен слабый интерес к
этой революции со стороны исследователей, потому что отсутствует поле
исследований.
И
еще одна большая статья "Winning Teams:
Performance Engineering during Development" представлена Robert
S. Oshana (Object Space). Речь идет о технологии Software Performance Engineering
(SPE), которая
применялась при разработке программного обеспечения (ПО) нового процессора
обработки сигналов компании Raytheon Systems. Как обычно, разработка ПО
производилась в параллель с созданием процессора, причем в начале процесса были
известны не все технические характеристики будущего процессора. Поэтому
разработчики ПО были вынуждены во время всего процесса разработки оценивать
эффективность системы на основании ее текущего состояния и имеющейся информации
о процессоре. Статья интересна тем, что последовательно описаны применявшиеся
методы и подходы. Но в целом это была "ручная", неавтоматизированная
работа. Насколько реально можно применить результаты в других случаях,
непонятно. Мне кажется, что по общей направленности эта статья близка к рассмотренной
выше статье про UML для систем реального времени, но статья про UML, как
мне кажется, затрагивает более перспективное направление.
Из
мелких статей и заметок отмечу обзор новых книг, представленный в колонке Michael J. Lutz. Среди этих книг мне показались особенно интересными две ≈ E-Data: Turning Data into Information with Data Warehousing (автор Jill Dyche) и Building Web Applications with UML (автор Jim Conallen). Обе книги вышли в издательстве Addison
Wesley Longman, на
сайте которого (www.awl.com) можно получить о них более
подробную информацию.
Любителей
технологии Java наверняка заинтересует заметка Jim Waldo
(Sun Microsystems) "Alive and Well: Jini Technology Today". Технология Jini была
объявлена компанией Sun 18 месяцев тому назад. Jini
распростаняется
в соответствии со специальной лицензией, согласно которой разработчики,
желающие участвовать в сообществе Jini, получают доступ к исходным
кодам Jini для пробной реализации. Описывается текущее
состояние и то, как повлияло на развитие технологии сформированное сообщество.
Июньский
номер журнала Computer мне показался очень интересным и содержательным.
Большая часть статей написана на высоком технологическом уровне. Рекомендую
прочитать этот номер целиком. Как всегда, напомню, что журнал в печатной форме
получают все члены IEEE Computer Society. За подробностями
относительно членства в Computer Society обращайтесь ко мне (kuz@ispras.ru) или на сайты www.computer.org и www.computer.org.ru.