Универсальный системный язык - Universal Systems Language

Универсальный системный язык (USL) является системой язык моделирования и формальный метод для спецификации и проектирования программного обеспечения и других сложных систем. Он был разработан Маргарет Гамильтон на основе ее опыта написания программного обеспечения для полетов Программа Аполлон.[1] Язык реализован с помощью программного обеспечения 001 Tool Suite от Hamilton Technologies, Inc.[2] USL произошел от 001AXES, который, в свою очередь, произошел от AXES, все из которых основаны на аксиомах контроля Гамильтона. Пакет 001 Tool Suite использует превентивную концепцию «Разработка до фактов» (DBTF) для процесса разработки на протяжении всего жизненного цикла. DBTF устраняет ошибки как можно раньше в процессе разработки, устраняя необходимость искать ошибки постфактум.

Философия

USL был вдохновлен распознаванием Гамильтоном шаблонов или категорий ошибок, возникающих при разработке программного обеспечения Apollo. Ошибки на интерфейсах между границами подсистем составляли большинство ошибок и часто были самыми незаметными и трудными для поиска. Каждая ошибка интерфейса была помещена в категорию с указанием средств ее предотвращения посредством определения системы. Этот процесс привел к набору шести аксиом, составляющих основу математической конструктивной логической теории управления для проектирования систем, которые устраняли бы целые классы ошибок просто по способу определения системы.[3][4]

В грамматику USL заложены определенные гарантии правильности. В отличие от реактивных подходов к верификации программ, тестированию на ошибки на поздних этапах жизненного цикла, философия USL «разработка до факта» является превентивной, не допускающей ошибок вообще. Определение USL моделирует как его приложение (например, авионику или банковскую систему), так и свойства управления в своем собственном жизненном цикле.[5] Предоставляя математическую основу, в рамках которой могут быть зафиксированы объекты, их взаимодействия и их отношения, USL - метаязык - имеет «метамеханизмы» для определения систем. Философия USL заключается в том, что все объекты рекурсивно повторно используются и надежны; надежные системы определяются как надежные системы; в качестве строительных блоков используются только надежные системы; и только надежные системы используются в качестве механизмов для интеграции этих строительных блоков в новую систему. Затем разработчики могут использовать новую систему вместе с более примитивными системами для определения (и построения) более всеобъемлющих надежных систем. Если система надежна, все объекты на всех ее уровнях и слоях надежны.

USL рассматривается некоторыми пользователями как более удобный чем в других формальных системах.[6] Это не только формализм для программного обеспечения, но также определяет онтологии для общих элементов проблемных областей, таких как физическое пространство и время событий.

Формализм теории управления

А системная философия формализм для представления логики управления системами, USL основан на наборе аксиом общей теории управления системами с формальными правилами ее применения. В основе каждой системы USL лежит набор из шести аксиом и предположение об универсальном наборе объектов.[7][8] Аксиомы обеспечивают формальную основу для «иерархии» USL, называемой картой, которая представляет собой дерево управления, охватывающее сети отношений между объектами. Явные правила для определения карты были выведены из аксиом, где, помимо прочего, фиксируются структура, поведение и их интеграция. Каждая аксиома определяет отношение непосредственного доминирования родителя над своими детьми. Союз этих отношений и есть контроль. Среди прочего, аксиомы устанавливают отношения объекта для вызова во времени и пространстве, ввода и вывода (домен и кодомен), прав доступа на ввод и прав доступа на вывод (права доступа к домену и права доступа к домену), обнаружения ошибок и восстановления, и заказ на стадии разработки и эксплуатации. Каждая система в конечном итоге может быть определена в терминах трех примитивных структур управления, каждая из которых является производной от шести аксиом, что приводит к универсальной семантике для определения систем.

Все представления системы определены в терминах карты функций (FMap) и карты типов (TMap). С помощью USL все функции в системе и их отношения определяются с помощью набора FMaps. Точно так же все типы в системе и их отношения определяются набором TMaps. FMaps представляют динамический (действующий) мир действий, фиксируя функциональные и временные (включая приоритет) характеристики. TMaps представляют статический (существующий) мир объектов, фиксируя пространственные характеристики - например, удерживание одного объекта другим или отношения между местоположениями объектов в пространстве. FMaps изначально интегрированы с TMaps. Каждую карту определяют три универсальные примитивные структуры, производные от набора аксиом, и непримитивные структуры, полученные в конечном итоге в терминах примитивных структур. Примитивные структуры универсальны в том смысле, что их можно использовать для получения новых абстрактных универсальных структур, функций или типов. Процесс создания новых объектов (т.е. структур, типов и функций) эквивалентен процессу создания новых типов в конструктивной теории типов. Примитивные функции, соответствующие примитивным операциям с типами, определенными в TMap, находятся в нижних узлах FMap. Примитивные типы, каждый из которых определяется своим собственным набором аксиом, находятся в нижних узлах TMap. Каждая примитивная функция (или тип) может быть реализована как верхний узел карты на нижнем (более конкретном) слое системы. В каждом узле карты находится объект одного и того же типа (например, функция в каждом узле FMap и тип в TMap). Объект в каждом узле играет несколько ролей; например, объект может выступать в качестве родительского (контролирующего своих дочерних элементов) или дочернего элемента (контролируемого своим родителем). В то время как каждая функция на FMap имеет отображение от входа до выхода (от домена к домену) каждый тип на TMap имеет связь между его доменом и codomain. Структура связывает каждого родителя и его потомков в соответствии с набором правил, вытекающих из аксиом контроля. Примитивная структура обеспечивает отношения самой примитивной формы (тончайшее зерно) управления. Все карты в конечном итоге определены в терминах примитивных структур и, следовательно, подчиняются правилам, связанным с каждой структурой: родитель управляет своими дочерними элементами, чтобы иметь зависимые (Присоединиться), независимые (Включить) или отношения принятия решений (Или).

Фигура. 1 Три примитивных управляющих структуры и их правила образуют универсальную основу для построения карт в областях времени и пространства как FMaps и TMaps.

Любая система может быть полностью определена с использованием только примитивных структур, но менее примитивные структуры, определяемые примитивными структурами и производные от них - и, следовательно, управляемые аксиомами управления - ускоряют определение и понимание системы. Определенная структура, форма повторного использования, подобная шаблону, предоставляет механизм для определения карты без явного определения некоторых из ее элементов. В структуре FMap есть заполнители для функций переменных; структура TMap имеет заполнители для типов переменных; универсальная структура имеет заполнители для функций или типов. Async - это пример распределенной коммуникативной структуры FMap в реальном времени с асинхронным и синхронным поведением. Примером структуры TMap является TreeOf, коллекция однотипных объектов, упорядоченных с использованием системы индексации дерева. Каждая структура TMap предполагает собственный набор возможных отношений для родительского и дочернего типов. Абстрактные типы, декомпозированные с помощью одной и той же структуры TMap, наследуют одни и те же примитивные операции и, следовательно, одно и то же поведение (каждое из которых доступно FMaps, имеющим доступ к членам каждого из его типов TMap).

Выполнение

Процесс разработки программной системы с USL вместе с его автоматизацией, 001 Tool Suite (001), заключается в следующем: определить систему с помощью USL, автоматически проанализировать определение с помощью анализатора 001, чтобы убедиться, что USL использовался правильно, автоматически сгенерировать много дизайна и всего кода реализации с генератором 001.[9][10][11][12] USL можно использовать для формальной поддержки других языков.[13]

Смотрите также

Рекомендации

  1. ^ М. Гамильтон и У. Р. Хаклер "Универсальный системный язык: уроки, извлеченные из опыта Аполлона ", IEEE Computer, декабрь 2008 г.
  2. ^ 001 Набор инструментов (1986-2020)
  3. ^ Маргарет Х. Гамильтон, Hamilton Technologies (27 сентября 2012 г.). ""Универсальный системный язык и его автоматизация, набор инструментов 001, для проектирования и создания систем и программного обеспечения "Серия вебинаров Lockheed Martin / IEEE Computer Society".
  4. ^ Гамильтон, Маргарет Х. (2018). «Что говорят нам ошибки». Программное обеспечение IEEE. 35 (5): 32–37. Дои:10.1109 / MS.2018.290110447. ISSN  0740-7459. S2CID  52896962.
  5. ^ Долха, Стив, Чисте, Дэйв, «Система удаленных запросов для Интернета: управление разработкой распределенных систем», глава 32, Управление Интернетом, редактор Джессика Киз, Ауэрбах, 2000.
  6. ^ Крут-младший, Б. "Интеграция поддержки 001 Tool в методологию анализа предметно-ориентированной области "(CMU / SEI-93-TR-11, ESC-TR-93-188), Питтсбург, SEI, Университет Карнеги-Меллона, 1993.
  7. ^ Гамильтон, М., "Внутреннее развитие до фактов ", обложка, Специальное редакционное приложение, 8ЭС-24ЭС. Электронный дизайн, апрель 1994 г.
  8. ^ Гамильтон, М., "001: ПОЛНЫЙ ЦИКЛ ПРОЕКТИРОВАНИЯ СИСТЕМ И РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ Разработка среды до фактов в действии ", обложка, Специальное редакционное приложение, 8ЭС-24ЭС. Электронный дизайн, апрель 1994 г.
  9. ^ Оуян М., Голей М.В. 1995, Комплексный формальный подход к разработке высококачественного программного обеспечения для систем, критичных к безопасности, Массачусетский технологический институт, Кембридж, Массачусетс, отчет № MIT-ANP-TR-035.
  10. ^ Консорциум производительности программного обеспечения, (SPC) (1998), Обзор объектно-ориентированных методов и инструментов, Herndon, VA.SPC-98022-MC, версия 02.00.02, декабрь 1998 г.
  11. ^ Макс Шиндлер (1990) Компьютерный дизайн программного обеспечения, Джон Уайли и сыновья, 1990.
  12. ^ * Министерство обороны (1992). Эксперимент с инструментами программной инженерии - Заключительный отчет, Vol. 1, Сводка эксперимента, Таблица 1, стр. 9. Стратегическая оборонная инициатива, Вашингтон, округ Колумбия.
  13. ^ Гамильтон, М. Хаклер, W.R. "Формальная универсальная системная семантика для SysML, 17-й ежегодный международный симпозиум, INCOSE 2007, Сан-Диего, Калифорния, июнь 2007 г.

дальнейшее чтение

внешняя ссылка