Вчера в Школе на встрече сообщества обсуждали архитектурную практику, и я вспомнил старинный слайд команды Яна Диеца с представлением архитектурного фреймворка xAF (2006, у меня на компьютере он хранится с 2008 и я раньше часто его показывал).
Вон она, "использующая система" (без использования никак нельзя) и даже "целевая система" с прямым указанием object. Описание, которое должно быть онтологично/предметно, указание на реверс-инженерию для надсистемы и прямой инженерии для целевой системы, функциональный анализ и последующий модульный синтез как основное в архитектуре. Учитывая то, что массовый разговор об архитектуре начался где-то с IEEE 1471 в 1995 году, а системная терминология была только-только устаканена в ISO 15288:2003. И это было всё очень круто и ново в 2006, Ян Диец работал на фронтире. Сейчас пыль тех методологических рассуждений об архитектуре уже осела, и это всё общее место. Я давно не использую эту диаграмму в своих слайдах, в учебнике обо всём этом пишу другими словами, но десяток лет назад разглядывание этой картинки мне сильно помогло в понимании архитектурной работы. Так что пусть повисит тут памятником эпохе.
Заодно опять коснулись онтологики в мышлении инженера: шестерёнки часов ещё не показывают время, часы показывают время, дом с часами на стене уже не показывает время -- это про эмерджентность, она определяется на отношении часть-целое, системное мышление это прежде всего про отношения часть-целое. Для уместного разговора нужно говорить на адекватном системном уровне. Но этот разговор всё одно нужно как-то поверять формализмами. Всё системное мышление по факту оказывается про то, что на разных системных уровнях нужно применять разные формализмы для описаний мира. Но! Сами системные уровни -- это мереологический формализм, формализм частей-целого, отношение композиции, а не, например, классификации. У коровы Маргариты есть хвост, корова Маргарита есть часть стада. Часть стада, а не входит в стадо как во множество! И после этого можно говорить, что у стада есть хвост -- тот самый хвост коровы Маргариты. Все молекулы хвоста входят в число молекул стада. Это абсолютно корректно, это позволяет поддерживать управление вниманием на хвосте, корове, стаде -- внимание определяется тут отношением composition/is_part_of. Но в разговоре на раз-два отношение composition заменяется отношением классификации/is_a, принадлежности к стаду как множеству коров. Множество -- это не материальный объект, и принадлежность ко множеству это не отношение часть-целое. Коровы в стаде физическом взаимодействуют и дают эмерджентность (можно, например, говорить о минимальной площади, занимаемой стадом), в стаде как множестве -- не взаимодействуют и не дают эмерджентности. Различиям этим в типах объектов и типах отношений учит онтологика, без этого инженерные рассуждения становятся очень зыбкими, в них могут легко попадать ошибки -- источником ошибок являются естественность языка, который более чем терпим к ошибкам. Формализация позволяет избавляться от ошибок, но должна быть некоторая беглость в этой мыслительной работе с проверкой типов объектов и отношений, чтобы она смогла стать полезной. А пока лихо путаются отношения классификации, специализации, композиции -- системное мышление невозможно.
Я писал об этом в учебнике 2019 года, вот цитата: ""Корова Маргарита имеет своей частью хвост, корова Маргарита является частью коровьего стада. Нехорошо позволять говорить, что коровье стадо имеет хвост, хотя это вроде как корректно. Это корректно, но не системно, и это вроде как интуитивно понятно всем. Но интуитивно непонятно, можно ли говорить, что карбюратор - часть автомобиля. Он отдельная часть автомобиля, или он часть топливной подсистемы, или часть двигателя?! Но интуитивно понятно: неправильно говорить, что поршень или цилиндр двигателя - это часть автомобиля. Формально это верно, но неправильно". Вот это "формально верно" и "системно неправильно" люди не могут обосновать. Разница в том, что они прыгают от отношений is_part_of к отношениям is_a. Когда говорят о стаде как горе мяса и костей и стаде как математическом множестве - не могут различить.
Ещё интересно, как программисты и лингвисты трудно обсуждают системную инженерию. И проблема тут тоже в онтологике. Информатики работают с текстами ("всё есть текст") и их перекодированием/компиляцией/трансляцией в разные представления. Инженерию тексты интересуют прежде всего как описания каких-то систем. Есть модель мира (у инженеров -- системы), есть мир, есть люди-деятели/агенты. Онтологика и научное мышление говорят, как соотносятся модели, мир и агенты. Ибо модели могут помогать предсказывать мир, а могут и не помогать (например, безбожно или божественно врать, а не врать чуть-чуть, ибо совсем не врать модели по определению не могут). Вот инженерия она про мир, а не только про модели мира. А лингвисты и программисты (особенно те, кто любят математику) они обсуждают главным образом только модели, без "заземления" (grounding) их на реальный мир. И разговора поэтому часто не получается -- тоже по онтологическим, а не по инженерным причинам.
Но как поднять онтологическое образование у человека, который даже не знает, что ему нужно подтянуться в этом отношении -- мне пока неведомо. Курсы по онтологике у нас в Школе есть, после них становится сильно лучше, но походы на эти курсы отнюдь не массовы и объяснить, почему на эти курсы нужно идти, получается пока не очень. Но ничего, лиха беда начало. Мы вчера вспоминали, что лет десять назад о подобных курсах онтологики для инженеров и менеджеров можно было только мечтать. А сейчас курсы уже есть, хотя ещё и не полный набор (три курса из запланированных пяти). Завтра у нас день открытых дверей (суббота, с 14 часов на ул.Щипок,
https://www.facebook.com/events/493244901513042/, вход свободный), будем стратегироваться в том числе на тему онтологики и инженерии.
Один из ходов тут -- использовать более современные техники обучения, чтобы добиваться учебного результата более эффективно. Тут у нас тоже есть некоторый прогресс: вчерашний семинар включал анонс нашего курса по эффективному самообразованию (его будет вести Кирилл Гайдамака), который основан не на попсовых книжках, а на оригинальных работах когнитивистов (видео:
https://www.youtube.com/watch?v=55k5Qsxk1ak). Вот завтра и пообсуждаем, как можно ускорить обучение работы с типами. Чтобы на всех диаграммах люди проверяли типы объектов-прямоугольничков, типы отношений-стрелочек и не забывали при этом хоть как-то помнить, что это не просто картинка, а в чём-то правдоподобное описание кусочка мира.