Внедряя современные информационные системы, крупные компании рассчитывают быстрее принимать решения, обнаруживать скрытые для бизнеса резервы и возможности, анализировать накопленный опыт и выстраивать прогнозы на основе выявленных закономерностей. Однако реальная отдача от информационных систем часто оказывается значительно ниже, а сроки внедрения и затраты – выше ожидаемых. Причин может быть великое множество, в том числе и связанных с неэффективным управлением, человеческим фактором, устарелой инфраструктурой.
Существенные недостатки есть и у самих информационных систем. В этой статье я предлагаю поговорить не о традиционных – трёхслойных – АИС, а о системах с четырехслойной архитектурой, где новый четвертый слой – слой представления – реализует понятийную модель предметной области. Для актуализации модели при изменениях в предметной области не требуется программировать. Более того, как актуализация модели, так и прикладные задачи решаются посредством семантически инвариантных для всех предметных областей операций над сущностями понятий.
В итоге удается улучшить вычислительные, технологические и эксплуатационные характеристики информационных систем с понятийными моделями предметной области. Но об этом далее.
Как правило, информационные системы строятся по трехслойной архитектуре, которая включает в себя слой клиента, слой логики и слой базы данных. Основной особенностью таких систем является физическое разделение программ, отвечающих за хранение данных (слой базы данных), от программ, обрабатывающих данные (слой логики) и отображающих данные (слой клиента).
В нашей компании “ИНСИСТЕМС” используется информационная система 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. Операции изменения сущностей
Итак, в первой части статьи мы рассмотрели определение понятийных высокоуровневых моделей. А во второй части я расскажу, как у нас в компании “ИНСИСТЕМС” реализована полнофункциональная информационная система, основанная на понятийном моделировании предметных областей. Продолжение последует.
Автор: VVale