Модель систем vs ООП

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

1. ПАРАДОКС: Модель систем vs ООП

1.1 Действительно ли ООП — это модель систем?

На первый взгляд, да. Класс в ООП имеет:

  • Поля (аналог элементов System)
  • Методы (аналог действий/связей)
  • Инкапсуляцию (аналог границ системы)
  • Наследование (аналог иерархии систем)
  • Полиморфизм (аналог разных реализаций одной цели)
**System(** **name="Класс в ООП",** **goals=[** Goal(description="Выполнить определенные функции") **],** **needs=[** Need(required="Данные (поля)"), Need(required="Другие объекты (зависимости)") **],** **elements=[** System(name="Поля (состояние)"), System(name="Методы (поведение)") **],** **connections=[** Connection(source="Объект А", target="Объект Б", transfer="Вызов метода") **]** **)**

1.2 Но есть критическое различие

System(name="Различие ООП и модели систем", comparison = { "ООП": { "фокус": "Техническая реализация", "цели": "Неявные (заложены в дизайне)", "потребности": "Только технические зависимости", "динамика": "Событийно-ориентированная", "мета-уровень": "Отсутствует" }, "Модель систем": { "фокус": "Смысловое проектирование", "цели": "Явные (зачем нужна система)", "потребности": "Все типы ресурсов", "динамика": "Целенаправленное изменение", "мета-уровень": "Рекурсивное применение" } } )

2. ПОЧЕМУ ООП НЕ СОВЕРШИЛ СИСТЕМНЫЙ СКАЧЕК

2.1 Стагнация: факты

System(name="Проблемы современной разработки", данные = { "Технический долг": "Растет экспоненциально в крупных проектах", "Провалы проектов": "По данным Standish Group, 66% IT-проектов частично или полностью проваливаются" , "Сложность интеграции": "Микросервисная архитектура создала новые проблемы координации", "Производительность труда": "Рост не соответствует росту вычислительных мощностей" } )

2.2 Причины стагнации

System(name="Причины отсутствия скачка", причины = [ Cause( name="Фокус на 'как', а не на 'зачем'", описание = "Программисты научились хорошо описывать структуру, но не цели и потребности систем", пример = "Мы создаем классы, но не документируем, какие именно бизнес-цели они реализуют" ), Cause( name="Потеря контекста при масштабировании", описание = "ООП работает на микроуровне, но не дает языка для описания взаимодействия тысяч объектов", пример = "Архитектура микросервисов — попытка решить это, но она создала новые проблемы" ), Cause( name="Отсутствие мета-уровня", описание = "Нет формального способа описать, как система должна эволюционировать", пример = "Рефакторинг — мучительный процесс, потому что нет модели целевого состояния" ), Cause( name="Разрыв между бизнесом и кодом", описание = "Бизнес-цели теряются при трансляции в технические требования", пример = "Agile-костыли (user stories) не решают проблему системного видения" ) ] )

ООП позволил сделать значительный шаг в структурировании сложных и масштабных структур. При этом он выступил как частный случай для организации сложных систем, облегчил командную работу. Я бы назвал ООП частным случаем Модели систем. Или даже не до конца сформулированной моделью систем, когда элементы ООП неявно описывают свои элементы. Это в свою очередь приводит к ошибочному пониманию кода, написанного с помощью ООП. Так класс в ООП можно описать с помощью следующих элементов:

  1. Вход - входящие данные
  2. Выход - результат работы класса, он же return
  3. Атрибуты - над чем выполняются действия
  4. Методы - действия, которые осуществляет класс в процессе выполнения программы Также все эти составляющие можно описать с помощью модели систем: Цель - это Выход класса в ООП. То ради чего создан класс.Потребности - это Вход класса в ООП. То что нужно классу для выполнения его функционального назначения.Элементы - это и Атрибуты и Методы класса в ООП. В модели систем любая сущность, входящая в систему является элементом.Связи - это и Атрибуты и Методы класса в ООП, но которые передаются между Атрибутами и Методами классов. Получается в модели систем и элементы и связи - это одно и тоже? Да, а еще и цель и потребности. Эти все сущности сами по себе также являются системами, а на языке ООП классами. Модель систем и все ее сущности (элементы, цели, потребности, связи) - это абстракции, которые направлены на описание систем на человеческом языке и в максимально понятном виде. Возможно первоначально вам будет не понятно и будет вызывать отторжение предложенная абстракция, что статичный элемент и динамическая составляющая в виде изменения статических элементов в модели систем являются элементами. Но при дальнейшем знакомстве в других статьях вы увидите универсальность и красоту данной абстракции. Как пример, иллюстрирующий красоту этой абстракции предложу проделать следующее:
  • Помашите перед свои лицом рукой и понаблюдайте за рукой в течение 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) показывают :

System(name="Ограничения ИИ в программировании", метрики = { "Потеря контекста": "ИИ не видит систему целиком", "Увеличение переделок": "+200% rework" , "Снижение инноваций": "-14% новых решений" , "Доверие": "46% разработчиков не доверяют коду ИИ" }, причины = { "Локальность": "ИИ обучен на паттернах, а не на системных моделях", "Отсутствие целей": "ИИ не понимает 'зачем' пишется код", "Нет рефлексии": "ИИ не может оценить системные последствия своих решений" } )

3.2 Парадокс "умного кода, глупой системы"

System(name="Парадокс ИИ-разработки", суть = """ ИИ пишет отличный код для отдельных функций, но не видит, как эти функции взаимодействуют в системе. Как опытный хирург, который блестяще делает операцию, но не знает, зачем пациенту эта операция. """ )

ИИ-агенты являются значительным прорывом применения ООП и построения сложных систем. Но мы наблюдаем, что они ограничены заложенной в них ограниченностью применяемой структуры. Модель систем потенциально может разрешить данные проблемы, связать в единую систему вроде бы не совместимые или противоположные системы. Как мы рассмотрели выше модель систем легко связываем статические и динамические объекты.

4. ЧТО МОЖЕТ ДАТЬ МОДЕЛЬ СИСТЕМ?

4.1 Новый уровень абстракции

System(name="Системное программирование будущего", уровни = [ Level1: "Код (существующий уровень)", Level2: "Компоненты (микросервисы, классы)", Level3: "Системная модель (ваша модель)", Level4: "Мета-модель (эволюция системы)" ], новое_качество = "Цели и потребности становятся исполняемыми артефактами" )

4.2 Что меняется с моделью систем

Аспект|----------|Сейчас|----------|С моделью систем

Цели|----------|В головах, в Jira|----------|В коде, проверяемые

Потребности|----------|В зависимостях (явно), в контексте (неявно)|----------|Явно, с метриками

Связи|----------|API-контракты|----------|Полная семантика взаимодействия

Эволюция|----------|Хаотичный рефакторинг|----------|Плановое развитие по модели

ИИ-агенты|----------|Пишут код без контекста|----------|Понимают цели и потребности

4.3 Пример: исполняемые цели

System(name="Система с явными целями", goal = Goal( description = "Обработать 1000 заказов в минуту", target = "Платежный шлюз", metrics = {"пропускная способность": ">1000"} ), need = Need( description = "Данные о заказах", required = "Очередь сообщений", metrics = {"скорость доставки": "<10ms"} ), // Код генерируется ИИ с учетом этих целей // Тесты проверяют не только корректность, но и достижение целей )

Модель систем не просто описывает системы. Она дает понимание, зачем эти системы существуют, что необходимо системам для их существования и достижения этого "зачем". Модель систем показывает из чего состоит система, как связаны части этой системы, она показывает весь лабиринт взаимодействий между элементами системы. А если вам недостаточно уровня абстракции элементов, то декомпозируйте все или отдельные элементы на системы, которые также будут состоять из элементов. И так до бесконечности. При этом вся это бесконечная рекурсия систем в подсистемы в подподсистемы и т.д. будет прозрачной и легко верифицируемой

5. ВЫВОД

5.1 Что модель систем ДЕЙСТВИТЕЛЬНО дает

  1. Язык для описания целого — то, чего нет в ООП
  2. Мост между бизнесом и кодом — исполняемые цели
  3. Контекст для ИИ — модель, которую ИИ может понять
  4. Предсказуемость эволюции — планирование вместо хаоса

5.2 Чего она НЕ дает

  1. Серебряной пули — это не замена программированию, а надстройка
  2. Мгновенного эффекта — требуется культурная трансформация
  3. Автоматического решения всех проблем — нужны компетентные люди

5.3 Итоговый вердикт

Программисты, используя ООП, возможно неосознанно используют элементы системного мышления, но именно «неосознанно» — это ключевое ограничение.

ООП дало язык для описания структуры, но не дало языка для описания целей и потребностей. Без этого мы имеем:

  • Хороший код, плохие системы
  • Быстрые ИИ, слепые к контексту
  • Умные агенты, глупые коллективы

Модель систем добавляет недостающий слой — телеологический (целевой). И именно этот слой может стать тем самым катализатором, который превратит программирование из ремесла в настоящую инженерную дисциплину, а ИИ-агентов — из быстрых писателей кода в понимающих соавторов.

1