Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Дж. Арлоу, А. Нейштадт - UML 2 и Унифицированный процесс - Практический объектно-ориентированный анализ и проектирование

Дж. Арлоу, А. Нейштадт - UML 2 и Унифицированный процесс - Практический объектно-ориентированный анализ и проектирование, страница 91

Описание файла

PDF-файл из архива "Дж. Арлоу, А. Нейштадт - UML 2 и Унифицированный процесс - Практический объектно-ориентированный анализ и проектирование", который расположен в категории "книги и методические указания". Всё это находится в предмете "объектно-ориентированный анализ и проектирование" из седьмого семестра, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 91 страницы из PDF

Существует два типа псевдосостояний предыстории – неглубокая и глубокая предыстории. Рассмотрим их по очереди.22.5.1. Неглубокая предысторияНа рис. 22.12 показан конечный автомат прецедента BrowseCatalog системы электронной коммерции.В данном примере из суперсостояния Browsing можно выйти по трем событиям:• exit – завершает автомат и возвращается на то место, где осуществлялось выполнение до него (нет необходимости рассматривать этотслучай более подробно);• goToBasket – осуществляет переход в составное состояние DisplayingBasket, в котором отображается текущее содержимое корзины дляпокупок;• goToCheckout – осуществляет переход в составное состояние CheckingOut, в котором покупателю представляется заказ с перечислением всех покупок.При возвращении в состояние Browsing из DisplayingBasket или CheckingOutбыло бы неплохо, чтобы пользователи попадали именно туда, где остановились.

Только такое поведение имеет смысл.Неглубокая предыстория запоминает последнее подсостояние того жеуровня, что и псевдосостояние неглубокой предыстории.Псевдосостояние неглубокой предыстории может иметь множество входящих переходов, но только один исходящий. Псевдосостояние неглубокой предыстории запоминает, в каком подсостоянии вы находилисьпри выходе из суперсостояния. Если затем происходит возвращение из502Глава 22. Дополнительные аспекты конечных автоматовBrowseCatalogBrowsingreturnexitDisplayingItemgoT oIndexselectProductDisplayingIndexgoToBasketgoToCheckoutgoToCheckoutDisplayingBasketgoToCatalogCheckingOutAlphabeticalbrowseIndexgoToCatalogbyCategoryalphabeticalByCategoryHпсевдосостояние неглубокой предысторииРис. 22.12.

Неглубокая предысториявнешнего состояния в состояние предыстории, индикатор автоматически перенаправляет переход в последнее подсостояние, которое было запомнено (в данном случае DisplayingIndex или DisplayingItem). Если входв суперсостояние осуществляется впервые, такого подсостояния нет.Поэтому срабатывает единственный исходящий переход индикаторасостояния предыстории, и вы переходите в состояние DisplayingIndex.Благодаря предыстории суперсостояния запоминают последнее подсостояние, которое было активно при выходе из суперсостояния. Неглубокая предыстория обеспечивает запоминание подсостояния, находящегося на том же уровне, что и сам индикатор состояния предыстории. Однако на рис.

22.12 можно увидеть, что DisplayingIndex само является составным состоянием. Неглубокая предыстория не обеспечиваетзапоминание подсостояний этого состояния. Для этого необходима глубокая предыстория.22.5.2. Глубокая предысторияГлубокая предыстория запоминает последнее подсостояние того же илиболее низкого уровня, чем псевдосостояние глубокой предыстории.50322.6. Что мы узналиBrowseCatalogBrowsingreturnexitDisplayingItemgoT oIndexselectProductDisplayingIndexgoToBasketgoToCheckoutgoToCheckoutDisplayingBasketgoToCatalogCheckingOutAlphabeticalbrowseIndexgoToCatalogbyCategoryalphabeticalByCategoryH*псевдосостояние глубокой предысторииРис. 22.13. Глубокая предысторияС помощью глубокой предыстории можно запоминать не только активное подсостояние того же уровня, что и псевдосостояние предыстории, но и подподсостояния любого уровня вложенности.На рис. 22.13 автомат был модифицирован для использования глубокой предыстории.

В данном случае мы будем не только возвращатьсяв состояние DisplayingIndex или DisplayingItem, но и восстанавливать типиндекса (Alphabetical или ByCategory). Это можно было бы смоделироватьи без применения глубокой предыстории, но все было бы намногосложнее.Как и неглубокая, глубокая предыстория может иметь множество входящих переходов, но только один исходящий переход.

Исходящий переход срабатывает при первом входе в суперсостояние, когда нет последнего подсостояния, которое было запомнено.22.6. Что мы узналиUML предоставляет богатый синтаксис конечных автоматов, которыйпозволяет представлять сложное поведение в виде лаконичных автоматов. Мы узнали следующее:• Составные состояния могут содержать один или более вложенныхподавтоматов – подсостояния наследуют все переходы своего суперсостояния.504Глава 22. Дополнительные аспекты конечных автоматов•Каждый подавтомат существует в собственной области.•Конечное псевдосостояние действует только в рамках области.•Терминальное псевдосостояние используется для завершениявсех областей.•Последовательное составное состояние содержит только один вложенный подавтомат.•Параллельное составное состояние содержит два или более вложенных подавтоматов, которые выполняются параллельно.•••При входе в состояние происходит ветвление, и подавтоматы начинают свое параллельное выполнение.•Если у всех подавтоматов есть состояние остановки, суперсостояние нельзя покинуть, пока не будут завершены все подавтоматы; это объединение.•Если подавтоматы осуществляют явные переходы во внешниесостояния, можно покинуть суперсостояние без объединения.Состояние подавтомата – это ссылка на другой конечный автомат:•упрощает сложные конечные автоматы;•обеспечивает повторное использование конечных автоматов.Взаимодействие подавтоматов:••значения атрибутов – один подавтомат задает значение атрибута, а другие подавтоматы проверяют это значение.Предыстория позволяет суперсостоянию запоминать последнееподсостояние перед исходящим переходом.••Неглубокая предыстория позволяет суперсостоянию перед исходящим переходом запоминать последнее подсостояние того жеуровня, что и само псевдосостояние неглубокой предыстории:•при возвращении в псевдосостояние неглубокой предысториипереход направляется в последнее подсостояние, которое было запомнено;•при первом входе (последнее подсостояние отсутствует) срабатывает единственный выходной переход псевдосостояниянеглубокой предыстории.Глубокая предыстория позволяет суперсостоянию перед исходящим переходом запоминать последнее подсостояние любогоуровня:•при возвращении в псевдосостояние глубокой предысториипереход направляется в последнее подсостояние, которое было запомнено;•при первом входе (последнее подсостояние отсутствует) срабатывает единственный выходной переход псевдосостоянияглубокой предыстории.VРеализация23Рабочий поток реализации23.1.

План главыВ рабочем потоке реализации для ОО аналитика или проектировщикаработы очень мало, поэтому эта часть книги самая маленькая. Тем неменее здесь есть некоторые вопросы, требующие внимательного рассмотрения. Хотя основная деятельность потока реализации – производство кода, здесь попрежнему присутствуют некоторые элементыUMLмоделирования.23.2. Рабочий поток реализацииРабочий поток реализации всерьез начинается в фазе Уточнение и является основным потоком фазы Построение (рис. 23.2).23.2. Рабочий поток реализации23.3. Артефакты реализации – метамодель23.4. Детализация рабочего потока реализации23.5. Артефакты23.6.

Что мы узналиРис. 23.1. План главы508Глава 23. Рабочий поток реализацииНачалоУточнениеПостроениеВнедрениеОпределениетребованийАнализПроектированиеРеализацияТестированиеПредварительныеитерацииШаг1Шаг2ШагnШагn+1Шагn+2ШагmШагm+1Рис. 23.2. Рабочий поток реализации. Адаптировано с рис. 1.5 [Jacobson 1]с разрешения издательства Addison+WesleyПоток реализации – основной поток фазы Построение.Реализация состоит в преобразовании проектной модели в исполняемый код.

С точки зрения аналитика или проектировщика цель реализации – производство модели реализации, если в этом возникает необходимость. Эта модель включает распределение (преимущественно тактическое) проектных классов по компонентам. Как это делается, в большой степени зависит от целевого языка программирования.Реализация состоит в преобразовании проектной модели в исполняемый код.Основное внимание в процессе реализации направлено на производство исполняемого кода.

Создание модели реализации может быть побочным продуктом этого процесса, но не явной деятельностью моделирования. На самом деле многие инструментальные средства моделирования позволяют создавать модель реализации из исходного кода путемобратного проектирования. Это предоставляет программистам возможность эффективно выполнять моделирование реализации.Однако есть два случая, когда очень важно, чтобы опытные аналитикиили проектировщики провели явное моделирование реализации.• Если предполагается генерировать код прямо из модели, понадобится определить такие детали, как исходные файлы и компоненты (если не используются применяемые по умолчанию значения у средства моделирования).23.3. Артефакты реализации – метамодель•509Если осуществляется компонентноориентированная разработка(CBD) с целью повторного использования компонентов, распределение проектных классов и интерфейсов по компонентам становитсястратегически важным вопросом.

Вероятно, вы захотите сначаласмоделировать эту часть проекта, а не перекладывать все на плечиодного программиста.В этой главе рассматривается, что включает в себя процесс созданиямодели реализации.23.3. Артефакты реализации – метамодельОтношения между моделью реализации и проектной моделью оченьпросты. Фактически модель реализации – это представление проектной модели с точки зрения реализации. Иными словами, модель реализации – это часть проектной модели, что и отражено на рис. 23.3.Проектная модельМодель реализацииРис.

Свежие статьи
Популярно сейчас