Главная » Просмотр файлов » 2. Язык UML. Руководство пользователя. Буч_ Рамбо_ Якобсон (2-е издание) (2006)

2. Язык UML. Руководство пользователя. Буч_ Рамбо_ Якобсон (2-е издание) (2006) (1185732), страница 66

Файл №1185732 2. Язык UML. Руководство пользователя. Буч_ Рамбо_ Якобсон (2-е издание) (2006) (Язык UML. Руководство пользователя. Буч_ Рамбо_ Якобсон (2-е издание) (2006).pdf) 66 страница2. Язык UML. Руководство пользователя. Буч_ Рамбо_ Якобсон (2-е издание) (2006) (1185732) страница 662020-08-25СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 66)

В системе, где есть одновременно активные и пассивные объекты, следует рассматривать четыре возможных комбинации.ВоFпервых, сообщение может быть передано одним пассивнымобъектом другому такому же. Если предположить, что в любой момент времени существует лишь один поток управления, проходящий через оба объекта, такое взаимодействие – не что иное, какпростой вызов операции.ВоFвторых, сообщение может быть передано от одного активногообъекта другому активному. Здесь можно говорить о межпроцесснойкоммуникации, которая может осуществляться двумя способами.В первом варианте некоторый активный объект может синхронновызывать операцию другого.

Такой способ имеет семантику рандеву:вызывающий объект затребует выполнение операции и ждет, пока принимающая сторона получит вызов, выполнит некоторую операцию342Процессы и потокии вернет некоторый объект (если есть что возвращать); затем обаобъекта продолжают работать независимо друг от друга. В течениевсего времени выполнения вызова оба потока управления будутблокированы. Во втором варианте один активный объект можетасинхронно послать сигнал другому или вызвать его операцию.

Семантика такого способа напоминает почтовый ящик (mailbox): вызывающая сторона посылает сигнал или вызывает операцию, послечего продолжает работу. Тем временем получающая сторона принимает сигнал или вызов, как только будет к этому готова. Пока онаобрабатывает запрос, все вновь поступающие события или вызовыставятся в очередь.

Отреагировав на запрос, принимающий объектпродолжает свою работу. Семантика почтового ящика проявляетсяв том, что оба объекта не синхронизированы – просто один оставляет сообщение для другого.В UML синхронное сообщение изображается закрашеннойстрелкой, а асинхронное – обычной (см. рис. 23.2).Рис. 23.2. КоммуникацияВFтретьих, сообщение может быть передано от активного объекта пассивному. Трудности возникают в случае, когда сразу несколькоактивных объектов передают свой поток управления одному и томуже пассивному. В такой ситуации следует очень аккуратно моделировать синхронизацию потоков, о чем мы поговорим в следующемразделе.ОграниченияВFчетвертых, пассивный объект может передавать сообщеобсуждают- ния активному.

На первый взгляд это может показаться некорся в главе 6.ректным, но если вспомнить, что каждый поток управления принадлежит некоторому активному объекту, то становится ясно,что передача пассивным объектом сообщения активному имеетБазовые понятия343ту же семантику, что и обмен сообщениями между двумя активными объектами.На заметку. С помощью ограничений можно моделироватьразличные вариации посылки синхронных и асинхронных сообщений. Например, для моделирования отложенного рандеву,имеющегося в языке Ada, можно воспользоваться синхронным сообщением с ограничением в формате {wait=0}, котороеговорит о том, что вызывающий объект не будет дожидатьсяполучателя.

Можно смоделировать таймQаут с помощью ограничения в формате {wait=1ms}, которое говорит, что вызывающий объект будет ждать приема сообщения получателемне более одной миллисекунды.СинхронизацияПопробуйте на секунду представить себе многочисленные потоки управления в параллельной системе. Когда поток проходитчерез некоторую операцию, мы говорим, что эта операция являетсяточкой выполнения. Если операция определена в некотором классе, то можно сказать, что точкой выполнения является конкретныйэкземпляр этого класса. В одной операции (и, стало быть, в одном объекте) могут одновременно находиться несколько потоковуправления, а бывает и так, что разные потоки находятся в разныхоперациях, но все же в одном объекте.Проблема возникает тогда, когда в одном объекте находятсясразу несколько потоков управления.

Если не проявить осторожность, то более чем один поток может модифицировать один и тотже атрибут, что приведет к некорректному изменению состоянияобъекта или потере информации. Это классическая проблема взаимного исключения. Ошибки при обработке такой ситуации могутстать причиной различных видов конкуренции между потокамии их взаимной интерференции, что проявляется в таинственныхи не подающихся воспроизведению сбоях параллельной системы.Ключ к решению проблемы – сериализация доступа к критическому объекту. У данного подхода есть три разновидности, сутькаждой из которых заключается в присоединении к операциям,определенным в классе, некоторых синхронизирующих свойств.UML позволяет моделировать все три возможности:1. Sequential (последовательная) – вызывающие стороны должны координировать свои действия еще до входа в вызываемый объект, так что в любой момент времени внутри объекта находится ровно один поток управления.

При наличииПроцессы и потоки344нескольких потоков управления не могут гарантироватьсясемантика и целостность объекта;2. Guarded (защищенная) – семантика и целостность объекта гарантируются при наличии нескольких потоков управленияпутем упорядочения вызовов всех защищенных операцийобъекта. По существу, в каждый момент времени может выполняться одна операция над объектом, что сводит такойподход к последовательному.

При этом существует опасность взаимной блокировки;3. Concurrent (параллельная) – семантика и целостность объектапри наличии нескольких потоков управления гарантируетсяза счет отделения операций изменения данных от операцийчтения. Это достигается благодаря тщательному соблюдению правил проектирования.Некоторые языки программирования поддерживают перечисленные конструкции непосредственно. Так в языке Java есть свойство synchronized, эквивалентное свойству concurrent в UML.

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

Это болеестрогое условие.Рис. 23.3. СинхронизацияНа заметку. С помощью ограничений можно моделироватьразличные вариации примитивов синхронизации. Например,можно модифицировать свойство concurrent, разрешив наличие нескольких читателей, но только одного писателя.Типичные приемы моделирования345Типичные приемы моделированияМоделирование множества потоковуправленияМеханизмыобсуждаются в главе 29,диаграммыклассов –в главе 8,диаграммывзаимодействия –в главе 19.Представленияпроцессовобсуждаются в главе 19,классы –в главах 4 и 9,связи – в главах 5 и 10.Построение системы с несколькими потоками управления – непростая задача. Надо не только решить, как распределить работумежду параллельными активными объектами, но и продумать механизмы коммуникации и синхронизации между активными и пассивными объектами в системе, гарантирующие правильность их поведения в присутствии нескольких потоков управления. Поэтомуполезно визуализировать способы взаимодействия этих потоков.В UML это можно сделать с помощью диаграмм взаимодействия(для описания динамической семантики), в которых участвуют активные классы и объекты.Для моделирования нескольких потоков управления потребуется: Идентифицировать возможности распараллеливания действий и материализовать каждый поток управления в виде активного класса.

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

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

Явно показать активные объектыкак начальные точки соответствующих потоков управления.Идентифицировать каждую связанную последовательность,присваивая ей имя активного объекта. Обратить особое внимание на коммуникации между активными объектами, по мере необходимости пользуясь как синхронными, так и асинхронными сообщениями.346Процессы и потоки Обеспечить синхронизацию активных объектов и тех пассивных объектов, с которыми они кооперируются. Применяйте наиболее подходящую семантику – последовательную, защищенную или параллельную.На рис. 23.4 показана часть представления трейдерской системыс точки зрения процессов.

Вы видите три объекта, которые параллельно питают систему информацией: StockTicker (БиржевойТикер),IndexWatcher (НаблюдательИндекса) и CNNNewsFeed (НовостнаяЛентаCNN), названные соответственно s, i и c. Два из них, s и I, обмениваются каждый со своим экземпляром класса Analyst (Аналитик) –а1 и а2. В рамках этого небольшого фрагмента модели класс Analystможет быть спроектирован в упрощенном виде – из расчета на то,что в каждый момент времени в любом из его экземпляров можетбыть активен только один поток управления. Однако оба экземпляра класса Analyst одновременно общаются с объектом AlertManager(ДиспетчерОповещений), которому мы дали имя m. Следовательно,m необходимо спроектировать так, чтобы он сохранял свою семантику в присутствии нескольких потоков управления.

Объекты mи c одновременно общаются с t – объектом класса TradingManager (МенеджерПоПродажам). Каждому соединению присвоен порядковыйномер, определяемый тем, какой поток управления им владеет.На заметку. Диаграммы взаимодействия, подобные представленной выше, полезны для визуализации тех мест, где двапотока управления могут пересекаться и где, следовательно,необходимо обратить особое внимание на проблемы коммуникации и синхронизации. С помощью инструментальныхсредств допускается реализация дополнительных визуальныхметок – например, раскрашивание потоков в разные цвета.Рис. 23.4.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6367
Авторов
на СтудИзбе
310
Средний доход
с одного платного файла
Обучение Подробнее