Средства для создания прототипов подбираются в зависимости то того, зачем вы его делаете.
Как по мне, так их можно делать вот зачем:
1. Уменьшить expectation gap. Использование прототипа с высокой детализацией для проб на реальных пользователях, проведения разных юзабилити тестов.
Самый тугой и классный вид прототипов одновременно. Очень их люблю.
Я не уверен что ко всем пунктам ниже вообще можно использовать термин "прототип", но тем не менее.
2. Ради проверки целостности экранов и того, как пользовательские сценарии мепятся по этим самым экранам. Можно мепить UC и прочими сущностями. Всё зависит от того, что вы хотите проверить.
3. Прототипы ради иллюстрации разработчикам что д.б. на экранах.
4. Ради того, чтобы показать связи между экранами тоже можно использовать средства прототипирования, но можно и диаграмму диалогов, так называемую. Об этой диаграмме есть у Вигеса
http://www.youtube.com/watch?v=KUuyxdFb3Pw&list=UULy9Y3p9SZB4us8UJ8Rh8BQ Для каждого пункта используется свой подход и свои инструменты.
Есть специфические задачи по GUI, которые скорее относятся к документированию:
1 если надо показать куда в шаблоне какие данные выводятся грубо говоря это трассировка от полей классов к шаблон вьюхи.
2. генерация документов по прототипу
3. обозначение логики сложных контролов (имхо это самый противоричивый и опасный пункт)
Из инструментов я бы рекомендовал axure. В ней можно и верхний уровень накидать быстро и сделать достаточно детальный рабочий прототип. У неё есть свои ограничения, но для большинства мне известных кейсов она подходит и проста в освоении. Как по мне - инструмент дешевый для тех, кто полноценно занимается интерфейсами, особенно со всеми возможностями новой 7й версии.