Umwelt
by Oleg Sovetnik
Умвельт — это концепция, которая помогает преодолеть семантический разрыв между программистами и аналитиками. Она позволяет создать целостную модель системы, объединяющую концепты и факты в рамках майндмапа. Этот подход даёт возможность видеть систему целиком, а не через её отдельные проекции, такие как код, тесты или документация.
С помощью умвельта можно строить структуру, которая отражает не только семантику — как элементы связаны друг с другом и что они представляют — но и синтаксис, задающий правила интерпретации этих концептов в коде. В этом заключается мощь умвельта: он позволяет автоматизировать процесс создания спецификаций и тестов на основе модели системы, создавая целостного “слона”, который мы можем изучать с разных сторон.
Мы рассмотрели понятие умвельта, его роль, как недостающего компонента для устранения семантического разрыва. Установили его связь с эпистемологией, как познавательного процесса и обогатили теориями и методами социологии.
Эффективная разработка требует понимания не только технологий, но и процессов формирования и передачи знания в команде. Для решения Вавилонской проблемы и создания артефакта доступного программистам и аналитикам, мы определили форму умвельта, как майндмап.
Перейдем к проблеме невидимого слона. В этой метафоре умвельт - слон, который описан кодом, тестами, документацией и историей задач, как проекциями. Тут наша задача состоит в том, чтобы обратить направление распространения информации: вместо того, чтобы создавать проекции и угадывать слона по ним, мы создадим его и получим все его проекции, осматривая его с разных точек зрения.
Выход из Платоновой пещеры
В темной пещере сидят прикованные люди, которые видят лишь тени предметов, отбрасываемые на стену огнем позади них. Для них тени - это и есть реальность. Если бы один из узников освободился и вышел наружу, не забыв взять очки, он бы увидел настоящие вещи, освещенные солнцем. Выход из пещеры и созерцание вещей под светом солнца - это восхождение души к миру идей, постижение истинной реальности с помощью разума и концептуальных очков.
Для того, чтобы мы могли установить связь с кодом, и генерировать тесты, определим, какие элементы чем должны стать в коде. Итак, у нас есть сематическая и синтаксическая (структурная) части. Семантическая часть, буквально - дерево концептов, так же как и дерево модулей может иметь вложенность и является стволом и ветками этого дерева, а структурная часть - листья. Структура листьев строго определена, и там уже не может быть вложенности подобных элементов, как это возможно у концептов.
Инструменты
Для реализации всего вышеописанного и создан этот сервис, вы можете создать умвельт вашего проекта, двигаясь от общего к частному, в формате mindmap. Под каждым элементом можно сразу увидеть, как он будет отражен в коде и спецификации. А когда умвельт будет готов, вы можете добавить зависимость {:umwelt, "~> 0.2"}
в mix.exs
и скачать структуру кода (без реализации функций) и тесты, которые вы сразу сможете запустить.
umwelt элемент структура
Dive deeper
-
Дерево и листья
Майндмап отражает дерево концептов, но нам нужно соединить концепты и факты. Добавим в майндмап стероиды, чтобы он мог отразить умвельт вместе с фактами, которыми оперируют эти концепты.
-
Перевод в Эликсир
Майндмап отражает дерево концептов, но нам нужно соединить концепты и факты. Добавим в майндмап стероиды, чтобы он мог отразить умвельт вместе с фактами, которыми оперируют эти концепты. Описание элементов концепции Umwelt для перевода на язык Elixir, включая концепты, атрибуты, структуры, функции и утверждения.
-
Инструменты разработчика
Анализ связей между концепцией Umwelt и программированием через категории и действия.