Основы программной инженерии. Методические рекомендации к практическим работам для студентов специальности 09 03 04
Скачать 138.43 Kb.
|
6 Практическая работа № 6. Использование унифицированного языка моделирования при проектировании программных системЦель работы: получить навыки применения унифицированного языка моделирования для построения кооперативных диаграмм. 6.1 Краткие теоретические сведения Подобно диаграммам последовательности, диаграммы кооперации отображают поток событий в конкретном сценарии варианта использования. Если диаграмма последовательности служит для визуализации временных аспектов взаимодействия, то диаграмма кооперации предназначена для спецификации структурных аспектов взаимодействия. Главная особенность диаграммы кооперации заключается в возможности графически представить не только последовательность взаимодействия, но и все структурные отношения между объектами, участвующими в этом взаимодействии. Прежде всего, на диаграмме кооперации в виде прямоугольников изображаются участвующие во взаимодействии объекты, содержащие имя объекта, его класс и, возможно, значения атрибутов. Далее, как и на диаграмме классов, указываются ассоциации между объектами в виде различных соединительных линий. При этом можно явно указать имена ассоциации и ролей, которые играют объекты в данной ассоциации. Дополнительно могут быть изображены динамические связи – потоки сообщений. Они представляются также в виде соединительных линий между объектами, над которыми располагается стрелка с указанием направления, имени сообщения и порядкового номера в общей последовательности инициализации сообщений. В отличие от диаграммы последовательности, на диаграмме кооперации изображаются только отношения между объектами, играющими определенные роли во взаимодействии, а последовательность взаимодействий и параллельных потоков определяется с помощью порядковых номеров. Поведение системы может описываться на уровне отдельных объектов, которые обмениваются между собой сообщениями, чтобы достичь нужной цели или реализовать некоторый сервис. С точки зрения аналитика или конструктора важно представить в проекте системы структурные связи отдельных объектов между собой. Такое статическое представление структуры системы как совокупности взаимодействующих объектов и обеспечивает диаграмма кооперации. Отдельные аспекты спецификации объектов как элементов диаграмм уже рассматривались ранее при описании диаграмм последовательности. Эти же объекты являются основными элементами из которых строится диаграмма кооперации. Для графического изображения объектов используется такой же символ прямоугольника, что и для классов. Объект является отдельным экземпляром класса, который создается на этапе выполнения программы. Он может иметь свое собственное имя и конкретные значения атрибутов. Применительно к объектам формат строки классификатора дополняется именем объекта и приобретает следующий вид (при этом вся запись подчеркивается): <Имя объекта>'/' <Имя роли классификатора> ':' <Имя классификатора> [':' <Имя классификатора >]* Для обозначения роли классификатора небходимо указать либо имя класса (вместе с двоеточием), либо имя роли (вместе с наклонной чертой). В противном случае прямоугольник будет соответствовать обычному классу. Если роль, которую должен играть объект, наследуется от нескольких классов, то все они должны быть указаны явно и разделяться запятой и двоеточием. Отдельные примеры изображения объектов и классов на диаграмме кооперации приводятся на рис. 10. В первом случае (рис. 10, а) обозначен объект с именем “клиент”, играющий роль “инициатор запроса”. Далее (рис. 10, б) следует обозначение анонимного объекта, который играет роль инициатора запроса. В обоих случаях не указан класс, на основе которого будут созданы эти объекты. Обозначение класса присутствует в следующем варианте записи (рис. 10, в), причем объект также анонимный. Рисунок 10 - Варианты записи имен объектов, ролей и классов на диаграммах кооперации Ниже приводятся возможные варианты записи строки текста в прямоугольнике объекта. : С - анонимный объект, образуемый на основе класса С. / R - анонимный объект, играющий роль R. / R : С - анонимный объект, образуемый на основе класса С и играющий роль R. О / R - объект с именем О, играющий роль R. О : С - объект с именем О, образуемый на основе класса С. О / R : С - объект с именем О, образуемый на основе класса С и играющий роль R. О или - объект с именем О. О : - "объект-сирота" с именем О. / R - роль с именем R : С - анонимная роль на базе класса С. / R : С - роль с именем R на основе класса С. Применительно к уровню спецификации на диаграммах кооперации могут присутствовать именованные классы с указанием роли класса в кооперации (рис. 10, г) или анонимные классы, когда указывается только его роль (рис. 10, д). Последний случай характерен для ситуации, когда в модели могут присутствовать несколько классов с именем “Клиент”, поэтому требуется явно указать имя соответствующего пакета База данных (рис. 10, е). Мультиобъект (multiobject) представляет собой целое множество объектов на одном из концов ассоциации (рис. 11, а). На диаграмме кооперации мультиобъект используется чтобы показать операции и сигналы, адресованные всему множеству объектов, а не только одному. При этом стрелка сообщения относится ко всему множеству объектов, которые обозначают данный мультиобъект. На диаграмме кооперации может быть явно указано отношение композиции между мультиобъектом и отдельным объектом из его множества (рис. 11, б). Рисунок 11 - Графическое изображение мультиобъектов на диаграмме кооперации В контексте языка UML все объекты делятся на две категории: пассивные и активные. Пассивный объект оперирует только данными и не может инициировать деятельность по управлению другими объектами. В тоже время пассивные объекты могут посылать сигналы в процессе выполнения запросов, которые они получают. Активный объект имеет свою собственную нить управления и может инициировать деятельность по управлению другими объектами. При этом под нитью понимается поток управления, который может выполняться параллельно с другими вычислительными нитями или нитями управления в пределах одного вычислительного процесса. В приведенном фрагменте диаграммы кооперации (рис. 12) активный объект “а: Вызывающий абонент” является инициатором процесса установления соединения для обмена информацией с другим абонентом. Рисунок 12 - Активный объект (слева) на диаграмме кооперации Составной объект (composite object) или объект-контейнер предназначен для представления объекта, имеющего собственную структуру и внутренние потоки (нити) управления. Составной объект является экземпляром составного класса (класса-контейнера), который связан отношением агрегации или композиции со своими частями. Аналогичные отношения связывают между собой и соответствующие объекты. На диаграммах кооперации составной объект состоит из двух секций: верхней и нижней. В верхней секции записывается имя составного объекта, а в нижней – его элементы (рис. 13), которые могут быть составными объектами. Рисунок 13 - Составной объект на диаграмме кооперации Связь (link) является экземпляром или примером произвольной ассоциации. Связь как элемент языка UML может иметь место между двумя и более объектами. Связь на диаграмме кооперации изображается отрезком прямой линии, соединяющей два прямоугольника объектов. На каждом из концов этой линии могут быть явно указаны имена ролей данной ассоциации. Рядом с линией в ее средней части может записываться имя соответствующей ассоциации. Связи не имеют собственных имен, поскольку полностью идентичны как экземпляры ассоциации. Для связей не указывается также и кратность. Применительно к диаграммам кооперации сообщения имеют некоторые дополнительные семантические особенности. Они определяют коммуникацию между двумя объектами, один из которых передает другому некоторую информацию. При этом первый объект ожидает, что после получения сообщения вторым объектом последует выполнение некоторого действия. Таким образом, именно сообщение является причиной или стимулом для начала выполнения операций, отправки сигналов, создания и уничтожения отдельных объектов. Связь обеспечивает канал для направленной передачи сообщений между объектами от объекта-источника к объекту-получателю. Связь может иметь некоторые стереотипы, которые записываются рядом с одним из ее концов и указывают на особенность реализации данной связи. В языке UML для этой цели могут использоваться следующие стереотипы: "association" - ассоциация (предполагается по умолчанию, поэтому этот стереотип можно не указывать). "parameter" - параметр метода. Соответствующий объект может бытьч только параметром некоторого метода. "local" - локальная переменная метода. Ее область видимости ограничена только соседним объектом. "global" - глобальная переменная. Ее область видимости распространяется на всю диаграмму кооперации. "self - рефлексивная связь объекта с самим собой, которая допускает передачу объектом сообщения самому себе. На диаграмме кооперации рефлексивная связь изображается петлей в верхней части прямоугольника объекта. 6.2 Задание Построить диаграмму кооперации для программной системы, выбранной в практической работе № 1. 6.3 Содержание отчета Отчет по практической работе выполняется на листах формата А4. В состав отчета входят: 1) титульный лист; 2) цель работы; 3) текст индивидуального задания; 4) выполнение индивидуального задания. |