ENVY/Developer¶
ENVY/Developer — это среда разработки программного обеспечения, предназначенная для создания и поддержки приложений на языке Smalltalk. Она была разработана компанией Object Technology International (OTI) и получила известность благодаря своей уникальной архитектуре, ориентированной на управление версиями и совместную работу на уровне отдельных методов и классов, а не целых файлов.
¶История
Разработка ENVY/Developer началась в конце 1980-х годов в канадской компании Object Technology International (OTI). Изначально система создавалась как внутренний инструмент для управления крупными проектами на Smalltalk, которые вела компания. В 1990 году OTI выпустила первую коммерческую версию продукта.
В 1996 году корпорация IBM приобрела OTI, и ENVY/Developer стал частью портфеля продуктов IBM для разработки на Smalltalk. Под управлением IBM система получила дальнейшее развитие, в частности, была интегрирована с VisualAge for Smalltalk. В 2000-х годах, с упадком коммерческого Smalltalk, развитие ENVY/Developer замедлилось. В 2005 году IBM прекратила продажи VisualAge for Smalltalk, однако ENVY/Developer продолжил использоваться в сообществе энтузиастов и в некоторых коммерческих проектах. В 2010-х годах исходный код ENVY/Developer был открыт под лицензией MIT, что позволило сообществу поддерживать и адаптировать его для современных реализаций Smalltalk, таких как VA Smalltalk и Pharo.
¶Архитектура и принципы работы
ENVY/Developer отличается от традиционных сред разработки, работающих с файлами. В основе её архитектуры лежит концепция управления версиями на уровне кода (code-level versioning). Вместо файлов система оперирует тремя основными сущностями:
- Метод (Method): наименьшая единица кода, для которой ведётся история изменений.
- Класс (Class): набор методов, объединённых общей структурой.
- Приложение (Application): логическая группа классов, представляющая собой модуль или подсистему.
¶Репозиторий
Центральным элементом ENVY/Developer является репозиторий — база данных, хранящая все версии методов, классов и приложений. Репозиторий может быть расположен на сервере или локально. Каждое изменение, которое разработчик вносит в код, фиксируется в репозитории как новая версия. Это позволяет отслеживать полную историю изменений, возвращаться к предыдущим состояниям и анализировать, кто и когда внёс конкретное изменение.
¶Версии и конфигурации
Ключевым понятием является версия (Version). Версия — это снимок состояния метода, класса или приложения в определённый момент времени. Версии имеют уникальные идентификаторы и комментарии, описывающие внесённые изменения.
Конфигурация (Configuration) — это набор версий приложений, которые вместе образуют работоспособную систему. Конфигурации позволяют фиксировать состояние проекта в определённый момент, например, для выпуска релиза. Разработчик может загрузить в свою среду любую конфигурацию из репозитория и начать работу с ней.
¶Рабочие пространства
ENVY/Developer поддерживает концепцию рабочих пространств (Workspaces). Каждый разработчик работает в своём изолированном пространстве, где он может вносить изменения в код, не влияя на работу других. Изменения становятся доступными для других участников команды только после того, как разработчик явно опубликует их в репозитории, создав новую версию.
¶Ключевые возможности
- Совместная работа: несколько разработчиков могут одновременно работать над одним и тем же приложением, не блокируя друг друга. Система автоматически разрешает конфликты при публикации изменений.
- Управление версиями: полная история изменений на уровне методов и классов. Возможность просмотра различий между версиями (diff) и отката к предыдущим состояниям.
- Модульность: приложения (Applications) позволяют логически разделять код на независимые модули, что упрощает повторное использование и тестирование.
- Управление релизами: конфигурации позволяют фиксировать точный состав версий для каждого выпуска продукта.
- Отслеживание изменений: система автоматически фиксирует, кто, когда и какие изменения внёс в код.
¶Применение
ENVY/Developer использовался в основном в крупных корпоративных проектах, где требовалась высокая надёжность и возможность совместной работы больших команд разработчиков. Наиболее известные примеры применения:
- Разработка банковских и финансовых систем (например, в IBM и других финансовых институтах).
- Создание сложных бизнес-приложений.
- Разработка инструментов для моделирования и анализа данных.
С упадком коммерческого Smalltalk область применения ENVY/Developer сузилась, но он продолжает использоваться в сообществе разработчиков на VA Smalltalk и в некоторых проектах, где требуется управление версиями на уровне кода.
¶Влияние и наследие
Архитектура ENVY/Developer оказала значительное влияние на развитие систем управления версиями и сред разработки. Идеи управления версиями на уровне отдельных сущностей (методов, классов) позже были реализованы в некоторых других системах, таких как Monticello для Smalltalk. Концепция репозитория, версий и конфигураций стала основой для многих современных систем управления версиями, хотя и в адаптированном виде.
Несмотря на то, что ENVY/Developer не получил широкого распространения за пределами сообщества Smalltalk, его подход к управлению версиями на уровне кода остаётся актуальным и изучается в контексте разработки сложных, долгоживущих программных систем.
¶Интересные факты
- Название ENVY является аббревиатурой от «ENVironment for Y» (Y — это название внутреннего проекта OTI).
- Система была написана на Smalltalk, что сделало её легко расширяемой и адаптируемой под нужды конкретных проектов.
- После открытия исходного кода сообщество разработало несколько форков и адаптаций для современных сред Smalltalk, таких как Pharo.
¶Источники
- Object Technology International. (1990). ENVY/Developer User's Guide.
- IBM. (1996). VisualAge for Smalltalk: ENVY/Developer Reference.
- Nierstrasz, O., & Dami, L. (1995). Component-Oriented Software Technology. In Object-Oriented Software Composition (pp. 1-27). Prentice Hall.
- Документация сообщества VA Smalltalk.