Пользователь
0,0
рейтинг
16 декабря 2014 в 17:51

Разработка → Информационные объекты или причина одного заблуждения

Введение


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




Термины


Сразу замечу, что я не претендую на их правильность. Беда в том, что мне не удалось найти согласованных определений модели и информации ни в одном из словарей. Поскольку область психических функций человека — не моя стихия, то я, скорее всего, не знаю точных определений этих терминов. Однако мне важно было подчеркнуть ту мысль, что информация и модель – это то, что существует в воображении у субъекта, а в объектной реальности – только их представления. Поэтому я ввожу рабочие определения, не претендуя на их точность.

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

Примеры информационных объектов


Модели существуют только в сознании людей, но обмен моделями происходит, как правило, при помощи физических объектов, исполняющих роль информационных (мы рассматриваем общепринятые европейские способы передачи информации, и не рассматриваем мистические). Эти физические объекты называются представлениями информации, или представлениями модели.

Напомню, что мы работаем в 4-Д пространстве, где объекты существуют во времени, а время не существует без объектов. Примером информационных объектов могут быть Договор, Билет, Рекламный щит, Купюра, Книга, Электрические напряжения на выводе контактной группы, Произнесенная речь, Фильм. Например, речь – это звуковые колебания, поэтому тоже является физическим 4-Д объектом. С каждым годом количество физических объектов, которые были созданы с единственной целью — нести информацию, становится все больше и больше. В первобытном обществе количество информации, передаваемой от субъекта к субъекту, было небольшим. Сейчас это огромный поток. Однако даже сейчас природа информационных объектов для многих остается тайной. Я предлагаю попробовать разобраться с этим вопросом.

В мире мы работаем исключительно с информационными объектами, которые есть лишь представления моделей, но не сами модели. Это отличие ввел в употребление стандарт ИСО 15926, чтобы различить модель в головах от ее представления в виде материального носителя. Хотя очень часто модель в головах и информационный объект мы не различаем и называем одним именем – модель.

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

Со всем этим пересечением объектов должна была справиться логическая парадигма, которая пришла на смену Аристотелевской логике.

Другой пример. Пусть есть договоренность между двумя юридическими лицами. Моделью этой договоренности является модель в головах у тех, кто участвовал в достижении этой договоренности. Представлением этой модели является бумажный документ, на котором стоят подписи должностных лиц. Таких бумажных документов может быть множество: как минимум два — по одному на каждую сторону. Вопрос: эти два бумажных документа есть один объект, или два? Вопрос, кажущийся простым, оказывается очень сложным для современных аналитиков. Мы вернемся к нему чуть позже.

Что хранится в базе данных?


Информационный объект – это объект, который хранит информацию об объектах (в том числе об информационных объектах). В базе данных хранятся только информационные объекты. Эти объекты являются объектами в виде намагниченных доменов, например. Они призваны хранить информацию о других объектах. О чем хранят информацию те объекты, которые в базах данных называются договор и накладная? О договорах и о накладных? Тогда это будет значить, что в системе хранятся информационные объекты, которые хранят информацию о других информационных объектах – договорах и накладных. Или о реальных договоренностях и о реальных поставках? Тогда это будет значить, что в системе хранятся информационные объекты, которые хранят информацию о реальных объектах: договорах и поставках. О чем они на самом деле хранят информацию? Разобраться в этих вопросах очень непросто. Возможно, в одной из статей я расскажу про то, как информация о разных частях предметной области, перемешиваясь с информацией о других ее частях и информацией об информационных объектах, «размазывается» по структуре данных. И о причинах, по которым это происходит.

4 модели для создания информационного объекта


Давайте посмотрим, какие модели нам нужны для создания модели договоренности (у себя в голове).

  1. Модель договоренности опирается на отраслевые нормы и правила. В этих правилах зафиксированы те термины, которые необходимо использовать при создании модели договоренности, те события, которые необходимо оговорить сторонам (поставку деталей), и те события, которые наступят независимо от того, будут они прописаны в договоре или нет (подписание накладных, например). Эти нормы – модель 1 (ее еще можно назвать контекстом). Этими моделями владеют юристы и бухгалтера. Представлены они в законодательных актах.
  2. На основе модели 1 мы создаем модель 2 — модель самой договоренности.
  3. Теперь необходимо модель договоренности зафиксировать в виде представления, то есть, на материальном носителе. Какие модели необходимо знать, чтобы сделать это? Для этого нам понадобится иметь модель, которая описывает, как модель договоренности должна быть представлена. Эту информацию можно найти в специальной нормативной документации. Это – модель 3.
  4. И четвертое – надо знать, как мы будем различать договора, которые моделируют одну договоренность (Различные экземпляры договора) – модель 4.

Имея эти четыре модели, мы можем создать конкретное представление модели 2 конкретной договоренности (экземпляр договора). Используемые термины, связи между ними, события по умолчанию будут взяты из модели 1, юридические реквизиты и прочие данные – из модели 2, структура текста и его оформление – из модели 3, учет подписанных экземпляров – из модели 4. Итого 4 модели необходимы, чтобы создать один экземпляр договора. Две из них относятся к модели предметной области. А две – к представлению модели. Такое деление на модели является универсальным для представления любого информационного объекта. Если у вас есть информационный объект, ищите 4 модели, которые лежат всегда где-то рядом.

Разница между терминами объект и экземпляр объекта


Так, все-таки, разные бумажки с печатями – это разные объекты или одинаковые? Последнее время я слышу такой ответ: это один объект, но экземпляры этого объекта – разные! Причину, по которой произошла деформация, приведшая к такого рода ответу, нам следует выяснить.
История:

Сидит напротив меня бизнес-аналитик и просто человек с улицы. Я показываю аналитику операцию: подношу ко рту чашку чая и делаю глоток. Спрашиваю аналитика: «Можно ли назвать это операцией?» — Да, конечно. Тогда я повторяю те же действия и спрашиваю аналитика: Можно ли назвать и это действие операцией? Ответ утвердительный. Я спрашиваю: а это разные операции, или одна? Аналитик бодро отвечает: одна, конечно! Операция одна, а экземпляров ее много. Человек с улицы немного двинул бровь. Тогда я спрашиваю далее: Перед нами 100 спортсменов все как один в одних трусах и майках. Это один спортсмен, или много спортсменов? Ответ: много спортсменов? А что у них общего спрашиваю я. Внешний вид у них — общий, был ответ. Хорошо, а почему тогда операция-то одна? Аналитик задумался. Я поясняю: операций много, но внешний вид у них одинаковый! Правильно? Сомнения… Тогда я продолжаю: у них общее описание, а операции разные. Ну конечно! Описание операции — одно, а операций, удовлетворяющих этому описанию — много.

Если задуматься, то ответ аналитика кажется стороннему наблюдателю нелепым. Проверено! Однако к этой трактовке часто прибегают современные аналитики, и это стало похоже на заблуждение, принявшее массовый характер. Я все чаще слышу тезис о том, что надо различать термины договор и экземпляр договора, например. При этом авторы этих тезисов так и не смогли мне объяснить, чем эти термины отличаются. Они намекали, что два термина указывают на совершенно разные объекты, но в какой парадигме термины экземпляр договора и договор указывают на разные объекты, мне так и не сказали. Я считаю это очень серьезным заблуждением и попытаюсь объяснить причины его возникновения.

В логике Аристотеля, у которого мы позаимствовали слово экземпляр, термины рыба и экземпляр рыбы – это обозначения одного и того же объекта. При этом я сознательно не говорю, что экземпляр – это термин. Слово экземпляр в логике Аристотеля неотделимо от второго слова, образую вместе с ним неделимый термин. Однако, за пределами логики Аристотеля термины рыба и экземпляр рыбы, указывая нам на один и тот же объект (рыбу), тем не менее, отличаются друг от друга. Вопрос чем?

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

Пусть есть высказывание: «я держу экземпляр книги «Три мушкетера». Оно интерпретируется следующим образом:

  • Есть тип книг «Три мушкетера», и есть конкретный экземпляр этого типа объектов – конкретная книга. Слово экземпляр дает нам строгое указание на используемый нами контекст. Контекстом будет логика Аристотеля, или филологи используют термин интенсиональный контекст.


Однако данное высказывание может быть сокращено до следующего: «Я держу книгу «Три мушкетера». Это высказывание может интерпретироваться уже двумя способами:

  • Можно сказать, что объект, который я держу в руках, имеет свойство. Это свойство объекта — быть книгой под названием «Три мушкетера (логика Аристотеля, или интенсиональный контекст). Данная трактовка совпадает с той трактовкой, которую порождает термин экземпляр книги.
  • А можно сказать, что перед нами объект (элемент) класса книг «Три мушкетера». Такое высказывание говорит о том, что мы находимся в рамках логической парадигмы или, как говорят филологи, в экстенсиональном контексте.

Вывод: Термин ЭКЗЕМПЛЯР ОБЪЕКТА указывает нам на интенсиональный контекст явно, а термин ОБЪЕКТ предполагает, что контекст мы вольны выбрать сами (интенсиональный, или экстенсиональный).

Один объект, или много?


Вернемся к вопросу о том, что есть разные бумажки с надписью договор? Ответы, как мы видели, могут быть такими:

  1. это два разных договора,
  2. это один договор, но экземпляры его разные.

Если аналитик настаивает на второй интерпретации, я задаю вопрос: где, в какой парадигме существуют объекты и их экземпляры? Ответить на этот вопрос аналитик не может, поскольку такой парадигмы не существует. Однако в некоторых книгах существует путаница в терминах, благодаря которой такое выражение появилось на свет и активно распространилось.

Мне приходится проводить экскурс в историю и объяснять аналитику, что термин экземпляр связан с термином тип. И что термин экземпляр книги имеет такую трактовку: существует тип книг, и есть конкретный экземпляр этого типа книг, — конкретная книга. И нет такой трактовки: есть объект книга, и есть ее экземпляр.
Напомню: мы помним, что тип у Аристотеля – это набор параметров. Экземпляр – это значения этих параметров.

После того, как аналитик решает продолжить исследование, мы продолжаем двигаться с ним, полагаясь теперь только на логику.

Мы можем также считать, что существуют одновременно два термина: экземпляр договора купли-продажи и экземпляр договора купли-продажи от 30-го июня. Понятно, что одна и та же бумажка может быть экземпляром договора купли-продажи и экземпляром договора от 30-го июня. Это значит, что мы допустили существование двух типов, к которым может относиться один объект реального мира! Но этот парадокс был одним из тех, который в итоге привел к появлению теории множеств. Аристотелевская модель не смогла дать ответ на множественность типов.

Еще один пример рассуждений
Можно переформулировать вопрос и так: какими параметрами обладает тот тип договоров, на который ссылается аналитик, употребляя термин экземпляр договора? Тогда я использую следующий сценарий опроса:
Далее я задаю второй вопрос: какими параметрами обладает тот тип договоров, о котором упомянул аналитик, предлагая на выбор:

  1. Первый тип относится только к тем объектам, которые зафиксировали информацию о конкретной договоренности. Он содержит параметр «Чей экземпляр?» (подрядчика, заказчика). Пример использования данного типа: экземпляр договора от 30-го апреля.
  2. Второй содержит параметры: дата подписания, предмет соглашения, юридические лица, и так далее. Пример использования данного типа: экземпляр договора купли-продажи.

Если аналитик дает первый ответ, то я задаю вопрос: допускает ли он существование такого типа договоров, который включает в себя все экземпляры всех договоров купли-продажи? Если да, то, как мы отличаем в разговоре, о каком типе идет речь? И получается, что один и тот же экземпляр может относиться к двум разным типам договоров? Но это модернизация Аристотелевской логики, про которую мы ничего не знаем. Получается, что объект может быть одновременно и машиной и кораблем. На это логика Аристотеля не смогла дать ответ, и потому нам пришлось изобретать теорию множеств.
Если аналитик отвечает вторым образом, я задаю второй вопрос: Содержит ли упомянутый тип параметр «Чей экземпляр?» Ответов может быть два:

  1. Да, содержит
  2. Нет, не содержит. Это самый распространенный ответ, поскольку во всех системах документооборота и учета именно этот тип активно поддерживается.

Если я получаю первый ответ, то я задаю вопрос: а что есть тот тип, экземпляром которого является экземпляр договора от 30-го июня?
Если я получаю второй ответ, то я уточняю, а что есть объекты, которые содержат этот параметр? Ответ вы слышали: объект один, а экземпляров его много, что возвращает нас к вопросу о логичности и корректности такого тезиса.


Пример представления модели предметной области


Давайте посмотрим, как обычно аналитики моделируют стандартные предметные области. Например, такую:



Мы видим, что все множество вооружений делится на классы. Каждый класс вооружений, в свою очередь, делится на подклассы. Мы видим, что класс подлодок – есть подмножество класса вооружений, а класс Акула – есть подмножество класса подлодок.
Часто встречающаяся реализация этой модели в виде таблиц такая:



Таблица 1 моделирует подклассы класса оружие. Таблица 2 – подклассы класса подводных лодок. Связь между таблицей 1 и таблицей 2 моделирует специализацию вооружений. Таблица 1 моделирует подводные лодки, а связь между таблицей 2 и таблицей 1 моделирует классификацию подводных лодок. (Термины специализация и классификация взяты из логической парадигмы и не случайны). Понятно, что одному подклассу вооружений «подводная лодка» соответствует много подклассов класса подводных лодок и понятно, что одному подклассу подводных лодок может принадлежать много подводных лодок, что обозначено «Вороньей лапкой» на конце связи между таблицами. Принято считать, что структура таблиц и есть модель предметной области, но, как вы видите, информации в структуре таблиц намного меньше, чем в модели предметной области.
Эта модель очень похожа на другие, подобные ей:



Модель предметной области в парадигме Аристотеля


Вспоминая то, о чем я говорил в статье о том, что в Аристотелевской логике таблица – есть описание типа объектов, а запись в таблице – это описание объекта, нарисуем модель предметной области в парадигме типов и экземпляров. (В этой парадигме чаще всего происходит обсуждение предметной области и именование таблиц). Для этого применим формальный подход, который я озвучил в статье. То есть таблица – обозначает тип объектов, а записи в ней – экземпляры.



Полученная модель выглядит так:



Таблица 3 моделирует тип подводных лодок. Запись в таблице моделирует экземпляр подводной лодки. Связь с записью в таблице 2 моделирует тот факт, что подводная лодка принадлежит определенному классу подводных лодок. Но с таблицей 2 мы не можем определиться. Что за тип объектов моделирует эта таблица? Экземпляр чего есть запись в этой таблице? Терминов в Аристотелевской логике для этих сущностей не предусмотрено. Мы можем попытаться придумать сами название тому типу объектов, которые хранятся в таблице 2, например: тип классов. Тогда Класс Акула будет экземпляром класса. (Замечу, что экземпляр класса указывает на класс, а не на объект класса, как некоторые могли бы подумать. На объект класса указывает ЭЛЕМЕНТ КЛАССА, а не ЭКЗЕМПЛЯР КЛАССА!). Полученная модель выглядит теперь так:



Проблема в том, что одновременно в одной модели мы видим и типы объектов и классы. (Я иногда встречал таблицы, озаглавленные: типы классов, виды типов, виды классов и так далее…) Надо понимать, что типы существуют только в Аристотелевской логике, а классы – только в логической. И они не смешиваются. Поэтому класс Акула нам следует переименовать в тип подводных лодок Акула. Риторика была бы такая: наряду с экземпляром подводной лодки у нас появляется экземпляр Акулы, где под Акулой понимается тип подводных лодок. Однако в данной статье я предлагаю остановиться и посмотреть, что будет с другими моделями – собак и сварных швов.

Ограничения парадигмы Аристотеля


В случае с собаками таблица 2 – есть описание типа пород. И в случае со швами – типа типов. И вот тут засада возникла. Представляете: на совещании аналитиков мы обсуждаем структуру таблиц и у нас возникают термины: тип типов. Это мало кто поймет. Это слишком сложно для обыденной речи и обыденного понимания. Лично я, если встречал такой термин, то крайне редко. Проблема в том, что Аристотель не проработал терминологию для описания структур сложнее классов, например, класса классов. Это сделала теория множеств много позже. Но наши аналитики пока не знают о существовании теории множеств и пытаются выкрутиться в рамках Аристотелевской логики. Для этого они меняют риторику. Новая риторика была заимствована из описания информационных объектов. В описании информационных объектов задолго до возникновения проблемы с типами типов, было найдено «решение». «Решение» возникло само собой, поскольку никто не задумывался над этим.

Постановка задачи


Давайте посмотрим, как выглядит оно в применении к сварным швам. Сначала была такая структура таблиц, описывающая такую модель предметной области:



В такой модели шов №234 можно назвать двумя способами: экземпляр сварного шва и экземпляр стыкового шва. Оба эти термина являются корректными терминами, и объяснить их удобно в рамках теории множеств. Понятно, что шов №234 принадлежит классу сварных швов. Понятно, что шов №234 принадлежит также классу стыковых швов, являющимся подклассом сварных швов:



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

«Решение»


Чтобы избавиться от столь замысловатых терминов, иногда рисуют вот такую структуру:



Теперь у нас в разговорной речи все нормально. Можете проверить.
Конструкция на первый взгляд кажется разумной, но ровно до тех пор, пока не нарисуем модель терминов:



Теперь у нас появилось несколько сюрпризов:

  • Запись «Стыковой шов» моделирует (сюрприз!) нет, не шов! Он моделирует целый класс швов!
  • Таблица СВАРНЫЕ ШВЫ содержит (сюрприз!) не информацию о сварных швах, нет! Она содержит информацию о классе сварных швов!
  • ТИП сварных швов не имеет никакого отношения к типу сварных швов.
  • ЭКЗЕМПЛЯР сварного шва — не есть экземпляр сварного шва.
  • ЭКЗЕМПЛЯР стыкового шва — не есть экземпляр стыкового шва.
  • Два термина «Экземпляр сварного шва» и «сварной шов» до этого момента указывали на один объект – сварной шов. Однако теперь я иногда слышу от некоторых аналитиков, что надо различать сварной шов и экземпляр сварного шва, как будто это разные вещи!

Такая конструкция является самопальной и ошибочной. Причина в том, что она не опирается ни на одну из онтологий и являет из себя подмену понятий. Как я уже говорил, в парадигме Аристотеля термины экземпляр стыкового шва и стыковой шов указывают на один и тот же объект реального мира – на конкретный стыковой шов. В нарисованной структуре объект справочника Стыковой шов указывает не на объект, а на класс объектов!
В результате некоторое количество аналитиков начинают мыслить искаженным способом: они перестают различать различные объекты, называя их одним термином: Стыковой шов. Риторика их следующая: есть один объект «Стыковой шов» и есть различные его ЭКЗЕМПЛЯРЫ. У них в сознании есть один спортсмен и множество его ЭКЗЕМПЛЯРОВ! Надо понимать, что под термином ЭКЗЕМПЛЯР эти аналитики понимают нечто такое, что не было ведомо ни Аристотелю, ни кому бы то ни было еще. Это самопальный термин, который выглядит ужасно с любых точек зрения: с логической и лингвистической точек зрения. То есть, ЭКЗЕМПЛЯР стыкового шва для них обозначает: есть объект СТЫКОВОЙ ШОВ и есть его ЭКЗЕМПЛЯРЫ. Хорошо, что Аристотель этого не слышит!

Другой пример подобного «Решения»


Теперь приведем пример подобного рода моделирования, которое мы встречаем повсюду. Возьмем наши любимые договора. В любой системе мы найдем такой справочник:



Каждая запись в этом справочнике моделирует… А что она моделирует? Название предполагает, что запись в этом справочнике либо является договором, либо моделирует договора. Запись в базе не содержащая подписи сторон, не может быть договором. Поэтому здесь хранится информация о договорах, то есть, информация о других информационных объектах. Мы знаем, что одна запись в базе данных соответствует множеству экземпляров договора от 30-го июня, отличающихся тем, кому они принадлежат: Заказчику или Подрядчику. Давайте попробуем нарисовать модель терминов:



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

Правильное решение


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



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

Решение в логической парадигме


В теории множеств есть три класса объектов: объекты, классы и классы классов, а также классы отношений между объектами и классами. Всех возможных конструкций я перечислять не буду, но по мере необходимости буду давать пояснения.
Пусть у нас есть множество всех договоров (в смысле каждая бумажка – отдельный договор). Каждый договор принадлежит классу договоров.



Тогда говорят, что договор связан с классом договоров связью классификация.
Класс договоров купли-продажи есть подмножество всех договоров.



Связь между классом всех договоров и классом договоров купли-продажи – называется специализация.



Класс договоров купли-продажи, класс договором аренды и проч. – есть объекты множества, которое есть множество всех подмножеств класса договоров.



Множество всех подмножеств класса договоров – есть класс классов, и связывает его с классом всех договоров, классом договоров купли продажи связь классификация.
Среди всех подмножеств множества договоров можно выделить те подмножества, которые относятся к одной сделке. Объединив эти подмножества в один класс, назовем его подклассы класса договоров. То есть, договора одного класса представляют модель одного объекта – одной сделки.



Теперь мы готовы нарисовать структуру таблиц и дать им имена.
Модель предметной области в логической парадигме выглядит так:



А структура таблиц, реализующая эту модель, такая:



Как это будет звучать на практике?

  • Таблица 3 моделирует класс договоров и содержит модели договоров.
  • Таблица 2 моделирует класс классов договоров, относящихся к одной сделке, и содержит модели классов договоров, относящихся к одной сделке.
  • Связь между записями таблиц моделирует связь классификация между классами договоров, относящихся к одной сделке, и договорами.

Замечу, что диаграммы отношений между сущностями предметной области в логической парадигме рисуются просто, однозначно и демонстрируют полноту. Смысл их легко читается, если помнить и знать смысл названий и обозначений. Данные модели демонстрируют полноту в отличие от моделей предметной области, сделанных в виде ER–моделей. Для моделирования одной и той же информации можно построить разные ER-модели. Это хорошо видно, когда есть модель предметной области в логической парадигме. Становится очевидным произвольность выбора таблиц для хранения информации о предметной области.

Чтобы завершить разговор об информационных объектах и о их моделировании, я предлагаю обратить внимание на «размазанность» информации об объекте предметной области по структуре данных. Это дает нам основания говорить, что нет однозначного соответствия между объектами предметной области и объектами в системе. Более того, часто одна запись в таблице хранит одновременно данные об объекте и о классе объектов! Всего этого лишена логическая модель данных. Поэтому она иногда называется моделью данных в последней нормальной форме.

Еще одна пострадавшая предметная область


В последнее время я все чаще слышу тезис о том, что надо различать процесс и экземпляр процесса. После того, как вы прочитали пост, у вас должно закрасться сомнение в истинности этого утверждения. Возможно, я когда-нибудь напишу причины этого заблуждения. Причины эти не связаны с неправильным пониманием того, что такое информационный объект. Причина в неправильном понимании того, что такое процесс. Но это совсем другая история…
Марк Мельник @maxstroy
карма
15,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (23)

  • +1
    На мой взгляд присутствует некоторое смешение понятий.
    На примере договоров — есть разные сущности:
    * Договор как совокупность договорённостей (соглашение) — согласие сторон принять на себя определённые обязательства (не буду давать более корректное но длинное определение — к сути не относится)
    * Договор как документ — юридически значимое (или не очень) подтверждения сторонами того факта, что они пришли к определенным соглашениям.

    Договор-документ может быть утрачен, но этот факт, сам по себе, не влечёт за собой отмену обязательств сторон по Договору-соглашению.
    Соответственно, в самом простом варианте — договорённость одна — документов много (экземпляры сторон и пр.)
    В зависимости от назначения системы, можно развивать учёт сколь угодно вглубь и вширь, например на основании утраты экземпляра Договора-документа можно оценивать риски увеличения расходов при принуждении контрагента к выполнению своих обязательств по Договору-соглашению.
    Или интересен путь прохождения Договора-документа внутри предприятия при его утверждении или списания его в макулатуру.
    Или Договор-соглашение меняет состав обязательств, что может найти отражение в виде соответствующих Договоров-документов (приложений, доп. соглашений и пр) а может и не найти.
    • 0
      Спасибо! Да, это одна из спаек в головах у аналитиков — неразличение договоренности (согласия) и информационных объектов (договоров), несущих информацию об этой договоренности. Всего таких различных классов сущностей. которые возникают при достижении договоренности и при их фиксации в системе, — много. Я сейчас не готов всех их перечислить. Однако, в одной из ближайших статей я это попытаюсь сделать.
      Учет договоров может быть и не нужен, но понимать, что это разные объекты, — надо. Также надо понимать, что в системе хранится информация не об одном договоре, а о классе договоров.
  • 0
    Продолжим рассмотрение примеров — чай и футбольная команда.
    Так отдельный глоток чая может быть как «операцией» так и не быть учтён в системе вообще. Систему может устраивать детализация на уровне приёма горячих напитков, или система должна описывать множество параметром, как кол-во глотков при каждом поднесении, температуру чая в стакане в этот момент и пр. Так-же возможны варианты, когда то, что названо некоторым аналитиком «операцией» не является атомарной операцией, а состоит из множества различных атомарных операций — начинаем учитывать сгибы локтевого сустава, время релаксации бицепса и пр.
    Также и футбольная команда может нуждаться в различной степени деталировки. Для целей учёта маек — может быть интересна степень их индивидуальной загрязнённости и причины, которые к этому привели, а может и достаточно вести учёт на уровне «стадион с футбольной командой и зрителями» — один штук.
    Вы поймали аналитика на том, что попросили его выделить объекты системы, не уточнив ее требований.
    На мой взгляд, при построении моделей всегда необходимо выбрать правильный уровень детализации. Крайне вредна, как и недостаточная, так и избыточная детализация.
    (И вообще, где Вы таких «аналитиков» берете? Отнесите их обратно)
    • 0
      Речь не идет об уровнях детализации вообще. Я задаю вопрос: это разные объекты, или один? надо иметь богатое воображение, чтобы сказать, что два спортсмена — один объект
      • 0
        Разные объекты или нет — зависит от требований к составляемой модели. Два спортсмена легко могут быть одним объектом, например, когда мы учитываем группы спортсменов, а кол-во спортсменов в группе — простой инт, и отдельные свойства спортсменов нас не интересуют.
        К сожалению, из-за уровня «кармы» могу комментировать только раз в час, так что если желаете продолжить дискуссию — давайте в личке или иными методами.
  • 0
    Я бы с удовольствием пообщался в личке. Но у меня время ограничено. Ваша позиция понятна и ясна. Я ее слышал не раз. Но я мне пришло в голову однажды проверить этот тезис у философов и филологов. Ответ был не в пользу этого тезиса. Попробуйте спросить не ИТишника. Возможно, он даст Вам больше, чем мои рассуждения
    • 0
      Вы меня простите, но философия и филология — это дисциплины, к моделированию отношение имеющие очень опосредованное (к моделированию в том смысле, в котором оно имеет практическое применение в прикладной разработке).
      • 0
        Возможно, в наших институтах, да. Но не везде. Есть программы обучения, в которых без этого нельзя.
        • 0
          «Имя, сестра, имя». Конкретный ВУЗ, дисциплина, учебная программа.
          • 0
            Я бы обратился с этим вопросом к Анатолию Левенчуку. Он читает курс по системной инженерии в МФТИ. Часть курса посвящена моделированию предметных областей и философским основам. Я слушал его доклад о том, в каком ВУЗе и сколько тратится на те или иные дисциплины в качестве подготовки к обучению системной инженерии. Он мог бы сказать, где, в каком объеме читается философия для того, чтобы на ее основе можно было излагать основы системной инженерии и моделирования предметных областей.
            • 0
              Курс по системной инженерии в МФТИ, ага. А вы говорили про философов и филологов.
              • 0
                Вы в курсе, что в институтах проходят философию не случайно? Вопрос лишь как. Мне повезло — у меня были отличные учителя. Кому-то не очень(
                • +1
                  В курсе. Философов полезно слушать, но это не значит, что все философское знание применимо к конкретным прикладным задачам. Более того, иногда оно вредно.
                  • 0
                    Без философской подготовки нечего делать в системной инженерии. Насколько я знаю, Левенчук догоняет курс института по философии под свои нужды. Наверно, это надо, коли так
                    • 0
                      Так «наверное, это надо» или «нечего делать»?
                      • 0
                        каждому свое)
    • 0
      Если мы говорим об архитектуре и внутреннем представлении модели информационных систем, то мнение философов, а тем более, филологов имеет весьма малую ценность. Следование этим мнениям приводит к таким загадочным, и что самое главное, построенным на ложных предпосылках, соотношениях «объект — экземпляр объекта» и понятиях «Класс классов договоров, относящихся к одной сделке», что вообще, на мой взгляд, мягко говоря, уму не постижимо :).
      • 0
        Если мы говорим об архитектуре и внутреннем представлении модели информационных систем, то мнение философов, а тем более, филологов имеет весьма малую ценность.

        Про модели и структуры данных философы действительно не понимают, зато они разбираются в моделировании предметных областей. А вот ИТишники как раз не понимают, что такое моделирование предметной области, зато понимают как моделировать данные. Сели бы, поговорили, что ли)
        • +1
          >> философы действительно не понимают, зато они разбираются в моделировании предметных областей
          Правда? (абстракный любой) философ способен построить работающую и решающую конкретную задачу модель сложной предметной области (да хотя бы простой — взять, например, учет платежей и начислений)?
          • 0
            Задача философа научить студента мыслить, творить мышление.
            • 0
              Эээ… вы хотите сказать, что на других предметах студента этому не учат?

              (ну и да, в любом случае из вашей фразы ну никак не вытекает, что философы разбираются в моделировании предметных областей)
              • 0
                философия единственный предмет, на котором мышление является предметом изучения
                • 0
                  А как же психология?

                  А главное, чтобы научиться мыслить, не обязательно изучать мышление как предмет.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.