Что показывают предусловия и постусловия выполнения сценариев

Рекомендации по написанию спецификаций вариантов использования

UML не определяет единых правил для создания спецификации вариантов использования или прецедентов (кому, что нравится). Однако существует ряд шаблонов, которыми Вы можете воспользоваться. Шаблон от Алистера Коберна. Шаблон от Карла Вигерса. Шаблон от RUP. Шаблон от ICONIX. Шаблон от OpenUP. И т.п. В конце концов Вы можете изобрести свой собственный шаблон. Нужно лишь придерживаться максимальной простоты.

Ниже будут представлены рекомендации и примеры вариантов использования на базе следующего шаблона:

Имя варианта использования

Нет стандарта.
Рекомендуем начинать с глагола или глагольной группы (отглагольного существительного). Например, Выплатить налог с оборота или Выплата налога с оборота.
Не смешивайте оба стиля в одной модели.
Является уникальным идентификатором в рамках модели ВИ

ID варианта использования

Суррогат идентификатора. Используется для облегчения и краткости при описании ссылок

Краткое описание

Изложение цели или сути варианта использования.
Один абзац.

Действующие лица

Каждый ВИ всегда инициируется одним ДЛ.
Но в разные моменты времени один и тот же вариант использования может быть инициирован разными ДЛ.
Любое действующее лицо, которое может инициировать вариант использования, является основным действующим лицом. Все остальные ДЛ — второстепенные.

Предусловия и постусловия

Ограничения
Предусловия определяют в каком состоянии должна находится система, чтобы запуск ВИ был возможным
Постусловия определяют, какие условия будут истинными после завершения ВИ
Рекомендуется явно указывать на отсутствие перд- и постусловий. Например, словом Нет.

Основной поток

«Идеальный» ход развития событий.
Все идет, как ожидается и хочется
Нет ошибок, отклонений, прерываний или ответвлений
Первый шаг рекомендуем записывать, так: 1. ВИ начинается, когда
Шаблон записи шага —

Пример 1

ВИ: Оплатить налог с оборота
ID: 1
Краткое описание:
Выплата налога с оборота в Налоговое управление по окончанию налогового периода
Основное действующее лицо:
Время (Таймер)
Второстепенные действующие лица:
Налоговое управление
Предусловия:
1. Конец налогового периода
Основной поток:
1. ВИ начинается в конце налогового периода
2. Система определяет сумму Налога с оборота, которую необходимо выплатить Налоговому управлению
3. Система посылает электронный платеж в Налоговое управление.
Постусловия:
1. Налоговое управление получает соответствующую сумму Налога с оборота
Альтернативные потоки:
Нет.

Если использование времени (или таймера) в качестве действующего лица вызывает затруднение в понимании, мы предлагаем другой вариант примера 1

Пример 1а

ВИ: Оплатить налог с оборота
ID: 1
Краткое описание:
Выплата налога с оборота в Налоговое управление по окончанию налогового периода
Основное действующее лицо:
Бухгалтер
Второстепенные действующие лица:
Налоговое управление
Предусловия:
1. Конец налогового периода
Основной поток:
1. ВИ начинается, когда Бухгалтер выбирает опцию «оплатить налог с оборота»
2. Система определяет сумму Налога с оборота, которую необходимо выплатить Налоговому управлению
3. Система посылает электронный платеж в Налоговое управление.
Постусловия:
1. Налоговое управление получает соответствующую сумму Налога с оборота
Альтернативные потоки:
Нет.

Альтернативные потоки (ветвления и повторения)

Сначала рассмотрим ситуацию простых ветвлений и повторений. Стоит отметить, что спецификация UML не определяет способа представления ветвления и повторения в потоке.

Ветвления потока или повторения в потоке можно сократить, уменьшая число вариантов использования, но пользоваться этим надо умеренно!

Условный выбор — Если

Пример 2

ВИ: Управлять торговой корзиной
ID: 2
Краткое описание:
Покупатель меняет количество товаров в корзине
Основные действующие лица:
Покупатель
Второстепенные действующие лица:
Нет
Предусловия:
1. Содержимое корзины для покупок является видимым
Основной поток:
1. ВИ начинается, когда Покупатель выбирает товарную позицию в корзине
2. Если Покупатель выбирает «удалить позицию»
2.1. Система удаляет позицию из корзины
3. Если Покупатель вводит новое количество
3.1. Система обновляет количество товаров в корзине
Постусловия:
Нет
Альтернативные потоки:
Нет.

Повторение в потоке

Пример 3

ВИ: Найти продукт
ID: 3
Краткое описание:
Система ищет некоторые продукты на основании критерия поиска, заданного Покупателем, и выводит их на экран для Покупателя
Основные действующие лица:
Покупатель
Второстепенные действующие лица:
Нет
Предусловия:
Нет
Основной поток:
1. ВИ начинается, когда Покупатель выбирает опцию «найти продукт»
2. Система запрашивает у Покупателя критерий поиска.
3. Покупатель вводит запрашиваемый критерий.
4. Система ищет продукты, соотвествующие критерию Покупателя.
5. Если система находит соответствующие продукты, тогда
5.1. Для каждого найденного продукта
5.1.1. система выводит на экран миниатюрное представление продукта
5.1.2. система выводит на экран краткое описание продукта
5.1.3. система выводит на экран цену продукта
6. Иначе
6.1. Система сообщает Покупателю о том, что соответствующие продукты не найдены.
Постусловия:
Нет
Альтернативные потоки:
Нет

Пример 4

ВИ: Показать данные о компании
ID: 4
Краткое описание:
Система выводит данные о компании для Покупателя
Основные действующие лица:
Покупатель
Второстепенные действующие лица:
Нет
Предусловия:
Нет
Основной поток:
1. ВИ начинается, когда Покупатель выбирает опцию «показать данные о компании»
2. Система выводит на экран веб-страницу с данными о компании.
3. Пока Покупатель просматривает данные о компании
3.1. Система воспроизводит некоторую фоновую мелодию
3.2. Система отображает специальные предложения в баннере
Постусловия:
1. Система показала данные о компании
2. Система воспроизвела фоновую мелодию
3. Система показала специльные предложения
Альтернативные потоки:
Нет

Моделирование альтернативных потоков

У каждого ВИ есть один основной поток и может быть множество альтернативных потоков.
Альтернативные потоки часто не возвращаются в основной поток ВИ. Это связано с тем, что они обычно обрабатывают ошибки и исключения основного потока и имеют другие постусловия.
Альтернативные потоки можно задокументировать в конце ВИ или отдельно. Здесь будет представлен второй вариант.
Спецификация альтернативного потока подобна спецификации всего ВИ.

Альтернативные потоки могут быть инициированы тремя разными способами:

1. вместо основного потока. Такая ситуация часто возникает в вариантах использования типа CRUD (Create, Read, Update, Delete)

2. после определенного этапа основного потока

3. в любой момент в ходе выполнения основного потока

Пример 5

ВИ: Создать новую учетную запись Покупателя
ID: 5
Краткое описание:
Система создает новую учетную запись для Покупателя
Основные действующие лица:
Покупатель
Второстепенные действующие лица:
Нет
Предусловия:
Нет
Основной поток:
1. ВИ начинается, когда Покупатель выбирает опцию «создать новую учетную запись Покупателя»
2. Пока данные Покупателя недействительны
2.1. Система просит Покупателя ввести его данные, включая адрес электронной почты, пароль и еще раз пароль для его подтверждения
2.2. Система проверяет действительность данных Покупателя
3. Система создает новую учетную запись для Покупателя
Постусловия:
Новая учетная запись создана для Покупателя
Альтернативные потоки:
Неверный email адрес
Неверный пароль
Отмена

Пример 6

Альтернативный поток: Создать новую учетную запись Покупателя:Неверный email адрес
ID: 5.1
Краткое описание:
Система сообщает Покупателю, что он ввел недействительный адрес электронной почты
Основные действующие лица:
Покупатель
Второстепенные действующие лица:
Нет
Предусловия:
Покупатель ввел недействительный адрес электронной почты
Альтернативные потоки:
1. АП начинается после шага 2.2 основного потока
2. Система сообщает Покупателю, что он ввел недействительный адрес электронной почты
Постусловия:
Нет

Пример 7

Альтернативный поток: Создать новую учетную запись Покупателя:Отмена
ID: 5.2
Краткое описание:
Покупатель отменяет процесс создания учетной записи
Основные действующие лица:
Покупатель
Второстепенные действующие лица:
Нет
Предусловия:
Нет
Альтернативные потоки:
1. АП начинается в любой момент времени
2. Покупатель отменяет создание учетной записи
Постусловия:
1. Новая учетная запись не была создана для Покупателя

Выявление альтернативных потоков

Изучите каждый шаг основного потока

Выделите возможные альтернативы основному потоку
Ошибки, которые могут возникнуть в основном потоке
Прерывания, которые могут случиться в конкретной точке основного потока
Прерывания, которые могут произойти в любой точке основного потока

Документируйте только самые важные альтернативные потоки

Данную статью оформил участник Сообщества Системных Аналитиков Эдуард Галиаскаров.

Источник

Цикл с предусловием ( while ) и постусловием ( repeat )

Что показывают предусловия и постусловия выполнения сценариев

При составлении программ часто возникает необходимость сократить запись кода при повторении однообразных команд. А когда количество их повторений заранее неизвестно и определяется некоторым условием, то можно использовать структуру — цикл с предусловием или цикл с постусловием.

Цикл — одна из форм управляющих конструкций в языках программирования. Используется для многократного выполнения набора команд.

Цикл с предусловием ( while do )

На рисунке ниже представлена блок-схема цикла с предусловием. Другие названия цикла: цикл-пока, цикл с заданным условием продолжения работы.

Особенность данного вида цикла while : операторы цикла будут повторяться до тех пор, пока условие истинно. Его проверка делается каждый раз перед выполнением операторов цикла. Цикл может ни разу не выполниться, если его условие ложно.

Что показывают предусловия и постусловия выполнения сценариевЦикл while pascal

На рисунке показано два варианта записи данной структуры на языке программирования Паскаль:

Задачи на циклы Паскаль

Задание 1. Даны два положительных числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без
наложений). Не используя операции умножения и деления, найдите длину незанятой части отрезка A.

Решение:
Вариант 1

Вариант 2 (с подсказками)

Задание 3. Найти сумму ряда чисел с точностью (ε=10**-6).

Решение для 1 ряда:

Формула текущего элемента для второго ряда a:=1/(i*(i+1)*(i+2)); для третьего — a:=1/(i*(i+2));

Вычисление суммы ряда с определенной точностью ε означает, что сумма ряда вычисляется до тех пор, пока модуль разности между текущим и предыдущим членом последовательности больше ε. В виде формулы это утверждение можно записать так:|a – aр| > ε, то есть пока это выражение истинно, вычисления продолжаются.

Цикл с постусловием ( repeat )

На рисунке ниже представлена блок-схема цикла с постусловием. Другие названия цикла: цикл-до, цикл с заданным условием окончания работы.

Особенность данного вида цикла ( repeat ) — операторы цикла будут повторяться до тех пор, пока условие ложно. Его проверка делается каждый раз после выполнения операторов цикла. Команды, входящие в тело цикла, всегда выполняются хотя бы один раз.

Что показывают предусловия и постусловия выполнения сценариевЦикл с постусловием Паскаль

Задание 2. Дано целое число N (>0). Найти наименьшее целое положительное число K, квадрат которого превосходит N: K 2 > N. Функцию извлечения квадратного корня не использовать.

Источник

Предусловия и постусловия

Предусловия и постусловия

Читайте также

Предусловия

Предусловия Частичные функции являются неустранимым фактом процесса проектирования ПО, отражающим очевидное наблюдение: не каждая операция применима ко всем объектам. Но они также являются и потенциальным источником ошибок: если функция f из X в Y является частичной, то

Предусловия

Предусловия Предусловия выражают ограничения, выполнение которых необходимо для корректной работы функции. Здесь:[x]. put не может быть вызвана, если стек заполнен;[x]. remove и item не могут быть применены к пустому стеку.Предусловия применяются ко всем вызовам программы, как

Постусловия

Постусловия Постусловие выражает свойство состояния, завершающего выполнение программы. Здесь:[x]. После завершения put стек не может быть пуст; на его вершине находится только что втолкнутый элемент, число его элементов увеличилось на единицу.[x]. После remove стек не может

Предусловия и статус экспорта

Предусловия и статус экспорта Возможно, вы заметили необходимость дополнительного требования, не отраженного в принципе обоснованности предусловия. Для того чтобы клиент мог проверить предусловие, оно не должно использовать закрытые свойства класса, недоступность

Абстрактные предусловия

Абстрактные предусловия Правило ослабления предусловий может оказаться чересчур жестким в случае, когда наследник понижает уровень абстракции, характерный для его предка. К счастью, есть легкий обходной путь, полностью согласующийся с теорией.Типичным примером этого

Источник

Проектирование по контракту: построение надежного ПО

Предусловия и постусловия

Класс стек

Этот пример даст возможность ознакомиться с практическим использованием утверждений. В предыдущей лекции была дана схема параметризованного класса «стек» в форме:

Реализация появится ниже. До рассмотрения проблем реализации важно отметить, что программы характеризуются строгими семантическими свойствами, не зависящими от специфики реализации. Например:

Такие свойства являются частью спецификации АТД, и даже люди далекие от использования любых формальных подходов неявно их понимают. Но в общих подходах к разработке ПО в программных текстах нельзя обнаружить следов спецификации. Предусловие и постусловие программы можно сделать явными элементами ПО. Так и поступим. Введем предусловие и постусловие как специальный вид объявлений с помощью ключевых слов require и ensure соответственно. Для класса «стек» это приведет к следующей записи, где временно оставлены пустые места для реализации:

Предусловия

Предусловия выражают ограничения, выполнение которых необходимо для корректной работы функции. Здесь:

Предусловия применяются ко всем вызовам программы, как внутри класса, так и у клиента. Корректная система никогда не вызовет программу в состоянии, в котором не выполняется ее предусловие.

Постусловия

Постусловие выражает свойство состояния, завершающего выполнение программы. Здесь:

Постусловие в программе выражает гарантию, представленную создателем программы, что выполнение программы завершается и приводит к состоянию с заданными свойствами, в предположении, что программа была запущена в состоянии, удовлетворяющем предусловию.

Постусловие программы put включает предложение:

Педагогическое замечание

Это зависит от того, что вы хотите. Можно рассматривать утверждения просто как комментарии, и тогда их нарушение не обнаруживается в период выполнения. Но их можно использовать для проверки того, что все идет по плану. Тогда во время выполнения окружение автоматически следит за выполнением утверждений и включает исключение при возникновении нарушений, завершая обычно выполнение и выводя сообщение об ошибке. Можно включить в программу обработку исключения, пытающуюся восстановить ситуацию и продолжить выполнение. Эта тема будет детально обсуждаться в следующей лекции. Для указания желаемой политики используются параметры компиляции, которые можно установить независимо для каждого класса.

Все детали мониторинга утверждений периода выполнения появятся чуть позже в этой лекции. Но было бы ошибкой на данном этапе уделять им много внимания. Другие аспекты утверждений сейчас важнее. Мы еще только приступили к рассмотрению этой техники, предназначенной, прежде всего, для создания корректного ПО; нам еще нужно многое открыть в их методологической роли встроенных стражей надежности. Вопрос о том, что случится, если возникнет ошибка, тоже важен, но рассматривать его следует после того, как мы сделаем все, чтобы предотвратить ее появление.

Источник

Проектирование по контракту: построение надежного ПО

Предусловия и постусловия

Класс стек

Этот пример даст возможность ознакомиться с практическим использованием утверждений. В предыдущей лекции была дана схема параметризованного класса «стек» в форме:

Реализация появится ниже. До рассмотрения проблем реализации важно отметить, что программы характеризуются строгими семантическими свойствами, не зависящими от специфики реализации. Например:

Такие свойства являются частью спецификации АТД, и даже люди далекие от использования любых формальных подходов неявно их понимают. Но в общих подходах к разработке ПО в программных текстах нельзя обнаружить следов спецификации. Предусловие и постусловие программы можно сделать явными элементами ПО. Так и поступим. Введем предусловие и постусловие как специальный вид объявлений с помощью ключевых слов require и ensure соответственно. Для класса «стек» это приведет к следующей записи, где временно оставлены пустые места для реализации:

Предусловия

Предусловия выражают ограничения, выполнение которых необходимо для корректной работы функции. Здесь:

Предусловия применяются ко всем вызовам программы, как внутри класса, так и у клиента. Корректная система никогда не вызовет программу в состоянии, в котором не выполняется ее предусловие.

Постусловия

Постусловие выражает свойство состояния, завершающего выполнение программы. Здесь:

Постусловие в программе выражает гарантию, представленную создателем программы, что выполнение программы завершается и приводит к состоянию с заданными свойствами, в предположении, что программа была запущена в состоянии, удовлетворяющем предусловию.

Постусловие программы put включает предложение:

Педагогическое замечание

Это зависит от того, что вы хотите. Можно рассматривать утверждения просто как комментарии, и тогда их нарушение не обнаруживается в период выполнения. Но их можно использовать для проверки того, что все идет по плану. Тогда во время выполнения окружение автоматически следит за выполнением утверждений и включает исключение при возникновении нарушений, завершая обычно выполнение и выводя сообщение об ошибке. Можно включить в программу обработку исключения, пытающуюся восстановить ситуацию и продолжить выполнение. Эта тема будет детально обсуждаться в следующей лекции. Для указания желаемой политики используются параметры компиляции, которые можно установить независимо для каждого класса.

Все детали мониторинга утверждений периода выполнения появятся чуть позже в этой лекции. Но было бы ошибкой на данном этапе уделять им много внимания. Другие аспекты утверждений сейчас важнее. Мы еще только приступили к рассмотрению этой техники, предназначенной, прежде всего, для создания корректного ПО; нам еще нужно многое открыть в их методологической роли встроенных стражей надежности. Вопрос о том, что случится, если возникнет ошибка, тоже важен, но рассматривать его следует после того, как мы сделаем все, чтобы предотвратить ее появление.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *