Шалыто А. А. Две встречи с Айваром Якобсоном



Первая встреча

30 июня 2004 г. в Санкт-Петербургском государственном политехническом университете выступал Айвар Якобсон — один из создателей языка UML (Unified Modeling language), предназначенного для моделирования объектно-ориентированных программ. Он также является одним из разработчиков языка SDL, который был принят телекоммуникационным сообществом в 1967 году в качестве отраслевого стандарта. С 1995 по 2003 год А. Якобсон занимал пост вице-президента компании Rational Software, которое в настоящее время является подразделением корпорации IBM, которое разрабатывает инструментальные средства для поддержки всех этапов жизненного цикла программного обеспечения.

Язык UML чрезвычайно распространен в мире. По нему имеется огромное число книг (например, [1,2]). По словам А. Якобсона, этот язык преподается более, чем в 1000 университетах мира.

Язык UML содержит несколько типов диаграмм, с помощью которых можно описывать как статические, так и динамические свойства программ. Однако подход к совместному использованию диаграмм, описывающих различные свойства программ, авторы языка не предложили, даже несмотря на создание ими унифицированного процесса разработки программного обеспечения [3]. Они также не предложили операционную семантику, что приводит к тому, что каждый реализует диаграммы этого языка по-своему. Кроме того, не совсем ясно, почему это язык моделирования программ, а не их проектирования.

По моему мнению, для проектирования объектно-ориентированных программ достаточно двух типов диаграмм: диаграмм классов (объектов) и диаграмм состояний. Это соответствует утверждению, высказанному в работе [4], что в UML, как и везде, действует закон «20-80», в соответствии с которым в данном случае 20% типов диаграмм достаточны для решения 80% задач.

Как и в SWITCH-технологии [5], при проектировании объектно-ориентированных программ их предлагается строить также, как автоматизируются объекты различного назначения. При этом обычно строится схема, содержащая источники информации, систему управления, объекты управления и обратные связи. Эта схема, задающая интерфейс системы управления, в качестве которой предложено использовать систему взаимосвязанных конечных автоматов, в работе [5] названа схемой связей. В работе [6] было предложено диаграмму объектов изображать не традиционным путем (сверху вниз), а в виде схемы связей, которая располагается слева направо.

Кроме того, в работе [7] была предложена другая нотация для построения диаграмм поведения, так как традиционная нотация без вложенных автоматов и с «длинными» именами переменных не позволяет описывать сложное поведение программ.

Последнее я попытался объяснить А. Якобсону, задав вопрос: — Согласны, ли Вы с тем, что предложенная в UML-нотация для диаграмм состояний не позволяет описывать системы со сложным поведением?

А. Якобсон не согласился с этим и сказал, что указанные диаграммы используются ведущими в области автоматизации технологических процессов фирмами, а там логика сложная.

В перерыве я показал А. Якобсону проектную документацию на программное обеспечение системы управления дизель-генератором [8], которое, правда, было реализовано процедурно. Увидев некоторые диаграммы состояний, в которых переходы зависят от десятка входных воздействий, а число действий, выполняемых на переходах, также порядка десяти, классик признал [9], что при использовании традиционной нотации UML-диаграммы становятся чрезвычайно громоздкими.

Дальнейшей беседы не получилось, так как А. Якобсона увели организаторы конференции на очередное мероприятие. Из доклада классика особо запомнилось, что наиболее актуальной задачей в рассматриваемой области является создание исполняемого языка UML [10], который позволит генерировать программы по диаграммам. Отметим, что предисловие к книге [10], ставшей классической, также написал А. Якобсон.

Что мы сделали за год

Если до приезда А. Якобсона полноценного инструментального средства для поддержки автоматного программирования у нас еще не было, но работы по его созданию активно велись, то через некоторое время появилось инструментальное средство для поддержки автоматного программирования, названное UniMod. Это средство, созданное в компании eVelopers Corp., базируется на трех «китах»: языке UML, SWITCH-технологии и платформе Eclipse [6], и является открытым [11].

При создании этого средства первоначально была определена операционная семантика UML-диаграмм состояний [12], решены вопросы автоматического завершения ввода [13], разработаны алгоритмы укладки диаграмм состояний [14].

UniMod, в частности, обеспечивает:

Высокое качество инструментального средства UniMod во многом связано с тем, что оно в отличие от аналогов, предназначено, в первую очередь, не для упрощения «жизни» других людей, а для облегчения «жизни» его создателей, в частности, применяется при разработке новых версий самого инструментального средства.

Так как разрабатываемое средство позволяет исполнять диаграммы, то оно решает задачу о создании исполняемого UML [15], поставленную в прошлом году А. Якобсоном.

Вторая встреча

Прошел год. В Москве 27 октября 2005 г. началась первая конференция Software Engineering Conference (Russia) 2005. Среди приглашенных иностранных гуру был и А. Якобсон. Более того, он в некотором смысле был главным гуру, так как внес существенный вклад не только в организацию процесса проектирования, как остальные гуру, но и в технологии создания программного обеспечения.

Преветствуя участников конференции, А. Якобсон, в частности, сказал, что к моделированию программ в настоящее время в мире проявляется большой интерес, и поэтому он почти каждый месяц где-либо выступает. После завершения выступления наши взгляды встретились, он узнал меня, и мы поздоровались. Я не стал ждать пока организаторы куда-то его снова уведут, и передал ему статью на английском языке об инструментальном средстве UniMod [16] и пример использования этого средства при создании одной из компьютерных игр, в которой применяются пять весьма сложных автоматов. Практически сразу после этого его действительно увели.

Секционные заседания проходили параллельно в трех залах. Я выступал вторым (это очень важно, так как на конференциях обычно с каждым следующим докладом число слушателей уменьшается) на секции «Технологии и технологические решения» и достаточно подробно рассказал об автоматном программировании. После этого также подробно Вадим Гуров рассказал про UniMod. Еще никогда столько времени и при большом числе слушателей не удавалось рассказывать про предлагаемый подход к программированию. После выступления ко мне подошли несколько человек, и каждый из них сказал, что широко использует автоматы в программировании (в одном из продуктов их применяется около двухсот!). При этом они сказали, что впервые услышали об автоматном программировании как об одном из стилей программирования [17].

Во второй половине дня А. Якобсон выступил с четырехчасовым докладом на тему «Унифицированная основа для современных способов разработки лучшего программного обеспечения». К сожалению, я не смог присутствовать на его докладе.

На следующий день несколько человек сказали мне, что в своем выступлении А. Якобсон, в частности, отметил, что мною разрабатывается весьма оригинальный подход к проектированию программ. Это меня, несомненно, обрадовало, и когда мы встретились в перерыве вновь, я передал ему три текста моих докладов о реактивных мультиагентных системах [18-20], вспомнив о том, что его фирма занимается этой тематикой. Кстати, на конференциях в Бостоне по мультиагентным системам я дважды был сопредседателем секции теоретических аспектов их построения.

В этот же день А. Якобсон на секции «Процессы разработки ПО» выступил еще раз. Тема его доклада: «После гибких методов: умные».

Конференция заканчивалась. Я подошел к гуру и для «закрепления» нашего знакомства передал ему проектную документацию на систему управления дизель-генератором [8], которую в прошлом году не удалось обсудить в должной мере, а также проектную документацию на проект игры Robocode — наш первый проект, в котором автоматный и объектный подходы применялись совместно (автоматы использовались как методы некоторых классов) [21].

Так как эта проектная документация была написана на русском языке, А. Якобсон пошутил, что ему придется выучить русский язык. Я не успел сказать, что сейчас классикам программирования модно знать русский язык (Н. Вирт и Б. Мейер знают русский весьма хорошо [22]), так как мой собеседник заметил, что он все поймет по диаграммам.

Итак, наша вторая встреча состоялась. Она прошла для меня значительно лучше первой. Надеюсь, что через некоторое время А. Якобсон станет сторонником автоматного программирования, о чем он, видимо, не забудет сказать.

Литература

  1. Буч  Г., Рамбо  Д., Якобсон  А. Язык UML. Руководство пользователя. М.: ДМК, 2000.
  2. Рамбо  Д., Якобсон  А., Буч  Г. UML. Специальный справочник. СПб.: Питер, 2002.
  3. Якобсон  А., Буч  Г., Рамбо  Д. Унифицированный процесс разработки программного обеспечения. СПб.: Питер, 2002.
  4. Эккель  Б. Философия Java. СПб.: Питер, 2001.
  5. Шалыто  А.А. SWITCH-технология. Алгоритмизация и программирование задач логического управления. СПб.: Наука, 1998. http://is.ifmo.ru/books/switch/1
  6. Гуров  В.С., Мазин  М.А., Нарвский  В.С., Шалыто  А.А. UML. SWITCH-технология. Eclipse //Информационно-управляющие системы. 2004. № 6, с.12-17. http://is.ifmo.ru/works/uml-switch-eclipse/
  7. Туккель  Н.И., Шалыто  А.А. SWITCH-технология — автоматный подход к созданию программного обеспечения «реактивных» систем //Программирование. 2001. № 5, c.45-62. http://is.ifmo.ru/works/switch/1/
  8. Туккель  Н.И., Шалыто  А.А. Система управления дизель-генератором (фрагмент). Программирование с явным выделением состояний. Проектная документация. СПб. 2002. http://is.ifmo.ru/projects/dg/
  9. http://is.ifmo.ru/aboutus/uml_ph/
  10. Mellor  S., Balcer  M. Executable UML. A Foundation for Model-Driven Architecture. Addison-Wesley. 2002.
  11. http://unimod.sf.net
  12. Гуров  В.С., Мазин  М.А., Шалыто  А.А. Операционная семантика UML-диаграмм состояний в программном пакете UniMod /Труды XII Всероссийской научно-методической конференции «Телематика-2005». СПб.: СПбГУ ИТМО. Т.1, с.74-76. http://tm.ifmo.ru/tm2005/db/doc/get_thes.php?id=224
  13. Гуров  В.С., Мазин  М.А. Создание системы автоматического завершения ввода с использованием пакета UniMod /Вестник II Межвузовской конференции молодых ученых. Т.1. СПб.: СПбГУ ИТМО. 2005, с.73-87.
  14. Коротков  М.А. Алгоритмы укладки диаграмм состояний /Вестник II Межвузовской конференции молодых ученых. Т.1. СПб.: СПбГУ ИТМО. 2005, с.5-11.
  15. Гуров  В.С., Нарвский  А.С., Шалыто  А.А. Исполняемый UML из России //PC Week/RE. № 26, c.18,19. http://is.ifmo.ru/works/_umlrus.pdf
  16. Gurov  V., Mazin  M., Narvsky  A., Shalyto  A. UniMod: Method and Tool for Development of Reactive Object-Oriented Programs with Explicit Emphasis //Proceedings of St. Petersburg IEEE Chapters. 2005. V. II, pp. 106-110. http://is.ifmo.ru/articles_en/_unimod.pdf
  17. Непейвода  Н.Н. Стили и методы программирования. М.: Интернет-университет информационных технологий. 2005.
  18. Naumov  L., Shalyto  A. Automata Theory for Multi-Agent Systems Implementation //International Conference on «Integration of Knowledge Intensive Multi-Agent Systems: Modeling, Exploration and Engineering». KIMAS-03. Boston: IEEE Boston Section. 2003, pp.65-70. http://is.ifmo.ru/articles_en/_aut_th.pdf
  19. Yartsev  B., Korneev  G., Kotov  V., Shalyto  A. Automata-Based Programming of the Reactive Multi-Agent Control Systems //2005 International Conference on «Integration of Knowledge Intensive Multi-Agent Systems: Modeling, Exploration and Engineering». KIMAS-05. Boston: IEEE Boston Section. 2005, pp.449-453. http://is.ifmo.ru/articles_en/_kimas05-2.pdf
  20. Naumov  L., Korneev  G., Shalyto  A. Methods of Object-Oriented Reactive Agents Implementation on the Basis of Finite Automata //2005 International Conference on «Integration of Knowledge Intensive Multi-Agent Systems: Modeling, Exploration and Engineering». KIMAS-05. Boston: IEEE Boston Section. 2005, pp.460-465. http://is.ifmo.ru/articles_en/_kimas.05-1.pdf
  21. Туккель  Н.И., Шалыто  А.А. Система управления танком для игры Robocode. Обектно-ориентированное программирование с явным выделением состояний. Программная документация. СПб. 2001. http://is.ifmo.ru/projects/tanks/
  22. Шалыто  А.А. Никлаус Вирт — почетный доктор СПбГУ ИТМО. http://is.ifmo.ru/belletristic/_wirth_poch.pdf

Об авторе: Шалыто Анатолий Абрамович, докт. техн. наук, профессор, заведующий кафедрой «Технологии программирования» СПбГУ ИТМО, адрес: shalyto@mail.ifmo.ru