2. Язык UML. Руководство пользователя. Буч_ Рамбо_ Якобсон (2-е издание) (2006) (1185732), страница 76
Текст из файла (страница 76)
Хотя на рисунке этоне показано, вы могли бы изучить кооперацию изнутри и увидеть ееструктурные и поведенческие аспекты.Моделирование реализации операцииОперацииобсуждаются в главах 4и 9.Примечанияобсуждаются в главе 6.Еще одно назначение коопераций – это моделирование реализации операций. Часто ее можно специфицировать непосредственно в коде, однако для тех операций, которые требуют совместнойработы нескольких объектов, перед написанием кода лучше смоделировать реализацию с помощью кооперации.Контекст реализации операции составляют параметры, возвращаемые значения и объекты, локальные по отношению к ней.
Такимобразом, эти элементы видимы для структурного аспекта кооперации, которая реализует данную операцию (подобно тому как действующие лица видимы для структурного аспекта кооперации, реализующей вариант использования). Связи между этими частямиможно смоделировать при помощи диаграмм составной структуры,описывающих структурную часть кооперации.Чтобы смоделировать реализацию операции, необходимо: Идентифицировать параметры, возвращаемые значения и другие объекты, видимые операции. Они выступят в качестверолей кооперации. Если операция достаточно проста, представить ее реализацию непосредственно в коде, который можно поместитьна задний план модели либо явно визуализировать в примечании. Если операция сложна алгоритмически, смоделировать еереализацию с помощью диаграммы деятельности. Если операция сложна либо требует долгого и тщательногопроектирования, представить ее реализацию в виде кооперации.
В дальнейшем можно развернуть структурную и поведенческую составляющие кооперации, используя соответственно диаграммы классов и диаграммы взаимодействия.В качестве примера на рис. 28.7 показан активный класс RenderFrame(ПостроениеФрейма) и раскрыты три его операции. Функция progressРис. 28.7. Моделирование реализации операцииДиаграммыдеятельности обсуждаютсяв главе 20.На заметку. Операцию можно моделировать и с использованием диаграмм деятельности.
Эти диаграммы, по сути,представляют собой блокQсхемы, поэтому для алгоритмически сложных операций, которые нужно моделировать явно,это обычно наилучший выбор. Однако если операция требуетучастия множества объектов, лучше выбрать кооперации,поскольку они позволяют моделировать как структурные, таки поведенческие аспекты операции.Моделирование механизмаОбразцыи каркасыобсуждаются в главе 29.Там же рассматриваетсяпример моделированиямеханизма.В хорошо структурированной объектноFориентированной системе всегда присутствует целый спектр образцов. На одном концеэтого спектра вы обнаружите идиомы, представляющие устойчивые конструкции языка реализации, а на другом – архитектурные образцы и каркасы, образующие систему в целом и задающиеопределенный стиль. В середине же спектра располагаются механизмы, описывающие распространенные образцы проектирования,посредством которых системы взаимодействуют друг с другом.
Механизмы в UML представляют с помощью коопераций.Механизмы – это автономные кооперации; их контекстом является не какойFто один вариант использования или одна операция,а система в целом. Любой элемент, видимый в некоторой части системы, – кандидат на участие в механизме.Кооперации400Механизмы представляют архитектурно значимые проектныерешения, и относиться к ним следует серьезно. Обычно механизмыпредлагает системный архитектор, и с каждой новой версией ониизменяются. В конце концов вы обнаруживаете, что система сталапростой (поскольку в механизме реализованы типичные взаимодействия), понятной (так как к пониманию системы можно подойтисо стороны ее механизмов) и гибкой (настраивая каждый механизм,вы настраиваете систему в целом).Чтобы смоделировать механизм, необходимо: Идентифицировать основные механизмы, образующие архитектуру системы.
Их выбор диктуется общим архитектурным стилем, который вы решили положить в основу своейреализации, наряду со стилем, наиболее подходящим к предметной области. Представить каждый механизм в виде кооперации. Раскрыть структурную и поведенческую составляющие части каждой кооперации, по возможности стараясь находитьсовместно используемые элементы.
Утвердить механизмы на ранней стадии жизненного цикларазработки (они имеют стратегическое значение), но впоследствии в каждой новой версии развивать их по мере прояснения деталей реализации.Советы и подсказкиПри моделировании коопераций в UML помните, что каждая изних должна либо представлять реализацию варианта использования,либо служить автономным механизмом уровня всей системы. Хорошоструктурированная кооперация обладает следующими свойствами: включает как структурный, так и поведенческий аспекты; представляет собой четкую абстракцию некоторого идентифицируемого взаимодействия в системе; редко бывает полностью независимой, но чаще перекрывается со структурными элементами других коопераций; понятна и проста.Изображая кооперацию в UML, придерживайтесь следующихправил: явно изображайте кооперацию только тогда, когда это необходимо для понимания ее связей с другими кооперациями,классификаторами, операциями или системой в целом. В остальных случаях используйте кооперации, но оставляйте ихна заднем плане модели; организуйте кооперации в соответствии с представленнымиими классификаторами или операциями либо помещайтев пакеты, ассоциированные с системой в целом.Глава 29.
Образцы и каркасыВ этой главе:Образцы и каркасыМоделирование образцов проектированияМоделирование архитектурных образцовОбеспечение доступности образцовВсе хорошо структурированные системы полны образцов (patterns).Образец предлагает типичное решение типичной проблемы в данном контексте. Механизм – это образец проектирования, применяемый к сообществу классов; каркас (framework) – это, как правило,архитектурный образец, предлагающий расширяемый шаблон дляприложений в некоторой предметной области.Образцы используются для специфицирования механизмови каркасов, образующих архитектуру системы. Вы делаете образецдоступным, ясно идентифицируя все «вилки», «розетки», «кнопки»и «циферблаты», с помощью которых пользователь настраиваетобразец для применения его в определенном контексте.ВведениеО том, сколько существует способов собрать дом из кучи досок,можно было бы исписать тысячи страниц.
Мастер из СанFФранцископредставит на ваш суд выкрашенное в яркий цвет здание в викторианском стиле, с остроконечной крышей. Строитель из штата Мэн превратит груду досок в домик в виде солонки, обшитойдранкой.Внешне эти дома представляют собой два совершенно разныхархитектурных стиля. Каждый строитель, основываясь на собственном опыте, выберет тот стиль, который лучше всего удовлетворяет требованиям заказчика, а затем слегка подкорректируетс учетом пожеланий клиента и ограничений, накладываемых выбранным местом, а также с местными строительными нормамии правилами.Образцы и каркасы402При проектировании дома нельзя снять со счетов и некоторыеобщие проблемы, устанавливающие разумные пределы архитекторским фантазиям. Есть лишь ограниченное число проверенныхспособов конструирования стропил, на которые опирается крыша,и ограниченное число способов проектирования несущей стеныс дверными и оконными проемами.
Каждому строителю для решения этих типичных проблем придется выбрать те или иные механизмы, приспосабливая их к общему архитектурному стилю и местным нормам.Построение программных систем подчиняется тем же принципам. Всякий раз, отрывая глаза от конкретных строк кода, вы обнаруживаете типичные механизмы, которые определяют способ организации классов и других абстракций. Например, в управляемойсобытиями системе применение образца проектирования, известного под именем «цепочка обязанностей», – это типичный способ организации обработчика событий.
Если взглянуть чуть выше уровняэтих механизмов, то вы увидите типичные каркасы, формирующиеархитектуру всей системы. Например, в информационных системахприменение трехслойной архитектуры – распространенный способдостижения четкого разделения обязанностей между пользовательским интерфейсом, хранением информации и бизнесFобъектамии правилами.В UML вам нередко придется моделировать образцы проектиКооперацииобсуждают- рования, также называемые механизмами, которые можно предся в главе 28, ставить в виде коопераций. Аналогичным образом архитектурныеобразцы моделируются как каркасы, представляемые в виде пакепакеты –тов со стереотипами.в главе 12.Для образцов обоих типов в UML предусмотрено особое графическое представление (см. рис.
29.1).«»Рис. 29.1. Механизмы и каркасыБазовые понятия403Базовые понятияОбразец (pattern) – это общее решение типичной проблемыв данном контексте. Механизм – это образец проектирования, применимый к сообществу классов. Каркас (framework) – это архитектурный образец, предлагающий расширяемый шаблон для приложений в некоторой предметной области.Образцы и архитектураПрограммнаяархитектура обсуждаетсяв главе 2.Занимаясь разработкой архитектуры новой системы или развитием существующей, вы в любом случае никогда не начинаетес нуля. Напротив, прежний опыт и соглашения наталкивают васна применение типичных приемов решения типичных проблем.Например, при построении системы, активно взаимодействующейс пользователем, вы можете задействовать испытанный образец «модель–представление–контроллер» (model–view–controller), который позволяет четко отделить объекты (модель) от их внешнегопредставления и от агента, обеспечивающего их синхронизацию(контроллер).
А при создании систем дешифровки провереннымспособом организации системы окажется применение архитектуры«классной доски» (blackboard), хорошо приспособленной для решения сложных задач методом проб и ошибок.То и другое представляет пример образца – типичного решениятипичных задач в данном контексте. Любая хорошо структурированная система включает в себя множество образцов на различныхуровнях абстракции. Образцы проектирования описывают структуру и поведение сообщества классов, а архитектурные образцы –структуру и поведение системы в целом.Образцы входят в UML просто потому, что являются важной составляющей словаря разработчика.