Предметная область, модель, метамодель, метаметамодель
При визуальном моделировании программного обеспечения используются следующие уровни абстракции:
предметная область ;
модель;
метамодель ;
метаметамодель.
Предметная область (domain)
Для визуального моделирования в качестве предметной области (domain) обычно выступает:
тот фрагмент действительности, куда создаваемое ПО будет встроено:
бизнес-процессы компании, для которой создается информационная система,
электромеханическая среда для встроенного ПО и т. д.; программистам
необходимо тщательно изучить тот контекст, в котором их ПО будет
работать, чтобы оно было там адекватно;
архитектурные решения
ПО, которые должны быть тщательно проработаны, обсуждены с разными
специалистами и ими понятны; с этой целью они и подвергаются
визуализации.
Модель
(model) - это упрощенное описание предметной области, созданное для
удобства выполнения там действий, работы. Более простая модель дает
возможность не рассматривать все бесконечное многообразие предметной
области, а сосредоточиться лишь на некоторых ее свойствах. Например, для
создания информационной системы автоматизации предприятия строится
модель предприятия, которая фокусируется на бизнес-процессах, потоках
данных, бизнес-ролях. В эту модель не входит следующая информация о
предприятии: межличностные отношения сотрудников, детали планировки
помещений офисов, расписание работы компании (начало работы, обеденный
перерыв, выходные) и т. д.
При визуальном моделировании ПО обычно строятся следующие модели.
Модели анализа
(analysis models), формализующие результаты изучения программистами
того контекста, где будет работать их будущее ПО; эти модели позволяют
хорошо формализовать требования к ПО, согласовать их с будущими
пользователями системы, заказчиком и др. заинтересованными лицами, тем
самым, создав хорошую основу для дальнейшей разработки программной
системы.
Модели проектирования
(design models), в которых фиксируются архитектурные решения будущего ПО
- его структура, внешние и внутренние интерфейсы, принципиальные
вопросы реализации с учетом средств разработки, платформ исполнения и
т.д.
Модели
анализа должны "плавно" переходить в модели проектирования, и это
является одним из главных принципов модельно-ориентированного подхода к
разработке ПО.
В
индустриальном производстве создание той или иной модели - это не
единичный прецедент. Например, люди, специализирующиеся на разработке
информационных систем, создают много моделей разных компаний.
Соответственно, у них возникает потребность в специальном языке, который
существенно упростил бы разработку таких моделей. Этот язык должен
содержать описание всех тех абстракций, которые обычно нужны при
моделировании деятельности предприятий. Само множество этих моделей
оказывается предметной областью для новой модели, которую поэтому естественно называть метамоделью (metamodel).
В
рамках одной области деятельности может быть востребовано много разных
модельных языков, и тогда необходим общий способ по их разработке и
спецификации. В этом случае оказывается востребованным язык описания
языков (метамоделей) - метаметамодель (meta-metamodel). Предметной областью для этой новой модели являются соответствующие метамодели.
Теоретически,
приведенную выше цепочку метауровней можно продолжать бесконечно.
Каждый следующий уровень будет служить моделью для предыдущего, а
предыдущий уровень оказывается для него предметной областью, как
показано на рис. 2.1.
Рис. 2.1.
Уровни моделирования
Переход на следующий метауровень целесообразен лишь тогда, когда на некотром
уровне появляется много сходных объектов, нуждающихся в
структурировании, а, значит, в метаописании. В какой-то момент будет
достигнут предел по количеству объектов, требующих унификации и
упорядочивания. На рис. 2.2 приведен пример четырех метауровней с кратким обоснованием, почему пятый уровень и далее не нужны.
Предметная
область - некоторая программная система, ее функции и пользователи.
Пользователей у системы могут быть десятки, сотни и даже тысячи,
функциональность может быть очень сложной. Очевидно, что необходима
специальная модель, структурирующая все это разнообразие.
Модель
в данном случае - это одна или несколько диаграмм случаев
использования, классифицирующих и описывающих функции системы и ее
пользователей. Пользователи сгруппированы по типам, функциональность -
по случаям использования (см. следующую лекцию, где этот тип диаграмм
будет описываться подробно). Очевидно, что разработчикам ПО приходится
часто строить такие модели для разных систем.
Поэтому необходима метамодель,
описывающая язык случаев использования. В данном случае, в упрощенном
варианте она состоит из актера и случая использования, соединенных
между собой связью "многие-ко-многим" - один актер может быть связан с
несколькими случаями использования, несколько актеров могут быть связаны
с одним случаем использования. Очевидно, что подобных метамоделей можно
составить множество - для других визуальных языков.
Метаметамодель - это язык для создания метамоделей всех визуальных языков. В данном, упрощенном случае она состоит из класса и ассоциации.
Попытка
построить метаметаметамодель приводит к забавному противоречию -
получается ровно такая же диаграмма, как на предыдущем уровне
(попробуйте - увидите сами!). Это происходит потому, что метаметамодель
(п. 4) также описана с помощью некоторого визуального языка. А раз так,
то этот новый язык тоже описываться средствами метаметамодели (см.
определение метамодели в п. 4 - ведь она подходит для описания всех
визуальных языков).
Рис. 2.2.
Пример четырех метауровней в визуальном моделировании
Есть и объективная предпосылка к тому, что пятый уровень оказывается
вырожденным, безотносительно тому, какие средства используются для
создания метаметамодели. Дело в том, что не существует большого
множества средств для задания метамоделей визуальных языков (в следующих
лекциях, посвященных DSM-подходу, будет продемонстрирована еще один
подход - грамматики в форме Бэкуса-Науэра). И поэтому не возникает
задачи по структурированию и упорядочиванию таких способов путем
разработки для них общей модели. То есть метаметаметамодель не
требуется…
Язык
UML, являясь, очевидно, метамоделью, описан с помощью своего
подмножества - диаграмм классов. Это подмножество стандартизовано OMG в качестве стандартной метаметамодели как универсальное средство описания различных метамоделей и названо MOF (Meta Object Facility). С его помощью описываются такие стандарты OMG, как Common Warehouse Metamodel (CWM), СORBA Component Model (CCM) и др.
Знаете ли Вы, в чем фокус эксперимента Майкельсона?
Эксперимент А. Майкельсона, Майкельсона - Морли - действительно является цирковым фокусом, загипнотизировавшим физиков на 120 лет.
Дело в том, что в его постановке и выводах произведена подмена, аналогичная подмене в школьной шуточной задачке на сообразительность, в которой спрашивается: - Cколько яблок на березе, если на одной ветке их 5, на другой ветке - 10 и так далее При этом внимание учеников намеренно отвлекается от того основополагающего факта, что на березе яблоки не растут, в принципе.
В эксперименте Майкельсона ставится вопрос о движении эфира относительно покоящегося в лабораторной системе интерферометра. Однако, если мы ищем эфир, как базовую материю, из которой состоит всё вещество интерферометра, лаборатории, да и Земли в целом, то, естественно, эфир тоже будет неподвижен, так как земное вещество есть всего навсего определенным образом структурированный эфир, и никак не может двигаться относительно самого себя.
Удивительно, что этот цирковой трюк овладел на 120 лет умами физиков на полном серьезе, хотя его прототипы есть в сказках-небылицах всех народов всех времен, включая барона Мюнхаузена, вытащившего себя за волосы из болота, и призванных показать детям возможные жульничества и тем защитить их во взрослой жизни. Подробнее читайте в FAQ по эфирной физике.