Темой июньского номера журнала Computer являются средства и методы объектно-ориентированного программирования систем реального времени (Object-oriented Real-time Computing - ORC)
Редакторы подборки Элтифаат Шорки (Eltefaat Shokri) из компании Sun Microsystems и Филип Шью (Philipp Sheu) из Калифорнийского университета в Ирвайне начинают свою заметку с двух замечаний. Во-первых, объектно-ориентированные (ОО) технологии до последнего времени чаще всего использовались в бизнес-приложениях, а не в приложениях реального времени. Во-вторых, методы построения систем реального времени очень медленно движутся в направлении зрелости - недостаточно развиты области модульного проектирования и анализа (а именно в этом наиболее силен ОО-подход). Поэтому в настоящее время исследователи из академических и производственных кругов все больше интересуются интеграцией направлений реального времени и ОО-подхода.
Как отмечают редакторы, в данном номере представлен неполный мгновенный снимок текущего состояния 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), а также другими компаниями, представляющими отрасль ИТ. Учитывались особенности среды Java, влияющие на детерминированность выполнения асинхронных Java-программ - планирование нитей, управление памятью, синхронизация. Кроме того, в соответствии с отмеченными выше требованиями в рассмотрение были включены четыре дополнительных вопроса: асинхронное управление событиями, асинхронная передача управления, асинхронное завершение нитей, доступ к физической памяти. Поскольку статья является кратким изложением текущего положения дел в отношении спецификаций, невозможно привести ее еще более краткий обзор, нужно читать оригинал. Замечу лишь, что по планам RTJEG окончательный вариант RTSJ с необходимыми руководствами и наборами тестов должен появиться в конце этого года (см. www.rtj.org).
Авторы следующей статьи («An Overview of the Real-Time CORBA Specification») - Дуглас Шмидт (Douglas C. Schmidt) из Калифорнийского университета и Фред Кунс (Fred Kuhns) из Университета Вашингтона. По своей структуре эта статья похожа на предыдущую, поскольку тоже содержит краткое описание спецификаций. В данном случае эти спецификации содержатся в документе Real-Time CORBA 1.0, опубликованном консорциумом Object Management Group (www.omg.org). Спецификации расширяют действующий стандарт 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), который также представляет Калифорнийский университет, и называется «APIs for Real-Time Distributed Object Programming». В предлагаемом подходе API-интерфейс реального времени представляется в виде набора библиотек классов систем программирования C++ или Java без потребности создания новых трансляторов. Традиционно принято считать, что средства программирования распределенных систем реального времени должны обеспечивать следующие возможности: корректную работу со временем, единообразный механизм вызовов локальных и удаленных объектов, ограничения на время получения результатов от вызванного метода объекта, триггерные действия по времени, асинхронное выполнение методов, неблокирующие вызовы методов объектов. Для каждой из этих возможностей автор предлагает собственный API-интерфейс с соответствующей мотивацией. Основной идеей статьи является то, что не следует дожидаться появления идеальных языков программирования распределенных систем реального времени. С прагматической точки зрения достаточным решением является разработка необходимых абстрактных API-интерфейсов на основе существующих объектно-ориентированных языков программирования.
В июньский номер также вошли две большие статьи, формально не относящиеся к тематической подборке. В статье Питера Маурера (Peter M. Maurer) из Университета Южной Флориды «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 полтора года назад. Jini распространяется в соответствии со специальной лицензией, согласно которой разработчики, желающие участвовать в сообществе Jini, получают доступ к исходным кодам Jini для пробной реализации. Описывается текущее состояние и то, как повлияло на развитие технологии сформированное сообщество.
Июньский номер журнала Computer мне показался очень интересным и содержательным. Большая часть статей написана на высоком технологическом уровне. Рекомендую прочитать этот номер целиком. Как всегда, напомню, что журнал в печатной форме получают все члены IEEE Computer Society. За подробностями относительно членства в Computer Society обращайтесь ко мне (kuz@ispras.ru) или на сайты www.computer.org и www.computer.org.ru.