Введение
Коротко о SObjectizer Что же в нем такого? Ложка дегтя Terra Incognita Заключение Благодарности |
В этой статье я попытаюсь немного расказать об инструменте, в разработке которого мне повезло участвовать. Об инструменте, который я использую каждый день. Об инструменте, который изменил способ моего мышления так же, как когда-то объектно-ориентированное программирование. Это — SObjectizer, внутренний продукт компании Интервэйл (http://www.intervale.ru), который используется в качестве основного инструмента при создании C++-проектов.
В настоящее время разработчики SObjectizer стоят перед вопросом: стоит ли из внутреннего инструмента сделать SObjectizer одним из продуктов компании? Вопрос далеко не праздный и не однозначный. Главное препятствие состоит в специализации SObjectizer — инструмента для разработки ПО. С моей точки зрения у закрытых, проприетарных инструментов очень мало шансов на успех. Слишком уж большая конкуренция со стороны OpenSource-движения. Поэтому SObjectizer, если он станет самостоятельным продуктом, обязательно будет распространяться по одной из OpenSource-лицензий (сейчас выбор делается между BSD- и GPL-лицензиями).
Тем не менее, выпуск SObjectizer как отдельного продукта станет серьезным испытанием. Поэтому перед принятием окончательного решения хочется прояснить два основных вопроса:
Расказывая про SObjectizer, я не могу быть бесстрастным и полностью объективным, ведь над SObjectizer я работаю с момента его зарождения. Поэтому в данной статье я излагаю свой взгляд на SObjectizer, его достоинства и недостатки, его прошлое, настоящее и будущее. Моя точка зрения может не совпадать с точкой зрения других разработчиков и пользователей SObjectizer. А иногда и с мнением руководства компании Интервэйл.
Началось все с того, что в гомельском Конструкторском Бюро Системного Программирования (КБСП) в 1994-96 годах сложилась команда, которая под руководством Аркадия Косарева попыталась создать объектно-ориентированную SCADA-систему (Supervisory Control and Data Acquisition). Шли мы к получению результата долго и трудно. Но дошли и получили работающую версию продукта, получившего название SCADA Objectizer (см. http://msk.nestor.minsk.by/kg/2000/37/kg03710.html). Именно в SCADA Objectizer были заложены основные идеи и принципы — агенты, состояния, сообщения, события, диспетчер (как раз все то, что мы назвали агентно-ориентированным подходом). Но главное, что тогда произошло изменение способа мышления лично у меня — я стал испытывать затруднения с решением задач, в которых нельзя было применить агентный подход.
В 2000 году этот этап в истории SObjectizer печальным образом закончился: по экономическим причинам коллектив разработчиков SCADA Objectizer распался, и дальнейшее развитие SCADA Objectizer, по тем же причинам, оказалось невозможным.
Второе рождение произошло в 2002-м году в компании Интервэйл, когда несколько бывших сотрудников КБ решили, что агентный подход имеет смысл возродить. Тогда и появился SObjectizer — полностью переделанная реализация идей SCADA Objectizer. С тех пор SObjectizer используется нами при создании всех C++-проектов. И лично у меня нет сомнений в правильности выбора в пользу SObjectizer. Но об этом речь пойдет ниже.