Модель систем vs ООП
Модель систем в представленном виде очень похожа на класс в ООП. Но эта запись представлена для того, чтобы проще и структурирование описывать системы. Я показал модель систем знакомому программисту, на что он ответил, что не видит ничего особенного. Это всего лишь класс из ООП. С одной стороны он был прав, потому что я при описании модели систем решил представить ее в таком виде, т.к. модель систем это прежде всего практический инструмент. И для понимания людьми, ИИ системами проще представить модель систем через знакомую абстракцию, которая уже дает понимание по структуре с минимальным описанием. С другой стороны, модель систем является структурой, которая шире и онтологически богаче чем класс в ООП. Давайте перейдем к сравнению модели систем и класса в ООП. Также посмотрим, смог ли ООП как универсальная модель для описания программ решить проблемы программирования и совершить системный скачек.
1. ПАРАДОКС: Модель систем vs ООП
1.1 Действительно ли ООП — это модель систем?
На первый взгляд, да. Класс в ООП имеет:
- Поля (аналог элементов System)
- Методы (аналог действий/связей)
- Инкапсуляцию (аналог границ системы)
- Наследование (аналог иерархии систем)
- Полиморфизм (аналог разных реализаций одной цели)
1.2 Но есть критическое различие
2. ПОЧЕМУ ООП НЕ СОВЕРШИЛ СИСТЕМНЫЙ СКАЧЕК
2.1 Стагнация: факты
2.2 Причины стагнации
ООП позволил сделать значительный шаг в структурировании сложных и масштабных структур. При этом он выступил как частный случай для организации сложных систем, облегчил командную работу. Я бы назвал ООП частным случаем Модели систем. Или даже не до конца сформулированной моделью систем, когда элементы ООП неявно описывают свои элементы. Это в свою очередь приводит к ошибочному пониманию кода, написанного с помощью ООП. Так класс в ООП можно описать с помощью следующих элементов:
- Вход - входящие данные
- Выход - результат работы класса, он же return
- Атрибуты - над чем выполняются действия
- Методы - действия, которые осуществляет класс в процессе выполнения программы Также все эти составляющие можно описать с помощью модели систем: Цель - это Выход класса в ООП. То ради чего создан класс.Потребности - это Вход класса в ООП. То что нужно классу для выполнения его функционального назначения.Элементы - это и Атрибуты и Методы класса в ООП. В модели систем любая сущность, входящая в систему является элементом.Связи - это и Атрибуты и Методы класса в ООП, но которые передаются между Атрибутами и Методами классов. Получается в модели систем и элементы и связи - это одно и тоже? Да, а еще и цель и потребности. Эти все сущности сами по себе также являются системами, а на языке ООП классами. Модель систем и все ее сущности (элементы, цели, потребности, связи) - это абстракции, которые направлены на описание систем на человеческом языке и в максимально понятном виде. Возможно первоначально вам будет не понятно и будет вызывать отторжение предложенная абстракция, что статичный элемент и динамическая составляющая в виде изменения статических элементов в модели систем являются элементами. Но при дальнейшем знакомстве в других статьях вы увидите универсальность и красоту данной абстракции. Как пример, иллюстрирующий красоту этой абстракции предложу проделать следующее:
- Помашите перед свои лицом рукой и понаблюдайте за рукой в течение 1 секунды.
- Скажите, что вы увидели?
- Ваш глаз увидел 24 кадра и передал в мозг 24 статичных изображения
- Ваш мозг склеил 24 статичных изображения в единый непрерывный поток
- А что-то еще вы увидели?
- За эту секунду произошло 24 изменения состояния вашей руки в пространстве. Конечно изменений произошло или больше или меньше в зависимости от шкалы изменений (в зависимости от того, в чем измерять: в наносекундах, в пикосекундах или в часах). Но между 24 кадрами, которые воспринял наш глаз произошло 24 изменения.
- Получилось что система-рука может быть описана и проанализирована как 24 состояния или 24 изменения состояний с помощью модели систем.
Эта абстракция дает Модели систем быть универсальной и описывать все системы, как статичные, так и динамические.
А чем же отличается цель от потребности? Отличие данных систем в том, что одна система стоит на входе в систему, а другая на выходе. И это тоже абстракции, которые нужны для упрощения описания и понимания Модели систем. Цель в модели систем - это абстракция, которая описывает результат деятельности системы. Потребность в модели систем - это абстракция, которая описывает ресурсы, которые необходимы системе для достижения цели системы. Связь в модели систем - это абстракция, которая передается от одного элемента системы к другому. Давайте разберем следующий пример: Пачка бумаги - описываемая система Пачка бумаги как цель - результат работы станка, который нарезает непрерывную ленту из бумаги на 500 листов и один упаковочный лист, сворачивает это все и выдает готовую пачку бумаги. Пачка бумаги как потребность - если продолжить пример с заводом по производству бумаги, то пачка бумаги будет потребностью для станка, который упаковывает пачки бумаги в коробку. Это зависит от того, что мы хотим описать. Пачка бумаги как связь - это сама пачка бумаги, которая передается из станка, сформировавшего пачку бумаги в станок, который ее упаковывает в коробку. Пачка бумаги как система, состоящая из элементов - в пачке бумаги можно назвать два элемента. Это упаковка и стопка из 500 листов. Можете конечно определить пачку бумаги как систему состоящую из 501 элемента, упаковки и 500 листов. Это зависит от потребности описания и анализа такой системы как пачка листов.
Ну думаю хватит описывать модель систем, в статье про сравнение модели систем и ООП. С моделью систем вы можете познакомиться в отдельной статье (https://vc.ru/dev/2663862-universalnaya-model-sistem).
Давайте продолжим и посмотрим, почему такая мощная абстракция как ООН и построенные на ее основе программы пока не позволили сделать кратный скачек в развитии созданных систем на примере ИИ-агентов.
3. ПОЧЕМУ ИИ-АГЕНТЫ НЕ СОВЕРШАЮТ СКАЧОК?
3.1 Текущие ограничения ИИ
Исследования Qodo (2026) и Devexperts (2025) показывают :
3.2 Парадокс "умного кода, глупой системы"
ИИ-агенты являются значительным прорывом применения ООП и построения сложных систем. Но мы наблюдаем, что они ограничены заложенной в них ограниченностью применяемой структуры. Модель систем потенциально может разрешить данные проблемы, связать в единую систему вроде бы не совместимые или противоположные системы. Как мы рассмотрели выше модель систем легко связываем статические и динамические объекты.
4. ЧТО МОЖЕТ ДАТЬ МОДЕЛЬ СИСТЕМ?
4.1 Новый уровень абстракции
4.2 Что меняется с моделью систем
Аспект|----------|Сейчас|----------|С моделью систем
Цели|----------|В головах, в Jira|----------|В коде, проверяемые
Потребности|----------|В зависимостях (явно), в контексте (неявно)|----------|Явно, с метриками
Связи|----------|API-контракты|----------|Полная семантика взаимодействия
Эволюция|----------|Хаотичный рефакторинг|----------|Плановое развитие по модели
ИИ-агенты|----------|Пишут код без контекста|----------|Понимают цели и потребности
4.3 Пример: исполняемые цели
Модель систем не просто описывает системы. Она дает понимание, зачем эти системы существуют, что необходимо системам для их существования и достижения этого "зачем". Модель систем показывает из чего состоит система, как связаны части этой системы, она показывает весь лабиринт взаимодействий между элементами системы. А если вам недостаточно уровня абстракции элементов, то декомпозируйте все или отдельные элементы на системы, которые также будут состоять из элементов. И так до бесконечности. При этом вся это бесконечная рекурсия систем в подсистемы в подподсистемы и т.д. будет прозрачной и легко верифицируемой
5. ВЫВОД
5.1 Что модель систем ДЕЙСТВИТЕЛЬНО дает
- Язык для описания целого — то, чего нет в ООП
- Мост между бизнесом и кодом — исполняемые цели
- Контекст для ИИ — модель, которую ИИ может понять
- Предсказуемость эволюции — планирование вместо хаоса
5.2 Чего она НЕ дает
- Серебряной пули — это не замена программированию, а надстройка
- Мгновенного эффекта — требуется культурная трансформация
- Автоматического решения всех проблем — нужны компетентные люди
5.3 Итоговый вердикт
Программисты, используя ООП, возможно неосознанно используют элементы системного мышления, но именно «неосознанно» — это ключевое ограничение.
ООП дало язык для описания структуры, но не дало языка для описания целей и потребностей. Без этого мы имеем:
- Хороший код, плохие системы
- Быстрые ИИ, слепые к контексту
- Умные агенты, глупые коллективы
Модель систем добавляет недостающий слой — телеологический (целевой). И именно этот слой может стать тем самым катализатором, который превратит программирование из ремесла в настоящую инженерную дисциплину, а ИИ-агентов — из быстрых писателей кода в понимающих соавторов.