Представьте, что Вы разработчик, Вам дают ТЗ, Вы должны с ним ознакомиться и реализовать то, что там написано. Представим ситуацию, Вы прочли задание и говорите: "Мне всё ясно". "Отлично", говорит заказчик, и Вы уходите работать. Когда всё готово, приходит заказчик, смотрит, что получилось, "щупает" его в разных местах - и, о, он высказывает кучу замечаний (он хотел по-другому, он подразумевал другое) ! Неужели получилась плохая работа? Или вот другой случай. Вы уходите разрабатывать систему и через некоторое время выясняется, что в ТЗ одно требование противоречит другому или в ТЗ мелькают слова "интуитивно понятные", но лишь обманчиво понятные, а на деле - совершенно непонятные! И приходится останавливать работу или, что еще хуже, приходить к мысли, что сделанное ранее надо "выкидывать в мусор", оно не соответствует реальному пониманию технического задания.
Не знаю, как Вам, а вообще-то так вести разработку неправильно. Затратно и неприятно. Было бы здорово, если основную массу дефектов в ТЗ кто-то обнаружил и исправил заранее (на самом деле, не исправил, а обнаружил, задал вопрос заказчику и на основе него исправил ТЗ, только вот, что спрашивать?). В практическом задании по RAISE Вам предлагается (в частности) выполнить функции такого "Робин Гуда". Вы должны сделать всё, чтобы разработка по точно сформулированному Вами заданию прошла без возражений к логике работы системы. Т.е. точно сформулировать требования, постановку задачи, увидеть все скрытые ранее логические зависимости понятий (эти зависимости должны быть отслежены в реализации). Требования удобно писать в виде алгебраической спецификации, потому что Вы просто синтаксически не сможете выразить какие-либо реализационные домыслы, не относящиеся к логике работы системы.
Итак, надо подумать и выразить в спецификации следующие моменты:
- понятия, с которыми работает программа, обладают "особыми значениями" (или даже классами "особых значений"); это такие значения, на которых операции с этими понятиями должны работать принципиально по-разному; увидели такие значения - оформите их должным образом в спецификации;
- Ваша программная система должна заинтересовывать наибольший круг пользователей; поэтому она должна удовлетворять потребностям как можно большего числа пользователей, использующих ее в разных условиях, но так, как описано в задании.