Разработчик | International Computers Limited , Fujitsu |
---|---|
Написано в | С3 , С |
Рабочее состояние | Текущий |
Первоначальный выпуск | середина 1970-х |
Платформы | Мейнфреймы серии ICL 2900 , серии ICL 39 |
Под влиянием | Мультикс , Джордж 3 |
Лицензия | Запатентованное коммерческое программное обеспечение |
Официальный сайт | сайт ВМЭ |
VME ( Virtual Machine Environment ) — операционная система для мэйнфреймов, разработанная британской компанией International Computers Limited (ICL, теперь часть группы Fujitsu ). Первоначально разработанная в 1970-х годах (как VME/B , позже VME 2900 ) для управления новыми мэйнфреймами серии 2900 компании ICL , операционная система теперь известна как OpenVME , включающая подсистему Unix и работающая на мэйнфреймах ICL Series 39 и Trimetra [1] , а также на стандартных серверах x64 . [2]
Программа разработки системы New Range началась с слияния International Computers and Tabulators (ICT) и English Electric Computers в 1968 году. Одним из основных решений было то, что она будет включать новую операционную систему. В ICL был проведен ряд различных исследований осуществимости и проектирования, три из которых наиболее примечательны:
Главным архитектором VME/B был Брайан Уорбойс , который впоследствии стал профессором программной инженерии в Университете Манчестера . В его дизайне можно увидеть ряд влияний, например, Multics и более раннюю операционную систему George 3 от ICL ; однако по сути он был разработан с нуля.
VME/B рассматривалась в первую очередь как конкурирующая с мэйнфреймом IBM System/370 в качестве коммерческой операционной системы и приняла кодировку символов EBCDIC . [3]
Когда New Range впервые был запущен в октябре 1974 года, его операционная система называлась «System B». К моменту первой поставки она стала «VME/B». [4]
VME/K (первоначально известная внутри компании как «System T» от «Tiny») была разработана независимо (по словам Кэмпбелла-Келли, «по прихоти Эда Мака») и позже поставлялась с меньшими мэйнфреймами, такими как 2960. В то время VME/B все еще страдала от проблем с производительностью и надежностью, и у преимущественно американской команды менеджеров были опасения по этому поводу.
Также существовал проект, известный как System D, который представлял собой передовую, высокомодульную операционную систему, разработанную для настройки и создания настраиваемых приложений, работающих в режиме, близком к реальному времени. Хотя он использовался для торгов на систему для British Rail, впоследствии он был отменен из-за ограничений инженерных ресурсов.
ICL продала Европейскому космическому агентству большую систему для обработки данных Meteosat в его операционном центре в Дармштадте . Заказной вариант VME/K, известный как VME/ESA, был разработан на месте для удовлетворения требований заказчика.
После финансового кризиса 1980 года в ICL пришло новое руководство: Кристофор Лейдлоу стал председателем, а Робб Уилмот — управляющим директором. Первым решением нового руководства было отказаться от VME/K. [5] Таким образом, в июле 1981 года был запущен VME 2900. [4] : 340 Хотя он был представлен клиентской базе как слияние VME/B и VME/K, на самом деле это была база VME/B с несколькими выбранными функциями из VME/K. Это дало возможность отказаться от некоторых устаревших функций, которые остались доступными для клиентов, которым они были нужны, в виде опции «BONVME». [ необходима цитата ]
Суффикс «2900» был убран в System Version 213 (SV213), когда ICL выпустила Series 39 в 1985 году в качестве преемника оригинальной серии 2900, а префикс «Open» был добавлен после SV294. VME стала способна размещать приложения, изначально написанные для Unix, через подсистему на основе UNIX System V Release 3 , называемую VME/X, адаптированную для работы под VME и использующую кодировку символов ASCII . [6] [7] [8]
В 2007 году компания Fujitsu анонсировала версию VME, работающую как размещенная подсистема, называемая superNova , в Microsoft Windows , SUSE или Red Hat Enterprise Linux на оборудовании x86-64 . [2]
В 2012 году группа пользователей VME, AXiS, объявила, что после почти 40 лет своего существования она распускается из-за сокращения пользовательской базы. [9]
Fujitsu намеревалась поддерживать VME на компьютерах клиентов до 2020 года. [10]
В 2020 году компания Fujitsu перенесла 13 приложений HM Revenue and Customs со своих компьютеров на виртуальную управляемую платформу хостинга VME компании Fujitsu. [11] [12]
По состоянию на 2021 год Департамент труда и пенсий полностью заменил свои системы на базе VME после завершения отмеченной наградами программы замены VME-R. [13]
VME структурирована как набор слоев, каждый из которых имеет доступ к ресурсам на разных уровнях абстракции. Виртуальные ресурсы, предоставляемые одним слоем, создаются из виртуальных ресурсов, предлагаемых слоем ниже. Доступ к ресурсам каждого слоя контролируется с помощью набора уровней доступа: для того, чтобы процесс мог использовать ресурс на определенном уровне доступа, он должен иметь ключ доступа, предоставляющий доступ к этому уровню. Концепция похожа на «кольца защиты» в Multics . Архитектура допускает 16 уровней доступа, из которых внешние 6 зарезервированы для кода уровня пользователя.
Ортогонально уровням доступа операционная система делает ресурсы доступными для приложений в форме виртуальной машины (ВМ). ВМ может запускать несколько процессов. На практике ВМ в ВМ ближе к концепции процесса в других операционных системах, в то время как процесс ВМ (или подпроцесс, созданный приложением) больше похож на поток в других системах. Однако процессы, запущенные в ВМ, не могут работать одновременно и, таким образом, напоминают пользовательские потоки, обнаруженные в других системах. [14] : 32 Специальная инструкция участвует в передаче управления между процессами, совместно использующими одну и ту же ВМ. [8] : 483
Выделение ресурсов виртуальной машине использует модель стека: когда стек выталкивается, все ресурсы, выделенные на этом уровне стека, освобождаются. Вызовы из приложения в операционную систему, таким образом, производятся вызовом, который сохраняет тот же стек процесса, но с измененным уровнем защиты; результирующая эффективность системных вызовов является одной из особенностей, которая делает архитектуру конкурентоспособной.
Связь между виртуальными машинами достигается посредством событий (названных каналов связи) и общих областей памяти. Аппаратная архитектура также предоставляет семафорные инструкции INCT (инкремент-и-тест) и TDEC (тест-и-декремент).
Файлы и другие постоянные объекты записываются в репозиторий, называемый Каталогом. Иерархия именования файлов не зависит от местоположения файла на конкретной ленте или дисковом томе. В те дни, когда была большая потребность в автономном хранении, это позволяло легко отслеживать файлы независимо от их местоположения и перемещать файлы между местоположениями без их переименования. Помимо файлов, Каталог отслеживает пользователей и группы пользователей, тома, устройства, сетевые подключения и многие другие ресурсы. Метаданные для файлов могут храниться в объекте, называемом Описанием файла. Каталог, вероятно, был первым примером того, что позже будет называться базой данных «сущность-связь» .
Прерывания обрабатываются путем создания нового кадра стека в стеке для соответствующего процесса, обработки прерывания с использованием этой новой среды и последующего извлечения стека для возврата к прерванному процессу.
Исключения во время выполнения, называемые непредвиденными обстоятельствами , фиксируются обработчиком ошибок объектной программы (OPEH), который может создать отчет (эквивалент трассировки стека ) либо в интерактивном режиме, либо записать его в журнал.
Скомпилированный объектный код поддерживается в формате OMF (Object Module Format), который является как выходом компилятора, так и форматом, используемым загрузчиком. Доступны различные компиляторы, а также утилиты, в частности Collector, который связывает код в нескольких модулях OMF в один модуль для более эффективной загрузки во время выполнения, и Module Amender, который позволяет вносить исправления в инструкции в модуле OMF для исправления ошибок, используя синтаксис языка ассемблера.
Язык команд для VME известен как SCL (язык управления системой).
Это гораздо более узнаваемый типизированный язык программирования высокого уровня , чем языки управления заданиями или языки оболочек, встречающиеся в большинстве других операционных систем: его можно сравнить с языками сценариев, такими как JavaScript , хотя его поверхностный синтаксис происходит от Algol 68 .
SCL разработан для обеспечения как интерактивного использования строк за раз из консоли или из командного файла , так и создания исполняемых скриптов или программ (когда язык компилируется в формат объектного модуля таким же образом, как и любой другой язык программирования VME). Объявление процедуры в SCL также действует как определение простой формы или шаблона, позволяющего вызывать процедуру из интерактивного терминала, с полями, проверенными в соответствии с типами данных базовых параметров процедуры или с использованием значений параметров процедуры по умолчанию.
Встроенный словарь команд использует последовательное соглашение об именовании с повелительным глаголом, за которым следует существительное: например, DELETE_FILE или DISPLAY_LIBRARY_DETAILS. Команда может быть написана полностью или в сокращенной форме, которая объединяет стандартные сокращения для глагола и существительного: например, XF (X для DELETE, F для FILE) или DLBD (D для DISPLAY, LB для LIBRARY, D для DETAILS).
SCL имеет блочную структуру, в которой блоки begin/end выполняют двойную и взаимодополняющую роль определения лексической области видимости объявлений переменных и определения точек, в которых ресурсы, полученные от операционной системы, должны быть освобождены. Переменные в языке (доступные из приложений в форме переменных среды ) могут иметь ряд простых типов, таких как строки, суперстроки (последовательности строк), булевы значения и целые числа, а также используются для хранения ссылок на системные ресурсы, такие как файлы и сетевые соединения.
Можно «разобрать» программу SCL из OMF обратно в исходный код SCL с помощью команды READ_SCL (или RSCL). Однако вывод не всегда идеален и часто содержит ошибки, которые могут остановить повторную компиляцию без вмешательства пользователя.
Простой пример кода можно увидеть на сайте 99 bottles of beer . [15]
Более реалистичный пример, где SCL используется для компиляции программы, написанной на S3 , показан ниже. Этот пример взят из Архива реализаций Kermit Колумбийского университета . [16]
НАЧИНАТЬ В ЛЮБОЕ ВРЕМЯ РЕЗУЛЬТАТ GT 0 +_ ТОГДА +_ SEND_RESULT_MESSAGE (RES = РЕЗУЛЬТАТ, ДЕЙСТВОВАТЬ = "ВЫЙТИ()") ФИ ИНТЕЛЛЕКТ KMT_SRC, KMT_OMF, KMT_REL ASSIGN_LIBRARY (NAM = KERMIT.ИСТОЧНИК, МШУ = KMT_SRC) ASSIGN_LIBRARY (NAM = KERMIT.OMF, МШУ = KMT_OMF) ASSIGN_LIBRARY (NAM = KERMIT.REL, МШУ = KMT_REL) НАЧИНАТЬ DELETE_FILE (NAM = *KMT_OMF.KMT_DATA_MODULE(101)) DELETE_FILE (NAM = *KMT_OMF.KMT_DH_MODULE(101)) DELETE_FILE (NAM = *KMT_OMF.KMT_EH_MODULE(101)) DELETE_FILE (NAM = *KMT_OMF.KMT_FH_MODULE(101)) DELETE_FILE (NAM = *KMT_OMF.KMT_HELP_MTM(101)) DELETE_FILE (NAM = *KMT_OMF.KMT_MAIN_MODULE(101)) DELETE_FILE (NAM = *KMT_OMF.KMT_PH_MODULE(101)) DELETE_FILE (NAM = *KMT_OMF.KMT_PP_MODULE(101)) DELETE_FILE (NAM = *KMT_OMF.KMT_SP_MODULE(101)) DELETE_FILE (NAM = *KMT_OMF.KMT_SP_MTM(101)) DELETE_FILE (NAM = *KMT_OMF.KMT_UI_MODULE(101)) УДАЛИТЬ_ФАЙЛ (NAM = *KMT_REL.KERMIT(101)) УДАЛИТЬ_ФАЙЛ (NAM = *KMT_REL.KERMIT_MODULE(101)) КОНЕЦ S3_COMPILE_DEFAULTS (LIS = ОБЪЕКТ & XREF, DIS = ОШИБКИ) S3_COMPILE (INP = *KMT_SRC.KMT_DATA_MODULE(101), OMF = *KMT_OMF.KMT_DATA_MODULE(101)) S3_COMPILE (INP = *KMT_SRC.KMT_DH_MODULE(101), OMF = *KMT_OMF.KMT_DH_MODULE(101)) S3_COMPILE (INP = *KMT_SRC.KMT_EH_MODULE(101), OMF = *KMT_OMF.KMT_EH_MODULE(101)) S3_COMPILE (INP = *KMT_SRC.KMT_FH_MODULE(101), OMF = *KMT_OMF.KMT_FH_MODULE(101)) НОВЫЙ_МОДУЛЬ_ТЕКСТА_СООБЩЕНИЯ (CON = *KMT_SRC.KMT_HELP_MTM(101), OMF = *KMT_OMF.KMT_HELP_MTM(101)) S3_COMPILE (INP = *KMT_SRC.KMT_MAIN_MODULE(101), OMF = *KMT_OMF.KMT_MAIN_MODULE(101)) S3_COMPILE (INP = *KMT_SRC.KMT_PH_MODULE(101), OMF = *KMT_OMF.KMT_PH_MODULE(101)) S3_COMPILE (INP = *KMT_SRC.KMT_PP_MODULE(101), OMF = *KMT_OMF.KMT_PP_MODULE(101)) S3_COMPILE (INP = *KMT_SRC.KMT_SP_MODULE(101), OMF = *KMT_OMF.KMT_SP_MODULE(101)) НОВЫЙ_МОДУЛЬ_ТЕКСТА_СООБЩЕНИЯ (CON = *KMT_SRC.KMT_SP_MTM(101), OMF = *KMT_OMF.KMT_SP_MTM(101)) S3_COMPILE (INP = *KMT_SRC.KMT_UI_MODULE(101), OMF = *KMT_OMF.KMT_UI_MODULE(101)) СОБИРАТЬ ()---- ВВОД(*KMT_OMF.KMT_DATA_MODULE(101) & *KMT_OMF.KMT_DH_MODULE(101) & *KMT_OMF.KMT_EH_MODULE(101) & *KMT_OMF.KMT_FH_MODULE(101) & *KMT_OMF.KMT_HELP_MTM(101) & *KMT_OMF.KMT_MAIN_MODULE(101) & *KMT_OMF.KMT_PH_MODULE(101) & *KMT_OMF.KMT_PP_MODULE(101) & *KMT_OMF.KMT_SP_MODULE(101) & *KMT_OMF.KMT_SP_MTM(101) & *KMT_OMF.KMT_UI_MODULE(101)) НОВЫЙМОДУЛЬ(*KMT_REL.KERMIT_MODULE(101)) ПОДАВИТЬ СОХРАНИТЬ (KERMIT_THE_FROG) СПИСОКМОДУЛЬ ВЫПОЛНЯТЬ++++ COMPILE_SCL (INP = *KMT_SRC.KERMIT(101), OUT = *KMT_REL.KERMIT(101), COD = УВЕДОМЛЕНИЕПРЕДУПРЕЖДЕНИЯ, ОПТ = ФИЛ) КОНЕЦ
Команды, проиллюстрированные в этом фрагменте, включают WHENEVER (объявляет политику обработки ошибок), ASSIGN_LIBRARY (привязывает локальное имя к каталогу файлов), DELETE_FILE (делает постоянный файл временным, а затем удаляет его в КОНЦЕ блока), S3_COMPILE (компилирует программу, написанную на S3: эта команда нарушает обычное соглашение о глаголе и существительном), NEW_MESSAGE_TEXT_MODULE (создает модуль, содержащий параметризованные сообщения об ошибках, подходящие для локализации) и COMPILE_SCL, который компилирует программу SCL в объектный код.
Команда COLLECT объединяет различные модули объектного кода в один модуль и управляется собственным локальным командным файлом, который встроен в SCL между разделителями "----" и "++++". Подкоманды INPUT и NEWMODULE определяют имена входных и выходных модулей; SUPPRESS и RETAIN определяют внешнюю видимость именованных процедур в собранном модуле; а LISTMODULE запрашивает отчет, описывающий выходной модуль.
Обратите внимание, что "." используется для разделения частей иерархического имени файла. Начальная звездочка обозначает локальное имя библиотеки, привязанное с помощью команды ASSIGN_LIBRARY. Число в скобках после имени файла — это номер поколения. Операционная система связывает номер поколения с каждым файлом, и запросы на файл получают последнее поколение, если не указано иное. Создание нового файла по умолчанию создаст следующее поколение и оставит предыдущее поколение нетронутым; однако эта программа намеренно выбирает создание поколения 101, чтобы идентифицировать публичный выпуск.
В результате активного участия компании ICL в предоставлении компьютерных услуг государственному сектору Великобритании, в частности, тем, у кого есть особые требования к безопасности, таким как OPCON CCIS , компания стала одним из первых участников рынка защищенных систем .
VME сформировала ядро деятельности ICL в области безопасных систем. Она имела то преимущество, что как последняя крупномасштабная операционная система, когда-либо разработанная и созданная с нуля, ее базовая архитектура охватывала многие примитивы, необходимые для разработки безопасной системы, в частности, аппаратно поддерживаемые регистры контроля доступа (ACR) для ограничения привилегий, которые мог получить любой процесс (включая пользователей).
Это привело к тому, что Центральное вычислительное и телекоммуникационное агентство правительства Великобритании ( CCTA ) в середине 1980-х годов профинансировало проект Spaceman для Центра оборонных технологий ICL (DTC) с целью разработки варианта VME с повышенной безопасностью. [17] ICL выпустила его как пару взаимодополняющих продуктов: коммерческий релиз назывался High Security Option (HSO), а релиз для государственного сектора, включающий технологии шифрования, предоставляемые правительством (GFE), назывался Government Security Option (GSO).
HSO и GSO были официально протестированы в соответствии со Схемой оценки безопасности CESG UK, одной из предшественниц ITSEC и Common Criteria , и, таким образом, стали первой официально сертифицированной основной операционной системой.
Первоначально ICL анонсировала размещенную Unix-систему для VME в 1985 году, с доступностью и поддержкой стратегических приложений, которые должны были появиться в течение восемнадцати месяцев. [18] Эта система, поддерживающая SVR1 , как сообщается, находилась на стадии «полевых испытаний» и должна была быть обновлена до SVR2 перед общим выпуском летом 1987 года. [19] Затем была объявлена ограниченная доступность для существующих клиентов VME, а другие были направлены на линейку Clan Unix-систем ICL для отделов. [20]
В октябре 1987 года ICL выпустила релиз SV221 VME с поддержкой запуска SVR2 в качестве гостевой ОС VME Unix. [21] Эта реализация, описанная как «непродаваемый» продукт, также известная как VNS, легла в основу дизайна VME/X, в значительной степени новой реализации, которая сама была выпущена в 1991 году и признана совместимой с XPG3, а в 1992 году — с XPG4 base 1. [8] : 489–490 В рекламных материалах OpenVME компании ICL отмечалось, что VME стала первой не-Unix операционной системой, получившей совместимость с XPG3, и первой операционной системой любого рода, получившей совместимость с XPG4 base. [22]
В 1995 году ICL добавила поддержку набора протоколов Интернета в форме своего UNIX Interworking Option для OpenVME, включающего реализации TCP/IP, UDP/IP и поддержку протоколов File Transfer Protocol , Telnet и Network File System (NFS). Функциональность NFS включала сервер, который позволял обслуживать части хранилища файлов OpenVME клиентам NFS, а функциональность Telnet позволяла пользователям в системе OpenVME получать доступ к хостам Unix, также поддерживая предоставление возможности входа в OpenVME для удаленных пользователей, использующих протокол. Наряду с интерфейсом программирования сокетов Беркли , уже широко используемым приложениями Unix, продукт также предлагал транспортный интерфейс X/Open для независимости протоколов и поддержки протоколов OSI, обычно используемых программным обеспечением VME. [23]
Линейка Series 39 представила Nodal Architecture, новую реализацию распределенной общей памяти , которую можно рассматривать как гибрид многопроцессорной системы и кластерной конструкции. Каждая машина состоит из нескольких узлов , и каждый узел содержит свой собственный процессор кода заказа (ЦП) и основную память. Виртуальные машины обычно располагаются (в любой момент времени) на одном узле, но имеют возможность работать на любом узле и перемещаться с одного узла на другой. Диски и другие периферийные устройства являются общими между узлами. Узлы соединены с помощью высокоскоростной оптической шины, которая используется для предоставления приложениям виртуальной общей памяти. Сегменты памяти, помеченные как общие (публичные или глобальные сегменты), реплицируются на каждый узел, а обновления транслируются по межузловой сети. Процессы, которые используют неразделяемые сегменты памяти (узловые или локальные), работают в полной изоляции от других узлов и процессов.
VME изначально была написана почти полностью на S3 , специально разработанном языке системного программирования на основе Algol 68R (однако VME/K была написана в основном на языке ассемблера SFL). Хотя используется язык высокого уровня , операционная система не спроектирована так, чтобы быть независимой от базовой аппаратной архитектуры: напротив, программная и аппаратная архитектура тесно интегрированы.
С начала 1990-х годов некоторые совершенно новые подсистемы VME были написаны частично или полностью на языке программирования C.
С самых первых дней VME разрабатывалась с помощью системы репозитория программного обеспечения , известной как CADES , изначально разработанной и управляемой Дэвидом Пирсоном (ученым-компьютерщиком) и созданной для этой цели с использованием базовой базы данных IDMS . CADES — это не просто система контроля версий для модулей кода: она управляет всеми аспектами жизненного цикла программного обеспечения от сбора требований, методологии проектирования и спецификации до полевого обслуживания. CADES использовалась при разработке модулей VME для хранения отдельных определений структур данных (режимов), констант (литералов), процедурных интерфейсов и основных алгоритмов. Могли существовать несколько версий («жизней») каждого из этих компонентов. Алгоритмы были написаны на языке разработки систем (SDL), который затем препроцессор преобразовал в исходный код S3 [24] . Можно было сгенерировать несколько версий одних и тех же модулей.
Инструменты разработки приложений, предлагаемые VME, делятся на две категории:
Набор инструментов на VME необычайно однороден, большинство клиентов используют один и тот же базовый набор языков и инструментов. В результате инструменты также очень хорошо интегрированы. Сторонние инструменты произвели относительно небольшое впечатление.
В течение многих лет подавляющее большинство пользователей VME писали приложения на COBOL , обычно используя базу данных IDMS и монитор обработки транзакций TPMS . Другие языки программирования включали Fortran , Pascal , ALGOL 68RS , Coral 66 и RPG2 , но они обслуживали интересы меньшинства. Позже, в середине 1980-х годов, стали доступны компиляторы для C, как внутри, так и вне подсистемы Unix, в основном для обеспечения возможности переноса программного обеспечения, такого как системы реляционных баз данных . Интересно, что компилятор подмножества PL/I был написан EEC для помощи в переносе программ с IBM на оборудование ICL.
Компиляторы, разработанные в ICL, имеют общую архитектуру и в некоторых случаях общие компоненты, такие как генераторы кода. Многие из компиляторов использовали модуль ALICE [Assembly Language Internal Common Environment] и создали раннюю форму предварительно скомпилированного кода (P-Code), названную ROSE, что сделало библиотеки скомпилированного формата объектного модуля (OMF) загружаемыми на любой машине в этом диапазоне. .
Основным языком, используемым для разработки как самой операционной системы VME, так и другого системного программного обеспечения, такого как компиляторы и мониторы обработки транзакций, является S3 . Это язык высокого уровня, во многом основанный на Algol 68 , но с типами данных и низкоуровневыми функциями и операторами, тесно связанными с архитектурой серии 2900.
Также доступен язык ассемблера SFL ( S ystem Function Language ). Он использовался для разработки VME/K, разработчики которой не были уверены, что язык высокого уровня может обеспечить адекватную производительность, а также для системы баз данных IDMS из-за ее происхождения как стороннего продукта. Первоначально SFL назывался Macro Assembler Programming Language ( MAPLE ), но поскольку архитектура 2900 позиционировалась как состоящая из машин с языком высокого уровня, название было изменено по просьбе ICL Marketing. Он был разработан как часть инструментария для System D, который впоследствии был отменен. Сопутствующие семейства ассемблеров для других архитектур (CALM-xx, работающий под VME, PALM-xx, разработанный на Pascal и работающий на различных хостах) были разработаны для внутреннего использования.
Ни S3, ни SFL никогда не продвигались как коммерческие инструменты разработки для приложений конечного пользователя, поскольку ни один из них обычно не поставлялся как стандартная часть операционной системы, и они не продавались явно как продукты сами по себе. Однако и SFL, и S3 были доступны в качестве опций для организаций пользователей и третьих лиц, у которых была особая потребность в них.
Среда разработки приложений QuickBuild на VME оказалась весьма успешной, несмотря на то, что приложения в значительной степени заперты в среде VME. Эта среда основана на Data Dictionary System (DDS, также называемой OpenDDS), ранней и очень успешной попытке построить всеобъемлющий репозиторий, поддерживающий все остальные инструменты, с полной поддержкой жизненного цикла разработки. Помимо схем баз данных и описаний файлов и записей, словарь отслеживает такие объекты, как отчеты и запросы, дизайны экранов и код 4GL; он также поддерживает различные модели на уровне захвата требований, такие как модели сущностей-связей и модели процессов.
QuickBuild 4GL поставляется в двух формах:
Оба являются декларативными языками высокого уровня, использующими структурное программирование Джексона в качестве парадигмы проектирования. ApplicationMaster необычен в своем подходе к проектированию приложений, поскольку он фокусируется на сеансе пользователя, как если бы он выполнялся в едином диалоговом процессе, полностью скрывая сложность поддержания состояния при взаимодействии пользователя. Поскольку 4GL и другие инструменты, такие как конструктор экранов, работают только со словарем DDS, который также содержит схемы базы данных, существует значительное повторное использование метаданных, что редко достигается с другими 4GL.
По многочисленным и разнообразным причинам, оценка которых находится за пределами знаний или компетенции автора, VME/K стал не успехом, а травмой. VME/K был окончательно прекращен в 1981 г. недавно назначенным управляющим директором Роббом Уилмотом.
{{cite news}}
: CS1 maint: bot: original URL status unknown (link){{cite book}}
: CS1 maint: bot: original URL status unknown (link)