Не формальная, а реальная, где подробно описано как устанавливать изменения, взаимодействовать с пользователем и т.д.?
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший