29
. . . . . . Классификация . . . Спецификация . . . . Инженерия . . . . Заключение Инженерия требований к программному обеспечению Алексей Островский Физико-технический учебно-научный центр НАН Украины 24 октября 2014 г. 1 / 21

Инженерия требований к программному обеспечению

  • Upload
    others

  • View
    46

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Инженерия требований к программному обеспечению

. . . . . .Классификация

. . .Спецификация

. . . .Инженерия

. . . .Заключение

Инженерия требований к программному обеспечению

Алексей Островский

Физико-технический учебно-научный центр НАН Украины

24 октября 2014 г.

1 / 21

Page 2: Инженерия требований к программному обеспечению

. . . . . .Классификация

. . .Спецификация

. . . .Инженерия

. . . .Заключение

Требования к ПО

ОпределениеТребования к ПО это:

▶ свойства системы, необходимые для выполнения предложенных заказчиком

функций;

▶ ограничения на функционирование системы.

Инженерия требований:

..определение(elicitation)

. анализ(analysis)

. спецификация(specification)

. проверка(validation)

. управление(management)

Программная инженерия. Лекция №6 Инженерия требований. 2 / 21

Page 3: Инженерия требований к программному обеспечению

. . . . . .Классификация

. . .Спецификация

. . . .Инженерия

. . . .Заключение

Классификация требований

▶ Пользовательские требования (англ. user requirements) описание

на естественном языке ожидаемой функциональности системы и присущих ей

ограничений.

Источник: предлагаются заказчиком ПО.

Инструменты: естественный язык + диаграммы.

▶ Системные требования (англ. system requirements) детальное описание

функциональности системы и ограничений.

Источник: результат совместной работы заказчика и разработчика.

Инструменты: формальные языки, шаблоны, спецификации.

Программная инженерия. Лекция №6 Инженерия требований. 3 / 21

Page 4: Инженерия требований к программному обеспечению

. . . . . .Классификация

. . .Спецификация

. . . .Инженерия

. . . .Заключение

Классификация требований пример

Пример. Веб-сервис для вычисления чисел Фибоначчи

Fi = Fi−1 + Fi−2.

Пользовательское требование: веб-сервис должен отображать ряд чисел Фибоначчи

фрагментами по 100 чисел с помощью HTML-страниц.

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

▶ Веб-сервис должен отображать числа Фибоначчи i, . . . , i+ 99 при доступе

к веб-сервису с помощью URL вида http://fib.example.com/fib/i.

▶ Каждая сгенерированная страница должна содержать навигацию для доступа

к следующим ста и (если применимо) к предыдущим ста числам Фибоначчи.

▶ При попытке доступа к сервису с помощью URL http://fib.example.com/fib/str,где str не является натуральным числом, должна выдаваться страница

оговоренного вида с HTTP-кодом 400.

Программная инженерия. Лекция №6 Инженерия требований. 4 / 21

Page 5: Инженерия требований к программному обеспечению

. . . . . .Классификация

. . .Спецификация

. . . .Инженерия

. . . .Заключение

Функциональные и нефункциональные требования

Функциональные требования это:

▶ определение предоставляемых программным продуктом услуг;

▶ описание реакции на различные входные данные;

▶ описание поведения системы в различных ситуациях;

▶ (необязательно) спецификация запретов.

Нефункциональные требования ограничения на функции, предоставляемые ПП:

▶ временные ограничения;

▶ ограничения на процесс разработки;

▶ ограничения, связанные со стандартами разработки ПО.

Программная инженерия. Лекция №6 Инженерия требований. 5 / 21

Page 6: Инженерия требований к программному обеспечению

. . . . . .Классификация

. . .Спецификация

. . . .Инженерия

. . . .Заключение

Связь между требованиями

..Нефункциональное требование. Функциональное требование.

Защита конфиденциальныхданных

.

Система авторизации

.

Ограничение назанимаемую память

.

Периодическое удалениелишних данных

.

Отказоустойчивость

.

Система резервныхкопий данных

.

уточнение

.

уточнение

.

уточнение

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

Программная инженерия. Лекция №6 Инженерия требований. 6 / 21

Page 7: Инженерия требований к программному обеспечению

. . . . . .Классификация

. . .Спецификация

. . . .Инженерия

. . . .Заключение

Нефункциональные требования

..Нефункциональные требования.

Организационные требования(organizational req.)

.

среда выполнения(environmental req.)

.

операционные(operational req.)

.

ограниченияна разработку

(development req.)

.

Требования на продукт(product requirements)

.

интерфейс (usability)

.

продуктивность(efficiency)

.

надежность(dependability)

.

безопасность (security)

.

Внешние требования(external req.)

.

регламентные(regulatory req.)

.

юридические(legislative req.)

.

этические(ethical req.)

Программная инженерия. Лекция №6 Инженерия требований. 7 / 21

Page 8: Инженерия требований к программному обеспечению

. . . . . .Классификация

. . .Спецификация

. . . .Инженерия

. . . .Заключение

Нефункциональные требования

..Нефункциональные требования.

Организационные требования(organizational req.)

.

среда выполнения(environmental req.)

.

операционные(operational req.)

.

ограниченияна разработку

(development req.)

.

Требования на продукт(product requirements)

.

интерфейс (usability)

.

продуктивность(efficiency)

.

надежность(dependability)

.

безопасность (security)

.

Внешние требования(external req.)

.

регламентные(regulatory req.)

.

юридические(legislative req.)

.

этические(ethical req.)

.

Определяют, каким образомбудет использоваться система(напр., порядок ее запуска).

Программная инженерия. Лекция №6 Инженерия требований. 7 / 21

Page 9: Инженерия требований к программному обеспечению

. . . . . .Классификация

. . .Спецификация

. . . .Инженерия

. . . .Заключение

Нефункциональные требования

..Нефункциональные требования.

Организационные требования(organizational req.)

.

среда выполнения(environmental req.)

.

операционные(operational req.)

.

ограниченияна разработку

(development req.)

.

Требования на продукт(product requirements)

.

интерфейс (usability)

.

продуктивность(efficiency)

.

надежность(dependability)

.

безопасность (security)

.

Внешние требования(external req.)

.

регламентные(regulatory req.)

.

юридические(legislative req.)

.

этические(ethical req.)

.

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

Программная инженерия. Лекция №6 Инженерия требований. 7 / 21

Page 10: Инженерия требований к программному обеспечению

. . . . . .Классификация

. . .Спецификация

. . . .Инженерия

. . . .Заключение

Нефункциональные требования

..Нефункциональные требования.

Организационные требования(organizational req.)

.

среда выполнения(environmental req.)

.

операционные(operational req.)

.

ограниченияна разработку

(development req.)

.

Требования на продукт(product requirements)

.

интерфейс (usability)

.

продуктивность(efficiency)

.

надежность(dependability)

.

безопасность (security)

.

Внешние требования(external req.)

.

регламентные(regulatory req.)

.

юридические(legislative req.)

.

этические(ethical req.)

.

Напр., требования центрального банкадля банковских систем.

Программная инженерия. Лекция №6 Инженерия требований. 7 / 21

Page 11: Инженерия требований к программному обеспечению

. . . . . .Классификация

. . .Спецификация

. . . .Инженерия

. . . .Заключение

Нефункциональные требования

..Нефункциональные требования.

Организационные требования(organizational req.)

.

среда выполнения(environmental req.)

.

операционные(operational req.)

.

ограниченияна разработку

(development req.)

.

Требования на продукт(product requirements)

.

интерфейс (usability)

.

продуктивность(efficiency)

.

надежность(dependability)

.

безопасность (security)

.

Внешние требования(external req.)

.

регламентные(regulatory req.)

.

юридические(legislative req.)

.

этические(ethical req.)

.

Напр., требования безопасностив соответствии с закономпро защиту персональных данных.

Программная инженерия. Лекция №6 Инженерия требований. 7 / 21

Page 12: Инженерия требований к программному обеспечению

. . . . . .Классификация

. . .Спецификация

. . . .Инженерия

. . . .Заключение

(Не)функциональные требования пример

Пример. Веб-сервис для вычисления чисел Фибоначчи.

Функциональные требования:

▶ требования к отображению информации (см. выше);

▶ интерфейс администратора;

▶ учет количества посетителей.

Нефункциональные требования:

▶ (usability) использование адаптивного дизайна для ПК, планшетов и смартфонов;

▶ (производительность) генерация любой страницы за ⩽ 0,5 с;

▶ (среда выполнения) Linux, MySQL, Apache HTTP Server;

▶ (разработка) использование Python/Django.

Программная инженерия. Лекция №6 Инженерия требований. 8 / 21

Page 13: Инженерия требований к программному обеспечению

. . . . . .Классификация

. . .Спецификация

. . . .Инженерия

. . . .Заключение

Спецификация требований

ОпределениеСпецификация требований запись требований в виде, обеспечивающем их

ясность, однозначность, простоту понимания, полноту и непротиворечивость.

Роль Использование требований

потребители спецификация и уточнение требований

менеджеры оценка затрат на систему; планирование процесса

разработки

разработчики детализация характеристик системы

тестеры разработка тестов для проверки системы

отдел сопровождения понимание системы и взаимоотношений

между ее частями

Программная инженерия. Лекция №6 Инженерия требований. 9 / 21

Page 14: Инженерия требований к программному обеспечению

. . . . . .Классификация

. . .Спецификация

. . . .Инженерия

. . . .Заключение

Документ спецификации

1. Предварительные замечания (версия документа, основания для ее создания).

2. Вступление (общее назначение системы, ее взаимодействие с другим ПО).

3. Словарь технических терминов.

4. Описание пользовательских требований (+ нефункциональные системные

требования).

5. Архитектура системы.

6. Описание системных требований.

7. Системные модели (взаимодействие между компонентами, со средой выполнения

и т. п.).

8. Эволюция системы (ожидаемые изменения системы).

9. Приложения.

Программная инженерия. Лекция №6 Инженерия требований. 10 / 21

Page 15: Инженерия требований к программному обеспечению

. . . . . .Классификация

. . .Спецификация

. . . .Инженерия

. . . .Заключение

Запись требований

Способы записи:

▶ естественный язык

(подходит для записи пользовательских требований);

▶ структурированный язык (таблицы или шаблоны)

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

▶ язык описания архитектуры

(используется редко, в основном для спецификации интерфейсов);

▶ графическая нотация (напр., UML-диаграммы)

(подходит для детализации системных требований);

▶ математическая спецификация (напр., конечные автоматы)

(используется для критических требований в области безопасности).

Программная инженерия. Лекция №6 Инженерия требований. 11 / 21

Page 16: Инженерия требований к программному обеспечению

. . . . . .Классификация

. . .Спецификация

. . . .Инженерия

. . . .Заключение

Запись требований пример

Числа Фибоначчи математический модуль

Функция: вычисление ряда чисел Фибоначчи.

Описание: вычисляет значение ста последовательных чисел

Фибоначчи.

Вход: i индекс первого числа Фибоначчи, которое нужно

вычислить.

Источник данных: HTTP-запрос пользователя.

Выход: значения чисел Фибоначчи Fi, Fi+1 . . . , Fi+99.

Назначение данных: цикл обработки HTTP-запроса.

Действие: Числа Fi и Fi+1 вычисляются по формуле быстрого

возведения в степень. Оставшиеся числа вычисляются

согласно определению чисел Фибоначчи.

Требования: i должно быть целым неотрицательным числом.

Побочные эффекты: нет.

Программная инженерия. Лекция №6 Инженерия требований. 12 / 21

Page 17: Инженерия требований к программному обеспечению

. . . . . .Классификация

. . .Спецификация

. . . .Инженерия

. . . .Заключение

Процесс инженерии требований

..Начало

.

Спецификациябизнес-требований

.

Исследованиевыполнимости

.

Определениепольз. требований

.

Спецификацияпольз. требований

.

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

.

Определениесистемных требований

.

Спецификацияи моделирование

системных требований

.

Рецензирование

.

Документ спецификациисистемных требований

.

Определение

.

Спецификация

.

Валидация

Программная инженерия. Лекция №6 Инженерия требований. 13 / 21

Page 18: Инженерия требований к программному обеспечению

. . . . . .Классификация

. . .Спецификация

. . . .Инженерия

. . . .Заключение

Определение и анализ требований

..

Сбор требований

. Классификацияи организация

.

Выделение приоритетови согласование

.Спецификация

Процессы определения и анализа требований

Программная инженерия. Лекция №6 Инженерия требований. 14 / 21

Page 19: Инженерия требований к программному обеспечению

. . . . . .Классификация

. . .Спецификация

. . . .Инженерия

. . . .Заключение

Определение и анализ требований

..

Сбор требований

. Классификацияи организация

.

Выделение приоритетови согласование

.Спецификация .

Взаимодействие с заинтересованными сторонами(заказчиками, конечными пользователями,обслуживающим персоналом, …) для определенияих требований.Методы: интервью, сценарии, прецеденты,варианты применения (use case).

Процессы определения и анализа требований

Программная инженерия. Лекция №6 Инженерия требований. 14 / 21

Page 20: Инженерия требований к программному обеспечению

. . . . . .Классификация

. . .Спецификация

. . . .Инженерия

. . . .Заключение

Определение и анализ требований

..

Сбор требований

. Классификацияи организация

.

Выделение приоритетови согласование

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

Процессы определения и анализа требований

Программная инженерия. Лекция №6 Инженерия требований. 14 / 21

Page 21: Инженерия требований к программному обеспечению

. . . . . .Классификация

. . .Спецификация

. . . .Инженерия

. . . .Заключение

Определение и анализ требований

..

Сбор требований

. Классификацияи организация

.

Выделение приоритетови согласование

.Спецификация .

Согласование требований с заинтересованнымисторонами и нахождение компромиссов.

Процессы определения и анализа требований

Программная инженерия. Лекция №6 Инженерия требований. 14 / 21

Page 22: Инженерия требований к программному обеспечению

. . . . . .Классификация

. . .Спецификация

. . . .Инженерия

. . . .Заключение

Определение и анализ требований

..

Сбор требований

. Классификацияи организация

.

Выделение приоритетови согласование

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

Процессы определения и анализа требований

Программная инженерия. Лекция №6 Инженерия требований. 14 / 21

Page 23: Инженерия требований к программному обеспечению

. . . . . .Классификация

. . .Спецификация

. . . .Инженерия

. . . .Заключение

Валидация требований

Проверки:

▶ корректность (согласованы ли требования со всеми заинтересованными

сторонами?);

▶ непротиворечивость (есть ли конфликты между требованиями?);

▶ полнота (описывают ли требования все функции системы?);

▶ реалистичность (возможно ли реализовать требования?);

▶ верифицируемость (существуют ли тесты, проверяющие выполнение

требований?).

Методы валидации:

▶ рецензирование;

▶ прототипирование;

▶ создание тестов.

Программная инженерия. Лекция №6 Инженерия требований. 15 / 21

Page 24: Инженерия требований к программному обеспечению

. . . . . .Классификация

. . .Спецификация

. . . .Инженерия

. . . .Заключение

Управление требованиями

ОпределениеУправление требованиями процесс выявления и контроля изменений в системных

требованиях.

Причины изменений:

▶ изменение среды выполнения (новое оборудование, новые приоритеты,

изменение регламентирующих документов или законодательства, …);

▶ различие между пониманием системы заказчиком и конечными пользователями;

▶ изменение баланса между различными группами пользователей.

Программная инженерия. Лекция №6 Инженерия требований. 16 / 21

Page 25: Инженерия требований к программному обеспечению

. . . . . .Классификация

. . .Спецификация

. . . .Инженерия

. . . .Заключение

Процесс изменения требований

Традиционная модель ЖЦ:

1. Анализ проблемы и спецификация изменения. Анализ пересылается заказчику

изменения для внесения дополнений или отказа от изменения.

2. Анализ изменения и оценка затрат.

3. Имплементация изменений в общую спецификацию требований, а также

в архитектуру и имплементацию системы.

Agile development:

1. Оценка приоритета изменения.

2. Модификация плана следующего цикла разработки.

Программная инженерия. Лекция №6 Инженерия требований. 17 / 21

Page 26: Инженерия требований к программному обеспечению

. . . . . .Классификация

. . .Спецификация

. . . .Инженерия

. . . .Заключение

Выводы

1. Требования к ПО определяют его возможности (функциональные тр.)

и ограничения на процесс разработки (нефункциональные тр.).

2. Процесс инженерии требований включает в себя анализ выполнимости,

выработку и анализ требований, их спецификацию, проверку, а также управление

требованиями.

3. Существует несколько инструментов спецификации требований, в частности

формальные языки и диаграммы UML.

Программная инженерия. Лекция №6 Инженерия требований. 18 / 21

Page 27: Инженерия требований к программному обеспечению

. . . . . .Классификация

. . .Спецификация

. . . .Инженерия

. . . .Заключение

Материалы

Лавріщева К.М.

Програмна інженерія (підручник).

К., 2008. 319 с.

Sommerville, Ian

Software Engineering.

Pearson, 2011. 790 p.

Программная инженерия. Лекция №6 Инженерия требований. 19 / 21

Page 28: Инженерия требований к программному обеспечению

. . . . . .Классификация

. . .Спецификация

. . . .Инженерия

. . . .Заключение

Спасибо за внимание!

Программная инженерия. Лекция №6 Инженерия требований. 20 / 21

Page 29: Инженерия требований к программному обеспечению

. . . . . .Классификация

. . .Спецификация

. . . .Инженерия

. . . .Заключение

Приложение. Вычисление чисел Фибоначчи

Fn = Fn−1 + Fn−2, F0 = 0, F1 = 1.

Fn, n ⩾ 1 можно вычислить за время O(logn) с помощью формулы(Fn

Fn−1

)=

(1 1

1 0

)n−1

·(

1

0

),

где возведение матрицы в степень выполняется с помощью быстрого алгоритма.

Для вычислений необходима поддержка целых чисел с произвольной разрядностью.

Другой способ использование формулы

Fn =

[1√5

(1 +

√5

2

)n]

(необходима поддержка вещественных чисел с произвольной разрядностью).

Программная инженерия. Лекция №6 Инженерия требований. 21 / 21