Путь майки (шуточное размышление на тему путешествия объекта)

Моделирование прохождения грязной майки от состояния майка “грязная” до майка “чистая готовая к использованию”

Предисловие-объяснение

идея такого разбора возникла в процессе размышлений письмом по материалам руководства.
тема про грязную майку - это сплав нескольких тем:
про путешествие объекта (глава руководства),
про путешествие футболки (отсылка к “Путешествие футболки в мировой экономике” Пьетра Риволи)
указание/отсылка на рядовую бытовую ситуацию с которой каждый сталкивается достаточно регулярно.

первый эскиз модели, очевидно, был зафиксирован на бумаге. Далее он был оцифрован. и доработан.

текст написан в 2х регистрах:

  • в нижнем регистре написан исходный вариант,
  • в верхнем регистре написано расширенное описание, которое было уже добавлено 2м проходом.

модель носит скорее шуточный характер. но в каждой шутке есть доля шутки. даже такая тривиальная вещь как рутинная стирка футболки может быть развернута до путешествия объекта через предприятие.
это сырой текст. не прогонял его через LLM. это больше самопроверка на предмет понимания и умения пользоваться базовыми концептами руководств. в нем очевидно, еще много проблем и есть потенциал для улучшения. но это мой текущий уровень понимания, когда я могу сесть и на коленке накидать такое рассуждения без использования LLM.

Грязная майка - обработка (конвейер) - чистая майка

Процесс накопления грязного белья для стирки

хранение грязной майки в баке для грязного белья::склад запасов
майка в состоянии “ожидает стирки”

Подготовка к стирке в стиральной машине

РАБОТЫ ПО сортировка белья ВЫПОЛНЯЕТСЯ АГЕНТОМ В РОЛИ СОРТИРОВЩИК БЕЛЬЯ ПО МЕТОДУ СОРТИРОВКИ НА СКЛАДЕ ЗАПАСОВ по цвету, по ткани, по допустимому режиму стирки, для формирования пакета для стирки::РЕЗУЛЬТАТ МЕТОДА СОРТИРОВКИ, который допустим с точки зрения машинки::ТРЕБОВАНИЯ К ПАКЕТУ, и обеспечит экономную стирку::ПРЕДПОЧТЕНИЕ АГЕНТА
используются методы сортировки, методы классификации, методы оценки соответствия пакета для стирки критериям машинки для стирки

Сборка пакета для стирки

АГЕНТ В РОЛИ СБОРЩИК ПАКЕТА ДЛЯ СТИРКИ ПО МЕТОДУ СБОРКА ПАКЕТА ДЛЯ СТИРКИ ВЫПОЛНЯЕТ РАБОТЫ ПО сборка методом сборки пакета для стирки. РЕЗУЛЬТАТОМ РАБОТ ЯВЛЯЕТСЯ ПАКЕТ БЕЛЬЯ КОТОРЫЙ ПРОХОДИТ В СТИРАЛЬНУЮ МАШИНКУ
АГЕНТ В РОЛИ ДОСТАВЩИК БЕЛЬЯ К СТИРАЛЬНОЙ МАШИНКЕ ВЫПОЛНЯЕТ РАБОТЫ ПО доставка пакета к стиральной машинке МЕТОДОМ ДОСТАВКИ ПАКЕТА БЕЛЬЯ. РЕЗУЛЬТАТОМ ВЫПОЛНЕНИЯ РАБОТ АГЕНТОМ ЯВЛЯЕТСЯ ПАКЕТ БЕЛЬЯ ПЕРЕМЕЩЕННЫЙ ОТ МЕСТА ХРАНЕНИЯ К СТИРАЛЬНОЙ МАШИНКЕ
АГЕНТ В РОЛИ ОПЕРАТОР СТИРАЛЬНОЙ МАШИНКИ ВЫПОЛНЯЕТ РАБОТЫ ПО загрузка пакета в стиральную машинку ПО МЕТОДУ ЗАГРУЗКИ ПАКЕТА БЕЛЬЯ В СТИРАЛЬНУЮ МАШИНКУ. РЕЗУЛЬТАТОМ ВЫПОЛНЕНИЯ РАБОТ БУДЕТ ПАКЕТ БЕЛЬЯ ЗАГРУЖЕННЫЙ В МАШИНКУ.

Стирка в стиральной машинке

АГЕНТ В РОЛИ СТИРАЛЬЩИК ФУТБОЛКИ ВЫПОЛНЯЕТ РАБОТЫ ПО подготовка к стирке ПО МЕТОДУ ПОДГОТОВКИ БЕЛЬЯ К СТИРКЕ
АГЕНТ В РОЛИ СТИРАЛЬЩИК ФУТБОЛКИ ВЫПОЛНЯЕТ РАБОТЫ ПО выбор средств для стирки ПО МЕТОДУ ПОДБОРА СРЕДСТВ ДЛЯ СТИРКИ БЕЛЬЯ
АГЕНТ В РОЛИ СТИРАЛЬЩИК ФУТБОЛКИ ВЫПОЛНЯЕТ РАБОТЫ ПО выбор режима стирки ПО МЕТОДУ ПОДБОРА РЕЖИМА СТИРКИ БЕЛЬЯ
АГЕНТ В РОЛИ ОПЕРАТОР СТИТАЛЬНОЙ МАШИНКИ ВЫПОЛНЯЕТ РАБОТЫ ПО выбор программы для стирки ПО МЕТОДУ УПРАВЛЕНИЯ РЕЖИМАМИ РАБОТЫ СТИРАЛЬНОЙ МАШИНКИ
СОБЫТИЕ запуск программы на исполнение
СТИРКА БЕЛЬЛЬЯ СТИРАЛЬНОЙ МАШИНКОЙ::ОБРАБОТКА БЕЛЬЯ - БЕЛЬЕ ИЗ СОСТОЯНИЯ “ГРЯЗНОЕ” ПЕРЕХОДИТ В СОСТОЯИЕ “ПОСТИРАННОЕ”
СОБЫТИЕ завершение программы СТИРКИ СТИРАЛЬНОЙ машинкой

АГЕНТ В РОЛИ ОПЕРАТОР СТИРКИ ВЫПОЛНЯЕТ РАБОТУ ПО извлечение постиранного белья из машинки ПО МЕТОДУ ИЗВЛЕЧЕНИЯ БЕЛЬЯ ИЗ СТИРАЛЬНОЙ МАШИНКИ
АГЕНТ В РОЛИ КОНТРОЛЕР ВЫПОЛНЯЕТ РАБОТЫ ПО контроль результата стирки ПО МЕТОДУ ВЫПОЛНЕНИЯ КОНТРОЛЯ ЧИСТОТЫ БЕЛЬЯ

АГЕНТ В РОЛИ ДОСТАВЩИК БЕЛЬЯ ВЫПОЛНЯЕТ РАБОТЫ ПО доставка постиранного белья к месту сушки::МЕСТО ОБРАБОТКИ ПО МЕТОДУ ДОСТАВКА БЕЛЬЯ

Сушка на сушилке

АГЕТ В РОЛИ РАЗВЕШИВАТЕЛЬ БЕЛЬЯ ВЫПОЛНЯЕТ РАБОТЫ ПО размещение постиранного белья на сушилке - БЕЛЬЕ В СОСТОЯНИИ “МОКРОЕ” ПО МЕТОДУ РАЗВЕШИВАНИЯ БЕЛЬЯ НА СУШИЛКЕ
СОБЫТЕ “СУШКА НАЧАЛАСЬ”
процесс высыхания - ОБРАБОТКА ФУТБОЛКИ
АГЕНТ В РОЛИ КОНТРОЛЕР ПРОЦЕССА СУШКИ ВЫПОЛНЯЕТ РАБОТЫ ПО контроль прохождения процесса высыхания ПО МЕТОДУ ВЫПОЛНЕНИЯ КОНТРОЛЯ ПРОХОЖДЕНИЯ СУШКИ БЕЛЬЯ
СОБЫТЕ СУШКА ЗАВЕРШИЛАСЬ белье высохло - БЕЛЬЕ ПЕРЕШЛО В СОСТОЯНИЕ “СУХОЕ”
АГЕНТ В РОЛИ ФОРМИРОВАТЕЛЬ ПАКЕТА ДЛЯ ГЛАЖКИ БЕЛЬЯ ВЫПОЛНЯЕТ РАБОТЫ формирование пакета из высушенного белья для глажки ПО МЕТОДУ ФОРМИРОВАНИЕ ПАКЕТА БЕЛЬЯ ДЛЯ ГЛАЖКИ

Глажка белья

АГЕТН В РОЛИ ДОСТАВЩИК ВЫПОЛНЯЕТ РАБОТЫ ПО доставить доску для глажки из места хранения к месту глажки::УЗЕЛ ГРАФА СОЗДАНИ, ПО МЕТОДУ ДОСТАВКИ ДОСКИ

Сборка доски для глажки

АГЕНТ В РОЛИ УСТАНОВЩК ДОСКИ ВЫПОЛНЯЕТ РАБОТЫ ПО разложить доску для глажки. ПО МЕТОДУ РАЗЛОЖЕНИЯ ГЛАДИЛЬНОЙ ДОСКИ - перевести доску из состояния “сложена” в состояние “разложена и готова к использованию”

Подготовка удлинителя

АГЕНТ В РОЛИ ДОСТАВЩИК ВЫПОЛНЯЕТ РАБОТЫ ПО доставить удлинитель к месту глажки из места хранения ПО МЕТОДУ ДОСТАВКИ УДЛИНИТЕЛЯ
АГЕНТВ РОЛИ ПОДКЛЮЧАТЕЛЬ УДЛИНИТЕЛЯ К РОЗЕТКЕ ВЫПОДЛНЯЕТ РАБОТЫ подключить удлинитель к электрической розетке ПО МЕТОДУ ПОДКЛЮЧЕНИЯ УДЛИНИТЕЛЯ К РОЗЕТКЕ - УДЛИНИТЕЛЬ ПЕРЕШЕЛ В СОСТОЯНИЕ “ПОДКЛЮЧЕН, ГОТОВ К ИСПОЛЬЗОВАНИЮ”

Подготовка и подключение утюга

АГЕНТ В РОЛИ ДОСТАВЩИК УТЮГА ВЫПОЛНЯЕТ РАБОТЫ ПО доставить утюг:: из места хранения к месту глажки ПО МЕТОДУ ДОСТАВКИ УТЮГА.
АГЕНТ В РОЛИ ЗАПРАВЩИК УТЮГОВ ВЫПОЛНЯЕТ РАБОТЫ ПО долить в утюг воды для отпаривания которая не оставляет следов на одежде ПО МЕТОДУ ДОЛИВАНИЯ ВОДЫ В УТЮГИ
включить утюг в удлинитель и выбрать режим глажки который соответствует требованиям для глажки футболки
как только утюг достиг требуемой температуры приступить к глажке УТЮГ ПЕРЕШЕЛ В СОСТОЯНИЕ “ГОТОВ К ИСПОЛЬЗОВАНИЮ”

Глажка футболки

АГЕНТ В РОЛИ РАСКЛАДЫВАТЕЛЬ ФУТБОЛКИ ВЫПОЛНЯЕТ РАБОТЫ разложить футболку на доске ПО МЕТОДУ РАЗЛОЖЕНИЯ ФУТБОКИ - ФУТБОКА В СОСТОЯНИ “ПОМЯТАЯ”
начать глажку::ОБРАБОТКА ФУТБОЛКИ
АГЕНТ В РОЛИ ГЛАДИЛЬЩИК ФУТБОЛКИ ВЫПОЛНЯЕТ РАБОТЫ ГЛАЖКА ФУТБОКИ ПО МЕТОДУ ГЛАЖКИ ФУТБОЛКИ С ИСПОЛЬЗОВАНИЕМ УТЮГА
после того как футболка поглажена - ФУТБОЛКА ПЕРЕШЛА В СОСТОЯНИЕ “ПОГЛАЖЕНА” ее необходимо СЛОЖИТЬ И доставить до места хранения чистого белья, ТАМ ЕЕ СЛЕДУЕТ АККУРАТНО ПОЛОЖИТЬ НА ХРАНЕНИЕ

Доставка на место хранения чистого белья

АГЕНТ В РОЛИ СОРТИРОВЩИК БЕЛЬЯ ВЫПОЛНЯЕТ РАБОТЫ ПО сортировка по типам белья ПО МЕТОДУ СОРТИОВКИ БЕЛЬЯ
АГЕНТ В РОЛИ ДОСТАВЩИК БЕЛЬЯ ВЫПОЛНЯЕТ РАБОТЫ ПО доставка к месту хранения ПО МЕТОДУ ДОСТАВКИ ПОГЛАЖЕННОГО БЕЛЬЯ РУКАМИ
АГЕНТ В РОЛИ СКЛАДЫВАЛЬЩИК БЕЛЬЯ ВЫПОЛНЯЕТ РАБОТЫ ПО СКЛАДЫВАНИЮ ФУТБОЛКИ ПО МЕТОДУ СКЛАДЫВАНИЯ ПОГЛАЖЕННОЙ ФУТБОЛКИ
АГЕНТ В РОЛИ УКЛАДЧИК БЕЛЬЯ В ШКАФ ВЫПОЛНЯЕТ РАБОТЫ ПО размещение на месте хранения ПО МЕТОДУ РАЗМЕЩЕНИЯ БЕЛЬЯ В ШКАФУ.

Вопрос с футболкой закрыт

ФУТБОЛКА ПЕРЕШЛА В СОСТОЯНИЕ “ГОТОВА К ИСПОЛЬЗОВАНИЮ”

такие дела.

спасибо за внимание.

Далее, полученную модель собственного изготовления направил на критику в LLM

Критика Qwen3.8-Max + FPF

Критика модели путешествия майки с опорой на FPF

Модель описывает путешествие объекта (майки) через серию трансформаций. Это корректная постановка задачи по A.22 (путешествие = изменение состояния объекта во времени и пространстве). Однако модель содержит системные проблемы по нескольким паттернам FPF. Разберу по категориям.


:red_circle: 1. Раздувание ролей (Антипаттерн Apparatus overwrap, F.19)

Проблема: Модель содержит ~19 отдельных ролей агентов для бытовой задачи:

  • Сортировщик белья (встречается дважды)
  • Сборщик пакета для стирки
  • Доставщик белья к стиральной машинке
  • Оператор стиральной машинки
  • Стиральщик футболки
  • Контролер
  • Контролер процесса сушки
  • Развешиватель белья
  • Формирователь пакета для глажки белья
  • Установщик доски
  • Подключатель удлинителя к розетке
  • Доставщик утюга
  • Заправщик утюгов
  • Раскладыватель футболки
  • Гладильщик футболки
  • Доставщик белья (снова)
  • Складываетель белья
  • Укладчик белья в шкаф

Почему это проблема по FPF:

  • По F.6 (Role Assignment & Enactment Cycle), каждая роль должна быть семантически различимой (разные права, разные методы, разные контексты). Здесь роли различаются только объектом действия (доставить утюг, доставить доску, доставить удлинитель), но не семантикой роли.
  • По A.2 (Role as part anti-pattern), роли не должны дублироваться, если они выполняют одну и ту же функцию в разных подпроцессах. Доставщик утюга и Доставщик удлинителя — это одна роль Доставщик объектов к месту глажки, параметризованная объектом.
  • Модель не указывает, один агент играет все роли или разные агенты. Если один человек делает всё, то 19 ролей на одного агента — это семантический шум.

Ремонт: Сократить до 5-7 семантически различных ролей:

1. Сортировщик белья (сортировка и формирование пакетов)
2. Оператор стирки (загрузка, выбор режима, извлечение)
3. Развешиватель/Сниматель белья (сушка)
4. Гладильщик (подготовка оборудования, глажка)
5. Укладчик (складывание, размещение в шкафу)

Роли Доставщик, Подключатель, Заправщик — это подшаги методов, а не отдельные роли.


:red_circle: 2. Путаница между Методом, Описанием Метода и Работой (Нарушение A.15)

Проблема: Модель смешивает три разных сущности:

Термин в модели Что это по FPF Проблема
ВЫПОЛНЯЕТ РАБОТЫ ПО сортировка белья U.Work (датированное выполнение) Корректно
ПО МЕТОДУ СОРТИРОВКИ НА СКЛАДЕ ЗАПАСОВ U.Method (семантический способ) Корректно
МЕТОДОМ СБОРКА ПАКЕТА ДЛЯ СТИРКИ Смешение: МЕТОДОМ + СБОРКА (существительное) Грамматическая и семантическая путаница
РЕЗУЛЬТАТОМ РАБОТ ЯВЛЯЕТСЯ ПАКЕТ БЕЛЬЯ Результат работы Не указана дельта изменения состояния (U.Work.Δ)
СОБЫТИЕ запуск программы на исполнение Событие Не указано, кто его инициирует (агент? машина? время?)

Почему это проблема по FPF:

  • По A.15, U.Method — это абстрактный способ (не документ, не план). MethodDescription — это описание метода (рецепт, инструкция). U.Work — это датированное выполнение с конкретными параметрами.
  • Модель не различает: “как делать” (метод), “инструкция как делать” (описание метода), “что было сделано” (работа).

Ремонт: Для каждой работы явно указать:

Работа: Сортировка белья
├─ Агент: Человек в роли СортировщикБелья@КонтекстСтирки
├─ Метод: МетодСортировкиБелья (семантический способ)
├─ Описание метода: Инструкция по сортировке (если есть)
├─ Параметры: {поЦвету: Да, поТкани: Да, поРежиму: Да}
├─ Входное состояние: Майка в состоянии "Грязная, в баке"
├─ Выходное состояние (Δ): Майка в состоянии "В пакете для стирки, отсортирована"
├─ Ресурсы: Время агента = 2 мин, Электричество = 0 кВт·ч
└─ Критерий завершения: Пакет соответствует требованиям стиральной машины

:red_circle: 3. Отсутствие явной композиции методов (Нарушение B.1.5, Γ_method)

Проблема: Модель перечисляет работы последовательно, но не показывает:

  • Какие работы могут быть параллельными (например, доставка утюга и доставка доски могут быть параллельными)
  • Какие работы зависят от других (нельзя гладить, пока утюг не нагрелся)
  • Какие условия должны быть выполнены для перехода к следующей работе
  • Какие ветвления возможны (что если майка не отстиралась? что если нет электричества?)

Почему это проблема по FPF:

  • По B.1.5 (Γ_method), метод должен быть композицией шагов с явными типами связей (SerialStepOf, ParallelFactorOf). Модель не использует ни одного из этих типов.
  • По A.3.1, метод должен быть контекстно-определённым допустимым способом. Модель не указывает, в каком контексте допустима каждая работа.

Ремонт: Построить граф работ с явными связями:

Сортировка → ФормированиеПакета → ДоставкаКМашинке → Загрузка → ВыборРежима → Стирка
                                                                              ↓
Укладка ← ДоставкаВШкаф ← Складывание ← Глажка ← ПодготовкаУтюга ← Извлечение

Добавить условия перехода:

  • Стирка → Извлечение: условие ПрограммаЗавершена == true
  • Глажка → Складывание: условие ФутболкаПоглажена == true

:red_circle: 4. Отсутствие модели динамики (Нарушение A.22, U.Dynamics)

Проблема: Модель упоминает состояния майки (Грязная, Постиранная, Мокрая, Сухая, Помятая, Поглаженная, Готова к использованию), но не формализует:

  • Пространство состояний (какие состояния возможны, какие атрибуты описывают состояние)
  • Закон перехода (при каких условиях майка переходит из одного состояния в другое)
  • Инварианты (что должно быть истинно в каждом состоянии)

Почему это проблема по FPF:

  • По A.22, путешествие объекта — это изменение состояния объекта во времени и пространстве. Без явной модели динамики невозможно проверить, что объект действительно прошёл через все состояния.
  • Модель не различает состояние майки и состояние пакета белья. Когда майка в пакете, её состояние — “в пакете” или “грязная”? Это разные атрибуты.

Ремонт: Определить модель динамики майки:

Пространство состояний Майки:
├─ Чистота: {Грязная, Постиранная}
├─ Влажность: {Сухая, Мокрая}
├─ Гладкость: {Помятая, Поглаженная}
├─ Местоположение: {В баке, В пакете, В машинке, На сушилке, На доске, В шкафу}
├─ Готовность: {Не готова, Готова к использованию}

Закон перехода:
├─ Грязная → Постиранная: при выполнении работы "Стирка" с параметрами {Режим: Деликатный, Температура: 40}
├─ Мокрая → Сухая: при выполнении работы "Сушка" с условием {ВремяСушки > 2 часа}
├─ Помятая → Поглаженная: при выполнении работы "Глажка" с условием {ТемператураУтюга ≥ 150}

Инварианты:
├─ Майка не может быть одновременно Грязная и Постиранная
├─ Майка не может быть Готова к использованию, если не Поглаженная и не Сухая

:red_circle: 5. Путаница объекта внимания: майка или футболка? (Нарушение A.22, EntityOfConcern)

Проблема: Модель начинает с майки, но в середине переключается на футболку:

  • “Грязная майка - обработка - чистая майка”
  • “АГЕНТ В РОЛИ СТИРАЛЬЩИК ФУТБОЛКИ”
  • “РАСКЛАДЫВАТЕЛЬ ФУТБОЛКИ”
  • “ГЛАДИЛЬЩИК ФУТБОЛКИ”
  • “Вопрос с футболкой закрыт”

Почему это проблема по FPF:

  • По A.22, EntityOfConcern — это конкретный объект, о котором идёт речь. Модель не определяет, является ли объектом внимания майка, футболка, или бельё в целом.
  • Если это модель путешествия майки, то футболка — это другой объект, и его появление требует явного моста (по F.9).
  • Если это модель путешествия белья в целом, то майка и футболка — это экземпляры класса, и модель должна быть параметризована.

Ремонт: Явно определить EntityOfConcern:

EntityOfConcern: Майка (конкретный экземпляр)
Класс: Бельё (верхняя одежда)
Атрибуты экземпляра: {Тип: Майка, Цвет: Белый, Ткань: Хлопок, Размер: M}

Или, если это модель для любого белья:

EntityOfConcern: Бельё (абстрактный класс)
Параметры класса: {Тип: {Майка, Футболка, Рубашка}, Цвет: {Белый, Цветной}, Ткань: {Хлопок, Синтетика}}

:orange_circle: 6. Отсутствие контекстов (Нарушение BoundedContext, A.1)

Проблема: Модель не указывает, в каком контексте происходит каждая работа. Например:

  • Сортировка происходит в контексте “Склад запасов” или в контексте “Ванная комната”?
  • Стирка происходит в контексте “Стиральная комната” или в контексте “Кухня”?
  • Глажка происходит в контексте “Гладильная комната” или в контексте “Спальня”?

Почему это проблема по FPF:

  • По A.1, каждый объект и каждая работа существуют в конкретном контексте. Контекст определяет, какие свойства объекта релевантны, какие методы допустимы, какие роли активны.
  • Модель упоминает “конвейер”, но не определяет, какой контекст управляет конвейером.

Ремонт: Явно определить контексты:

Контекст 1: Склад грязного белья
├─ Объекты: Бак для грязного белья, Майка
├─ Роли: Сортировщик белья
├─ Методы: Сортировка, Формирование пакета

Контекст 2: Стиральная комната
├─ Объекты: Стиральная машина, Пакет белья
├─ Роли: Оператор стирки
├─ Методы: Загрузка, Выбор режима, Стирка

Контекст 3: Сушильная комната
├─ Объекты: Сушилка, Мокрое бельё
├─ Роли: Развешиватель белья
├─ Методы: Развешивание, Сушка

Контекст 4: Гладильная комната
├─ Объекты: Гладильная доска, Утюг, Удлинитель
├─ Роли: Гладильщик
├─ Методы: Подготовка оборудования, Глажка

Контекст 5: Шкаф для чистого белья
├─ Объекты: Шкаф, Поглаженное бельё
├─ Роли: Укладчик
├─ Методы: Складывание, Размещение

:orange_circle: 7. Отсутствие модели ресурсов (Нарушение B.1.6, Γ_work)

Проблема: Модель не указывает, какие ресурсы потребляются каждой работой:

  • Сколько времени агента уходит на каждую работу?
  • Сколько электричества потребляет стиральная машина?
  • Сколько воды расходуется на стирку?
  • Сколько порошка используется?

Почему это проблема по FPF:

  • По B.1.6 (Γ_work), работа должна быть описана как потраченные ресурсы. Без этого невозможно оценить эффективность процесса или сравнить альтернативные методы.
  • Модель упоминает “экономную стирку”, но не определяет, что значит экономная (по воде? по электричеству? по времени?).

Ремонт: Для каждой работы указать ресурсы:

Работа: Стирка
├─ Ресурсы агента: Время = 5 мин
├─ Ресурсы машины: Электричество = 1.5 кВт·ч, Вода = 40 л
├─ Расходные материалы: Порошок = 50 г
├─ Общая стоимость: 15 руб (электричество) + 5 руб (вода) + 10 руб (порошок) = 30 руб

:yellow_circle: 8. Отсутствие явных критериев качества (Нарушение C.16)

Проблема: Модель упоминает “контролер”, но не определяет:

  • Какие критерии использует контролер (визуальный осмотр? измерение белизны?)
  • Какие метрики измеряются (процент чистоты? уровень влажности?)
  • Какие пороги определяют успех (чистота > 95%? влажность < 5%?)

Почему это проблема по FPF:

  • По C.16, качество должно быть описано через характеристики (Characteristics) и метрики (Metrics). Модель не определяет ни одной метрики.
  • Модель упоминает “контроль чистоты”, но не говорит, как именно измеряется чистота.

Ремонт: Определить характеристики качества:

Характеристика: Чистота белья
├─ Метрика: Процент удаления загрязнений (визуально или спектрометром)
├─ Порог успеха: ≥ 95%
├─ Метод измерения: Визуальный осмотр контролером

Характеристика: Сухость белья
├─ Метрика: Процент остаточной влажности
├─ Порог успеха: ≤ 5%
├─ Метод измерения: Тактильный контроль или влагомер

Характеристика: Гладкость белья
├─ Метрика: Отсутствие видимых складок
├─ Порог успеха: 0 видимых складок на лицевой стороне
├─ Метод измерения: Визуальный осмотр контролером

:clipboard: Итоговая таблица проблем

# Проблема Паттерн FPF Серьёзность
1 Раздувание ролей (19 ролей) F.19, A.2 :red_circle: Критично
2 Путаница Метод / Описание метода / Работа A.15 :red_circle: Критично
3 Отсутствие композиции методов B.1.5 :red_circle: Критично
4 Отсутствие модели динамики A.22 :red_circle: Критично
5 Путаница объекта (майка / футболка) A.22 :red_circle: Критично
6 Отсутствие контекстов A.1 :orange_circle: Серьёзно
7 Отсутствие модели ресурсов B.1.6 :orange_circle: Серьёзно
8 Отсутствие критериев качества C.16 :yellow_circle: Умеренно

:white_check_mark: Рекомендуемый следующий шаг

Вместо доработки текущей модели, перестройте её по схеме:

  1. Определите EntityOfConcern (майка или бельё как класс)
  2. Определите модель динамики (пространство состояний, закон перехода, инварианты)
  3. Определите контексты (склад, стиральная, сушильная, гладильная, шкаф)
  4. Определите роли (5-7 семантически различных, не 19)
  5. Определите методы (семантические способы, не описания)
  6. Постройте граф работ с явными связями (SerialStepOf, ParallelFactorOf)
  7. Добавьте ресурсы для каждой работы
  8. Добавьте критерии качества для каждой трансформации

Если нужна помощь с перестройкой модели в конкретный формат (таблица, граф, YAML), скажите — подготовлю шаблон.

После чего запросил ремонт модели:

корректирующие уточнения для LLM: “весь процесс проходит в доме и исполнитель всех ролей 1 и тот же агент. модель прослеживает стирку грязной футболки

Ремонт модели со стороны Qwen3.8-Max

Отремонтированная модель: «Путешествие футболки — от грязной до готовой к использованию»

1. Паспорт модели

Параметр Значение
Тип модели Путешествие объекта (трансформация состояния во времени и пространстве)
Паттерн FPF A.22 (travel of an object), A.15 (Method/MethodDescription/Work), B.1.5 (Γ_method), B.1.6 (Γ_work), C.16 (quality characteristics)
EntityOfConcern Футболка_белая_хлопок (конкретный экземпляр)
Исполнитель Один агент (Человек_Иван) во всех ролях
Место действия Дом (4 зоны: стирка, сушка, глажка, хранение)
Начальное состояние Футболка {Грязная, Сухая, Помятая, В баке}
Конечное состояние Футболка {Постиранная, Сухая, Поглаженная, В шкафу, Готова}

2. Модель динамики футболки (U.Dynamics)

2.1 Пространство состояний

Атрибут Допустимые значения
Чистота Грязная, Постиранная
Влажность Сухая, Мокрая
Гладкость Помятая, Поглаженная
Местоположение В баке, В пакете, В машинке, На сушилке, На доске, В шкафу
Готовность Не готова, Готова к использованию

2.2 Закон переходов (transitionLaw)

Переход Работа-триггер Условие
Грязная → Постиранная Стирка {Режим, Температура, МоющееСредство} заданы
Мокрая → Сухая Сушка ВремяСушки > 2 ч
Помятая → Поглаженная Глажка ТемператураУтюга ≥ ТребуемаяДляХлопка
Не готова → Готова Завершение размещения Постиранная ∧ Сухая ∧ Поглаженная ∧ В шкафу

2.3 Инварианты

  • Футболка не может быть одновременно Грязная и Постиранная
  • Футболка не может быть одновременно Мокрая и Сухая
  • Футболка не может быть Готова, если не выполнено {Постиранная ∧ Сухая ∧ Поглаженная}

2.4 Траектория (последовательность состояний)

Чистота Влажность Гладкость Местоположение Готовность
1 Грязная Сухая Помятая В баке Не готова
2 Грязная Сухая Помятая В пакете Не готова
3 Грязная Сухая Помятая В машинке Не готова
4 Постиранная Мокрая Помятая В машинке Не готова
5 Постиранная Мокрая Помятая На сушилке Не готова
6 Постиранная Сухая Помятая На сушилке Не готова
7 Постиранная Сухая Помятая На доске Не готова
8 Постиранная Сухая Поглаженная На доске Не готова
9 Постиранная Сухая Поглаженная В шкафу Готова

3. Контексты (зоны дома)

Контекст Зона Объекты Активные роли Ограничения
КонтекстСтирки Ванная / прачечная Бак, СтиральнаяМашина, МоющееСредство, ПакетДляСтирки СортировщикБелья, ОператорСтиральнойМашины ТемператураВоды ≤ 90, Загрузка ≤ 5 кг
КонтекстСушки Балкон / комната Сушилка, МокроеБельё РазвешивательБелья ВлажностьВоздуха ≤ 80%, Температура ≥ 15
КонтекстГлажки Комната с доской ГладильнаяДоска, Утюг, Удлинитель Гладильщик ТемператураУтюга ≤ 200, НаличиеРозетки
КонтекстХранения Шкаф / гардеробная Шкаф, ПоглаженноеБельё УкладчикБелья СвободноеМесто ≥ ОбъёмБелья

4. Роли (5 семантически различных)

Роль Метод Ключевые объекты Подшаги
СортировщикБелья@КонтекстСтирки СортировкаБельяПоПризнакам Футболка, Бак, ПакетДляСтирки осмотр, сортировка по цвету/ткани/режиму, формирование пакета
ОператорСтиральнойМашины@КонтекстСтирки СтиркаБелья СтиральнаяМашина, ПакетДляСтирки, МоющееСредство загрузка, выбор режима, запуск, извлечение
РазвешивательБелья@КонтекстСушки СушкаБелья Сушилка, МокраяФутболка развешивание, контроль высыхания, снятие
Гладильщик@КонтекстГлажки ГлажкаБелья Утюг, ГладильнаяДоска, Удлинитель, СухаяФутболка подготовка оборудования, нагрев утюга, глажка
УкладчикБелья@КонтекстХранения СкладываниеИРазмещениеБелья Шкаф, ПоглаженнаяФутболка складывание, транспортировка к шкафу, размещение

Все роли назначены одному агенту: Человек_Иван через U.RoleAssignment с различными window по зонам.


5. Композиция работ (Γ_method)

N1  СортировкаБелья
 └─→ N2  ФормированиеПакетаДляСтирки
      └─→ N3  ТранспортировкаПакетаКМашине
           └─→ N4  ЗагрузкаПакетаВМашину
                └─→ N5  ВыборРежимаСтирки
                     └─→ N6  Стирка (основной процесс)
                          └─→ N7  ИзвлечениеПостиранногоБелья [условие: ПрограммаЗавершена]
                               └─→ N8  ТранспортировкаМокрогоБельяКСушилке
                                    └─→ N9  РазвешиваниеНаСушилке
                                         └─→ N10 Сушка (основной процесс)
                                              └─→ N11 СнятиеВысохшегоБелья [условие: Влажность == Сухая]
                                                   └─→ N12 ТранспортировкаСухогоБельяКЗонеГлажки
                                                        └─→ N13 ПодготовкаОборудованияДляГлажки (параллельные подшаги)
                                                             ├─ N13a ТранспортировкаДоски → РазложениеДоски
                                                             ├─ N13b ТранспортировкаУдлинителя → ПодключениеУдлинителя
                                                             └─ N13c ТранспортировкаУтюга → ДоливВодыВУтюг
                                                             └─ Join → N14 НагревУтюга
                                                                  └─→ N15 Глажка (основной процесс) [условие: ТемператураУтюга ≥ Требуемая]
                                                                       └─→ N16 СкладываниеПоглаженнойФутболки [условие: Гладкость == Поглаженная]
                                                                            └─→ N17 ТранспортировкаКШкафу
                                                                                 └─→ N18 РазмещениеВШкафу → ГОТОВО

Типы связей: SerialStepOf для последовательных узлов; ParallelFactorOf + Join внутри N13.


6. Детализация ключевых работ (цепочка A.15)

6.1 Работа: Стирка футболки

U.Work: СтиркаФутболки@2026-07-18T10:00..11:00
├─ performedBy: RoleAssignment(holder=Человек_Иван, role=ОператорСтиральнойМашины@КонтекстСтирки)
├─ enactsMethod: МетодСтиркиБелья
├─ methodDescriptionRef: ИнструкцияКСтиральнойМашине_модельX
├─ executedWithin: СтиральнаяМашина_модельX
├─ affected: Футболка_белая_хлопок
├─ parameters: {Режим: Деликатный, Температура: 40, МоющееСредство: ПорошокY}
├─ входное состояние:  {Чистота: Грязная, Влажность: Сухая, Гладкость: Помятая}
├─ выходное состояние: {Чистота: Постиранная, Влажность: Мокрая, Гладкость: Помятая}
├─ ресурсы: {Электричество: 1.5 кВт·ч, Вода: 40 л, Порошок: 50 г, ВремяАгента: 5 мин}
└─ критерий завершения: Чистота == Постиранная ∧ Влажность == Мокрая

6.2 Работа: Сушка футболки

U.Work: СушкаФутболки@2026-07-18T11:15..15:15
├─ performedBy: RoleAssignment(holder=Человек_Иван, role=РазвешивательБелья@КонтекстСушки)
├─ enactsMethod: МетодСушкиБелья
├─ methodDescriptionRef: ПамяткаПоСушкеБелья
├─ affected: Футболка_белая_хлопок
├─ parameters: {Способ: ЕстественнаяСушка, Место: СушилкаНаБалконе}
├─ входное состояние:  {Чистота: Постиранная, Влажность: Мокрая, Гладкость: Помятая}
├─ выходное состояние: {Чистота: Постиранная, Влажность: Сухая, Гладкость: Помятая}
├─ ресурсы: {ВремяАгента: 3 мин, ВремяСушки: 4 ч, Электричество: 0 кВт·ч}
└─ критерий завершения: Влажность == Сухая

6.3 Работа: Глажка футболки

U.Work: ГлажкаФутболки@2026-07-18T15:30..15:45
├─ performedBy: RoleAssignment(holder=Человек_Иван, role=Гладильщик@КонтекстГлажки)
├─ enactsMethod: МетодГлажкиБелья
├─ methodDescriptionRef: ИнструкцияПоГлажкеХлопка
├─ affected: Футболка_белая_хлопок
├─ parameters: {ТемператураУтюга: 150, Режим: Отпаривание, Ткань: Хлопок}
├─ входное состояние:  {Чистота: Постиранная, Влажность: Сухая, Гладкость: Помятая}
├─ выходное состояние: {Чистота: Постиранная, Влажность: Сухая, Гладкость: Поглаженная}
├─ ресурсы: {Электричество: 0.5 кВт·ч, ВодаДляОтпаривания: 100 мл, ВремяАгента: 10 мин}
└─ критерий завершения: Гладкость == Поглаженная

7. Сводная таблица ресурсов (Γ_work)

Работа Время агента Электричество Вода Расходники Стоимость
Сортировка + формирование пакета 3 мин 0 0 0 0 руб
Стирка 5 мин 1.5 кВт·ч 40 л Порошок 50 г ~30 руб
Сушка (естественная) 3 мин 0 0 0 0 руб
Глажка 10 мин 0.5 кВт·ч 100 мл 0 ~5 руб
Складывание + размещение 2 мин 0 0 0 0 руб
ИТОГО 23 мин 2.0 кВт·ч ~40 л Порошок 50 г ~35 руб

8. Критерии качества (C.16)

Характеристика Метрика Порог успеха Метод измерения
Чистота белья Процент удаления загрязнений ≥ 95% Визуальный осмотр
Сухость белья Процент остаточной влажности ≤ 5% Тактильный контроль / влагомер
Гладкость белья Отсутствие видимых складок 0 видимых складок на лицевой стороне Визуальный осмотр
Целостность белья Отсутствие повреждений ткани 0 повреждений Визуальный осмотр

9. Связь с паттернами FPF

Элемент модели Паттерн FPF Обоснование
Футболка как объект путешествия A.22 Трансформация состояния объекта во времени и пространстве
Пространство состояний + закон переходов A.22, A.3.3 Явная модель динамики вместо перечисления состояний
Разделение Метод / Описание метода / Работа A.15 Предотвращение категориальных ошибок
Граф работ с условиями и параллельностью B.1.5 Явная композиция методов (SerialStepOf, ParallelFactorOf, Join)
Ресурсы работ B.1.6 Работа как потраченные ресурсы
Роли с контекстами A.2.1, A.1 Семантически различимые роли в ограниченных контекстах
Критерии качества C.16 Характеристики, метрики, пороги
Контроль завершения B.1.5 (guards) Условия перехода между состояниями

10. Что было исправлено относительно исходной модели

# Исходная проблема Ремонт
1 19 ролей на одного агента Сокращено до 5 семантически различных ролей
2 Смешение Метод / Описание метода / Работа Явная цепочка по A.15
3 Отсутствие композиции методов Граф с SerialStepOf, ParallelFactorOf, Join
4 Отсутствие модели динамики Пространство состояний + закон переходов + инварианты
5 Путаница «майка» / «футболка» Явный EntityOfConcern: Футболка_белая_хлопок
6 Отсутствие контекстов 4 контекста по зонам дома
7 Отсутствие ресурсов Таблица ресурсов для каждой работы
8 Отсутствие критериев качества 4 характеристики с метриками и порогами

Такие дела. Даже в банальной стирке футболки есть работа для FPF :sweat_smile: