Лекция №6Инженерия требований
В шестой лекции по программной инженерии идет речь о разработке требований к программам. В классических моделях жизненного цикла ПО инженерия требований — самый первый этап разработки; в более новых моделях (RAD, agile) требования изменяются «на ходу».
Выделяют два основных вида требований:
- пользовательские (user requirements) — взгляд на программный продукт заказчика;
- системные (system requirements) — требования с точки зрения разработчика.
Помимо этого, требования бывают функциональными (что должна делать система?) и нефункциональными (какие есть ограничения на систему?). Примеры нефункциональных требований — производительность и безопасность. Нефункциональные требования чаще всего можно уточнить до функциональных. Например, требование защиты данных пользователей означает, что нужна какая-то система авторизации.
Для выработки требований используют как формальные методы (например, диаграммы UML или даже математические модели), так и неформальные (запись на естественном языке). В классических моделях разработки системные требования собираются в один документ. Согласно гибкой методологии, создание и поддержка такой спецификации зачастую наносит вред разработке — внимание должно уделяться прежде всего созданию рабочих черновых версий продукта, ведь без них невозможно уточнение требований. С другой стороны, пренебрежение инженерией требований может привести к серьезным проблемам и авральной переделке программной системы.