Сегодня мы работаем с большими объёмами кода, написанного сотнями людей. Никто не может полностью понять систему.
О программе уже невозможно думать как о тщательно спроектированном инженерном изделии. Это скорее большой организм, который каким-то образом развивается, имеет кучу рудиментов, дублирующихся частей, которые живут своей жизнью. От этого не уйти, надо работать с тем что есть.
В биологии часто используется окрашивание для исследования клеток. А ещё в медицине для диагностики намерено закачивают в тело жидкостями со безопасным уровнем радиоктивности, и изучают снимки где все участки испускающие радиоктивные частицы хорошо видны.
Понял что очень пригодилась бы следующая фича для исследования компьютерных системы.
Когда мы делаем какой-то ввод в систему, мы помечаем эти входные данные специальным тегом. Далее, все данные вычисленные с использованием этих меченых входных данных также сохраняют метку, распространяя её дальше.
Таким образом, мы дали что-то на вход, система как-то обработала и выплюнула вывод. Далее, гуляя по состоянию памяти и изучая вывод мы можей найти все данные которые были задеты нашим вводом. Увидеть всё помеченное. Прямо как снимки радиоктивной жидкости.
Эту фичу совершенно точно можно реализовать на уровне языка программирования. Может быть даже на уровне ОС, хоть это будет уже сложнее.
Именно так мы должны исследовать компьютерные системы, как организмы!