Без заголовка
Кодирование в декларативке и имеперативке разное, потому как компутер в случае декларативки исполняет код по своему усмотрению, а не так как программер сказал.
Т.е. надо понимать как он будет исполнять и уметь на это влиять - императивщик этим не владеет и вообще будет ругаться, какой глупый и мерзкий компьютер.
Требования я лично считают уже частью декларативки. По крайней мере, формальные требования - это декларативка по факту: т.е. формулируем цель, не уточняя средства. Это ведь очень важно в требованиях - не ограничивать варианты реализации, а точно сформулировать форму конечного результата.
Тестирование в случае моделирование дополненно дополнительно проблематикой - нужно уметь определять что модель слишком строгая и запрещает нужные варианты поведения. Это особое искусство - поиск причин почему модель слишком жесткая. Впервые я думаю с этим столкнулись при работе с оптимизационными задачами, симплекс-метод и все такое. Там есть специальный инструментарий для выяснения почему модель слишком жесткая.
Вобщем, декларативка имеет свою специфику и она совсем-совсем не привычна императивщикам.
Ну общее безусловно тоже есть.