2. Язык UML. Руководство пользователя. Буч_ Рамбо_ Якобсон (2-е издание) (2006) (1185732), страница 23
Текст из файла (страница 23)
Главныйже недостаток в том, что изменения в диаграмме одного уровняабстракции могут сделать недействительными диаграммы другихуровней абстракции.Для моделирования системы на разных уровнях абстракциис созданием разноуровневых моделей необходимо: С учетом потребностей пользователей определить уровеньабстракции для каждого представления и сформировать отдельную модель для каждого уровня. Наполнить модели, находящиеся на высоком уровне абстракции, простыми абстракциями, а модели, находящиеся на низком уровне абстракции – детализированными. Установитьтрассировку зависимостей между связанными элементамиразных моделей.
Если вы следуете пяти представлениям архитектуры, при моделировании систем на разных уровнях абстракции возможны четыре общих ситуации:1. Варианты использования в модели вариантов использования будут связаны с кооперациями в модели дизайна;116Диаграммы2. Кооперации будут связаны с совокупностью классов, работающих вместе в их составе;3. Компоненты в модели реализации будут связаны с элементами модели дизайна;4. Узлы в модели развертывания будут связаны с компонентами в модели реализации.Главное преимущество данного подхода в том, что диаграммыразных уровней абстракции остаются слабо связанными.
Это значит, что изменения в одной модели не окажут сильного влиянияна другие модели. Главный недостаток: потребуется немало усилий на то, чтобы синхронизировать все модели и их диаграммы.Это особенно важно, когда ваши модели относятся к разным фазамжизненного цикла разработки программного обеспечения (например, если вы решите сопровождать аналитическую модель отдельноот модели дизайна).ДиаграммыПредположим, что вы моделируете систему для WebFкоммерции.взаимодейст- Одним из основных вариантов ее использования будет размещениевия обсужзаказа. Если вы аналитик или конечный пользователь, то вероятно,даютсясоздадите некоторые диаграммы взаимодействия на высоком уровв главе 19.не абстракции, описывающие действие по размещению заказа так,как показано на рис. 7.1.Типичные приемы моделирования117Вариантыиспользования обсуждаютсяв главе 17;кооперации –в главе 28;компоненты – в главе 15;узлы – в главе 27.Рис.
7.1. Диаграмма взаимодействия на высоком уровне абстракцииМежду тем программист, отвечающий за реализацию данного сценария, должен построить другую диаграмму, где приводятся точныесообщения и добавляются новые игроки в процесс взаимодействия(рис. 7.2).Обе диаграммы обрисовывают одну и ту же модель, но с разной степенью детализации. Вторая диаграмма содержит дополнительные сообщения и роли. Целесообразно подготовить много диаграмм вроде этой, особенно если ваш инструментарий облегчаетнавигацию от одной диаграммы к другой.(acknowledge)Рис. 7.2.
Диаграмма взаимодействия на низком уровне абстракцииМоделирование сложных представленийНезависимо от того, как вы разобьете свою модель, рано илипоздно вы столкнетесь с необходимостью создания больших сложных диаграмм. Например, анализируя полную схему базы данных,включающую 100 или более абстракций, полезно будет изучить диаграмму, показывающую все эти классы и их ассоциации. Благодаряэтому вы сможете увидеть некоторые общие образцы кооперации.Если же вы рассмотрите модель на более высоком уровне абстракции, скрывающей детали, то потеряете информацию, необходимуюдля понимания.При моделировании сложного представления необходимо:Пакеты Убедиться, что не существует способа представить ту же инобсуждаютформацию на более высоком уровне абстракции (возможно,ся в главе 12;скрывая некоторые части диаграммы и оставляя другие часкооперати высокодетализированными).ции – Если вы скрыли максимум деталей, но диаграмма все ещев главе 28.сложна для восприятия, – рассмотреть возможность группировки некоторых элементов в пакеты или более высокоуровневые кооперации, а затем изменить диаграмму, представивна ней только эти пакеты или кооперации.
Если диаграмма поFпрежнему остается сложной, – использовать примечания и цвета, чтобы сконцентрировать внимание читателей на элементах, требующих пояснения. Наконец, если и после этого диаграмма нуждается в корректировке, – распечатать ее полностью и вывесить на стене. При этомдиаграмма теряет интерактивность, зато вы сможете сделать шагназад и исследовать ее на предмет наличия общих образцов.Диаграммы118Советы и подсказкиПри создании диаграмм: помните, что назначение диаграмм UML не в том, чтобыпользователь увидел симпатичные картинки, а в том, чтобывизуализировать, специфицировать, конструировать и документировать.
Диаграммы – это одно из средств подготовкиработающей системы; не все диаграммы стоит сохранять. Рассмотрите возможностьпостроения диаграмм «на лету», анализируя элементы ваших моделей, и используйте их разумным образом в процессе построения системы. Многие диаграммы можно удалитьпосле того, как они выполнят свое предназначение (но семантика, на основе которой они были построены, останетсячастью модели); не перегружайте модели излишними или избыточными диаграммами; показывайте на каждой диаграмме лишь минимум деталей,необходимый для того, чтобы она выполнила свое предназначение. Второстепенная информация может отвлечь пользователя от основной идеи, которую вы пытаетесь выразить; в то же время не создавайте чересчур упрощенных диаграмм,если только вам не нужно изобразить чтоFлибо на очень высоком уровне абстракции.
Чрезмерное упрощение можетскрыть детали, важные для понимания ваших моделей; сохраняйте баланс между структурными и поведенческимидиаграммами в вашей системе. Очень немногие системы являются полностью статическими или полностью динамическими; не делайте диаграммы слишком большими (те из них, чтоне умещаются на стандартном листе бумаги, трудно читать)или слишком маленькими (рассмотрите возможность объединения нескольких простых диаграмм в одну); присваивайте каждой диаграмме имя, которое четко поясняет ее назначение; организуйте ваши диаграммы – группируйте их в пакетыв соответствии с представлениями; не увлекайтесь форматированием диаграмм. Предоставьтеэто инструментальным средствам.Хорошо структурированная диаграмма: сосредоточена на передаче одного аспекта системы; содержит только те элементы, которые существенны для понимания этого аспекта;Советы и подсказки119 детализирована в соответствии с уровнем абстракции (показывает только те дополнения, которые важны для понимания диаграммы на данном уровне); не настолько лаконична, чтобы пользователь упустил из видуважную семантику.Когда вы рисуете диаграмму: расположите ее элементы так, чтобы свести к минимуму пересечение линий; стремитесь к тому, чтобы семантически близкие элементырасполагались рядом; используйте примечания и выделения цветом, чтобы акцентировать важные детали диаграмм.
Однако старайтесь не использовать похожие оттенки и применяйте цвета только с цельювыделения, а не для передачи важной информации.ВведениеГлава 8. Диаграммы классовВ этой главе:121проектирования вашего дома, таким образом, включает в себя компоновку всех вышеперечисленных сущностей в уникальной манере,подчиняющейся велениям здравого смысла и призванной удовлетворить все ваши функциональные и нефункциональные требования.Разработка программного обеспечения ведется примерно по тойже схеме – за исключением того, что благодаря гибкости ПО выимеете возможность определять «с нуля» свои собственные базовые строительные блоки. Диаграммы классов в UML используютсядля того, чтобы визуализировать статические аспекты этих строительных блоков и их связей, а также обозначить детали их конструирования (см.
рис. 8.1).Моделирование простых кооперацийМоделирование логической схемы базы данныхПрямое и обратное проектированиеДиаграммы классов – это наиболее часто используемый тип диаграмм,которые создаются при моделировании объектноFориентированныхсистем. Показывают набор классов, интерфейсов и коопераций,а также их связи.На практике диаграммы классов применяют для моделирования статического представления системы (по большей части этомоделирование словаря системы, коопераций или схем). Крометого, диаграммы данного типа служат основой для целой группывзаимосвязанных диаграмм – диаграмм компонентов и диаграммразмещения.Диаграммы классов важны не только для визуализации, специфицирования и документирования структурных моделей, но такжедля конструирования исполняемых систем посредством прямогои обратного проектирования.композициямножественность{subsets member}ВведениеВ любом деле, например строительстве дома, не обойтись без понятийного аппарата – в данном случае словаря, который включаетосновные строительные блоки: стены, полы, окна, двери, потолки,перекрытия.
Эти элементы в значительной мере структурированы (стены имеют высоту, ширину и толщину), но притом каждыйиз них ведет себя определенным образом (стены разных типов несутразные нагрузки; двери могут открываться и закрываться в разныестороны; существуют ограничения на размер пролетов, образуемых перекрытиями). Вы не можете рассматривать эти структурныеи поведенческие параметры независимо друг от друга: при строительстве понадобится учитывать, как они взаимодействуют. ПроцесспредоставляемыйинтерфейсРис. 8.1. Диаграмма классовДиаграммы классов122Типичные приемы моделированияБазовые понятияДиаграмма классов – это диаграмма, которая показывает наборклассов, интерфейсов, коопераций и их связи.
Графически представляет собой набор вершин и связывающих их дуг.Кооперацииобсуждаются в главе 28.Общие свойстваОбщиесвойствадиаграммобсуждаются в главе 2.Диаграмма классов, как и любая другая диаграмма, обладает именем и содержимым, которое является проекцией модели. От другихтипов диаграмм отличается конкретным наполнением.Классы обсуждаютсяв главах 4и 9; интерфейсы –в главе 11;связи – в главах 5 и 10;пакеты –в главе 12;подсистемы – в главе 32;экземпляры – в главе 13.На диаграммах классов обычно представлены следующие элементы: классы; интерфейсы; зависимости, обобщения и ассоциации.Как и другие диаграммы, они могут содержать примечания и ограничения.Также могут включать в себя пакеты или подсистемы; те и другие группируют элементы модели в более крупные образования.Иногда в диаграмму классов требуется добавить экземпляры, особенно если вы хотите визуализировать тип экземпляра (возможно,динамический).СодержимоеНа заметку.