Перечислим ответы на ранее поставленные вопросы:
1. Студент хочет зарегистрироваться на курсы.
2. Преподаватель хочет выбрать курсы, которые он будет читать.
3. Регистратор должен создать учебный план и составить каталог на семестр.
4. Регистратор должен хранить информацию о курсах, преподавателях и студентах.
5. Система оплаты должна получать необходимую информацию из системы регистрации.
Основываясь на полученных ответах, можно выделить следующих актеров: студент (Student), преподаватель (Professor), регистратор (Register) и система оплаты (Billing system).
Алгоритм создания актеров в программе Rational Rose:
1. Щелкните правой кнопкой мыши по разделу Use Case View (Представление прецедентов) в окне браузера.
2. В появившемся контекстно-зависимом меню выберите команду New => Actor (Создать => Актер). В список окна браузера будет добавлен новый актер с именем New Class.
3. Выбрав новый пункт списка, введите нужное имя актера.
Окно браузера со списком актеров для системы регистрации курсов показано на рис. 3.2.
Описание актеров
В модель желательно включить краткое описание каждого актера, в котором нужно указать роль актера при взаимодействии с системой.
Для системы регистрации курсов описание актеров может быть следующим:
студент — человек, который регистрируется для посещения занятий в университете;
преподаватель — человек, который читает лекции в университете;
регистратор — человек, управляющий системой регистрации курсов;
система оплаты — внешняя система, выполняющая функции расчетов за курсы.
Описание актеров в программе Rational Rose осуществляется при выполнении следующих действий:
1. Если окна описания нет на экране, откройте его, выбрав команду меню View => Documentation (Вид => Описание).
2. Из списка браузера выберите актера, щелкнув по нему мышью.
3. Установите курсор в окне описания и введите текст описания актера.
Пример описания актера студент показан на рис. 3.3.
Прецеденты
С помощью
Чтобы выделить прецеденты для системы, можно использовать следующую серию вопросов:
1. Каковы задачи каждого актера?
2. Будет ли актер создавать, хранить, изменять, удалять или получать информацию из системы?
3. Какой прецедент будет создавать, хранить, изменять, удалять или получать эту информацию?
4. Должен ли актер информировать систему о внезапных изменениях внешней среды?
5. Должен ли актер быть проинформирован об изменениях состояния системы?
6. Какие прецеденты будут поддерживать и обслуживать систему?
7. Могут ли все функциональные требования быть реализованы прецедентами?
В языке UML прецедент изображается в виде овала — см. рис. 3.4.
Основа правильного прецедента
На протяжении многих лет велись дискуссии на тему правильности прецедентов. Одной из проблем, с которой я столкнулась, является уровень их детализации. Насколько мал или велик он должен быть? Здесь нет однозначного ответа. Я обычно использую следующее правило: «Прецедент обычно определяет основной элемент функциональности и совершается от начала до конца. Он должен приносить что-то значимое для актера».
Например: в системе регистрации учебных курсов студент должен выбрать курсы для наступающего семестра; студент должен быть прикреплен к предлагаемым курсам; студенту должен быть выставлен счет. Это три прецедента или только один? Я бы сделала один, потому что функциональность действия определяет происходящее от начала до конца. Что бы получилось, если студента не прикрепили бы к выбранным курсам (или, по крайней мере, не известили об этом)? Или что произошло бы, если студент не получил бы счет (университет наверняка бы разорился, если бы курсы стали бесплатными)?
Другая проблема в том, как объединить функциональность различных действий, которые кажутся едиными. Например, регистратор должен добавлять курсы, удалять и изменять их. Три прецедента или один? Здесь я опять сделала бы один — работа с учебным планом, потому что действия инициируется одним актером (регистратором) и выполняются над одной сущностью системы (расписанием).
Прецеденты в системе регистрации курсов университета
В системе должны обеспечиваться следующие потребности:
актер студент использует систему для регистрации на курсы;
по завершении выбора курсов в систему оплаты должна поступить необходимая информация;