Метамоделирование: различия между версиями

Содержимое удалено Содержимое добавлено
Нет описания правки
Объединены абзацы, заменены кавычки, прочие правки.
Строка 1:
== Аннотация ==
 
Это небольшая статья, следует признать, носит несколько рекламный характер. Рекламируется «метамоделирование», которое, с одной стороны, есть деятельность человека по созданию ''глубоких'' формальных описаний предметных областей, а с другой стороны, представляет собой новый принцип организации (хранения) данных в компьютерных приложениях.
Рекламируется "метамоделирование", которое, с одной стороны, есть деятельность человека по созданию
<i>глубоких</i> формальных описаний предметных областей, а с другой стороны, представляет собой новый принцип
организации (хранения) данных в компьютерных приложениях.
 
Метамоделирование, в отличие от многих раскрученных технологий, действительно имеет обоснование (логическое, математическое, общефилософское) быть принятой на вооружение, и поэтому, авторам не так стыдно за этот рекламный текст.
 
== История термина ==
Это слово не совсем обычное.
Оно активно используется в англоязычных текстах в целой серии значений со множеством смысловых оттенков.
 
Это слово не совсем обычное. Оно активно используется в англоязычных текстах в целой серии значений со множеством смысловых оттенков.
И все эти значения любопытны, так как включают в себя элемент мистической, но бесспорной возможности получить необходимое решение в общем виде, добраться до сути, воплотить идеальные представления об организации данных в нечто материальное и работающее.
 
И все эти значения любопытны, так как включают в себя элемент мистической, но бесспорной возможности получить необходимое решение в общем виде, добраться до сути, воплотить идеальные представления об организации данных в нечто материальное и работающее.
15 лет назад смысл этого термина был более прозрачным.
Его использовал узкий круг людей, работающих в самых разных областях — самолётостроении, химической промышленности, программировании, управлении и автоматизации бизнеса. Эти люди вдруг осознали, что занимаются одним и тем же видом деятельности — созданием точного формального описания некоторой предметной области. Необходимо было решать насущные проблемы, связанные с преодолением сложности — сложности конструирования и моделирования самолётов, сложности организации данных, сложности управления многоуровневой и активно растущей организацией, сложности классификации и структуризации огромного архива взаимосвязанных фактов.
 
15 лет назад смысл этого термина был более прозрачным. Его использовал узкий круг людей, работающих в самых разных областях — самолётостроении, химической промышленности, программировании, управлении и автоматизации бизнеса. Эти люди вдруг осознали, что занимаются одним и тем же видом деятельности — созданием точного формального описания некоторой предметной области. Необходимо было решать насущные проблемы, связанные с преодолением сложности — сложности конструирования и моделирования самолётов, сложности организации данных, сложности управления многоуровневой и активно растущей организацией, сложности классификации и структуризации огромного архива взаимосвязанных фактов.
Описания строились с целью автоматизировать или упростить тот или иной аспект деятельности; навести порядок, структурировать, но сохранить определенный уровень гибкости и расширяемости.
 
Описания строились с целью автоматизировать или упростить тот или иной аспект деятельности; навести порядок, структурировать, но сохранить определённый уровень гибкости и расширяемости.
Общее накопившееся желание было сделать это раз и навсегда, чтобы никогда больше не возвращаться к вопросу реорганизации и переделки.
 
Общее накопившееся желание было сделать это раз и навсегда, чтобы никогда больше не возвращаться к вопросу реорганизации и переделки.
Метамоделирование долгое время имело ряд других имён — семантическое моделирование, описание на основе расширенной схемы, просто описание или формализация предметной области.
 
Метамоделирование долгое время имело ряд других имён — семантическое моделирование, описание на основе расширенной схемы, просто описание или формализация предметной области.
 
== Метамоделирование в примерах ==
 
Для начала приведём короткие определения.
Строка 33 ⟶ 28 :
графические нотации для описания структуры классов, свойств и связей).
 
Модели — это описание структуры данных (например, информация о том
какие есть свойства и связи между объектами).
 
Данные — это множество простейших единиц информации, которые касаются не абстрактных, а конкретных сущностей (например, значение определённого свойства определённого элемента).
(например, значение определённого свойства определённого элемента).
 
[[Изображение:Уровни модели данных.jpg]]
 
Основная цель метамоделирования — описать данные настолько глубоко, чтобы они были ''самодостаточными'' и допускали расширение и модификацию своей структуры. Аналогичным свойством хотелось бы наделить и [[w:Программное обеспечение|софт]], работающий с данными. При метамоделировании это происходит автоматически. Софт, основанный на метамоделировании, гибок, так как он написан не для конкретного случая данных, с конкретной структурой и с фиксированными зависимостями, а ''работает в общем случае''. Информацию о структуре данных он читает из модели и метамодели, и автоматически подстраивается под них.
Основная цель метамоделирования — описать данные настолько глубоко,
чтобы они были <i>самодостаточными</i> и допускали расширение и модификацию своей структуры.
Аналогичным свойством хотелось бы наделить и софт, работающий с данными.
При метамоделировании это происходит автоматически. Софт, основанный на метамоделировании, гибок, так как он написан не для конкретного случая данных, с конкретной структурой и с фиксированными зависимостями, а <i>работает в общем случае</i>. Информацию о структуре данных он читает из модели и метамодели, и автоматически подстраивается под них.
 
Приведём пример.
 
===ШАГ Шаг 1: Описываемописываем данные ===
 
Пусть мы описываем [[w:Генеалогическое дерево|генеалогическое дерево]]. Для этого достаточно завести список людей и указать для каждого родителей и годы жизни.
Для этого достаточно завести список людей и указать для каждого родителей и
годы жизни.
 
Естественно для этого использовать таблицу:
Строка 58 ⟶ 47 :
{| class="standard"
! Человек || Годы жизни || Мать || Отец || Пол
|-
|- align=center
| || &nbsp; || &nbsp;|| || &nbsp; || &nbsp;
|}
 
Чего же более? Простые задачи должны иметь простые решения.
 
===ШАГ Шаг 2: Описываемописываем модель ===
 
Но для увеличения глубины и подробности описания, удобно указать, что у людей есть «пол», равный М или Ж, ввести выводимые отношения «родитель», «дочь», «сын», «бабушка», «племянник»… и указать ограничения на эти отношения. Это удобно потому, что оказывается необходимым при работе с данными, выполнении запросов к данным и поддержки их корректности (консистентности).
Но для увеличения глубины и подробности описания, удобно
указать, что у людей есть "пол", равный М или Ж, ввести
выводимые отношения "родитель", "дочь", "сын", "бабушка", "племянник" ...
и указать ограничения на эти отношения.
Это удобно потому, что оказывается необходимым при работе с данными, выполнении запросов к данным и поддержки их корректности (консистентности).
 
Отношение «родитель», направленное от узла <math>X</math> к узлу <math>Y</math> подразумевает, что узел <math>Y</math> связан с <math>X</math> либо отношением «дочь», либо отношением «сын», причём это непосредственно зависит от значения атрибута «пол» узла <math>X</math>. Другим очевидным условием является требование, чтобы один узел был связан не более, чем с двумя другими узлами отношением «родитель», причём атрибут «пол» у этих узлов должен различаться. Ясно также, что один и тот же человек не может быть одновременно для кого-то матерью, а для кого-то отцом.
Отношение "родитель", направленное от узла X к узлу Y подразумевает,
что узел Y связан с X либо отношением "дочь", либо отношением "сын",
причём это непосредственно зависит от значения атрибута "пол" узла X.
Другим очевидным условием является требование, чтобы один узел был связан не более,
чем с двумя другими узлами отношением "родитель", причём атрибут "пол" у этих узлов должен различаться.
Ясно также, что один и тот же человек не может быть одновременно для кого-то матерью, а для кого-то отцом.
 
Таким образом, кроме самих данных о родстве людей можно описать, какие бывают отношения между людьми, и какие на них накладываются ограничения. Нужно определиться, какие отношения непосредственно задаются пользователем, а какие выводятся из них.
 
Ограничения на данные (условия консистентности данных) включают в себя указание того, какие значения могут принимать атрибуты узлов, какие отношения могут устанавливаться между узлами, каково минимальное и максимальное число отношений определенногоопределённого типа, в котором может участвовать один узел, а также другие типы условий.
 
Эту дополнительную информацию в данном случае следует называть '''моделью данных'''. Имея эту информацию и записав её в формальном виде, мы можем осуществить автоматическую проверку наших данных — обнаружить места, где информация не полна (например, отсутствует информация о матери) или некорректна (указано больше двух родителей).
Эту дополнительную информацию в данном случае следует называть _моделью данных_.
Имея эту информацию и записав её в формальном виде, мы может осуществить автоматическую проверку наших данных — обнаружить места, где информация не полна (например, отсутствует информация о матери) или некорректна (указано больше двух родителей).
 
<blockquote>
Примечание. Термин [[w:Метаданные|метаданные]] иногда используют как синоним модели данных. Но правильнее считать, что это разные вещи.
Примечание.
Термин <i>метаданные</i> иногда используют как синоним модели данных. Но правильнее считать, что это разные вещи.
 
Метаданные — это просто дополнительная информация, например, некоторый заголовок, прикрепляемый к документу, с информацией об источнике данных, авторе, категории документа, времени создания и ттому подобном.п. Метаданные не содержат информации о структуре данных и ограничениях, накладываемых на данныхданные. Это просто атрибуты, позволяющие идентифицировать и классифицировать блоки данных.
</blockquote>
 
Действительно, проверку условий консистентности данных можно было бы поручить программисту, который бы «захардкодил» все эти условия в программный код приложений. Правда, если условия консистентности изменятся, то программиста придётся снова привлекать к работе. Это неприятно. Но от этой неприятности несложно избавится.
 
Достаточно разработать язык (нотацию, формат) описания модели данных и разработать такой софт, который бы зачитывал эту модель и брал из неё описание структуры данных и условия консистентности данных. В следующий раз вы сами сможете менять модель данных и софт автоматически «подстроится» под изменившуюся модель.
Действительно, проверку условий консистентности данных можно было бы поручить программисту, который бы "захардкодил" все эти условия в программный код приложений. Правда, если условия консистентности изменятся, то программиста придётся снова привлекать к работе. Это неприятно. Но от этой неприятности несложно избавится.
 
Достаточно разработать язык (нотацию, формат) описания модели данных и разработать такой софт, который бы зачитывал эту модель и брал из неё описание структуры данных и условия консистентности данных. В следующий раз Вы сами сможете менять модель данных и софт автоматически "подстроится" под изменившуюся модель.
 
Автоматизация проверки и поддержки консистентности — это уже кое-что.
 
Итак, при хранении данных полезно также в некотором формальном виде хранить и описание их модели. Это очевидно, и обсуждению не подлежит.
 
Но оказывается, можно сделать ещё один шаг.
 
===ШАГ Шаг 3: Описываемописываем метамодель ===
 
Получившаяся модель данных для описания родства людей довольно сложна. Одной табличкой здесь не отделаешься.
Одной табличкой здесь не отделаешься.
 
Вот попытка описать некоторые куски модели:
 
* Есть класс людей.
* Между людьми есть отношение "«родитель"».
* У людей есть свойства "«пол"», "«дата рождения"» и "«дата смерти"».
* (<math>X </math> есть родитель <math>Y</math>) &&<math>\land</math> (<math>X</math> имеет пол "«Ж"») =<math>\Rightarrow</math> <math>X</math> есть мать <math>Y</math>.
* (<math>X</math> есть родитель <math>Y</math>) &&<math>\land</math> (<math>Y</math> имеет пол "«М"») =<math>\Rightarrow</math> <math>Y</math> есть сын <math>X</math>.
* Число родителей <math>X \leqslant 2<= 2/math>.
 
Часть данных модели является просто объявлением наличия класса, связи или свойства. Часть данных модели удобно выражается в виде правил.
 
<!-- Возможно, далее неоконченное предложение -->
Часть данных модели является просто объявлением наличия класса, связи или свойства.
<!-- Некоторые -->
Часть данных модели удобно выражается в виде правил. Некоторые
 
Обратите внимание на то, что здесь мы использовали словосочетание "«данные модели"». Модель хоть и является моделью, но после формальной записи превращается в множество данных, и для этих данных также естественно задать модель. Эта модель и называется ''метамоделью''. Итак
Модель хоть и является моделью, но после формальной записи превращается в множество данных и для этих данных также естественно задать модель. Эта модель и называется *метамоделью*. Итак
 
{{рамка}}
{{Внимание| Метамодель — это модель данных для описания данных модели данных.}}
Метамодель — это модель данных для описания данных модели данных.
{{акмар}}
 
<blockquote>
Примечание. Масло масляное, но тут уж ничего не поделаешь. При описании таких тонких материй как метамоделирование, приходится активно работать с языком. Русский язык позволяет делать чудеса — сам он является замечательной метамоделью, которая объединяет множество предметных областей и позволяет записать самые разные знания, накопленные человечеством. Вот бы найти что-нибудь подобное по мощи, но более формальное и интерпретируемое компьютером!
Примечание.
Масло масляное, но тут уж ничего не поделаешь. При описании таких тонких материй
как метамоделирование, приходится активно работать с языком. Русский язык
позволяет делать чудеса — сам он является замечательной метамоделью, которая объединяет множество предметных областей и позволяет записать самые разные знания, накопленные человечеством. Вот бы найти что-нибудь подобное по мощи, но более формальное и интерпретируемое компьютером!
</blockquote>
 
Приставка <i>''мета-</i>'' практически всегда имеет относительный характер, и зависит от угла рассмотрения.
от угла рассмотрения.
 
Итак, описание модели, которую мы имеем, состоит из разнородной информации, которую неплохо было бы формализовать.
 
Надо придумать подходящий формальный язык. Например, можно ввести несколько таблиц: таблицу со списком всех классов, присутствующих в нашей модели, таблицу со списком всех отношений, таблицу с описанием правил. Ещё нужно что-то придумать для описания свойств типа «Число родителей <math>X \leqslant 2</math>».
Надо придумать подходящий формальный язык.
Например, можно ввести несколько таблиц: таблицу со списком всех классов,
присутствующих в нашей модели, таблицу со списком всех отношений, таблицу с описанием правил. Ещё нужно что-то придумать для описания свойств типа "Число родителей X <= 2".
 
Возможно, имеет смысл разработать какой-нибудь формальный язык, где всю информацию о модели записать в виде набора инструкций? Например,
 
<code>new_class "man";
"man" has_relation "parent" # stands for "is parent of"
"man" has_relation "mather" # stands for "is mother of"
"man" has_property "sex"
(X parent Y) && (X sex "female") => X mother Y
(X parent Y) && (Y sex "male" ) => Y son X
(Z parent X) && (Z parent Y) && (X sex "female") => X sister Y</code>
 
Здесь сущности <code>man</code>, <code>parent</code>, <code>mother</code>, <code>father</code>, <code>son</code> описываются с помощью специальных слов (служебных термов) <code>new_class</code>, <code>has_relation</code>, <code>has_property</code>. А эти три слова уже никак не описываются. Они и есть составляющие метаметамодели. В использованной нами метаметамодели предполагается, что модель состоит из классов и определённых на них свойствах и отношениях. Метаметамодель задаёт, как устроены данные в самом общем случае. Наличие метамодели позволяет нам оперативно (не переписывая программы и не перестраивая хранилище данных) расширять модель.
new_class "man";
"man" has_relation "parent" # stands for "is parent of"
"man" has_relation "mather" # stands for "is mother of"
....
"man" has_property "sex"
...
(X parent Y) && (X sex "female") => X mother Y
(X parent Y) && (Y sex "male") => Y son X
(Z parent X) && (Z parent Y) && (X sex "female") => X sister Y
 
Например,
 
<code>"man" has_relation "friend"
Здесь сущности "man", "parent", "mother", "father", "son" описываются с помощью специальных слов (служебных термов) "new_class", "has_relation", "has_property".
new_class "company"
new_link "works_in" from "man" to "company"</code>
А эти три слова уже никак не описываются. Они и есть составляющие метаметамодели.
В использованной нами метаметамодели предполагается, что модель состоит из классов и определённых на них свойствах и отношениях. Метаметамодель задаёт, как устроены данные в самом общем случае. Наличие метамодели позволяет нам оперативно
(не переписывая программы и не перестраивая хранилище данных) расширять модель.
 
Но можно пойти далее и поднять уровень мета-описания (подняв на соответствующий уровень и софт, работающий с данными), а именно, дать описание служебных термов:
Например,
 
<code>new_class "class"
"man" has_relation "friend"
new_class "companyrelation"
new_class "property"
new_link "works_in" from "man" to "company"
new_link "has_relation" from "class" to "relation"
new_link "has_property" from "class" to "property"</code>
Но можно пойти далее и поднять уровень мета-описания (подняв на соответствующий уровень и софт, работающий с данными), а именно, дать описание служебных термов:
 
Смысл конструкций
new_class "class"
new_class "relation"
new_class "property"
new_link "has_relation" from "class" to "relation"
new_link "has_property" from "class" to "property"
 
<code>new_class X
new_link X from Y to Z</code>
Смысл конструкций
 
можно зафиксировать и написать софт общего назначения, который изначально умеет интерпретировать эти конструкции. При этом, чтобы заставить софт общего назначения делать конкретные вещи, потребуется его настроить — дать описание модели его действий, указать, какие данные и как он должен интерпретировать.
new_class X,
new_link X from Y to Z
 
можно зафиксировать и написать софт общего назначения, который изначально умеет интерпретировать эти конструкции. При этом, чтобы заставить софт общего назначения делать конкретные вещи, потребуется его настроить — дать описание модели его действий, указать, какие данные и как он должен интерпретировать.
 
Это сложный момент.
 
== Надежды, возлагаемые на метамоделирование ==
 
«Лучше день потерять, а потом за пять минут долететь» [http://ru.wikiquote.org/wiki/%D0%9A%D1%80%D1%8B%D0%BB%D1%8C%D1%8F%2C_%D0%BD%D0%BE%D0%B3%D0%B8_%D0%B8_%D1%85%D0%B2%D0%BE%D1%81%D1%82%D1%8B_%28%D0%BC%D1%83%D0%BB%D1%8C%D1%82%D1%84%D0%B8%D0%BB%D1%8C%D0%BC%29] — так коротко можно выразить основную надежду, возлагаемую на метамоделирование.
 
Надежда заключается в том, что метамоделирование позволит нам летать — быстро и в общем случае решать возникающие проблемы и легко расширять систему. Также есть вполне обоснованная надежда, что моделирование позволит
 
* сделать данные более семантически насыщенными,
"Лучше день потерять, а потом за пять минут долететь" [http://ru.wikiquote.org/wiki/%D0%9A%D1%80%D1%8B%D0%BB%D1%8C%D1%8F%2C_%D0%BD%D0%BE%D0%B3%D0%B8_%D0%B8_%D1%85%D0%B2%D0%BE%D1%81%D1%82%D1%8B_%28%D0%BC%D1%83%D0%BB%D1%8C%D1%82%D1%84%D0%B8%D0%BB%D1%8C%D0%BC%29] — так коротко можно выразить
* явно выразить (формально описать) скрытую [[w:Семантика|семантику]] структуры данных.
основную надежду, возлагаемую на метамоделирование.
 
Надежда заключается в том, что метамоделирование позволит нам летать —
быстро и в общем случае решать возникающие проблемы и легко расширять систему.
Также есть вполне обоснованная надежда, что моделирование позволит
* сделать данные более семантически насыщенными;
* явно выразить (формально описать) скрытую семантику структуры данных.
Эти свойства необходимы для расширения возможностей интерпретации данных компьютерными программами.
 
'''Семантика''' — это волшебное слово, непосредственно связанное с метамоделированием. Оно означает скрытое (в обычных базах данных) смысловое значение данных.
 
Введя отношения «friend», «sister», «parent»… мы ничего не написали про их смысл. И хоть компьютер стал «понимать», что такие отношения есть, и они устанавливаются между экземплярами класса «man», он всё же знает про них не всё. Возможно, есть ещё кое-что, во что мы хотели бы посвятить компьютер?
<b>[[w:Семантика|Семантика]]</b> — это волшебное слово, непосредственно связанное
с метамоделированием. Оно означает скрытое (в обычных базах данных) смысловое значение данных.
 
Нет, мы не хотим, чтобы компьютер был как человек и разбирался во всех тонкостях человеческих отношений. И нам не нужен искусственный интеллект с мощью естественного интеллекта.
Введя отношения "friend", "sister", "parent" ... , мы ничего не написали
 
про их смысл. И хоть компьютер стал "понимать", что такие отношения есть, и они
Но кое-чему научить компьютер хочется.
устанавливаются между экземплярами класса "man", он всё же знает про них не всё.
 
Возможно, есть ещё кое-что, во что мы хотели бы посвятить компьютер?
На практике возникают хитрые задачи, где семантика играет ключевую роль: анализ [[w:Кредитная история|кредитной истории]], анализ неисправностей в машине, анализ и классификация текстов на естественном языке, принятие решений по управлению бизнесом — при автоматизации решений этих задач естественным образом всплывает необходимость описывать очень сложные и тонкие вещи. Более того, описав их, нужно суметь построить автоматическую систему, использующую эти данные.
 
Нет, мы не хотим, чтобы компьютер был как человек и разбирался во
всех тонкостях человеческих отношений. И нам не нужен искусственный интеллект
с мощью естественного интеллекта.
Но кое-чему, научить компьютер хочется.
На практике возникают хитрые задачи, где семантика играет ключевую роль:
анализ кредитной истории, анализ неисправностей в машине,
анализ и классификация текстов на естественном языке,
принятие решений по управлению бизнесом — при автоматизации решений этих задач естественным образом всплывает необходимость описывать очень сложные и тонкие вещи. Более того, описав их, нужно суметь построить автоматическую систему, использующие эти данные.
И здесь пригодится гибкость, расширяемость и глубина описания данных, достигаемая при метамоделировании.
 
== Почему метамоделирование такое популярное? ==
 
'''Во-первых,''' просто пришло его время.
 
Особенно хорошо это чувствуют программисты и аналитики. Решая по десять раз одну и ту же проблему, возникающую то в одной, то в другой ситуации, невольно задумаешься — а нельзя ли системно подойти к её решению, чтобы она уже никогда не возникала и не принимала новые но всё же легко узнаваемые формы.
===Во-первых, просто пришло его время.===
 
Метамоделирование — это способ обобщения решений и возможностей.
Особенно хорошо это чувствуют программисты и аналитики.
Решая по десять раз одну и туже проблему, возникающую то в одной,
то в другой ситуации, невольно задумаешься — а нельзя ли системно подойти
к её решению, чтобы она уже никогда не возникала, и не принимала новые
но всё же легко узнаваемые формы.
 
Решая проблему, лучше решить её не в частном, а в общем случае. Трудозатрат будет несколько больше, но в перспективе это окупится с лихвой.
 
Добавляя в систему какую-то возможность, лучше постараться её обобщить и добавить в систему не специальную единичную фичу, а принципиально расширить класс возможностей. Будьте уверены — они понадобятся в будущем.
Метамоделирование — это способ обобщения решений и возможностей.
Решая проблему, лучше решить её не в частном, а в общем случае.
Трудозатрат будет несколько больше, но в перспективе, это окупится с лихвой.
 
Безусловно, увлекаться поиском универсальных и общих решений не нужно. Как и везде, здесь достигается разумный баланс между универсальными сложными и простыми частными решениями.
Добавляя в систему какую-то возможность, лучше постараться её обобщить
и добавить в систему не специальную единичную фичу, а принципиально расширить
класс возможностей. Будьте уверены — они понадобятся в будущем.
 
Раньше, когда задавали вопрос «А нужна ли настолько многоуровневая модель данных?», ответ был неоднозначен. Модель, безусловно, нужна. Но программ, работающих на надлежащем уровне — на уровне метамодели — не было. Софт, теория и технологии метамоделирования не были развиты. Но сегодня ситуация изменилась, и ответ на вопрос однозначен:
Безусловно, увлекаться поиском универсальных и общих решений не нужно.
Как и везде, здесь достигается разумный баланс между универсальными сложными и простыми частными решениями.
Раньше, когда задавали вопрос "А нужна ли настолько многоуровневая модель данных?", ответ был неоднозначен. Модель, безусловно, нужна. Но программ, работающих на надлежащем уровне — на уровне метамодели, не было. Софт, теория и технологии метамоделирования не были развиты. Но сегодня ситуация изменилась, и ответ на вопрос однозначен:
 
"«Метамоделируйте, на здоровье! Вот Вамвам софт, а вот тщательно продуманная парадигма."»
===Во-вторых, метамоделирование — это фундаментальный, давно известный принцип, описанный и используемый в философии, математике, естествознании, который просто получил новое имя и обрёл новую жизнь.===
 
'''Во-вторых,''' метамоделирование — это фундаментальный, давно известный принцип, описанный и используемый в философии, математике, естествознании, который просто получил новое имя и обрёл новую жизнь.
 
Метамоделирование всегда являлось основой всякого рода интеграции и обобщения (даже если этот термин явно не использовался).
 
Сегодня метамоделирование стало важным шагом при решении задач интеграции бизнеса и данных, создании долгоживущих, сложных, расширяемых систем.
 
Рассмотрим два важных свойства, относящихся к математике и философии, на которых базируется метамоделирование.
 
* <b>'''Замкнутость.</b>''' Замкнутость означает, что осуществляя действия в выбранной формальной модели, мы не выйдем за её пределы и нам не встретятся неформализуемые (неописываемые) объекты.
 
* <b>'''Полнота.</b>''' Полнота выбранной формальной системы означает, что в её рамках можно описать (задать, смоделировать) все объекты из рассматриваемого множества.
 
В переложении на область компьютерных технологий эти свойства следует читать так: софт имеет тщательно проработанную архитектуру и метамодель организации данных и в результате
 
софт имеет тщательно проработанную архитектуру и метамодель организации данных и в результате
* все возникающие задачи решаются в рамках этого софта;,
* созданные вами в рамках этого софта данные и модели прозрачны (являются родными) для софта и могут интерпретироваться.
 
== Перспективы ==
 
Выражения «metamodel-driven software» сейчас уже воспринимается как единственный путь достижения нужного уровня
 
Выражения "metamodel-driven software"
сейчас уже воспринимается как единственный путь достижения нужного уровня
* расширяемости (адаптивности),
* универсальности (общности).
 
Термин ''метамоделирование'' встречается в сочетании с программами автоматизации бизнеса, компьютерными технологиями и в индустрии.
И приятно, что метамоделирование обещает не только функциональные, но и дешёвые решения.
 
Строка 282 ⟶ 224 :
Путь внедрения технологий метамоделирования в бизнесе не только обозначен, но и в значительной степени пройден. Остаётся только ждать, когда плод дозреет и будет готов к употреблению.
 
== См. также ==
 
* [[w:Модель данных|Модель данных]]
* [[w:Метамоделирование|Метамоделирование]]
Строка 288 ⟶ 231 :
[[Категория:Журнал «Потенциал»]]
 
== Ссылки ==
* http://metamodel.org
* [http://www.w3.org/2001/sw Проект SemanticWeb]