Лекция 05 (выявление и моделирование требований

advertisement
Технология разработки
программного обеспечения
Лекция 5
Процесс разработки ПО
Процесс разработки ПО
• Выявление и описание требований – сбор данных о том, что
должна делать система;
• Планирование проекта разработки – оценка трудоемкости,
составление календарного планы, планирование качества,
управление рисками;
• Выявление вариантов использование
– моделирование вариантов использования
• Анализ – уточнение и структурирование требований
– моделирование хода анализ;
• Проектирование – реализация требований в архитектуре системы
– моделирование хода проектирование;
• Реализация (кодирование) – построение программного
обеспечения;
• Тестирование – проверяется, отвечает ли реализация
предъявляемым требованиям;
• Внедрение – передача ПО заказчику и организация его
практического применения.
Моделирование требований
Процесс разработки ПО
• Выявление и описание требований – сбор данных о том, что
должна делать система;
• Планирование проекта разработки – оценка трудоемкости,
составление календарного планы, планирование качества,
управление рисками;
• Выявление вариантов использование
– моделирование вариантов использования
• Анализ – уточнение и структурирование требований
– моделирование хода анализ;
• Проектирование – реализация требований в архитектуре системы
– моделирование хода проектирование;
• Реализация (кодирование) – построение программного
обеспечения;
• Тестирование – проверяется, отвечает ли реализация
предъявляемым требованиям;
• Внедрение – передача ПО заказчику и организация его
практического применения.
Требования заказчиков
• Функциональные требования.
• Не функциональные.
Функциональные требования
• Функциональные требования определяют
ожидаемое поведение системы – какие выходные
данные и какое поведение должно быть получено
при заданных входных данных.
• Для каждого функционального требования
должно быть детально описаны:
– все входные данные и их источники;
– единицы измерения и интервалы допустимых входных
значений;
– все выполняемые операции над входными данными;
– порядок проверки правильности входных данных;
– описание процесса преобразования входных данных в
выходные данные.
Не функциональные требования
1. требования к производительности;
2. проектные ограничения налагаемые на
реализацию;
3. требования к внешним интерфейсам.
Сценарии
• Людям обычно проще пояснить свои требования к ПО
путем их связывания с реальной жизнью (а не с
абстрактными понятиями).
• Они могут понимать и критиковать сценарии (ситуации)
того, как они могут взаимодействовать с ПС.
• Специалисты по выявлению и описанию требований к
ПО могут использовать информацию, полученную из
такого обсуждения, для формулировки реальных
требований к системе.
• Сценарии м.б. особенно полезными для добавления
деталей к общим описаниям требований.
• Сценарии являются описаниями примеров сеансов
взаимодействия пользователей с системой.
Варианты использования
(прецеденты)
• Традиционный подход к описанию
функциональных требований состоит в
– выявлении сценариев работы будущего ПО и
– их описании в виде вариантов использования (или
прецедентов).
• Варианты использования (ВИ, Use Cases)
специфицируют (детально описывают)
функциональность системы путем описания ее
поведения, зафиксированного в виде
взаимодействий пользователя с данной
системой.
Моделирование вариантов
использования
• Варианты использования – это специальный
способ записи требований.
• Моделирование вариантов использования
обычно происходит следующим образом:
1.Устанавливаются границы будущей системы.
2.Выявляются актеры.
3.Выявляются варианты использования :
- определяется вариант использования;
- устанавливаются основные и альтернативные потоки.
4.Предыдущие шаги повторяются, пока варианты
использования, актеры и границы системы не
стабилизируются.
Контекст системы
(границы системы)
• Контекст системы отделяет систему от остального
мира.
• Надо определить,
1.что является частью системы (находится внутри границ
системы) и
2.что находится вне системы (вне ее границ).
• Точное определение границ системы обычно играет
важную роль в выявлении функциональных (а иногда и
нефункциональных) требований.
• Актеры размещаются вне границ блока, а ВИ – внутри.
• В начале моделирования ВИ имеется лишь
предварительное представление о том, где находятся
границы системы.
• По мере выявления актеров и ВИ контекст системы
обретает все более четкие очертания.
Актеры
• Актеры – это роли, исполняемые сущностями,
непосредственно взаимодействующими с системой.
• Актер определяет роль, которую выполняет некоторая
внешняя сущность при непосредственном
взаимодействии с данной системой.
• Он может представлять роль пользователя или роль,
исполняемую другой системой или частью аппаратных
средств, которые касаются границ системы.
Выявление актеров
• Чтобы выявить актеров, нужно ответить на
вопросы:
–
–
–
–
–
–
–
Кто или что использует систему?
Какие роли они играют во взаимодействии?
Кто устанавливает систему?
Кто или что запускает и выключает систему?
Кто обслуживает систему?
Какие системы взаимодействуют с данной системой?
Кто или что получает и предоставляет информацию
системе?
– Происходит ли что-нибудь в точно установленное
время?
При моделировании актеров необходимо
помнить следующее:
• Актеры всегда являются внешними по
отношению к системе, следовательно, находятся
вне вашего контроля.
• Актеры взаимодействуют непосредственно с
системой – так они помогают в определении
контекста системы.
• Актеры представляют роли, исполняемые
людьми или сущностями по отношению к
системе, а не конкретных людей или сущностей.
• Один человек или сущность может играть по
отношению к системе множество ролей
одновременно или последовательно во времени.
Описания актера
• У каждого актера должно быть короткое,
осмысленное с прикладной точки зрения имя.
• Каждого актера должно сопровождать
краткое описание (одна или две строчки),
объясняющее, что данный актер из себя
представляет с прикладной точки зрения.
• Как и в классах, в обозначении актеров могут
быть представлены
– атрибуты актера и
– события, на которые он должен реагировать.
Определение вариантаиспользования
• Вариант использования описывает поведение,
демонстрируемое системой с целью получения
значимого результата для одного или нескольких актеров.
• Вариант использования описывает работу с системой
конкретного актера:
– варианты использования всегда инициируются актером;
– варианты использования всегда описываются с точки зрения
актеров.
Выявление вариантов использования
• Для выявления прецедента, нужно ответить на
вопросы:
1.Как каждый из актеров использует систему?
2. Что система делает для каждого актера?
• Выявление прецедентов начинается со списка
актеров.
• Затем рассматривается, как каждый актер
собирается использовать систему.
• Каждому варианту использования должно быть
присвоено короткое описательное имя
(описывающее действие).
• Моделирование вариантов использования это
итеративный процесс, осуществляемый путем
поэтапного уточнения.
• Все начинается с имени вариантов
использования, а детали дополняются позже.
• Эти детали состоят из исходного краткого
описания, которое уточняется до полной
спецификации.
Полезный список вопросов, на
которые следует ответить:
1. Какие функциональные возможности понадобятся
конкретному актеру от системы?
2. Система сохраняет и извлекает информацию?
3. Если да, какой из актеров инициирует это поведение?
4. Что происходит, когда система изменяет состояние
(например, при запуске и выключении системы)?
5. Кто-нибудь из актеров получает при этом уведомление?
6. Какие-либо внешние события оказывают влияние на
систему?
7. Как система узнает об этих событиях?
8. Система взаимодействует с какой-либо внешней
системой?
9. Система генерирует какие-либо отчеты?
Диаграмма вариантов использования
Словарь проекта
(глоссарий проекта)
• В глоссарии проекта должна быть отражена бизнестерминология и жаргон.
• Глоссарий проекта является, один из важных
артефактов проекта.
• Любая область деятельности имеет собственный
уникальный язык, и основной целью процесса
выработки и анализа требований является понимание
и фиксация этого языка.
• Глоссарий обеспечивает словарь ключевых деловых
терминов и определений.
• Он должен быть понятен всем участникам проекта,
включая все заинтересованные стороны.
• Кроме определения ключевых терминов глоссарий
проекта должен включать синонимы и омонимы.
Описание варианта использования
• Для каждого варианта использования (ВИ)
составляется:
– спецификация ВИ – текстовый документ
содержащий сжатое, но полное описание данного
ВИ;
– диаграмма ВИ – графическое описание связей
• между актерами и вариантами использования;
• между различными вариантами использования.
Спецификация варианта
использования
• Для спецификации вариантов использования нет UML
стандарта
• Обычно в шаблон простой спецификации ВИ входит
следующая информация:
1.имя прецедента;
2.ID прецедента;
3.краткое описание – абзац, в котором изложена цель
прецедента;
4.актеры, задействованные в прецеденте;
5.предусловия – условия, которые должны выполниться, чтобы
прецедент мог осуществиться; это ограничения на состояние
системы;
6.основной поток – шаги выполнения прецедента;
7.постусловия – условия, которые должны выполниться по
окончанию прецедента;
8.альтернативные потоки – список альтернативных основному
потоку событий.
Спецификация прецедентов
Пример программного обеспечения
аукциона
• Требуется разработать ПО для проведения
электронных аукционов.
• Продавцы размещают на продажу товары
(лоты), задает начальную цену и срок торгов.
• Покупатели могут назначать за товары свои
цены.
• Кто предложит наибольшую цену в течении
срока торгов, тот и получает право на покупку
товара за предложенную цену.
Спецификация первого варианта
использования
• ВИ1: Размещение некоторого элемента на аукционе.
– Основной актер: Продавец (Seller)
– Предусловие: Продавец должен подключиться к системе (logged
in).
• Основной успешный сценарий:
1.
2.
3.
4.
Продавец отправляет элемент (его категорию, описание,
изображение и т.п.) на аукцион.
Система показывает продавцу ранее выставленные на продажу
элементы.
Продавец определяет начальную цену торгов и время закрытия
аукциона.
Система принимает данный элемент и публикует его.
• Не стандартные сценарии:
– 2 a) В данной категории нет ранее выставленных на
продажу элементов.
• Система сообщает продавцу о такой ситуации.
Спецификация второго варианта
использования
• ВИ2: Выполнение торгов
– Основной актер: Покупатель
– Предусловие : Покупатель должен подключиться к системе (logged in).
• Основной успешный сценарий:
1. Покупатель выполняет поисковый запрос, или выполняет просмотр и выбор
нужного элемента.
2. Система показывает рейтинг продавца, начальную запрашиваемую цену,
текущую цену и высшую цену; просит покупателя предложить свойю цену.
3. Покупатель вводит предлагаемую цену, за которую он согласен купить
данный элемент.
4. Система принимает предлагаемую цену; блокирует деньги на счете
покупателя.
5. Система обновляет текущую цену; информирует других пользователей;
обновляет записи для данного элемента.
• Не стандартные сценарии :
– 3 a) Предлагаемые цены меньше чем максимальная предложенная цена.
• Система просит покупателя ввести новую цену.
– 4 a) Покупатель не имеет достаточно денег на своем счету.
• Система прерывает покупку и просит покупателя увеличить кол-во денег
на его счету.
Спецификация третьего варианта
использования
• ВИ3: Завершение аукциона
– Первичный актер: Аукционная система.
– Предусловие: Достигнуто завершение последней даты
проведения торговли.
• Основной успешный сценарий :
1. Выбрать покупателя предложившего наивысшую цену; послать эл.
письма выбранному покупателю и продавцу с информацией о
конечной цене элемента; послать email другим участникам торга.
2. Списать деньги со счета покупателя и записать их на счет продавца.
3. Разблокировать все деньги заблокированные у участников торга.
4. Передать со счета продавца комиссионные деньги на счет
организации аукциона.
• Не стандартные сценарии: Нет
Ветвление в варианте использования
• Для представления ответвления
потока используйте ключевое
слово Если (If).
• Пример, показывает хорошо
структурированный поток событий
с двумя ветвями.
• Каждая ветвь начинается с
ключевого слова Если и простого
логического выражения, такого как
Если пользователь вводит новое
количество, которое может быть
истинным (true) или ложным
(false).
• Структурированный текст под
выражением Если – это то, что
произойдет, если логическое
выражение истинно.
Ветвление в варианте использования
Повторение в потоке
• Иногда некоторое действие в потоке событий
необходимо повторить несколько раз.
• В моделировании ВИ это встречается не часто,
но нужно иметь некоторую стратегию для их
обработки.
• Спецификация UML не определяет способа
представления повторений в потоке, поэтому
предлагаются простые выражения с
ключевыми словами Для (For) и Пока (While).
Ключевое слово Для (For)
• Смоделировать повторение можно с помощью
ключевого слова Для.
n. Для (выражение, описывающее итерации)
n.1. Сделать что-то
n.2. Сделать что-то другое
n.3. …
n+1.
• Выражение, описывающее итерации, – это
некоторое выражение, результат которого –
количество итераций.
• Каждая структурированная строка после
выражения Для повторяется столько раз, сколько
определено в выражении.
Ключевое слово Пока (While)
• Ключевое слово Пока (While) используется
для моделирования последовательности
действий в потоке событий, которые
осуществляются до тех пор, пока некоторое
логическое условие истинно.
n. Пока (логическое условие)
n.1. Сделать что-то
n.2. Сделать что-то другое
n.3. …
n+1.
Моделирование альтернативных
потоков
• У каждого варианта использования есть один основной
поток и может быть множество альтернативных
потоков.
• Они являются альтернативными путями в варианте
использования, которые перехватывают ошибки,
ответвления и прерывания основного потока.
• Альтернативные потоки часто не возвращаются в
основной поток варианта использования.
Спецификация варианта использования с
альтернативными потоками
Альтернативный поток
InvalidEmailAddress
Альтернативный поток Cancel
Выявление альтернативных потоков
• Чтобы выявить альтернативные потоки, нужно
внимательно изучить основной поток.
• На каждом шаге основного потока
необходимо искать:
– возможные альтернативы основному потоку;
– ошибки, которые могут возникнуть в основном
потоке;
– прерывания, которые могут случиться в
конкретной точке основного потока;
– прерывания, которые могут произойти в любой
точке основного потока.
Отображение требований
• При отображении требований
устанавливаются взаимосвязи между
описанием требований и моделью вариантов
использования.
• Описание требований и модель ВИ
обеспечивают две «базы данных»
функциональных требований.
• Важно сопоставить эти две модели, чтобы
выяснить, нет ли в одной из них чего-то, что не
охвачено в другой, и наоборот.
Отображение требований (2)
• Между отдельными функциональными
требованиями и вариантами использования
могут быть отношения «многие-ко-многим».
– один прецедент будет охватывать множество
отдельных функциональных требований, и
– одно функциональное требование может
появляться в нескольких разных прецедентах.
Когда применять моделирование
вариантов использования
• Варианты использования хорошо применять
для определения функциональности системы.
• Они плохо подходят для выявления
ограничений системы.
• Варианты использования фиксируют
функциональные требования и поэтому не
эффективны для систем, в которых
доминируют нефункциональные требования.
Когда следует применять варианты
использования
• Варианты использования являются лучшим
выбором для фиксирования требований в тех
случаях, когда:
– в системе преобладают функциональные
требования;
– в системе много типов пользователей, которым
она предоставляет разные функциональные
возможности (много актеров);
– в системе много интерфейсов (много актеров).
Когда следует применять варианты
использования
• Варианты использования не стоит применять
в тех случаях, когда:
– в системе преобладают нефункциональные
требования;
– в системе мало пользователей;
– в системе мало интерфейсов.
Дополнительные возможности
моделирования вариантов
использования
Обобщение актеров
• Обобщение актеров выносит поведение,
общее для двух или более актеров, в
актера-родителя.
• Общее поведение можно вынести путем
обобщения актеров.
Например
• Создается абстрактный актер, называемого Purchaser
(покупатель), который взаимодействует с прецедентами
ListProducts, OrderProducts и AcceptPayment.
• Customer и SalesAgent – это конкретные актеры, потому что
данные роли могут выполнять реальные люди (или другие
системы).
• Purchaser – абстрактный актер, поскольку он является
абстракцией, введенной просто для представления общего
поведения (возможности делать покупки) двух конкретных
актеров.
• Customer и SalesAgent наследуют все роли и отношения с
прецедентами своего абстрактного родителя.
Обобщение вариантов
использования
• Обобщение ВИ выполняется, если есть один
или более ВИ, которые на самом деле
являются уточнениями (специализациями)
более общего прецедента.
• Данный прием следует применять, только
если он упрощает модель ВИ.
• Обобщение ВИ выносит поведение, общее
для одного или более ВИ, в родительский ВИ.
Обобщение вариантов использования
• При обобщении ВИ дочерние ВИ представляют
более специализированные формы их
родителей.
• Потомки могут:
– наследовать возможности родительского ВИ;
– вводить новые возможности;
– переопределять (менять) унаследованные
возможности.
• Дочерний ВИ автоматически наследует все
возможности своего родителя.
• Однако не все возможности ВИ могут быть
переопределены.
Описание родительского варианта
использования FindProduct
Описание дочернего варианта
использования FindBook
Отношение «include»
• Иногда в вариантах использования содержится
многократное описание одних и тех же действий.
• Например, рассмотрим систему Personnel (персонал)
– Практически любое действие системы начинается с получения
данных о конкретном служащем.
– Если бы эту последовательность событий приходилось писать
каждый раз, когда необходимы данные служащего, прецеденты
имели бы повторяющиеся части.
• Отношение «include», устанавливаемое между ВИ,
позволяет включить поведение одного ВИ в поток другого
варианта использования.
• Отношение «include» выносит шаги, общие для нескольких
ВИ, в отдельный вариант использования, который потом
включается в остальные.
Прецеденты системы Personnel
Включение прецедента
Отношение «extend»
• Отношение «extend» предоставляет возможность
ввести новое поведение в существующий вариант
использования.
• Базовый вариант использования предоставляет набор
точек расширения (extension points) – точек входа, в
которые может быть добавлено новое поведение.
• А расширяющий вариант использования предоставляет
ряд сегментов вставки, которые можно ввести в
базовый прецедент в места, указанные точками входа.
• Отношение «extend» может использоваться для того,
чтобы точно указать, какие именно точки
расширения базового варианта использования
подлежат расширению.
Отношение «extend»
Обозначение точек расширения
Расширяющий прецедент
Когда применять дополнительные
возможности
• Применяйте дополнительные возможности, только если
они упрощают модель и делают ее более понятной.
• Применяйте дополнительные возможности, только если
они упрощают модель варианта использования.
• Лучшие модели вариантов использования – это простые
модели.
• Модель варианта использования – это описание
требований, то есть она должна быть понятной не только
разработчикам моделей, но и заинтересованным
сторонам.
• Простая модель вариантов использования, в которой
дополнительные возможности применяются редко или
вообще отсутствуют, предпочтительнее модели,
переполненной дополнительными возможностями.
Советы и рекомендации по
написанию прецедентов
1. Делать варианты использования
короткими и простыми.
2. Уделять основное внимание на «что
требуется», а не «как делается».
3. Избегать функциональной декомпозиции.
Избегайте функциональной
декомпозиции
Download