Pull to refresh

Классификация конструкций: примеры и заблуждения

Reading time 14 min
Views 7.6K
Это завершающая статья из цикла классификации моделей. В данной статье я классифицирую конструкции. Должен извиниться за отсутствие иллюстраций, но так получилось. Поэтому сегодня просто текст. Должен предупредить, что данная статья опирается на предыдущие мои статьи, в которых подробно описано, что объект, операция и функция — объекты, имеющие лишь разную трактовку.

Термины


Начнем с термина «есть часть». В быту мы встречаем следующие высказывания: слоны – есть часть млекопитающих. Речь идет о том, что множество слонов есть подмножество множества млекопитающих. В этой статье термин «есть часть» будет употребляться в другом смысле. Мы будем употреблять этот термин только в отношении конкретных объектов. Например, конкретная ветка дерева – есть часть конкретного дерева. При этом не надо думать, что речь идет о любой ветке дерева, как тогда, когда мы даем определение понятию: ветка дерева – есть часть дерева. В терминах матлогики это утверждение читается так: для любой ветки дерева найдется такое дерево, что данная ветка есть часть этого дерева. Такое утверждение относится уже не к конкретному объекту, а к понятию, определяющему объекты. Если в статье понадобиться сказать так, я скажу явно. В противном случае я буду говорить о конкретных объектах.

Следующий термин «включает в себя». Если я говорю, что дерево включает в себя ветку, то это значит, что конкретная ветка – это часть конкретного дерева. И речь по-прежнему идет о конкретных объектах, а не о множествах или понятиях.

Еще один термин, разобраться с которым будет немного сложнее. Это термин «состоит из» Кажется, что он близок к термину «включает в себя», но мы будем их различать. Мы говорим, что дерево состоит из веток, ствола и корней. При этом подразумеваем, что части дерева перечислены полностью, чтобы дать нам полное представление о строении дерева. То есть, термин «состоит из» употребляется в отношении строений (конструкций) объектов. Если взять часть из этих объектов, то сказать, что над-объект состоит из этих под-объектов уже не получится (что-то упущено). Поэтому правильна такая иерархия: над-объект, конструкция над-объекта, элементами которой являются под-объекты и из которых она состоит, под-объект, являющийся частью над-объекта и являющийся элементом конструкции над-объекта.

Парадигмы конструкций


Один над-объект может быть представлен в виде разных конструкций. Над-объект может быть поделен на части в соответствии с разными принципами деления (разными основаниями). Есть принцип деления, сохраняющий компактность пространственных частей — пространственное деление. Пример: здание состоит из помещений. Напомню, что тезис «здание состоит из помещений» равносилен утверждению: есть здание, есть конструкция здания, выполненная в рамках пространственной парадигмы, элементами которой (конструкции) являются помещения. Другое основание – функциональное. Пример: здание состоит из ограждающих конструкций, кровли и инженерных подсистем. Другими словами, можно сказать, что основание для деления над-объекта – это парадигма конструкции.

Конструкции человеческого тела часто рассматривается в двух парадигмах: одна называется внешнее строение человека, вторая — внутреннее строение. Внешнее строение описывает части человеческого тела: руки, ноги, голову, туловище. Внутреннее строение описывает подсистемы человека: кровеносную, пищеварительную, нервную и проч. Внешнее строение равносильно пространственному делению здания на помещения. Внутреннее строение равносильно функциональному делению здания по подсистемы.

Классификация конструкций


Обычно мы рассматриваем конструкцию просто: вот над-объект, вот под-объекты, вот связи между под-объектами, которые объясняют нам свойства над-объекта. Мы будем классифицировать конструкции через классификацию элементов конструкции.

Элементы конструкции принадлежат тому же классу, что и объект


Рассмотрим конструкцию, в которой элементы принадлежат тому же классу, что и над-объект. Например, вода состоит из частей, каждая из которых – тоже вода. Или куча песка, элементы которой – тоже кучи песка. Если объект делится подобным образом, то для него зачастую можно ввести меру. Это — особенность такого рода конструкций. Например, масса объекта равна сумме масс ее частей, площадь фигуры равна сумме площадей ее частей, объем материи равен сумме объемов ее частей и тд. Рассмотрим пример менее очевидный. Пусть есть операция и ее части – под-операции. Тогда мерой может стать ее четырехмерный объем. Пример: человек выполнял операцию 4 часа. Объем операции– 4 человеко-часа. Пусть мы разделили операцию на 4 под-операции. Каждая под-операция пусть имеет объем – 1 человеко-час. Таким образом, сумма объемов под-операций равна объему над-операции.

Заблуждение


Замечу, что многие здесь сделают ошибку и подумают, что я говорил о понятии операции. Нет, в данном контексте речь шла о конкретной операции, совершенной Васильевым с 12-00 по 16-00 12-го апреля 2016 года. Если же говорить о понятии операции, то нельзя сказать, что понятие длится 4 часа. Можно сказать, что операции подобного типа длятся в среднем 4 часа. Я же часто (даже от ведущих аналитиков) слышу ошибочные высказывания на эту тему. Они говорят, что операция, которую они обозначили в нотации BPMN в виде прямоугольника длится 4 часа. Но нотация BPMN не моделирует операции, она моделирует понятие операции. Поэтому в этой нотации нельзя сказать, сколько длится конкретная операция. В свойствах объекта, созданного в нотации BPMN может быть атрибут: средняя длительность операций данного типа, но не может быть атрибута длительность операции. В продукте Businessstudio именно так и сделано. В свойствах объекта, созданного в нотации EPC или в нотации можно указать распределение длительностей операций определенного типа. И это верно.

Примеры конструкций первого типа


Примеры подобных конструкций: операция по постройке дома представлена в виде конструкции, состоящей из операций, которую мы наблюдаем на сетевом графике строительства дома. Диаграмма в нотации IDEF0 моделирует конструкцию функции, состоящую из функций.

Ошибочный пример: некоторые могут подумать, что на диаграмме BPMN подпроцесс – это конструкция операции, но это не так. На диаграмме BPMN нет моделей операций. Там есть концептуальные модели операций. Очень похоже на определение понятия, и так оно и есть. Квадратик в BPMN моделирует не операцию, а понятие об операции. Диаграмма в нотации BPMN – концептуальная модель, а не модель объекта.

Класс конструкций, в котором элементы принадлежат одному классу


Конструкция такого рода состоит из элементов, относящихся к одному классу в то время, как над-объект относится к другому классу.

Например, конкретная будка состоит из конкретных четырех досок. Понятно, что объем будки не равен сумме объемов досок, поэтому ввести меру не удастся. Пример из описания активности: операция состоит из участников. Мы воспринимаем участников как материальные, либо как функциональные объекты, но не воспринимаем их как операции. В данном случае я опять хочу подчеркнуть, что мы говорим не о концептах операций, модель которых можно найти в нотациях BPMN, а об операциях, модели которых можно найти на диаграммах Ганта. Например, участниками операции «забить гвоздь», которая состоялась в 9-00 13-го мая 2011 года были: Сидоров, молоток, гвоздь, две доски, табуретка, лампа, стол, помещение.

Если кто-то попытается сказать что-то подобное об объектах, созданных в нотации BPMN, то это должно звучать так: каждая операция данного типа, модель которого (типа) мы видим в нотации BPMN, имеет участников перечисленных далее типов:… Например, в каждой операции типа «забить гвоздь» будут участвовать объекты следующих типов: «исполнитель», «гвоздь» и «молоток». Правда, есть исключения. Например, иногда в определении типа операции можно встретить ссылку не на тип участника, а на модель конкретного ресурса. Тогда речь идет о том, что в любой операции данного типа участником будет конкретный объект, а не объект какого-то типа, например, в каждой операции класса «получить согласование на постройку здания» указан участник: администрация города Москвы (объект).

Все объекты конструкции принадлежат разным классам


Следующий кейс наиболее распространен: объекты над- и под- относятся к разным классам. Например, трансформатор состоит из сердечника и двух обмоток. В применении к описанию активности можно рассмотреть предыдущий пример в разрезе того, что исполнители относятся к разным классам. Сидоров – к людям, молоток – к инструментам, а гвоздь – к материалам. Все зависит от того, как мы классифицируем объекты.

Описание конструкции без перечисления ее элементов


Следующий кейс посложнее. Мы говорим о конструкции, в которой нет перечисления ее элементов, но есть упоминание о типах объектов, из которых состоит конструкция. Например, здание состоит из кирпичей. Конкретное здание состоит из объектов типа «кирпич». Нет перечисления конкретных кирпичей, но есть указание типа, к которому относятся эти объекты. Моделирование таких конструкций довольно затруднено в современных языках моделирования. Дело в том, что для моделирования таких утверждений нужны предикаты второго порядка. Но языков, которые были бы заточены для моделирования предикатов второго порядка, нет. Причина этого в том, что, если модель, созданная в предикатах первого порядка вычислима, то модель в предикатах второго порядка — нет. То есть, на основе фактов, записанных в предикатах первого порядка, можно строить однозначные выводы. Если же модель построена в предикатах второго порядка, то выводы могут быть только с некоторой долей вероятности. Например, если мы говорим, что лес состоит из осин на 60 процентов и из берез на 30 процентов (остальные деревья относятся к другим породам), то сказать наверняка о породе произвольно взятого дерева в этом лесу можно будет только с некоторой долей вероятности.

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

Примеры


Можно подумать, что такой кейс и правда редкий, однако, моделирование активности предприятия напрямую связано с моделированием такого рода отношений между объектами. Например, мы моделируем конструкцию бизнес-функции. Есть три распространенных способа представить ее конструкцию (парадигмы конструкции). Первый способ был упомянут выше – над-функция представляется в виде конструкции, состоящей из под-функций (нотация IDEF0). Второй способ – конструкция функции состоит из набора ее участников (например, функция продаж состоит из продавца, потенциального покупателя и товара). Этот тип конструкции моделируется в нотации IDEF0 при помощи стрелок, входящих в квадрат «снизу». Третий тип конструкций соответствует текущему кейсу: функция состоит из операций определенного типа. Например, функция продаж состоит из операций по продаже товаров. Функция – объект, операция – объект. Операции по продаже – объекты одного типа. То есть тезис о том, что здание состоит из кирпичей похож на тезис: функция состоит из операций определенного типа. Языка для моделирования такого рода утверждений нет. Как я уже говорил, причина в том, что это утверждение в предикатах второго порядка. Еще один пример такого рода утверждений: кристалл состоит из атомов. Через аналогию с кристаллом мы перейдем к самому сложному для понимания кейсу, связанному с описанием конструкций.

Конструкция из ячеек с объектами разных типов


Пусть есть кристалл. До сего момента мы не рассматривали связи между элементами конструкции как часть конструкции. С этого момента связи нам понадобятся. Понятно, что разделение объекта на части требует описания связей между элементами. При делении на перечисляемые элементы мы можем перечислить и все связи между элементами. Однако, при делении на объекты одного типа без перечисления всех элементов возникает вопрос о том, как описать связи между элементами конструкции? Например, в здании большинство кирпичей имеют связи с другими кирпичами через кладочный раствор. Тогда мы говорим, что здание состоит из кирпичей, каждый кирпич имеет связи с соседними кирпичами. При этом 60 процентов кирпичей имеют 5 соседей, 30 процентов – 4 соседа, 5 процентов – 3 соседа и 5 процентов- 2 соседа. Таким образом, для любого выбранного кирпича из первой группы найдется пять, которые тоже являются частью здания и которые связаны с выбранным кирпичом через кладочный раствор. Теперь напишем то же утверждение относительно бизнес-функции. Функция по продаже состоит из операций по продаже. Предположим, что операции следуют одна за другой. Тогда мы можем сказать, что для любой операции существует предшествующая ей операция того же типа и существует последующая ей операция того же типа. Так мы смоделировали тип связи в конструкции, которая описана типами объектов, но не объектами. Теперь представим себе кристалл более сложного строения, в котором участвуют атомы разных элементов и расположены в сложной кристаллической решетке. Как описать строение такого кристалла? Те, кто занимается описанием и классификацией кристаллов, знают, что способов описания такого рода решетки – бесконечно много. Например, пусть есть одномерная цепочка атомов двух разных типов А и В, чередующихся друг с другом с шагом в один ангстрем. Можно сказать, что кристалл состоит из ячеек, каждая из которых состоит из атомов типа А и В, расположенных через 1 ангстрем, сдвиг между ячейками — 2 ангстрема. (Также верным будет утверждение о том, что кристалл состоит из ячеек, каждая из которых состоит из атомов типа А и В, расположенных через 3 ангстрема. Сдвиг между ячейками – 2 ангстрема и ячейки пересекаются в пространстве. Каждая такая регулярная структура видна на ренгенограмме кристалла. Чтобы ограничить количество вариантов обычно берут наиболее близко расположенные атомы). С другой стороны, можно сказать, что кристалл состоит из атомов двух типов: А и В. Это утверждение похоже на предыдущее, но отличается от него тем, что в первом случае конструкция кристалла состоит из ячеек, а конструкция ячеек, в свою очередь, — из атомов. Во втором случае конструкция кристалла напрямую состоит из атомов. Другой пример: пусть в функции продаж выполняются два типа операций: согласование условий и отгрузка товара. Можно сказать, что функция состоит из ячеек, в каждой из которых есть операция по согласованию условий и операция по отгрузке товара. А можно сказать: функция состоит из операций по согласованию условий и операций по отгрузке товаров. Это два разных утверждения.

Выбор последовательности элементов в типовой ячейке


Посмотрим на последовательность операций: АВАВАВАВ… Мы видим, что цепочка бесконечная и начинать выделение ячеек можно с любого места. Например, сначала птица Феникс родилась из пепла, затем она сгорела, затем родилась из пепла, затем сгорела. Или: сначала птица Феникс сгорела, затем родилась из пепла, затем снова сгорела. Ячейку можно начать в любом месте. Поэтому, чтобы иметь основания для начала, выбирают некоторое условие, которое выполняется для всех операций ячейки. Например, все операции относятся к одной сделке. Условия могут быть любыми, и в общем случае ячейка может начинаться с операции любого типа. Аналитики обычно этого не знают и, чтобы как-то оправдать выбор начальной операции в ячейке, гипнотизируют себя мыслями о том, что цепочка должна иметь мистическую цель. Вместо того, чтобы сказать, что операции в цепочке могут быть объединены в группу по какому-то (в общем случае произвольному) признаку, аналитики придумывают алхимические формулы. Более того, эта алхимия присутствует в определении процесса.

Моделирование предикатов второго порядка при помощи OWL


Стандарт OWL Full позволяет моделировать высказывания второго порядка благодаря тому, что в роли предметов высказывания в нем могут выступать как объекты, так и классы (множества объектов) и даже типы связей, которые могут существовать между объектами (предикаты). Все эти виды сущностей для OWL являются узлами графа, ребра в котором – конкретные утверждения.
Высказывания второго порядка, записанные в виде OWL, как правило, не обеспечивают вычислимости (возможности получения выводов средствами машин логического вывода). Однако не стоит считать это препятствием для реализации автоматизированных систем. В большинстве случаев работа с OWL-моделями происходит в прикладном программном коде и учитывает особенности и ограничения конкретной задачи, а не претендует на «вычисление всего». На практике полностью полагаться на стандартный логический вывод не получается даже при работе даже с высказываниями первого порядка – при большом объеме и разнообразии данных такие задачи требуют слишком больших вычислительных ресурсов.
Существует несколько способов моделирования высказываний о классах на языке OWL. Один из наиболее практически удобных способов состоит в введении специальных классов, объекты которых представляют собой высказывания о классах или предикатах. Приведем пример (для не знакомых со стандартом запишем его на естественном языке):
  • Существует класс «Здание»
  • Существует класс «Кирпич»
  • Существует класс «Требование к составу объекта»
  • Существует связь «Относится к объектам класса» между объектами класса «Требование к составу объекта» и классами
  • Существует связь «Должны иметь в составе» между объектами класса «Требование к составу объекта» и классами
  • Существует объект A, относящийся к классу «Требование к составу объекта», имеющий следующие связи:
  • Требование А – относится к объектам – класс «Здание» (это высказывание можно записать как предикат: Относится к объектам (Требование А, класс «Здание») ).
  • Требование А – должны иметь в составе – класс «Кирпич»

Можно обобщить функционал требований – изъять из названия класса слова «… к составу объекта», а в число связей класса «Требование» включить указание на предикат, к которому оно относится («Состоит из», «Расположен в»). Таким же способом можно исключить из названия класса и модальность («должен», «может» и др.). Тогда класс будет называться даже не «Требование», а «Утверждение» или «Аксиома». Это добавит полноценный второй уровень к структуре модели, представленной в виде графа. Выбор уровня формализма зависит исключительно от решаемой прикладной задачи.
Автоматизированная система считывает и интерпретирует приведенные выше высказывания, например, таким образом: в составе каждого объекта класса «Здание» должен присутствовать хотя бы один объект класса «Кирпич». Можно и не опускаться на уровень конкретных кирпичей, интерпретируя высказывание по-другому – как утверждение о том, что здание в принципе состоит из объектов класса «Кирпич» (каких именно – не известно). В таком случае могут использоваться другие высказывания о классе «Кирпич» – например о том, что кирпичи (то есть все объекты класса «Кирпич») имеют определенную плотность, массу, теплопроводность и др. Из этого программа сможет сделать вывод о свойствах здания.
В любом случае эта логика – способность интерпретировать объекты класса «Требование к составу объекта» как требования – должна быть заложена в коде, что допустимо в рамках решения конкретных прикладных задач.
Можно пойти немного другим путем – ставить классы не только на вторую позицию в предикате, но и на первую, то есть делать высказывания о классах как таковых:
  • Существует класс «Здание»
  • Существует класс «Кирпич»
  • Существует связь (предикат) «Должен включать объекты, имеющие в составе только объекты класса» между классами и классами
  • Класс «Здание» – должен включать объекты, имеющие в составе только объекты класса – класс «Кирпич»

Интерпретация утверждений такого рода, конечно, тоже остается на прикладном программном обеспечении.
Заметим, что некоторые утверждения о классах можно делать и в рамках более строгого формализма OWL, не теряя вычислимости модели при помощи стандартных машин логического вывода. Это достигается использованием ограничений значений свойств (кардинальностей) с квантификаторами: some, only, exactly и др. Еще один способ записи нашего примера таков:
  • Существует класс «Здание»
  • Существует класс «Кирпич»
  • Существует связь «Состоит из»
  • Класс «Здание» есть подкласс анонимного класса, для объектов которого значением связи «Состоит из» являются объекты класса «Кирпич»

При сохранении такого высказывания в граф образуются так называемые «пустые узлы». В данном случае пустым узлом будет анонимный класс, для которого задано ограничение. В соответствии с замыслом стандарта OWL, пустые узлы представляют собой утверждения с квантором существования – то есть, в нашем случае, утверждение о том, что существуют такие объекты, которые состоят из кирпичей. Подклассом таких объектов являются здания.
Такая конструкция довольно громоздка, а правила логического вывода – медленны и капризны в применении, поэтому на практике обычно проще обойтись первым или вторым способом.
Заметим, что все это время мы обсуждали высказывание «Здание состоит из кирпичей», смысл которого с логической точки зрения не слишком точен. Не понятно, что мы хотели сказать:
  • Что все, что состоит из кирпичей, есть здание,
  • Что здание должно состоять только из кирпичей,
  • Что здание состоит в том числе и из кирпичей,

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

Смешанные конструкции


Вернемся к конструкции дерева и посмотрим на тезис: дерево состоит из ветвей, ствола и корней. Этот тезис говорит о том, что конструкция дерева состоит из объекта – ствола и объектов двух разных типов — ветвей и корней.

Пример псевдоконструкции


Рассмотрим частый случай, когда строится диаграмма в нотации IDEF0. Затем одна из функций на этой диаграмме, как часто говорят, «декомпозируется» на диаграмму в нотации BPMN. Это можно встретить в упомянутой мной ранее программе Businessstudio. Поскольку функция – это объект в предметной области, а диаграмма в нотации BPMN – это модель понятия, то мы видим, что происходит ошибка: функция делится на понятие. Этого быть не может. Функция может делиться на ячейки с операциями. В каждой ячейке несколько операций, связанных между собой темпоральными связями. Для всех ячеек вводится понятие ячейки подобного типа. Это понятие моделируется в нотации BPMN. Так будет правильно.

Корреляция конструкций в двух разных парадигмах


Часто встречающийся способ описания объекта выглядит так: рассмотрим конструкцию объекта в двух разных парадигмах, например в парадигме «внешнего» и «внутреннего» строения. Тогда мы пойдем делить объект на части двумя совершенно разными способами. Например, здание будем делить с одной стороны на помещения, а с другой — на технические подсистемы. И вот тут срабатывает очень важный фактор, который мы, как правило, не замечаем, но он работает на уровне интуиции. Мы делим объект на части в двух разных парадигмах таким способом, что между элементами конструкций в двух разных парадигмах тоже можно установить соответствие. Например, после деления здания на помещения и подсистемы мы можем сказать, что и помещения можно поделить на части — части тех подсистем, которые находятся в этих помещениях. То есть, деление на части в двух разных парадигмах интуитивно делается зависимым друг от друга образом. И это отнюдь не очевидно. Современные стандарты инженерного проектирования основаны именно на таком делении объекта, хотя, я уверен, что в них нет прописанного требования о подобном ограничении на моделирование.
Tags:
Hubs:
+6
Comments 52
Comments Comments 52

Articles