Джим Арлоу, Айла Нейштадт - UML 2 и Унифицированный процесс. Практический объектно-ориентированный анализ и проектирование (1037782), страница 22
Текст из файла (страница 22)
Поэтому ветвлениеможет сократить число постусловий прецедента.4.5.6.3. Повторение в потокеИногда некоторое действие в потоке событий необходимо повторитьнесколько раз. В моделировании прецедентов это встречается не часто,но на всякий случай полезно иметь некоторую стратегию для обработки таких вариантов.Спецификация UML не определяет способа представления повторенийв потоке, поэтому мы предлагаем простые выражения с ключевымисловами Для (For) и Пока (While).4.5.6.4. Ключевое слово Для (For)Смоделировать повторение можно с помощью ключевого слова Для.Формат следующий:n.
Для (выражение, описывающее итерации)n.1. Сделать чтотоn.2. Сделать чтото другоеn.3. …n+1.Выражение, описывающее итерации, – это некоторое выражение, результат которого – количество итераций. Каждая структурированнаястрока после выражения Для повторяется столько раз, сколько определено в выражении. Пример приведен на рис. 4.10.4.5.6.5. Ключевое слово Пока (While)Ключевое слово Пока (While) используется для моделирования последовательности действий в потоке событий, которые осуществляются дотех пор, пока некоторое логическое условие истинно. Формат в данномслучае следующий:n. Пока (логическое условие)n.1.
Сделать чтотоn.2. Сделать чтото другоеn.3. …n+1.108Глава 4. Моделирование прецедентовПрецедент: FindProductID: 3Краткое описание:Система ищет некоторые продукты на основании критерия поиска, заданного Покупателем,и выводит их на экран для Покупателя.Главные актеры:ПокупательВторостепенные актеры:Нет.Предусловия:Нет.Основной поток:1.
Прецедент начинается, когда Покупатель выбирает опцию «найти продукт».2. Система запрашивает у Покупателя критерий поиска.3. Покупатель вводит запрашиваемый критерий.4. Система ищет продукты, соответствующие критерию Покупателя.5. Если система находит соответствующие продукты, тогда5.1. Для каждого найденного продукта5.1.1. Система выводит на экран миниатюрное представление продукта.5.1.2. Система выводит на экран краткое описание продукта.5.1.3. Система выводит на экран цену продукта.6.
Иначе (Else)6.1. Система сообщает Покупателю о том, что соответствующие продукты не найдены.Постусловия:Нет.Альтернативные потоки:Нет.Рис. 4.10. Моделирование повторений с помощью ключевого слова «Для»Как и ключевое слово Для, Пока используется не часто. Пример приведен на рис. 4.11. Последовательность структурированных строк послевыражения Пока повторяется до тех пор, пока логическое условие, определенное в блоке Пока, не станет ложным.4.5.7. Моделирование альтернативных потоковУ каждого прецедента есть один основной поток и может быть множество альтернативных потоков.У каждого прецедента есть основной поток и может быть множествоальтернативных потоков. Они являются альтернативными путямив прецеденте, которые перехватывают ошибки, ответвления и прерывания основного потока.
Как мы видели, спецификация прецедентавключает основной поток и список имен альтернативных потоков.Альтернативные потоки часто не возвращаются в основной поток прецедента.4.5. Спецификация прецедентов109Прецедент: ShowCompanyDetailsID: 4Краткое описание:Система выводит данные о компании для Покупателя.Главные актеры:ПокупательВторостепенные актеры:Нет.Предусловия:Нет.Основной поток:1. Прецедент начинается, когда Покупатель выбирает опцию «показать данные о компании».2. Система выводит на экран веб!страницу с данными о компании.3.
Пока Покупатель просматривает данные о компании.3.1. Система воспроизводит некоторую фоновую мелодию.3.2. Система отображает специальные предложения в баннере.Постусловия:1. Система показала данные о компании.2. Система воспроизвела фоновую мелодию.3. Система показала специальные предложения.Альтернативные потоки:Нет.Рис. 4.11. Моделирование последовательности действий в потокесобытий с помощью ключевого слова «Пока»Ключевым моментом является то, что альтернативные потоки часто невозвращаются в основной поток.
Это происходит потому, что ониобычно обрабатывают ошибки и исключения основного потока и имеют другие постусловия. Альтернативные потоки наглядно представлены на рис. 4.12.Прецедентальтернативные потокиосновной потокРис. 4.12. Основной и альтернативные потоки110Глава 4. Моделирование прецедентовПрецедент: CreateNewCustomerAccountID: 5Краткое описание:Система создает новую учетную запись для Покупателя.Главные актеры:ПокупательВторостепенные актеры:Нет.Предусловия:Нет.Основной поток:1. Прецедент начинается, когда Покупатель выбирает опцию «создать новуюучетную запись Покупателя».2.
Пока данные Покупателя недействительны.2.1. Система просит Покупателя ввести его данные, включая адрес электроннойпочты, пароль и еще раз пароль для подтверждения.2.2. Система проверяет действительность данных Покупателя.3. Система создает новую учетную запись для Покупателя.Постусловия:1. Новая учетная запись создана для Покупателя.Альтернативные потоки:InvalidEmailAddressInvalidPasswordCancelРис. 4.13. Спецификация прецедента с альтернативными потокамиАльтернативные потоки могут быть задокументированы отдельно илидобавляться в конце прецедента. Мы предпочитаем документироватьих отдельно.В качестве примера модели прецедента с альтернативными потокамирассмотрим рис. 4.13.Как видим, у этого прецедента три альтернативных потока: InvalidEmailAddress (недействительный адрес электронной почты), InvalidPassword(недействительный пароль) и Cancel (отмена).
На рис. 4.14 задокументирован альтернативный поток InvalidEmailAddress.Обратите внимание, что для ввода альтернативных потоков в шаблонпрецедента было внесено несколько изменений:• Имя – для альтернативных потоков используется следующая схемаприсваивания имен:Альтернативный поток: CreateNewCustomerAccount: InvalidEmailAddressТакое имя говорит о том, что это альтернативный поток InvalidEmailAddress для прецедента CreateNewCustomerAccount.• ID – обратите внимание на применение иерархической системы нумерации для обеспечения связи альтернативного потока с основным прецедентом.4.5. Спецификация прецедентов111Альтернативный поток: CreateNewCustomerAccount:InvalidEmailAddressID: 5.1Краткое описание:Система сообщает Покупателю, что он ввел недействительный адресэлектронной почты.Главные актеры:ПокупательВторостепенные актеры:Нет.Предусловия:1.
Покупатель ввел недействительный адрес электронной почты.Альтернативные потоки:1. Альтернативный поток начинается после шага 2.2 основного потока.2. Система сообщает Покупателю, что он ввел недействительный адресэлектронной почты.Постусловия:Нет.Рис. 4.14. Альтернативный поток InvalidEmailAddress•Актеры – перечислены актеры, принимающие участие в альтернативном потоке.•Предусловия и постусловия – альтернативные потоки могут иметь собственный набор предусловий и постусловий, отличный от набора прецедента. Если альтернативный поток возвращается в основной поток, его постусловия добавляются к постусловиям основного потока.•Альтернативный поток – шаги альтернативного потока.•У альтернативного потока не должно быть альтернативных потоков, иначе описание прецедента становится слишком запутанным.Альтернативные потоки могут быть инициированы тремя разнымиспособами:1.
Альтернативный поток может быть инициирован вместо основногопотока.2. Альтернативный поток может быть инициирован после определен+ного этапа основного потока.3. Альтернативный поток может быть инициирован в любой моментв ходе выполнения основного потока.Если альтернативный поток выполняется вместо основного потока, онинициируется главным актером и полностью замещает весь прецедент.Если альтернативный поток инициируется после определенного этапаосновного потока, он должен начинаться следующим образом:1. Альтернативный поток начинается после шага X основного потока.112Глава 4.
Моделирование прецедентовАльтернативный поток: CreateNewCustomerAccount:CancelID: 5.2Краткое описание:Покупатель отменяет процесс создания учетной записи.Главные актеры:ПокупательВторостепенные актеры:Нет.Предусловия:Нет.Альтернативные потоки:1. Альтернативный поток начинается в любой момент времени.2. Покупатель отменяет создание учетной записи.Постусловия:1. Новая учетная запись не была создана для Покупателя.Рис. 4.15. Альтернативный поток CancelТакой поток – это форма ветвления. Она отличается от рассматриваемого в разделе 4.5.6.1 тем, что является значительным отклонениемот основного потока и может в него больше не вернуться.Если альтернативный поток может быть инициирован в любой моментво время выполнения основного потока, начинать его надо следующимобразом:1. Альтернативный поток начинается в любой момент времени.Такие альтернативные потоки используются для моделирования того,что может произойти в любой точке основного потока до заключительного этапа.
Например, в прецеденте CreateNewCustomerAccount Customerможет отменить создание учетной записи в любой момент. Поток Cancelможно задокументировать, как показано на рис. 4.15.Если альтернативный поток должен вернуться в основной, можно воспользоваться следующей формой записи:N. Альтернативный поток возвращается на шаг M основного потока.В этом примере альтернативный поток выполняет свой последнийэтап N и продолжается выполнение основного потока с этапа M.4.5.7.1. Выявление альтернативных потоковЧтобы выявить альтернативные потоки, нужно внимательно изучитьосновной поток. На каждом шаге основного потока необходимо искать:•возможные альтернативы основному потоку;•ошибки, которые могут возникнуть в основном потоке;•прерывания, которые могут случиться в конкретной точке основного потока;4.5.
Спецификация прецедентов•113прерывания, которые могут произойти в любой точке основного потока.Каждый из перечисленных факторов является возможным источником альтернативного потока.4.5.7.2. Сколько альтернативных потоков?Документируйте только самые важные альтернативные потоки.Как было сказано, в прецеденте всегда есть один основной поток.Однако наряду с основным может быть много альтернативных потоков. Вопрос: «Сколько?» Надо свести число альтернативных потоковдо необходимого минимума.