Открыть сервисСервис

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.
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru