Моделирование на UML. Ф.Новиков, Д.Иванов.
<< Предисловие рецензента 1.2. Назначение UML >>

1. Введение в UML

В этой главе язык UML рассматривается в целом, "с высоты птичьего полета". Детали рассматриваются в последующих главах.

1.1. Что такое UML?

Прежде всего необходимо точно определить, о чем идет речь. Обсуждаемый предмет обозначается идентификатором UML, который является аббревиатурой полного названия Unified Modeling Language. Правильный перевод этого названия на русский язык ‒ унифицированный язык моделирования. Таким образом, обсуждаемый предмет характеризуется тремя словами, каждое из которых является точным термином.

1.1.1. UML ‒ это язык

Главным словом в этом сочетании является слово "язык".

Язык ‒ это знаковая система для хранения и передачи информации.

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

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

Так вот, UML можно охарактеризовать как формальный искусственный язык, хотя и не в такой степени, как многие распространенные языки программирования. Признаком искусственности служит наличие трех общепризнанных авторов ‒ Гради Буча, Ивара Якобсона и Джеймса Рамбо.

В то же время, в формирование языка внесли вклад многие теоретики и разработчики, имя которым легион. Языкотворческая практика применительно к UML непрерывно продолжается (мы это обсудим позднее), что дает основание считать UML до некоторой степени естественным языком. Описание UML по большей части формальное, но содержит и явно неформальные составляющие. Такие особенности UML как точки вариации семантики (semantic variation point) (см. параграф 1.9.4) и стандартные механизмы расширения (extension mechanism) (см. параграф 1.8.4), заметно отличают UML от языков, которые, по общему мнению, являются образцами формализма.

В этой книге обсуждаются конкретные версии UML, для которых имеются утвержденные международные стандарты. Однако наличие стандарта ‒ это еще не основание считать язык формальным и искусственным.

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

  • Синтаксис (syntax), то есть определение правил составления конструкций языка.
  • Семантика (semantics), то есть определение правил приписывания смысла конструкциям языка.
  • Прагматика (pragmatics), то есть определение правил использования конструкций языка для достижения определенных целей.

Как формальный искусственный язык UML имеет синтаксис, семантику и прагматику, хотя эти части названы в некоторых случаях иначе и описаны по другому, нежели это принято в текстовых языках программирования, поскольку, во-первых, UML язык графический, а не текстовый, а во-вторых, UML язык моделирования, а не программирования.

1.1.2. UML ‒ это язык моделирования

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

В отношении разработки программного обеспечения так сложилось, что результаты фаз анализа и проектирования, оформленные средствами определенного языка, принято называть моделью. Деятельность по составлению моделей естественно назвать моделированием. Именно в этом смысле UML является языком моделирования.

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

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

1.1.3. UML ‒ это унифицированный язык моделирования

Описывая историю создания UML, его авторы характеризуют эпоху до UML как период "войны методов". Пожалуй, "война" ‒ это слишком сильно сказано, но, действительно, UML является отнюдь не первым языком моделирования. К моменту его появления насчитывались десятки других, различающихся системой обозначений, степенью универсальности, способами применения и т.д. Авторы языков и теоретики программирования препирались между собой, выясняя, чей подход лучше, а разработчики всю эту "войну методов" равнодушно игнорировали, поскольку ни один из методов не дотягивал до уровня индустриального стандарта.

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

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

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

История развития UML

Рис. История развития UML

Как видно из рисунка, на особом положении оказалась версия 1.5. Дело в том, что версия 1.5 была выпущена в тот момент, когда "моделирующая общественность" предвкушала появление обещанной версии 2.0. На самом деле версия 1.5 содержит некоторые элементы версии 2.0, в частности, набор элементарных действий, достаточно широкий для того, чтобы применять UML не только как язык моделирования, но и как язык программирования. Но "генеральная линия" развития инструментальных средств прошла мимо этого явления. Все крупные поставщики инструментов предпочли заявить о поддержке версии 2.0 (иногда даже не имея для этого достаточных оснований), и оставили без поддержки версию 1.5.

UML ‒ это унифицированный язык моделирования, но никак не единый и не универсальный (такие ошибочные толкования первой буквы U встречаются, к сожалению, в некоторых источниках).


1.2. Назначение UML >>
Моделирование на UML. Ф.Новиков, Д.Иванов.