Umwelt

by Oleg Sovetnik

Umwelt is a concept that helps bridge the semantic gap between developers and analysts. It allows for the creation of a holistic system model that unites concepts and facts within a mindmap. This approach provides the ability to view the entire system, rather than just its isolated projections, such as code, tests, or documentation.

Using Umwelt, one can build a structure that reflects not only semantics—how elements are connected and what they represent—but also syntax, which sets the rules for interpreting these concepts in code. This is the power of Umwelt: it enables the automation of creating specifications and tests based on the system model, generating a holistic “elephant” that can be studied from different perspectives.

We have examined the concept of Umwelt, its role as a missing component for overcoming the semantic gap. We established its connection with epistemology as a cognitive process, enriching it with sociological theories and methods.

Effective development requires an understanding not only of technologies but also of knowledge formation and transmission processes within the team. To solve the Babylon problem and create an artifact accessible to both developers and analysts, we defined the form of Umwelt as a mindmap.

Let’s move on to the problem of the invisible elephant. In this metaphor, Umwelt is the elephant, described by code, tests, documentation, and task history as projections. Our task here is to reverse the direction of information flow: instead of creating projections and guessing the elephant from them, we will create the elephant and derive all its projections, viewing it from various perspectives.

Exit from Plato’s Cave

In a dark cave, there are people chained, who can only see the shadows of objects cast on the wall by a fire behind them. To them, the shadows are reality. If one of the prisoners were to be freed and went outside (not forgetting to wear glasses), they would see real things illuminated by the sun. The exit from the cave and the contemplation of things in the sunlight is the ascent of the soul to the world of ideas, the understanding of true reality through reason and conceptual glasses.

To establish a connection with the code and generate tests, let’s define what elements should become in the code. So, we have a semantic and syntactic (structural) part. The semantic part, literally a tree of concepts, just like a tree of modules, can have nesting and represents the trunk and branches of this tree, while the structural part—its leaves. The structure of the leaves is strictly defined, and no further nesting of such elements is allowed, unlike with concepts.

Tools

This service was created to implement everything described above. You can create the Umwelt of your project, moving from general to specific in the mindmap format. Under each element, you can immediately see how it will be reflected in the code and specifications. Once the Umwelt is ready, you can add the dependency {:umwelt, "~> 0.2"} to mix.exs and download the code structure (without function implementations) and tests, which you can run immediately.

umwelt element structure tools


Dive deeper


  • The Tree and the Leaves

    A mindmap reflects a tree of concepts, but we need to connect concepts with facts. Let’s enhance the mindmap with extra power so it can represent the umwelt along with the facts that these concepts operate with.

    umwelt mindmap structure



  • Translation into Elixir

    A mindmap reflects a tree of concepts, but we need to connect concepts with facts. Let’s enhance the mindmap to represent the umwelt along with the facts operated by these concepts. Description of the Umwelt concept elements for translation into Elixir, including concepts, attributes, structures, functions, and assertions.

    umwelt elements concepts fact programming



  • Developer Tools

    An analysis of the connections between the concept of Umwelt and programming through categories and actions.

    umwelt programming tools


Buzzwords
strong-weak-ties programming social-group-dynamics mindmap platform-networks structural-functionalism rationalism structuration-theory cognitive-capital mediatisation-theory operationalization enterprise Babylon automation social-action marketplace AI actor-network ideas scrum discord cognition communication social-capital financial production semantic-gap aspect-oriented umwelt empiricism positivism gap actor-network-theory research complexity information imperative verification problem psychologism game-dev streaming systems-theory disciplinary-power multiple-worlds-theory teamwork theory systems elephant cloud knowledge-communication structure tools symbolic-interactionism babylon field-theory messengers element security network e-commerce mediation-market big-data fact information-society concept communities philosophy social-network elements development object service multimedia sociology paradigm distribution theories language lenses epistemology metaphor social-exchange functional deconstruction linguistics anthropology meaning apriorism institutionalization-theory analytics projects conceptualization concepts poststructuralism procedural knowledge hoare-triples domain semantics consumption-theory syntax capitalist-systems subject