Pull to refresh
348.77
ГК ЛАНИТ
Ведущая многопрофильная группа ИТ-компаний в РФ

Информационные системы с понятийными моделями. Часть первая

Reading time 13 min
Views 12K
Внедряя современные информационные системы, крупные компании рассчитывают быстрее принимать решения, обнаруживать скрытые для бизнеса резервы и возможности, анализировать накопленный опыт и выстраивать прогнозы на основе выявленных закономерностей. Однако реальная отдача от информационных систем часто оказывается значительно ниже, а сроки внедрения и затраты – выше ожидаемых. Причин может быть великое множество, в том числе и связанных с неэффективным управлением, человеческим фактором, устарелой инфраструктурой.

Существенные недостатки есть и у самих информационных систем. В этой статье я предлагаю поговорить не о традиционных – трёхслойных – АИС, а о системах с четырехслойной архитектурой, где новый четвертый слой – слой представления – реализует понятийную модель предметной области. Для актуализации модели при изменениях в предметной области не требуется программировать. Более того, как актуализация модели, так и прикладные задачи решаются посредством семантически инвариантных для всех предметных областей операций над сущностями понятий.

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


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

В нашей компании “ИНСИСТЕМС” используется информационная система LANCAD, в которой четыре слоя: слой клиента, слой представления, слой логики и слой базы данных, где новый слой – слой представления – реализует понятийную модель предметной области. Понятийная модель служит для высокоуровнего описания предметной области, близкого пониманию пользователей и разработчиков информационных систем.

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

О понятии понятия


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

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

Полагается, что понятия образуются (определяются) при абстрагировании.

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

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

Примерами единичных понятий могут служить такие понятия как «Зеленый», «Кислый», «Громкий», «Твердый», «Яркий», «Тяжелый», «Длинный», «Один», «Много» и т.п.

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

Единичные понятия также называются понятиями-значениям, призванными обозначить некоторую элементарную сущность. В информационных системах единичные понятия кодируются в виде единичных значений простых типов данных. Например, «-1», «3,5», «Ц», «16:31», «2018-04-10», «АБВ».

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

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

Примером простого понятия может служить такое понятие, как «Цвет», которое объединяет сущности единичных понятий «Красный», «Зеленый» и т.д., или «Целое число», состоящее из представимых целых чисел.

В информационных системах простые понятия соответствуют простым типам данных или типам данных, производным от них путем ограничения множества значений. Например, «Целое со знаком», «Символ», «Число с плавающей запятой», «Время», «Дата», «Строка», и т.п.

Конкретные понятия. Конкретные понятия образуются на основе объединения сущностей с одинаковыми наборами признаков, позволяющими отличать сущности, принадлежащие конкретному понятию, от сущностей, не принадлежащих понятию. Выделяемые при этом признаки мыслятся как простые понятия, а имена конкретных понятий – как единичные понятия.

В информационных системах конкретные понятия представляются таблицами, столбцы которых соответствуют понятиям-признакам, а строки содержат значения этих признаков для сущностей, принадлежащих понятию.

Например, конкретное понятие «Мяч» может содержать такие понятия-признаки как «Цвет», «Диаметр», «Материал», а строки таблицы будут определять сущности понятия «Мяч»: («Красный», «10», «Резина»), («Зеленый», «15», «Ткань»), и т.д. Если некоторая сущность предметной области имеет значения признаков, принадлежащих какой-либо строке такой таблицы, то эта сущность распознается как «Мяч».

На языках программирования конкретные понятия выражаются массивом структур с полями из простых типов данных, а в базах данных – таблицей, столбцы которой те же простые типы дынных.

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

Рис. 1. Отношения признаков понятий: а) независимость; б) дифференциация; в) интеграция

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

Считается, что за образование обобщений отвечает левое полушарие мозга, а за образование ассоциаций – правое.

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

Например, понятие «Заявка» может состоять из таких понятий как «Пользователь» (автор заявки), «Дата» (дата создания заявки), «Предмет» (описание сути заявки) и т.п.

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

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

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

Видно, что ассоциация является абстракцией, лежащей в основе образования конкретных понятий путем ассоциации понятий-признаков.

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

Примером понятия-обобщения может служить понятие «Фрукты», которое является результатом объединения сущностей таких понятий как «Яблоко», «Груша», «Персик», «Абрикос» и т.п. При этом фиксируются те признаки, которые являются общими для всех обобщаемых понятий, например, «Съедобность», «Наличие семян», а также другие признаки (возможно не все), выделенные у фруктов в соответствии с постановкой решаемой задачи.

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

Следует заметить, что обобщение является абстракцией, лежащей в основе образования простых понятий путем типизации понятий-значений.

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

В информационной системе LANCAD любое понятие в том числе и понятие «Понятие» содержит следующие признаки (рис. 2): «_Entity» (уникальный числовой идентификатор сущности), «_Title» (имя сущности), «_Icon» (пиктограмма сущности), «_Model» (дополнительные признаки сущности для слоя представления), «_Flags» (дополнительные признаки сущности для слоя логики и данных).

Для каждой сущности «Понятие» помимо общих задаются специфические признаки: «Abstract» (абстракция понятия-сущности, одно из следующих значений: понятие-значение, понятие-признак, понятие-ассоциация, понятие-обобщение) и «Aspect» (аспект понятия-сущности, будет рассмотрен далее).

Рис. 2. Признаки понятия «Понятие»

Вариации смысла


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

По этой причине в информационной системе LANCAD предусматривается многоаспектное описание понятий, когда каждому понятию приписывается признак «Aspect». При этом разрешается определение понятий с одним и тем же именем, но в разных аспектах.

На рис. 3 показан фрагмент таблицы понятия-признака «Аспект».

Рис. 3. Сущности понятия-признака «Аспект»

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

Структура реальности


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

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

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

Рис. 4. Понятийная структура

Например, понятие «Принципал» является обобщением понятий «Пользователь» и «Группа», а понятие «Пользователь» – ассоциацией понятий «Пароль», «Имя», «Отчество», «Фамилия», «Телефон» и т.д. (рис. 5).

Рис. 5. Атрибуты понятия «Пользователь»

В свою очередь такие понятия, как «Имя», «Отчество», «Фамилия», «Телефон», «Почта», определены как строковые понятия-значения соответствующей длины с ограничением области значений в виде регулярных выражений.

Так как признаками абстрактных понятий могут быть в том числе и другие абстрактные понятия, то для таких понятий вместо слова «признак» используется слово «атрибут».

Прав ли Айзек Азимов?


Четырехслойная информационная система должна работать с моделью предметной области и адекватно описывать состояние и поведение последней.

В своем романе «Конец Вечности» Айзек Азимов высказал мысль о том, что Реальность такова, что Вычислитель, используемый для моделирования предполагаемых Изменений Реальности, соизмерим по сложности с самой Реальностью (рис. 6). Действительно ли реальные модели столь сложны? Или мы просто «не умеем их готовить»? Попробуем ответить на эти вопросы.

Рис. 6. Вычислитель для моделирования реальности. Источник

В рассмотренной ранее понятийной структуре предметной области задаются имена понятий, способы их абстрагирования и список понятий-атрибутов, на которых понятия определены. Однако, как задаются простые понятия или какие наборы значений понятий-атрибутов определяют ту или иную сущность конкретных и абстрактных понятий, остается не выясненным.

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

В слое базы данных единичные понятия (понятия-значения) представим встроенными типами данных. В информационной системе LANCAD используется 38 понятий-значений (рис. 7).

Рис. 7. Понятия-значения

В свою очередь, простые понятия (понятия-признаки) реализуются в виде таблиц, содержащих перечисление сущностей-значений, принадлежащих таким понятиям. Пример представления понятия-признака «Аспект» приведен ранее на рис. 3, а его отображение в понятийной структуре на рис. 4.

Конкретные понятия представимы таблицами, столбцы которых соответствуют понятиям-значениям. На рис. 8 показан фрагмент таблицы для представления конкретного понятия «Цвет», где специфический атрибут понятия представлен столбцом «Color».

Рис. 8. Конкретное понятие «Цвет»

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

Пример таблицы понятия-ассоциации «Понятие» показан на рис. 9.

Рис. 9. Понятие-ассоциация «Понятие»

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

Пример виртуальной таблицы понятия-обобщения «Принципал» приведен на рис. 10, где сущности с начальными цифрами уникального идентификатора, равными 68, являются сущностями понятия «Группа», а сущности с цифрами 67 – сущностями понятия «Пользователь». Общими атрибутами для таких сущностей оказались понятия «Имя» и «Пароль».

Рис. 10. Понятие-обобщение «Принципал»

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

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

Может ли человек по капле воды догадаться о существовании океана? Некоторые отвечают, что да, может. Но тогда человек должен использовать свой интеллект, который не сводим к рациональному мышлению, которое мы пытаемся автоматизировать. В таких случаях ничего не остается, кроме дополнения понятийной модели новыми понятиями и сущностями, являющимися результатом интеллектуальной деятельности пользователей информационной системы.

Tempora mutantur et nos mutamur in illis


В заголовке – известный латинский афоризм, гласящий о том, что «времена меняются, и мы меняемся вместе с ними». Какую бы понятийную модель мы не создали, в момент своего создания она уже устарела. Как обеспечить актуализацию модели вслед за изменениями в предметной области?

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

Создание сущности. Операция создания сущности какого-либо понятия осуществляется путем вставки в таблицу понятия новой строки с полями, равными значениям атрибутов создаваемой сущности. Для этого в слое базы данных используется SQL-запрос типа INSERT.

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

Удаление сущности. Операция удаления сущности понятия осуществляется путем выполнения SQL-запроса удаления строки из таблицы понятия типа DELETE. Так как на удаляемую сущность понятий могут быть ссылки из друг таблиц, то не каждая операция удаления оказывается возможной без удаления связанных с ней сущностей. Для обеспечения такой взаимосвязи при создании таблиц понятий определяются внешние ключи (англ. foreign keys) для всех абстрактных полей этой таблицы (рис. 11). В результате чего получается сильно связанная база данных, а механизм внешних ключей обеспечивает целостность понятийной модели.

Операция удаления понятия-сущности возникает в случае существенного изменения модели предметной области и состоит в изменении описания всех понятий, в определения которых входит удаляемое понятие. Для обеспечения целостности понятийной модели удаление понятий осуществляется соответствующей хранимой процедурой.

Рис. 11. Внешние ключи таблиц понятий

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

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

Интерфейс пользователя. Операции добавления и удаления сущностей понятия отображаются в контекстное меню приложения (рис. 12).

Рис. 12. Операции создания и удаления сущностей

Операция изменения сущности выполняется путем непосредственного изменения значения простого понятия или путем выбора из ниспадающего списка одного из допустимых значений абстрактного понятий (рис. 13). В этом случае сущности абстрактных понятий отображаются в интерфейсе пользователя в виде наименования и соответствующей пиктограммы (атрибуты _Title и _Icon).

Рис. 13. Операции изменения сущностей

Итак, в первой части статьи мы рассмотрели определение понятийных высокоуровневых моделей. А во второй части я расскажу, как у нас в компании “ИНСИСТЕМС” реализована полнофункциональная информационная система, основанная на понятийном моделировании предметных областей. Продолжение следует.

Tags:
Hubs:
+33
Comments 17
Comments Comments 17

Articles

Information

Website
lanit.ru
Registered
Founded
Employees
over 10,000 employees
Location
Россия
Representative
katjevl