TL;DR

by Oleg Sovetnik

В разработке программных систем одной из главных задач является управление сложностью. Особое внимание следует уделять domain complexity — основной бизнес-логике, которая определяет поведение системы. Часто в команде возникает проблема, когда разработчики перестают понимать друг друга из-за использования разных терминов и понятий. Это создаёт так называемую “вавилонскую проблему”.

Умвельт как артефакт

Umwelt (понятие позаимствовано из биосемиотики) решает эту проблему, предлагая артефакт, построенный на общем языке, который объединяет всех участников проекта вокруг единого понимания предметной области. Увельт помогает проектной команде согласованно понимать и развивать систему.

Форма умвельта: майндмап

Умвельт представляет собой майндмап, где акцент сделан на удобстве чтения и восприятия. Это помогает всей команде легко ориентироваться в структуре проекта, что более важно, чем простота внесения изменений.

Умвельт как “априорные очки” команды

Эпистемологическая роль умвельта заключается в том, чтобы стать “априорными очками” для команды. Как говорил Кант, мы всегда смотрим на мир через определенные фильтры. В случае с умвельтом — это фильтр, через который команда видит и интерпретирует проект. Социология и философия помогают объяснить, как коллективное знание формирует общее понимание предметной области.

Новый подход к разработке

Umwelt.dev предлагает новый подход к разработке, основанный на социологических теориях. Между процессами познания в социологии и определения предметной области в программировании, как оказалось, много общего. В обеих дисциплинах можно выделить четыре основных этапа: выбор фундаментальной теории (или программной парадигмы), концептуализация (определение сущностей), операционализация (определение свойств) и проверка фактов (тестирование в программировании или эмпирическое наблюдение в социологии). Это похоже на создание концептуальной схемы для программы.

Социологические теории в умвельте

Социологические теории дают нам очки, которые позволяют выявить аспекты взаимодействий, выходящие за рамки технических характеристик системы. Акторно-сетевая теория и теории фреймов, систем, действия, институционализации, структурирования и многие другие дают нам фундамент для Умвельта и новые способы интерпретации мира.

Спецификации из фактов

Как для социологии основным концептом является действие, а основным результатом - факты, так для программирования - функция и ее результат.

Так как для реализации умвельта я выбрал Elixir, то и тесты будут в формате ExUnit, стандартном фреймворке для тестов в экосистеме Elixir.

Процесс перевода концептов в код на Elixir уже интегрирован в umwelt.dev, что делает его практически магическим. С помощью Umwelt можно автоматически генерировать код и тесты на основе концептуальной модели.

Инструменты разработчика

Библиотека umwelt, доступная через Hex и GitHub, позволяет интегрировать умвельт в проект через добавление зависимости {:umwelt, "~> 0.2"} в mix.exs вашего проекта на Elixir или Phoenix. С помощью команд Clone, Dump, а также будущих Pull и Push можно синхронизировать код, спецификации и концептуальные модели.

умвельт концепт познание инструменты


Buzzwords
объектная коммуникация акторно-сетевая mindmap финансовый концептуализация домен лингвистика когнитивного-капитала очки проблема социальная-сеть стримы мультимедиа инструменты познание структура вавилон scrum социальное-действие discord позитивизм безопасность майндмап операционализация множественных-миров концепты язык теория umwelt теории деконструкция процедурная психологизм функциональная эпистемология философия тройки-хоара теория-институционализации teamwork разработка теория-потребления факт разрыв концепт медиации-рынка постструктурализм императивная аналитика объект коммуникации-знаний антропология исследование эмпиризм корпоративный семантика e-commerce мессенджеры сетевых-сообществ big-data сервис предмет верификация производство аспектная теория-поля элементы слон смысл геймдев сильных-слабых-связей программирование социального-капитала метафора динамики-социальных-групп проекты умвельт социального-обмена дистрибуция структурный-функционализм сетей-платформ информационный социология маркетплейс априоризм капиталистических-систем синтаксис идеи дисциплинарной-власти теория-структурирования парадигма знание теория-систем автоматизация теория-медиатизации элемент облачный рационализм символического-взаимодействия сложность информационного-общества