24
EARS: The E asy A pproach to R equirements S yntax Павлов Андрей T-Systems CIS, Санкт-Петербург

EARS: The Easy Approach to Requirements Syntax

  • Upload
    sqalab

  • View
    1.185

  • Download
    3

Embed Size (px)

Citation preview

Page 1: EARS: The Easy Approach to Requirements Syntax

EARS: The Easy Approach to Requirements

Syntax

Павлов АндрейT-Systems CIS, Санкт-Петербург

Page 2: EARS: The Easy Approach to Requirements Syntax

About me

• Ex-Developer

• Выпускник СПБ НИУ ИТМО

• Senior QA @ T-Systems CIS

linkedin.com/in/qapavlov

[email protected]

Page 3: EARS: The Easy Approach to Requirements Syntax

Как мы дошли до EARS

• Писали на естественном языке

• Новый проект

• Почему бы не попробовать?

• А давайте теперь то же самое для большого проекта?

EARS: Easy Approach to Requirements Syntax

Page 4: EARS: The Easy Approach to Requirements Syntax

Введение

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

Page 5: EARS: The Easy Approach to Requirements Syntax

Что такое требования?Требование - описание одного из следующих пунктов:

1. Что система должна делать2. Известное ограничение на проектные ресурсы3. Определение, как хорошо система должна делать то, что она делает

Первое определение относится к Функциональным ТребованиямВторое и третье определения относятся к Нефункциональным Требованиям

Больший фокус в докладе приходится на улучшении требований, определенных пунктами 1 и 2.

Page 6: EARS: The Easy Approach to Requirements Syntax

Проблемы с требованиями1. Программное обеспечение должно поддерживать датчик уровня воды.• Что значит слово “поддерживать”?

2. Программное обеспечение словаря должно вывести на экран приблизительно пять альтернатив для требуемого слова.• “Приблизительно пять” – это сколько? Три? Четыре? Шесть? Десять? Больше?• При каких условиях они должны быть выведены на экран?

3. Программное обеспечение должно мигнуть LED светодиодом• Программное обеспечение мигает LED в любом случае? Или есть триггер, который инициирует это мигание?

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

Page 7: EARS: The Easy Approach to Requirements Syntax

Преодоление проблем с требованиями

Основными вариантами решения озвученных выше проблем являются:

• Обучение• Использование непротиворечивого синтаксиса для описания требований• Проверка требования по критериям “совершенства”• Использование ограниченного естественного языка (например, Planguage)• Создание требований с использованием EARS

Page 8: EARS: The Easy Approach to Requirements Syntax

Использование непротиворечивого синтаксиса для описания требований

[Trigger] [Precondition] Actor Action [Object]

Пример:Когда Заказ доставлен, и Статус не “Prepaid”, система должна создать Инвойс.• Триггер: Когда Заказ доставлен• Предварительное условие: Статус не “Prepaid”• Кто производит действие: система• Действие: создать• Объект: Инвойс

Page 9: EARS: The Easy Approach to Requirements Syntax

Planguage: ограниченный естественный язык

• Он был разработан Томом Джилбом в 1988 и подробно рассмотрен в его книге Competitive EngineeringНазван по комбинации слов Planning and Language• Представляет собой неофициальный, но структурированный, keyword-driven язык планирования• Может использоваться для создания всех типов требований

Page 10: EARS: The Easy Approach to Requirements Syntax

Ключевые слова Planguage для описания любого требования

Name – короткое описательное имя

Requirement - текст, который определяет требование

Rationale – описание, оправдывающее требование

Priority - приоритет требования относительно других

Priority Reason - причина для присвоенного приоритетного уровня

Status - текущее состояние требования

Contract – с кем можно связаться с вопросами о требовании

Source – источник требования

Page 11: EARS: The Easy Approach to Requirements Syntax

Пример PlanguageName: Create_Invoice

Requirement: Когда Заказ доставлен, и Статус не “Prepaid”, система должна создать Инвойс.

Rationale: Автоматизация задачи уменьшает количество ошибок, снижая трудозатраты.

Priority: высоко.

Priority Reason: Если требование не реализовано, будет необходимо вручную реализовать данный процесс, что отразится на ROI и потребует $400 тысяч в год. (#ссылка на документ финансового анализа)

Status: CommittedContract: Василий ВасинSource: Совет директоровCreated by: Андрей ПавловVersion: 1.1, Modified Date: 12-01-2016

Page 12: EARS: The Easy Approach to Requirements Syntax

Создание требований с использованием EARS

EARS: Easy Approach to Requirements Syntax

Эффективный метод выражения требований

Дифференцируется между пятью типами (или образцами) требований:

• Ubiquitous (повсеместный, всегда происходящий)• Event-driven (управляемый событиями)• Unwanted behaviors (нежелательное поведение)• State-driven (управляемый состоянием)• Optional features (дополнительные функции)

Page 13: EARS: The Easy Approach to Requirements Syntax

EARS background• Первое использование было произведено группой разработчиков Роллс-ройса, работающей над системами управления авиационного двигателя

• Программное обеспечение было safety critical, содержавшее в себе тысячи компонентов и включало до двадцати различных исполнителей

• Роллс-ройс идентифицировал 8 основных проблем с существующими требованиями естественного языка:

НеоднозначностьДублированиеМногословностьНеопределенностьСложностьВозможность упущения чего-то (Omission)Несоответствие реализацииНетестируемость

• Перезапись требований, используя EARS “… демонстрировало значительное сокращение всех восьми проблемных типов …” (из EARS Alistair Mavin et al, 17th IEEE RE 09, page 321)

Page 14: EARS: The Easy Approach to Requirements Syntax

Идентификация повсеместных (Ubiquitous) требований

Повсеместные требования:

• Имеют статус фундаментального свойства системы• Не требует триггера для выполнения• Универсальны (существуют в любом случае)

Требования, которые не являются повсеместными, происходят не в любом случае. Они:

• Требуют события или триггера, чтобы выполняться, или• Обозначают свойство системы, или• Обозначают дополнительную функцию

Большинство требований не повсеместно!

Page 15: EARS: The Easy Approach to Requirements Syntax

Практика выявления повсеместных требований

Инсталлятор приложения должен поддерживать немецкий язык Да! Это фундаментальное свойство системы.

Приложение должно показывать количество участников звонкаНет! Должно быть какое-то событие, которое определяет, когда количество должно быть показано.

Приложение должно отправлять отчет об ошибкеНет! Отчет об ошибке должен быть отправлен только если мы с этой ошибкой столкнулись.

Page 16: EARS: The Easy Approach to Requirements Syntax

Практика выявления повсеместных требований

Приложение должно распространяться на CD-ROM и DVD дискахДа! Это фундаментальное свойство системы.

Программное обеспечение должно предотвращать неавторизированный доступ к конфиденциальным данным.Да! Это снова фундаментальное свойство системы.

Приложение должно сигнализировать о низком заряде батареи Нет! Нужно указание состояния, когда предупреждение должно быть показано.

Page 17: EARS: The Easy Approach to Requirements Syntax

Паттерны EARS

Pattern Name Pattern

Ubiquitous The <system name> shall <system response>

Event-Driven WHEN <trigger> <optional precondition> the <system name> shall <system response>

Unwanted Behavior IF <unwanted condition or event>, THEN the <system name> shall <system response>

State-Driven WHILE <system state>, the <system name> shall <system response>

Optional Feature WHERE <feature is included>, the <system name> shall <system response>

Complex (combinations of the above patterns)

Page 18: EARS: The Easy Approach to Requirements Syntax

Использование EARS для переписывания существующих требований

Оригинальное требование:Программное обеспечение должно быть доступным на немецком языке.

Переписанное c использованием EARS:Программное обеспечение должно быть доступным на немецком языке.

Нет изменений. Почему?

Какой использован паттерн EARS?

Повсеместный(Ubiquitous)

Page 19: EARS: The Easy Approach to Requirements Syntax

Использование EARS для переписывания существующих требований

Оригинальное требование:Программное обеспечение должно показать количество участников

Переписанное c использованием EARS:Когда пользователь выберет счетчик участников из меню, программное обеспечение должно показать количество участников в UI.

Какой использован паттерн EARS?

Управляемый событиями (Event Driven)

Page 20: EARS: The Easy Approach to Requirements Syntax

Использование EARS для переписывания существующих требований

Оригинальное требование:Программное обеспечение должно показывать свойства опции.

Переписанное c использованием EARS:В то время когда мышь наведена на опцию, программное обеспечение должно показать свойство этой опции.

Какой использован паттерн EARS?

Управляемый событиями (Event Driven)

Page 21: EARS: The Easy Approach to Requirements Syntax

Использование EARS для переписывания существующих требований

Оригинальное требование:Программное обеспечение должно загрузить бонусные приложения бесплатно

Переписанное c использованием EARS:Где бонусные приложения доступны, программное обеспечение должно позволить пользователю загружать бонусные приложения бесплатно в течение трехдневного триального периода

Какой использован паттерн EARS?

Дополнительные функции (Optional feature)

Page 22: EARS: The Easy Approach to Requirements Syntax

Что дало нам использование EARS1. EARS помог нам лучше писать требования за счет улучшения

структурирования, с помощью повышения внимания на использовании ключевых слов (When, If-Then, While, Where и их комбинации)

2. EARS помог нам определить, какие требования действительно повсеместны. Некоторые требования, записанные, будто они повсеместны, на самом деле таковыми не являлись.

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

Page 23: EARS: The Easy Approach to Requirements Syntax

Итог

EARS - это простой и мощный метод получения функциональных требований, который вы легко можете применить в своем проекте, вне зависимости, будете ли вы писать новые требования или переписывать существующие, используя шаблоны EARS.

До использования EARS84

С использованием EARS16

Количество вопросов в Confluence

До использования EARS С использованием EARS0

102030405060708090

Количество багов, закрытых как By Design