Таксономия и фолксономия

Прошедшие выходные я провел за «увлекательным» занятием классификации информационных систем нашей компании. Выгруженные из Configuration management database (CMDB) приложения и из Human Resource management system (HRMS) сотрудники были подвергнуты различным inner, outer и cross join-ам . Естественно, делал это я не в трудовом порыве, а по служебной необходимости. Чтоб время, эмоции и силы были потрачены не совсем зря, изложу своё понимание терминов таксономия, фолксономия, агрегация и композиция в применении к современным информационным системам, в частности к CMDB.

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

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

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

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

О навешивании ярлыков

В то время как корпоративным блогам и вики уделяется достаточно много внимания, про corporate tagging говорится намного меньше. Да и решений таких практически нет, быть может, за исключением нескольких расширений для SharePoint. Но тема, на мой взгляд, более чем перспективная. Я немного писал уже о тегах в сообщении [За]метки на полях Не стану повторятся о том что роднит их с ссылками, особенно семантическими ссылками. Напомню лишь о похожести меток и внешних ключей в реляционных базах данных. Так в чем же скрывается польза использования корпоративных тегов?

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

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

Семантическая сеть предприятия

Последнее время мне все чаще хочется каких-то странных вещей. Хочется дождя, хочется снега, хочется новую  информационную систему. Систему похожую, то ли на twitter, то ли на wiki, одним словом хочется следующего:

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

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

Может кому-нибудь доводилось видеть что-то подобное? Поделитесь, пожалуйста, знанием

Почему архитектура нуждается в социальном ПО

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

Читать далее Почему архитектура нуждается в социальном ПО

Adaptive Case Management + Semantic Web

Развитие идей предыдущего сообщения другими словами.

Традиционный кейс менеджмент – это практика, предполагающая сбор в единой папке всех документов, относящихся к определенному случаю. Помните, были такие картонные папки с надпись «Дело №…». Adaptive case management позволяет нам ассоциировать с некоторым конкретным случаем (делом) не только документы, но и людей, процессы, сообщения, любые информационные ресурсы. Т.к. мы люди умные, то не будем физически подшивать эти ресурсы в папку, т.е. засовывать их внутрь, а соберем в кейсе гиперссылки на необходимые нам ресурсы: контент, карточку сотрудника, страницу бизнес-события и экземпляра бизнес-процесса.

Однако, простые гиперссылки не обладают семантикой. Т.е. ссылка на человека не будет отличаться от ссылки на документ. Это плохо. Поэтому мы будем использовать семантические ссылки, т.е. ссылки помеченные определенной меткой(тэгом). Например, ссылка на исполнителя кейса будет иметь тэг «case worker», а ссылка на инициирующее создание кейса событие будет иметь тэг «trigger». Естественно, нам не помешает механизм обратных ссылок, присутствующий в блогах, wiki и других социальных инструментах.

Это все! Очень простая и вполне законченная логическая архитектура ACM построена

Назад в будущее

Я с большим интересом слежу за блогом, который ведет Keith Swenson и сегодня с удовольствием обнаружил в нем сообщение 15 Social Requirements for ACM Насколько мне известно, это первый список конкретных требований к социальной системе управления, по крайней мере, к системе класса adaptive case management. Мне нравится этот перечень, но для себя я бы скомпоновал требования немного иначе:

  1. Case – это ресурс в корпоративной информационной сети, обладающий уникальным неизменным идентификатором (URL) и доступный посредством простых операций CRUD (впрочем, насчет D[elete] я бы еще подумал). При описании требований к системе, я бы объединил понятия case и case folder, хотя эти понятия и используются для обозначения разных сущностей.
  2. Главным требованиям к структуре case folder(case) является freeform. Я бы ограничился статусом, коллекцией вложенных ссылок на бизнес-объекты и историей изменений. Впрочем, статусы можно реализовать набором меток(тэгов). Возможно, это предложение сейчас слишком инновационное, но по мере роста популярности Semantic Web, статус кейса станет семантической ссылкой на один из допустимых статусов.
  3. Безусловно, необходимы механизмы уведомления об изменениях кейса в виде RSS/Atom/e-mail, допускающие свободную подписку в соответствии с правами доступа.
  4. Связывание кейсов между собой производится на основе гиперссылок и меток(тегов). Причем, основное внимание надо уделить на использование меток для классификации кейсов. Некоторые метки могут обозначать использование в данном кейсе типовых сценариев и задач. Более того, когда Case Worker принимает решение о необходимости реализации в рамках отработки кейса той или иной активности, соответствующая метка типа активности должна добавляться к кейсу автоматически.
  5. Безусловно, отношения между кейсами и людьми – это самое главное. В этом Кейт абсолютно прав. Я считаю, что ассоциация кейса с сотрудником должна быть той самой задачей из check list. Другими словами, сотрудник привлекается к кейсу не просто так, а для того чтоб внести свой, вполне конкретный вклад в его решение, реализовав одну из задач кейса. Это не запрещает консультироваться с экспертами и взаимодействовать коллегами по поводу кейса. Но главный акцент остается на конкретном вкладе эксперта в достижение общей цели.

Возможно, после повторного прочтения сообщения Кейта Свенсона мне придет на ум что-то еще. Однако и первое прочтение меня достаточно впечатлило.

Semantic Mediawiki

На встрече Клуба Архитекторов Microsoft я рассказывал о построении репозитория архитектуры предприятия на базе семантической wiki. Несколько слов об использованном инструменте. Semantic MediaWiki – это дополнение к наиболее популярному wiki движку MediaWiki Установка расширения, как впрочем, и самой Mediawiki достаточно просты и подробно описаны на сайте. Пожалуй, единственный непривычный момент это обновление базы данных. Все что необходимо знать про установку и использование приведено в этом руководстве

Интересно, что в данном направлении думаем не только мы. Ryan Lean в своем блоге пишет о Helpdesk system and datacenter inventory на базе Semantic расширений Mediawiki

[За]метки на полях

Я давно собирался написать о том, почему метки (они же ярлычки, они же тэги) являются не только удобным способом классификации сообщений в блоге и инструментом эффективного поиска. За этим механизмом скрывается намного более мощная идея. Идея структурирования данных «на лету». Сейчас стало модным к любому понятию приписывать слово dynamic. Так вот метки – это механизм реализации динамических структур данных. Только мы, вскормленные на  реляционной модели данных, об этом совершенно не задумываемся.

Читать далее [За]метки на полях

Архитектура предприятия в формате Semantic Web

Готовлю презентацию на обозначенную тему:
[slideshare id=5778408&doc=semanticweb-101114155947-phpapp01]
Основные тезисы:
Читать далее Архитектура предприятия в формате Semantic Web