Anatoly Levenchuk ([info]ailev) wrote,
@ 2009-06-30 12:36:00
Previous Entry  Add to memories!  Tell a Friend  Next Entry
Факт-ориентированное моделирование
Международный семинар по факт-ориентированному моделированию состоится 4-6 ноябра 2009г. в Vilamoura, Portugal (ORM2009, http://otm-conferences.com/index.php/orm09).
Факто-ориентированное моделирование -- это основанный на естественном языке концептуальный подход к моделированию и запросу сведений о предметных областях в терминах интересующих фактов. В этом подходе все факты и правила высказываются на языке, легко понимаемом специалистами этих предметных областей.

В отличие от моделирования "сущность-связь" (ER) и диаграмм классов UML, факто-ориентированное моделирование трактует все факты как отношение (унарные, бинарные, тернарные и т.д.). Как факты группируются в какие-то структуры (например, типы сущностей с атрибутами, классы, схемы отношений, XML-схемы) в факт-ориентированном моделировании рассматривается на уровне реализационного дизайна, который не имеет отношения к ухватыванию сущности предметной области. Избегание атрибутов в основной модели усиливает стабильность смысла и возможности применения, так же как способствует естественной вербализации и таким образом более продуктивной коммуникации со всеми заинтересованными сторонами. Для информационного моделирования, факт-ориентированные графические нотации обычно много более выразительные, чем любые другие. Факт-ориентированные текстовые языки основываются на формальных подмножествах естественных языков, поэтому легче понимаются людьми в организациях, нежели технические языки типа OCL (язык ограничений для UML). Факт-ориентированное моделирование включает процедуры для отображения (mapping) на атрибутные структуры, так что может быть использовано как начальный этап для других подходов.

Факт-ориетерированное моделирование успешно используется уже более 30 лет лет, и ему учат в ВУЗах всего мира. Факт-ориентированный подход к моделированию состоит из семейства близко связанных "диалектов", из которых наиболее известны ORM (Object-Role Modeling), CogNIAM (Cognition enhanced Natural language Information Analysis Method) и FCO-IM (Fully-Communication Oriented Information Modeling). Несмотря на принятие довольно отличающейся графической нотации, OSM (Object-Oriented Systems Model) также является близким подходом, посколько имеет схожую безатрибутную философию. Стандарт SBVR (Semantics of Business Vocabulary and Business Rules), принятый организацией стандартизации OMG (Object Management Group) является недавним дополнением семейства факт-ориентированных подходов.

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

Еще интересным вариантом факт-ориентированного формализма является используемый в программе организационного моделирования БигМастер фирмы БИГ (http://big.spb.ru/bigmaster/, есть свободный вариант ГосМастер http://bigc.ru/government/products/gosmaster/registration.php). Заодно эта программа показывает вариант эффективной организации (группировки) множества понятий, редакторского интерфейса для фактоориентированного подхода, а ткже вариант организации генератора отчетов по фактоориентированной модели.

Каким путем я сегодня направил бы PraxOS? А вот этим бы путем и направил.


(14 comments) - (Post a new comment)


[info]avlasov
2009-06-30 09:55 am UTC (link)
Факт-ориентированное моделирование - интересный подход. Я как раз, когда с Геллиш познакомился, осознал его круть.

(Reply to this) (Thread)


[info]ailev
2009-06-30 10:04 am UTC (link)
А дальше нужно просто размыть границу между "моделированием" и "программированием". Это и есть основной тренд в сегодняшнем программировании.

(Reply to this) (Parent)(Thread)


[info]avlasov
2009-06-30 10:06 am UTC (link)
Согласен. Я так и пытался все время: генерить софт и тесты из формальных описаний. Причем факто-ориентированная форма самая удобная, ибо медленнее всего меняется.

(Reply to this) (Parent)


[info]109
2009-07-01 01:08 am UTC (link)
вроде бы геллиш поддерживает только факты типа субъект-отношение-объект (в вашей терминологии это будет, наверное, "бинарное отношение"). как запомнить факт типа "вася познакомился с петей первого апреля в мухосранске", уже непонятно.

(Reply to this) (Thread)


[info]ailev
2009-07-01 06:35 am UTC (link)
Однако, в книжке по Геллишу это подробно разжевано -- это просто несколько бинарных молекулярных отношений. Более того, одна строчка в геллиш-таблице (с одной тройкой) сама по себе представляет свертку из 12 атомарных отношений.

(Reply to this) (Parent)(Thread)


[info]109
2009-07-01 07:25 pm UTC (link)
ну вот на примере с васей и петей, это как будет? а то у меня нет книжки по геллишу, где всё разжёвано, а в интернете, там где database schema геллиша нарисована, там непонятно.

(Reply to this) (Parent)(Thread)


[info]ailev
2009-07-01 07:41 pm UTC (link)
Книжка по Геллишу вот тут: http://repository.tudelft.nl/file/313741/306185

Рекомендую прочесть. Мне эта книжка очень понравилась.

(Reply to this) (Parent)(Thread)


[info]109
2009-07-02 12:55 am UTC (link)
спасибо за ссылку! но в ней нет ответа на мой вопрос, только сплошной handwaving - типа если нам вдруг придётся описывать что-то более сложное, чем binary relation, мы это опишем как коллекцию binary relations. а мой вопрос заключается в том, как именно.

в каком-то месте там ещё упоминается, что для превращения higher order relations в binary придётся создавать sub-entities. мало того, что это методологически неправильно и увеличивает шум путём внесения в систему кучи искусственных entities, на самом деле не существующих, так ведь к тому же это всё равно проблему не решает.

я, в общем, задал крайне простой вопрос насчёт васи и пети. если даже такой простой факт нельзя простым способом в геллише зарегистрировать (а по всему получается, что нельзя, иначе зачем бы handwaving? в удобных случаях автор там очень конкретен), то применимость геллиша вызывает сильные сомнения.

(Reply to this) (Parent)(Thread)


[info]ailev
2009-07-02 06:04 am UTC (link)
Если ссылка от avlasov слишком сложна, а ссылка от меня неконкретна, то я умываю руки -- вряд ли мне удастся объяснить лучше.

(Reply to this) (Parent)


[info]avlasov
2009-07-01 12:08 pm UTC (link)
N-арные отношения сводимы к бинарным. См. к примеру http://kti.mff.cuni.cz/~bartak/constraints/binary.html
Хотя для человека читать такие энкодинги не очень удобно.

(Reply to this) (Parent)(Thread)


[info]109
2009-07-01 07:24 pm UTC (link)
спасибо за ссылку, но там как-то всё очень сурово. вот на примере с васей и петей, это как будет?

(Reply to this) (Parent)(Thread)


[info]avlasov
2009-07-02 07:51 am UTC (link)
Ну там же картинки есть :). Сурово конечно, но на пальцах примерно так:
1. Вводим понятие "случай знакомства".
2. Вася 'есть субъект в' случай знакомства номер 1
3. Петя 'есть объект в' случай знакомства номер 1
4. Случай знакомства номер 1 'имеет обстоятельством времени' 1е апреля
5. Случай знакомства номер 1 'имеет обстоятельством места' Мухосранск

(Reply to this) (Parent)(Thread)


[info]109
2009-07-02 06:29 pm UTC (link)
спасибо. но это означает полный распад концепции, ибо создаёт сущность "случай знакомства №1", которой на самом деле не существует.

кроме того, бинарное отношение "вася познакомился с петей" - это атомарный факт, который в геллише имеет уникальный номер anyway. логичнее было бы тогда уж к нему дописать "факт №42 имеет обстоятельством времени первое апреля". и фальшивую сущность создавать не надо.

(Reply to this) (Parent)(Thread)


[info]avlasov
2009-07-03 09:04 am UTC (link)
Да, конечно можно и без фальшивой сущности обойтись.
Хотя она не фальшивая, просто вводится дополнительная модельная переменная.
Просто если обходится без доп переменной, то будет уже предикат второго порядка, что не всегда удобно.

(Reply to this) (Parent)


(14 comments) - (Post a new comment)

Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…