CRUD и параметризованные варианты использования

CRUD и параметризованные варианты использования

14.1. Варианты использования CRUD.
До сих пор нет общего мнения относительно того, как организовать все маленькие варианты использования типа Создать завиток, Найти завиток, Обновить завиток и Удалить завиток. Они известны как варианты использования CRUD (аббревиатура названий операций над базами данных Create, Retrieve, Update и Delete). Вопрос в том, входят ли все они в один вариант использования, чей размер больше варианта использования Управлять завитками, либо существуют самостоятельно?.
В принципе они самостоятельны, поскольку каждый представляет собой отдельную цель, возможно, осуществляемую другим лицом с другим уровнем допуска. Однако они загромождают набор вариантов использования и могут утроить число единиц, которые нужно отслеживать.
Мнения о том, как лучше всего действовать в отношении вариантов использования CRUD, разделились. Сьюзен Лилли из S.R.A. выступает за то, чтобы держать их отдельно, так как это поможет отследить, какое из основных действующих лиц имеет доступ к различным функциям. Я склонен начать с одного, Управлять завитками, чтобы уменьшить загромождение вариантов использования. Если писать варианты использования становится сложно, я выделяю одну часть, как описано в подразделе Создание из расширения нового варианта использования (раздел 8.3). Я прослеживаю доступ пользователя к системным данным и функциям с помощью отдельных рабочих таблиц. Все способы правомочны, и я не нашел достаточных оснований возводить в правило лишь один из них.
Ниже следует вариант использования, написанный Джоном Колацци и Аленом Максвеллом из Empower IT*. Они начали писать обоими способами, но затем решили объединить эти варианты использования в один, обобщенного уровня, под названием Управление. В конце концов они выделили подчиненный вариант использования Сохранить, чтобы упростить работу. Их варианты использования показывают, насколько они следовали собственному стилю в данном образце. Начав с шаблона Rational Unified Process, они пронумеровали шаги и расширения.
Вариант использования 32 0 Управление отчетами ЗА 1. Краткое описание.
Этот вариант использования описывает операции создания, сохранения, удаления, печати, выхода и отображения отчетов и управляет ими. Этот вариант использования имеет очень низкий уровень точности и обращается к другим вариантам использования, чтобы отвечать своей цели (своим целям). Другие варианты использования содержатся в документах, перечисленных в разделе Специальные требования.
1.1.
Действующие лица Пользователь (основное).
Файловая система: обычная файловая система PC или сетевая файловая система с доступом на уровне пользователей (второстепенное).
1.2.
Триггеры.
Пользователь явно выбирает операции, используя интерфейс Explorer.
1.3.
Поток событий.
1.3.1. Основной поток — открыть, отредактировать, распечатать, сохранить и выйти из отчета.
a.
Пользователь выбирает Отчет, дважды щелкнув по слову Отчет в Explorer, и выбирает его открытие (открытие также запускается двойным щелчком по слову Отчет в Explorer).
b.
Система выводит отчет на экран.
c.
Пользователь задает формат отчета и пр. с помощью варианта использования Определить спецификации отчета. Система выводит измененный отчет.
d.
Шаги end повторяются, пока пользователь не удовлетворится видом отчета.
e.
Пользователь выходит из отчета с помощью варианта использования Выйти из отчета.
f.
Пользователь может сохранить или распечатать отчет в любой момент после шага с, обратившись к варианту использования Сохранить отчет или к приведенному ниже альтернативному потоку Распечатать отчет.
Использован с разрешения авторов.
1.3.2. Альтернативные потоки.
1.3.2.1.
Создать новый отчет.
a.
Пользователь выбирает в Explorer функцию "создать новый отчет", щелкнув правой кнопкой и выбрав соответствующую строку во всплывающем меню. Система создает новый отчет с именем по умолча нию и устанавливает статус для имени "не установлено", а статус отчета — "изменяемый".
b.
Поток варианта использования продолжается, соединившись с основным потоком на шаге Ь.
1.3.2.2.
Удалить отчет.
a.
Пользователь выбирает отчет, щелкнув по слову Отчет в Explorer, и затем выбирает "удалить".
b.
Система открывает отчет (или делает его текущим, если он уже открыт) и запрашивает у пользователя подтверждение на удаление.
c.
Отчет закрывается и ресурсы освобождаются.
d.
Система удаляет имя отчета из списка отчетов и данные по отчету с носителя информации.
1.3.2.3.
Распечатать отчет.
a.
Пользователь выбирает Отчет, щелкнув в Explorer по слову Отчет, и указывает на "распечатать" ИЛИ пользователь выбирает возможность распечатки текущего отчета (отчет, редактируемый либо отображаемый в основном потоке этого варианта использования).
b.
Пользователь выбирает принтер для печати и режимы печати, определенные для принтера (диалог печати и т.д., управляемый операционной системой) ИЛИ пользователь выбирает "распечатать отчет в файл.
c.
Система загружает отчет и форматы. Система посылает задание на печать операционной системе или распечатывает отчет в указанный файл отчета. Система закрывает отчет.
1.3.2.4.
Копировать отчет.
a.
Пользователь выбирает Отчет, щелкнув в Explorer по слову Отчет, и затем выбирает "копировать".
b.
Система запрашивает новое имя отчета и подтверждает, что такого имени еще не было.
c.
Система повторяет шаг b до тех пор, пока пользователь не введет правильное (несуществующее) имя, не решит заместить существующий отчет или окончательно прервать операцию копирования.
d.
Система сохраняет отчет под указанным именем как новый отчет.
e.
Если копия замещает существующий отчет, последний удаляется.
1.3.2.5. Переименовать отчет.
a.
Пользователь выбирает Отчет, щелкнув в Explorer по слову Отчет, и затем выбирает "переименовать".
b.
Пользователь вводит новое имя, система подтверждает, что имя правильное (нестарое, несуществующее, с правильной орфографией и т.д.).
c.
Система повторяет шаг b до тех пор, пока не будет принято правильное имя либо пользователь не прекратит операцию с помощью команды "отменить".
d.
Система обновляет список отчетов, вводя новое имя для выбранного отчета.
1.3.3.
Специальные требования.
1.3.3.1.
Платформа.
Для управления операциями вывода отчета и других действий, связанных с интерфейсом пользователя, необходимо знать тип платформы.
1.3.4.
Предусловия.
Элемент данных существует в компьютере и выбран как текущий элемент.
1.3.5.
Постусловия.
1.3.5.1.
Постусловие(я) успеха [примечание: это гарантия успеха].
Система ожидает взаимодействия с пользователем. Отчет может быть загружен и выведен, либо пользователь может выйти из отчета (закрыть отчет). Все изменения сохраняются по запросу пользователя; твердая копия выдается по запросу, и список отчетов надлежащим образом обновляется при необходимости.
1.3.5.2.
Постусловие(я) неудачи [примечание: это минимальная гарантия].
Система ожидает действий пользователя. Ниже приведены возможные состояния:.
Отчет может быть загружен Список отчетов все еще правилен.
1.3.6.
Точки расширения Отсутствуют.
Вариант использования 33 в Сохранить отчет К2>.
1. Краткое описание.
Этот вариант использования описывает процесс сохранения отчета. Этот вариант использования вызывается из варианта использования Управление отчетами и из варианта использования Выйти из отчета.
1.1.
Действующие лица.
Пользователь (основное).
Файловая система: типичная файловая система PC или сетевая файловая система с доступом на уровне пользователей (второстепенное).
1.2.
Триггеры.
Чтобы вызвать этот вариант использования, пользователь выбирает операции как задачи в варианте использования Управление отчетами или вариант использования Выйти из отчета (который включен в вариант использования Управление отчетами).
1.3.
Поток событий.
1.3.1.
Основной поток — Сохранить новый отчет.
a.
Вариант использования начинается, когда пользователь выбирает Сохранить отчет.
b.
Система обнаруживает, что статус имени отчета — "не установлено", и запрашивает имя нового отчета. Пользователь выбирает имя отчета; система подтверждает, что это имя пока отсутствует в списке отчетов. Добавляет запись в список отчетов.
c.
Пользователь прекращает операцию сохранения... Вариант использования завершается.
d.
Система обновляет список отчетов, внося информацию об отчете. Система создает уникальное имя файла отчета, если оно еще не установлено, и сохраняет спецификации отчета в файловой системе.
e.
Статус отчета получает значение "неизменяемый", а статус его имени — значение "установлено".
f.
Вариант использования заканчивается выводом отчета на экран.
1.3.2.
Альтернативные потоки.
1.3.2.1.
Альтернативный подчиненный поток — Имя отчета существует — заменить.
а. Система обнаруживает имя в списке, запрашивает у пользователя указания заменить файл. Пользователь решает заменить.
Система использует имя файла существующего отчета и запись в списке отчетов. Вариант использования продолжается с шага d основного потока.
1.3.2.2.
Альтернативный подчиненный поток — Имя отчета существует — отменить.
а. Система обнаруживает имя в списке, запрашивает у пользователя указания заменить файл. Пользователь решает отменить действие. Вариант использования заканчивается выводом отчета на экран.
1.3.2.3.
Альтернативный поток — Сохранить отчет как ...
a.
Пользователь выбирает "сохранить отчет как ...".
b.
Пользователь вводит имя нового отчета, система проверяет, есть ли данное имя в списке отчетов.
Имени в списке пока нет. Система находит имя в списке, запрашивает у пользователя указание заменить файл. Пользователь отвечает "НЕТ". Вариант использования продолжается с шага Ь. с. Вариант использования продолжается с шага d основного потока.
1.3.2.4.
Альтернативный подчиненный поток — Имя отчета существует —заменить.
а. Система находит имя в списке, запрашивает у пользователя указание заменить файл. Пользователь дает указание заменить. Система использует имя файла существующего отчета и запись списка отчетов. Вариант использования продолжается с шага d основного потока.
1.3.2.5.
Альтернативный подчиненный поток — Имя отчета существует — отменить.
а. Система обнаруживает имя в списке, запрашивает у пользователя указание заменить файл. Пользователь решает отменить действие. Вариант использования заканчивается выводом отчета на экран.
1.3.2.6.
Альтернативный поток — Сохранить существующий отчет.
a.
Пользователь выбирает для текущего отчета функцию "сохранить отчет” (текущий отчет прежде был сохранен и его имя присутствует в списке отчетов).
b.
Система находит запись в списке отчетов, обновляет при необходимости данные в списке, сохраняет спецификации отчета в файле отчета.
c.
Статусу отчета присваивается значение "неизменяемый".
d.
Вариант использования заканчивается выводом отчета на экран.
1.3.3.
Специальные требования.
Отсутствуют.
1.3.4.
Предусловия.
Элемент данных существует в компьютере и выбран как.
"текущий элемент".
Отчет в настоящее время выведен на экран и установлен.
в качестве "текущего отчета".
Статус отчета — "изменяемый".
1.3.5.
Постусловия.
1.3.5.1. Постусловие(я) успеха [примечание: это гарантия успеха]. Система ожидает взаимодействия с пользователем. Отчет загружен и выведен на экран. Список отчетов обновлен (внесено имя отчета и т.д.) в соответствии с требованиями операции "сохранить". Статус отчета — "неизменяемый". Статус имени отчета — "установлено".
1.3.5.2. Постусловие(я) неудачи [примечание: это минимальная гарантия].
Система ожидает взаимодействия с пользователем. Отчет загружен и выведен на экран.
Статус отчета — "изменяемый". Статус имени отчета тот же, что и при запуске варианта использования. Список отчетов все еще правилен. (Список отчетов при необходимости приводится в порядок, когда сохранение заканчивается неудачей.).
1.3.6. Точки расширения Отсутствуют.
14.2. Параметризованные варианты использования.
Время от времени мы сталкиваемся с созданием почти одинаковых вариантов использования. Наиболее распространенные примеры — Найти клиента, Найти продукт, Найти данные о продвижении и т.д. Скорее всего, только одна группа разработчиков будет создавать общий механизм поиска, а другие команды будут его использовать.
Написать полдюжины похожих вариантов использования в свободной форме не составляет большого труда. Однако писать шесть подобных вариантов использования по полной форме довольно трудоемкое и нудное занятие. Здесь необходим метод, экономящий усилия. Я опишу такой метод с помощью варианта использования 23. Для этого варианта использования, прежде всего, характерно следующее:.
■ Именование цели в шаге очень похоже на вызов подпрограммы.
■ Варианты использования будут читать люди, а не компьютеры.
При дальнейшем рассмотрении мы отметили, что при поиске предмета, чем бы он ни был, нужна одна и та же логика:.
1.
Пользователь определяет предмет, который необходимо найти.
2.
Система производит поиск, выдает список возможных вариантов.
3.
Пользователь выбирает, возможно, повторно сортирует список и изменяет критерий поиска.
4.
Система находит предмет (или не находит).
При каждом использовании изменяются:.
■ Название предмета, который нужно найти.
■ Критерии поиска (поля поиска) предмета, который нужно найти.
■ Набор выводимых атрибутов предмета, который нужно найти (показываемые значения одно за другим).
■ Критерий сортировки списка найденных вариантов.
Мы создали параметризованный вариант использования, т.е. такой, который работает с кратким именем для каяедого из перечисленных элементов. Мы решили назвать этот варианта использования Найти что угодно. Мы решили, что немного попрактиковавшись, читатель поймет, что фраза “Служащий находит клиента” означает вызов “Найти что угодно” для поиска клиента.
Мы сделали то же самое для всех кратких имен в параметризованном подчиненном варианте использования: полей поиска, выводимых значений и критериев сортировки. Мы только определили, где писатель будет указывать подробности.
Для значений данных мы определили три уровня точности. Первым была фраза из текста варианта использования — краткое имя данных, такое как Профиль клиента. Вторым были списки полей, связанных с кратким именем данных, именующим всю собранную под ним информацию, например имя, адрес, служебный телефон, домашний телефон и т.д. Третий уровень точности был точным определением поля: длина, критерии оценки и т.д.
Вариант использования содержал только первый уровень точности. Описания данных, критерии поиска и сортировки были помещены на отдельной странице, гиперссылка на которую содержалась внутри шага варианта использования.
Результатом стал шаг действия, выглядевший примерно так:.
Служащий находит клиента с помощью параметров поиска клиента.
На странице Параметры поиска клиента определялись поля поиска, последовательность вывода полей и критерии сортировки. Читатель варианта использования щелкал по подчеркнутому выражению, чтобы увидеть содержимое страницы. Читатели, авторы и разработчики легко и быстро освоили этот механизм.
Вариант использования Найти что угодно теперь выглядит так:.
1.
Пользователь определяет параметры поиска чего-либо.
2.
Система находит все, что соответствует параметрам поиска, и выводит.
список их отображаемых значений.
3.
Пользователь может пересортировать их согласно критерию.
сортировки.
4.
Пользователь выбирает интересующий его вариант.
Этот изящный прием избавляет вызывающие варианты использования от загромождения многочисленными деталями (более низкого уровня) поиска, сортировки, пересортировки и т.д. Общее поведение при поиске локализуется и записывается лишь один раз. Постоянство для каждого, кто ведет поиск, обеспечено, и те, кому необходимо знать подробности для целей программирования, могут найти их. Разработчикам очень понравилось, что им дали только одну спецификацию механизма поиска, поэтому они не интересовались, все ли виды поиска действительно одинаковы.
Довольно советов. Закончите упражнение 5.4. Обратите особое внимание на гарантии и расширения, потому что и те, и другие важны для вызывающих вариантов использования.