Здравствуйте, Pavel Dvorkin, Вы писали:
F>>Функциональные требования описывают, что должна делать система.
PD>+1
Еще бы, это же бородатый баян. Карл Вигерс, "Разработка требований к ПО". Вам по букварю отвечают, а вы с букварем спорите.
>>Нефункциональные — как она должна это делать. То есть ограничения, накладываемые при выполнении данных функций.
PD>Эти ограничения тоже функциональны. Например, требование решать некую NP-полную задачу — это функциональное ? А если это требуют делать при N=1000, это уже нефункционально ? Сначала напишешь алгоритм полного перебора, а потом скажешь — ой, извините, ответ вы получите в 50 веке
Требование решить NP полную задачу — функциональное, N = 1000 это допустимые входные данные. И если мне не сказали, что допустимые входные данные такие, то я волен решать ее как мне захочется.
PD>Еще раз. Быстродействие входит в число функциональных требований. При недостаточно высоком — решение просто не рассматривается.
Не хотите статью на rsdn написать? Это новое слово в разработке требований.
PD>Вот представь себе ПО управления самолетом. Если оно будет реагировать на изменение обстановки очень медленно — его просто выкинут сразу. В функциональные требования такого ПО входит — реакция не медленнее, чем за такое-то время. Более того. Если окажется, что удовлетворить другим требованиям за это время не удастся — я вполне могу допустить, что часть других требований будет снята или ослаблена. А время — нет, потому что если реакция будет медленнее, чем ..., то управлять уже будет нечем.
Производительность входит в
нефункциональные требования.
PD>У меня, конечно, не самолетное ПО, но идея та же самая. Риски там, правда, нулевые, ничего не грохнется, но недостаточно быстрые решения не рассматриваются. А для достаточно быстрого решения всегда макисма такая — сделайте еще быстрее, если можете.
И что,
всегда требования производительности более важны, чем функции системы? Ну, типа, если есть хоть малейший шанс увеличить производительность, то мы ее увеличиваем, а не добавляем новые фичи?