Джим Арлоу, Айла Нейштадт - UML 2 и Унифицированный процесс. Практический объектно-ориентированный анализ и проектирование (1037782), страница 9
Текст из файла (страница 9)
Однако развитие всегда происходит по направлению к согласованным моделям, достаточ+но полным для создания программной системы.Разработку моделей с помощью UML, как правило, начинают с графической модели, которая позволяет визуализировать систему, а затемпо мере ее развития добавляют в задний план все больше и больше семантики.
Однако модель можно считать полезной или полной, толькоесли семантика модели присутствует в семантическом заднем плане.В противном случае модели не существует, есть просто бессмысленный набор блоков и пятен, соединенных линиями! Кстати, общуюошибку, совершаемую новичками в разработке моделей, можно назвать «смерть от диаграмм»: модель переполнена диаграммами, но недоопределена.1.9.2.
ДополненияВ UML каждый элемент модели обозначается простым символом, к которому можно добавлять ряд дополнений, визуализирующих аспектыспецификации элемента. С помощью этого механизма видимая на диаграмме информация может быть представлена в соответствиис конкретными требованиями.Мы дополняем элементы модели на UMLдиаграммах, чтобы подчеркнуть важные детали.Начинать можно с создания высокоуровневой диаграммы, использующей только основные символы с одним или двумя дополнениями.Со временем диаграмма уточняется путем добавления все большегои большего количества дополнений до тех пор, пока не станет достаточно подробной.38Глава 1.
Что такое UML?Важно помнить, что любая UMLдиаграмма – это только представлениемодели, и поэтому необходимо показывать лишь те дополнения, которые подчеркивают важные характеристики модели и делают диаграмму более понятной и удобочитаемой. Обычно нет необходимости показывать на диаграмме все до мельчайших подробностей. Важнее то,чтобы диаграмма была понятной, иллюстрировала именно те аспекты,которые требуется, и была легкой для восприятия.На рис.
1.11 показано, что минимальным представлением класса является прямоугольник с именем класса. Однако различные детали базовой модели могут быть раскрыты в виде дополнений, расширяющихэто минимальное представление. Возможные необязательные дополнения выделены на рисунке серым цветом.Window{author = Jim, status = tested}Windowэлемент без дополнений+size : Area=(100,100)# visibility : Boolean = false+ defaultSize : Rectangle#maximumSize : Rectangle!xptr : XWindow*+create()+hide()+display( location : Point )!attachXWindow(xwin : XWindow*)элемент с дополнениямиРис.
1.11. Элемент с дополнениями1.9.3. Принятые деленияПринятые деления описывают конкретные способы представлениямира. В UML существует два принятых деления: классификатор/экземпляр и интерфейс/реализация.1.9.3.1. Классификатор и экземплярВ UML предполагается, что может существовать абстрактное понятиетипа сущности (например, банковский счет) и отдельные конкретныеэкземпляры этой абстракции (такие как «мой банковский счет» или«ваш банковский счет»). Абстрактное понятие типа сущности – этоклассификатор, а отдельные конкретные сущности – экземпляры.
Этоочень важная концепция, которая на самом деле крайне проста для понимания. Примеры классификаторов и экземпляров можно найти повсюду. Возьмем эту книгу по UML. Можно сказать, что «UML 2 и Унифицированный процесс» – это абстрактная идея этой книги, и множество ее экземпляров – это книги, одну из которых вы сейчас читаете.Вы увидите, что понятие «классификатор/экземпляр» является ключевой концепцией, пронизывающей UML.391.9. Общие механизмы UMLВ UML экземпляр обычно обозначается той же пиктограммой, что и соответствующий классификатор, но для экземпляров имя на пиктограмме подчеркнуто. Поначалу это различие может показаться несущественным.Классификатор – это абстрактное понятие, например тип банковскогосчета. Экземпляр – конкретная сущность, например ваш банковскийсчет или мой банковский счет.UML 2 предоставляет богатую систематику из 33 классификаторов.Некоторые из наиболее распространенных классификаторов приведены в табл.
1.2.Таблица 1.2Классифи СемантикакаторРазделАктерРоль, выполняемая внешним пользователем системы, 4.3.2которому система предоставляет некоторые услуги.КлассОписание набора объектов, обладающих одинаковыми 7.4свойствами.Компонент Модульная и замещаемая часть системы, инкапсулирую 19.8щая свое содержимое.Интерфейс Набор операций, используемых для определения серви 19.3сов, предлагаемых классом или компонентом.УзелФизический элемент, существующий во время выполне 24.4ния и представляющий собой вычислительный ресурс,например ПК.СигналАсинхронное сообщение, передаваемое между объектами. 15.6Прецедент Описание последовательности действий, осуществляемых 4.3.3системой для предоставления пользователю результата.Все эти классификаторы (и другие) будут рассмотрены более подробнов следующих разделах.1.9.3.2. Интерфейс и реализацияИнтерфейс – это, например, кнопки на панели видеомагнитофона. Реализация – устройство видеомагнитофона.Основная идея этих понятий в том, чтобы отделить то, что выполняетдействие (интерфейс), от того, как это делается (реализации).
Например, при управлении машиной водитель взаимодействует с очень простым и четко определенным интерфейсом. На разных машинах этотинтерфейс реализован поразному.40Глава 1. Что такое UML?Интерфейс определяет контракт (имеющий много общего с юридическим контрактом), придерживаться которого обязуются конкретныереализации. Это функциональное разделение между тем, что обещановыполнить, и реализацией этого обещания является важной концепцией UML. Подробно этот вопрос обсуждается в главе 17.Конкретные примеры интерфейсов и реализаций можно найти повсюду. Например, кнопки на панели видеомагнитофона обеспечиваютпростой интерфейс его сложного механизма.
Интерфейс избавляет насот необходимости вникать в детали внутреннего устройства.1.9.4. Механизмы расширенияUML – расширяемый язык моделирования.Разработчики UML понимали, что просто невозможно создать полностью универсальный язык моделирования, который удовлетворял бывсем современным требованиям и тем, что могут появиться в ближайшем будущем. Поэтому UML включает три простых механизма расширения, приведенные в табл.
1.3.Таблица 1.3Механизмы расширения UMLОграниченияРасширяют семантику элемента, обеспечивая возможностьдобавлять новые правила.СтереотипыОбеспечивают возможность определять новые элементы модели UML на основании существующих: мы определяем семантику стереотипа самостоятельно.Стереотипы добавляют новый элемент в метамодель UML.ПомеченныезначенияПредоставляют способ расширения спецификации элемента, обеспечивая возможность добавлять в него новую специальную информацию.Более подробно эти механизмы расширения рассматриваются в следующих трех разделах.1.9.4.1. ОграниченияОграничения позволяют добавлять новые правила в элементы модели.Ограничение – это строка текста, заключенная в фигурные скобки ({ }),определяющая некоторое условие или правило для элемента модели,которое должно оставаться истинным. Иначе говоря, оно некоторымобразом ограничивает какиелибо свойства элемента.
В книге приводятся примеры ограничений.1.9. Общие механизмы UML41UML определяет Объектный язык ограничений (Object Constraint Language, OCL) как стандартное расширение. Введение в OCL изложенов главе 25.1.9.4.2. СтереотипыСтереотипы позволяют определять новые элементы модели.В книге «The UML Reference Manual» [Rumbaugh 1] утверждается:«Стереотип представляет разновидность существующего элемента модели, имеющего ту же форму (например, атрибуты и отношения), нодругое назначение».Стереотипы позволяют создавать новые элементы модели на основаниисуществующих.
Для этого к имени нового элемента добавляется имястереотипа во французских кавычках («…»). Число стереотипов каждого элемента модели может изменяться от нуля до некоторого значения.Каждый стереотип может определять ряд помеченных значений и ограничений, которые применяются к элементу, помеченному стереотипом. Также со стереотипом можно ассоциировать пиктограмму, цветили текстуру. Обычно следует избегать применения цвета или текстуры в моделях UML, поскольку у некоторых читателей (например,дальтоников) могут возникнуть сложности с восприятием диаграмм.Кроме того, зачастую диаграммы распечатываются в чернобелом варианте. Обычно со стереотипом ассоциируют новую пиктограмму. Этопозволяет контролировать расширение системы графических изображений UML.Поскольку стереотипы вводят новые элементы модели с иным назначением, гдето должна быть определена семантика этих элементов.Как это сделать? Если инструмент моделирования не предоставляетвстроенную поддержку документирования стереотипов, большинстворазработчиков моделей просто помещают примечание в модель иливставляют ссылку на внешний документ, в котором описываются стереотипы.
В настоящее время поддержка стереотипов инструментамимоделирования не выполняется безоговорочно – большинство инструментальных средств поддерживают стереотипы в той или иной степени, но не все из них предоставляют возможность записи семантики.С помощью элемента класс (глава 7) со специальным предопределенным UMLстереотипом «стереотип» можно самостоятельно моделировать стереотипы. При этом создается метамодель вашей системы стереотипов.
Это метамодель, потому что она является моделью элементов модели и находится на совершенно другом уровне абстракции, чемобычная UMLсистема или бизнесмодели. Метамодель ни в коем слу+чае нельзя объединять с обычными моделями. Она всегда должна находиться в отдельной модели. Создавать новую модель, предназначенную исключительно для стереотипов, имеет смысл, только если стерео42Глава 1. Что такое UML?типов много. Такая ситуация встречается довольно редко, поэтомубольшинство разработчиков моделей документируют стереотипы в примечаниях или внешних документах.Стереотипы могут отображаться поразному, но чаще всего разработчики моделей применяют просто имя стереотипа, заключенное в кавычки «», или пиктограмму. Другие варианты отображения стереотипов используются реже; кроме того, инструмент моделирования частоограничивает возможности разработчика.
Примеры приведены нарис. 1.12 (звездочки не являются частью UMLсинтаксиса; они простоуказывают на наиболее удачные варианты представления).предпочтительный«entity»Ticket«entity»TicketпиктограммастереотиппредпочтительныйTicketTicket«control»JobManager«call»SchedulerРис. 1.12. Варианты отображения стереотиповОбратите внимание, что помечать стереотипом можно и отношения.В книге вы найдете множество таких примеров.1.9.4.3. Помеченные значенияПомеченные значения позволяют добавлять собственные свойства к элементам модели.В UML свойство – это любое значение, прикрепленное к элементу модели.